]> git.saurik.com Git - apt.git/log
apt.git
9 years agocentralize unlink checks in acquire-item
David Kalnischkies [Thu, 29 Oct 2015 11:40:41 +0000 (12:40 +0100)] 
centralize unlink checks in acquire-item

Removals in the acquire progress can be pretty important, so a failure
should be silently ignored, so we wrap our unlink call in a slightly
more forgiving wrapper checking things.

Git-Dch: Ignore

9 years agodo not cleanup .diff/Index files on Hit
David Kalnischkies [Thu, 29 Oct 2015 11:38:50 +0000 (12:38 +0100)] 
do not cleanup .diff/Index files on Hit

Git-Dch: Ignore

9 years agorevamp all tools help messages
David Kalnischkies [Tue, 27 Oct 2015 08:57:26 +0000 (09:57 +0100)] 
revamp all tools help messages

The general idea is: A small paragraph on the tool itself as a
description, a list of the most used (!= all) commands available in the
tool, a remark where to find more information on the tool and its
commands (aka: in the manpage) and finally a common block referring to
even more manpages. In exchange options are completely omitted from the
output as well as deprecated or obscure commands. (Better) Information
about them is available in the manpages anyway and the few options which
were listed before were also the least interesting ones (-o -c -q and co
are hardly of interest for someone totally new looking to find info by
asking for help and anyone with a bit of experience doesn't need this
short list. Those would need a list of options applying to the command
they call, but they are too numerous and command specific to list them
sanely in this context.

9 years agoshow version and type in "apt (r)depends"
David Kalnischkies [Mon, 26 Oct 2015 19:41:03 +0000 (20:41 +0100)] 
show version and type in "apt (r)depends"

We can't for compatibility reasons in apt-cache, but apt can.

Closes: 218995
9 years agohidden support more apt-get/apt-cache commands in apt
David Kalnischkies [Mon, 26 Oct 2015 18:30:44 +0000 (19:30 +0100)] 
hidden support more apt-get/apt-cache commands in apt

apt is supposed to be a user-friendly interface, so while these commands
are usually poweruser material and therefore do not need to be shown in
general introduction manpages/help messages its of no use to not allow
users to use them.

This includes clean, autoclean, build-dep, source, download, changelog,
depends, rdepends and showsrc – it doesn't include more non-interactive
commands like dump or xvcg as those are usually used by scripts if at
all.

Closes: 778234, 780700, 781237
9 years agodeal with --version more centrally
David Kalnischkies [Mon, 26 Oct 2015 15:50:21 +0000 (16:50 +0100)] 
deal with --version more centrally

Git-Dch: Ignore

9 years agomove apts cmdline helper type into -private
David Kalnischkies [Mon, 26 Oct 2015 10:42:32 +0000 (11:42 +0100)] 
move apts cmdline helper type into -private

Its not as simple as I initially thought to abstract this enough to make
it globally usable, so lets not pollute global namespace with this for
now.

Git-Dch: Ignore

9 years agogenerate commands array after config is loaded
David Kalnischkies [Sun, 25 Oct 2015 22:45:09 +0000 (23:45 +0100)] 
generate commands array after config is loaded

This ensures that location strings loaded from a location specified via
configuration (Dir::Locale) effect the help messages for commands.

Git-Dch: Ignore

9 years agonew quiet level -qq for apt to hide progress output
David Kalnischkies [Sun, 25 Oct 2015 11:35:00 +0000 (12:35 +0100)] 
new quiet level -qq for apt to hide progress output

-q is for logging and -qqq (old -qq) basically kills every output expect
errors, so there should be a way of declaring a middleground in which
the output of e.g. 'update' isn't as verbose, but still shows some
things. The test framework was actually making use of by accident as it
ignored the quiet level in output setup for apt before.
Eventually we should figure out some better quiet levels for all tools…

9 years agodeduplicate main methods
David Kalnischkies [Sat, 24 Oct 2015 20:43:37 +0000 (22:43 +0200)] 
deduplicate main methods

All mains pretty much do the same thing, so lets try a little harder to
move the common parts into -private to have the real differences more
visible.

Git-Dch: Ignore

9 years agosplit up help messages for simpler reuse
David Kalnischkies [Thu, 22 Oct 2015 14:28:54 +0000 (16:28 +0200)] 
split up help messages for simpler reuse

That is one huge commit with busy work only: Help messages used to be
one big translateable string, which is a pain for translators and hard
to reuse for us. This change there 'explodes' this single string into
new string for each documented string trying hard to split up the
translated messages as well. This actually restores many translations as
previously adding a single command made all of the bug message fuzzy.
The splitup also highlighted that its easy to forget a line, duplicate
one and similar stuff.

Git-Dch: Ignore

9 years agodisable updating insecure repositories in apt by default
David Kalnischkies [Tue, 20 Oct 2015 16:31:10 +0000 (18:31 +0200)] 
disable updating insecure repositories in apt by default

apt is an interactive command and the reasons we haven't this option set
for everything is mostly in keeping compatibility for a little while
longer to allow scripts to be changed if need be.

9 years agorevamp apt(8) to refer more instead of duplicating
David Kalnischkies [Tue, 20 Oct 2015 15:45:35 +0000 (17:45 +0200)] 
revamp apt(8) to refer more instead of duplicating

As apt is targetted at users, lets try to make apt(8) for users as well
by giving only a quick overview about what is available and some
pointers for how to find a whole lot more details.

9 years agomove 'search' implementations as well
David Kalnischkies [Fri, 16 Oct 2015 22:26:57 +0000 (00:26 +0200)] 
move 'search' implementations as well

Git-Dch: Ignore

9 years agocentralize 'show' implementation of apt and apt-cache
David Kalnischkies [Fri, 16 Oct 2015 19:34:51 +0000 (21:34 +0200)] 
centralize 'show' implementation of apt and apt-cache

The show commands have different styles in both binaries as the audience
is potentially very different, but that doesn't mean we need to separate
the implementation especially as they are slightly similar. This also
allows us to switch between the different show versions at runtime via
an option.

Git-Dch: Ignore

9 years agoadd binary-specific options via Binary scope
David Kalnischkies [Fri, 16 Oct 2015 16:03:52 +0000 (18:03 +0200)] 
add binary-specific options via Binary scope

Especially with apt now, it can be useful to set an option only for apt
and not for apt-get. Using a binary-specific subtree which is merged into
the root seems like a simple enough trick to achieve this.

9 years agosuggest 'apt autoremove' to get right of unneeded packages
David Kalnischkies [Fri, 16 Oct 2015 10:54:14 +0000 (12:54 +0200)] 
suggest 'apt autoremove' to get right of unneeded packages

The bugreport is more conservative in asking for a conditional, but
given that this is a message intended to be read by users to be run by
users we should suggest using a command intended to be used by users.

And while we are at, add sudo to the message – conditional of course.

Closes: 801571
9 years agorefer to apt-secure(8) in unsecure repositories warning
David Kalnischkies [Thu, 15 Oct 2015 07:35:52 +0000 (09:35 +0200)] 
refer to apt-secure(8) in unsecure repositories warning

The manpage is also slightly updated to work better as a central hub to
push people from all angles into the right directions without writting a
book disguised as an error message.

9 years agorework errors and warnings around insecure repositories
David Kalnischkies [Tue, 13 Oct 2015 09:37:39 +0000 (11:37 +0200)] 
rework errors and warnings around insecure repositories

Insecure (aka unsigned) repositories are bad, period. We want to get
right of them finally and as a first step we are printing scary
warnings. This is already done, this commit just changes the messages to
be more consistent and prevents them from being displayed if
authenticity is guaranteed some other way (as indicated with
trusted=yes).

The idea is to first print the pure fact like "repository isn't signed"
as a warning (and later as an error), while giving an explaination in a
immediately following notice (which is displayed only in quiet level 0:
so in interactive use, not in scripts and alike).

Closes: 796549
9 years agoset failreasons similar to connect.cc based on curl errors
David Kalnischkies [Mon, 12 Oct 2015 20:26:36 +0000 (22:26 +0200)] 
set failreasons similar to connect.cc based on curl errors

Detecting network errors has some benefits in the acquire system as if
we can't connect to a host trying it for a million files is pointless.
http and co which use connect.cc deal with this, but https which uses
curl had connection failures as "normal" errors which could potentially
be worked around (like trying Release instead of the failed InRelease).

Git-Dch: Ignore

9 years agorevert accidental removal of documentation for trusted option in sources.list
David Kalnischkies [Mon, 12 Oct 2015 19:11:52 +0000 (21:11 +0200)] 
revert accidental removal of documentation for trusted option in sources.list

In b0d408547734100bf86781615f546487ecf390d9 I accidently removed the
documentation for Trusted and replaced it with Signed-By instead of
adding it.

Git-Dch: Ignore

9 years agoadd ConnectionTimedOut to transient failreasons list
David Kalnischkies [Mon, 12 Oct 2015 14:48:59 +0000 (16:48 +0200)] 
add ConnectionTimedOut to transient failreasons list

All other reasons from methods/connect.cc were already included.

Git-Dch: Ignore

9 years agosupport .deb files in upgrade operations as well
David Kalnischkies [Mon, 12 Oct 2015 13:57:53 +0000 (15:57 +0200)] 
support .deb files in upgrade operations as well

The main part is refactoring through to allow hiding the magic needed to
support .deb files in deeper layers of libapt so that frontends have
less exposure to Debian specific classes like debDebPkgFileIndex.

9 years agoshow progress info while 'downloading' a local .deb file
David Kalnischkies [Sun, 11 Oct 2015 21:05:47 +0000 (23:05 +0200)] 
show progress info while 'downloading' a local .deb file

Showing just "Get: [1234 B]" looks very strange, so we now print the
filename and as usual the package name, version and architecture.

9 years agounbreak the copy-method claiming hashsum mismatch since ~exp9
David Kalnischkies [Sun, 11 Oct 2015 11:58:23 +0000 (13:58 +0200)] 
unbreak the copy-method claiming hashsum mismatch since ~exp9

Commit 653ef26c70dc9c0e2cbfdd4e79117876bb63e87d broke the camels back in
sofar that everything works in terms of our internal use of copy:/, but
external use is completely destroyed. This is kinda the reverse of what
happened in "parallel" in the sid branch, where external use was mostly
fine, internal and external exploded on the GzipIndexes option.

We fix this now by rewriting our internal use by letting copy:/ only do
what the name suggests it does: Copy files and not uncompress them
on-the-fly. Then we teach copy and the uncompressors how to deal with
/dev/null and use it as destination file in case we don't want to store
the uncompressed files on disk.

Closes: 799158
9 years agotests: ensure sponge-files are cleaned up properly
David Kalnischkies [Sun, 11 Oct 2015 11:00:56 +0000 (13:00 +0200)] 
tests: ensure sponge-files are cleaned up properly

Git-Dch: Ignore

9 years agotests: change test-skipping detection for arch-specific pkgs
David Kalnischkies [Fri, 9 Oct 2015 21:03:43 +0000 (23:03 +0200)] 
tests: change test-skipping detection for arch-specific pkgs

dpkg-checkbuilddeps changed its exitcodes in the recent past so the
old check always fails now skipping the test. Lets try a slightly more
stable (at least assume it to be) variant of detecting this.

See also 4f6d26b4d41474aa390329b7e9cb167eb70b2821.

Git-Dch: Ignore

9 years agodrop privileges in file:// method as we do for decompressors
David Kalnischkies [Fri, 9 Oct 2015 20:25:13 +0000 (22:25 +0200)] 
drop privileges in file:// method as we do for decompressors

We drop it in decompressors, which are the natural next step, so if an
archive is used which isn't worldreadable (= not accessible by _apt) it
doesn't work anyway, so we just fail a bit earlier now and avoid all the
bad things which can happen over file (which could very well still be a
network resourc via NFS mounts or similar stuff, so hardly as safe as
the name might suggest at first).

9 years agoallow all dpkg selections to be set via apt-mark and libapt
David Kalnischkies [Fri, 25 Sep 2015 17:58:43 +0000 (19:58 +0200)] 
allow all dpkg selections to be set via apt-mark and libapt

As we have support for 'hold', we need support for undoing a hold which
in effect means that we implemented most other states as well, just that
they weren't exposed in the interface directly so far.

9 years agoprovide public interface to hold/unhold packages
David Kalnischkies [Fri, 25 Sep 2015 09:25:25 +0000 (11:25 +0200)] 
provide public interface to hold/unhold packages

We had this code lying around in apt-mark for a while now, but other
frontends need this (and similar) functionality as well, so its high
time that we provide a public interface in libapt for this stuff.

9 years agorefactor dpkg execution in deb/debsystem
David Kalnischkies [Fri, 18 Sep 2015 09:14:56 +0000 (11:14 +0200)] 
refactor dpkg execution in deb/debsystem

We have a few places and there will be a few more still where we have to
call dpkg to detect/set certain features or settings. Centralizing the
calling infrastructure now seems like a good idea before we add another.

9 years agoswitch 'apt-mark hold' from Pkg to Ver based operation
David Kalnischkies [Thu, 17 Sep 2015 11:46:11 +0000 (13:46 +0200)] 
switch 'apt-mark hold' from Pkg to Ver based operation

Users hold a package foo (at version X) or try to prevent the
installation of foo (usually based on the information they know about
version X), even if we say that we "hold a package". Conceptionally we
also need to know about which architecture we are talking and that is an
information bound to a version (as a package can change architecture
over time).

We internally did this lookup from Pkg to Ver already, we just move this
to a central place where the user has a change to influence it now.

Git-Dch: Ignore

9 years agoadd cacheset push_back wrapping for std::back_inserter
David Kalnischkies [Thu, 17 Sep 2015 11:13:41 +0000 (13:13 +0200)] 
add cacheset push_back wrapping for std::back_inserter

As usual by now, not all containers wrapped by the cacheset containers
support all methods, like push_back now, but they fail on use of these
unusable methods only.

Would be nice to not expose these methods for unsupporting containers at
all, but that means either a lot of classes or a lot of std::enable_if
magic, which seems like too big work for this small wrapper for now.

Git-Dch: Ignore

9 years agoimplement operator* for cacheset iterators
David Kalnischkies [Thu, 17 Sep 2015 08:50:30 +0000 (10:50 +0200)] 
implement operator* for cacheset iterators

Technically an abi-break as we change a template parameter to
std::iterator for this, but this class is empty in all instances and
just causes the right typedefs to be set – which were incorrect as
detected by std::stable_partition as its implementation uses ::pointer
and needs also a operator* implementation.

In practice CacheSets have no external users (yet) and the difference is
visible only at compile time (which was an error before and now works),
not while linking.

The changes to apt-mark are functionally identical to the code before,
just that we use a std:: algorithm now instead of trying hard on our
own.

9 years agoimplement a public pkgSystem::ArchitecturesSupported
David Kalnischkies [Tue, 15 Sep 2015 12:12:19 +0000 (14:12 +0200)] 
implement a public pkgSystem::ArchitecturesSupported

9 years agoimplement a public pkgSystem::MultiArchSupported
David Kalnischkies [Tue, 15 Sep 2015 10:44:53 +0000 (12:44 +0200)] 
implement a public pkgSystem::MultiArchSupported

Some codepaths need to check if the system (in our case usually dpkg)
supports MultiArch or not. We had copy-pasted the check so far into
these paths, but having it as a system check is better for reusability.

9 years agotravis: move 'make' into the install target
David Kalnischkies [Tue, 15 Sep 2015 10:28:53 +0000 (12:28 +0200)] 
travis: move 'make' into the install target

This auto-collapses the output and doesn't run the tests
if we compiling fails as a bonus.

Git-Dch: Ignore

9 years agoTurkish program translation update
Mert Dirik [Thu, 22 Oct 2015 13:43:58 +0000 (15:43 +0200)] 
Turkish program translation update

Closes: 802610
9 years agoconfigure.ac: Only require autoconf 2.68
Julian Andres Klode [Tue, 3 Nov 2015 10:20:42 +0000 (11:20 +0100)] 
configure.ac: Only require autoconf 2.68

This makes it compileable on the trusty travis-ci instance.

Gbp-Dch: ignore

9 years agoconfigure.ac: Run autoupdate
Julian Andres Klode [Tue, 3 Nov 2015 10:10:53 +0000 (11:10 +0100)] 
configure.ac: Run autoupdate

Gbp-Dch: ignore

9 years agothread-safety tests: Adjust path to lists
Julian Andres Klode [Fri, 30 Oct 2015 14:41:13 +0000 (15:41 +0100)] 
thread-safety tests: Adjust path to lists

Gbp-Dch: ignore

9 years agoProvide tests for thread-safety
Julian Andres Klode [Fri, 23 Oct 2015 18:13:00 +0000 (20:13 +0200)] 
Provide tests for thread-safety

These scripts currently produce HTML output that is directly
piped into an HTML file on alioth.

There are three categories. The first two check external
library calls to use the ones specified by POSIX to be
thread-safe. The main profile excludes functions that are
thread-safe on Linux or glibc in general, while the portable
output strictly follows posix.

The internal.html output lists internal function calls, such
as configuration setting.

This is supposed to be automated further at some point, so
we can automatically check for regressions.

9 years agoorderlist: Replace qsort() by thread-safe std::sort()
Julian Andres Klode [Fri, 23 Oct 2015 15:28:27 +0000 (17:28 +0200)] 
orderlist: Replace qsort() by thread-safe std::sort()

Gbp-Dch: ignore

9 years agoalgorithms: Replace qsort() by thread-safe std::sort()
Julian Andres Klode [Fri, 23 Oct 2015 15:17:54 +0000 (17:17 +0200)] 
algorithms: Replace qsort() by thread-safe std::sort()

Gbp-Dch: ignore

9 years agodpkgpm: Convert users of localtime() to localtime_r()
Julian Andres Klode [Fri, 23 Oct 2015 18:36:03 +0000 (20:36 +0200)] 
dpkgpm: Convert users of localtime() to localtime_r()

The former is not thread-safe, whereas the latter is.

Gbp-Dch: ignore

9 years agocacheset: Fix compilation on new GCC in C++98 mode
Julian Andres Klode [Fri, 30 Oct 2015 13:54:18 +0000 (14:54 +0100)] 
cacheset: Fix compilation on new GCC in C++98 mode

Since gcc 4.9, the API for erase slightly changed. In
commit 3dddcdf2432e78f37c74d8c76c2c519a8d935ab2 the
existing checks for __cplusplus where changed to
check the gcc version, as the __cplusplus check
did nothing, because gcc 4.8 already provided the
standard value in there.

Fix the code to check for the gcc version in two
more places, and change the existing checks to
use a convenience macro.

9 years agosrvrec: Do not expose C++11 tuple use in header
Julian Andres Klode [Fri, 30 Oct 2015 13:44:52 +0000 (14:44 +0100)] 
srvrec: Do not expose C++11 tuple use in header

This makes non-C++11 reverse deps wishing to use it FTBFS.

9 years agodpkgpm: Use ptsname_r() instead of ptsname() to be thread-safe
Julian Andres Klode [Fri, 23 Oct 2015 19:17:25 +0000 (21:17 +0200)] 
dpkgpm: Use ptsname_r() instead of ptsname() to be thread-safe

This function only exists on a limited number of platforms, so
we add a configure check to make sure it exists.

Gbp-Dch: ignore

9 years agodpkgpm: Convert ctime() call to ctime_r()
Julian Andres Klode [Fri, 23 Oct 2015 18:45:21 +0000 (20:45 +0200)] 
dpkgpm: Convert ctime() call to ctime_r()

ctime() is not thread-safe, ctime_r() is.

Gbp-Dch: ignore

9 years agoaptconfiguration: Convert strtok() to strtok_r()
Julian Andres Klode [Fri, 23 Oct 2015 18:39:56 +0000 (20:39 +0200)] 
aptconfiguration: Convert strtok() to strtok_r()

strtok() is not thread-safe, whereas strtok_r() is.

Gbp-Dch: ignore

9 years agoGetSrvRecords: Make thread-safe
Julian Andres Klode [Fri, 23 Oct 2015 18:31:12 +0000 (20:31 +0200)] 
GetSrvRecords: Make thread-safe

Gbp-Dch: ignore

9 years agodeblistparser: Make PrioList const
Julian Andres Klode [Fri, 23 Oct 2015 16:02:30 +0000 (18:02 +0200)] 
deblistparser: Make PrioList const

More safety, less writeable memory.

9 years agoreleasing 1.1~exp14 1.1_exp14
Michael Vogt [Tue, 20 Oct 2015 17:29:17 +0000 (19:29 +0200)] 
releasing 1.1~exp14

9 years agoAllow -i and -u as aliases for installed and upgradable in list
Julian Andres Klode [Tue, 20 Oct 2015 16:16:42 +0000 (18:16 +0200)] 
Allow -i and -u as aliases for installed and upgradable in list

This makes things much easier to use

9 years ago.travis.yml: Add pinned vivid for gettext and clean up a bit
Julian Andres Klode [Sun, 11 Oct 2015 13:35:35 +0000 (15:35 +0200)] 
.travis.yml: Add pinned vivid for gettext and clean up a bit

This adds a vivid pinned to -1, cleans up the file a bit by
removing duplicate commands, and finally installs gettext
with a new apt-get run that is passed -t vivid.

The syntax for the pinning is some weird YAML stuff I don't
want to think about...

9 years agoRevert "Fix select timeout to be 50msec instead of 0.5msec" for acquire
Julian Andres Klode [Sat, 10 Oct 2015 22:41:11 +0000 (00:41 +0200)] 
Revert "Fix select timeout to be 50msec instead of 0.5msec" for acquire

The acquire system actually uses usec pulse intervals, so the
previous value was correct (500ms) whereas the new value is
now 5s.

It's a bit unfortunate that the two systems use different units
for pulse intervals, but probably not much we can do about it.

This partially reverts commit eaf21c2144fa8dc4be8581dc69cf88cb38e30ce2.

9 years agoreleasing package apt version 1.1~exp13 1.1.exp13
Michael Vogt [Mon, 5 Oct 2015 16:30:30 +0000 (18:30 +0200)] 
releasing package apt version 1.1~exp13

9 years agoRun "./prepare-release pre-export"
Michael Vogt [Mon, 5 Oct 2015 16:30:19 +0000 (18:30 +0200)] 
Run "./prepare-release pre-export"

Git-dch: ignore

9 years agoFix select timeout to be 50msec instead of 0.5msec
Michael Vogt [Wed, 30 Sep 2015 13:24:47 +0000 (15:24 +0200)] 
Fix select timeout to be 50msec instead of 0.5msec

Closes: #799857
9 years agoUse --add-location=file for po/ and doc/po
Michael Vogt [Tue, 22 Sep 2015 14:56:34 +0000 (16:56 +0200)] 
Use --add-location=file for po/ and doc/po

This avoids churn in the po/pot files when just the location line
number in the source code changes.

Git-Dch: ignore

9 years agotests: add a -j $jobs mode to test runner for parallel execution
David Kalnischkies [Tue, 15 Sep 2015 07:56:57 +0000 (09:56 +0200)] 
tests: add a -j $jobs mode to test runner for parallel execution

Now that tests can be run in parallel, lets actually do it… The mode has
some downsides like not collecting the failed tests, but it can be a lot
faster than a sequential run and is therefore a good alternative in
testing those "this shouldn't break anything" changes (which tend to
break everything if untested).

Git-Dch: Ignore

9 years agotests: don't use hardcoded port for http and https
David Kalnischkies [Mon, 14 Sep 2015 22:33:12 +0000 (00:33 +0200)] 
tests: don't use hardcoded port for http and https

This allows running tests in parallel.

Git-Dch: Ignore

9 years agofallback to well-known URI if by-hash fails
David Kalnischkies [Mon, 14 Sep 2015 12:57:56 +0000 (14:57 +0200)] 
fallback to well-known URI if by-hash fails

We uses a small trick to implement the fallback: We make it so, that
by-hash is a special compression algorithm and apt already knows how to
deal with fallback between compression algorithms.

The drawback with implementing this fallback is that a) we are guessing
again and more importantly b) by-hash is only tried for the first
compression algorithm we want to acquire, not for all as before – but
flipping between by-hash and well-known for each compression algorithm
seems to be not really worth it as it seems unlikely that there will
actually be mirrors who only mirror a subset of compressioned files, but
have by-hash enabled.

