]> git.saurik.com Git - apt.git/log
apt.git
8 years agodownload arch:all also for NATIVE_ARCHITECTURE indextargets
David Kalnischkies [Sat, 7 May 2016 14:45:35 +0000 (16:45 +0200)] 
download arch:all also for NATIVE_ARCHITECTURE indextargets

It looks a bit strange on the outside to have multiple "native
architecture", but all is considered an implementation detail and e.g.
packages of arch:all are in dependency resolution equal to native
packages.

8 years agodon't construct MetaIndex acquire items with IndexTargets
David Kalnischkies [Sat, 7 May 2016 12:52:08 +0000 (14:52 +0200)] 
don't construct MetaIndex acquire items with IndexTargets

We don't have to initialize the Release files with a set of IndexTargets
to acquire, but instead wait for the Release file to be acquired and
only then ask which IndexTargets to get.

Git-Dch: Ignore

8 years agodelay progress until Release files are downloaded
David Kalnischkies [Sat, 7 May 2016 12:44:53 +0000 (14:44 +0200)] 
delay progress until Release files are downloaded

Progress reporting used an "upper bound" on files we might get, expect
that this wasn't correct in case pdiff entered the picture. So instead
of calculating a value which is perhaps incorrect, we just accept that
we can't tell how many files we are going to download and just keep at
0% until we know. Additionally, if we have pdiffs we wait until we got
these (sub)index files, too.

That could all be done better by downloading all Release files first and
planing with them in hand accordingly, but one step at a time.

8 years agoTransactionManager can never be a nullptr
David Kalnischkies [Sat, 7 May 2016 12:08:35 +0000 (14:08 +0200)] 
TransactionManager can never be a nullptr

The code naturally evolved from a TransactionManager optional to a
required setup which resulted in various places doing unneeded checks
suggesting a more complicated setup than is actually needed.

Git-Dch: Ignore

8 years agofix same-mirror redirection for Release{,.gpg} pair
David Kalnischkies [Sat, 7 May 2016 11:45:25 +0000 (13:45 +0200)] 
fix same-mirror redirection for Release{,.gpg} pair

Commit 9b8034a9fd40b4d05075fda719e61f6eb4c45678 just deals with
InRelease properly and generates broken URIs in case the mirror (or the
achieve really) has no InRelease file.

[As this was in no released version no need to clutter changelog with a
fix notice.]

Git-Dch: Ignore

8 years agotests: disable generation of Release.gpg by default
David Kalnischkies [Wed, 4 May 2016 09:45:35 +0000 (11:45 +0200)] 
tests: disable generation of Release.gpg by default

Most tests just need a signed repository and don't care if it signed by
an InRelease file or a Release.gpg file, so we can save some time by
just generating one of them by default.

Sounds like not much, but quickly adds up to a few seconds with the
amount of tests we have accumulated by now.

Git-Dch: Ignore

8 years agotests: allow to disable generation of InRelease/Release.gpg file
David Kalnischkies [Wed, 4 May 2016 09:10:08 +0000 (11:10 +0200)] 
tests: allow to disable generation of InRelease/Release.gpg file

If the test just signs release files to throw away one of them to test
the other, we can just as well save the time and not create it.

Git-Dch: Ignore

8 years agotest: fix permission issue if run as root
David Kalnischkies [Wed, 4 May 2016 08:08:16 +0000 (10:08 +0200)] 
test: fix permission issue if run as root

Always those silly mistakes. Do what I mean, not what I said…

Reported-By: Travis
Git-Dch: Ignore

8 years agoallow redirection for items without a space in the desc again
David Kalnischkies [Tue, 3 May 2016 21:22:53 +0000 (23:22 +0200)] 
allow redirection for items without a space in the desc again

Broken in a4b8112b19763cbd2c12b81d55bc7d43a591d610.
If an item has a description which includes no space and is redirected
to another mirror the code which wants to rewrite the description
expects a space in there, but can't find it and the unguarded substr
command on the string will fail with an exception thrown…

Guarding it properly and everything is fine.

8 years agolet DPKG_COLORS default to our APT::Color setting
David Kalnischkies [Tue, 3 May 2016 12:11:30 +0000 (14:11 +0200)] 
let DPKG_COLORS default to our APT::Color setting

dpkg can optionally colorize its output since 1.18.5. Currently this
defaults to 'never', but it will eventually be 'auto'. It seems
reasonable to assume that a user who has enabled/disabled colors in apt
will want to have dpkg have the same state regarding color usage.

This isn't overriding explicit settings by the user, so in case a user
feels strongly about it one way or the other there are options.

8 years agoremove 100-levels config nesting limit
David Kalnischkies [Mon, 2 May 2016 16:18:37 +0000 (18:18 +0200)] 
remove 100-levels config nesting limit

The actual reason for this commit isn't the limit – there isn't much
point in using that much nesting – its in shutting up gcc mostly:

apt/apt-pkg/contrib/configuration.cc: In function ‘bool ReadConfigFile(Configuration&, const string&, const bool&, const unsigned int&)’:
apt/apt-pkg/contrib/configuration.cc:686:20: warning: cannot optimize loop, the loop counter may overflow [-Wunsafe-loop-optimizations]
    string Stack[100];
                    ^
by replacing this with C++s handy std::stack container (adapter).
Also cleans some whitespace noise from the file in the process.

8 years agoapt-key: add \n to dpkg-query --show --showformat
Carsten Hey [Sun, 1 May 2016 15:06:29 +0000 (17:06 +0200)] 
apt-key: add \n to dpkg-query --show --showformat

