]> git.saurik.com Git - apt.git/log
apt.git
9 years ago128 KiB DSC files ought to be enough for everyone
David Kalnischkies [Fri, 9 Jan 2015 00:03:31 +0000 (01:03 +0100)] 
128 KiB DSC files ought to be enough for everyone

Your mileage may vary, but don't worry: There is more than one way to
do it, but our one size fits all is not a bigger hammer, but an entire
roundhouse kick! So brace yourself for the tl;dr: The limit is gone.*

Beware: This fixes also the problem that a double newline is
unconditionally added 'later' which is an overcommitment in case
the dsc filesize is limit-2 <= x <= limit.

* limited to numbers fitting into an unsigned long long.

Closes: 774893
9 years agoAdd regression test for the previous commit
Michael Vogt [Tue, 6 Jan 2015 09:54:24 +0000 (10:54 +0100)] 
Add regression test for the previous commit

The issue was that https.cc never called URIStart(), one way to
detect this is that no download progress is generated without
this call. The test now checks for this and as a side-effect will
also ensure that we do not break download progress reporting and
Acquire::{http,https}::Dl-Limit accidently.

9 years agoFix missing URIStart() for https downloads
Michael Vogt [Mon, 5 Jan 2015 09:27:53 +0000 (10:27 +0100)] 
Fix missing URIStart() for https downloads

Add a explicit ReceivedData to HttpsMethod that indicates when
we got data from the connection so that we can send URISTart()
to the parent.

This is needed because URIStart got moved in f9b4f12d from
the progress_callback to write_data() and it only checks for
Res.Size. In the old code if progress_callback is called by
libcurl (and sets Res.Size) before write_data is called then
URIStart() is never send. Making this a explicit ReceivedData
variable fixes this issue.

9 years agorelease 1.0.9.5 1.0.9.5
David Kalnischkies [Tue, 23 Dec 2014 13:11:13 +0000 (14:11 +0100)] 
release 1.0.9.5

9 years agotighten filtering of kernel images in apt.auto-removal
James McCoy [Wed, 10 Dec 2014 15:16:02 +0000 (10:16 -0500)] 
tighten filtering of kernel images in apt.auto-removal

The current filtering matches the names of the image metapackages on the
i386 architecture:

$ dpkg-query -l | awk '/^ii[ ]+(linux|kfreebsd|gnumach)-image-[0-9]/ && $2 !~ /-dbg$/ { print $2 }'
linux-image-3.16.0-4-586
linux-image-586

This results in an extra image package being removed from
APT::NeverAutoRemove, losing the intended effect of keeping the {current,
previous, latest} set of images installed.

Requiring a “.” in the package name tightens the matched package names
to those that are installing a specific version of the image, thus
eliding the meta-packages.

Closes: 772732
9 years agopass-through stdin fd instead of content if not a terminal
David Kalnischkies [Mon, 22 Dec 2014 22:14:08 +0000 (23:14 +0100)] 
pass-through stdin fd instead of content if not a terminal

Commit 299aea924ccef428219ed6f1a026c122678429e6 fixes the problem of
not logging terminal in case stdin & stdout are not a terminal. The
problem is that we are then trying to pass-through stdin content by
reading from the apt-process stdin and writing it to the stdin of the
child (dpkg), which works great for users who can control themselves,
but pipes and co are a bit less forgiving causing us to pass everything
to the first child process, which if the sending part of the pipe is
e.g. 'yes' we will never see the end of it (as the pipe is full at some
point and further writing blocks).

There is a simple solution for that of course: If stdin isn't a terminal,
we us the apt-process stdin as stdin for the child directly (We don't do
this if it is a terminal to be able to save the typed input in the log).

Closes: 773061
9 years agoalways run 'dpkg --configure -a' at the end of our dpkg callings
David Kalnischkies [Tue, 18 Nov 2014 18:53:56 +0000 (19:53 +0100)] 
always run 'dpkg --configure -a' at the end of our dpkg callings

dpkg checks now for dependencies before running triggers, so that
packages can now end up in trigger states (especially those we are not
touching at all with our calls) after apt is done running.

The solution to this is trivial: Just tell dpkg to configure everything
after we have (supposely) configured everything already. In the worst
case this means dpkg will have to run a bunch of triggers, usually it
will just do nothing though.

The code to make this happen was already available, so we just flip a
config option here to cause it to be run. This way we can keep
pretending that triggers are an implementation detail of dpkg.
--triggers-only would supposely work as well, but --configure is more
robust in regards to future changes to dpkg and something we will
hopefully make use of in future versions anyway (as it was planed at the
time this and related options were implemented).

Note that dpkg currently has a workaround implemented to allow upgrades
to jessie to be clean, so that the test works before and after. Also
note that test (compared to the one in the bug) drops the await test as
its is considered a loop by dpkg now.

Closes: 769609
9 years agodo not make PTY slave the controlling terminal
David Kalnischkies [Wed, 10 Dec 2014 21:26:59 +0000 (22:26 +0100)] 
do not make PTY slave the controlling terminal

If we have no controlling terminal opening a terminal will make this
terminal our controller, which is a serious problem if this happens to
be the pseudo terminal we created to run dpkg in as we will close this
terminal at the end hanging ourself up in the process…

The offending open is the one we do to have at least one slave fd open
all the time, but for good measure, we apply the flag also to the slave
fd opening in the child process as we set the controlling terminal
explicitely here.

