]> git.saurik.com Git - apt.git/log
apt.git
9 years agosrv test: do 100 pulls twice and compare list
David Kalnischkies [Fri, 11 Sep 2015 23:23:01 +0000 (01:23 +0200)] 
srv test: do 100 pulls twice and compare list

The previous implementation was still a bit unstable in terms of failing
at times. Lets try if we have more luck with this one.

Git-Dch: Ignore

9 years agofix alloc-dealloc-mismatch (operator new [] vs operator delete)
David Kalnischkies [Fri, 11 Sep 2015 19:15:52 +0000 (21:15 +0200)] 
fix alloc-dealloc-mismatch (operator new [] vs operator delete)

Reported-By: gcc -fsanitize=address -fno-sanitize=vptr
Git-Dch: Ignore

9 years agofix two memory leaks reported by gcc
David Kalnischkies [Fri, 11 Sep 2015 19:02:19 +0000 (21:02 +0200)] 
fix two memory leaks reported by gcc

Reported-By: gcc -fsanitize=address -fno-sanitize=vptr
Git-Dch: Ignore

9 years agouse std-algorithms instead of manual loops to avoid overflow warning
David Kalnischkies [Fri, 11 Sep 2015 18:53:07 +0000 (20:53 +0200)] 
use std-algorithms instead of manual loops to avoid overflow warning

Reported-By: gcc
Understandable: no
Git-Dch: Ignore

9 years agodo not report deprecate warnings for the None declaration
David Kalnischkies [Fri, 11 Sep 2015 12:19:16 +0000 (14:19 +0200)] 
do not report deprecate warnings for the None declaration

This is defined for compatibility, warning about it is intended, but
only in places where it is actually used, rather than at the place we
declare it for compatability…

Git-Dch: Ignore

9 years agomove std=c++11 from CXXFLAGS to CXX
David Kalnischkies [Fri, 11 Sep 2015 23:26:17 +0000 (01:26 +0200)] 
move std=c++11 from CXXFLAGS to CXX

Setting CXXFLAGS like --coverage on the commandline fails if we set the
std too late, so if we set it with the compiler name we set it always
first. A bit hacky as it bends the expectation, but seems to work.

Git-Dch: Ignore

9 years agofix 'Dead assignment' by dropping unneeded boolean
David Kalnischkies [Thu, 10 Sep 2015 20:44:01 +0000 (22:44 +0200)] 
fix 'Dead assignment' by dropping unneeded boolean

Reported-By: scan-build
Git-Dch: Ignore

9 years agotests: use more 'native' instead of 'amd64' if possible
David Kalnischkies [Thu, 10 Sep 2015 19:10:17 +0000 (21:10 +0200)] 
tests: use more 'native' instead of 'amd64' if possible

The tests usually run on amd64 boxes, but once in a while I run it on a
(slow) armel box as well, which has its fair share of problems with some
tests, but at least the low hanging fruits can be dealt with: Do not
assume that amd64 is the native dpkg architecture – instead use whatever
dpkg thinks is native as architecture for the test.

Git-Dch: Ignore

9 years agoavoid using global PendingError to avoid failing too often too soon
David Kalnischkies [Thu, 10 Sep 2015 17:00:51 +0000 (19:00 +0200)] 
avoid using global PendingError to avoid failing too often too soon

Our error reporting is historically grown into some kind of mess.
A while ago I implemented stacking for the global error which is used in
this commit now to wrap calls to functions which do not report (all)
errors via return, so that only failures in those calls cause a failure
to propergate down the chain rather than failing if anything
(potentially totally unrelated) has failed at some point in the past.

This way we can avoid stopping the entire acquire process just because a
single source produced an error for example. It also means that after
the acquire process the cache is generated – even if the acquire
process had failures – as we still have the old good data around we can and
should generate a cache for (again).

There are probably more instances of this hiding, but all these looked
like the easiest to work with and fix with reasonable (aka net-positive)
effects.

9 years agouse a less generic special trigger filename for stdin
David Kalnischkies [Thu, 10 Sep 2015 16:46:05 +0000 (18:46 +0200)] 
use a less generic special trigger filename for stdin

Git-Dch: Ignore

9 years agoinclude debug information in the autoremove-kernels file
David Kalnischkies [Thu, 10 Sep 2015 08:03:40 +0000 (10:03 +0200)] 
include debug information in the autoremove-kernels file

Figuring out after the fact what went wrong in the kernel hook is kinda
hart, also as the bugreports are usually very lacking on the details
front. Collecting the internal variables in the debug output we attach
to the generated file might help shine some light on the matter.
It's at least not going to hurt…

9 years agodo not discard new manual-bits while applying EDSP solutions
David Kalnischkies [Wed, 9 Sep 2015 08:56:23 +0000 (10:56 +0200)] 
do not discard new manual-bits while applying EDSP solutions

In private-install.cc we call MarkInstall with FromUser=true, which sets
the bit accordingly, but while applying the EDSP solution we call mark
install on all packages with FromUser=false, so MarkInstall believes
this install is an automatic one and sets it to auto – so that a new package
which is explicitely installed via an external solver is marked as auto
and is hence also up for garbage collection in a following call.

