]> git.saurik.com Git - apt.git/log
apt.git
8 years agoNEWS: Prefix the keep deb option with Binary::apt::
Julian Andres Klode [Thu, 4 Feb 2016 15:32:35 +0000 (16:32 +0100)] 
NEWS: Prefix the keep deb option with Binary::apt::

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

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

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

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

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

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

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

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

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

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

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

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

It's not cross-satisfiable.

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

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

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

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

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

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

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

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

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

Gbp-Dch: ignore

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

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

Gbp-Dch: ignore

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

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

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

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

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

Git-Dch: Ignore

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

Git-Dch: Ignore

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

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

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

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

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

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

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

Git-Dch: Ignore

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

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

Git-Dch: Ignore

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

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

Git-Dch: Ignore

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

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

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

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

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

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

Git-Dch: Ignore

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

Reported-By: cppcheck
Git-Dch: Ignore

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

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

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

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

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

Gbp-Dch: ignore

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

Git-Dch: Ignore

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

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

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

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

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

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

Git-Dch: Ignore

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

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

Git-Dch: Ignore

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

Git-Dch: Ignore

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

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

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

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

Git-Dch: ignore

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

Git-Dch: ignore
Thanks: David Kalnischkies

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

Thanks: Thomas Reusch

8 years agoRemap another (non-parameter) StringView
Julian Andres Klode [Sat, 23 Jan 2016 14:37:59 +0000 (15:37 +0100)] 
Remap another (non-parameter) StringView

I only looked at parameters in the previous commit, which was
not enough: One place also generated local string views. In this
case, we only need to make ArchA dynamic, as NameA is not used
after the FindPkg() call.

Gbp-Dch: ignore

8 years agoRemap StringView instances pointing into the cache
Julian Andres Klode [Sat, 23 Jan 2016 12:15:31 +0000 (13:15 +0100)] 
Remap StringView instances pointing into the cache

It turns out that StringViews might need to be remapped in some
places because they come from the cache. For example, some sites
pass a Ver.VerStr() to NewProvides().

Such a StringView would become invalid during the duration of
the call if the cache is remapped, causing the program to die
with a segmentation fault.

We can take care of those issues by remapping string views in
the same way we remap all the iterators. String views are only
remapped if they point into the cache though, this allows us
to write more generic code on the callee site without having
to check whether the view points into the cache or not.
That's not as efficient as possible, but the overhead does not
appear to be measurable.

Closes: #812251
8 years agoPass the old map size to ReMap()
Julian Andres Klode [Sat, 23 Jan 2016 14:02:48 +0000 (15:02 +0100)] 
Pass the old map size to ReMap()

This allows us to check if a value to be remapped was inside
the cache or not, which will become useful at a later point.

Gbp-Dch: ignore

8 years agopo: update zh_CN programs translation
Zhou Mo [Fri, 22 Jan 2016 02:07:10 +0000 (02:07 +0000)] 
po: update zh_CN programs translation

8 years agoRelease 1.2 1.2
Julian Andres Klode [Fri, 15 Jan 2016 18:53:52 +0000 (19:53 +0100)] 
Release 1.2

8 years agostring_view: Drop constexpr constructor for standard compatibility
Julian Andres Klode [Fri, 15 Jan 2016 18:18:29 +0000 (19:18 +0100)] 
string_view: Drop constexpr constructor for standard compatibility

APT::StringView is supposed to be a temporary measure, until support
for the standardized string_view is widely available. Introducing
additional unstandardized features just makes porting to the
standard version harder.

The constexpr constructor also won't have any real effect on most
systems, as the compiler will happily optimise the strlen() call
away for constant strings.

Gbp-Dch: ignore

8 years agouse APT::StringView for GrabWord
David Kalnischkies [Fri, 15 Jan 2016 16:54:43 +0000 (17:54 +0100)] 
use APT::StringView for GrabWord

Git-Dch: Ignore

8 years agoprovide a constexpr char[] overload for APT::StringView
David Kalnischkies [Fri, 15 Jan 2016 16:11:19 +0000 (17:11 +0100)] 
provide a constexpr char[] overload for APT::StringView

The commit also adds a few trivial tests