The user-experience is the usual fallback one: You see "Ign" lines in
the apt update output. The fallback is implemented as a transition
feature, so a (potentially huge) mirror network doesn't need a flagday.
It is not meant as a "someday we might" or "we don't, but some of our
mirrors might" option – we want to cut down on the 'Ign' lines front so
that they become meaningful – if we wanted to spam everyone with them, we
could enable by-hash by default for all repositories…
sources.list and config options are better suited for this.

Closes: 798919
9 years agoadd by-hash sources.list option and document all of by-hash
David Kalnischkies [Mon, 14 Sep 2015 11:18:29 +0000 (13:18 +0200)] 
add by-hash sources.list option and document all of by-hash

This changes the semantics of the option (which is renamed too) to be a
yes/no value with the special additional value "force" as this allows
by-hash to be disabled even if the repository indicates it would be
supported and is more in line with our other yes/no options like pdiff
which disable themselves if no support can be detected.

The feature wasn't documented so far and hasn't reached a (un)stable
release yet, so changing it without trying too hard to keep
compatibility seems okay.

9 years agotests: try to support spaces in TMPDIR
David Kalnischkies [Mon, 14 Sep 2015 00:26:13 +0000 (02:26 +0200)] 
tests: try to support spaces in TMPDIR

Not all tests work yet, most notable the cdrom tests, but those require
changes in libapt itself to have a proper fix and what we have fixed so
far is good enough progress for now.