Ideally MarkInstall wouldn't reset it, but the detection is hard to do
without regressing in other cases – and ideally ideally MarkInstall
wouldn't deal with the autobit at all – so we work around this on the
calling side for now.

9 years agoimplement autobit and pinning in EDSP solver 'apt'
David Kalnischkies [Tue, 8 Sep 2015 20:14:11 +0000 (22:14 +0200)] 
implement autobit and pinning in EDSP solver 'apt'

The parser creates a preferences as well as an extended states file
based on the EDSP scenario file, which isn't the most efficient way of
dealing with this as thes text files have to be parsed again by another
layer of the code, but it needs the least changes and works good enough
for now. The 'apt' solver is in the end just a test solver like dump.

9 years agoremove incorrect optimization branches
David Kalnischkies [Tue, 8 Sep 2015 11:58:55 +0000 (13:58 +0200)] 
remove incorrect optimization branches

These assumptions were once true, but they aren't anymore, so what is
supposed to be a speed up is effectively a slowdown [not that it would
be noticible].

Usage of SingleArchFindPkg was nuked in a stable update already as the
included assumption was actually harmful btw, which is why we should get
right of other 'non-harmful' but still untrue assumptions while we can.

Git-Dch: Ignore

9 years agoselect kernels to protect from autoremove based on Debian version
David Kalnischkies [Tue, 8 Sep 2015 10:49:04 +0000 (12:49 +0200)] 
select kernels to protect from autoremove based on Debian version

This is basically a rewrite of the script with the general idea of
finding the Debian version of the installed kernels – as multiple
flavours will have the same Debian version – select the two newest of
them and translate them back to versions found in package names.

This way we avoid e.g. kernel and kernel-rt to use up the protected
slots even through they are basically the same kernel (just a different
flavour) so it is likely that if kernel doesn't work for some reason,
kernel-rt will not either.

This also deals with foreign kernel packages, kernels on hold and partly
installed kernels (in case multiple kernels are installed in the same
apt run) in a hopefully sensible way.

Closes: 787827
9 years agocopy ReadWrite-error to the bottom to make clang happy
David Kalnischkies [Mon, 7 Sep 2015 19:14:55 +0000 (21:14 +0200)] 
copy ReadWrite-error to the bottom to make clang happy

clang detects that fd isn't set in the ReadWrite case – just that this
is supposed to be catched earlier in this method already, but it doesn't
hurt to make it explicit here as well and clang is happy, too.

Git-Dch: Ignore

9 years agofix insecure use of /tmp in EDSP solver 'dump'
David Kalnischkies [Mon, 7 Sep 2015 17:32:31 +0000 (19:32 +0200)] 
fix insecure use of /tmp in EDSP solver 'dump'

As said in the bugreport, this is hardly a serious problem on a security
front, but it was always on the list to have the filename configurable
somehow and the stable filename is a problem for parallel executions.

Using an environment variable (APT_EDSP_DUMP_FILENAME) for this is more
or less the best we can do here as solvers do not get told about our
configuration and such.

Closes: 795600
9 years agoimplement CopyFile without using FileFd::Size()
David Kalnischkies [Mon, 7 Sep 2015 17:10:21 +0000 (19:10 +0200)] 
implement CopyFile without using FileFd::Size()

Pipes and such have no good Size value, but we still want to copy from
it maybe and we don't really need size as we can just as well read as
long as we get data out of a file to copy it.

Git-Dch: Ignore

9 years agoadd Source-Version field for EDSP
David Kalnischkies [Mon, 7 Sep 2015 13:05:00 +0000 (15:05 +0200)] 
add Source-Version field for EDSP

The syntax of "Source" is different in EDSP compared to the the field of
the same name in 'the rest' of Debian, so documented this accordingly
and send the version as a new field.

9 years agoimplement dpkgs vision of interpreting pkg:<arch> dependencies
David Kalnischkies [Sun, 6 Sep 2015 11:32:07 +0000 (13:32 +0200)] 
implement dpkgs vision of interpreting pkg:<arch> dependencies

How the Multi-Arch field and pkg:<arch> dependencies interact was
discussed at DebConf15 in the "MultiArch BoF". dpkg and apt (among other
tools like dose) had a different interpretation in certain scenarios
which we resolved by agreeing on dpkg view – and this commit realizes
this agreement in code.

As was the case so far libapt sticks to the idea of trying to hide
MultiArch as much as possible from individual frontends and instead
translates it to good old SingleArch. There are certainly situations
which can be improved in frontends if they know that MultiArch is upon
them, but these are improvements – not necessary changes needed
to unbreak a frontend.

The implementation idea is simple: If we parse a dependency on foo:amd64
the dependency is formed on a package 'foo:amd64' of arch 'any'. This
package is provided by package 'foo' of arch 'amd64', but not by 'foo'
of arch 'i386'. Both of those foo packages provide each other through
(assuming foo is M-A:foreign) to allow a dependency on 'foo' to be
satisfied by either foo of amd64 or i386. Packages can also declare to
provide 'foo:amd64' which is translated to providing 'foo:amd64:any' as
well.