This is a regression from 150bdc9ca5d656f9fba94d37c5f4f183b02bd746 with
the slight twist that this usecase was silently broken before in that it
wasn't logging the output in term.log (as a pseudo terminal wasn't
created).

Closes: 772641
9 years agodispose http(s) 416 error page as non-content
David Kalnischkies [Sat, 29 Nov 2014 16:59:52 +0000 (17:59 +0100)] 
dispose http(s) 416 error page as non-content

Real webservers (like apache) actually send an error page with a 416
response, but our client didn't expect it leaving the page on the socket
to be parsed as response for the next request (http) or as file content
(https), which isn't what we want at all… Symptom is a "Bad header line"
as html usually doesn't parse that well to an http-header.

This manifests itself e.g. if we have a complete file (or larger) in
partial/ which isn't discarded by If-Range as the server doesn't support
it (or it is just newer, think: mirror rotation).
It is a sort-of regression of 78c72d0ce22e00b194251445aae306df357d5c1a,
which removed the filesize - 1 trick, but this had its own problems…

To properly test this our webserver gains the ability to reply with
transfer-encoding: chunked as most real webservers will use it to send
the dynamically generated error pages.

(The tests and their binary helpers had to be slightly modified to
apply, but the patch to fix the issue itself is unchanged.)

Closes: 768797
9 years agoThai program translation update
Theppitak Karoonboonyanan [Mon, 22 Dec 2014 11:42:17 +0000 (12:42 +0100)] 
Thai program translation update

Closes: 772913
9 years agoJapanese program translation update
Kenshi Muto [Mon, 22 Dec 2014 11:39:24 +0000 (12:39 +0100)] 
Japanese program translation update

Closes: 772678
9 years agoChinese (simplified) program translation update
Zhou Mo [Mon, 22 Dec 2014 11:36:25 +0000 (12:36 +0100)] 
Chinese (simplified) program translation update

Closes: 771982
9 years agoFrench manpages translation update
Jean-Pierre Giraud [Mon, 22 Dec 2014 11:30:32 +0000 (12:30 +0100)] 
French manpages translation update

Closes: 771967
9 years agodo not make PTY slave the controlling terminal
David Kalnischkies [Wed, 10 Dec 2014 21:26:59 +0000 (22:26 +0100)] 
do not make PTY slave the controlling terminal

If we have no controlling terminal opening a terminal will make this
terminal our controller, which is a serious problem if this happens to
be the pseudo terminal we created to run dpkg in as we will close this
terminal at the end hanging ourself up in the process…

The offending open is the one we do to have at least one slave fd open
all the time, but for good measure, we apply the flag also to the slave
fd opening in the child process as we set the controlling terminal
explicitely here.

This is a regression from 150bdc9ca5d656f9fba94d37c5f4f183b02bd746 with
the slight twist that this usecase was silently broken before in that it
wasn't logging the output in term.log (as a pseudo terminal wasn't
created).

Closes: 772641
9 years agodispose http(s) 416 error page as non-content
David Kalnischkies [Sat, 29 Nov 2014 16:59:52 +0000 (17:59 +0100)] 
dispose http(s) 416 error page as non-content

Real webservers (like apache) actually send an error page with a 416
response, but our client didn't expect it leaving the page on the socket
to be parsed as response for the next request (http) or as file content
(https), which isn't what we want at all… Symptom is a "Bad header line"
as html usually doesn't parse that well to an http-header.

This manifests itself e.g. if we have a complete file (or larger) in
partial/ which isn't discarded by If-Range as the server doesn't support
it (or it is just newer, think: mirror rotation).
It is a sort-of regression of 78c72d0ce22e00b194251445aae306df357d5c1a,
which removed the filesize - 1 trick, but this had its own problems…

To properly test this our webserver gains the ability to reply with
transfer-encoding: chunked as most real webservers will use it to send
the dynamically generated error pages.

Closes: 768797
9 years agoalways run 'dpkg --configure -a' at the end of our dpkg callings
David Kalnischkies [Tue, 18 Nov 2014 18:53:56 +0000 (19:53 +0100)] 
always run 'dpkg --configure -a' at the end of our dpkg callings

dpkg checks now for dependencies before running triggers, so that
packages can now end up in trigger states (especially those we are not
touching at all with our calls) after apt is done running.

The solution to this is trivial: Just tell dpkg to configure everything
after we have (supposely) configured everything already. In the worst
case this means dpkg will have to run a bunch of triggers, usually it
will just do nothing though.

The code to make this happen was already available, so we just flip a
config option here to cause it to be run. This way we can keep
pretending that triggers are an implementation detail of dpkg.
--triggers-only would supposely work as well, but --configure is more
robust in regards to future changes to dpkg and something we will
hopefully make use of in future versions anyway (as it was planed at the
time this and related options were implemented).

Closes: 769609
9 years agocorrect architecture detection for 'rc' packages for purge
David Kalnischkies [Tue, 25 Nov 2014 11:10:15 +0000 (12:10 +0100)] 
correct architecture detection for 'rc' packages for purge

We were already considering these cases, but the code was flawed, so
that packages changing architectures are incorrectly handled and hence
the wrong architecture is used to call dpkg with, so that dpkg says the
package isn't installed (which it isn't for the requested architecture).