Git-Dch: Ignore

9 years agodeal with spaces in path, command and filepaths in apt-key
David Kalnischkies [Sun, 13 Sep 2015 20:16:32 +0000 (22:16 +0200)] 
deal with spaces in path, command and filepaths in apt-key

Filenames we get could include spaces, but also the tmpdir we work in
and the failures we print in return a very generic and unhelpful…
Properly supporting spaces is a bit painful as we constructed gpg
command before, which is now moved to (multilevel) calls to temporary
scripts instead.

9 years agotests: use SHA1 checksum only by default in tests
David Kalnischkies [Sun, 13 Sep 2015 15:25:23 +0000 (17:25 +0200)] 
tests: use SHA1 checksum only by default in tests

This is mostly a small speedup for the testcases, but it is also handy
to document which tests actually deal with a specific hash compared to
those which 'just' need some hash which can be important while adding
new hashes.

Git-Dch: Ignore

9 years agoadd --sha512 option + documentation for apt-ftparchive
David Kalnischkies [Sun, 13 Sep 2015 15:23:55 +0000 (17:23 +0200)] 
add --sha512 option + documentation for apt-ftparchive

9 years agouse APT::FTPArchive hash settings as default for APT::FPArchive::$filetype
David Kalnischkies [Sun, 13 Sep 2015 12:34:15 +0000 (14:34 +0200)] 
use APT::FTPArchive hash settings as default for APT::FPArchive::$filetype