This indirection over provides was chosen as the alternative would be to
teach dependency resolvers how to deal with architecture specific
dependencies – which violates the design idea of avoiding resolver
changes, especially as architecture-specific dependencies are a
cornercase with quite a few subtil rules. Handling it all over versioned
provides as we already did for M-A in general seems much simpler as it
just works for them.

This switch to :any has actually a "surprising" benefit as well: Even
frontends showing a package name via .Name() [which doesn't show the
architecture] will display the "architecture" for dependencies in which
it was explicitely requested, while we will not show the 'strange' :any
arch in FullName(true) [= pretty-print] either. Before you had to
specialcase these and by default you wouldn't get these details shown.

The only identifiable disadvantage is that this complicates error
reporting and handling. apt-get's ShowBroken has existing problems with
virtual packages [it just shows the name without any reason], so that
has to be worked on eventually. The other case is that detecting if a
package is completely unknown or if it was at least referenced somewhere
needs to acount for this "split" – not that it makes a practical
difference which error is shown… but its one of the improvements
possible.

9 years agotests: allow to run (selfbuilt) dpkg under gdb
David Kalnischkies [Sun, 6 Sep 2015 10:35:17 +0000 (12:35 +0200)] 
tests: allow to run (selfbuilt) dpkg under gdb

Git-Dch: Ignore

9 years agoM-A: allowed pkgs of unconfigured archs do not statisfy :any
David Kalnischkies [Sat, 5 Sep 2015 11:29:50 +0000 (13:29 +0200)] 
M-A: allowed pkgs of unconfigured archs do not statisfy :any

We parse all architectures we encounter recently, which means we also
parse packages from architectures which are neither native nor foreign,
but still came onto the system somehow (usually via heavy force).

9 years agostore ':any' pseudo-packages with 'any' as architecture
David Kalnischkies [Sat, 5 Sep 2015 10:58:04 +0000 (12:58 +0200)] 
store ':any' pseudo-packages with 'any' as architecture

Previously we had python:any:amd64, python:any:i386, … in the cache and
the dependencies of an amd64 package would be on python:any:amd64, of an
i386 on python:any:i386 and so on. That seems like a relatively
pointless endeavor given that they will all be provided by the same
packages and therefore also a waste of space.

Git-Dch: Ignore

9 years agotests: refactor printing of the quiet failure header
David Kalnischkies [Fri, 4 Sep 2015 09:44:51 +0000 (11:44 +0200)] 
tests: refactor printing of the quiet failure header

Git-Dch: Ignore

9 years agotests: store msgmsg message for display in fail as well
David Kalnischkies [Fri, 4 Sep 2015 09:31:36 +0000 (11:31 +0200)] 
tests: store msgmsg message for display in fail as well

Git-Dch: Ignore

9 years agotests: -y is the default on travis, but not on other ci's
David Kalnischkies [Thu, 3 Sep 2015 17:25:28 +0000 (19:25 +0200)] 
tests: -y is the default on travis, but not on other ci's

Git-Dch: Ignore

9 years agopo: Sort domains
Julian Andres Klode [Mon, 14 Sep 2015 10:35:28 +0000 (12:35 +0200)] 
po: Sort domains

This should make things even more predictable.

Gbp-Dch: ignore

9 years agoSort pot input files
Michael Vogt [Sat, 12 Sep 2015 09:06:34 +0000 (11:06 +0200)] 
Sort pot input files

Git-Dch: ignore

9 years agoUse xgettext --no-location in make update-pot
Michael Vogt [Sat, 12 Sep 2015 06:46:39 +0000 (08:46 +0200)] 
Use xgettext --no-location in make update-pot

This avoid the large diff we have that is mostly caused by the
line numbers changing in the po/pot files.

9 years agoreleasing package apt version 1.1~exp12 1.1.exp12
Michael Vogt [Fri, 11 Sep 2015 21:37:01 +0000 (23:37 +0200)] 
releasing package apt version 1.1~exp12

9 years agoapt-pkg/tagfile.h: Include stdint.h, fixes rdep build failures
Julian Andres Klode [Fri, 11 Sep 2015 19:54:22 +0000 (21:54 +0200)] 
apt-pkg/tagfile.h: Include stdint.h, fixes rdep build failures

9 years agoSet APT::FTPArchive::DoByHash to false by default
Michael Vogt [Mon, 7 Sep 2015 10:47:30 +0000 (12:47 +0200)] 
Set APT::FTPArchive::DoByHash to false by default

"apt-ftparchive release" will create the by-hash files if
this mode is enabled. This maybe unexpected by existing users
so make it a opt-in.

Git-Dch: ignore

9 years agoEnsure that no by-hash file for "Release/InRelease is written"
Michael Vogt [Mon, 7 Sep 2015 09:39:52 +0000 (11:39 +0200)] 
Ensure that no by-hash file for "Release/InRelease is written"

Git-Dch: ignore
Brown-paperbag: yes
Thanks: Donkult

9 years agoAdd support for writing by-hash dirs in apt-ftparchive
Michael Vogt [Fri, 4 Sep 2015 21:29:38 +0000 (23:29 +0200)] 
Add support for writing by-hash dirs in apt-ftparchive

