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

8 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

8 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.

8 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>
8 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

8 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.

8 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

8 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.

8 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
8 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

8 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
8 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

8 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

8 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

8 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

8 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

8 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

8 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

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

8 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

8 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

8 years agoappease adequate with some weak symbols for -private
David Kalnischkies [Fri, 27 Nov 2015 13:02:49 +0000 (14:02 +0100)] 
appease adequate with some weak symbols for -private

Closes: #806422
8 years agouse pre-build hook to check for pre-export execution
David Kalnischkies [Fri, 27 Nov 2015 12:06:15 +0000 (13:06 +0100)] 
use pre-build hook to check for pre-export execution

Git-Dch: Ignore

8 years agodebian/gbp.conf: point debian-branch to master
Michael Vogt [Fri, 27 Nov 2015 11:56:22 +0000 (12:56 +0100)] 
debian/gbp.conf: point debian-branch to master

Git-Dch: ignore

8 years agoCheck if the Apt::Sandbox::User exists in CheckDropPrivsMustBeDisabled()
Michael Vogt [Fri, 27 Nov 2015 11:29:22 +0000 (12:29 +0100)] 
Check if the Apt::Sandbox::User exists in CheckDropPrivsMustBeDisabled()

If it does not exist disabled priv dropping as there is nothing
we can drop to. This will unblock people with special chroots
or systems that deleted the "_apt" user.

Closes: #806406
8 years agoDeal with killed acquire methods properly instead of hanging
Michael Vogt [Fri, 27 Nov 2015 11:07:48 +0000 (12:07 +0100)] 
Deal with killed acquire methods properly instead of hanging

This fixes a regression caussed by commit
95278287f4e1eeaf5d96749d6fc9bfc53fb400d0
that moved the error detection of RunFds() later into the loop.
However this broke detecting issues like dead acquire methods.
Instead of relying on the global error state (which is bad)
we now pass a boolean value back from RunFds() and break on
false.

Closes: #806406
8 years agorelease apt 1.1 1.1
Michael Vogt [Thu, 26 Nov 2015 11:41:49 +0000 (12:41 +0100)] 
release apt 1.1

8 years agoDo not run pre*export* functions in the pre*build* hook
Michael Vogt [Thu, 26 Nov 2015 11:58:20 +0000 (12:58 +0100)] 
Do not run pre*export* functions in the pre*build* hook

Unfortunately it seems like git-buildpackage does not have a
pre-export hook so the hook is disabled for now.

Git-Dch: ignore

8 years agoFix missing </literal> in sources.list.5.xml page
Michael Vogt [Thu, 26 Nov 2015 11:39:06 +0000 (12:39 +0100)] 
Fix missing </literal> in sources.list.5.xml page

Git-Dch: ignore

8 years agoMerge remote-tracking branch 'donkult/debian/experimental' into debian/experimental
Michael Vogt [Thu, 26 Nov 2015 11:32:51 +0000 (12:32 +0100)] 
Merge remote-tracking branch 'donkult/debian/experimental' into debian/experimental

8 years agoreword Trusted paragraph in sources.list(5)
Justin B Rye [Thu, 26 Nov 2015 11:16:44 +0000 (12:16 +0100)] 
reword Trusted paragraph in sources.list(5)

Git-Dch: Ignore

8 years agoRun ./prepare-release pre-export
Michael Vogt [Wed, 25 Nov 2015 15:04:35 +0000 (16:04 +0100)] 
Run ./prepare-release pre-export

8 years agoPrepare release 1.1~exp17
Michael Vogt [Wed, 25 Nov 2015 15:03:54 +0000 (16:03 +0100)] 
Prepare release 1.1~exp17

8 years agoupdate manpage last-modified from git via pre-export hook
David Kalnischkies [Sun, 22 Nov 2015 18:02:13 +0000 (19:02 +0100)] 
update manpage last-modified from git via pre-export hook

Never updating this information is wrong, updating it automatically
isn't super correct either, but it seems conventional to have it and
updating it more often than needed seems better than updating it never.

Git-Dch: Ignore

8 years agoenforce a slightly more sensible default header
David Kalnischkies [Sun, 22 Nov 2015 17:07:12 +0000 (18:07 +0100)] 
enforce a slightly more sensible default header

