<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/acquire-item.cc, branch 1.3</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=1.3</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=1.3'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2016-09-02T15:16:36Z</updated>
<entry>
<title>acquire: Use priority queues and a 3 stage pipeline design</title>
<updated>2016-09-02T15:16:36Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2016-06-15T21:13:43Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2a440328ea19e9646a93f847dd9eff21e03ad16d'/>
<id>urn:sha1:2a440328ea19e9646a93f847dd9eff21e03ad16d</id>
<content type='text'>
Employ a priority queue instead of a normal queue to hold
the items; and only add items to the running pipeline if
their priority is the same or higher than the priority
of items in the queue.

The priorities are designed for a 3 stage pipeline system:

In stage 1, all Release files and .diff/Index files are fetched. This
allows us to determine what files remain to be fetched, and thus
ensures a usable progress reporting.

In stage 2, all Pdiff patches are fetched, so we can apply them
in parallel with fetching other files in stage 3.

In stage 3, all other files are fetched (complete index files
such as Contents, Packages).

Performance improvements, mainly from fetching the pdiff patches
before complete files, so they can be applied in parallel:

For the 01 Sep 2016 03:35:23 UTC -&gt; 02 Sep 2016 09:25:37 update
of Debian unstable and testing with Contents and appstream for
amd64 and i386, update time reduced from 37 seconds to 24-28
seconds.

Previously, apt would first download new DEP11 icon tarballs
and metadata files, causing the CPU to be idle. By fetching
the diffs in stage 2, we can now patch our contents and Packages
files while we are downloading the DEP11 stuff.
</content>
</entry>
<entry>
<title>randomize acquire order for same type index files</title>
<updated>2016-08-29T07:22:25Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-08-28T10:58:20Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4ff5e237d5685be187a75c563b86e80ea3e7cc01'/>
<id>urn:sha1:4ff5e237d5685be187a75c563b86e80ea3e7cc01</id>
<content type='text'>
Without randomizing the order in which we download the index files we
leak needlessly information to the mirrors of which architecture is
native or foreign on this system. More importantly, we leak the order in
which description translations will be used which in most cases will e.g.
have the native tongue first.

Note that the leak effect in practice is limited as apt detects if a file
it wants to download is already available in the latest version from a
previous download and does not query the server in such cases. Combined
with the fact that Translation files are usually updated infrequently
and not all at the same time, so a mirror can never be sure if it got asked
about all files the user wants.
</content>
</entry>
<entry>
<title>Merge branch 'portability/freebsd'</title>
<updated>2016-08-26T22:31:03Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2016-08-26T22:31:03Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6a68315e938eb2611806658828ecea86805822e7'/>
<id>urn:sha1:6a68315e938eb2611806658828ecea86805822e7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make root group configurable via ROOT_GROUP</title>
<updated>2016-08-26T20:24:25Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2016-08-25T14:25:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6f1f3c9afdb6ade6a7be110b90c8fc9e603254cf'/>
<id>urn:sha1:6f1f3c9afdb6ade6a7be110b90c8fc9e603254cf</id>
<content type='text'>
This is needed on BSD where root's default group is wheel, not
root.
</content>
</entry>
<entry>
<title>changelog: Respect Dir setting for local changelog getting</title>
<updated>2016-08-26T20:24:24Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2016-08-25T12:24:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2ed62ba6abcad809d1898a40950f86217af73812'/>
<id>urn:sha1:2ed62ba6abcad809d1898a40950f86217af73812</id>
<content type='text'>
This fixes issues with chroots, but the goal here was to get
the test suite working on systems without dpkg.
</content>
</entry>
<entry>
<title>Make directory paths configurable</title>
<updated>2016-08-26T20:17:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2016-08-23T17:41:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8757a0fdeee00ea6a7cc717188a0e129ad8a553c'/>
<id>urn:sha1:8757a0fdeee00ea6a7cc717188a0e129ad8a553c</id>
<content type='text'>
This allows other vendors to use different paths, or to build
your own APT in /opt for testing. Note that this uses + 1 in
some places, as the paths we receive are absolute, but we need
to strip of the initial /.
</content>
</entry>
<entry>
<title>Use C locale instead of C.UTF-8 for protocol strings</title>
<updated>2016-08-26T20:17:13Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2016-08-23T18:19:11Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=0fb16c3e678044d6d06ba8a6199b1e96487ee0d8'/>
<id>urn:sha1:0fb16c3e678044d6d06ba8a6199b1e96487ee0d8</id>
<content type='text'>
The C.UTF-8 locale is not portable, so we need to use C, otherwise
we crash on other systems. We can use std::locale::classic() for
that, which might also be a bit cheaper than using locale("C").
</content>
</entry>
<entry>
<title>do fail on weakhash/loop earlier in acquire</title>
<updated>2016-08-24T08:24:41Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-08-24T07:47:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2e2865ae53a65c00dd55a892d5b48458f3110366'/>
<id>urn:sha1:2e2865ae53a65c00dd55a892d5b48458f3110366</id>
<content type='text'>
The bugreport shows a segfault caused by the code not doing the correct
magical dance to remove an item from inside a queue in all cases. We
could try hard to fix this, but it is actually better and also easier to
perform these checks (which cause instant failure) earlier so that they
haven't entered queue(s) yet, which in return makes cleanup trivial.

The result is that we actually end up failing "too early" as if we
wouldn't be careful download errors would be logged before that process
was even started. Not a problem for the acquire system, but likely to
confuse users and programs alike if they see the download process
producing errors before apt was technically allowed to do an acquire
(it didn't, so no violation, but it looks like it to the untrained eye).

Closes: 835195
</content>
</entry>
<entry>
<title>support compression and by-hash for .diff/Index files</title>
<updated>2016-08-17T05:55:46Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-08-16T05:47:44Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=77e274f5ad23d79294f28ecc9868fc6f534214a4'/>
<id>urn:sha1:77e274f5ad23d79294f28ecc9868fc6f534214a4</id>
<content type='text'>
In af81ab9030229b4ce6cbe28f0f0831d4896fda01 by-hash got implemented as a
special compression type for our usual index files like Packages.
Missing in this scheme was the special .diff/Index index file containing
the info about individual patches for this index file. Deriving from the
index file class directly we inherent the compression handling
infrastructure and in this way also by-hash nearly for free.

Closes: #824926
</content>
</entry>
<entry>
<title>support getting only-uncompressed files via by-hash</title>
<updated>2016-08-17T05:55:45Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-08-15T08:51:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a99bb943e97883af6f063af9eb14e20b7a7320fc'/>
<id>urn:sha1:a99bb943e97883af6f063af9eb14e20b7a7320fc</id>
<content type='text'>
The URI we later want to modify to get the file via by-hash was unset in
case a file was only available uncompressed (which is usually not the
case) causing an acquire error.
</content>
</entry>
</feed>