Closes: 770898
9 years agoproperly handle already reinstall pkgs in ordering
David Kalnischkies [Tue, 25 Nov 2014 09:50:58 +0000 (10:50 +0100)] 
properly handle already reinstall pkgs in ordering

The bugreport itself describes the case of the ordering code detecting a
loop where none is present, but the testcase finds also cases in which
there is actually a loop and we fail to realize it. --reinstall can be
considered an interactive command through and it usually doesn't
encounter such "hard" problems (= looping essentials), so this is less
serious than it sounds at first.

Closes: 770291
10 years agorelease 1.0.9.4 1.0.9.4
David Kalnischkies [Wed, 3 Dec 2014 13:51:07 +0000 (14:51 +0100)] 
release 1.0.9.4

10 years agoSpanish program translation update
Manuel "Venturi" Porras Peralta [Wed, 3 Dec 2014 11:09:21 +0000 (12:09 +0100)] 
Spanish program translation update

Closes: 771815
10 years agosupport long keyids in "apt-key del" instead of ignoring them
James McCoy [Fri, 28 Nov 2014 13:21:06 +0000 (14:21 +0100)] 
support long keyids in "apt-key del" instead of ignoring them

apt-key given a long keyid reports just "OK" all the time, but doesn't
delete the mentioned key as it doesn't find the key.

Note: In debian/experimental this was closed with
29f1b977100aeb6d6ebd38923eeb7a623e264ffe which just added the testcase
as the rewrite of apt-key had fixed this as well.

Closes: 754436
10 years agofix PTY interaction on linux and kfreebsd
David Kalnischkies [Mon, 17 Nov 2014 23:59:39 +0000 (00:59 +0100)] 
fix PTY interaction on linux and kfreebsd

We run dpkg on its own pty, so we can log its output and have our own
output around it (like the progress bar), while also allowing debconf
and configfile prompts to happen.

In commit 223ae57d468fdcac451209a095047a07a5698212 we changed to
constantly reopening the slave for kfreebsd. This has the sideeffect
though that in some cases slave and master will lose their connection on
linux, so that no output is passed along anymore. We fix this by having
always an fd referencing the slave open (linux), but we don't use it
(kfreebsd).

Failing to get our PTY up and running has many (bad) consequences
including (not limited to, nor all at ones or in any case) garbled ouput,
no output, no logging, a (partial) mixture of the previous items, …
This commit is therefore also reshuffling quiet a bit of the creation
code to get especially the output part up and running on linux and the
logging for kfreebsd.

Note that the testcase tries to cover some cases, but this is an
interactivity issue so only interactive usage can really be a good test.

Closes: 765687
10 years agoclose leaking slave fd after setting up pty magic
David Kalnischkies [Mon, 17 Nov 2014 14:06:35 +0000 (15:06 +0100)] 
close leaking slave fd after setting up pty magic

The fd moves out of scope here anyway, so we should close it properly
instead of leaking it which will tickle down to dpkg maintainer scripts.

Closes: 767774
10 years agoJapanese program translation update
Kenshi Muto [Fri, 28 Nov 2014 12:46:07 +0000 (13:46 +0100)] 
Japanese program translation update

Closes: 763033
10 years agoTurkish program translation update
Mert Dirik [Fri, 28 Nov 2014 12:43:43 +0000 (13:43 +0100)] 
Turkish program translation update

Closes: 763379
10 years agoCzech program translation update
Miroslav Kure [Fri, 28 Nov 2014 12:39:57 +0000 (13:39 +0100)] 
Czech program translation update

Closes: 764055
10 years agoChinese (simplified) program translation update
Zhou Mo [Fri, 28 Nov 2014 12:30:39 +0000 (13:30 +0100)] 
Chinese (simplified) program translation update

Closes: 766170
10 years agoFrench program translation update
Julien Patriarca [Fri, 28 Nov 2014 12:24:32 +0000 (13:24 +0100)] 
French program translation update

Closes: 766755
10 years agoDutch program translation update
Frans Spiesschaert [Fri, 28 Nov 2014 12:20:40 +0000 (13:20 +0100)] 
Dutch program translation update

Closes: 771039
10 years agouse dpkg --merge-avail only if needed in apt-mark
David Kalnischkies [Tue, 18 Nov 2014 12:41:18 +0000 (13:41 +0100)] 
use dpkg --merge-avail only if needed in apt-mark

Only "recent" versions of dpkg support stdin for merge instead of a
file, so as a quick fix we delay calling it until we really need it
which fixes most of the problem already.

Checking for a specific dpkg version here is deemed too much work, just
like using a temporary file here and depends a too high requirement for
this minor usecase. After all, it didn't work at all before, so we break
nobody here and can fix it if someone complains (with a patch).

10 years agofix test to support non-multiarch dpkg versions
David Kalnischkies [Tue, 18 Nov 2014 12:06:53 +0000 (13:06 +0100)] 
fix test to support non-multiarch dpkg versions

On travis we work with a pre-multiarch version of dpkg, so the output is
slightly different in regards to package names.

Git-Dch: Ignore

10 years agofix PTY interaction on linux and kfreebsd
David Kalnischkies [Mon, 17 Nov 2014 23:59:39 +0000 (00:59 +0100)] 
fix PTY interaction on linux and kfreebsd