In 12f7536 I chose to opt for a slightly better text which avoids
assigning copyright to the FSF (not because it would be wrong to do it,
but is usually not what the contributor intended, but just the default.

xgettext has a --foreign flag for avoiding the copyright, but po4a
hasn't and an empty copyright-holder doesn't work either, so this little
rework of files with sed and cat.

Git-Dch: Ignore

8 years agotypo: run s#frontend#front-end# on all of src:apt
David Kalnischkies [Sun, 22 Nov 2015 14:09:50 +0000 (15:09 +0100)] 
typo: run s#frontend#front-end# on all of src:apt

The manpages were fixed by Justin B Rye, lets deal with the rest now.

Git-Dch: Ignore

8 years agoreview sources.list(5) manpage
Justin B Rye [Sun, 22 Nov 2015 13:29:49 +0000 (14:29 +0100)] 
review sources.list(5) manpage

8 years agoreview apt-secure(8) manpage
Justin B Rye [Sun, 22 Nov 2015 10:14:47 +0000 (11:14 +0100)] 
review apt-secure(8) manpage

8 years agoreview apt-mark(8) manpage
Justin B Rye [Sun, 22 Nov 2015 10:05:45 +0000 (11:05 +0100)] 
review apt-mark(8) manpage

8 years agoreview apt(8) manpage
Justin B Rye [Sun, 22 Nov 2015 09:56:25 +0000 (10:56 +0100)] 
review apt(8) manpage

8 years agoslightly rephrase notice shown for insecure repositories
Justin B Rye [Sun, 22 Nov 2015 09:14:12 +0000 (10:14 +0100)] 
slightly rephrase notice shown for insecure repositories

Git-Dch: Ignore

9 years agoreleasing package apt version 1.1~exp16 1.1_exp16
Michael Vogt [Tue, 24 Nov 2015 20:29:56 +0000 (21:29 +0100)] 
releasing package apt version 1.1~exp16

9 years agoshow potentially arch-qualified fullname in 'apt show'
David Kalnischkies [Sat, 21 Nov 2015 17:15:22 +0000 (18:15 +0100)] 
show potentially arch-qualified fullname in 'apt show'

We do not show the architecture as a dedicated field as this is rather
technical information, but as packagename it makes sense to show the
architecture as other part of apt will refer to it in this way.

9 years agoreview of new/changed translatable program strings
Justin B Rye [Sat, 21 Nov 2015 16:50:06 +0000 (17:50 +0100)] 
review of new/changed translatable program strings

Reference mail:
https://lists.debian.org/debian-l10n-english/2015/11/msg00006.html

9 years agodo not sent Last-Modified if we expect a changed file
David Kalnischkies [Sat, 21 Nov 2015 12:47:19 +0000 (13:47 +0100)] 
do not sent Last-Modified if we expect a changed file

In 8d041b4f we made apt figure out based on the last Release file it has
if it should request a file or not given that the hashes changed or not.
So if we have a last Release file and do a request, do not sent a
Last-Modified header as we expect a change so much that a non-change
would indeed be an error. The Last-Modified header is therefore at best
ignored by the server, so sending it is just wasted effort. In the worst
case as time is a fragile thing the server decides against sending us an
update with the idea that we already have the latest content, which we
know for a fact that we haven't. Given that we sent less information to
the server our request is on its own also less identifiable as coming
from a returning or new user.

The disadvantage is that if we end up getting an old index file after
getting a new Release file from another mirror the old mirror will not
be able to tell us 'Hit', but instead sends us the complete file we
discard, but both lets us end up with the same error class in the end,
so the difference isn't big in practice.

9 years agofix a few typos in code-comments/apt manpage
David Kalnischkies [Fri, 20 Nov 2015 08:46:18 +0000 (09:46 +0100)] 
fix a few typos in code-comments/apt manpage

Reported-By: codespell
Git-Dch: Ignore

9 years agodo not segfault in cache generation on mmap failure
David Kalnischkies [Thu, 19 Nov 2015 23:54:07 +0000 (00:54 +0100)] 
do not segfault in cache generation on mmap failure

Out of memory and similar circumstanzas could cause MMap::Map to fail
and especially the mmap/malloc calls in it. With some additional
checking we can avoid segfaults and similar in such situations – at
least in theory as if this is a real out of memory everything we do to
handle the error could just as well run into a memory problem as well…

But at least in theory (if MMap::Map is made to fail always) we can deal
with it so good that a user actually never sees a failure (as the cache
it tries to load with it fails and is discarded, so that DynamicMMap
takes over and a new one is build) instead of segfaulting.

Closes: 803417
9 years agodo not rerun ./configure causing FTCBFS with newer autotools-dev
David Kalnischkies [Thu, 19 Nov 2015 21:39:13 +0000 (22:39 +0100)] 
do not rerun ./configure causing FTCBFS with newer autotools-dev

If the config.{sub,guess} files we linked in were newer than our
configure script we ended up recreating configure and then rerun it
without all the configuration options which were (potentially) present
for a previous run.

We avoid this by changing to the same ruleset as in the debian/rules
file which compares the config.* files against a stamp file rather than
the configure script itself as its the configuration itself which
depends on all scripts, not configure on the config scripts.

While at it, we also drop the 'make -s dirs' call as we don't need to do
it explicitly here as proper dependencies will take care of it.

Thanks: Helmut Grohne for the detailed bugreport.
Closes: 804923
9 years agoupdate libapt-{pkg,inst} symbols files
David Kalnischkies [Thu, 19 Nov 2015 21:38:44 +0000 (22:38 +0100)] 
update libapt-{pkg,inst} symbols files

9 years agomove -std=c++11 from CXX to new CXXSTD
David Kalnischkies [Thu, 19 Nov 2015 18:27:09 +0000 (19:27 +0100)] 
move -std=c++11 from CXX to new CXXSTD

The hack introduced in aa91826f is replaced with a hopefully better
working "proper" solution with a new variable just for the standard we
use everywhere we use CXXFLAGS.

Git-Dch: Ignore

9 years agoignore lost+found in private directory cleanup
David Kalnischkies [Thu, 19 Nov 2015 15:19:15 +0000 (16:19 +0100)] 
ignore lost+found in private directory cleanup

In ce1f3a2c we started warning about failing unlinking, which we
consistently do for directories. That isn't a problem as directories
usually aren't in the places we do want to clean up – with the potential
exeception of "lost+found", so lets ignore it like we ignore our own
partial/ subdirectory.

Closes: 805424
9 years agotests: use quiet level 0 by default in tests
David Kalnischkies [Thu, 19 Nov 2015 15:00:33 +0000 (16:00 +0100)] 
tests: use quiet level 0 by default in tests

Git-Dch: Ignore

9 years agosupport setting empty values (sanely) & removing support for
David Kalnischkies [Thu, 19 Nov 2015 12:28:17 +0000 (13:28 +0100)] 
support setting empty values (sanely) & removing support for
space-gapping: '-o option= value'

That is a very old feature (straight from 1998), but it is super
surprising if you try setting empty values and instead get error
messages or a non-empty value as the next parameter is treated as the
value – which could have been empty, so if for some reason you need a
compatible way of setting an empty value try: '-o option="" ""'.

I can only guess that the idea was to support '-o option value', but we
survived 17 years without it, we will do fine in the future I guess.

Similar is the case for '-t= testing' even through '-t testing' existed
before and the code even tried to detect mistakes like '-t= -b' … all
gone now.

Technically that is as its removing a feature replacing it with another
a major interface break. In practice I really hope for my and their
sanity that nobody was using this; but if for some reaon you do: Remove
the space and be done.

I found the patch and the bugreport actually only after the fact, but
its reassuring that others are puzzled by this as well and hence a
thanks is in perfect order here as the patch is practical identical
[expect that this one here adds tests and other bonus items].

Thanks: Daniel Hartwig for initial patch.
Closes: 693092
9 years agomore sensible default text in pot files
David Kalnischkies [Thu, 19 Nov 2015 16:12:32 +0000 (17:12 +0100)] 
more sensible default text in pot files

Git-Dch: Ignore

9 years agoDutch manpages translation (NEW)
Frans Spiesschaert [Thu, 19 Nov 2015 10:52:44 +0000 (11:52 +0100)] 
Dutch manpages translation (NEW)

Closes: 805474
9 years agodo not use _apt for file/copy sources if it isn't world-accessible
David Kalnischkies [Wed, 18 Nov 2015 18:31:40 +0000 (19:31 +0100)] 
do not use _apt for file/copy sources if it isn't world-accessible

In 0940230d we started dropping privileges for file (and a bit later for
copy, too) with the intend of uniforming this for all methods. The
commit message says that the source will likely fail based on the
compressors already – and there isn't much secret in the repository
content. After all, after apt has run the update everyone can access the
content via apt anyway…

There are sources through which worked before which are mostly
single-deb (and those with the uncompressed files available).
The first one being especially surprising for users maybe, so instead of
failing, we make it so that apt detects that it can't access a source as
_apt and if so doesn't drop (for all sources!) privileges – but we limit
this to file/copy, so the uncompress which might be needed will still
fail – but that failed before this regression.

We display a notice about this, mostly so that if it still fails (e.g.
compressed) the user has some idea what is wrong.

Closes: 805069
9 years agotests: fail testsuccess if notices are shown, too
David Kalnischkies [Tue, 17 Nov 2015 12:43:08 +0000 (13:43 +0100)] 
tests: fail testsuccess if notices are shown, too

Notices are just hints, but if they are printed in tests, they should be
expected and if not the test should fail. No current test has this
problem, so that is just potential future proving.

Git-Dch: Ignore

9 years agoreleasing package apt version 1.1~exp15 1.1_exp15
Michael Vogt [Wed, 11 Nov 2015 16:48:48 +0000 (17:48 +0100)] 
releasing package apt version 1.1~exp15

9 years agoactivate AI_IDN by default to support IDN domains
David Kalnischkies [Thu, 5 Nov 2015 01:25:13 +0000 (02:25 +0100)] 
activate AI_IDN by default to support IDN domains

AI_IDN is a glibc extension, but we can worry about this at the time
actually anyone is seriously trying apt on non-glibc systems.

Closes: 763437
9 years ago"support" unsigned Release files without hashes again
David Kalnischkies [Thu, 5 Nov 2015 00:51:44 +0000 (01:51 +0100)] 
"support" unsigned Release files without hashes again

This 'ignores' the component Release files you can find in Debian
alongside the binary-* directories, which isn't exactly a common
usecase, but it worked before, so lets support it again as this isn't
worse than a valid Release file which is unsigned.

Git-Dch: Ignore

9 years agoencode UTF-8 characters correctly in QuoteString
David Kalnischkies [Wed, 4 Nov 2015 22:38:40 +0000 (23:38 +0100)] 
encode UTF-8 characters correctly in QuoteString

Limit the field length to a char to avoid bogus FF for
utf-8 characters with the default length.

Closes: 799123
9 years agoapply various suggestions made by cppcheck
David Kalnischkies [Wed, 4 Nov 2015 20:08:55 +0000 (21:08 +0100)] 
apply various suggestions made by cppcheck

Reported-By: cppcheck
Git-Dch: Ignore

9 years agodo not use read() returned value unconditionally
David Kalnischkies [Wed, 4 Nov 2015 17:01:35 +0000 (18:01 +0100)] 
do not use read() returned value unconditionally

A slightly unlikely bug, but lets fix it while slightly reworking this
whole function to be slightly saner to look at, even if still not good.

Git-Dch: Ignore

9 years agoallow acquire method specific options via Binary scope
David Kalnischkies [Wed, 4 Nov 2015 13:48:36 +0000 (14:48 +0100)] 
allow acquire method specific options via Binary scope

Allows users who know what they are getting themselves into with this
trick to e.g. disable privilege dropping for e.g. file:// until they can
fix up the permissions on those repositories. It helps also the test
framework and people with a similar setup (= me) to run in less modified
environments.

9 years agodrop privileges in copy:// method as we do for file://
David Kalnischkies [Wed, 4 Nov 2015 12:19:14 +0000 (13:19 +0100)] 
drop privileges in copy:// method as we do for file://

Continueing on the track of dropping privileges in all methods, lets
drop it in copy, too, as the reasoning for it is very similar to file
and the interaction between the too quiet interesting as copy kinda
surfed as a fallback for file not being able to read the file. Both now
show a better error message as well as it was previously claiming to
have a hashsum mismatch, given that it couldn't read the file.

Git-Dch: Ignore

9 years agoallow getaddrinfo flag AI_ADDRCONFIG to be disabled
David Kalnischkies [Tue, 3 Nov 2015 15:05:14 +0000 (16:05 +0100)] 
allow getaddrinfo flag AI_ADDRCONFIG to be disabled

This flags is generally handy to avoid having to deal with ipv6 results on an
ipv4-only system, but it prevents e.g. the testcases from working if the
testsystem has no configured address at the moment (expect loopback), so
allow it to be sidestepped and let the testcases sidestep it.

Git-Dch: Ignore

9 years agowrap every unlink call to check for != /dev/null
David Kalnischkies [Mon, 2 Nov 2015 17:49:52 +0000 (18:49 +0100)] 
wrap every unlink call to check for != /dev/null

Unlinking /dev/null is bad, we shouldn't do that. Also, we should print
at least a warning if we tried to unlink a file but didn't manage to
pull it of (ignoring the case were the file is /dev/null or doesn't
exist in the first place).

This got triggered by a relatively unlikely to cause problem in
pkgAcquire::Worker::PrepareFiles which would while temporary
uncompressed files (which are set to keep compressed) figure out that to
files are the same and prepare for sharing by deleting them. Bad move.
That also shows why not printing a warning is a bad idea as this hide
the error for in non-root test runs.

Git-Dch: Ignore

9 years agoensure FileFd doesn't try to open /dev/null as atomic and co
David Kalnischkies [Mon, 2 Nov 2015 15:02:44 +0000 (16:02 +0100)] 
ensure FileFd doesn't try to open /dev/null as atomic and co

The wrapping will fail in the best case and actually end up deleting
/dev/null in the worst case. Given that there is no point in trying to
write atomically to /dev/null as you can't read from it again just
ignore these flags if higher level code ends up trying to use them on
/dev/null.

Git-Dch: Ignore

9 years agoignore newlines in dpkg-deb control output for installing debs
David Kalnischkies [Fri, 30 Oct 2015 22:16:01 +0000 (23:16 +0100)] 
ignore newlines in dpkg-deb control output for installing debs

Leading or trailing newlines can be confusing for our parser as it
expects two newlines to start/stop a new stanza. To solve this the lines
we wanna add are printed first, ignore any leading newlines and then add
the stanza as provided by dpkg-deb with or without trailing newlines as
the parser will look at the first stanza only anyway and removing
trailing newlines is considerably harder to do.

Closes: 802553
9 years agosupport arch:all data e.g. in separate Packages file
David Kalnischkies [Wed, 28 Oct 2015 13:38:49 +0000 (14:38 +0100)] 
support arch:all data e.g. in separate Packages file

Based on a discussion with Niels Thykier who asked for Contents-all this
implements apt trying for all architecture dependent files to get a file
for the architecture all, which is treated internally now as an official
architecture which is always around (like native). This way arch:all
data can be shared instead of duplicated for each architecture requiring
the user to download the same information again and again.

There is one problem however: In Debian there is already a binary-all/
Packages file, but the binary-any files still include arch:all packages,
so that downloading this file now would be a waste of time, bandwidth
and diskspace. We therefore need a way to decide if it makes sense to
download the all file for Packages in Debian or not. The obvious answer
would be a special flag in the Release file indicating this, which would
need to default to 'no' and every reasonable repository would override
it to 'yes' in a few years time, but the flag would be there "forever".

Looking closer at a Release file we see the field "Architectures", which
doesn't include 'all' at the moment. With the idea outlined above that
'all' is a "proper" architecture now, we interpret this field as being
authoritative in declaring which architectures are supported by this
repository. If it says 'all', apt will try to get all, if not it will be
skipped. This gives us another interesting feature: If I configure a
source to download armel and mips, but it declares it supports only
armel apt will now print a notice saying as much. Previously this was a
very cryptic failure. If on the other hand the repository supports mips,
too, but for some reason doesn't ship mips packages at the moment, this
'missing' file is silently ignored (= that is the same as the repository
including an empty file).

The Architectures field isn't mandatory through, so if it isn't there,
we assume that every architecture is supported by this repository, which
skips the arch:all if not listed in the release file.

9 years agoreenable gcc warnings for deprecated functions
David Kalnischkies [Fri, 30 Oct 2015 15:44:27 +0000 (16:44 +0100)] 
reenable gcc warnings for deprecated functions

In the meantime the strange warnings disappeared, so we can get back to
showing them – and fix the one occurance which creeped in in the
meantime.

Git-Dch: Ignore

9 years agosanify API to get 'the' candidate version
David Kalnischkies [Fri, 30 Oct 2015 15:34:25 +0000 (16:34 +0100)] 
sanify API to get 'the' candidate version

This was discussed a while ago on #debian-apt and now that I see myself
making this mistake lets bite the bullet and fix it in the easy way out
version: Using a new name which fits with a similar named setter and
deprecate the old method instead of 'hostily' changing API.

Closes: #803471
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