]> git.saurik.com Git - apt.git/log
apt.git
8 years agoConvert most callers of isspace() to isspace_ascii()
Julian Andres Klode [Sat, 26 Dec 2015 23:51:59 +0000 (00:51 +0100)] 
Convert most callers of isspace() to isspace_ascii()

This converts all callers that read machine-generated data,
callers that might work with user input are not converted.

8 years agoIntroduce isspace_ascii() for use by parsers
Julian Andres Klode [Sat, 26 Dec 2015 23:42:37 +0000 (00:42 +0100)] 
Introduce isspace_ascii() for use by parsers

This is like isspace(), but ignores the current locale.

8 years agoRelease 1.1.8 1.1.8
Julian Andres Klode [Sat, 26 Dec 2015 22:24:11 +0000 (23:24 +0100)] 
Release 1.1.8

This release is made for Niels Thykier and apt-file.

8 years agoapt-helper: Check that we can open stdout
Julian Andres Klode [Sat, 26 Dec 2015 22:26:55 +0000 (23:26 +0100)] 
apt-helper: Check that we can open stdout

Gbp-Dch: ignore

8 years agoRefactor InternalReadLine to not unroll Size == 0 case
Julian Andres Klode [Sat, 26 Dec 2015 21:23:43 +0000 (22:23 +0100)] 
Refactor InternalReadLine to not unroll Size == 0 case

There is not much point and this is more readable.

Gbp-Dch: ignore

8 years agoChange InternalReadLine to always use buffer.read() return value
Julian Andres Klode [Sat, 26 Dec 2015 21:06:14 +0000 (22:06 +0100)] 
Change InternalReadLine to always use buffer.read() return value

This is mostly a documentation issue, as the size we want to
read is always less than or equal to the size of the buffer,
so the return value will be the same as the size argument.

Nonetheless, people wondered about it, and it seems clearer
to just always use the return value.

8 years agoapt-helper: Add a cat-file command for concatening files
Julian Andres Klode [Sat, 26 Dec 2015 20:45:32 +0000 (21:45 +0100)] 
apt-helper: Add a cat-file command for concatening files

This can automatically handle compressed files and is useful
for stuff like apt-file.

8 years agoRelease 1.1.7 1.1.7
Julian Andres Klode [Sat, 26 Dec 2015 18:10:21 +0000 (19:10 +0100)] 
Release 1.1.7

8 years agoGet rid of memmove() in our read buffering
Julian Andres Klode [Sat, 26 Dec 2015 16:38:40 +0000 (17:38 +0100)] 
Get rid of memmove() in our read buffering

This further improves our performance, and rred on uncompressed
files now spents 78% of its time in writing. Which means that
we should really look at buffering those.

8 years agorred: Allow passing files as arguments for compressor testing
Julian Andres Klode [Sat, 26 Dec 2015 14:25:33 +0000 (15:25 +0100)] 
rred: Allow passing files as arguments for compressor testing

This introduces a -t mode in which the first argument is input,
the second is output and the remaining are diffs.

This allows us to test patching compressed files, which are
detected using their file extension.

8 years agoUse a hardcoded buffer size of 4096 to fix performance
Julian Andres Klode [Sat, 26 Dec 2015 13:49:00 +0000 (14:49 +0100)] 
Use a hardcoded buffer size of 4096 to fix performance

The code uses memmove() to move parts of the buffer to the
front when the buffer is only partially read. By simply
reading one page at a time, the maximum size of bytes that
must be moved has a hard limit, and performance improves:

In one test case, consisting of a 430 MB Contents file,
and a 75K PDiff, applying the PDiff previously took about
48 seconds and now completes in 2 seconds.

Further speed up can be achieved by buffering writes, they
account for about 60% of the run-time now.

8 years agoMark all FileFdPrivate classes as hidden 1.1.6
Julian Andres Klode [Thu, 24 Dec 2015 16:14:15 +0000 (17:14 +0100)] 
Mark all FileFdPrivate classes as hidden

Gbp-Dch: ignore

8 years ago1.1.6 Christmas release
Julian Andres Klode [Thu, 24 Dec 2015 16:03:21 +0000 (17:03 +0100)] 
1.1.6 Christmas release

8 years agofix new[] vs delete mismatch introduced by b3db9d81
David Kalnischkies [Wed, 23 Dec 2015 18:42:53 +0000 (19:42 +0100)] 
fix new[] vs delete mismatch introduced by b3db9d81

And as we are at it lets fix the 'style' issue I introduced with the
filefd changes as well.

Reported-By: gcc -fsanitize's & cppcheck
Git-Dch: Ignore

8 years agoensure we got a lock in clean operation
David Kalnischkies [Wed, 23 Dec 2015 16:48:16 +0000 (17:48 +0100)] 
ensure we got a lock in clean operation

We try to acquired the locks, but we didn't stop if we failed to get it…

Closes: 808561
8 years agouse a dynamic buffer for ReadLine
David Kalnischkies [Wed, 23 Dec 2015 16:16:13 +0000 (17:16 +0100)] 
use a dynamic buffer for ReadLine