Git-Dch: Ignore

8 years agoreturn correct position in APT::StringView::(r)find
David Kalnischkies [Fri, 15 Jan 2016 14:57:32 +0000 (15:57 +0100)] 
return correct position in APT::StringView::(r)find

The position returned is supposed to be the position of the character
counted from the start of the string, but if we used the substr calling
overloads the skipped over prefix wasn't considered. The pos parameter
of rfind had also the wrong semantic.

8 years agopo: update simplified chinese programs translation
Zhou Mo [Fri, 15 Jan 2016 09:45:44 +0000 (09:45 +0000)] 
po: update simplified chinese programs translation

8 years agorevert file-hash based action-merging in acquire
David Kalnischkies [Fri, 15 Jan 2016 01:45:35 +0000 (02:45 +0100)] 
revert file-hash based action-merging in acquire

Introduced in 9d2a8a7388cf3b0bbbe92f6b0b30a533e1167f40 apt tries to
merge actions like downloading the same (as judged by hashes) file
into doing it once. The implementation was very simple in that it isn't
planing at all. Turns out that it works 90% of the time just fine, but
has issues in more complicated situations in which items can be in
different stages downloading different files emitting potentially the
"wrong" hash – like while pdiffs are worked on we might end up copying
the patch instead of the result file giving us very strange errors in
return. Reverting the change until we can implement a better planing
solution seems to be the best course of action even if its sad.

Closes: 810046
8 years agofix M-A:foreign provides creation for unknown archs
David Kalnischkies [Thu, 14 Jan 2016 19:13:16 +0000 (20:13 +0100)] 
fix M-A:foreign provides creation for unknown archs

Architectures for packages which do not belong to the native nor a
foreign architecture (dubbed barbarian for now) which are marked
M-A:foreign still provide in their own architecture even if not for
others. Also, other M-A:foreign (and allowed) packages provide in these
barbarian architectures.

8 years agodelay build-dep variable initialisation until needed
David Kalnischkies [Tue, 12 Jan 2016 10:12:56 +0000 (11:12 +0100)] 
delay build-dep variable initialisation until needed

Git-Dch: Ignore

8 years agoupdate symbols file
David Kalnischkies [Thu, 14 Jan 2016 16:16:30 +0000 (17:16 +0100)] 
update symbols file

git-Dch: Ignore

8 years agoevaluate sourceslist-list-format entity in vendors sources.list
David Kalnischkies [Thu, 14 Jan 2016 13:45:37 +0000 (14:45 +0100)] 
evaluate sourceslist-list-format entity in vendors sources.list

Parsing XML entity files in shell isn't exactly nice and causing the
substitution with a while-read loop isn't either, but it seems to be
good enough for the moment without changing too much.

Thanks: Niels Thykier for reporting on IRC

8 years agochange debian related entities to a more explicit name
David Kalnischkies [Thu, 14 Jan 2016 15:11:28 +0000 (16:11 +0100)] 
change debian related entities to a more explicit name

Git-Dch: Ignore

8 years agoensure built en-manpages are ignored by git
David Kalnischkies [Tue, 12 Jan 2016 10:15:39 +0000 (11:15 +0100)] 
ensure built en-manpages are ignored by git

Seems like the interaction between wildcards and exemptions has changed
slightly, so be positively more explicit about our ignoring of en.

Git-Dch: Ignore

8 years agomark not-declared helper function for showsrc as static
David Kalnischkies [Thu, 14 Jan 2016 16:24:27 +0000 (17:24 +0100)] 
mark not-declared helper function for showsrc as static

Git-Dch: Ignore

8 years agoDo not show multiple identical apt-cache showsrc entries
Michael Vogt [Thu, 14 Jan 2016 08:28:47 +0000 (09:28 +0100)] 
Do not show multiple identical apt-cache showsrc entries

Closes: #734922
8 years agotest-apt-acquire-additional-files: Set file mode of touched files
Julian Andres Klode [Tue, 12 Jan 2016 22:45:59 +0000 (23:45 +0100)] 
test-apt-acquire-additional-files: Set file mode of touched files

This prevents a test suite failure on systems with weird umasks.

Also set umask 000 at the beginning so we can actually check for
that anywhere.