We run dpkg on its own pty, so we can log its output and have our own
output around it (like the progress bar), while also allowing debconf
and configfile prompts to happen.

In commit 223ae57d468fdcac451209a095047a07a5698212 we changed to
constantly reopening the slave for kfreebsd. This has the sideeffect
though that in some cases slave and master will lose their connection on
linux, so that no output is passed along anymore. We fix this by having
always an fd referencing the slave open (linux), but we don't use it
(kfreebsd).

Failing to get our PTY up and running has many (bad) consequences
including (not limited to, nor all at ones or in any case) garbled ouput,
no output, no logging, a (partial) mixture of the previous items, …
This commit is therefore also reshuffling quiet a bit of the creation
code to get especially the output part up and running on linux and the
logging for kfreebsd.

Note that the testcase tries to cover some cases, but this is an
interactivity issue so only interactive usage can really be a good test.

Closes: 765687
10 years agoclose leaking slave fd after setting up pty magic
David Kalnischkies [Mon, 17 Nov 2014 14:06:35 +0000 (15:06 +0100)] 
close leaking slave fd after setting up pty magic

The fd moves out of scope here anyway, so we should close it properly
instead of leaking it which will tickle down to dpkg maintainer scripts.

Closes: 767774
10 years agofix file ownership tests to work on kfreebsd
David Kalnischkies [Mon, 17 Nov 2014 21:54:29 +0000 (22:54 +0100)] 
fix file ownership tests to work on kfreebsd

While on linux files are created in /tmp with $USER:$USER, on my
kfreebsd testmachine they are created with $USER:root, so we pull some
strings here to make it work on both.

10 years agocreate our cache and lib directory always with mode 755
David Kalnischkies [Fri, 14 Nov 2014 17:01:09 +0000 (18:01 +0100)] 
create our cache and lib directory always with mode 755

We autocreate for a while now the last two directories in /var/lib/apt/lists
(similar for /var/cache/apt/archives) which is very nice for systems having
any of those on tmpfs or other non-persistent storage. This also means
though that this creation is effected by the default umask, so for
people with aggressive umasks like 027 the directories will be created
with 750, which means all non-root users are left out, which is usually
exactly what we want then this umask is set, but the cache and lib
directories contain public knowledge. There isn't any need to protect
them from viewers and they render apt completely useless if not
readable.

10 years agocreate directory for extended_states if needed
David Kalnischkies [Fri, 14 Nov 2014 16:52:39 +0000 (17:52 +0100)] 
create directory for extended_states if needed

Unlikely perhaps, but there is no guarantee that the directory we want
to drop the file into actually exists, so create it if we must.

10 years agovarious small additional tests and testcases
David Kalnischkies [Sun, 9 Nov 2014 20:38:53 +0000 (21:38 +0100)] 
various small additional tests and testcases

Usually they don't provide a lot in terms of what they test, but they
help in covering many lines from strictly anecdotal commands (stats,
moo) and error messages, so that stuff which really needs to be tested,
but isn't is better visible in coverage reports.

Git-Dch: Ignore

10 years agochange codenames to jessie as stable POV in docs
David Kalnischkies [Mon, 10 Nov 2014 16:21:57 +0000 (17:21 +0100)] 
change codenames to jessie as stable POV in docs

10 years agoreenable support for -s (and co) in apt-get source
David Kalnischkies [Sat, 18 Oct 2014 12:44:41 +0000 (14:44 +0200)] 
reenable support for -s (and co) in apt-get source

The conversion to accept only relevant options for commands has
forgotten another one, so adding it again even through the usecase might
very well be equally good served by --print-uris.

Closes: 742578
10 years agoallow options between command and -- on commandline
David Kalnischkies [Sat, 27 Sep 2014 23:25:21 +0000 (01:25 +0200)] 
allow options between command and -- on commandline

This used to work before we implemented a stricter commandline parser
and e.g. the dd-schroot-cmd command constructs commandlines like this.

Reported-By: Helmut Grohne
10 years agodeprecate the Section member from package struct
David Kalnischkies [Fri, 13 Jun 2014 06:35:32 +0000 (08:35 +0200)] 
deprecate the Section member from package struct

A version belongs to a section and has hence a section member of its
own. A package on the other hand can have multiple versions from
different sections. This was "solved" by using the section which was
parsed first as order of sources.list defines, but that is obviously a
horribly unpredictable thing.