We don't need the buffer that often - only for ReadLine - as it is only
occasionally used, so it is actually more efficient to allocate it if
needed instead of statically by default. It also allows the caller to
influence the buffer size instead of hardcoding it.

Git-Dch: Ignore

8 years agoimplement a buffer system for FileFd::ReadLine
David Kalnischkies [Wed, 23 Dec 2015 15:42:12 +0000 (16:42 +0100)] 
implement a buffer system for FileFd::ReadLine

The default implementation of ReadLine was very naive by just reading
each character one-by-one. That is kinda okay for libraries implementing
compression as they have internal buffers (but still not great), but
while working with files directly or via a pipe as there is no buffer
there so all those reads are in fact system calls.

This commit introduces an internal buffer in the FileFd implementation
which is only used by ReadLine. The more low-level Read and all other
actions remain unbuffered – they just changed to deal with potential
"left-overs" in the buffer correctly.

Closes: 808579
8 years agoparse xz-compression level from configuration
David Kalnischkies [Tue, 22 Dec 2015 15:32:56 +0000 (16:32 +0100)] 
parse xz-compression level from configuration

If we use the library to compress xz, still try to understand and pick
up the arguments we would have used to call xz to figure out which level
the user wants us to use instead of defaulting to level 6 (which is the
default level of xz).

8 years agofollow dpkg and xz and use CRC64 for xz compression
David Kalnischkies [Tue, 22 Dec 2015 14:56:47 +0000 (15:56 +0100)] 
follow dpkg and xz and use CRC64 for xz compression

dpkg switched from CRC32 to CRC64 in
777915108d9d36d022dc4fc4151a615fc95e5032 with the message:
| This is the default CRC used by the xz command-line tool, align with
| it and switch from CRC32 to CRC64. It should provide slightly better
| detection against damaged data, at a negligible speed difference.

8 years agoshuffle compressor-specific code into private subclasses
David Kalnischkies [Tue, 22 Dec 2015 14:46:13 +0000 (15:46 +0100)] 
shuffle compressor-specific code into private subclasses

This isn't implementing any new features, it is "just" moving code
around from FileFd methods which decided on each call how to handle the
request by including all logic for all possible compressor backends in
the method body to a model in which backend-specifics are implemented in
a FileFdPrivate subclass. This avoids a big chunk of #ifdef's and should
make it a tiny bit more obvious which backend uses which code.

The execution of the idea is slightly uglified by the need to preserve
ABI and API which causes liberal befriending.

Git-Dch: Ignore

8 years agotests: support gpg2 properly in all testcases
David Kalnischkies [Fri, 18 Dec 2015 12:17:11 +0000 (13:17 +0100)] 
tests: support gpg2 properly in all testcases

The output changes slightly between different versions, which we already
dealt with in the main testcase for apt-key, but there are two more
which do not test both versions explicitly and so still had gpg1 output
to check against as this is the default at the moment.

Git-Dch: Ignore

8 years agoavoid triggering gpg2 migration in apt-key
David Kalnischkies [Fri, 18 Dec 2015 11:35:43 +0000 (12:35 +0100)] 
avoid triggering gpg2 migration in apt-key

The presents (even of an empty) secring.gpg is indication enough for
gpg2 to tigger the migration code which not only produces a bunch of
output on each apt-key call, but also takes a while to complete as an
agent needs to be started and all that.

We workaround the first part by forcing the migration to happen always
in a call we forced into silence, but that leaves us with an agent to
start all the time – with a bit of reordering we can make it so that we
do not explicitly create the secring, but let gpg create it if needed,
which prevents the migration from being triggered and we have at least a
bit less of a need for an agent. Changes - even to public only keyrings
- still require one, but such actions are infrequent in comparison to
verification calls, so that should be a net improvement.

8 years agoavoid evaluating shell in paths used in apt-key
David Kalnischkies [Thu, 17 Dec 2015 16:41:11 +0000 (17:41 +0100)] 
avoid evaluating shell in paths used in apt-key

apt-key creates internally a script (since ~1.1) which it will call to
avoid dealing with an array of different options in the code itself, but
while writing this script it wraps the values in "", which will cause
the shell to evaluate its content upon execution.
To make 'use' of this either set a absolute gpg command or TMPDIR to
something as interesting as:
"/tmp/This is fü\$\$ing cràzy, \$(man man | head -n1 | cut -d' ' -f1)\$!"

If such paths can be encountered in reality is a different question…

8 years agotests: support spaces in path and TMPDIR
David Kalnischkies [Tue, 15 Dec 2015 16:20:26 +0000 (17:20 +0100)] 
tests: support spaces in path and TMPDIR

This doesn't allow all tests to run cleanly, but it at least allows to
write tests which could run successfully in such environments.

Git-Dch: Ignore

8 years agobuildsystem: deal with spaces in path to source
David Kalnischkies [Tue, 15 Dec 2015 16:18:50 +0000 (17:18 +0100)] 
buildsystem: deal with spaces in path to source

Git-Dch: Ignore

