]> git.saurik.com Git - apt.git/log
apt.git
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

8 years agozh_CN.po: fix translation bug. (Closes: #818177)
Zhou Mo [Tue, 15 Mar 2016 01:29:14 +0000 (01:29 +0000)] 
zh_CN.po: fix translation bug. (Closes: #818177)

8 years agomethods/gpgv: Reject weak digest algorithms
Julian Andres Klode [Mon, 14 Mar 2016 14:35:14 +0000 (15:35 +0100)] 
methods/gpgv: Reject weak digest algorithms

This keeps a list of weak digest algorithms. For now, only MD5
is disabled, as SHA1 breaks to many repos.

8 years agoRevert "Handle ERRSIG in the gpgv method like BADSIG"
Julian Andres Klode [Mon, 14 Mar 2016 13:44:33 +0000 (14:44 +0100)] 
Revert "Handle ERRSIG in the gpgv method like BADSIG"

This reverts commit 76a71a1237d22c1990efbc19ce0e02aacf572576.

That commit broke the test suite.

Gbp-Dch: ignore

8 years agoHandle ERRSIG in the gpgv method like BADSIG
Julian Andres Klode [Mon, 14 Mar 2016 13:23:50 +0000 (14:23 +0100)] 
Handle ERRSIG in the gpgv method like BADSIG

ERRSIG is created whenever a key uses an unknown/weak digest
algorithm, for example. This allows us to report a more useful
error than just "unknown apt-key error.":

The following signatures were invalid: ERRSIG 13B00F1FD2C19886 1 2 01 1457609403 5

While still not being the best reportable error message, it's
better than unknown apt-key error and hopefully redirects users
to complain to their repository owners.

8 years agotest: Move --weak-digest initialization to the right place
Julian Andres Klode [Mon, 14 Mar 2016 12:49:25 +0000 (13:49 +0100)] 
test: Move --weak-digest initialization to the right place

This was wrong and caused some issues because apt-key invoked
host apt-config with our library.

Gbp-Dch: ignore

8 years agotest: Use SHA512 digests for GPG, reject SHA1-based signatures
Julian Andres Klode [Mon, 14 Mar 2016 12:24:17 +0000 (13:24 +0100)] 
test: Use SHA512 digests for GPG, reject SHA1-based signatures

This makes the test suite safe if we ever need to reject SHA1
signatures in an update.

8 years agoSpanish apt-mark translation fix
Manuel "Venturi" Porras Peralta [Mon, 14 Mar 2016 00:50:22 +0000 (01:50 +0100)] 
Spanish apt-mark translation fix

"%s can not be marked as it is not installed." was incorrectly
translated as "%s no se puede marcar como no instalado.\n",
which means "%s can not be marked as not installed."

Thanks to Marcos Del Sol Vives for reporting & to the spanish
translation team – and in particular Camaleón and Venturi –
for review and correction of this issue!

[commit message by commiter]

Closes: 817999
8 years agoenforce verify of filesize in 'apt-get source'
David Kalnischkies [Sun, 13 Mar 2016 21:44:37 +0000 (22:44 +0100)] 
enforce verify of filesize in 'apt-get source'

The structure we parse the data into has a dedicated size field, but it
tends to be easier to handle it as a (very weak) checksum.

8 years agodon't use Desc.URI to calculate .diff/Index filenames
David Kalnischkies [Sun, 13 Mar 2016 00:02:30 +0000 (01:02 +0100)] 
don't use Desc.URI to calculate .diff/Index filenames

The URI descibing an item can change via mirrors/redirectors which
causes the .diff/Index files to get the wrong names in storage.

Git-Dch: Ignore

8 years agostreamline dpkgpm cleanup-handling
David Kalnischkies [Thu, 10 Mar 2016 12:15:52 +0000 (13:15 +0100)] 
streamline dpkgpm cleanup-handling

The (unlikely) waitpid failure case should fallthrough the code just
like the other failures (and successes) instead of taking a shortcut
avoiding all the cleanup (progress) and finishing touches (log, state).

This also delays the cleanup of the progress until apt is really done
with everything and "just" has the post-invokes left to do, so the
period of 'apt looks finished as it stopped the progress' and 'apt
really finished as I have the shell-prompt back' is shorter even if
there is no progress reported anymore, so the bar lingers at 100%…

Ideally even the post-invokes would be covered by progress, but they
can have their own output and dealing with that could be hard.

Git-Dch: Ignore

8 years agoflush line-clearing on progress stop before post-invoke
David Kalnischkies [Thu, 10 Mar 2016 12:06:29 +0000 (13:06 +0100)] 
flush line-clearing on progress stop before post-invoke

All other interactions with std::cout are flushed directly, just in the
stop case we hadn't done it – no problem expect if there is still output
coming after apt is done like in the case of a post-invoke script
producing output.

Closes: 793672
8 years agoaptwebserver: fix html validation issues
David Kalnischkies [Sun, 13 Mar 2016 22:30:05 +0000 (23:30 +0100)] 
aptwebserver: fix html validation issues

Iceweasel^WFirefox complains about the missing encoding in its console
which can be a bit annoying in interactive sessions, so fixing these
issues has no effect on apt itself, but on the testers.

Git-Dch: Ignore

8 years agorequire $(HASH)-Download field in .diff/Index files
David Kalnischkies [Mon, 14 Mar 2016 00:09:32 +0000 (01:09 +0100)] 
require $(HASH)-Download field in .diff/Index files

Now that we ignore SHA1-only files it makes sense to require also the
provision of hashes for the compressed patches as this was introduced in
the same patchset as support for non-SHA1 hashes in the file itself in
dak and adding support in other archive creators (if they support pdiffs
at all) will likely be in the same batch.

The reason for the change itself is simple: If you are 'scared' enough
about the security of SHA1, you shouldn't uncompress a file you haven't
verified at all – after all, it could be exploiting a bug or a zip bomb.

8 years agotest: remove SHA1 support testing as unsupported
David Kalnischkies [Sun, 13 Mar 2016 20:49:37 +0000 (21:49 +0100)] 
test: remove SHA1 support testing as unsupported

Given that we refuse to use SHA1-only .diff/Indexes no point in shipping
and running code which pretends to check support for it which given that
all these tests are run 3 times eats a noticeable amount of time.

Git-Dch: Ignore

8 years agoTest that SHA1-only .diff/Index files are not used
Julian Andres Klode [Sun, 13 Mar 2016 12:05:30 +0000 (13:05 +0100)] 
Test that SHA1-only .diff/Index files are not used

Ensure that .diff/Index files that only contain SHA1 values and no
SHA2 values are not used.

8 years agoDo not consider SHA1 usable
Julian Andres Klode [Sun, 13 Mar 2016 11:21:09 +0000 (12:21 +0100)] 
Do not consider SHA1 usable

SHA1 is not reasonably secure anymore, so we should not consider it
usable anymore. The test suite is adjusted to account for this.

8 years agoUse native architecture instead of amd64 for build-dep-purge test
Julian Andres Klode [Thu, 10 Mar 2016 10:43:02 +0000 (11:43 +0100)] 
Use native architecture instead of amd64 for build-dep-purge test

Using amd64 broke the test case on non-amd64 architectures. Query
the native architecture from dpkg and use that instead.

The definition of NATIVE is copied from the test
test-architecture-specification-parsing.

8 years agoDutch manpages translation update
Frans Spiesschaert [Tue, 8 Mar 2016 12:52:13 +0000 (13:52 +0100)] 
Dutch manpages translation update

Closes: 817062
8 years agoDutch program translation update
Frans Spiesschaert [Tue, 8 Mar 2016 12:49:52 +0000 (13:49 +0100)] 
Dutch program translation update

Closes: 817060
8 years agoRelease 1.2.6 1.2.6
Julian Andres Klode [Mon, 7 Mar 2016 18:51:34 +0000 (19:51 +0100)] 
Release 1.2.6

8 years agoapt-pkg/algorithms.cc: Avoid stack buffer overflow in KillList
Julian Andres Klode [Mon, 7 Mar 2016 00:32:08 +0000 (01:32 +0100)] 
apt-pkg/algorithms.cc: Avoid stack buffer overflow in KillList

Dynamically allocate KillList in order to avoid an overflow when
more than 100 elements would be written to it.

This happened while playing around with the status file from
Bug#701069 on a modern system.

8 years agoFix several typos
Veres Lajos [Sun, 6 Mar 2016 23:13:26 +0000 (00:13 +0100)] 
Fix several typos

This effectively merges branch 'typofixes-vlajos-20150807' of github.com:vlajos/apt
with the following commit:

commit 13cacb3e2e2352ba701e769fc889e3344fabbf7e
Author: Veres Lajos <vlajos@gmail.com>
Date:   Sun Aug 9 00:12:53 2015 +0100

    typofix - https://github.com/vlajos/misspell_fixer

It has been rebased for a better commit message.

8 years agoRelease 1.2.5 1.2.5
Julian Andres Klode [Sun, 6 Mar 2016 18:47:53 +0000 (19:47 +0100)] 
Release 1.2.5

8 years agodebian/control: Set Standards-Version to 3.9.7
Julian Andres Klode [Sun, 6 Mar 2016 14:27:10 +0000 (15:27 +0100)] 
debian/control: Set Standards-Version to 3.9.7

We do not follow the recommendation with regards to placement
of documentation in apt-doc, as we install in apt-doc, but
it's only a recommendation and I don't want think we should
move them.

8 years agoget group again after potential remap in Source: parse
David Kalnischkies [Sun, 6 Mar 2016 13:44:06 +0000 (14:44 +0100)] 
get group again after potential remap in Source: parse

Mysteriously segfaults only on i386 for me, but at least one reporter
had the same behavior and it makes sense that this is the problem as the
parsing of Source: was fixed in 1.2.2 – before the not remapped group
was not used.

We don't use our usual Dynamic<> trick here as we don't have it in the
parser. Its a bit of a layer violation to do this parsing here, but its
how it is always was…

Until next time with this lovely kind of problem.

Closes: 812251
Thanks: Francesco Poli and Marc Haber for testdata.

8 years agoPrevent double remapping of iterators and string views
Julian Andres Klode [Sun, 6 Mar 2016 13:44:53 +0000 (14:44 +0100)] 
Prevent double remapping of iterators and string views

If an iterator or a stringview has multiple dynamic objects
registered with it, it may be remapped twice. Prevent that
by noting which iterators/views we have seen and not remapping
one if we have already seen it.

We most likely do not have any instance of multiple dynamics
on a single object, but let's play safe - the overhead is not
high.

8 years agodo not move not-failed pdiff-patches into CWD on failure
David Kalnischkies [Sun, 6 Mar 2016 11:03:34 +0000 (12:03 +0100)] 
do not move not-failed pdiff-patches into CWD on failure

If a single pdiff fails, we have to fail the entire patching endeavour
and fall back to getting the complete file instead. That is easy in
serverside merged pdiffs as we get them one by one. For clientside we
get them all at once through, which means that a failure in one has to
stop the entire pipeline, which works as expected (as proven by the
bugreporters as they don't even notice it happening). The problem is
just that the first failing pdiff will do the cleanup, so another pdiff
which happens to be successfully acquired after we processed the failure
doesn't find the file it is supposed to use as a basename anymore, so
the patch is renamed to what should be the unique extension and moved
into the current working directory. Processing is then stopped as the
patch realizes that it isn't the last one which completed downloading.

On the plus side this means this is neither us using a bad temporary
location nor a security problem. It "just" overrides unconditionally
files in your current working directory (if you happen to have them
named like a pdiff patch – a bit unlikely perhaps) and so drops files
there which are never used again.

I guess this was introduced in 4e3c5633b1e74b4f58b95f339cfbbf4cbf21ab3e
for real as I made the need for the existence of the base file rather
explicit, but the potential lingers in the code for far longer.

Closes: #816837
8 years agoFix lzma write support to handle "try again" case
Colin Watson [Sat, 5 Mar 2016 01:17:12 +0000 (22:17 -0300)] 
Fix lzma write support to handle "try again" case

The liblzma-based write code needs the same tweaks that the read code
already has to cope with the situation where lzma_code returns zero the
first time through because avail_out is zero, but will do more work if
called again.

This ports the read tweaks to the write code as closely as possible
(including matching comments etc.).

Closes: #751688
8 years agoadd test for apt-key 0xKEY and use parameter expansion
David Kalnischkies [Sun, 6 Mar 2016 09:16:59 +0000 (10:16 +0100)] 
add test for apt-key 0xKEY and use parameter expansion

Fixed in f7bd44bae0d7cb7f9838490b5eece075da83899e already, but the
commit misses the Closes tag and while we are at it we can add a simple
regression test and micro-optimize it a bit.

Thanks: James McCoy for the suggestion.
Closes: 816691
8 years agosupport APT::Get::Build-Dep-Automatic again in build-dep
David Kalnischkies [Tue, 16 Feb 2016 19:32:28 +0000 (20:32 +0100)] 
support APT::Get::Build-Dep-Automatic again in build-dep

In a249b3e6fd798935a02b769149c9791a6fa6ef16 I dropped with the manual
first resolver step also the support for installing build-deps as
automatic in such a way that it behaved like this option was enabled by
default.

Restoring support for it means that we go back to mark build-
dependencies as manually installed again by default and provide this
option to keep them as automatically installed.

8 years agotests: expect no output while compiling noopchroot
David Kalnischkies [Tue, 16 Feb 2016 15:02:46 +0000 (16:02 +0100)] 
tests: expect no output while compiling noopchroot

This way we hopefully notice (new) warnings in this little helper.

Git-Dch: Ignore

8 years agodeal with partially downloaded changelogs
David Kalnischkies [Tue, 16 Feb 2016 14:35:36 +0000 (15:35 +0100)] 
deal with partially downloaded changelogs

Changelogs are relatively small and we have no hashes for them, but we
had partial support for them before, so lets stick to it.

This also deletes the (partial) file before moving the downloaded file
into its place – rename(2) should be doing this by itself, but testing
on semaphoreci suggests that this isn't always the case (error is "Stale
file handle") and we don't need an atomic replace here, so be explicit.

Git-Dch: Ignore

8 years agoapt-key del should correctly handle keyids prefixed with 0x
Daniel Kahn Gillmor [Fri, 4 Mar 2016 09:23:24 +0000 (10:23 +0100)] 
apt-key del should correctly handle keyids prefixed with 0x

8 years agoRelease 1.2.4 1.2.4
Julian Andres Klode [Sat, 27 Feb 2016 13:03:17 +0000 (14:03 +0100)] 
Release 1.2.4

8 years agoAdd missing numeric includes in files using std::accumulate()
Julian Andres Klode [Fri, 26 Feb 2016 14:17:14 +0000 (15:17 +0100)] 
Add missing numeric includes in files using std::accumulate()

Reported-By: Helmut Grohne on IRC
8 years agoFix crash with empty architecture list
Julian Andres Klode [Thu, 25 Feb 2016 15:46:42 +0000 (16:46 +0100)] 
Fix crash with empty architecture list

If the architecture list is empty somehow, fail normally.

LP: #1549819

8 years agopass versioned provides to external solvers in EDSP
David Kalnischkies [Tue, 16 Feb 2016 10:34:21 +0000 (11:34 +0100)] 
pass versioned provides to external solvers in EDSP

The EDSP output generated by apt didn't include the versioned provides
information so that every provides looked like an unversioned one in the
eyes of an external resolver.

8 years agoFix maintscript to properly remove 20changelog
Julian Andres Klode [Mon, 15 Feb 2016 08:04:12 +0000 (09:04 +0100)] 
Fix maintscript to properly remove 20changelog

Closes: #814754
8 years agoalways download changelogs into /tmp first
David Kalnischkies [Thu, 11 Feb 2016 21:54:49 +0000 (22:54 +0100)] 
always download changelogs into /tmp first

pkgAcqChangelog has the default behaviour of downloading a changelog to
a temporary directory (inside /tmp, not /tmp directly), which is cleaned
up on shutdown, but this can be overridden to store the changelog more
permanently – but that caries a permission problem.

For changelog we can 'easily' solve this by always downloading to a
temporary directory and only move it out of there on done.

8 years agouse local changelog from /usr/share/doc if possible
David Kalnischkies [Thu, 11 Feb 2016 20:07:56 +0000 (21:07 +0100)] 
use local changelog from /usr/share/doc if possible

If pkgAcqChangelog is told to acquire the changelog for a version it
will check first if this version is installed on the disk and if so will
use the local changelog in /usr/share/doc (possibily/likely gz
compressed) instead of downloading the file from the web.

An option is provided to disable this, which is enabled by default for
the Ubuntu vendor as they truncate the local changelogs – and for apts
--print-uris action.

8 years agoRelease 1.2.3 1.2.3
Julian Andres Klode [Wed, 10 Feb 2016 17:02:45 +0000 (18:02 +0100)] 
Release 1.2.3

Build system messed up the 1.2.2 commit by not updating the
.po files properly, so they are now.

8 years agotest: use our special downloaded dir for 'source' result
David Kalnischkies [Wed, 10 Feb 2016 13:17:06 +0000 (14:17 +0100)] 
test: use our special downloaded dir for 'source' result

Otherwise the test run as root fails seeing the
W: Can't drop privileges for downloading as file 'foo_1.tar.gz' couldn't be
accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
warning in a command which isn't supposed to warn.

One trivial test, two fixups and still counting…

Git-Dch: Ignore

8 years agoaccept any tarball compression in 814139 testcase
David Kalnischkies [Wed, 10 Feb 2016 12:50:40 +0000 (13:50 +0100)] 
accept any tarball compression in 814139 testcase

Travis still uses a dpkg version which defaults to gz and as which
compression is picked isn't all to important as long as one is just
accept any.

Git-Dch: Ignore

8 years agotest that seeking to a position earlier in the file works
Julian Andres Klode [Wed, 10 Feb 2016 12:29:19 +0000 (13:29 +0100)] 
test that seeking to a position earlier in the file works

This tests the fix for #812994, #813000

Gbp-Dch: ignore

8 years agoget dpkg lock in build-dep if cache was invalid again
David Kalnischkies [Wed, 10 Feb 2016 11:26:49 +0000 (12:26 +0100)] 
get dpkg lock in build-dep if cache was invalid again

Regression introduced in a249b3e6fd798935a02b769149c9791a6fa6ef16, which
in the case of an invalid cache would build the first part unlocked and
later pick up the (still unlocked) cache for further processing, so the
system got never locked and apt would end up complaining about being
unable to release the lock at shutdown.

The far more common case of having a valid cache worked as expected and
hence covered up the problem – especially as tests who would have
noticed it are simulations only, which do not lock.

Closes: 814139
Reported-By: Balint Reczey <balint@balintreczey.hu>
Reported-By: Helmut Grohne <helmut@subdivi.de> on IRC
8 years agoSet seekpos to 0 after reopening files in Seek()
Julian Andres Klode [Wed, 10 Feb 2016 11:45:47 +0000 (12:45 +0100)] 
Set seekpos to 0 after reopening files in Seek()

If we just reopened the file, we also need to reset the current
seek position when we reset the buffer, otherwise the code will
not try to seek to the position given to Skip (from 0), but will
try to seek to old offset + the position given to skip.

Closes: #812994, #813000
8 years agoRelease 1.2.2 1.2.2
Julian Andres Klode [Thu, 4 Feb 2016 21:50:52 +0000 (22:50 +0100)] 
Release 1.2.2

8 years agoUse some semantically more correct buffer operations
Julian Andres Klode [Thu, 4 Feb 2016 17:33:30 +0000 (18:33 +0100)] 
Use some semantically more correct buffer operations

When writing into the buffer write to free() bytes starting
at getend(), instead of buffersize_max bytes at get()
-> get() is a read pointer.

This makes no difference in practice though, as we reset
the buffer before the call, so start = end = 0.

Gbp-Dch: ignore

8 years agotest: Fix apt-key tests to work with current gpg 2.1
Julian Andres Klode [Thu, 4 Feb 2016 17:13:05 +0000 (18:13 +0100)] 
test: Fix apt-key tests to work with current gpg 2.1

8 years agoCorrectly report write errors when flushing buffered writer
Julian Andres Klode [Thu, 4 Feb 2016 17:00:42 +0000 (18:00 +0100)] 
Correctly report write errors when flushing buffered writer

We cannot just return false without setting an error,
as InternalWrite does not set one itself.

8 years agorred: If there were I/O errors, fail
Julian Andres Klode [Thu, 4 Feb 2016 16:56:27 +0000 (17:56 +0100)] 
rred: If there were I/O errors, fail

We basically ignored errors from writing and flushing, let's
not do that.

8 years agoNEWS: Prefix the keep deb option with Binary::apt::
Julian Andres Klode [Thu, 4 Feb 2016 15:32:35 +0000 (16:32 +0100)] 
NEWS: Prefix the keep deb option with Binary::apt::

I find the per-binary overrides a bit confusing in their current
form, but let's tell the user the truth.

Closes: #812111
8 years agoMerge branch 'master' of github.com:adrian17/apt
Julian Andres Klode [Thu, 4 Feb 2016 00:08:50 +0000 (01:08 +0100)] 
Merge branch 'master' of github.com:adrian17/apt

8 years agoedspsystem.cc: include <stdlib.h> for mkdtemp
Fredrik Fornwall [Mon, 7 Dec 2015 23:48:50 +0000 (00:48 +0100)] 
edspsystem.cc: include <stdlib.h> for mkdtemp

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

Closes: #807367
8 years agoAvoid temporary strings in SubstVar.
Adrian Wielgosik [Tue, 2 Feb 2016 22:15:25 +0000 (23:15 +0100)] 
Avoid temporary strings in SubstVar.

Microoptimization, but still gives a measurable 2-3% improvement
when using commands with lots of output like `apt list`.

8 years agoavoid building dependency tree in 'source' command
David Kalnischkies [Wed, 3 Feb 2016 13:56:49 +0000 (14:56 +0100)] 
avoid building dependency tree in 'source' command

We don't need the dependencies for obvious reasons and we don't need the
candidate version either, so building a pkgDepCache is wasted effort,
which we can stop doing now that build-dep cleared the path.

8 years agouse pkgCache::VS instead of pkgDepCache::VS()
David Kalnischkies [Wed, 3 Feb 2016 11:58:23 +0000 (12:58 +0100)] 
use pkgCache::VS instead of pkgDepCache::VS()

The later just calls the earlier, but the later needs the fullblown
dependency cache to be initialized, which is a very costly operation and
isn't done anymore that early in the run as we would need to throw away
and rebuild it again after we got all the information about source pkgs.

As we end up with a nullptr for the pkgDepCache, we use a slightly
longer calling convention to make sure that we use the pkgCache
directly, avoiding nullptr induced segfaults and costly operations.

Git-Dch: Ignore
Reported-By: Balint Reczey <balint@balintreczey.hu>
8 years agoDrop the g++ build-dep, transition is done
Julian Andres Klode [Wed, 3 Feb 2016 08:58:45 +0000 (09:58 +0100)] 
Drop the g++ build-dep, transition is done

It's not cross-satisfiable.

Reported-by: Helmut Grohne
8 years agoMerge github.com:adrian17/apt
Julian Andres Klode [Tue, 2 Feb 2016 21:19:36 +0000 (22:19 +0100)] 
Merge github.com:adrian17/apt

8 years agoTry avoiding loading long package description
Adrian Wielgosik [Tue, 2 Feb 2016 17:55:48 +0000 (18:55 +0100)] 
Try avoiding loading long package description

It's a fairly expensive call and it's called on every package,
even though it's usually only used when we're interested in
a small number of packages.
Long description is currently only shown by this function
when using `apt search X --full`.

On my PC, this patch speeds up `apt list` by roughly 20%
and `apt list --installed` by 1-2%.

8 years agoSpanish program translation update
Manuel "Venturi" Porras Peralta [Tue, 2 Feb 2016 13:32:22 +0000 (14:32 +0100)] 
Spanish program translation update

Closes: 813467
8 years agoDo not buffer writes larger than the buffer if possible
Julian Andres Klode [Mon, 1 Feb 2016 15:46:53 +0000 (16:46 +0100)] 
Do not buffer writes larger than the buffer if possible

It makes no sense to split a large block into multiple small
blocks, so when we have the chance to write them unbuffered,
do so.

8 years agoBufferedWriteFileFdPrivate: Simplify InternalWrite()
Julian Andres Klode [Mon, 1 Feb 2016 15:28:43 +0000 (16:28 +0100)] 
BufferedWriteFileFdPrivate: Simplify InternalWrite()

We do not need the loop, FileFd::Private() handles this for us.

Gbp-Dch: ignore

8 years agosimple_buffer::write: Use free() instead of maxsize - size()
Julian Andres Klode [Mon, 1 Feb 2016 15:25:03 +0000 (16:25 +0100)] 
simple_buffer::write: Use free() instead of maxsize - size()

We want to check whether the amount of free space is smaller
than the requested write size. Checking maxsize - size() is
incorrect for bufferstart >= 0, as size() = end - start.

Gbp-Dch: ignore

8 years agosupport <libc>-<kernel>-<cpu> in architecture specs
David Kalnischkies [Sun, 31 Jan 2016 21:32:45 +0000 (22:32 +0100)] 
support <libc>-<kernel>-<cpu> in architecture specs

APT has a different understanding than dpkg (#748936) what matches and
what doesn't match an architecture specification as it isn't converting
back (and forward) to Debian triplets. That has to eventually be solved
some way or the other, but until that happens we change the matching in
apt so that porters can continue their work on non-gnu libc-ports even
if policy doesn't specify that yet (and dpkg just supporting it "by
accident" via triplets).

The initial patch was reformatted, fixed in terms of patterns containing
"any-any", dealing with expanding an arch without libc to gnu while a
pattern expands libc to any, the parsedepends test was fixed (the new
if's were inserted one step too early) and another test just for the
specifications added.

Closes: #812212
Thanks: Bálint Réczey for initial patch

8 years agotest all redirection codes work as expected
David Kalnischkies [Thu, 28 Jan 2016 23:52:48 +0000 (00:52 +0100)] 
test all redirection codes work as expected

Git-Dch: Ignore

8 years agouse CPPFLAGS instead of CXXFLAGS for stringview export
David Kalnischkies [Thu, 28 Jan 2016 23:49:07 +0000 (00:49 +0100)] 
use CPPFLAGS instead of CXXFLAGS for stringview export

Git-Dch: Ignore

8 years agofix "Mismatched free() / delete / delete []" in simple_buffer
Stefan Bühler [Sat, 30 Jan 2016 11:06:02 +0000 (12:06 +0100)] 
fix "Mismatched free() / delete / delete []" in simple_buffer

8 years agoonly warn about missing/invalid Date field for now
David Kalnischkies [Wed, 27 Jan 2016 14:28:17 +0000 (15:28 +0100)] 
only warn about missing/invalid Date field for now

The Date field in the Release file is useful to avoid allowing an
attacker to 'downgrade' a user to earlier Release files (and hence to
older states of the archieve with open security bugs). It is also needed
to allow a user to define min/max values for the validation of a Release
file (with or without the Release file providing a Valid-Until field).

APT wasn't formally requiring this field before through and (agrueable
not binding and still incomplete) online documentation declares it
optional (until now), so we downgrade the error to a warning for now to
give repository creators a bit more time to adapt – the bigger ones
should have a Date field for years already, so the effected group should
be small in any case.

It should be noted that earlier apt versions had this as an error
already, but only showed it if a Valid-Until field was present (or the
user tried to used the configuration items for min/max valid-until).

Closes: 809329
8 years agodeal better with (very) small apt::cache-start values
David Kalnischkies [Tue, 26 Jan 2016 23:15:12 +0000 (00:15 +0100)] 
deal better with (very) small apt::cache-start values

It is a bit academic to support values which aren't big enough to fit even
the hashtables without resizing, but cleaning up ensures that we do the
right thing (aka not segfaulting) even if something goes wrong in these
deep layers. You still can't have very very small values through…

Git-Dch: Ignore

8 years agoconvert Version() and Architecture() to APT::StringView
David Kalnischkies [Tue, 26 Jan 2016 22:18:05 +0000 (23:18 +0100)] 
convert Version() and Architecture() to APT::StringView

Part of hidden classes, so conversion is abi-free.

Git-Dch: Ignore

8 years agoremove unused Description methods in listparsers
David Kalnischkies [Tue, 26 Jan 2016 20:58:57 +0000 (21:58 +0100)] 
remove unused Description methods in listparsers

These virtual methods are implemented in hidden classes, so we can drop
them without breaking the ABI.

Git-Dch: Ignore

8 years agoget sources for packages in multiple releases again
David Kalnischkies [Tue, 26 Jan 2016 20:09:47 +0000 (21:09 +0100)] 
get sources for packages in multiple releases again

In 321213f0dcdcdaab04e01663e7a047b261400c9c Andreas Cadhalpun corrected
the incorrect overriding of earlier better-fitting results with later
(semi-)matches – but that broke the case in which packages are in multiple
releases in the same version (and the user has both releases configured).

Closes: 812497
8 years agoparse version correctly from binary Source field
David Kalnischkies [Tue, 26 Jan 2016 18:17:11 +0000 (19:17 +0100)] 
parse version correctly from binary Source field

In commit a221efc331693f8905da870141756c892911c433 I promoted the source
package name and version to the binary cache for faster access by e.g.
EDSP, but due to changing the interpretation length to soon we always
ignored the version part of the Source field, so that packages ended up
having the binary version as source version – which while usually just
fine it is wrong for binary rebuilds.

Closes: 812492
8 years agostablize gtest testcase environment
David Kalnischkies [Tue, 26 Jan 2016 16:42:33 +0000 (17:42 +0100)] 
stablize gtest testcase environment

Avoid the dependency on a specific current path for the tar test and
ensure that _system is correctly initialized (gcc-6 runs into a segfault
otherwise and with it fixed starts to depend on the multi-arch
configuration of the running system… not good).

Git-Dch: Ignore

8 years agoact on various suggestions from cppcheck
David Kalnischkies [Mon, 25 Jan 2016 21:13:52 +0000 (22:13 +0100)] 
act on various suggestions from cppcheck

Reported-By: cppcheck
Git-Dch: Ignore

8 years agodrop explicit check for EWOULDBLOCK if it has the same value as EAGAIN
David Kalnischkies [Mon, 25 Jan 2016 19:05:54 +0000 (20:05 +0100)] 
drop explicit check for EWOULDBLOCK if it has the same value as EAGAIN

gcc correctly reports that we check for the same value twice, expect
that the manpage of read(2) tells us to do it for portability, so to
make both sides happy lets add a little #if'ing here.

Reported-By: gcc-6
Git-Dch: Ignore

8 years agoDelete copy constructor and operator= for Dynamic
Julian Andres Klode [Tue, 26 Jan 2016 11:42:39 +0000 (12:42 +0100)] 
Delete copy constructor and operator= for Dynamic

This would mess up reference counting and should not be allowed
(it could be implemented correctly, but it would not be efficient
and we do not need it).

Gbp-Dch: ignore

8 years agofix tests run via sudo checking the history file
David Kalnischkies [Mon, 25 Jan 2016 18:14:37 +0000 (19:14 +0100)] 
fix tests run via sudo checking the history file

Git-Dch: Ignore

8 years agoreimplement build-dep via apts normal resolver
David Kalnischkies [Thu, 21 Jan 2016 22:22:00 +0000 (23:22 +0100)] 
reimplement build-dep via apts normal resolver

build-dep was implemented by parsing the build-dependencies of a package
and figuring out which packages to install/remove based on this. That
means that for the first level of dependencies build-dep was
implementing its very own resolver with all the benefits (aka: bugs)
this gives us for not using the existing resolver for all levels.

Making this work involves generating a dummy binary package with fitting
Depends and Conflicts and as we can't create them out of thin air the
cache generation needs to be involved so we end up writing a Packages
file which we want to parse – after we have parsed the other Packages
files already. With .dsc/.deb files we could add them before we started
parsing anything.

With a bit of care we can avoid generating too much data we have to
throw away again (as many parts assume that e.g. the count of packages
doesn't change midair), so that on a speed front there shouldn't be
much of a difference, but output can be slightly confusing as if we have
a completely valid cache on disk the "Reading package lists... Done" is
printed two times – but apt is pretty quick about it in that case.

Closes: #137560, #444930, #489911, #583914, #728317, #812173
8 years agouse consistently the last : as name:arch separator
David Kalnischkies [Fri, 22 Jan 2016 01:00:42 +0000 (02:00 +0100)] 
use consistently the last : as name:arch separator

Proper debian packages do not contain ':' in the package name, so for
real packages this is a non-issue, but apt itself frequently makes use
of packages with such an illegal name for internal proposes.

Git-Dch: Ignore

8 years agoprefer upgrading installed provides satisfier
David Kalnischkies [Wed, 20 Jan 2016 14:49:46 +0000 (15:49 +0100)] 
prefer upgrading installed provides satisfier

If you have chosen to install a foreign architecture provider it is
more reasonable to keep this provider instead of removing this one to
replace it with a newer version from a (usually) more preferred arch.

Git-Dch: Ignore

8 years agotreat an empty dependency field just like it doesn't exist
David Kalnischkies [Wed, 20 Jan 2016 11:24:48 +0000 (12:24 +0100)] 
treat an empty dependency field just like it doesn't exist

Git-Dch: Ignore

8 years agoalways create pkg at the time pkg:arch is created
David Kalnischkies [Tue, 19 Jan 2016 23:09:36 +0000 (00:09 +0100)] 
always create pkg at the time pkg:arch is created

To resolve dependencies like "pkg:arch" we create a package with the
name "pkg:arch" and the architecture "any". We create these packages
only if a dependency needs it as these kind of dependencies aren't that
common. This commit ensured that in the even this architecture specific
dependency is the only relation this package has we still create the
underlying package to have them available in provides resolution.

8 years agoRelease 1.2.1 1.2.1
Julian Andres Klode [Mon, 25 Jan 2016 17:04:27 +0000 (18:04 +0100)] 
Release 1.2.1

8 years agoUse c++11 for loop in AptHistoryRequestingUser
Michael Vogt [Mon, 25 Jan 2016 16:17:54 +0000 (17:17 +0100)] 
Use c++11 for loop in AptHistoryRequestingUser

Git-Dch: ignore

8 years agoStore "Requested-By" user in history.log in a simpler format
Michael Vogt [Mon, 25 Jan 2016 15:49:48 +0000 (16:49 +0100)] 
Store "Requested-By" user in history.log in a simpler format

Git-Dch: ignore
Thanks: David Kalnischkies

8 years agoLog calling SUDO_USER or PKEXEC_UID in history.log
Michael Vogt [Mon, 25 Jan 2016 13:44:42 +0000 (14:44 +0100)] 
Log calling SUDO_USER or PKEXEC_UID in history.log

Thanks: Thomas Reusch