Guarding against 'broken' greps not dealing with non-text inputs
"just in case" by making the input text with a proper newline.

[commit message by David Kalnischkies]

Reported-On: IRC
Git-Dch: Ignore

8 years agowarn if apt-key is run unconditionally in maintainerscript
David Kalnischkies [Sun, 1 May 2016 12:43:23 +0000 (14:43 +0200)] 
warn if apt-key is run unconditionally in maintainerscript

We want to stop hard-depending on gnupg and for this it is essential
that apt-key isn't used in any critical execution path, which
maintainerscript are. Especially as it is likely that these script call
apt-key either only for (potentially now outdated cleanup) or still not
use the much simpler trusted.gpg.d infrastructure.

8 years agomove gnupg|gnupg2 from apt Depends to Recommends
David Kalnischkies [Sun, 1 May 2016 10:50:53 +0000 (12:50 +0200)] 
move gnupg|gnupg2 from apt Depends to Recommends

apt doesn't need gnupg in its main execution paths to function,
especially the Release file verification is done with gpgv only.
It is only used by apt-key for advanced key management functionality
most user will never use nor need.

The intend is to demote it eventually to Suggests, but we opt here for a
staged downgrade as there are still third-party repositories out there
which require apt-key functionality without depending on gnupg (or apt
for that matter).

8 years agoftparchive: Support writing Signed-By fields
Julian Andres Klode [Sun, 1 May 2016 09:38:44 +0000 (11:38 +0200)] 
ftparchive: Support writing Signed-By fields

8 years agobugscript: include all configuration fragment files
David Kalnischkies [Fri, 29 Apr 2016 16:40:08 +0000 (18:40 +0200)] 
bugscript: include all configuration fragment files

Closes: 820861
8 years agosupport Signed-By in Release files as a sort of HPKP
David Kalnischkies [Fri, 29 Apr 2016 14:48:16 +0000 (16:48 +0200)] 
support Signed-By in Release files as a sort of HPKP

Users have the option since apt >= 1.1 to enforce that a Release file is
signed with specific key(s) either via keyring filename or fingerprints.
This commit adds an entry with the same name and value (except that it
doesn't accept filenames for obvious reasons) to the Release file so
that the repository owner can set a default value for this setting
effecting the *next* Release file, not the current one, which provides a
functionality similar "HTTP Public Key Pinning". The pinning is in
effect as long as the (then old) Release file is considered valid, but
it is also ignored if the Release file has no Valid-Until at all.

8 years agosupport multiple fingerprints in signed-by
David Kalnischkies [Fri, 29 Apr 2016 08:16:42 +0000 (10:16 +0200)] 
support multiple fingerprints in signed-by

A keyring file can include multiple keys, so its only fair for
transitions and such to support multiple fingerprints as well.

8 years agogpgv: cleanup statusfd parsing a bit
David Kalnischkies [Fri, 29 Apr 2016 08:08:13 +0000 (10:08 +0200)] 
gpgv: cleanup statusfd parsing a bit

We parse the messages we receive into two big categories: Most of the
messages have a keyid as well as a userid and as they are errors we want
to show the userids as well. The other category is also errors, but have
no userid (like NO_PUBKEY). Explicitly expressing this in code should
make it a bit easier to look at and it also help in dropping additional
fields or just the newline at the end consistently.

Git-Dch: Ignore

8 years agodon't show NO_PUBKEY warning if repo is signed by another key
David Kalnischkies [Thu, 28 Apr 2016 22:31:49 +0000 (00:31 +0200)] 
don't show NO_PUBKEY warning if repo is signed by another key

Daniel Kahn Gillmor highlights in the bugreport that security isn't
improving by having the user import additional keys – especially as
importing keys securely is hard.

The bugreport was initially about dropping the warning to a notice, but
in given the previously mentioned observation and the fact that we
weren't printing a warning (or a notice) for expired or revoked keys
providing a signature we drop it completely as the code to display a
message if this was the only key is in another path – and is considered
critical.

Closes: 618445
8 years agogpgv: handle expired sig as worthless
David Kalnischkies [Thu, 28 Apr 2016 20:02:50 +0000 (22:02 +0200)] 
gpgv: handle expired sig as worthless

Signatures on data can have an expiration date, too, which we hadn't
handled previously explicitly (no problem – gpg still has a non-zero
exit code so apt notices the invalid signature) so the error message
wasn't as helpful as it could be (aka mentioning the key signing it).

8 years agogpgv: use EXPKEYSIG instead of KEYEXPIRED
David Kalnischkies [Thu, 28 Apr 2016 17:05:06 +0000 (19:05 +0200)] 
gpgv: use EXPKEYSIG instead of KEYEXPIRED

The upstream documentation says about KEYEXPIRED:
"This status line is not very useful". Indeed, it doesn't mention which
key is expired, and suggests to use the other message which does.

8 years agoshow StateCache flags in Pkg debug prettyprint
David Kalnischkies [Thu, 28 Apr 2016 13:03:55 +0000 (15:03 +0200)] 
show StateCache flags in Pkg debug prettyprint

This basically introduces ~33 flags in the output, but a package can
have only ~11 of them displayed at the same time. There is quiet a bit
of duplication also (an uninstalled package is by definition a
newinstall if its getting installed), but as this is debug output we are
better of showing them all in case one of them isn't set in a way it is
supposed to be set.

Git-Dch: Ignore

8 years agozh_TW.po: remove several fuzzy tags after review
Zhou Mo [Sat, 30 Apr 2016 13:24:42 +0000 (13:24 +0000)] 
zh_TW.po: remove several fuzzy tags after review

8 years agodeb822: Restore support for <multivalue>-{Add,Remove}
James McCoy [Wed, 20 Apr 2016 02:27:21 +0000 (22:27 -0400)] 
deb822: Restore support for <multivalue>-{Add,Remove}

Redesign of multivalue options in 463c8d801595ce5ac94d7c032264820be7434232
caused the parser to look for <multivalue>{Add,Remove} (no hyphen)
instead of the expected <multivalue>-{Add,Remove}.

8 years agofactor out Pkg/DepIterator prettyprinters into own header
David Kalnischkies [Thu, 28 Apr 2016 07:22:55 +0000 (09:22 +0200)] 
factor out Pkg/DepIterator prettyprinters into own header

The old prettyprinters have only access to the struct they pretty print,
which isn't enough usually as we want to know for a package also a bit
of state information like which version is the candidate.

We therefore need to pull the DepCache into context and hence use a
temporary struct which is printed instead of the iterator itself.

8 years agodeprecate confusing Pkg.CandVersion() method
David Kalnischkies [Thu, 28 Apr 2016 07:06:39 +0000 (09:06 +0200)] 
deprecate confusing Pkg.CandVersion() method

This method does not return the 'current' candidate of the DepCache
which would be most expected, but instead returns the version which
would be candidate in a default-only policy setting – aka ignoring
apt_preferences settings and co.

8 years agorespect user pinning in M-A:same version (un)screwing
David Kalnischkies [Wed, 27 Apr 2016 17:39:02 +0000 (19:39 +0200)] 
respect user pinning in M-A:same version (un)screwing

Using Pkg.CandVersion() here is wrong as its implementation will return
a candidate based just on the default policy settings ignoring user
preferences and otherwise set candidates (aka: it sidesteps the
pkgDepCache).

This causes M-A:same libraries to be detected as screwed even through
they aren't, so that they end up being kept back.

Reported-By: Felipe Sateler on IRC
8 years agoFileFd: avoid further writing if file failed
David Kalnischkies [Wed, 27 Apr 2016 11:41:31 +0000 (13:41 +0200)] 
FileFd: avoid further writing if file failed

If the file is in a failed state there is no point in trying to flush
out the buffers as the file is to be discarded anyhow & its likely all
this flushing is producing is additional error messages.

Git-Dch: Ignore

8 years agoMerge branch 'fix-https-noproxy' of github.com:patcable/apt
Julian Andres Klode [Wed, 27 Apr 2016 21:24:51 +0000 (23:24 +0200)] 
Merge branch 'fix-https-noproxy' of github.com:patcable/apt

8 years agorefactored no_proxy code to work regardless of where https proxy is set
Patrick Cable [Wed, 27 Apr 2016 20:55:55 +0000 (16:55 -0400)] 
refactored no_proxy code to work regardless of where https proxy is set

when using the https transport mechanism, $no_proxy is ignored if apt is
getting it's proxy information from $https_proxy (as opposed to
Acquire::https::Proxy somewhere in apt config). if the source of proxy
information is Acquire::https::Proxy set in apt.conf (or apt.conf.d),
then $no_proxy is honored.