8 years agoDo not try to read in FileFd::Read() if Size is 0
Julian Andres Klode [Sat, 19 Dec 2015 12:07:12 +0000 (13:07 +0100)] 
Do not try to read in FileFd::Read() if Size is 0

There's no point trying to read 0 bytes, so let's just not
do this and switch to a while loop like in Write().

Gbp-Dch: ignore

8 years agoDo nothing in FileFd::Write() if Size is 0
Julian Andres Klode [Sat, 19 Dec 2015 12:01:14 +0000 (13:01 +0100)] 
Do nothing in FileFd::Write() if Size is 0

Turn the do-while loop into while loops, so it simply does nothing
if the Size is already 0.

This reverts commit c0b271edc2f6d9e5dea5ac82fbc911f0e3adfa7a which
introduced a fix for a specific instance of the issue in the
CopyFile() function.

Closes: #808381
8 years agoCopyFile: avoid failing on EOF on some systems
Pino Toscano [Sat, 19 Dec 2015 11:06:53 +0000 (12:06 +0100)] 
CopyFile: avoid failing on EOF on some systems

On EOF, ToRead will be 0, which might trigger on some systems (e.g.
on the Hurd) an error due to the invalid byte count passed to write().
The whole loop already checks for ToRead != 0, so perform the writing
step only when there was actual data read.

Closes: #808381
8 years agoCopyFile: fix BufSize to a sane value
Pino Toscano [Sat, 19 Dec 2015 11:00:43 +0000 (12:00 +0100)] 
CopyFile: fix BufSize to a sane value

Commit e977b8b9234ac5db32f2f0ad7e183139b988340d tries to make BufSize
calculated based on the size of the buffer; the problem is that
std::unique_ptr::size() returns a pointer to the data, so sizeof()
equals to the size of a pointer (later divided by sizeof(char), which
is 1). The result is that the CopyFile copies in chunks of 8 bytes,
which is not exactly ideal...

As solution, declare BufSize in advance, and use its value to allocate
the Buf array.

Closes: #808381
8 years agoFix FileUtlTest.GetTempDir failure when run as root
Pino Toscano [Sat, 19 Dec 2015 11:09:18 +0000 (12:09 +0100)] 
Fix FileUtlTest.GetTempDir failure when run as root

Testing /usr as TMPDIR assumes that GetTempDir() cannot use it
because it cannot write to it; this is true for non-root users, but
not so much for root.

Since root can access everything, perform this particular test case
only when not running as root.

Closes: #808383
8 years agoRelease 1.1.5 1.1.5
Julian Andres Klode [Mon, 14 Dec 2015 15:57:32 +0000 (16:57 +0100)] 
Release 1.1.5

8 years agotest-apt-download-progress: Run the https test multiple times
Julian Andres Klode [Mon, 14 Dec 2015 15:43:27 +0000 (16:43 +0100)] 
test-apt-download-progress: Run the https test multiple times

This filters out errors due to timing issues. Early exits if
enough pulses occured.

8 years agopkgcache: Make hash arch-independent using fixed size integer
Julian Andres Klode [Mon, 14 Dec 2015 15:15:36 +0000 (16:15 +0100)] 
pkgcache: Make hash arch-independent using fixed size integer

This helps writing test cases. Also adapt the test case that
expected 64-bit.

Nothing changes performance wise, the distribution of the hash
values remains intact.

8 years agodebian/apt.auto-removal.sh: Adjust -dbg exclusion for multi-arch
Julian Andres Klode [Mon, 14 Dec 2015 13:12:59 +0000 (14:12 +0100)] 
debian/apt.auto-removal.sh: Adjust -dbg exclusion for multi-arch

Allow an optional colon followed by anything at the end.

8 years agotagfile: Hardcode error message for out of range integer values
Julian Andres Klode [Mon, 14 Dec 2015 12:58:46 +0000 (13:58 +0100)] 
tagfile: Hardcode error message for out of range integer values

This makes the test suite work on 32 bit-long platforms.

Gbp-Dch: ignore

8 years agotest framework: More noopchroot fixes
Julian Andres Klode [Mon, 14 Dec 2015 12:39:52 +0000 (13:39 +0100)] 
test framework: More noopchroot fixes

Use asprintf() so we have easy error detection and do not depend
on PATH_MAX.

Do not add another separator to the generated path, in both cases
the path inside the chroot is guaranteed to have a leading /
already.

Also pass -Wall to gcc.

8 years agotest framework: Unset no_proxy as well
Julian Andres Klode [Mon, 14 Dec 2015 12:33:55 +0000 (13:33 +0100)] 
test framework: Unset no_proxy as well

This caused test-bug-717891-abolute-uris-for-proxies to fail

Gbp-Dch: ignore

8 years agotest framework: Unset http proxy variables in setupenvironment
Julian Andres Klode [Mon, 14 Dec 2015 12:27:00 +0000 (13:27 +0100)] 
test framework: Unset http proxy variables in setupenvironment

This breaks a lot of test cases

Gbp-Dch: ignore

