<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/pkgcachegen.cc, branch 1.9.10</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=1.9.10</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=1.9.10'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2020-01-27T12:23:53Z</updated>
<entry>
<title>NewGroup: Create GrpIterator after allocation (fix segfault)</title>
<updated>2020-01-27T12:23:53Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-27T12:23:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=cafebee579f6a9399fbfcc86e2c89a479aee465e'/>
<id>urn:sha1:cafebee579f6a9399fbfcc86e2c89a479aee465e</id>
<content type='text'>
NewGroup created a GrpIterator and then called WriteStringInMap()
which might remap the cache, causing the iterator to go invalid.

Avoid this simply by creating the iterator later on.
</content>
</entry>
<entry>
<title>NewProvidesAllArch: Check if group is empty before using it</title>
<updated>2020-01-16T10:10:47Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-16T09:53:05Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ea4b7921b7e3eadb42be1deab5f343dbba8f29df'/>
<id>urn:sha1:ea4b7921b7e3eadb42be1deab5f343dbba8f29df</id>
<content type='text'>
APT 1.9.6 introduced empty groups by making use of groups to
deduplicate package names. This is not normally a problem, but
here we assumed that every group has at least one package.

This caused a problem because automake was providing automake-1.16
while having the source package automake-1.16. So we found the
automake-1.16 group, iterated over its empty package list, trying
to store the provides (which hence never happened).

LP: #1859952
</content>
</entry>
<entry>
<title>Remove includes of (md5|sha1|sha2).h headers</title>
<updated>2020-01-14T12:10:36Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-07T20:21:35Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8c1a37e12790a23f3b132899485e011f9134b483'/>
<id>urn:sha1:8c1a37e12790a23f3b132899485e011f9134b483</id>
<content type='text'>
Remove it everywhere, except where it is still needed.
</content>
</entry>
<entry>
<title>Avoid extra out-of-cache hash table deduplication for package names</title>
<updated>2020-01-08T10:13:27Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-08T10:03:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6902792898a9fcc3bdff605e2097e6a5cd2d6bbc'/>
<id>urn:sha1:6902792898a9fcc3bdff605e2097e6a5cd2d6bbc</id>
<content type='text'>
We were de-duplicating package name strings in StoreString, but also
deduplicating most of them by them being in groups, so we had extra
hash table lookups that could be avoided in NewGroup().

To continue deduplicating names across binary packages and source
packages, insert groups for source packages as well. This is also
a good first step in allowing efficient lookup of packages by source
package - we can extend Group later by a list of SourceVersion objects,
or alternatively, simply add a by-source chain into pkgCache::Version.

This change improves performance by about 10% (913 to 814 ms), while
having no significant overhead on the cache size:

--- before
+++ after
@@ -1,7 +1,7 @@
-Total package names: 109536 (2.191 k)
-Total package structures: 118689 (4.748 k)
+Total package names: 119642 (2.393 k)
+Total package structures: 118687 (4.747 k)
   Normal packages: 83309
-  Pure virtual packages: 3365
+  Pure virtual packages: 3363
   Single virtual packages: 17811
   Mixed virtual packages: 1973
   Missing: 12231
@@ -10,21 +10,21 @@ Total distinct descriptions: 149291 (3.583 k)
 Total dependencies: 484135/156650 (12,2 M)
 Total ver/file relations: 57421 (1.378 k)
 Total Desc/File relations: 18219 (437 k)
-Total Provides mappings: 29963 (719 k)
+Total Provides mappings: 29959 (719 k)
 Total globbed strings: 226993 (5.332 k)
 Total slack space: 26,8 k
-Total space accounted for: 38,1 M
+Total space accounted for: 38,3 M
 Total buckets in PkgHashTable: 50503
-  Unused: 5727
-  Used: 44776
-  Utilization: 88.6601%
-  Average entries: 2.65073
+  Unused: 5728
+  Used: 44775
+  Utilization: 88.6581%
+  Average entries: 2.65074
   Longest: 60
   Shortest: 1
 Total buckets in GrpHashTable: 50503
-  Unused: 5727
-  Used: 44776
-  Utilization: 88.6601%
-  Average entries: 2.44631
-  Longest: 10
+  Unused: 4649
+  Used: 45854
+  Utilization: 90.7946%
+  Average entries: 2.60919
+  Longest: 11
   Shortest: 1
</content>
</entry>
<entry>
<title>pkgcachegen: Remove deprecated functions</title>
<updated>2019-02-26T15:31:20Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-02-26T12:02:59Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=bf83608f21bc7da7a67db976658df0dff2e1dab5'/>
<id>urn:sha1:bf83608f21bc7da7a67db976658df0dff2e1dab5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>pkgcache: Remove deprecated bits</title>
<updated>2019-02-26T15:31:20Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-02-04T15:01:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=10176f8b30568a1a5d21bb67ff2ca937c771dc61'/>
<id>urn:sha1:10176f8b30568a1a5d21bb67ff2ca937c771dc61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix typo reported by codespell in code comments</title>
<updated>2018-11-25T16:38:31Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2018-11-25T16:38:31Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f313e09d167cc7a83846ac9d4d5d72ba10cc2638'/>
<id>urn:sha1:f313e09d167cc7a83846ac9d4d5d72ba10cc2638</id>
<content type='text'>
No user visible change expect for some years old changelog entries,
so we don't really need to add a new one for this…

Reported-By: codespell
Gbp-Dch: Ignore
</content>
</entry>
<entry>
<title>Remove obsolete RCS keywords</title>
<updated>2018-05-07T11:41:31Z</updated>
<author>
<name>Guillem Jover</name>
<email>guillem@debian.org</email>
</author>
<published>2018-05-06T20:32:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=164f1b78d1849a0f33df7352875f86e28f5de06a'/>
<id>urn:sha1:164f1b78d1849a0f33df7352875f86e28f5de06a</id>
<content type='text'>
Prompted-by: Jakub Wilk &lt;jwilk@debian.org&gt;
</content>
</entry>
<entry>
<title>Fix various typos reported by spellcheckers</title>
<updated>2018-05-04T22:34:27Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2018-05-04T17:56:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b12bdeaf8acd050c5526ecc05526db70df5fd485'/>
<id>urn:sha1:b12bdeaf8acd050c5526ecc05526db70df5fd485</id>
<content type='text'>
Reported-By: codespell &amp; spellintian
Gbp-Dch: Ignore
</content>
</entry>
<entry>
<title>do not remap current files if nullptrs in cache generation</title>
<updated>2017-12-24T09:31:29Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2017-12-24T09:31:29Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5ba048a475cfd728906875327ddceed4614a1c9d'/>
<id>urn:sha1:5ba048a475cfd728906875327ddceed4614a1c9d</id>
<content type='text'>
If the cache needs to grow to make room to insert volatile files like
deb files into the cache we were remapping null-pointers making them
non-null-pointers in the process causing trouble later on.

Only the current Releasefile pointer can currently legally be a
nullpointer as volatile files have no release file they belong to, but
for safety the pointer to the current Packages file is equally guarded.

The option APT::Cache-Start can be used to workaround this problem.

Reported-By: Mattia Rizzolo on IRC
</content>
</entry>
</feed>