8 years agoprivate-show: Get rid of old policy support code
Julian Andres Klode [Mon, 25 Apr 2016 19:58:10 +0000 (21:58 +0200)] 
private-show: Get rid of old policy support code

This does not make much sense anymore, now that we dropped the
old candidate ver algorithm.

8 years agopolicy: Remove TODO for replacing old GetCandidateVer()
Julian Andres Klode [Mon, 25 Apr 2016 19:50:20 +0000 (21:50 +0200)] 
policy: Remove TODO for replacing old GetCandidateVer()

Gbp-Dch: ignore

8 years agopolicy: Get rid of old (pre-1.1) GetCandidateVer algorithm
Julian Andres Klode [Mon, 25 Apr 2016 14:07:28 +0000 (16:07 +0200)] 
policy: Get rid of old (pre-1.1) GetCandidateVer algorithm

Bye bye old friend. You're in one Ubuntu LTS release for compat
testing, now we do not need you anymore.

8 years agorestore pinning to min/max value of short
David Kalnischkies [Mon, 25 Apr 2016 14:30:43 +0000 (16:30 +0200)] 
restore pinning to min/max value of short

Broken in the previous commit (69cea1ef2cfda3c4da79fd756a8edaf2be26998e).
Adding a test and a comment to avoid future embarrassment.

Git-Dch: Ignore
Reported-By: Julian Andres Klode on IRC
8 years agogive rc-status packages a pin of -1
David Kalnischkies [Mon, 25 Apr 2016 12:36:56 +0000 (14:36 +0200)] 
give rc-status packages a pin of -1