8 years agotest framework: Correctly generate new paths in noopchroot
Julian Andres Klode [Mon, 14 Dec 2015 12:12:37 +0000 (13:12 +0100)] 
test framework: Correctly generate new paths in noopchroot

The allocated buffer was one byte too small. Allocate a buffer
of PATH_MAX instead and use snprintf(), as suggested by Martin
Pitt.

8 years agotest-apt-download-progress: Limit rate to 600k
Julian Andres Klode [Mon, 14 Dec 2015 09:43:26 +0000 (10:43 +0100)] 
test-apt-download-progress: Limit rate to 600k

This reduces the chance that the test fails.

Gbp-Dch: ignore

8 years agotest-apt-download-progress: Allow smaller progress change
Julian Andres Klode [Mon, 14 Dec 2015 09:42:38 +0000 (10:42 +0100)] 
test-apt-download-progress: Allow smaller progress change

Instead of checking for [10%, 100%), check for (0%, 100%),
that is everything < 100% and >0%.

Gbp-Dch: ignore

8 years agotest-sourceslist-lang-plusminus-options: Use amd64 architecture
Julian Andres Klode [Mon, 14 Dec 2015 09:04:09 +0000 (10:04 +0100)] 
test-sourceslist-lang-plusminus-options: Use amd64 architecture

This should make the test work on non-amd64 systems

Gbp-Dch: ignore

8 years agotests: Depend on libfile-fcntllock-perl to shut up dpkg-gencontrol
Julian Andres Klode [Mon, 14 Dec 2015 08:58:59 +0000 (09:58 +0100)] 
tests: Depend on libfile-fcntllock-perl to shut up dpkg-gencontrol

Ubuntu's autopkgtest server always prints

  dpkg-gencontrol: warning: File::FcntlLock not available; using flock which is not NFS-safe

which is somewhat annoying. Work around that by depending on that
perl stuff for the test suite.

Gbp-Dch: ignore

8 years agonon-existing directories don't need to be cleaned
David Kalnischkies [Mon, 14 Dec 2015 02:21:20 +0000 (03:21 +0100)] 
non-existing directories don't need to be cleaned

Trying to clean up directories which do not exist seems rather silly if
you think about it, so let apt think about it and stop it.

Depends a bit on the caller if this is fixing anything for them as they
might try to acquire a lock or doing other clever things as apt does.

Closes: 807477
8 years agosupport regex and co in 'apt-cache policy $pkg' again
David Kalnischkies [Mon, 14 Dec 2015 01:38:34 +0000 (02:38 +0100)] 
support regex and co in 'apt-cache policy $pkg' again

Regression of 1e064088bf7b3e29cd36d30760fb3e4143a1a49a (1.1~exp4) which
moved code around and renamed methods heavily ending up calling the
wrong method matching packagenames only instead of calling the full
array. Most commands work with versions, so this managed to fly under
the radar for quite a while.

Closes: 807870
8 years agoshow a more descriptive error for weak Release files
David Kalnischkies [Mon, 14 Dec 2015 01:18:25 +0000 (02:18 +0100)] 
show a more descriptive error for weak Release files

If we can't work with the hashes we parsed from the Release file we
display now an error message if the Release file includes only weak
hashes instead of downloading the indexes and failing to verify them
with "Hash Sum mismatch" even through the hashes didn't mismatch (they
were just weak).

If for some (unlikely) reason we have got weak hashes only for
individual targets we will show a warning to this effect (again, befor
downloading and failing the index itself).

Closes: 806459
8 years agoredirect which stderr to /dev/null for consistency
David Kalnischkies [Sun, 13 Dec 2015 23:33:22 +0000 (00:33 +0100)] 
redirect which stderr to /dev/null for consistency

The "standard" which (debianutils) has no output whatsoever on stderr,
bash and dash which use this implementation therefore haven't either.
In zsh 'which' is a shell built-in – and has no stderr output either, it
does print an error message on stdout…

So, realistically, a redirection isn't needed at all, but it also can't
hurt (<- I have said that before in this context ->) so why not for
consistency with… well, not with "command -v" as that hasn't an error
message either. Lets say for consistency with my mental image of shell,
as I am still a bit puzzled by zsh's which and now could imagine even
more strange things in other shells.

Closes: 807373
8 years agomention APT::AutoRemove::{Recommends,Suggests}Important option
Andreas Metzler [Sun, 13 Dec 2015 23:24:21 +0000 (00:24 +0100)] 
mention APT::AutoRemove::{Recommends,Suggests}Important option

Closes: 807413
8 years agofix incorrect Korean translation of "manually" and "automatically"
Seo Sanghyeon [Sun, 13 Dec 2015 23:14:42 +0000 (00:14 +0100)] 
fix incorrect Korean translation of "manually" and "automatically"

Korean translation update is attached.
I downloaded the original from https://www.debian.org/international/l10n/po/ko.

Originally, "manually" and "automatically" were translated same,
which was confusing.

Mail-Reference: <CAPrzcnL_YynHQkCSE4xH29eW1O0Q6SPhoSf21KOFTu=Vv6-0Nw@mail.gmail.com>
Mail-Archive: https://lists.debian.org/deity/2015/12/msg00108.html

