<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/pkgcachegen.cc, branch 3.1.14</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.1.14</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.1.14'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-11-10T10:01:02Z</updated>
<entry>
<title>Correctly copy provided version in m-a lazy-init</title>
<updated>2025-11-10T10:01:02Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-11-10T09:41:20Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2f4299bf39c85b694876cb8030fae0887e8b5edc'/>
<id>urn:sha1:2f4299bf39c85b694876cb8030fae0887e8b5edc</id>
<content type='text'>
When a provides was copied, we inadvertently copied the package
version instead of the provided version. Copy the provided version
instead.

Closes: #1120463
</content>
</entry>
<entry>
<title>Implement architecture variants</title>
<updated>2025-10-25T18:42:14Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-01-07T16:39:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9d62eef571ffd1fd2df8b97884d3689fced27fb1'/>
<id>urn:sha1:9d62eef571ffd1fd2df8b97884d3689fced27fb1</id>
<content type='text'>
Architecture variants are children of an architecture that share
the same ABI but are optimized for different ISA levels. They
are available in Ubuntu 25.10 and newer, and not supported in
Debian or other distributions.

A deb built for a variant contains the Architecture-Variant field,
and the Architecture field points to the baseline, for example:

    Architecture: amd64
    Architecture-Variant: amd64v3

However, the apt-get indextargets command reports the variant in the
Architecture: field, and most of the code in APT presents the variant
as the architecture.

There are two types of variants:

1. Standalone variants are recorded in the Architectures field of the
   Release file as if they were a real architecture:

        Architectures: amd64 amd64v3

   Standalone architecture variants only fetch the standalone
   architecture variant's Packages file. To do this, this patch
   changes the code such that the variants indextargets "supplant"
   the base targets.

   This may have complicated outcomes on the apt-get indextargets
   command.

2. Other variants can only be identified by their files being recorded
   with hashes in the Release file.

   APT fetches both the base architecture's as well as the variant's
   Packages file.

Variants are configured in the

    APT::Architecture-Variants

list.

Image builders may want to build specific variant images using

    APT::Architecture-Variants { "amd64v3"; }

But this commit also implements an automatic discovery mechanism
using the varianttable and /proc/cpuinfo.

    APT::Architecture-Variants "auto";
</content>
</entry>
<entry>
<title>Add 'Include'/'Exclude' options to limit packages used from a repository</title>
<updated>2025-05-19T15:19:23Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-01-29T18:01:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=93416f3227685c390c7ab579981efde526134181'/>
<id>urn:sha1:93416f3227685c390c7ab579981efde526134181</id>
<content type='text'>
'Include' allows limiting a repository to a allowlist of packages,
'Exclude' allows removing packages from a repository.

Implementation wise this is not the nicest as it goes via the
IndexTarget options, so we first parse our option value into a
vector, then we turn the vector into a string, and then vectorize
it again. That said, we support both "," and " " as separators due
to the construction (we split by "," then we join using " ").

Gbp-Dch: full
</content>
</entry>
<entry>
<title>Fix crash in VersionExtra using --with-source etc</title>
<updated>2025-02-24T12:24:17Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-24T12:18:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=55d3bc60f933faf5f46e31c0522bed8320409dcf'/>
<id>urn:sha1:55d3bc60f933faf5f46e31c0522bed8320409dcf</id>
<content type='text'>
VersionExtra holds, at runtime, the SHA256 of the packages being
added to try to avoid deduplicating obviously different packages;
the SHA256 itself is too large to store in the cache.

When volatile sources are used, the VersionExtra array is not
initialized, or rather it used to be initialized to 32*1024
zero elements as a performance optimization.

This meant that specifying --with-source with a package that
looks like a duplicate of a version with an ID &gt;= 32*1024 triggered
the assertion; so we could not reproduce it easily in the test
suite.

Remove the optimized initialization to make the behavior more
uniform; and treat too large version IDs as having no SHA256.

Closes: #1098702
</content>
</entry>
<entry>
<title>cache: Introduce partial SourceVersion support</title>
<updated>2025-02-15T15:37:19Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-15T15:37:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4bcb198a67156b2654f3b64173499ab78f0d4d9a'/>
<id>urn:sha1:4bcb198a67156b2654f3b64173499ab78f0d4d9a</id>
<content type='text'>
This is the first step that introduces a 1:1 mapping between version
and source version. In a future version this can use the fields
currently marked unavailable to deduplicate the SourceVersion
objects across the group.

The policy gains a member for storing pins for sourceversions.

Together, in the future we should be able to determine candidates
for source versions.
</content>
</entry>
<entry>
<title>Run unifdef -DAPT_PKG_ABI=700 again</title>
<updated>2025-02-15T08:40:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-15T08:40:15Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6e877571bc2dd50e38f2f35675c401d74dbe233d'/>
<id>urn:sha1:6e877571bc2dd50e38f2f35675c401d74dbe233d</id>
<content type='text'>
main picked up a couple new ifdefs since the branch started; so
clean them up again.
</content>
</entry>
<entry>
<title>Drop APT::StringView</title>
<updated>2025-02-14T18:45:12Z</updated>
<author>
<name>наб</name>
<email>nabijaczleweli@nabijaczleweli.xyz</email>
</author>
<published>2024-11-12T17:22:44Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4f6d379124bc51a09608fa3f45d66713f927b959'/>
<id>urn:sha1:4f6d379124bc51a09608fa3f45d66713f927b959</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Record all available sources for descriptions</title>
<updated>2025-01-30T23:10:02Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-01-30T23:10:02Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=593cf30cee476bdae21f7e99f67d2572b7381e90'/>
<id>urn:sha1:593cf30cee476bdae21f7e99f67d2572b7381e90</id>
<content type='text'>
Avoiding duplications is one thing, but it could also be handy to know
all sources for a description so that you can e.g. avoid opening another
file or similar such if its also present in one you already have open.

Given how the structures were set up this was probably intended all
along and either worked at some point or was abandoned for the
duplicates that we started culling heavily with the introduction of
MultiArch as at that point they blew up the cache and needed to be dealt
with.
</content>
</entry>
<entry>
<title>Do not create descriptions structs for each architecture</title>
<updated>2025-01-30T21:45:40Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-01-30T21:45:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=d0c2cc03d75fa66986a9aadf8b1361426e9ceb4d'/>
<id>urn:sha1:d0c2cc03d75fa66986a9aadf8b1361426e9ceb4d</id>
<content type='text'>
The architectures are supposed to share the descriptions as they are
(very usually) the same, but the code was happily creating structs
for every architecture of a package which is especially pointless as
for e.g. Debian those will be the short description likely superseded
in output and all uses by the 'en' "translation".
</content>
</entry>
<entry>
<title>Drop unused version stanza size info from binary cache</title>
<updated>2025-01-30T19:10:50Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-01-30T18:03:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=1bc8dab8df60c5da7cc817bec5f53e60f7eb9817'/>
<id>urn:sha1:1bc8dab8df60c5da7cc817bec5f53e60f7eb9817</id>
<content type='text'>
Same reason as with the description size before, but this one had
actually one extremely dated user in src:apt left with dumpavail,
which is changed to an implementation that is (in comparison) a bit
slower, but should be good enough for a command that is ideally not
used anymore (even if codesearch suggests otherwise).

After all, what makes this a bit slower is not that we don't know the
size, but that this one does additional work preparing for accessing
the fields which we don't do. In exchange pkgTagFile has a better
implementation for "Jitter" than the old code that we would "just"
need to copy here if speed were really an issue.
</content>
</entry>
</feed>