This option is enabled via the APT::FTPArchive::DoByHash switch.
It will also honor the option APT::FTPArchive::By-Hash-Keep that
controls how many previous generation of by-hash files should be
kept (defaults to 3).

Merged from https://github.com/mvo5/apt/tree/feature/apt-ftparchive-by-hash

9 years agoavoid triggering the c++11 erase api change on travis
David Kalnischkies [Wed, 2 Sep 2015 10:35:22 +0000 (12:35 +0200)] 
avoid triggering the c++11 erase api change on travis

Git-Dch: Ignore

9 years agotests: collect more details about failed checkdiffs
David Kalnischkies [Wed, 2 Sep 2015 09:31:32 +0000 (11:31 +0200)] 
tests: collect more details about failed checkdiffs

Git-Dch: Ignore

9 years agouse clock() as source for SRV randomness
David Kalnischkies [Tue, 1 Sep 2015 16:32:22 +0000 (18:32 +0200)] 
use clock() as source for SRV randomness

Initializing a random number generator with the time since epoch could
be good enough, but reaches its limits in test code as the 100
iterations might very well happen in the same second and hence the seed
number is always the same… clock() has a way lower resolution so it
changes more often and not unimportant: If many users start the update
at the same time it isn't to unlikely the SRV record will be ordered in
the same second choosing the same for them all, but it seems less likely
that the exact same clock() time has passed for them.

And if I have to touch this, lets change a few other things as well to
make me and/or compilers a bit happier (clang complained about the usage
of a GNU extension in the testcase for example).

9 years agouse unusable-for-security hashes for integrity checks
David Kalnischkies [Tue, 1 Sep 2015 11:58:00 +0000 (13:58 +0200)] 
use unusable-for-security hashes for integrity checks

We want to declare some hashes as not enough for security, so that a
user will need --allow-unauthenticated or similar to get data secured
only by those hashes, but we can still us these hashes for integrity
checks if we got them.

9 years agoConsider md5sum no longer a usable hash
Michael Vogt [Tue, 1 Sep 2015 09:13:48 +0000 (11:13 +0200)] 
Consider md5sum no longer a usable hash

The md5sum hash is broken since some time and we should no longer
consider it a usable hash. Also update the tests to reflect this.

9 years agoimprove CheckDropPrivsMustBeDisabled further
David Kalnischkies [Tue, 1 Sep 2015 00:29:27 +0000 (02:29 +0200)] 
improve CheckDropPrivsMustBeDisabled further

Various smaller improvements so that the check deals better with already
downloaded files, relative paths and other things.

Git-Dch: Ignore

9 years agotravis: use -q mode to reduce the verbosity greatly
David Kalnischkies [Mon, 31 Aug 2015 21:52:30 +0000 (23:52 +0200)] 
travis: use -q mode to reduce the verbosity greatly

Git-Dch: Ignore

9 years agotest: show the highlevel test for lowerranking ones
David Kalnischkies [Mon, 31 Aug 2015 21:22:55 +0000 (23:22 +0200)] 
test: show the highlevel test for lowerranking ones

testsuccess checks the return code, but it does also some autotests
based on the command like grepping for dpkg warnings in a apt-get
install call – but if this finds something it is just showing the grep
command. With this change it will additionally show the first msgtest
which in this case will detail the actual apt-get install call.

Git-Dch: Ignore

9 years agotests: store msgtest in -q mode for display in msgfail
David Kalnischkies [Mon, 31 Aug 2015 19:00:56 +0000 (21:00 +0200)] 
tests: store msgtest in -q mode for display in msgfail

Not-quiet output is very verbose and with our growing array of tests
generates many many lines which e.g. kills the log display in travis-ci
and obscures failures and uncatched output in a wall of details.

The -q mode fixed this by callapsing passed tests to a single P and now
with some rework we can even get failures properly displayed with the
message from msgtest.

Git-Dch: Ignore

9 years agofix some unused parameter/variable warnings
David Kalnischkies [Mon, 31 Aug 2015 15:48:54 +0000 (17:48 +0200)] 
fix some unused parameter/variable warnings

Reported-By: gcc
Git-Dch: Ignore

9 years agotavis: run testcases a second time, but as root
David Kalnischkies [Mon, 31 Aug 2015 15:28:33 +0000 (17:28 +0200)] 
tavis: run testcases a second time, but as root

Git-Dch: Ignore

9 years agodo delay the test for http, too, to make it more reliable
David Kalnischkies [Mon, 31 Aug 2015 14:13:36 +0000 (16:13 +0200)] 
do delay the test for http, too, to make it more reliable

The file method was already slowed down and somehow I thought I had done
the same for http, but it turns out that I didn't. Giving it the same
delay as file should help in making this test slower and therefore more
likely to successfully test what it is supposed to test.

Git-Dch: Ignore

9 years agoremove Christian Perrier from Uploaders as requested
David Kalnischkies [Mon, 31 Aug 2015 12:27:04 +0000 (14:27 +0200)] 
remove Christian Perrier from Uploaders as requested