8 years agoparse .diff/Index hashes in reverse order
David Kalnischkies [Sun, 13 Dec 2015 17:53:08 +0000 (18:53 +0100)] 
parse .diff/Index hashes in reverse order

Reversing the parsing order ensures that we parse weaker hashes (like
SHA1) before we touch newer/stronger hashes (like SHA256) as the weaker
ones will usually be there for a longer time already with data already
present, which we would discard if we start with the strong one first.

The discarding is visible in the debug logs:
File X wasn't in the list for the first parsed hash! (history)
File X wasn't in the list for the first parsed hash! (patches)
which if file X is part of the patch-path means apt will not find a path and
fallback to acquire the whole file instead needlessly.
If file X isn't part of the patch-path that is no problem, so that
effects only the update-call which updates with patches coming from
before and after the addition of a new hash.

8 years agofix typos and docs in GlobalError documentation
David Kalnischkies [Sun, 13 Dec 2015 16:43:55 +0000 (17:43 +0100)] 
fix typos and docs in GlobalError documentation

Reported-By: Manuel A. Fernandez Montecelo <mafm@debian.org>
Git-Dch: Ignore

8 years agoupdate symbols files to 1.1.4 state of affairs
David Kalnischkies [Mon, 7 Dec 2015 15:32:11 +0000 (16:32 +0100)] 
update symbols files to 1.1.4 state of affairs

8 years agocheck library was built before comparing with symbols file
David Kalnischkies [Mon, 7 Dec 2015 15:26:01 +0000 (16:26 +0100)] 
check library was built before comparing with symbols file

Git-Dch: Ignore

8 years ago.travis.yml: Switch to new trusty machines
Julian Andres Klode [Fri, 11 Dec 2015 14:10:01 +0000 (15:10 +0100)] 
.travis.yml: Switch to new trusty machines

Yay, newer server

Gbp-Dch: ignore

8 years agommap: Define _DEFAULT_SOURCE instead of _BSD_SOURCE
Julian Andres Klode [Fri, 11 Dec 2015 14:02:24 +0000 (15:02 +0100)] 
mmap: Define _DEFAULT_SOURCE instead of _BSD_SOURCE

Fixes a warning reported by gcc.

Gbp-Dch: ignore

8 years agoapt-internal-solver: Make ShowHelp() and GetCommands() static
Julian Andres Klode [Fri, 11 Dec 2015 14:00:17 +0000 (15:00 +0100)] 
apt-internal-solver: Make ShowHelp() and GetCommands() static

This fixes a warning reported by gcc.

Gbp-Dch: ignore

8 years agoBump cache minor version to 2 to trigger rebuilds
Julian Andres Klode [Fri, 11 Dec 2015 13:32:44 +0000 (14:32 +0100)] 
Bump cache minor version to 2 to trigger rebuilds

With the package names now normalized to lower case, the caches
of affected systems need to be rebuild. Adjust the minor version
to trigger such a rebuild.

Gbp-Dch: ignore

8 years agoConvert package names from Packages files to lower case
Julian Andres Klode [Fri, 11 Dec 2015 13:27:56 +0000 (14:27 +0100)] 
Convert package names from Packages files to lower case

dpkg does that when reading package files, so we should do
the same. This only deals with parsing names from binary
package paragraphs, it does not look at source package names
and/or the list of binaries in a dsc file.

Closes: #807012
8 years agotest: Fix testcases relying on mixed case package names
Julian Andres Klode [Fri, 11 Dec 2015 13:42:11 +0000 (14:42 +0100)] 
test: Fix testcases relying on mixed case package names

Gbp-Dch: ignore

8 years agoDo not swap required and important in pkgCache::Priority()
Julian Andres Klode [Thu, 10 Dec 2015 08:48:21 +0000 (09:48 +0100)] 
Do not swap required and important in pkgCache::Priority()

required and important were swapped, leading to wrong
output.

Closes: #807523
Thanks: Manuel A. Fernandez Montecelo for discovering this

8 years agoRelease 1.1.4 1.1.4
Julian Andres Klode [Mon, 7 Dec 2015 14:31:55 +0000 (15:31 +0100)] 
Release 1.1.4

8 years agoUse 0llu instead of 0ull in one place too
Julian Andres Klode [Mon, 7 Dec 2015 13:45:52 +0000 (14:45 +0100)] 
Use 0llu instead of 0ull in one place too

Gbp-Dch: ignore

8 years agoAvoid overflow when summing up file sizes
Julian Andres Klode [Mon, 7 Dec 2015 13:42:25 +0000 (14:42 +0100)] 
Avoid overflow when summing up file sizes

We need to pass 0llu instead of 0 as the init value, otherwise
std::accumulate will calculate with ints.

Reported-by: Raphaël Hertzog
8 years agopart revert, part redo 'which' replacement
David Kalnischkies [Sun, 6 Dec 2015 23:09:10 +0000 (00:09 +0100)] 
part revert, part redo 'which' replacement