Gbp-Dch: ignore

8 years agoOnly enable pipelining if server is HTTP/1.1
Julian Andres Klode [Tue, 12 Jan 2016 14:18:12 +0000 (15:18 +0100)] 
Only enable pipelining if server is HTTP/1.1

Just enabling it for anyone breaks with HTTP/1.0 servers and
proxies sometimes.

Closes: #810796
8 years agoAUTHORS: Update: I am active, bubulle is not
Julian Andres Klode [Tue, 12 Jan 2016 10:27:13 +0000 (11:27 +0100)] 
AUTHORS: Update: I am active, bubulle is not

Gbp-Dch: ignore

8 years agoSort the list of sources to be built and linked
Mattia Rizzolo [Sat, 9 Jan 2016 10:45:34 +0000 (10:45 +0000)] 
Sort the list of sources to be built and linked

Fix reproducibility issue due to readdir() order by sorting
the list of sources to be built and linked.

[jak@debian.org: Added summary and fixed typo]

Closes: #810509
8 years agosearch: Handle packages without description
Julian Andres Klode [Mon, 11 Jan 2016 16:36:58 +0000 (17:36 +0100)] 
search: Handle packages without description

If a package has no description, we would crash in search. While
this should not happen, there seem to be some weird cases where
it does.

A safer way might be to make the whole parser thing safe
against this, so pkgRecords::Lookup(Desc.FileList()) works
and returns a parser where all values are empty. This would
also fix all other instances of this bug, if there are any.

Closes: #810622
8 years agoVersion the build-depends on liblz4-dev to >= 0.0~r126
Julian Andres Klode [Sat, 9 Jan 2016 00:38:05 +0000 (01:38 +0100)] 
Version the build-depends on liblz4-dev to >= 0.0~r126

We need r126 of lz4, as this introduces the lz4frame.h
header.

8 years agoBump dpkg-dev and debhelper build-dep to make lintian happy
Julian Andres Klode [Sat, 9 Jan 2016 00:31:05 +0000 (01:31 +0100)] 
Bump dpkg-dev and debhelper build-dep to make lintian happy

This is not really needed anymore, as those are in stable,
but as they are versioned already, let's just do it.

Gbp-Dch: ignore

8 years agoDo not break apt-file (<< 3.0~exp1~), 2.X works fine
Julian Andres Klode [Sat, 9 Jan 2016 00:27:22 +0000 (01:27 +0100)] 
Do not break apt-file (<< 3.0~exp1~), 2.X works fine

There's no point in breaking all older apt-file versions just
because one old experimental upload was broken.

8 years agoNEWS: Refer to apt(8) instead of apt(1)
Julian Andres Klode [Sat, 9 Jan 2016 00:25:06 +0000 (01:25 +0100)] 
NEWS: Refer to apt(8) instead of apt(1)

Reported-By: Mattia Rizzolo (on IRC)
Gbp-Dch: ignore

8 years agoRelease 1.2~exp1 1.2_exp1
Julian Andres Klode [Fri, 8 Jan 2016 20:42:06 +0000 (21:42 +0100)] 
Release 1.2~exp1

8 years agoBreak apt-file (<< 3.0~exp1~)
Julian Andres Klode [Fri, 8 Jan 2016 20:40:38 +0000 (21:40 +0100)] 
Break apt-file (<< 3.0~exp1~)

Gbp-Dch: ignore

8 years agoInstall bash completion with correct name
Julian Andres Klode [Fri, 8 Jan 2016 20:36:53 +0000 (21:36 +0100)] 
Install bash completion with correct name

Move the completion to completions/bash/apt and install all
bash completions from completions/bash.

Gbp-Dch: ignore

8 years agolibapt-pkg5.0: Add Breaks appstream (<< 0.9.0-3~)
Julian Andres Klode [Fri, 8 Jan 2016 20:23:24 +0000 (21:23 +0100)] 
libapt-pkg5.0: Add Breaks appstream (<< 0.9.0-3~)

This ensures that a compatible version of appstream is
installed, that is, one that disables lz4 compression
for its data.