Closes: #783337
Thanks: Christian for all the l10n, code & social contributions!

9 years agoCzech program translation update
Miroslav Kure [Mon, 31 Aug 2015 11:15:13 +0000 (13:15 +0200)] 
Czech program translation update

Closes: 797329
9 years agofix valid-until-min typo in sources.list(5)
David Kalnischkies [Mon, 31 Aug 2015 09:42:15 +0000 (11:42 +0200)] 
fix valid-until-min typo in sources.list(5)

Git-Dch: Ignore

9 years agoif file is inaccessible for _apt, disable privilege drop in acquire
David Kalnischkies [Mon, 31 Aug 2015 09:00:12 +0000 (11:00 +0200)] 
if file is inaccessible for _apt, disable privilege drop in acquire

We had a very similar method previously for our own private usage, but
with some generalisation we can move this check into the acquire system
proper so that all frontends profit from this compatibility change.

As we are disabling a security feature here a warning is issued and
frontends are advised to consider reworking their download logic if
possible.

Note that this is implemented as an all or nothing situation: We can't
just (not) drop privileges for a subset of the files in a fetcher, so in
case you have to download some files with and some without you need to
use two fetchers.

9 years agoignore for _apt inaccessible TMPDIR in pkgAcqChangelog
David Kalnischkies [Mon, 31 Aug 2015 00:31:10 +0000 (02:31 +0200)] 
ignore for _apt inaccessible TMPDIR in pkgAcqChangelog

Using libpam-tmpdir caused us to create our download tmp directory in
root's private tmp before changing to _apt, which wouldn't have access
to it.

By extending our GetTempDir method with an optional wrapper changing the
effective user, we can test if a given user can access the directory and
ignore TMPDIR if not instead of ignoring TMPDIR completely.

Closes: 797270
9 years agodetect and deal with indextarget duplicates
David Kalnischkies [Sun, 30 Aug 2015 20:34:28 +0000 (22:34 +0200)] 
detect and deal with indextarget duplicates

Multiple targets downloading the same file is bad™ as it leads us to all
sorts of problems like the acquire system breaking or simply a problem
of which settings to use for them. Beside that this is most likely a
mistake and silently ignoring it doesn't help the user realizing his
mistake…

On the other hand, we have 'duplicates' which are 'created' by how we
create indextargets, so we have to prevent those from being created to
but do not emit a warning for them as this is an implementation detail.

And then, there is the absolute and most likely user mistake: Having the
same target(s) activated in multiple entries.

9 years agoimplement $(NATIVE_ARCHITECTURE) substvar for indextargets
David Kalnischkies [Sun, 30 Aug 2015 10:14:06 +0000 (12:14 +0200)] 
implement $(NATIVE_ARCHITECTURE) substvar for indextargets

9 years agotry xz instead of bz2 first for compressed files
David Kalnischkies [Sat, 29 Aug 2015 17:55:19 +0000 (19:55 +0200)] 
try xz instead of bz2 first for compressed files

xz has pretty much won "the compressor war" and e.g. the Debian archive
doesn't even distribute bz2 anymore in favor of 'xz' and 'gz', so by
changing the default order we have a more realistic --print-uris
behavior as it will always show the first compressor.