Users are way better of with the Section() as returned by the version
they are dealing with. It is likely the same for all versions of a
package, but in the few cases it isn't, it is important (like packages
moving from main/* to contrib/* or into oldlibs …).

Backport of 7a66977 which actually instantly removes the member.

10 years agouse 'best' hash for source authentication
David Kalnischkies [Sun, 18 Aug 2013 21:27:24 +0000 (23:27 +0200)] 
use 'best' hash for source authentication

Collect all hashes we can get from the source record and put them into a
HashStringList so that 'apt-get source' can use it instead of using
always the MD5sum.

We therefore also deprecate the MD5 struct member in favor of the list.

While at it, the parsing of the Files is enhanced so that records which
miss "Files" (aka MD5 checksums) are still searched for other checksums
as they include just as much data, just not with a nice and catchy name.

This is a cherry-pick of 1262d35 with some dirty tricks to preserve ABI.

LP: 1098738

10 years agoadd a simple container for HashStrings
David Kalnischkies [Sun, 18 Aug 2013 21:17:05 +0000 (23:17 +0200)] 
add a simple container for HashStrings

APT supports more than just one HashString and even allows to enforce
the usage of a specific hash. This class is intended to help with
storage and passing around of the HashStrings.

The cherry-pick here the un-const-ification of HashType() compared to
f4c3850ea335545e297504941dc8c7a8f1c83358. The point of this commit is
adding infrastructure for the next one. All by itself, it just adds new
symbols.

Git-Dch: Ignore

10 years agodisable the lock disabling in the tests
David Kalnischkies [Sun, 9 Nov 2014 20:26:20 +0000 (21:26 +0100)] 
disable the lock disabling in the tests

We create our own directories here and work without root in them, so we
can also test the locking with them as it is how we usually operate.

Git-Dch: Ignore

10 years agouse pkgAcquire::GetLock instead of own code
David Kalnischkies [Sun, 9 Nov 2014 18:04:54 +0000 (19:04 +0100)] 
use pkgAcquire::GetLock instead of own code

Do the same with less code in apt-get. This especially ensures that the
lock file (and the parent directories) exist before we are trying to
lock. It also means that clean now creates the directories if they are
missing so we returned to a proper clean state now.

Git-Dch: Ignore

10 years agouse getline() instead of rolling our own
David Kalnischkies [Sun, 9 Nov 2014 14:57:43 +0000 (15:57 +0100)] 
use getline() instead of rolling our own

We use it in other places already as well even though it is farly new
addition to the POSIX family with 2008, but rolling our own here is
really something which should be avoided in such a important method.

Git-Dch: Ignore

10 years agoallow uninstalled packages to be put on hold
David Kalnischkies [Sun, 9 Nov 2014 14:40:19 +0000 (15:40 +0100)] 
allow uninstalled packages to be put on hold

dpkg wants to know about a package before it can be put on hold, so we
have to at least hint about its existance in the available file it
"maintaince" to know about such stuff. The simple thing would probably
be to just feed all Packages files into dpkg as well, but what would be
the point really? Exactly, so we take a shortcut here and just create
dummies in the available file if we need to which isn't going to be that
common as usually you are holding packages back and not off.

Who would have thought that a simple feature like setting a package on
hold requires more than 200 lines of code… at least with the testcase it
is now explicitly tested code.

10 years agofix test to not spoil output with warnings
David Kalnischkies [Sat, 8 Nov 2014 22:59:31 +0000 (23:59 +0100)] 
fix test to not spoil output with warnings

Git-Dch: Ignore

10 years agoenhance apt-extracttemplates test
David Kalnischkies [Sat, 8 Nov 2014 21:23:19 +0000 (22:23 +0100)] 
enhance apt-extracttemplates test

The tool checks for debconf version before printing the info it
extracts, so that it doesn't extract data which can't be interpreted
before debconf is upgraded. It is only fair to check for this behaviour
in the tests.

Git-Dch: Ignore

10 years agouse the same code to detect quiet setting in all tools
David Kalnischkies [Sat, 8 Nov 2014 19:44:44 +0000 (20:44 +0100)] 
use the same code to detect quiet setting in all tools

Git-Dch: Ignore

10 years agostreamline display of --help in all tools
David Kalnischkies [Sat, 8 Nov 2014 17:14:46 +0000 (18:14 +0100)] 
streamline display of --help in all tools

By convention, if I run a tool with --help or --version I expect it to
exit successfully with the usage, while if I do call it wrong (like
without any parameters) I expect the usage message shown with a non-zero
exit.

10 years agofix variable naming typo used in debug output
David Kalnischkies [Sat, 8 Nov 2014 13:23:18 +0000 (14:23 +0100)] 
fix variable naming typo used in debug output

Git-Dch: Ignore

10 years agorestore ABI of pkgTagSection
David Kalnischkies [Fri, 7 Nov 2014 20:52:31 +0000 (21:52 +0100)] 
restore ABI of pkgTagSection

We have a d-pointer available here, so go ahead and use it which also
helps in hidding some dirty details here. The "hard" part is keeping the
abi for the inlined methods so that they don't break – at least not more
than before as much of the point beside a speedup is support for more
than 256 fields in a single section.

10 years agorevert useless abibreak in sourceslist.h
David Kalnischkies [Fri, 7 Nov 2014 20:26:49 +0000 (21:26 +0100)] 
revert useless abibreak in sourceslist.h

No idea what the intension was here, but it seems like a leftover from
a workover which happened to be done differently later. As it doesn't
provide anything at the moment we just revert to the previous abi here.

Git-Dch: Ignore

10 years agoguard pkg/grp hashtable creation changes
David Kalnischkies [Fri, 7 Nov 2014 18:18:21 +0000 (19:18 +0100)] 
guard pkg/grp hashtable creation changes

The change itself is no problem ABI wise, but the remove of the old
undynamic hashtables is, so we bring it back for older abis and happily
use the now available free space to backport more recent additions like
the dynamic hashtable itself.

Git-Dch: Ignore

10 years agoexplicit overload methods instead of adding parameters
David Kalnischkies [Fri, 7 Nov 2014 17:18:14 +0000 (18:18 +0100)] 
explicit overload methods instead of adding parameters

Adding a new parameter (with a default) is an ABI break, but you can
overload a method, which is "just" an API break for everyone doing
references to this method (aka: nobody).

Git-Dch: Ignore

10 years agoguard const-ification API changes
David Kalnischkies [Fri, 7 Nov 2014 16:49:36 +0000 (17:49 +0100)] 
guard const-ification API changes

Git-Dch: Ignore

10 years agoguard ABI changes for SourcePkg/Ver in pkgCache
David Kalnischkies [Fri, 7 Nov 2014 15:45:18 +0000 (16:45 +0100)] 
guard ABI changes for SourcePkg/Ver in pkgCache

Git-Dch: Ignore

10 years agomark internal interfaces as hidden
David Kalnischkies [Thu, 6 Nov 2014 11:41:04 +0000 (12:41 +0100)] 
mark internal interfaces as hidden

We have a bunch of classes which are of no use for the outside world,
but were still exported and so needed to preserve ABI/API. Marking them
as hidden to not export them any longer is a big API break in theory,
but in practice nobody is using them – as if they would its a bug.

10 years agobetter non-virtual metaIndex.LocalFileName() implementation
David Kalnischkies [Thu, 6 Nov 2014 11:53:59 +0000 (12:53 +0100)] 
better non-virtual metaIndex.LocalFileName() implementation

We can't add a new virtual method without breaking the ABI, but we can
freely add new methods, so for older ABIs we just implement this method
with a dynamic_cast, so that clients can be more ignorant about the API
here and especially don't need to pull a very dirty trick by assuming
internal knowledge (like apt-get did here).

10 years agoguard ABI changes for LFS in apt-inst
David Kalnischkies [Fri, 7 Nov 2014 13:21:35 +0000 (14:21 +0100)] 
guard ABI changes for LFS in apt-inst

Git-Dch: Ignore

10 years agouse a abi version check similar to the gcc check
David Kalnischkies [Fri, 7 Nov 2014 13:20:36 +0000 (14:20 +0100)] 
use a abi version check similar to the gcc check

Git-Dch: Ignore

10 years agoreplace ignore-deprecated #pragma dance with _Pragma
David Kalnischkies [Sun, 26 Oct 2014 22:17:03 +0000 (23:17 +0100)] 
replace ignore-deprecated #pragma dance with _Pragma

For compatibility we use/provide and fill quiet some deprecated methods
and fields, which subsequently earns us a warning for using them. These
warnings therefore have to be disabled for these codeparts and that is
what this change does now in a slightly more elegant way.

Git-Dch: Ignore

10 years ago(style) Variable 'res' is assigned a value that is never used
David Kalnischkies [Wed, 5 Nov 2014 17:56:12 +0000 (18:56 +0100)] 
(style) Variable 'res' is assigned a value that is never used

Checking the return value of this (and many other calls) in this
testcase is a good idea, so we do it now.

Reported-By: cppcheck
Git-Dch: Ignore

10 years agoDivision by result of sizeof(). memset() expects a size in bytes
David Kalnischkies [Wed, 5 Nov 2014 17:42:56 +0000 (18:42 +0100)] 
Division by result of sizeof(). memset() expects a size in bytes

"did you intend to multiply instead?" is what cppcheck helpful says and
it is absolutely right. Doesn't make a whole lot of a difference though
as we are talking about 'char' in this testcase, but just to be sure.

Reported-By: cppcheck
Git-Dch: Ignore

10 years agoAssert statement calls a function which may have desired side effects: 'pos_is_okay'
David Kalnischkies [Wed, 5 Nov 2014 17:33:07 +0000 (18:33 +0100)] 
Assert statement calls a function which may have desired side effects: 'pos_is_okay'

It does not have any desired sideeffect, so we just mark it as const to
properly advertise this fact to developer, compiler and linter alike.

Reported-By: cppcheck
Git-Dch: Ignore

10 years ago(error) va_list 'args' was opened but not closed by va_end()
David Kalnischkies [Wed, 5 Nov 2014 17:26:01 +0000 (18:26 +0100)] 
(error) va_list 'args' was opened but not closed by va_end()

The manpage of va_start and co additionally says:
On some systems, va_end contains a closing '}' matching a '{' in
va_start, so that both macros must occur in the same function, and in a
way that allows this.

So instead of return/breaking instantly, we save the return, make a
proper turndown with va_end in all cases and only end after that.

Reported-By: cppcheck
Git-Dch: Ignore

10 years agotests: silence clang on uninitilized variables
David Kalnischkies [Wed, 5 Nov 2014 17:14:04 +0000 (18:14 +0100)] 
tests: silence clang on uninitilized variables

The testcases have far worse problems if these ever end up being NULL
and/or are not given a value by the method called, but clang is right to
warn about it, just that we don't want to fix it in testcases…

Git-Dch: Ignore

10 years agoreenable patchsize limit option for pdiffs
David Kalnischkies [Wed, 5 Nov 2014 17:04:29 +0000 (18:04 +0100)] 
reenable patchsize limit option for pdiffs

One word: "doh!" Commit f6d4ab9ad8a2cfe52737ab620dd252cf8ceec43d
disabled the check to prevent apt from downloading bigger patches
than the index it tries to patch. Happens rarly of course, but still.
Detected by scan-build complaining about a dead assignment.
To make up for the mistake a test is included as well.

10 years agoreleasing package apt version 1.1~exp8 1.1.exp8
Michael Vogt [Thu, 6 Nov 2014 09:09:25 +0000 (10:09 +0100)] 
releasing package apt version 1.1~exp8

10 years agoRun ./prepare-release pre-export
Michael Vogt [Thu, 6 Nov 2014 08:54:31 +0000 (09:54 +0100)] 
Run ./prepare-release pre-export

Git-dch: ignore

10 years agoUpdate symbols file
Michael Vogt [Thu, 6 Nov 2014 08:42:18 +0000 (09:42 +0100)] 
Update symbols file

Git-Dch: ignore

10 years agoMerge remote-tracking branch 'mvo/feature/no-more-acquire-guessing' into debian/exper...
Michael Vogt [Thu, 6 Nov 2014 07:57:59 +0000 (08:57 +0100)] 
Merge remote-tracking branch 'mvo/feature/no-more-acquire-guessing' into debian/experimental

10 years agoMerge remote-tracking branch 'upstream/debian/experimental' into feature/no-more...
Michael Vogt [Thu, 6 Nov 2014 07:55:06 +0000 (08:55 +0100)] 
Merge remote-tracking branch 'upstream/debian/experimental' into feature/no-more-acquire-guessing

Conflicts:
apt-pkg/acquire-item.cc

10 years agoBump ABI to 4.15
Michael Vogt [Wed, 5 Nov 2014 16:55:01 +0000 (17:55 +0100)] 
Bump ABI to 4.15

10 years agoprepare ABI for feature/socketpair
Michael Vogt [Wed, 5 Nov 2014 16:53:20 +0000 (17:53 +0100)] 
prepare ABI for feature/socketpair

10 years agoMerge branch 'debian/sid' into debian/experimental
Michael Vogt [Wed, 5 Nov 2014 16:48:11 +0000 (17:48 +0100)] 
Merge branch 'debian/sid' into debian/experimental

Conflicts:
debian/changelog

10 years agoapt-pkg/deb/debindexfile.{cc,h}: kill GetIndexes()
Michael Vogt [Wed, 5 Nov 2014 16:45:37 +0000 (17:45 +0100)] 
apt-pkg/deb/debindexfile.{cc,h}: kill GetIndexes()

10 years agotest/integration/test-bug-624218-Translation-file-handling: clarify when Translation...
Michael Vogt [Wed, 5 Nov 2014 16:28:13 +0000 (17:28 +0100)] 
test/integration/test-bug-624218-Translation-file-handling: clarify when Translation-* is guessed

10 years agotest/integration/test-apt-update-filesize-mismatch: use "basename file suffix" instea...
Michael Vogt [Tue, 4 Nov 2014 21:01:59 +0000 (22:01 +0100)] 
test/integration/test-apt-update-filesize-mismatch: use "basename file suffix" instead of -s for compatibility with older systems

10 years agoapt-pkg/acquire-item.h: make friend declaration compatible with older gcc
Michael Vogt [Tue, 4 Nov 2014 16:20:52 +0000 (17:20 +0100)] 
apt-pkg/acquire-item.h: make friend declaration compatible with older gcc

10 years agoCall "Dequeue()" for items in AbortTransaction() to fix race
Michael Vogt [Tue, 4 Nov 2014 13:47:59 +0000 (14:47 +0100)] 
Call "Dequeue()" for items in AbortTransaction() to fix race

The pkgAcquire::Run() code works uses a while(ToFetch > 0) loop
over the items queued for fetching. This means that we need to
Deqeueue the item if we call AbortTransaction() to avoid a hang.

10 years agoOnly support Translation-* that are listed in the {In,}Release file
Michael Vogt [Wed, 29 Oct 2014 15:32:42 +0000 (16:32 +0100)] 
Only support Translation-* that are listed in the {In,}Release file

Handle Translation-* files exactly like Packages files (with the
expection that it is ok if a download of them fails). Remove all
"guessing" on apts side. This will elimimnate a bunch of errors
releated to captive portals and similar. Its also more correct
and removes another potential attack vector.

10 years agoMerge remote-tracking branch 'upstream/debian/sid' into debian/sid
Michael Vogt [Mon, 27 Oct 2014 14:57:12 +0000 (15:57 +0100)] 
Merge remote-tracking branch 'upstream/debian/sid' into debian/sid

10 years agomove permission changing from -item to -worker
David Kalnischkies [Sun, 26 Oct 2014 17:47:01 +0000 (18:47 +0100)] 
move permission changing from -item to -worker

The worker is the part closest to the methods, which will call the item
methods according to what it gets back from the methods, it is therefore
a better place to change permissions as it is very central and can do it
now at the point the item is assigned to a method rather than then it is
queued for download (and as before while dequeued via Done/Failure).

Git-Dch: Ignore

10 years agotests: enhance output of grep and test fails
David Kalnischkies [Sat, 25 Oct 2014 11:37:05 +0000 (13:37 +0200)] 
tests: enhance output of grep and test fails

Git-Dch: Ignore

10 years agorewrite ReadMessages()
David Kalnischkies [Fri, 24 Oct 2014 21:55:15 +0000 (23:55 +0200)] 
rewrite ReadMessages()

Central methods of our infrastructure like this one responsible for
communication with our methods shouldn't be more complicated then they
have to and not claim to have (albeit unlikely) bugs.

While I am not sure about having improved the first part, the bug is now
gone and a few explicit tests check that it stays that way, so nobody
will notice the difference (hopefully) – expect that this should a very
tiny bit faster as well as we don't manually proceed through the string.

Git-Dch: Ignore

10 years agopromote filesize to a hashstring
David Kalnischkies [Thu, 23 Oct 2014 14:54:00 +0000 (16:54 +0200)] 
promote filesize to a hashstring

It is a very simple hashstring, which is why it isn't contributing to
the usability of a list of them, but it is also trivial to check and
calculate, so it doesn't hurt checking it either as it can combined even
with the simplest other hashes greatly complicate attacks on them as you
suddenly need a same-size hash collision, which is usually a lot harder
to achieve.

10 years agoFix incorrect comparison between signed/unsigned
Michael Vogt [Thu, 23 Oct 2014 18:32:01 +0000 (14:32 -0400)] 
Fix incorrect comparison between signed/unsigned

Git-Dch: ignore

10 years agoUse sysconf(_SC_ARG_MAX) to find the size of Dpkg::MaxArgBytes
Michael Vogt [Thu, 23 Oct 2014 18:19:32 +0000 (14:19 -0400)] 
Use sysconf(_SC_ARG_MAX) to find the size of Dpkg::MaxArgBytes

Instead of hardcoding Dpkg::MaxArgBytes find out about it using
the sysconf(_SC_ARG_MAX) call.

10 years agotests: support 'installed' release in insertpackage
David Kalnischkies [Thu, 23 Oct 2014 09:37:49 +0000 (11:37 +0200)] 
tests: support 'installed' release in insertpackage

It is sometimes handy to have an installed package also in the archive,
but this was until now harder than it should as you had to duplicate the
lines, which is especially dangerous while writing the tests as it
easily happens that these two lines divert and so the same-but-different
version detection kicks in.

Git-Dch: Ignore

10 years agoswitch tests to Translation-en usage
David Kalnischkies [Thu, 23 Oct 2014 09:29:31 +0000 (11:29 +0200)] 
switch tests to Translation-en usage

We can use either and some tests exercise this, but the default should
be what we want to use and that is a split out long description file
which is properly mentioned in the Release file.

Git-Dch: Ignore

10 years agoadd test for Basic Authentication scheme
David Kalnischkies [Thu, 23 Oct 2014 08:42:18 +0000 (10:42 +0200)] 
add test for Basic Authentication scheme

Git-Dch: Ignore

10 years agochown finished partial files earlier
David Kalnischkies [Wed, 22 Oct 2014 23:28:05 +0000 (01:28 +0200)] 
chown finished partial files earlier

partial files are chowned by the Item baseclass to let the methods work
with them. Now, this baseclass is also responsible for chowning the
files back to root instead of having various deeper levels do this.

The consequence is that all overloaded Failed() methods now call the
Item::Failed base as their first step. The same is done for Done().

The effect is that even in partial files usually don't belong to
_apt anymore, helping sneakernets and reducing possibilities of a bad
method modifying files not belonging to them.

The change is supported by the framework not only supporting being run
as root, but with proper permission management, too, so that privilege
dropping can be tested with them.

10 years agodoc/examples/configure-index: make "Dpkg::Max{Arg,ArgBytes} match reality
Michael Vogt [Wed, 22 Oct 2014 21:54:08 +0000 (17:54 -0400)] 
doc/examples/configure-index: make "Dpkg::Max{Arg,ArgBytes} match reality

Git-Dch: ignore

10 years agocheck that auth.conf exists before chowning it
David Kalnischkies [Tue, 21 Oct 2014 22:05:40 +0000 (00:05 +0200)] 
check that auth.conf exists before chowning it

Git-Dch: Ignore

10 years agoEnsure /etc/apt/auth.conf has _apt:root owner
Michael Vogt [Tue, 21 Oct 2014 15:19:45 +0000 (11:19 -0400)] 
Ensure /etc/apt/auth.conf has _apt:root owner

Ensure in SetupAPTPartialDirectory() that the /etc/apt/auth.conf file
can be read by the priv sep apt methods.

10 years agodebian/apt.postinst: chown _apt:root /etc/apt/auth.conf
Michael Vogt [Tue, 21 Oct 2014 14:54:03 +0000 (10:54 -0400)] 
debian/apt.postinst: chown _apt:root /etc/apt/auth.conf

If the methods drop privileges we need to ensure that
/etc/apt/apt.conf is still readable by the _apt user.

10 years agotest if TMPDIR is accessible before using
David Kalnischkies [Mon, 20 Oct 2014 10:00:46 +0000 (12:00 +0200)] 
test if TMPDIR is accessible before using

Private temporary directories as created by e.g. libpam-tmpdir are nice,
but they are also very effective in preventing our priviledge dropping
to work as TMPDIR will be set to a directory only root has access to, so
working with it as _apt will fail. We circumvent this by extending our
check for a usable TMPDIR setting by checking access rights.

Closes: 765951
10 years agotestcases: do not allow warnings in testsuccess
David Kalnischkies [Mon, 20 Oct 2014 08:23:41 +0000 (10:23 +0200)] 
testcases: do not allow warnings in testsuccess

Adds a new testwarning which tests for zero exit and the presents of a
warning in the output, failing if either is not the case or if an error
is found, too. This allows us to change testsuccess to accept only
totally successful executions (= without warnings) which should help
finding regressions.

Git-Dch: Ignore