In e75e5879 'replace "which" with "command -v" for portability' I missed
that command -v isn't actually required to be available in debian, so
for the 5 files we are using it:

Two (abicheck/run_abi_test & test/integration/framework) are called in
environments were I believe sh is at least dash or 'better' as the first
one is "interactive" for apt developers and the later is sourced by ~200
tests in the same directory run by hand and ci-services – for the later
we have pulled some uglier hacks for worser things already, so if there
should actually end up needing something more compatible we will notice
eventually (and the later actually had a command -v call for some time
already and nobody came running).

debian/rules and debian/apt.cron.daily I switched back to which as that
is more or less debian-specific or at least highly non-critical.

That leaves cmdline/apt-key.in with a bunch of calls where I will
implement that functionality in shell as this is relatively short-lived
as it is used to detect wget (for net-update, which Michael wants to
revive and in that process will properly use apt-helper instead of wget)
and to detect gpg vs. gpg2 systems, where the earlier is supposed to go
away in the longrun (or the later, but by replacing the earlier…).
[and this gpg/gpg2 detection is new in sid, so I have some sympathy for
that being a problem now.]

Thanks: Jakub Wilk for pointing out #747320

8 years agoreplace run-parts with find|sort to avoid debianutils usage
David Kalnischkies [Sun, 6 Dec 2015 13:46:11 +0000 (14:46 +0100)] 
replace run-parts with find|sort to avoid debianutils usage

After e75e5879 the reason for an implicit dependency on debianutils
(which is essential for debian, but likely not on other systems) was
just two uses of run-parts, which can be replaced with the a lot more
portable find-piped-into-sort duo.

8 years agoreplace "which" with "command -v" for portability
David Kalnischkies [Sun, 6 Dec 2015 13:03:35 +0000 (14:03 +0100)] 
replace "which" with "command -v" for portability

which is a debian specific tool packaged in debianutils (essential)
while command is a shell builtin defined by POSIX.

Closes: 807144
Thanks: Mingye Wang for the suggestion.

8 years agoapt-helper.cc: include <stdlib.h> for atoi
Fredrik Fornwall [Sun, 6 Dec 2015 12:30:51 +0000 (13:30 +0100)] 
apt-helper.cc: include <stdlib.h> for atoi

Include <stdlib.h> to ensure that atoi(3) is defined to improve
general portability and fix a specific build failure on Android.

Closes: 807031
8 years agouse @CHANGEPATH@ as placeholder in changelog URI templates
David Kalnischkies [Wed, 2 Dec 2015 11:43:33 +0000 (12:43 +0100)] 
use @CHANGEPATH@ as placeholder in changelog URI templates

This should make it more obvious that CHANGEPATH is a placeholder which
apt will replace with a package specific path rather than a string
constant.

Mail-Reference: <87d1upgvaf.fsf@deep-thought.43-1.org>
Mail-Archive: https://lists.debian.org/debian-dak/2015/12/msg00005.html

8 years agotests: apt build-dep actually reports no depends correctly
David Kalnischkies [Wed, 2 Dec 2015 11:56:04 +0000 (12:56 +0100)] 
tests: apt build-dep actually reports no depends correctly

'Regression' of 7d19ee92f2368a40e739cb27d22d6d28f37ebf45, just that it
now works more as expected than previously. Of course, build-essentials
are implicitly also build dependencies, so by definition all packages
have build dependencies, but that isn't what this message wants to say
and it isn't what the user expects.

Git-Dch: Ignore

8 years agorequire explicit paths to dsc/control as we do for deb files
David Kalnischkies [Tue, 1 Dec 2015 13:09:23 +0000 (14:09 +0100)] 
require explicit paths to dsc/control as we do for deb files

Otherwise a user is subject to unexpected content-injection depending on
which directory she happens to start apt in. This also cleans up the code
requiring less implementation details in build-dep which is always good.

Technically, this is an ABI break as we override virtual methods, but
that they weren't overridden was a mistake resulting in pure classes,
which shouldn't be pure, so they were unusable – and as they are new in
1.1 nobody is using them yet (and hopefully ever as they are borderline
implementation details).

Closes: 806693
8 years agodeal with configured build-essential first
David Kalnischkies [Tue, 1 Dec 2015 10:29:17 +0000 (11:29 +0100)] 
deal with configured build-essential first

There is no need to check configured build-essentials for each package,
doing it once at the start ought to be enough.

Git-Dch: Ignore

8 years agosplit build-dep satisfier loop out of DoBuildDep
David Kalnischkies [Tue, 1 Dec 2015 09:49:40 +0000 (10:49 +0100)] 
split build-dep satisfier loop out of DoBuildDep

Lets do this non-behaviour change before we modify the source for real
as the reflow and moving would otherwise hide all the interesting changes.

Git-Dch: Ignore

8 years agoadd a apt breaks (apt-utils << 1.1.3) for partial-upgrades
David Kalnischkies [Tue, 1 Dec 2015 13:22:03 +0000 (14:22 +0100)] 
add a apt breaks (apt-utils << 1.1.3) for partial-upgrades