8 years agoStore the size of strings in the cache
Julian Andres Klode [Fri, 8 Jan 2016 10:12:14 +0000 (11:12 +0100)] 
Store the size of strings in the cache

By storing the size of the string in the cache, we can make use of
it when comparing the names in the hashtable in pkgCache::FindGrp.

8 years agoHashSumValue::Set: Do not provide const char* overload
Julian Andres Klode [Fri, 8 Jan 2016 20:19:32 +0000 (21:19 +0100)] 
HashSumValue::Set: Do not provide const char* overload

Hide the std::string overload instead of providing a
const char * one, the old variant was stupid.

Gbp-Dch: ignore

8 years agodebListParser: Convert another ParseDepends to StringView
Julian Andres Klode [Fri, 8 Jan 2016 19:57:23 +0000 (20:57 +0100)] 
debListParser: Convert another ParseDepends to StringView

I overlooked this

Gbp-Dch: ignore

8 years agoNEWS: Document recompression of indices
Julian Andres Klode [Fri, 8 Jan 2016 19:45:22 +0000 (20:45 +0100)] 
NEWS: Document recompression of indices

8 years agoremove uncompressed leftover partial file before pdiff bootstrap
David Kalnischkies [Fri, 8 Jan 2016 16:51:23 +0000 (17:51 +0100)] 
remove uncompressed leftover partial file before pdiff bootstrap

The code already deals with compressed leftovers, but forgot the
uncompressed files. The opertunity is picked to reorder this code and
add debug messages about the actions taken as well as produce such a
leftover file in the associated testcase.

8 years agouse filesize of compressed pdiffs for the limit if possible
David Kalnischkies [Fri, 8 Jan 2016 14:30:05 +0000 (15:30 +0100)] 
use filesize of compressed pdiffs for the limit if possible

With the addition of the $HASH-Download field in the .diff/Index we got
the size of the compressed patches for 'free', so if that information is
available we can use it for a more fitting calculation of the size
requirements of the patches vs. the complete file.

Note that this predicts a too small size in the transition case in which
the information isn't available for all patches, but figuring this out
would be a lot of code for practically nothing as only one update can
ever be in such a transition phase.

8 years agotests: limit autotest-functionname generation to sane characters
David Kalnischkies [Fri, 8 Jan 2016 12:08:19 +0000 (13:08 +0100)] 
tests: limit autotest-functionname generation to sane characters

Some (older) versions of bash seem to be allergic to a method named
"aptautotest_grep_^apt" (note the caret). Unlikely that we are going to
write autotests for such commands so we could just skip those, but lets
instead just use "normal" characters in the names and strip the rest as
we already did with the (arguable more common) '-'.

8 years agosupport '-' and no parameter for stdin in apt-helper cat-file
David Kalnischkies [Thu, 7 Jan 2016 23:35:39 +0000 (00:35 +0100)] 
support '-' and no parameter for stdin in apt-helper cat-file

This way it works more similar to the compressor binaries, which we
can relief in this way from their job in the test framework avoiding the
need of adding e.g. liblz4-tool to the test dependencies.

8 years agokeep compressed indexes in a low-cost format
David Kalnischkies [Thu, 7 Jan 2016 19:32:09 +0000 (20:32 +0100)] 
keep compressed indexes in a low-cost format

Downloading and storing are two different operations were different
compression types can be preferred. For downloading we provide the
choice via Acquire::CompressionTypes::Order as there is a choice to
be made between download size and speed – and limited by whats available
in the repository.

Storage on the other hand has all compressions currently supported by
apt available and to reduce runtime of tools accessing these files the
compression type should be a low-cost format in terms of decompression.

apt traditionally stores its indexes uncompressed on disk, but has
options to keep them compressed. Now that apt downloads additional files
we also deal with files which simply can't be stored uncompressed as
they are just too big (like Contents for apt-file). Traditionally they
are downloaded in a low-cost format (gz) as repositories do not provide
other formats, but there might be even lower-cost formats and for
download we could introduce higher-cost in the repositories.

Downloading an entire index potentially requires recompression to
another format, so an update takes potentially longer – but big files
are usually updated via pdiffs which has to de- and re-compress anyhow
and does it on the fly anyhow, so there is no extra time needed and in
general it seems to be benefitial to invest the time in update to save
time later on file access.