In practice this effects repositories without a Release file (very bad,
we don't want to support them anymore anyhow) as xz will be tried before
bz2 now [which is probably not available, but so might be bz2…] AND
repositories which provide both, bz2 and xz (which isn't too common) in
sofar as apt will now download xz instead of bz2.

Users with special needs can stick with bz2 as first compressor tried
with Acquire::CompressionTypes::Order:: "bz2"; (see man apt.conf) – but
users with special needs usually prefer "gz" anyhow, so the realworld
change is expected to be very low.

9 years agoimplement indextargets option 'DefaultEnabled'
David Kalnischkies [Sat, 29 Aug 2015 11:50:22 +0000 (13:50 +0200)] 
implement indextargets option 'DefaultEnabled'

Some targets like Contents-udeb are special-needs targets. Shipping the
configuration snippet for them is okay, but they shouldn't be downloaded
by default. Forcing the user to enable targets by uncommenting targets
is wrong and this would still not really solve the problem completely as
even if you want to download some -udebs it will probably not be for all
sources you have enabled, so having the possibility of disabling a
target by default, but giving the user the option to enable it on a
per-source entry basis is better.

9 years agouse c++11 algorithms to avoid strange compiler warnings
David Kalnischkies [Sat, 29 Aug 2015 10:28:24 +0000 (12:28 +0200)] 
use c++11 algorithms to avoid strange compiler warnings

Nobody knows what makes the 'unable to optimize loop' warning to appear
in the sourceslist minus-options parsing, especially if we use a foreach
loop, but we can replace it with some nice c++11 algorithm+lambda usage,
which also helps in making even clearer what happens here.

And as this would be a lonely change, lets do it for a few more loops as
well where I might or might not have seen the warning at some point in
time, too.

Git-Dch: Ignore

9 years agoimplement PDiff patching for compressed files
David Kalnischkies [Fri, 28 Aug 2015 17:26:44 +0000 (19:26 +0200)] 
implement PDiff patching for compressed files

Some additional files like 'Contents' are very big and should therefore
kept compressed on the disk, which apt-file did in the past. It also
implemented pdiff patching of these files by un- and recompressing these
files on-the-fly, with this commit we can do the same – but we can do
this in both pdiff patching styles (client and server merging) and
secured by hashes.

Hashes are in so far slightly complicated as we can't compare the hashes
of the compressed files as we might compress them differently than the
server would (different compressor versions, options, …), so we must
compare the hashes of the uncompressed content.

While this commit has changes in public headers, the classes it changes
are marked as hidden, so nobody can use them directly, which means the
ABI break is internal only.

9 years agoauto-prefix $(SITE) for indextargets Description field
David Kalnischkies [Thu, 27 Aug 2015 17:39:16 +0000 (19:39 +0200)] 
auto-prefix $(SITE) for indextargets Description field

This updates the documentation for a change which actually happened in
c2a4a8dded2dfb56dbcab9689b6cb4b96c9999b6 already. The acquire system
expects the $(SITE) to be there (e.g. for mirror rewriting) so we are
better of prefixing it automatically than giving frontends the chance to
forget it. There is no point in not showing $(SITE) first anyway.

9 years agosources.list and indextargets option for pdiffs
David Kalnischkies [Thu, 27 Aug 2015 16:13:00 +0000 (18:13 +0200)] 
sources.list and indextargets option for pdiffs

Disabling pdiffs can be useful occasionally, like if you have a fast
local mirror where the download doesn't matter, but still want to use it
for non-local mirrors. Also, some users might prefer it to only use it
for very big indextargets like Contents.

9 years agoRelease 1.11~exp11 1.1.exp11
Julian Andres Klode [Thu, 27 Aug 2015 15:55:19 +0000 (17:55 +0200)] 
Release 1.11~exp11

9 years agoFix test-security-no-remote-status
Julian Andres Klode [Thu, 27 Aug 2015 13:00:02 +0000 (15:00 +0200)] 
Fix test-security-no-remote-status

Gbp-Dch: ignore

9 years agoDo not parse Status fields from remote sources
Julian Andres Klode [Fri, 21 Aug 2015 16:00:37 +0000 (18:00 +0200)] 
Do not parse Status fields from remote sources

This could allow an attacker to mark a package as installed in a
remote package index, as long as the package was not listed in
the dpkg status file.

This way, an attacker could force the installation of a package
during a dist-upgrade, by providing two packages in an index,
an older marked as installed, and a newer - apt would "upgrade"
to the newer version.

9 years agoMerge branch 'feature/extractar-filefd' into debian/experimental
Julian Andres Klode [Thu, 27 Aug 2015 11:58:14 +0000 (13:58 +0200)] 
Merge branch 'feature/extractar-filefd' into debian/experimental

9 years agoUse compressor support from FileFd for ExtractTar instead of programs
Julian Andres Klode [Sat, 15 Mar 2014 22:03:14 +0000 (23:03 +0100)] 
Use compressor support from FileFd for ExtractTar instead of programs

This way we do not depend on the decompressor programs anymore.

9 years agoAdd test for using ExtractTar on compressed files
Julian Andres Klode [Sun, 16 Mar 2014 13:48:39 +0000 (14:48 +0100)] 
Add test for using ExtractTar on compressed files

Git-Dch: ignore

9 years agoAlways close compressed files in FileFd
Julian Andres Klode [Sun, 16 Mar 2014 13:48:11 +0000 (14:48 +0100)] 
Always close compressed files in FileFd

We dup() the file descriptor when opening compressed files, so we
always need to close the dup()ed one. Furthermore, not unsetting
the d-pointer causes issues when running OpenDescriptor() multiple
times on the same file descriptor.

9 years agoinstall: Set a local deb as the candidate for that package
Julian Andres Klode [Wed, 26 Aug 2015 22:28:47 +0000 (00:28 +0200)] 
install: Set a local deb as the candidate for that package

This ensures that we can install .deb files that are not the
candidate for a given package.

9 years agocacheset: Prefer the depcache over the policy again
Julian Andres Klode [Thu, 27 Aug 2015 11:10:02 +0000 (13:10 +0200)] 
cacheset: Prefer the depcache over the policy again

By preferring the policy over the depcache, we ignore any changes
we made in the depcache, which makes it impossible for code to
change the candidate used here.

This basically reverts commit 2fbfb111312257fa5fc29b0c2ed386fb712f960e:

 prefer the Policy if it is built instead of the DepCache and
 if DepCache is not available as fallback built the Policy

But it also cleans the code up a bit, by removing one level
of nesting.

9 years agodebian/rules: Only do parallel build if specified in DEB_BUILD_OPTIONS
Julian Andres Klode [Wed, 26 Aug 2015 23:10:34 +0000 (01:10 +0200)] 
debian/rules: Only do parallel build if specified in DEB_BUILD_OPTIONS

It was not nice to use 2 * number of cores in all cases.

Thanks: Jakub Wilk for the suggestion

9 years agoallow explicit dis/enable of IndexTargets in sources options
David Kalnischkies [Thu, 27 Aug 2015 08:41:19 +0000 (10:41 +0200)] 
allow explicit dis/enable of IndexTargets in sources options

While Target{,-Add,-Remove} is available for configuring IndexTargets
already, allow Targets to be mentioned explicitely as yes/no options as
well, so that the Target 'Contents' can be disabled via 'Contents: no'
as well as 'Target-Remove: Contents'.

9 years agonot all targets are deb-src targets
David Kalnischkies [Thu, 27 Aug 2015 06:59:20 +0000 (08:59 +0200)] 
not all targets are deb-src targets

Sometimes too much refactoring can have bad effects.

Thanks: Niels Thykier for reporting on IRC
Git-Dch: Ignore

9 years agouse always priv-dropping for changelog download as root
David Kalnischkies [Sun, 23 Aug 2015 11:46:35 +0000 (13:46 +0200)] 
use always priv-dropping for changelog download as root

First of, the temporary directory we download the changelog to needs to
be owned by _apt, but that also means that we don't need to check if we
could/should drop privs as the download happens to a dedicated tempdir
and only after that it is moved to its final location by a privileged user.

9 years agofix various typos reported by codespell
David Kalnischkies [Sat, 22 Aug 2015 14:22:08 +0000 (16:22 +0200)] 
fix various typos reported by codespell

Reported-By: codespell
9 years agolintian: don't show the typofix as a typo
David Kalnischkies [Sat, 22 Aug 2015 10:42:15 +0000 (12:42 +0200)] 
lintian: don't show the typofix as a typo

Git-Dch: Ignore

9 years agoadd a libapt-pkg recommends apt
David Kalnischkies [Sat, 22 Aug 2015 10:29:53 +0000 (12:29 +0200)] 
add a libapt-pkg recommends apt

For many usecases like the acquire system libapt-pkg actually needs
tools and config found in the apt package. apt tends to be installed
everywhere libapt-pkg appears usually anyhow, but just in case to nudge
users (and tools) in the right direction.

Note that this isn't and shouldn't be a hard depends as there are
usecases working perfectly without 'apt' and as this is such an esoteric
problem incurring the costs arising from a Depends-Breaks-loop isn't
deemd as worth it.

9 years agoignore AllowMem parameter in cache generation
David Kalnischkies [Sat, 22 Aug 2015 09:56:38 +0000 (11:56 +0200)] 
ignore AllowMem parameter in cache generation

The parameter name suggests that it should forbid the building of the
entire cache in memory, but this isn't how it was previously and as
AllowMem is false by default it actually prevents previous usecases from
working like being root and configuring apt to build no caches at all.

This should be fixed at some point to actually work, but that is hard to
pull off as it means switching the default and some callers (including
apt itself) actually did call it explicitly with false in certain
cases for no apparent reason (at least now where it is common to have
enough memory to throw at every problem and even if not is a slow apt
usally better than an apt erroring out).

Closes: 796459
9 years agocorrect 'apt update' download summary line
David Kalnischkies [Fri, 21 Aug 2015 22:10:08 +0000 (00:10 +0200)] 
correct 'apt update' download summary line

Fetched() was reported for mostly nothing, while we should be calling it
for files worked with from non-local sources (e.g. http, but not file or
xz). Previously this was called from an acquire item, but got moved to
the acquire worker instead to avoid having it (re)implemented in all
items, but the checks were faulty.

9 years agoSwedish program translation update
Anders Jonsson [Fri, 21 Aug 2015 18:40:07 +0000 (20:40 +0200)] 
Swedish program translation update

Closes: 796059
9 years agojust-in-time removal of broken essential packages
David Kalnischkies [Fri, 21 Aug 2015 17:59:33 +0000 (19:59 +0200)] 
just-in-time removal of broken essential packages

We deal with Conflicts in SmartUnpack in pretty much the same way, but
Breaks weren't handled in SmartConfigure so that the remove was sheduled
after the configuration of the package breaking the to-be-removed.

Closes: 796070
9 years agotest for #796070: downgrades involving essential packages
Julian Andres Klode [Wed, 19 Aug 2015 10:56:12 +0000 (12:56 +0200)] 
test for #796070: downgrades involving essential packages

Git-Dch: Ignore

9 years agotests: check apt-get source release name switching with -t
David Kalnischkies [Fri, 21 Aug 2015 09:34:56 +0000 (11:34 +0200)] 
tests: check apt-get source release name switching with -t

Git-Dch: Ignore

9 years agoFix more instances of missing remapping handling
Julian Andres Klode [Wed, 26 Aug 2015 21:55:13 +0000 (23:55 +0200)] 
Fix more instances of missing remapping handling

After fixing Bug#796999, we noticed that there were
some more instances of iterators which had no associated
Dynamic object, causing them to not be updated when
the cache was remapped.

This happened in two places: In NewPackage() and in
NewProvidesAllArch().

Gbp-Dch: ignore

9 years agopkgcachegen: Account for remapping when parsing depends from NewPackage
Julian Andres Klode [Wed, 26 Aug 2015 21:26:54 +0000 (23:26 +0200)] 
pkgcachegen: Account for remapping when parsing depends from NewPackage

In both the Ver and Dep variables, we need to account for remapping,
as otherwise we would still reference the old bug.

Reproduction environment:

* An i386 system with amd64 foreign architecture
* A sources.list with
deb http://snapshot.debian.org/archive/debian/20150826T102846Z/ unstable main
deb http://snapshot.debian.org/archive/debian/20150826T102846Z/ experimental main

Thanks: Jakub Wilk for the bug report and the backtraces
Closes: #796999
9 years agoreleasing package apt version 1.1~exp10 1.1.exp10
Michael Vogt [Fri, 21 Aug 2015 09:42:50 +0000 (11:42 +0200)] 
releasing package apt version 1.1~exp10

9 years agoFix typo
Michael Vogt [Mon, 24 Aug 2015 10:39:57 +0000 (12:39 +0200)] 
Fix typo

Thanks: Julian Andres Klode
Git-Dch: ignore

9 years agodoc/apt.conf.5.xml: document Acquire::EnableSrvRecods
Michael Vogt [Fri, 21 Aug 2015 09:38:32 +0000 (11:38 +0200)] 
doc/apt.conf.5.xml: document Acquire::EnableSrvRecods

Git-Dch: ignore

9 years agopostinst: Correctly pass --home instead of -home, and fixup old user
Julian Andres Klode [Thu, 20 Aug 2015 12:47:32 +0000 (14:47 +0200)] 
postinst: Correctly pass --home instead of -home, and fixup old user

Thanks: Niels Thykier for reporting this on IRC

9 years agoRe-indent GetCandidateVerNew() and make ConsiderFiles argument explicit
Julian Andres Klode [Thu, 20 Aug 2015 09:56:09 +0000 (11:56 +0200)] 
Re-indent GetCandidateVerNew() and make ConsiderFiles argument explicit

Gbp-Dch: ignore

9 years agoMerge remote-tracking branch 'mvo/feature/srv-records' into debian/experimental
Michael Vogt [Thu, 20 Aug 2015 10:05:49 +0000 (12:05 +0200)] 
Merge remote-tracking branch 'mvo/feature/srv-records' into debian/experimental

9 years agoAdd basic (non weight adjusted) shuffling for SrvRecords selection
Michael Vogt [Thu, 20 Aug 2015 08:40:45 +0000 (10:40 +0200)] 
Add basic (non weight adjusted) shuffling for SrvRecords selection

Also add "Debug::Acquire::SrvRecs" debug option and the option
"Acquire::EnableSrvRecods" to allow disabling this lookup.

9 years agoSupport tabs in sources.list files
Julian Andres Klode [Wed, 19 Aug 2015 07:50:19 +0000 (09:50 +0200)] 
Support tabs in sources.list files

Also support vertical tabs, as isspace() does the same.

Closes: #796067
9 years agoAdd support for "apt-cache showsrc --only-source srcpkgname"
Michael Vogt [Tue, 18 Aug 2015 18:39:59 +0000 (20:39 +0200)] 
Add support for "apt-cache showsrc --only-source srcpkgname"

Thanks: Steve Slangasek for the suggestion
Closes: 695633
9 years agoProvide "apt-get full-upgrade" to match "apt full-upgrade"
Michael Vogt [Tue, 18 Aug 2015 15:04:47 +0000 (17:04 +0200)] 
Provide "apt-get full-upgrade" to match "apt full-upgrade"

9 years agoapt-pkg/contrib/srvrec.cc: res_query() should not generate a _error->Warning()
Michael Vogt [Tue, 18 Aug 2015 14:46:34 +0000 (16:46 +0200)] 
apt-pkg/contrib/srvrec.cc: res_query() should not generate a _error->Warning()

9 years agocleanup
Michael Vogt [Tue, 18 Aug 2015 13:41:02 +0000 (15:41 +0200)] 
cleanup

9 years agoMerge remote-tracking branch 'upstream/debian/experimental' into feature/srv-records
Michael Vogt [Tue, 18 Aug 2015 09:57:35 +0000 (11:57 +0200)] 
Merge remote-tracking branch 'upstream/debian/experimental' into feature/srv-records

9 years agoMerge branch 'debian/experimental' into feature/srv-records
Michael Vogt [Tue, 18 Aug 2015 09:54:05 +0000 (11:54 +0200)] 
Merge branch 'debian/experimental' into feature/srv-records

Conflicts:
cmdline/apt-helper.cc
cmdline/makefile

9 years agoreleasing package apt version 1.1~exp9 1.1.exp9
Michael Vogt [Mon, 17 Aug 2015 16:50:43 +0000 (18:50 +0200)] 
releasing package apt version 1.1~exp9

9 years agoDo not fail if building test/ fails (issues with parallel builds)
Michael Vogt [Tue, 18 Aug 2015 08:44:50 +0000 (10:44 +0200)] 
Do not fail if building test/ fails (issues with parallel builds)

Git-Dch: ignore

9 years agoFix the test suite harder
Julian Andres Klode [Mon, 17 Aug 2015 16:58:34 +0000 (18:58 +0200)] 
Fix the test suite harder

Gbp-Dch: ignore