9 years agodo not generate bogus hashes if hash is disabled in apt-ftparchive
David Kalnischkies [Sun, 13 Sep 2015 12:33:14 +0000 (14:33 +0200)] 
do not generate bogus hashes if hash is disabled in apt-ftparchive

9 years agodo not ignore differently versioned self-provides
David Kalnischkies [Sun, 13 Sep 2015 09:58:53 +0000 (11:58 +0200)] 
do not ignore differently versioned self-provides

Reported-By: Konomi on IRC
9 years agovarious changes to increase test-coverage
David Kalnischkies [Sat, 12 Sep 2015 08:35:49 +0000 (10:35 +0200)] 
various changes to increase test-coverage

And of course, testing obscure things ends up showing obscure 'bugs' or
better shortcomings/inconsitencies, so lets fix them with the tests.

Git-Dch: Ignore

9 years agoimplement apt-get source msg 'Please use: $vcs' for git
David Kalnischkies [Sat, 12 Sep 2015 08:15:52 +0000 (10:15 +0200)] 
implement apt-get source msg 'Please use: $vcs' for git

A bit unfair that only Bzr had this message. Lets at least print it for
git as well with the option of adding more later without string changes.

9 years agodereference redirect in Vcs-Browser URI to cgit
David Kalnischkies [Sat, 12 Sep 2015 07:52:16 +0000 (09:52 +0200)] 
dereference redirect in Vcs-Browser URI to cgit

Git-Dch: Ignore

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