You could think a0bf789783ea283914d059aea0f4d0f77d6bbaaf would be
enough, but it turns out its only half of the puzzle.

Closes: 806765
Suggested-By: Julian Andres Klode <jak@debian.org>
9 years agodefaults.mak: Set LC_COLLATE=C.UTF-8 for reproducible sort order
Julian Andres Klode [Mon, 30 Nov 2015 19:33:43 +0000 (20:33 +0100)] 
defaults.mak: Set LC_COLLATE=C.UTF-8 for reproducible sort order

With the 1.1.3 release we have seen some re-ordering of the
translation template and the translations. It turns out that
this is because sort sorts differently depending on the locale,
so let's force it to always sort in the C locale.

9 years agorelease 1.1.3 1.1.3
Michael Vogt [Mon, 30 Nov 2015 07:51:37 +0000 (08:51 +0100)] 
release 1.1.3

Git-dch: ignore

9 years agoadd apt-utils Depends apt (= ${binary:Version})
David Kalnischkies [Sun, 29 Nov 2015 15:25:56 +0000 (16:25 +0100)] 
add apt-utils Depends apt (= ${binary:Version})

As we ship some tools in apt-utils which depend on our private library
we have to ensure that apt-utils depends on a proper apt version.
An exact version is probably a bit much, but the simplest way out.

9 years agodrop some needlessly public declarations in libapt-private
David Kalnischkies [Sun, 29 Nov 2015 15:57:58 +0000 (16:57 +0100)] 
drop some needlessly public declarations in libapt-private

Git-Dch: Ignore

9 years agomove 'unmet' handling into libapt-private
David Kalnischkies [Sun, 29 Nov 2015 14:49:55 +0000 (15:49 +0100)] 
move 'unmet' handling into libapt-private

Git-Dch: Ignore

9 years agoaccept ../ on the cmdline as start for a deb file as well
David Kalnischkies [Sun, 29 Nov 2015 13:27:25 +0000 (14:27 +0100)] 
accept ../ on the cmdline as start for a deb file as well

Regression of 14341a7ee1ca3dbcdcdbe10ad19b947ce23d972d.

Reported-By: Julian Andres Klode <jak@debian.org>
9 years agotests: fix typos, correct helpmsgs and test tests
David Kalnischkies [Sun, 29 Nov 2015 13:05:38 +0000 (14:05 +0100)] 
tests: fix typos, correct helpmsgs and test tests

Git-Dch: Ignore

9 years agodo not override exact targetrelease matches with lesser matches
Andreas Cadhalpun [Sun, 29 Nov 2015 12:36:28 +0000 (13:36 +0100)] 
do not override exact targetrelease matches with lesser matches

The relevant testcases are in test/integration/test-apt-get-source.
There is a test for #731853 that is supposed to "ensure that apt will
pick the higher version number" of 0.0.1 (stable) and 0.1 (stable).
However, this works by pure chance, as simply reversing the order
of the two insertsource lines makes the test fail.
So #731853 isn't really fixed, yet.

Actually, that's related to the problem I reported, as the underlying
issue for both is the same:
In the FindSrc function apt chooses a new 'best hit', if either
 * there is a target release and it matches the release of the package,
 * or the version of the package is higher than the last best hit.

Consider having 1.0 (stable), 2.0 (unstable) and 1.5 (unstable),
in this order.

Looking for the version in stable, apt first selects 1.0, because the
release matches the target release, but then subsequently selects 2.0,
because the version is higher.

Looking for the version in unstable, apt first selects 2.0, because the
release matches the target release, but then subsequently selects 1.5,
because the release also matches the target release.

The correct way would be to choose a new 'best hit', if either
 * there is a target release and it matches the release of the package,
 * or there is no target release
and the version is higher than the last best hit.

Closes: 746412
Mail-Reference: <565A604B.7090104@googlemail.com>
Mail-Archive: https://lists.debian.org/debian-devel/2015/11/msg00470.html

9 years agouse function pointers instead of weak symbols for cmdline parsing
David Kalnischkies [Sun, 29 Nov 2015 12:12:38 +0000 (13:12 +0100)] 
use function pointers instead of weak symbols for cmdline parsing

Passing function pointers around while working on this was very icky,
but if weak symbols are too much to ask for…

Reverts "do not use "-Wl,-Bsymbolic-functions" during the build to avoid
breakage" aka a5fc9be36211a290a7abc3ca2a8bf98943bc1f57.

9 years agodoc: VerifyFile checks all hashes instead of best only
David Kalnischkies [Sat, 28 Nov 2015 16:11:23 +0000 (17:11 +0100)] 
doc: VerifyFile checks all hashes instead of best only

The implementation changed in
495b7a615a2d8f485beadf88c6ed298f5bbe50c2

Git-Dch: Ignore
Reported-By: Julian Andres Klode <jak@debian.org>
9 years agoRelease 1.1.2 1.1.2
Julian Andres Klode [Sat, 28 Nov 2015 21:49:07 +0000 (22:49 +0100)] 
Release 1.1.2

