summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-08-24do not restore selections for already purged packagesDavid Kalnischkies3-7/+19
In most cases apt was already skipping the (re)setting of packages as to be removed/purged if dpkg had told us that it already did, but we haven't dealt with it in the most obvious of the cases: Selections set for packages we touched in this operation which either restores selections even dpkg would have overridden or e.g. tries to restore a purge selection for a package which was just purged – does not happen with apt itself as it isn't using selections in this way, but higher frontends like aptitude do. The result in the later case is a warning printed by dpkg that we try to set selections for an unknown package, which is harmless per se, but can be confusing for users and we really shouldn't cause warnings in dpkg if we can help it. Reported-By: Guillem Jover on IRC
2016-08-24improve code & doc for aquire weak/loop failingDavid Kalnischkies1-6/+6
Improve-Upon: 2e2865ae53a65c00dd55a892d5b48458f3110366 Reported-By: Julian Andres Klode Gbp-Dch: Ignore
2016-08-24do fail on weakhash/loop earlier in acquireDavid Kalnischkies8-50/+70
The bugreport shows a segfault caused by the code not doing the correct magical dance to remove an item from inside a queue in all cases. We could try hard to fix this, but it is actually better and also easier to perform these checks (which cause instant failure) earlier so that they haven't entered queue(s) yet, which in return makes cleanup trivial. The result is that we actually end up failing "too early" as if we wouldn't be careful download errors would be logged before that process was even started. Not a problem for the acquire system, but likely to confuse users and programs alike if they see the download process producing errors before apt was technically allowed to do an acquire (it didn't, so no violation, but it looks like it to the untrained eye). Closes: 835195
2016-08-23CMake: Define _WITH_GETLINE for FreeBSDJulian Andres Klode1-0/+3
Gbp-Dch: ignore
2016-08-23CMake: Do not add po/ if USE_NLS is OFFJulian Andres Klode2-2/+6
Previously, we would have generated all the translations, but not turn them on in the code. Instead, move the Translation crap into po/ and disable po/ alltogether if USE_NLS if OFF.
2016-08-23CMake: Discover docbook stylesheet in other locationsJulian Andres Klode4-6/+34
Distributions seem to install this stuff all over the place, so let's add a common list of paths we know about.
2016-08-23install-progress: Call the real ::fork() in our fork() methodJulian Andres Klode1-1/+1
We basically called ourselves before, creating an endless loop. Reported-By: clang
2016-08-23CMake: Add Large File SupportJulian Andres Klode2-0/+154
This module should cover all sorts of large file supports, as long as they either support the getconf LFS_CFLAGS command; or the _FILE_OFFSET_BITS=64 or _LARGE_FILES macros. Closes: #834767
2016-08-23prevent C++ locale number formatting in text APIs (try 3)David Kalnischkies2-36/+44
This time it is the formatting of floating numbers in progress reporting with a radix charater potentially not being dot. Followup of 7303e11ff28f920a6277c159aa46f80c007350bb. Regression of b58e2c7c56b1416a343e81f9f80cb1f02c128e25 in so far as it exchanging very effected with slightly less effected code. LP: 1611010
2016-08-23do dpkg --configure before --remove/--purge --pendingDavid Kalnischkies3-3/+52
Commit 7ec343309b7bc6001b465c870609b3c570026149 got us most of the way, but the last mile was botched by having the pending calls in the wrong order as this way we potentially 'force' dpkg to remove/purge a package it doesn't want to as another package still depends on it and the replacement isn't fully installed yet. So what we do now is a configure before remove and purge (all with --no-triggers) and finishing off with another configure pending call to take care of the triggers. Note that in the bugreport example our current planner is forcing dpkg to remove the package earlier via --force-depends which we could do for the pending calls as well and could be used as a workaround, but we want to do less forcing eventually. Closes: 835094
2016-08-20zh_CN.po: update simplified Chinese translationZhou Mo1-23/+18
2016-08-20CMake: Fix uninitialized variablesJulian Andres Klode3-2/+5
This fixes some actual bugs for PROJECT and BZIP2_INCLUDE_DIR. Gbp-Dch: ignore
2016-08-20CMake: Translations: Build byproduct before outputJulian Andres Klode1-4/+4
This can lead to an inconsistent state otherwise, with the output being updated and the byproduct not; for example, when the build was manually interrupted.
2016-08-20debian: Get rid of dh_movefiles againJulian Andres Klode4-5/+5
This workaround is a bit more ugly, but does not use a (somewhat) deprecated debhelper command. Gbp-Dch: ignore
2016-08-19debian: Run wrap-and-sortJulian Andres Klode7-59/+71
Manually clean up the apt.maintscript, it moved stuff from before the comment to after the comment...
2016-08-19debian: Drop outdated stuffJulian Andres Klode2-9/+0
The README.source is not usable anymore, and the Build-Conflicts andd Breaks/Replaces are not needed anymore.
2016-08-19debian: Add more lintian overridesJulian Andres Klode2-0/+4
2016-08-19debian: Switch to debhelper 10Julian Andres Klode3-3/+3
debhelper 10 is much nicer with the installation part from a dirty tree, so you can just fix some stuff breaking the install step and then continue building with debuild -b -nc until you have fixed all your stuff. It also has some other advantages, of course, like some bug fixes in shell escaping for maintscript, or systemd helper changes.
2016-08-19debian: Make better use of the tree installed by CMakeJulian Andres Klode9-29/+2
This gets rid of the special casing of etc/apt, various example file installations handled by the upstream build system, and of course the directory creation for all dirs created by the upstream build system.
2016-08-19CMake: Install config and logging directoriesJulian Andres Klode2-0/+26
These directories are essential for apt to work, so we should install them in the upstream build system and not just in the debian packaging...
2016-08-19tests/control: Handle the gpg1/gpg2 mess a bit betterJulian Andres Klode1-1/+4
Hardcoding gpgv1 and gnupg1 breaks Ubuntu, because on Ubuntu, these packages do not exist yet. Instead allow gnupg (<< 2) for gnupg1 and gnupg2 for gnupg (>= 2), so we cover all potential combinations.
2016-08-19prepare-release: Use equivs and gdebi-core for travis depsJulian Andres Klode2-4/+26
Our previous hack did not really support or groups and other more advanced dependency types. This hack basically removes build profiles, and the @-type depends for tests, and otherwise converts the deps to a package which is then installed via gdebi.
2016-08-19Ignore SIGINT and SIGQUIT for Pre-Install hooksJulian Andres Klode1-7/+3
Instead of erroring out when receiving a SIGINT, let the child deal with it - we'll error out anyway if the child exits with an error or due to the signal. Also ignore SIGQUIT, as system() ignores it. This basically fixes Bug #832593, but: we are running the hooks via sh -c. Some shells exit with a signal error even if the command they are executing catches the signal and exits successfully. So far, this has been noticed on dash, which unfortunately, is our default shell. Example: $ cat trap.sh trap 'echo int' INT; sleep 10; exit 0 $ if dash -c ./trap.sh; then echo OK: $?; else echo FAIL: $?; fi ^Cint FAIL: 130 $ if mksh -c ./trap.sh; then echo OK: $?; else echo FAIL: $?; fi ^Cint OK: 0 $ if bash -c ./trap.sh; then echo OK: $?; else echo FAIL: $?; fi ^Cint OK: 0
2016-08-19CMake: Translations: Pass --previous to msgmergeJulian Andres Klode1-1/+1
When updating our .po files, pass --previous to msgmerge to make it easier for translators to translate fuzzy strings. Thanks: Guillem Jover for the suggestion.
2016-08-19CMake: Translations: Don't rebuild .mo for line number changesJulian Andres Klode1-1/+4
If only the line numbers changed in a file without any of the translatable strings changing, the .po and .mo files were rebuilt, making building simple code changes somewhat annoying. We can work around this by passing --add-location=file to msgcomm when we are creating the temporary .pot file used for building the .mo files.
2016-08-18debian: Install etc/apt if present (e.g., on Ubuntu)Julian Andres Klode1-1/+2
On Ubuntu, cmake installs are vendor-specific apt.conf.d snippet, causing the build to fail.
2016-08-17Release 1.3~rc21.3_rc2Julian Andres Klode60-229/+658
2016-08-17methods: read config in most to least specific orderDavid Kalnischkies2-4/+5
The implementation of the generic config fallback did the fallback in the wrong order so that the least specific option wasn't the last value picked but in fact the first one… doh! So in the bugreports case http -> https -> http::<hostname> -> https::<hostname> while it should have been the reverse as before. Regression-In: 30060442025824c491f58887ca7369f3c572fa57 Closes: 834642
2016-08-17don't count each Type as an individual deb822-sources stanzaDavid Kalnischkies1-5/+3
Reported-By: Mattia Rizzolo <mattia@debian.org> in #834629
2016-08-17add --with-source option and Packages/Sources supportDavid Kalnischkies8-5/+108
We support "./foobar.deb" as a way to install a deb file directly. Recently .changes files were added. This highlights a problem as you can't add the changes file without also trying to install all of them. Now, it could also be handy to add entire Packages/Sources files to perhaps get a bunch of packages in without installing them all implicitly. This commit introduces --with-source which allows to add *.deb, *.changes, *.dsc, source-dirs, Packages & Sources files (the later can also be compressed) without also installing them.
2016-08-17allow spaces in fingerprints for 'apt-key del'David Kalnischkies2-2/+10
Fingerprints tend to be displayed in space-separated octet pairs so be nice and allow delete to remove a key based on such a string rather than requiring that the user is deleting all the spaces manually.
2016-08-17add the gpg-classic variant to the gpgv/gnupg or-groupDavid Kalnischkies8-62/+52
We need to support partial upgrades anyhow, so we have to deal with the different versions and your tests try to ensure that we do, so we shouldn't make any explicit higher requirements.
2016-08-17tests: update self-sigs on our test keysDavid Kalnischkies10-0/+0
gpg upstream committed "gpgv: Tweak default options for extra security." applied on the 1.x and 2.x branches: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=e32c575e0f3704e7563048eea6d26844bdfc494b This commit includes "[…], but we should validate the key by its self signature for primary key, and back signature for subkey." Our testkeys are old and do not really considered best practices in the last years, so their most recent self-signature is SHA1-only which with this gpg commit and our testcases defaulting to --weak-digest sha1 are refused. So what we do here is just applying some of the recent best practices on top of our testcase keys. Gbp-Dch: Ignore
2016-08-17tests: set source directory for gdbDavid Kalnischkies1-1/+1
Helps interactive gdb calls find the source code. Gbp-Dch: Ignore
2016-08-17default to Dir=/ in dpkg/status file finding magicDavid Kalnischkies1-12/+10
Seen in cme #833656 if Dir isn't set (yet) we end up later absoluting a path which was supposed to be absolute already, so if Dir is empty we assume it to be '/' instead. In practice this is a bug in the software using libapt, but for maxium compatibility lets explicitly set the default value here to be safe. Reported-By: Paul Wise <pabs@debian.org> Inspired-By: Brendan O'Dea <bod@debian.org> Fixes-Regression: 475f75506db48a7fa90711fce4ed129f6a14cc9a Shadows-Bug: #833656
2016-08-17support compression and by-hash for .diff/Index filesDavid Kalnischkies4-114/+151
In af81ab9030229b4ce6cbe28f0f0831d4896fda01 by-hash got implemented as a special compression type for our usual index files like Packages. Missing in this scheme was the special .diff/Index index file containing the info about individual patches for this index file. Deriving from the index file class directly we inherent the compression handling infrastructure and in this way also by-hash nearly for free. Closes: #824926
2016-08-17support getting only-uncompressed files via by-hashDavid Kalnischkies1-0/+2
The URI we later want to modify to get the file via by-hash was unset in case a file was only available uncompressed (which is usually not the case) causing an acquire error.
2016-08-17set the correct item FileSize in by-hash caseDavid Kalnischkies1-4/+3
In af81ab9030229b4ce6cbe28f0f0831d4896fda01 we implement by-hash as a special compression type, which breaks this filesize setting as the code is looking for a foobar.by-hash file then. Dealing this slightly gets us the intended value. Note that this has no direct effect as this value will be set in other ways, too, and could only effect progress reporting. Gbp-Dch: Ignore
2016-08-17retry without same redirection mirror on 404 errorsDavid Kalnischkies2-5/+41
If 9b8034a9fd40b4d05075fda719e61f6eb4c45678 serves the Release files from a partial mirror we will end up getting 404 for some of the indexes. Instead of giving up, we will instead ignore our same redirection mirror constrain and ask the redirection service as a potential hashsum mismatch is better than keeping the certain 404 error.
2016-08-17check internal redirections for loops, tooDavid Kalnischkies2-0/+22
Now that we have the redirections loopchecker centrally in our items we can use it also to prevent internal redirections to loop caused by bugs as in a few instances we get into the business of rewriting the URI we will query by ourself as we predict we would see such a redirect anyway. Our code has no bugs of course, hence no practical difference. ;) Gbp-Dch: Ignore
2016-08-16log with the failed item description, not with next tryDavid Kalnischkies1-3/+4
The failure handling frequently changes URI & Description of the failed item to try a slightly different combination which might work, but the logging of the failure happens only afterwards as the same failure handling decides if this is a critical error or not so we need a backup here instead of potentially new content. A purely cosmetic issue, but can still be confusing for humans.
2016-08-16don't try pipelining if server closes connectionsDavid Kalnischkies1-1/+9
If a server closes a connection after sending us a file that tends to mean that its a type of server who always closes the connection – it is therefore relatively pointless to try pipelining with it even if it isn't a problem by itself: apt is just restarting the pipeline each time after it got served one file and the connection is closed. The problem starts if one or more proxies are between the server and apt and they disagree about how the connection should be as in the bugreporters case where the responses apt gets contain both Keep-Alive and Proxy-Connection headers (which apt both ignores) indicating a proxy is trying to keep a connection open while the response also contains "Connection: close" indicating the opposite which apt understands and respects as it is required to do. We avoid stepping into this abyss by not performing pipelining anymore if we got a respond with the indication to close connection if the response was otherwise a success – error messages are sent by some servers via this method as their pages tend to be created dynamically and hence their size isn't known a priori to them. Closes: #832113
2016-08-16don't sent Range requests if we know its not acceptedDavid Kalnischkies9-13/+37
If the server told us in a previous request that it isn't supporting Ranges with bytes via an Accept-Ranges header missing bytes, we don't try to formulate requests using Ranges.
2016-08-16reorganize server-states resetting in http/httpsDavid Kalnischkies5-17/+26
We keep various information bits about the server around, some only effecting the currently handled file (like sizes) while others should be persistent (like pipeline detections). http used to reset all file-related manually, which is a bit silly if we already have a Reset() method – which does reset all through –, so extending it with a parameter for reuse and calling it from https too (as this was previously resetting by just creating a new state struct – it uses no value of the persistent state-keeping yet as it supports no pipelining). Gbp-Dch: Ignore
2016-08-15CMake: Install bash completions via cmakeJulian Andres Klode3-1/+6
Having the completions installed only by the packaging was an oversight. Gbp-Dch: ignore
2016-08-13Change anonscm.d.o links to /git/apt/apt.git and httpsJulian Andres Klode2-3/+3
This also fixes Debian/apt#20, but is slightly more complete. I think /git also looks better than /cgit, so let's switch the Vcs entry in control over too.
2016-08-13http(s): allow empty values for header fieldsDavid Kalnischkies3-19/+20
It seems completely pointless from a server-POV to sent empty header fields, so most of them don't do it (simply proven by this limitation existing since day one) – but it is technically allowed by the RFC as the surounding whitespaces are optional and Github seems to like sending "X-Geo-Block-List:\r\n" since recently (bug reports in other http clients indicate July) at least sometimes as the reporter claims to have seen it on https only even through it can happen with both. Closes: 834048
2016-08-12drop incorrect const attribute from DirectoryExistsDavid Kalnischkies1-1/+1
Since its existence in 2010 DirectoryExists was always marked with this attribute, but for no real reason. Arguably a check for the existence of the file is not modifying global state, so theoretically this shouldn't be a problem. It is wrong from a logical point of view through as between two calls the directory could be created so the promise we made to the compiler that it could remove the second call would be wrong, so API wise it is wrong. It's a bit mysterious that this is only observeable on ppc64el and can be fixed by reordering code ever so slightly, but in the end its more our fault for adding this attribute than the compilers fault for doing something silly based on the attribute. LP: 1473674
2016-08-12fileutl: empty file support: Avoid fstat() on -1 fd and check resultJulian Andres Klode1-2/+3
When checking if a file is empty, we forget to check that fstat() actually worked.
2016-08-12tests: don't do boundless string compares with data()David Kalnischkies1-9/+11
Git-Dch: Ignore