8 years agotests: try to pick up compressors from config automatically
David Kalnischkies [Sun, 3 Jan 2016 21:39:46 +0000 (22:39 +0100)] 
tests: try to pick up compressors from config automatically

Less hardcoding should help while introducing new compressors.

Git-Dch: Ignore

8 years agoallow pdiff bootstrap from all supported compressors
David Kalnischkies [Tue, 5 Jan 2016 23:05:24 +0000 (00:05 +0100)] 
allow pdiff bootstrap from all supported compressors

There is no reason to enforce that the file we start the bootstrap with
is compressed with a compressor which is available online. This allows
us to change the on-disk format as well as deals with repositories
adding/removing support for a specific compressor.

8 years agoensure compression cleanup even without lists-cleanup
David Kalnischkies [Tue, 5 Jan 2016 23:08:04 +0000 (00:08 +0100)] 
ensure compression cleanup even without lists-cleanup

If we store files compressed in lists/ and the file switched compression
formats we happened to retain the "old" format, but by default the
cleanup process catched this oversight and removed the file.
[The initial situation described doesn't arise as we store no files by
default compressed and even with apt-file configuring Contents files, we
don't really have that problem as there is just .gz files for those.]

We solve this by just removing any uncompressed as well as compressed
(we support) file just before we move the 'new' version of the file in.

8 years agouse one 'store' method to rule all (de)compressors
David Kalnischkies [Sun, 3 Jan 2016 18:23:30 +0000 (19:23 +0100)] 
use one 'store' method to rule all (de)compressors

Adding a new compressor method meant adding a new method as well – even
if that boilt down to just linking to our generalized decompressor with
a new name. That is unneeded busywork if we can instead just call the
generalized decompressor and let it figure out which compressor to use
based on the filenames rather than by program name.

For compatibility we ship still 'gzip', 'bzip2' and co, but they are
just links to our "new" 'store' method.

8 years agoinclude all compressed Packages/Sources files in Release file
David Kalnischkies [Sat, 2 Jan 2016 22:15:15 +0000 (23:15 +0100)] 
include all compressed Packages/Sources files in Release file

Having a hardcoded list of compression types here doesn't really provide
us with anything beside added complexity each time someone adds a new
compression type. That we don't need to be that specific is evident by
Contents and Translation-* matchers which are a lot more generic and
didn't generate problems anyhow.

8 years agofix typo in SrvRecords documentation
David Kalnischkies [Wed, 6 Jan 2016 01:43:27 +0000 (02:43 +0100)] 
fix typo in SrvRecords documentation

Git-Dch: Ignore

8 years agoAvailableDescriptionLanguages: Use one string for all iterations
Julian Andres Klode [Fri, 8 Jan 2016 11:37:58 +0000 (12:37 +0100)] 
AvailableDescriptionLanguages: Use one string for all iterations

Do not create strings within the loop, that creates one string
per language and does more work than needed. Instead, reserve
enough space at the beginning and assign the prefix, and then
resize and append inside the loop.

Also call exists with the string itself instead of the c_str(),
this means that the lookup uses the size information in the
string now and does not have to call strlen() on it.

8 years agopkgCacheGenerator: CurMd5.Value() cannot be empty
Julian Andres Klode [Fri, 8 Jan 2016 11:15:11 +0000 (12:15 +0100)] 
pkgCacheGenerator: CurMd5.Value() cannot be empty

It makes no sense to check if the value is empty, as it cannot
be. It will always be a hexstring of exactly 32 bytes.

8 years agooperator==(char*, StringView) use StringView.operator==
Julian Andres Klode [Fri, 8 Jan 2016 01:32:23 +0000 (02:32 +0100)] 
operator==(char*, StringView) use StringView.operator==

Use the same path for both comparisons, as the operator== path
is faster than just calling compare() - it avoids any comparison
if the size differs.

Gbp-Dch: ignore

8 years agopkgCacheGenerator::hash: Do not call tolower_ascii()
Julian Andres Klode [Fri, 8 Jan 2016 00:34:53 +0000 (01:34 +0100)] 
pkgCacheGenerator::hash: Do not call tolower_ascii()

Gbp-Dch: ignore

8 years agopkgCacheGenerator::StoreString: Get rid of std::string
Julian Andres Klode [Fri, 8 Jan 2016 00:27:01 +0000 (01:27 +0100)] 
pkgCacheGenerator::StoreString: Get rid of std::string

Instead of storing a string -> map_stringitem_t mapping, create
our own data type that can point to either a normal string or
a string inside the cache.

This avoids the creation of any string and improves performance
slightly (about 4%).

8 years agoReplace compare() == 0 checks with this == other checks
Julian Andres Klode [Thu, 7 Jan 2016 23:52:29 +0000 (00:52 +0100)] 
Replace compare() == 0 checks with this == other checks

This improves performance, as we now can ignore unequal strings
based on their length already.

Gbp-Dch: ignore

8 years agopkgCacheGenerator: Use StringView for toString
Julian Andres Klode [Thu, 7 Jan 2016 23:41:14 +0000 (00:41 +0100)] 
pkgCacheGenerator: Use StringView for toString

This removes some minor overhead.

Gbp-Dch: ignore

8 years agopkgCacheGenerator::StoreString: Move the string into the map
Julian Andres Klode [Thu, 7 Jan 2016 23:25:45 +0000 (00:25 +0100)] 
pkgCacheGenerator::StoreString: Move the string into the map

Moving the string is likely faster than copying it. We could probably
avoid strings alltogether in the future using some more crazy code,
but I have not looked at that yet.

Gbp-Dch: ignore

8 years agoStringView: rfind: pos should be end of substr, not start
Julian Andres Klode [Thu, 7 Jan 2016 19:23:48 +0000 (20:23 +0100)] 
StringView: rfind: pos should be end of substr, not start

Gbp-Dch: ignore

8 years agoStringView: pos argument default should be npos
Julian Andres Klode [Thu, 7 Jan 2016 19:21:16 +0000 (20:21 +0100)] 
StringView: pos argument default should be npos

Gbp-Dch: ignore

8 years agoStringView::rfind(): Call rfind() instead of find() on subst
Julian Andres Klode [Thu, 7 Jan 2016 19:01:16 +0000 (20:01 +0100)] 
StringView::rfind(): Call rfind() instead of find() on subst

Thanks: Niels Thykier for reporting on IRC
Gbp-Dch: ignore

8 years agoSwitch performance critical code to use APT::StringView
Julian Andres Klode [Thu, 7 Jan 2016 18:16:23 +0000 (19:16 +0100)] 
Switch performance critical code to use APT::StringView

This improves performance of the cache generation on my
ARM platform (4x Cortex A15) by about 10% to 20% from
2.35-2.50 to 2.1 seconds.

8 years agoIntroduce internal APT::StringView class
Julian Andres Klode [Thu, 7 Jan 2016 18:14:21 +0000 (19:14 +0100)] 
Introduce internal APT::StringView class

The class APT::StringView implements a drop-in replacement
for a subset of C++17 std::string_view() features. It will
be dropped at a later point and may not be used in public
interfaces.

8 years agorred: Run in parallel
Julian Andres Klode [Thu, 7 Jan 2016 16:09:30 +0000 (17:09 +0100)] 
rred: Run in parallel

Remove the SingleInstance flag so we can use the new randomized
queue feature to run parallel.

8 years agoacquire: Allow parallelizing methods without hosts
Julian Andres Klode [Thu, 7 Jan 2016 16:06:55 +0000 (17:06 +0100)] 
acquire: Allow parallelizing methods without hosts

The maximum parallelization soft limit is the number of CPU
cores * 2 on systems defining _SC_NPROCESSORS_ONLN. The hard
limit in all cases is Acquire::QueueHost::Limit.

8 years agoCopyFile: Use 64 * 1024 instead of 64000 as buffer size
Julian Andres Klode [Thu, 7 Jan 2016 15:16:06 +0000 (16:16 +0100)] 
CopyFile: Use 64 * 1024 instead of 64000 as buffer size

This is a multiple of the page size and thus results in less
page faults, speeding up copying.

Also, while we're at at, unify all uses of that size in a
constant variable APT_BUFFER_SIZE.