9 years agoRevert "Revert "appease adequate with some weak symbols for -private""
Julian Andres Klode [Sat, 28 Nov 2015 21:36:25 +0000 (22:36 +0100)] 
Revert "Revert "appease adequate with some weak symbols for -private""

This reverts commit 7ac9386cb6e272625490fcf3e8183b45e28bbc43.

9 years agodo not use "-Wl,-Bsymbolic-functions" during the build to avoid breakage
Michael Vogt [Sat, 28 Nov 2015 20:59:18 +0000 (21:59 +0100)] 
do not use "-Wl,-Bsymbolic-functions" during the build to avoid breakage

9 years agoRevert "appease adequate with some weak symbols for -private"
Julian Andres Klode [Sat, 28 Nov 2015 21:27:15 +0000 (22:27 +0100)] 
Revert "appease adequate with some weak symbols for -private"

This reverts commit 28f24d3dad1844af316337d565ba2ebc11c8ce97.

This fails on Ubuntu as they build with -Bsymbolic-functions.

9 years agodisable privilege dropping for rsh/ssh method by default
David Kalnischkies [Sat, 28 Nov 2015 15:09:42 +0000 (16:09 +0100)] 
disable privilege dropping for rsh/ssh method by default

ssh expects various configuration bits to be usable like known hosts,
possibly keys and co. Setting this up needs some user work for probably
not a whole lot of benefits, so instead of forcing it upon users on
upgrade disable dropping for it by default.

Closes: 806511
9 years agofix program name detection in rsh method
David Kalnischkies [Sat, 28 Nov 2015 14:46:31 +0000 (15:46 +0100)] 
fix program name detection in rsh method

Regression intoduced in 23e64f6d0facf9610c1042326ad9850e071e8349

9 years agodisable privilege-drop verification by default as fakeroot trips over it
David Kalnischkies [Sat, 28 Nov 2015 12:17:57 +0000 (13:17 +0100)] 
disable privilege-drop verification by default as fakeroot trips over it

Dropping privileges is an involved process for code and system alike so
ideally we want to verify that all the work wasn't in vain. Stuff
designed to sidestep the usual privilege checks like fakeroot (and its
many alternatives) have their problem with this through, partly through
missing wrapping (#806521), partly as e.g. regaining root from an
unprivileged user is in their design. This commit therefore disables
most of these checks by default so that apt runs fine again in a
fakeroot environment.

Closes: 806475
9 years agoshow the group we failed to drop via setgroups
David Kalnischkies [Fri, 27 Nov 2015 23:07:07 +0000 (00:07 +0100)] 
show the group we failed to drop via setgroups

This also deals with the unlikely case of groups being mentioned
multiple times or if the effective group isn't mentioned at all.
In practice, it is a debugging aid through like for #806475.

Git-Dch: Ignore

9 years agoautopkgtest: use the quiet mode as for travis and co
David Kalnischkies [Sat, 28 Nov 2015 00:30:53 +0000 (01:30 +0100)] 
autopkgtest: use the quiet mode as for travis and co

Git-Dch: Ignore

9 years agotests: use id to get user/group instead of environment
David Kalnischkies [Sat, 28 Nov 2015 00:27:49 +0000 (01:27 +0100)] 
tests: use id to get user/group instead of environment

debci seems to have a cleaner environment now and even if not we could
never guess nogroup, so figure it out properly via 'id'.

Git-Dch: Ignore

9 years agoignore deprecated method calls in deprecated method
David Kalnischkies [Fri, 27 Nov 2015 22:49:15 +0000 (23:49 +0100)] 
ignore deprecated method calls in deprecated method

Git-Dch: Ignore

9 years agooutsmart gcc -O3 over-optimization in pkgCdrom::FindPackages
David Kalnischkies [Fri, 27 Nov 2015 21:22:21 +0000 (22:22 +0100)] 
outsmart gcc -O3 over-optimization in pkgCdrom::FindPackages

Seems like a simpler workaround than forcing a lower optimization
level just for this for all of apt.

See also:
https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1473674

9 years agoupdate arch-specific symbols in symbols file
David Kalnischkies [Fri, 27 Nov 2015 16:37:16 +0000 (17:37 +0100)] 
update arch-specific symbols in symbols file

Git-Dch: Ignore

9 years ago./prepare-release pre-export 1.1.1
Michael Vogt [Fri, 27 Nov 2015 15:06:20 +0000 (16:06 +0100)] 
./prepare-release pre-export

9 years agoprepare 1.1.1 release
Michael Vogt [Fri, 27 Nov 2015 15:05:45 +0000 (16:05 +0100)] 
prepare 1.1.1 release

9 years agosay 'master' is default branch in README, too
David Kalnischkies [Fri, 27 Nov 2015 14:47:35 +0000 (15:47 +0100)] 
say 'master' is default branch in README, too

Git-Dch: Ignore

9 years agoadd messages to our deprecation warnings in libapt
David Kalnischkies [Fri, 27 Nov 2015 14:40:47 +0000 (15:40 +0100)] 
add messages to our deprecation warnings in libapt

Git-Dch: Ignore