Age | Commit message (Collapse) | Author |
|
The fix for #777760 causes packages of foreign (and the native)
architectures, to be created correctly, but invalidates (like the
previously existing, but policy-forbidden architecture-less packages
we had to support for some upgrade scenarios) the assumption that the
first (and only) package in the cache for a single architecture system
must be the package for the native architecture (as, where should the
other architectures come from, right? Wrong.).
Depending on the order of parsing sources more or less packages can be
effected by this. The effects are strange (for apt it mostly effects
simulation/debug output, but also apt-mark on these specific packages),
which complicates debugging, but relatively harmless if understood as
most actions do not need direct named access to packages.
The problem is fixed by removing the single-arch special casing in the
paths who had them (Cache.FindPkg), so they use the same code as
multi-arch systems, which use them as a wrapper for Grp.FindPkg.
Note that single-arch system code was using Grp.FindPkg before as well
if a Grp structure was handily available, so we don't introduce new
untested code here: We remove more brittle special cases which are less
tested instead (this was planed to be done for Stretch anyhow).
Note further that the method with the assumption itself isn't fixed. As
it is a private method I opted for declaring it deprecated instead and
remove all its call positions. As it is private no-one can call this
method legally (thanks to how c++ works by default its still an exported
symbol through) and fixing it basically means reimplementing code we
already have in Grp.FindPkg.
Removing rather than fixing seems hence like a good solution.
Closes: 782777
Thanks: Axel Beckert for testing
|
|
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.
|
|
Git-Dch: Ignore
Reported-By: gcc
|
|
In #737085 we see that apt can be confused if informations about
versions only differ slightly. This commit adds a way of at least adding
a few more data points with the next abi break to help a bit with it.
Git-Dch: Ignore
|
|
Beside being a bit cleaner it hopefully also resolves oddball problems
I have with high levels of parallel jobs.
Git-Dch: Ignore
Reported-By: iwyu (include-what-you-use)
|
|
Reported-By: gcc -Wunused-parameter
Git-Dch: Ignore
|
|
Git-Dch: Ignore
Reported-By: gcc -Wpedantic
|
|
|
|
Adds on top of Version 2 to all displayed version numbers the
architecture as well as the MultiArch flag for consumption by the hooks.
Most of the time the architecture will be the same for both versions
displayed, but packages might change from "all" to "any" (or back)
between versions so we can't display the architecture for packages.
Pseudo-Format for Version 3:
<name> <version> <arch> <m-a-flag> <compare> <version> <arch> <m-a-flag>
Examples:
stuff - - none < 1 amd64 none **CONFIGURE**
libsame 1 i386 same < 2 i386 same **CONFIGURE**
stuff 2 i386 none > 1 i386 none **CONFIGURE**
libsame 2 i386 same > - - none **REMOVE**
toolkit 1 all foreign > - - none **REMOVE**
Closes: #712116
|
|
- provide DepIterator::IsSatisfied as a nicer shorthand for DepCheck
|
|
* apt-pkg/pkgcache.cc:
- assume sorted hashtable entries for groups/packages
|
|
|
|
- ignore negative dependencies applying in the same group for
M-A:same packages on the real package name as self-conflicts
|
|
by introducing a pseudo-architecture 'none' so that the small group of
users with these packages can get right of them without introducing too
much hassle for other users (Closes: #686346)
|
|
- do a string comparision for architecture checking in IsMultiArchImplicit
as 'unique' strings in the pkgcache aren't unique (Closes: #677454)
|
|
- add support for arch-specific qualifiers in dependencies
|
|
- add an IsMultiArchImplicit() method for Dep- and PrvIterator
|
|
|
|
- ignore implicit conflicts on providers in AllTarget, too
|
|
- always prefer "en" over "" for "en"-language regardless of cache-order
|
|
|
|
|
|
|
|
|
|
- ignore "self"-conflicts for all architectures of a package
instead of just for the architecture of the package locked at
in the ordering of installations too (Closes: #802901)
|
|
|
|
done on the mirco-optimazation level, so lets fix them:
(performance) Possible inefficient checking for emptiness.
(performance) Prefer prefix ++/-- operators for non-primitive types.
|
|
- Check that cache is at least CacheFileSize bytes large (LP: #16467)
|
|
|
|
pseudo-package related and/or private
|
|
for the three different dependencies
|
|
|
|
- really ignore :arch in FindPkg() in non-multiarch environment
|
|
- use the native Architecture stored in the cache header instead of
loading it from configuration as suggested by Julian Andres Klode
|
|
that it is a needed "hack" to support multi-arch in the least breaking way
|
|
- create foo:any provides for all architectures for an allowed package
|
|
- make "all"->"native" an implementation detail of NewPackage
rather than rewrite it in higher methods
|
|
Multi-Arch; instead, Arch: all packages only satisfy dependencies for
the native arch, except where the Arch: all package is declared
Multi-Arch: foreign. (Closes: #613584)
This has the sideeffect that arch:all packages internally show up as
coming from the native arch - so packages with the architecture "all"
doesn't exist any longer in the pkgcache
|
|
- fallback always to a suitable description (Closes: #601016)
|
|
- support 100-pinning in Release file with ButAutomaticUpgrades
as requested by the backports crew (Closes: #596097)
* apt-pkg/deb/deblistparser.cc:
- overrule NotAutomatic in case of ButAutomaticUpgrades
|
|
- fix LongDesc handling in LANG=C environment
|
|
* Swedish translation update. Closes: #592366
* apt-pkg/pkgcache.cc:
- re-evaluate the architectures cache when the cache is (re)opened
* apt-pkg/cdrom.cc:
- fix off-by-one error in DropBinaryArch
* apt-pkg/contrib/fileutl.cc:
- Add WriteAtomic mode.
- Revert WriteEmpty to old behavior (LP: #613211)
* apt-pkg, methods:
- Convert users of WriteEmpty to WriteAtomic.
* apt-pkg/depcache.cc:
- Only try upgrade for Breaks if there is a newer version, otherwise
handle it as Conflicts (by removing it) (helps for #591882).
* debian/control:
- Add dependency on gnupg to apt, apt-key uses it.
|
|
- change the debug outputs to display also arch of the
package and version dependencies information
|
|
- re-evaluate the architectures cache when the cache is (re)opened
|
|
- prefer non-virtual packages in FindPreferredPkg
|
|
- make the used MMap moveable (and therefore dynamic resizeable) by
applying (some) mad pointer magic (Closes: #195018)
|
|
- add another round of const& madness as the previous round accidently
NOT override the virtual GetCandidateVer() method (Closes: #587725)
|
|
- add simple wrapper around std::set for cache structures
|
|
- get the best matching arch package from a group with FindPreferredPkg
|
|
- sync documentation with status quo, regarding files/directories in
use, extended_states and uri schemes.
* doc/cache.sgml:
- drop the file in favor of inplace documentation with doxygen
* apt-pkg/pkgcache.h:
- enhance the Groups ABI by providing a ID as the other structs does
- check also the size of the Group struct then checking for the others
|