It would previously return a pin of 0, which is an invalid value, but
the intend is that versions which are only in the dpkg/status file can't
be selected for installation (= can't be a candidate) which is what a
negative pin assures.

This helps with the communication to EDSP solvers as they neither know
about the rc-state (yet) nor that they shouldn't choose this version.
Ideally they shouldn't be told about such versions at all as there is
nothing to be solved here, but we will get there eventually.

8 years agoedsp: ask policy engine for the pin of the version directly
David Kalnischkies [Mon, 25 Apr 2016 11:26:08 +0000 (13:26 +0200)] 
edsp: ask policy engine for the pin of the version directly

8 years agouse the same redirection mirror for all index files
David Kalnischkies [Fri, 15 Apr 2016 22:07:28 +0000 (00:07 +0200)] 
use the same redirection mirror for all index files

Redirection services like httpredir.debian.org tend to use a set of
mirrors from which they pick a mirror at "random" for each requested
file, which is usually benefitial for the download of debs, but for the
index files this can quickly cause problems (aka hashsum mismatches) if
the two (or more) mirrors involved are only slightly out-of-sync.

This commit "resolves" this issue by using the mirror we ended up using
to get the (signed) Release file directly to get the index files
belonging to this Release file instead of asking the redirection
service which eliminates the risk of hitting out-of-sync mirrors.

As an obvious downside the redirection service can't serve partial
mirrors anymore for indexes and the download of indexes indexed in the
same Release file can't be done in parallel (from different mirrors).

This does not effect the download of non-index files like deb-files as
out-of-sync mirrors aren't a huge problem there, so the parallel
download outweights a potentially 404 error (also because this causes no
errenous downloads while hashsum mismatches download the entire file
before finding out that it was pointless).

The rational for this is that indexes are relative to the Release file.
If we would be talking about a HTML page including images, such a
behaviour is obvious and intended – not doing it means in the best case
a bunch of "useless" requests which will all be answered with a
redirect.

8 years agoshow more details for "Writing more data" errors, too
David Kalnischkies [Sun, 24 Apr 2016 08:35:08 +0000 (10:35 +0200)] 
show more details for "Writing more data" errors, too

They are the small brothers of the hashsum mismatch, so they deserve a
similar treatment even through we have for architectual reasons not a
much to display as for hashsum mismatches for now.

8 years agoshow more details for "Hash Sum mismatch" errors
David Kalnischkies [Sat, 12 Mar 2016 19:29:04 +0000 (20:29 +0100)] 
show more details for "Hash Sum mismatch" errors

Users tend to report these errors with just this error message… not very
actionable and hard to figure out if this is a temporary or 'permanent'
mirror-sync issue or even the occasional apt bug.

Showing the involved hashsums and modification times should help in
triaging these kind of bugs – and eventually we will have less of them
via by-hash.

The subheaders aren't marked for translation for now as they are
technical glibberish and probably easier to deal with if not translated.
After all, our iconic "Hash Sum mismatch" is translated at least.

These additions were proposed in #817240 by Peter Palfrader.

8 years agoformat multiline errors properly in acquire progress
David Kalnischkies [Sat, 12 Mar 2016 17:05:55 +0000 (18:05 +0100)] 
format multiline errors properly in acquire progress

Together with the GlobalError change this allows us to add errors
spanning multiple lines, just that we control GlobalError while the
acquire progress is dealt with potentially by individual clients which
might or might not need to be adapted.

This isn't critical through as it either just works as expected anyhow
or is a minor styling thing (after all, all this commit does it add two
spaces to indent the lines a bit…).

8 years agodrop empty line from fetch error
David Kalnischkies [Sat, 12 Mar 2016 16:36:01 +0000 (17:36 +0100)] 
drop empty line from fetch error

This is a duplicate of sorts of 0efb29eb36184bbe6de7b1013d1898796d94b171
which is the a lot more frequent case of this error – and also a
duplicate of this error message, just without the \n at the end.

Git-Dch: Ignore

8 years agoproperly format multiline error messages
David Kalnischkies [Sat, 12 Mar 2016 14:49:54 +0000 (15:49 +0100)] 
properly format multiline error messages

8 years agosanify unused ReportMirrorFailure a tiny bit
David Kalnischkies [Sat, 12 Mar 2016 10:43:16 +0000 (11:43 +0100)] 
sanify unused ReportMirrorFailure a tiny bit

Calling the (non-existent) reporter multiple times for the same error
with different codes for the same error (e.g. hashsum) is a bit strange.
It also doesn't need to be a public API. Ideally that would all look and
behave slightly different, but we will worry about that at the time this
is actually (planed to be) used somewhere…

Git-Dch: Ignore

8 years agodon't ask server if we have entire file in partial/
David Kalnischkies [Thu, 7 Apr 2016 15:48:17 +0000 (17:48 +0200)] 
don't ask server if we have entire file in partial/

We have this situation in cases were parts of the transaction are
refused (e.g. in a hashsum mismatch) and rerun the update (e.g. in the
hope that we get a mirror which is synced this time).

Previously we would ask the server with an if-range and in the best case
recieve a 416 in response (less featureful server might end up giving us
the entire file again or we get the wrong file this time giving us a
hashsum mismatch…), which is a waste of time if we know already by
checking the hashsums that we got the complete and correct file.

8 years agoadd dep11 files to default Release patterns
David Kalnischkies [Tue, 5 Apr 2016 18:37:57 +0000 (20:37 +0200)] 
add dep11 files to default Release patterns

8 years agomake random acquire queues work less random
David Kalnischkies [Wed, 6 Apr 2016 10:50:26 +0000 (12:50 +0200)] 
make random acquire queues work less random

Queues feeding workers like rred are created in a random pattern to get
a few of them to run in parallel – but if we already have an idling queue
we don't need to assign it to a (potentially new) random queue as that
saves us the (agruably small) overhead of starting up a new queue,
avoids adding jobs to an already busy queue while others idle and as
a bonus reduces the size of debug logs a bit.

We also keep starting new queues now until we reach our limit before
we assign work at random to them, which should give us a more effective
utilisation overall compared to potentially adding work to busy queues
while we haven't reached our queue limit yet.

8 years agoRelease 1.2.11 1.2.11
Julian Andres Klode [Mon, 25 Apr 2016 13:24:02 +0000 (15:24 +0200)] 
Release 1.2.11

8 years agoensure outdated files are dropped without lists-cleanup
David Kalnischkies [Thu, 14 Apr 2016 20:02:07 +0000 (22:02 +0200)] 
ensure outdated files are dropped without lists-cleanup

Tested via (newly) empty index files, but effects also files dropped
from the repository or an otherwise changed repository config.

8 years agosilently skip acquire of empty index files
David Kalnischkies [Thu, 14 Apr 2016 15:32:17 +0000 (17:32 +0200)] 
silently skip acquire of empty index files

There is just no point in taking the time to acquire empty files –
especially as it will be tiny non-empty compressed files usually.

8 years agoallow uncompressed files to be empty in store again
David Kalnischkies [Thu, 14 Apr 2016 14:16:06 +0000 (16:16 +0200)] 
allow uncompressed files to be empty in store again

With the previous fix for file applied we can again hit repositories
which contain uncompressed empty files, which since the introduction of
the central store: method wasn't accounted for anymore as we forbid
empty compressed files.

8 years agofix Alt-Filename handling of file method
David Kalnischkies [Thu, 14 Apr 2016 14:01:56 +0000 (16:01 +0200)] 
fix Alt-Filename handling of file method

A silly of-by-one error in the stripping of the extension to check for
the uncompressed filename broken in an attempt to support all
compressions in commit a09f6eb8fc67cd2d836019f448f18580396185e5.

Fixing this highlights also mistakes in the handling of the Alt-Filename
in libapt which would cause apt to remove the file from the repository
(if root has the needed rights – aka the disk isn't readonly or similar)

8 years agorecheck Pre-Depends satisfaction in SmartConfigure
David Kalnischkies [Wed, 13 Apr 2016 14:24:12 +0000 (16:24 +0200)] 
recheck Pre-Depends satisfaction in SmartConfigure

Regression introduced in commit 590f1923121815b36ef889033c1c416a23cbe9a2
(2011!) causing apt to not check if Pre-Depends are satisfied before
calling --configure. This managed to hide so perfectly well for years as
Pre-Depends aren't that common, apt prefers upgrading these packages
first and checks for satisfaction is already in SmartUnpack, so there
is only a small window of oppertunity to break a pre-dependency relation
(usually with an unpack).

Verified by logchecking with two provided status files in the buglog.
I would have liked to write a test, but I wasn't able to reach the needed
complexity to get apt to fail – but the change is small and reasonable,
so what could possible go wrong™, right?

LP: #1569099

8 years agodetect compressed status files on extension again
David Kalnischkies [Wed, 13 Apr 2016 13:28:33 +0000 (15:28 +0200)] 
detect compressed status files on extension again

It handy to be able to point apt at reading a compressed dpkg/status
file in debugging cases, which worked pre-1.1 but somewhere down the
line in the massive refactoring. Restoring this behavior in a central
place for all realfile index files instead of just for the status file.

(This has no effect on index files acquired from an archive – those are
handled by different classes and support compressed files just fine)

8 years agoHungarian program translation update
Kelemen Gábor [Mon, 11 Apr 2016 06:36:58 +0000 (08:36 +0200)] 
Hungarian program translation update

Closes: 820638
8 years agodo not require non-broken systems in 'upgrade'
David Kalnischkies [Fri, 8 Apr 2016 10:50:08 +0000 (12:50 +0200)] 
do not require non-broken systems in 'upgrade'

There is a good chance that the attempt will fail, but if a user
mentions certain packages explicitly on the commandline there is a
chance that this will consist of a broken system which is resolved
by upgrading more packages then just the mentioned.

This limitation was not effecting external resolvers.

8 years agowebserver: 416 errors aren't closing connections
David Kalnischkies [Wed, 6 Apr 2016 14:00:11 +0000 (16:00 +0200)] 
webserver: 416 errors aren't closing connections

Breaking here lets our handler die which a client will fix by
reconnecting… but that eats time needlessly and is simple the wrong
handling, too.

Git-Dch: Ignore

8 years agostop handling items in doomed transactions
David Kalnischkies [Tue, 5 Apr 2016 23:08:57 +0000 (01:08 +0200)] 
stop handling items in doomed transactions

With the previous commit we track the state of transactions, so we can
now use our knowledge to avoid processing data for a transaction which
was already closed (via an abort in this case).

This is needed as multiple independent processes are interacting in the
process, so there isn't a simple immediate full-engine stop and it would
also be bad to teach each and every item how to check if its manager
has failed subordinate and what to do in that case.

In the pdiff case, which deals (potentially) with many items during its
lifetime e.g. a hashsum mismatch in another file can abort the
transaction the file we try to patch via pdiff belongs to. This causes
some of the items (which are already done) to be aborted with it, but
items still in the process of acquisition continue in the processing and
will later try to use all the items together failing in strange ways as
cleanup already happened.

The chosen solution is to dry up the communication channels instead by
ignoring new requests for data acquisition, canceling requests which are
not assigned to a queue and not calling Done/Failed on items anymore.
This means that e.g. already started or pending (e.g. pipelined)
downloads aren't stopped and continue as normal for now, but they remain
in partial/ and aren't processed further so the next update command will
pick them up and put them to good use while the current process fails
updating (for this transaction group) in an orderly fashion.

Closes: 817240
Thanks: Barr Detwix & Vincent Lefevre for log files

8 years agoensure transaction states are changed only once
David Kalnischkies [Tue, 5 Apr 2016 18:56:56 +0000 (20:56 +0200)] 
ensure transaction states are changed only once

We want to keep track of the state of a transaction overall to base
future decisions on it, but as a pre-requirement we have to make sure
that a transaction isn't commited twice (which happened if the download
of InRelease failed and Release takes over).

It also happened to create empty commits after a transaction was already
aborted in cases in which the Release files were rejected.

This isn't effecting security at the moment, but to ensure this isn't
happening again and can never be bad a bunch of fatal error messages are
added to make regressions on this front visible.

8 years agoreleasing package apt version 1.2.10 1.2.10
Michael Vogt [Tue, 5 Apr 2016 18:24:43 +0000 (20:24 +0200)] 
releasing package apt version 1.2.10

8 years agoFix `OnCalendar=*-*-* 6,18:00` instead of `OnCalendar=*-*-* 6:00,18:00`
Michael Vogt [Mon, 4 Apr 2016 14:52:27 +0000 (16:52 +0200)] 
Fix `OnCalendar=*-*-* 6,18:00` instead of `OnCalendar=*-*-* 6:00,18:00`

See https://github.com/systemd/systemd/issues/2956 - it appears that
`OnCalendar=*-*-* 6,18:00` and `OnCalendar=*-*-* 6:00,18:00` are
quite different.

Git-Dch: ignore

8 years agoJapanese program translation update
Takuma Yamada [Mon, 4 Apr 2016 09:50:04 +0000 (11:50 +0200)] 
Japanese program translation update

Closes: 819938
8 years agodon't leak on error in listparser creation
David Kalnischkies [Fri, 25 Mar 2016 12:08:06 +0000 (13:08 +0100)] 
don't leak on error in listparser creation

Git-Dch: Ignore
Reported-By: gcc -fsanitize=address
8 years agouse buffered writing for InRelease splitting
David Kalnischkies [Fri, 25 Mar 2016 11:15:00 +0000 (12:15 +0100)] 
use buffered writing for InRelease splitting

Hardly noticeable, but given that we have the option to easily enable
it, lets enable it as every newline in the message is written
individually by the code.

8 years agoconsistently add APT_OVERRIDE as method marker
David Kalnischkies [Fri, 25 Mar 2016 11:11:56 +0000 (12:11 +0100)] 
consistently add APT_OVERRIDE as method marker

Some methods had it missing, some used the keyword directly, which isn't
a problem as it is a cc file, but for consistency lets stick to our
macro for now.

Git-Dch: Ignore

8 years agoUse systemd.timer instead of a cron job
Michael Vogt [Thu, 17 Mar 2016 07:56:58 +0000 (08:56 +0100)] 
Use systemd.timer instead of a cron job

The rational is that we need to spread the load on the mirrors
that apt update and unattended-upgrades cause. To do so, we
leverage the RandomizeDelay feature of systemd. The other advantage
is that the timer is not run at a fixed daily.daily time but
instead every 24h. This also fixes the problem that the randomized
deplay in the current apt.cron.daily causes other cron jobs to
be deplayed.

A compatibility cron job is also provided for systems that do not
use systemd.

Note that the time is fired two times a day, but the logic inside
of apt.systemd.daily will ensure (via stamp files) that the
servers are hit at most every 24h. Firing two times a day helps
with the worst case update time and it also helps with systems
that are not always on.

LP: #246381, #727685
Closes: #600262, #709675, #663290
8 years agoAllow lowering trust level of a hash via config
Julian Andres Klode [Mon, 28 Mar 2016 01:34:54 +0000 (03:34 +0200)] 
Allow lowering trust level of a hash via config

Introduces APT::Hashes::<NAME> with entries Untrusted and Weak
which can be set to true to cause the hash to be treated as
untrusted and/or weak.

8 years agotest-apt-update-reporting: Make more use of framework
Julian Andres Klode [Sun, 27 Mar 2016 13:12:05 +0000 (15:12 +0200)] 
test-apt-update-reporting: Make more use of framework

Use msgtest and testsuccess with a function instead of failing
with a simple exit 1. This looks nicer.

Gbp-Dch: ignore

8 years agotest-acquire-same-file-multiple-times: Delete files before retrying
Julian Andres Klode [Sun, 27 Mar 2016 10:37:09 +0000 (12:37 +0200)] 
test-acquire-same-file-multiple-times: Delete files before retrying

This gets rid of byte-range requests and 416 responses.

Gbp-Dch: ignore

8 years agotest-apt-download-progress: Use a larger file for testing
Julian Andres Klode [Sun, 27 Mar 2016 09:27:27 +0000 (11:27 +0200)] 
test-apt-download-progress: Use a larger file for testing

This should make the test less flaky, as with a small file,
we might have already received all the data before trying
to apply rate limits which is a constant source of failure
on the i386 Ubuntu autopkgtest.

8 years agozh_CN.po: update simplified Chinese translation. (100%)
Zhou Mo [Sun, 27 Mar 2016 07:46:18 +0000 (07:46 +0000)] 
zh_CN.po: update simplified Chinese translation. (100%)

8 years agoRelease 1.2.9 1.2.9
Julian Andres Klode [Sun, 27 Mar 2016 00:28:12 +0000 (01:28 +0100)] 
Release 1.2.9

8 years agoDo not mark packages for keep that we want to remove
Julian Andres Klode [Sat, 26 Mar 2016 23:20:05 +0000 (00:20 +0100)] 
Do not mark packages for keep that we want to remove

If the package is marked for removal, keep it marked for
removal and do not mark it for keep. If we mark it for keep,
we some how later get to a different stage where it is marked
for unpack instead of removal.

In the example in the bug report, we would get a:

 SmartUnPack maas-region-controller-min:amd64 (replace version 2.0.0~alpha3+bzr4810-0ubuntu1 with Segmentation fault

maas-region-controller-min:amd64 was marked for removal, but
we changed it to keep and somehow it thinks that this is to
be replaced now instead of removed (probably because the
InstallVer != CandidateVer [with InstallVer = 0]).

This fixes a regression introduced in release 1.2.7, commit:
  0390edd5452b081f8efcf412f96d535a1d959457

Reported-by: LaMont Jones on IRC
LP: #1562402

8 years agodrop confusing comma from no strong hash message
David Kalnischkies [Fri, 25 Mar 2016 08:31:42 +0000 (09:31 +0100)] 
drop confusing comma from no strong hash message

8 years agoRelease 1.2.8 1.2.8
Julian Andres Klode [Thu, 24 Mar 2016 18:31:51 +0000 (19:31 +0100)] 
Release 1.2.8

8 years agoUpdate symbols file
Julian Andres Klode [Thu, 24 Mar 2016 14:15:46 +0000 (15:15 +0100)] 
Update symbols file

8 years agoSet hidden visibility for StringView
Julian Andres Klode [Thu, 24 Mar 2016 14:11:05 +0000 (15:11 +0100)] 
Set hidden visibility for StringView

This avoids templates using StringView to be exported, such as
std::vector<StringView*>::emplace_back().

Gbp-Dch: ignore

8 years agoJapanese manpage translation update
Takuma Yamada [Tue, 22 Mar 2016 10:51:27 +0000 (11:51 +0100)] 
Japanese manpage translation update

Closes: 818950
8 years agohandle gpgv's weak-digests ERRSIG
David Kalnischkies [Tue, 22 Mar 2016 00:26:29 +0000 (01:26 +0100)] 
handle gpgv's weak-digests ERRSIG

Our own gpgv method can declare a digest algorithm as untrusted and
handles these as worthless signatures. If gpgv comes with inbuilt
untrusted (which is called weak in official terminology) which it e.g.
does for MD5 in recent versions we should handle it in the same way.

To check this we use the most uncommon still fully trusted hash as a
configureable one via a hidden config option to toggle through all of
the three states a hash can be in.

8 years agoproperly check for "all good sigs are weak"
David Kalnischkies [Mon, 21 Mar 2016 17:47:10 +0000 (18:47 +0100)] 
properly check for "all good sigs are weak"

Using erase(pos) is invalid in our case here as pos must be a valid and
derefenceable iterator, which isn't the case for an end-iterator (like
if we had no good signature).
The problem runs deeper still through as VALIDSIG is a keyid while
GOODSIG is just a longid so comparing them will always fail.

Closes: 818910
8 years agorefactor loading of previous release file
David Kalnischkies [Thu, 17 Mar 2016 11:10:37 +0000 (12:10 +0100)] 
refactor loading of previous release file

There is really no need to have the same code three times.

Git-Dch: Ignore

8 years agotests: reenable basic auth test and add @ in username
David Kalnischkies [Fri, 18 Mar 2016 10:37:31 +0000 (11:37 +0100)] 
tests: reenable basic auth test and add @ in username

On launchpad #1558484 a user reports that @ in the authentication tokens
parsing of sources.list isn't working in an older (precise) version. It
isn't the recommended way of specifying passwords and co (auth.conf is),
but we can at least test for regressions (and in this case test at all…
who was that "clever" boy disabling a test with exit……… oh, nevermind.

Git-Dch: Ignore

8 years agozh_CN.po: update simplified Chinese translation. (Closes: #818639)
Zhou Mo [Sat, 19 Mar 2016 07:53:48 +0000 (07:53 +0000)] 
zh_CN.po: update simplified Chinese translation. (Closes: #818639)

100% translated.
Note: this commit contains a message from the future. #818639

8 years agocachefile: Only set members that were initialized successfully
Julian Andres Klode [Sat, 19 Mar 2016 00:56:38 +0000 (01:56 +0100)] 
cachefile: Only set members that were initialized successfully

Otherwise, things will just start failing later down the stack,
because (a) the lazy getters do not check if building was successful
and (b) any further getter call would return the invalid object
anyway.

Also initialize VS in pkgCache to nullptr by default.

Closes: #818628
8 years agozh_CN.po: update simplified chinese translation.
Zhou Mo [Sat, 19 Mar 2016 02:00:45 +0000 (02:00 +0000)] 
zh_CN.po: update simplified chinese translation.

Note, 0 untran, 1 fuzzy, and the fuzzy string remains at Bug#818639.

8 years agotest framework: Pass -n to lsof to speed up finding the https port
Julian Andres Klode [Thu, 17 Mar 2016 11:49:03 +0000 (12:49 +0100)] 
test framework: Pass -n to lsof to speed up finding the https port

There is no point in resolving all addresses to their names, this
just seriously slows the setup phase down. So just pass -n to not
resolve names anymore.

Gbp-Dch: ignore

8 years agotest-acquire-same-file-multiple-times: Run failing test up to 10 times
Julian Andres Klode [Thu, 17 Mar 2016 11:28:51 +0000 (12:28 +0100)] 
test-acquire-same-file-multiple-times: Run failing test up to 10 times

This should make the test less flaky and hopefully fix the failure
on Ubuntu's armhf CI nodes.

Gbp-Dch: ignore

8 years agoMake test-apt-download-progress less flaky
Julian Andres Klode [Thu, 17 Mar 2016 10:56:31 +0000 (11:56 +0100)] 
Make test-apt-download-progress less flaky

The test is a bit flaky. In order to get it less flaky, reduce
the speed in each run. To compensate for issues, start with a
higher speed level. Also increase the number of runs to 10.

Furthermore, http get the same multiple-run loop, and the log
files are changed to indicate the protocol being tested, as it's
not obvious which one fails if it fails in quiet mode.

Gbp-Dch: ignore

8 years agodo not strip epochs from state version strings
David Kalnischkies [Wed, 16 Mar 2016 21:32:48 +0000 (22:32 +0100)] 
do not strip epochs from state version strings

The epoch stripping in this code is done since day one, but in other
places we show a version epochs are not stripped. If epochs are present
in packages they tend to be an important information which we can't just
drop and especially can't drop "sometimes" as that confuses users and
tools alike – so even if removing code in use for (close to) 18 years
feels wrong, it is probably the right choice for consistency.

Closes: 818162
8 years agoMake the weak signature message less ambigious
Julian Andres Klode [Wed, 16 Mar 2016 19:02:53 +0000 (20:02 +0100)] 
Make the weak signature message less ambigious

There was a complaint that, in the previous message,
the key fingerprint could be mistaken for a SHA1 digest
due to the (SHA1) after it.

Gbp-Dch: ignore

8 years agoUse descriptive URIs in 104 Warning messages
Julian Andres Klode [Wed, 16 Mar 2016 17:31:26 +0000 (18:31 +0100)] 
Use descriptive URIs in 104 Warning messages

This makes the new GPG related warnings much nicer to read,
for example, the second one here replaces the first one:

W: gpgv:/var/lib/apt/lists/example.com_dists_stable_InRelease: Weak ...
W: http://example.com/dists/stable/InRelease: Weak ...

8 years agomethods/gpgv: Rewrite error handling and message
Julian Andres Klode [Wed, 16 Mar 2016 15:54:05 +0000 (16:54 +0100)] 
methods/gpgv: Rewrite error handling and message

This should be easy to extend in the future and allow us to simplify
the error handling cases somewhat.

Thanks: Ron Lee for wording suggestions

8 years agoReport non-transient errors as errors, not as warnings
Julian Andres Klode [Wed, 16 Mar 2016 15:46:39 +0000 (16:46 +0100)] 
Report non-transient errors as errors, not as warnings

This makes it easier to understand what really is an error
and what not.

8 years agoGet accurate progress reporting in apt update again
Michael Vogt [Tue, 15 Mar 2016 13:50:37 +0000 (14:50 +0100)] 
Get accurate progress reporting in apt update again

For the non-pdiff case, we have can have accurate progress
reporting because after fetching the {,In}Release files we know
how many IndexFiles will be fetched and what size they have.

Therefore init the filesize early (in pkgAcqIndex::Init) and
ensure that in Acquire::Pulse() looks at already downloaded
bits when calculating the progress in Acquire::Pulse.

Also improve debug output of Debug::acquire::progress

8 years agotests: fix parallel execution to be working dir independent
David Kalnischkies [Wed, 16 Mar 2016 16:41:11 +0000 (17:41 +0100)] 
tests: fix parallel execution to be working dir independent

Git-Dch: Ignore

8 years agoRelease 1.2.7 1.2.7
Julian Andres Klode [Tue, 15 Mar 2016 18:20:35 +0000 (19:20 +0100)] 
Release 1.2.7

8 years agoFix bug where the problemresolve can put a pkg into a heisenstate
Michael Vogt [Tue, 15 Mar 2016 12:13:54 +0000 (13:13 +0100)] 
Fix bug where the problemresolve can put a pkg into a heisenstate

The problemresolver will set the candidate version for pkg P back
to the current version if it encounters an impossible to satisfy
critical dependency on P. However it did not set the State of
the package back as well which lead to a situation where P is
neither in Keep,Install,Upgrade,Delete state.

Note that this can not be tested via the traditional sh based
framework. I added a python-apt based test for this.

LP: #1550741

[jak@debian.org: Make the test not fail if apt_pkg cannot be
 imported]

8 years agomethods/gpgv: Warn about SHA1 (and RIPEMD-160)
Julian Andres Klode [Tue, 15 Mar 2016 11:30:37 +0000 (12:30 +0100)] 
methods/gpgv: Warn about SHA1 (and RIPEMD-160)

We will drop support for those in the future.

Also adjust the std::array to be a std::vector, as that's easier to
maintain.

8 years agoapt-pkg/acquire-worker.cc: Introduce 104 Warning message
Julian Andres Klode [Tue, 15 Mar 2016 10:40:10 +0000 (11:40 +0100)] 
apt-pkg/acquire-worker.cc: Introduce 104 Warning message

This can be used by workers to send warnings to the main
program. The messages will be passed to _error->Warning()
by APT with the URI prepended.

We are not going to make that really public now, as the
interface might change a bit.

8 years agomethods/gpgv: Correctly handle weak signatures with multiple keys
Julian Andres Klode [Tue, 15 Mar 2016 09:56:05 +0000 (10:56 +0100)] 
methods/gpgv: Correctly handle weak signatures with multiple keys

We added weak signatures to BadSigners, meaning that a Release file
signed by both a weak signature and a strong signature would be
rejected; preventing people from migrating from DSA to RSA keys
in a sane way.

Instead of using BadSigners, treat weak signatures like expired
keys: They are no good signatures, and they are worthless.

Gbp-Dch: ignore