summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge branch 'feature/altretries'David Kalnischkies2017-12-1320-472/+939
|\ | | | | | | | | | | | | Generalizing the behaviour of retrying a download on the same server (if enabled via options) as well as retrying a download via a different alternative server from the acquire item responsible for deb files to the handling of items in general so that all are effected.
| * implement fallback to alternative URIs for all itemsDavid Kalnischkies2017-12-137-160/+230
| | | | | | | | | | | | | | | | For deb files we always supported falling back from one server to the other if one failed to download the deb, but that was hardwired in the handling of this specific item. Moving this alongside the retry infrastructure we can implement it for all items and allow methods to use this as well by providing additional URIs in a redirect.
| * give the methods more metadata about the files to acquireDavid Kalnischkies2017-12-133-12/+49
| | | | | | | | | | | | | | | | We have quite a bit of metadata available for the files we acquire, but the methods weren't told about it and got just the URI. That is indeed fine for most, but to avoid methods trying to parse the metadata out of the provided URIs (and fail horribly in edgecases) we can just as well be nice and tell them stuff directly.
| * implement Acquire::Retries support for all itemsDavid Kalnischkies2017-12-136-54/+113
| | | | | | | | | | | | | | Moving the Retry-implementation from individual items to the worker implementation not only gives every file retry capability instead of just a selected few but also avoids needing to implement it in each item (incorrectly).
| * report transient errors as transient errorsDavid Kalnischkies2017-12-139-232/+433
| | | | | | | | | | | | | | | | | | | | | | | | The Fail method for acquire methods has a boolean parameter indicating the transient-nature of a reported error. The problem with this is that Fail is called very late at a point where it is no longer easily identifiable if an error is indeed transient or not, so some calls were and some weren't and the acquire system would later mostly ignore the transient flag and guess by using the FailReason instead. Introducing a tri-state enum we can pass the information about fatal or transient errors through the callstack to generate the correct fails.
| * mark some 500 HTTP codes as transient acquire errorsDavid Kalnischkies2017-12-131-1/+13
| | | | | | | | | | | | | | If retries are enabled only transient errors are retried, which are very few errors. At least for some HTTP codes it could be beneficial to retry them through so adding them seems like a good idea if only to be more consistent in what we report.
| * support multiline values in LookupTagDavid Kalnischkies2017-12-132-23/+111
|/ | | | | | | | | | LookupTag is a little helper to deal with rfc822-style strings we use in apt e.g. to pass acquire messages around for cases in which our usual rfc822 parser is too heavy. All the fields it had to deal with so far were single line, but if they aren't it should really produce the right output and not just return the first line. Error messages are a prime candidate for becoming multiline as at the moment they are stripped of potential newlines due to the previous insufficiency of LookupTag.
* Merge branch 'feature/happy-gcc'David Kalnischkies2017-12-1329-92/+105
|\ | | | | | | Fixing various real and imagined bugs reported by gcc warnings
| * deal with floats without old-style castDavid Kalnischkies2017-12-133-12/+14
| | | | | | | | | | | | | | | | We have no speed problem with handling floats/doubles in our progress handling, but that shouldn't prevent us from cleaning up the handling slightly to avoid unclean casting to ints. Reported-By: gcc -Wdouble-promotion -Wold-style-cast
| * avoid some useless casts reported by -Wuseless-castDavid Kalnischkies2017-12-139-43/+29
| | | | | | | | | | | | | | | | | | The casts are useless, but the reports show some where we can actually improve the code by replacing them with better alternatives like converting whatever int type into a string instead of casting to a specific one which might in the future be too small. Reported-By: gcc -Wuseless-cast
| * convert various c-style casts to C++-styleDavid Kalnischkies2017-12-1310-28/+30
| | | | | | | | | | | | | | | | | | | | gcc was warning about ignored type qualifiers for all of them due to the last 'const', so dropping that and converting to static_cast in the process removes the here harmless warning to avoid hidden real issues in them later on. Reported-By: gcc Gbp-Dch: Ignore
| * deprecate the single-line deprecation ignoring macroDavid Kalnischkies2017-12-135-5/+16
| | | | | | | | | | | | | | | | | | | | gcc has problems understanding this construct and additionally thinks it would produce multiple lines and stuff, so to keep using it isn't really worth it for the few instances we have: We can just write the long form there which works better. Reported-By: gcc Gbp-Dch: Ignore
| * don't name unused parameter in apt-helper waitonlineDavid Kalnischkies2017-12-131-1/+1
| | | | | | | | | | Reported-By: gcc -Wunused-parameter Gbp-Dch: Ignore
| * clearing object via constructor instead of memsetDavid Kalnischkies2017-12-131-1/+1
| | | | | | | | | | Reported-By: gcc -Wclass-memaccess Gbp-Dch: Ignore
| * fix over-calculating dpkg commandline lengthDavid Kalnischkies2017-12-131-0/+2
| | | | | | | | | | | | | | | | | | Mostly harmless as it just means that apt thinks that the dpkg commandline it is building is slightly longer than it actually is and we have various ways of avoiding generating very long lines nowadays, but calculating the right value can't hurt. Reported-By: gcc -Wmultistatement-macros
| * explicitly name token in auth.conf parsing errorDavid Kalnischkies2017-12-131-2/+12
|/ | | | Reported-By: gcc -Wsign-promo
* update libapt-pkg symbols fileDavid Kalnischkies2017-12-131-11/+7
| | | | | Beside adding the relatively new Item::Proxy method we are also slightly preparing for gcc-8.
* use the newest available git-clang-format in PATHDavid Kalnischkies2017-12-131-1/+8
| | | | | | | | | Hardcoding a specific version is sad as default versions change over time, so instead of tying us to a specific clang version we let the script figure out a good version by looking at what is available in PATH. Gbp-Dch: Ignore
* don't auto-switch candidate if installed is good enoughDavid Kalnischkies2017-12-132-0/+31
| | | | | | | If we perform candidate switching in requests like "apt install foo/bar" we should first check if the dependencies of foo from release bar are already satisfied by what is already installed before checking if the candidate (or switched candidate) would.
* if insecure repo is allowed continue on all http errorsDavid Kalnischkies2017-12-133-8/+39
| | | | | | | | | | | | | | | | | If a InRelease file fails to download with a non-404 error we assumed there is some general problem with repository like a webportal or your are blocked from access (wrong auth, Tor, …). Turns out some server like S3 return 403 if a file doesn't exist. Allowing this in general seems like a step backwards as 403 is a reasonable response if auth failed, so failing here seems better than letting those users run into problems. What we can do is show our insecure warnings through and allow the failures for insecure repos: If the repo is signed it is easy to add an InRelease file and if not you are setup for trouble anyhow. References: cbbf185c3c55effe47f218a07e7b1f324973a8a6
* tests: Improve handling profiling messages on CIJulian Andres Klode2017-11-221-10/+12
| | | | | | | | | | | We did not strip away profiling messages when we were diffing from stdin (-). Just always write temporary files and strip from them. We also had a problem when stripping ...profiling: from a line and the next line starts with profiling. Split the sed into two calls so we first remove complete profiling: lines before fixing the ...profiling: cases.
* Translate shared documentation parts againJulian Andres Klode2017-11-202-10/+29
| | | | | | | We accidentally did not translate the entity file, but should have. This makes apt.ent translatable again. This generates the target multiple times, but surprisingly, that works just fine, so let's just keep it that way, as it's clean code otherwise.
* allow apt_auth.conf(5) to be translatedDavid Kalnischkies2017-11-201-0/+1
| | | | | | | | Adding manpages is really hard it seems. References: ea408c560ed85bb4ef7cf8f72f8463653501332c, ea7581c9aaaaebf844d00935a1cdf8c8fee7f7f3, 90bfc5b057d3f9136ffe34089b6e56d59593797c
* support COLUMNS environment variable in apt toolsDavid Kalnischkies2017-11-193-6/+44
| | | | | | | apt usually gets the width of the window from the terminal or failing that has a default value, but especially for testing it can be handy to control the size as you can't be sure that variable sized content will always be linebreaked as expected in the testcases.
* allow multivalue fields in deb822 sources to be foldedDavid Kalnischkies2017-11-193-47/+143
| | | | | | | | | | | | | | | The documentation said "spaces", but there is no real reason to be so strict and only allow spaces to separate values as that only leads to very long lines if e.g. multiple URIs are specified which are again hard to deal with from a user PoV which the deb822 format is supposed to avoid. It also deals with multiple consecutive spaces and strange things like tabs users will surely end up using in the real world. The old behviour on encountering folded lines is the generation of URIs which end up containing all these whitespace characters which tends to mess really bad with output and further processing. Closes: 881875
* Run wrap-and-sortJulian Andres Klode2017-11-191-4/+6
| | | | Clean up the control file a bit.
* Also look at https_proxy for https URLsJulian Andres Klode2017-11-191-4/+13
| | | | | We accidentally regressed here in 1.5 when replacing the https method.
* Add Breaks: aptitude (<< 0.8.10) for gzip method removalJulian Andres Klode2017-11-161-1/+1
| | | | | aptitude used to use gzip:// for changelog URLs, but is now fixed to use store.
* Release 1.6~alpha51.6_alpha5Julian Andres Klode2017-11-125-6/+17
|
* Dutch manpage translation updateFrans Spiesschaert2017-11-121-72/+50
| | | | Closes: #881402
* Do not attempt seccomp under qemu-user and drop EFAULT workaroundJulian Andres Klode2017-11-121-1/+37
| | | | | | | | | | | | | | | | | | | qemu-user passes prctl()-based seccomp through to the kernel, umodified. That's bad, as it blocks the wrong syscalls. We ignored EFAULT which fixed the problem for targets with different pointer sizes from the host, but was a bad hack. In order to identify qemu we can rely on the fact that qemu-user prints its version and exits with 0 if QEMU_VERSION is set to an unsupported value. If we run a command that should fail in such an environment, and it exits with 0, then we are running in qemu-user. apt-helper is an obvious command to run. The tests ensure it exits with 1, and it only prints usage information. We also could not use /bin/false because apt might just as well be from a foreign arch while /bin/false is not. Closes: #881519
* [amend] Use a versioned breaks for a-t-https in apt1.6_alpha4Julian Andres Klode2017-11-051-1/+1
| | | | | | | We need to use a versioned breaks again, otherwise the transitional package would not be installable. Gbp-Dch: ignore
* Release 1.6~alpha4Julian Andres Klode2017-11-055-6/+14
|
* Add ${misc:Depends} to apt-transport-https dependsJulian Andres Klode2017-11-051-1/+1
| | | | | | Makes lintian happy, but is basically useless Gbp-Dch: ignore
* Re-introduce a transitional apt-transport-httpsJulian Andres Klode2017-11-051-0/+9
| | | | | This fixes issues with debootstrap. The package will disappear after the release of buster.
* debian: Bump Standards-Version to 4.1.1Julian Andres Klode2017-10-291-1/+1
| | | | No further changes required.
* debian: Set Rules-Requires-Root: noJulian Andres Klode2017-10-291-0/+1
| | | | We don't need fakeroot for building!
* Release 1.6~alpha31.6_alpha3Julian Andres Klode2017-10-285-6/+21
|
* use store: instead of gzip: to open local changelogsDavid Kalnischkies2017-10-281-2/+2
| | | | Regression-Of: cc1f94c95373670fdfdb8e2d6cf9125181f7df0c
* Also use FindULL for checking if the size tags is validJulian Andres Klode2017-10-281-2/+2
| | | | | | | | It used FindI() > 0, but if it is too big, FindI() would cause an error "Cannot convert %s to integer: out of range", so let's also use FindULL() here. Gbp-Dch: ignore
* Prevent overflow in Installed-Size (and Size) in apt showJulian Andres Klode2017-10-282-2/+14
| | | | | | | | | | | Installed-Size for linux-image-4.13.0-1-amd64-dbg and friends are larger than 4 GB, but read as a signed integer - that's fine so far, as the value is in KB, but it's multiplied with 1024 which overflows. So let's read it as unsigned long long instead. While we're at it, also use unsigned long long for Size, in case that is bigger than 2 GB.
* seccomp: Allow clock_nanosleep() and nanosleep() syscallsJulian Andres Klode2017-10-271-0/+2
| | | | We sleep in http.cc, so we should allow the sleeping syscalls.
* Drop unused gzip, lzma, bzip2, and xz symlinks of storeJulian Andres Klode2017-10-261-1/+1
| | | | | | The store method replaced them all, the symlinks where mostly for partial upgrades or whatever, they should not be needed any longer.
* seccomp: Allow ipc() for fakeroot, and allow sysinfo() for sortJulian Andres Klode2017-10-261-0/+2
| | | | | | | Sorting apparently calls sysconf() which calls sysinfo() to get free pages or whatever. Closes: #879814, #879826
* debian/tests/control: Add dpkg so we get triggered by itJulian Andres Klode2017-10-261-1/+1
| | | | | | We do want to get our autopkgtests triggered by dpkg uploads in Ubuntu, but this does not happen because we don't have an explicit dependency on it. Add one.
* Release 1.6~alpha21.6_alpha2Julian Andres Klode2017-10-265-6/+17
|
* CMake: Get rid of some debugging messagesJulian Andres Klode2017-10-261-2/+0
| | | | | | | | | | This fixes a regression introduced in commit 43b9eb5bac15666fdc0346aca7031fab0fa5e064 CMake: methods: Cleanup link libraries, use OBJECT libraries Gbp-Dch: ignore
* Print syscall number and arch to stderr when trapped by seccompJulian Andres Klode2017-10-262-0/+34
| | | | | | This should help debugging crashes. The signal handler is a C++11 lambda, yay! Special care has been taken to only use signal handler -safe functions inside there.
* Only warn about seccomp() EINVAL (normal) and EFAULT (qemu) errorsJulian Andres Klode2017-10-251-3/+5
| | | | | | | | | | If seccomp is disabled, we fallback to running without it. Qemu fails in the seccomp() call, returning ENOSYS and libseccomp falls back to prctl() without adjusting the pointer, causing the EFAULT. I hope qemu gets fixed at some point to return EINVAL for seccomp via prctl. Bug-Qemu: https://bugs.launchpad.net/qemu/+bug/1726394
* Don't segfault if receiving a method warning on empty queueJulian Andres Klode2017-10-251-1/+1
| | | | | | | We would like to issue a warning about seccomp support in Configuration(), but since the queue is empty, there is no current item to show the URL for and we get a segfault. Show the protocol instead.