inline const char *VerStr() const {return S->VerStr == 0?0:Owner->StrP + S->VerStr;};
inline const char *Section() const {return S->Section == 0?0:Owner->StrP + S->Section;};
inline const char *Arch() const {
+ if (S->MultiArch == pkgCache::Version::All ||
+ S->MultiArch == pkgCache::Version::AllForeign ||
+ S->MultiArch == pkgCache::Version::AllAllowed)
+ return "all";
return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch;
};
__deprecated inline const char *Arch(bool const pseudo) const {
Ver->MultiArch = pkgCache::Version::None;
else if (MultiArch == "same") {
// Parse multi-arch
- if (Section.FindS("Architecture") == "all")
+ if (ArchitectureAll() == true)
{
/* Arch all packages can't be Multi-Arch: same */
_error->Warning("Architecture: all package '%s' can't be Multi-Arch: same",
Ver->MultiArch = pkgCache::Version::None;
}
+ if (ArchitectureAll() == true)
+ switch (Ver->MultiArch)
+ {
+ case pkgCache::Version::Foreign: Ver->MultiArch = pkgCache::Version::AllForeign; break;
+ case pkgCache::Version::Allowed: Ver->MultiArch = pkgCache::Version::AllAllowed; break;
+ default: Ver->MultiArch = pkgCache::Version::All;
+ }
+
// Archive Size
Ver->Size = Section.FindULL("Size");
// Unpacked Size (in K)
}
}
- if (Ver->MultiArch == pkgCache::Version::Allowed)
+ if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed)
{
string const Package = string(Ver.ParentPkg().Name()).append(":").append("any");
NewProvides(Ver, Package, "any", Ver.VerStr());
}
- if (Ver->MultiArch != pkgCache::Version::Foreign)
+ if (Ver->MultiArch != pkgCache::Version::Foreign && Ver->MultiArch != pkgCache::Version::AllForeign)
return true;
if (MultiArchEnabled == false)
if it is built for another architecture as the requester.
Same indicates that builds for different architectures can
be co-installed on the system */
- // FIXME: remove All on abi break
- enum {None, All, Foreign, Same, Allowed} MultiArch;
+ /* FIXME: A bitflag would be better with the next abibreak… */
+ enum {None, All, Foreign, Same, Allowed, AllForeign, AllAllowed} MultiArch;
/** \brief references all the PackageFile's that this version came from
- MultiArch: same → Co-Installable if they have the same version
- Architecture: all → Need to be Co-Installable for internal reasons
- All others conflict with all other group members */
- bool const coInstall = (V->MultiArch == pkgCache::Version::Same);
+ bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same);
for (vector<string>::const_iterator A = archs.begin(); A != archs.end(); ++A)
{
if (*A == Arch)
* apt-pkg/pkgcachegen.cc:
- make "all"->"native" an implementation detail of NewPackage
rather than rewrite it in higher methods
+ * apt-pkg/cacheiterator.h:
+ - return "all" instead of native architecture without breaking the abi
+ (too much) by extending enum instead of using bitflags (LP: #733741)
- -- David Kalnischkies <kalnischkies@gmail.com> Fri, 25 Mar 2011 20:15:18 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com> Fri, 25 Mar 2011 22:07:59 +0100
apt (0.8.13) unstable; urgency=low
The following NEW packages will be installed:
coolstuff
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-Inst coolstuff (1.0 unstable [i386])
-Conf coolstuff (1.0 unstable [i386])' aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s
+Inst coolstuff (1.0 unstable [all])
+Conf coolstuff (1.0 unstable [all])' aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s
echo "$pkgbasefile
Pre-Depends: $1
" >> rootdir/var/lib/dpkg/status
- testequalor2 "Inst coolstuff (1-1 localhost [i386])
-Conf coolstuff (1-1 localhost [i386])
+ testequalor2 "Inst coolstuff (1-1 localhost [all])
+Conf coolstuff (1-1 localhost [all])
Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386])
Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386])
-Remv mawk [1.3.3-15]" "Inst coolstuff (1-1 localhost [i386])
+Remv mawk [1.3.3-15]" "Inst coolstuff (1-1 localhost [all])
Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386])
-Conf coolstuff (1-1 localhost [i386])
+Conf coolstuff (1-1 localhost [all])
Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386])
Remv mawk [1.3.3-15]" aptget install gawk2 mawk- -sqq -o PreDepends=$(echo "$1" | sed 's/ //g')
}
The following NEW packages will be installed:
apt
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-Inst apt (0.8.8 localhost [i386])
-Conf apt (0.8.8 localhost [i386])' aptget install apt -s
+Inst apt (0.8.8 localhost [all])
+Conf apt (0.8.8 localhost [all])' aptget install apt -s
testequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
apt+
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-Inst apt+ (0.8.8 localhost [i386])
-Conf apt+ (0.8.8 localhost [i386])' aptget install apt+ -s
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget install apt+ -s
testequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
apt+
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-Inst apt+ (0.8.8 localhost [i386])
-Conf apt+ (0.8.8 localhost [i386])' aptget install apt++ -s
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget install apt++ -s
testequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
apt+
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-Inst apt+ (0.8.8 localhost [i386])
-Conf apt+ (0.8.8 localhost [i386])' aptget purge apt++ -s
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget purge apt++ -s
The following packages will be upgraded:
libc6
1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-Inst libc6 [1.0] (2.0 testing [i386])
+Inst libc6 [1.0] (2.0 testing [all])
Inst foobar (1.0 stable [i386])
-Conf libc6 (2.0 testing [i386])
+Conf libc6 (2.0 testing [all])
Conf foobar (1.0 stable [i386])' aptget install foobar/stable libc6 -st testing
testequal 'Reading package lists...
The following packages will be upgraded:
libc6
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
-Inst libc6 [1.0] (2.0 testing [i386])
-Conf libc6 (2.0 testing [i386])' aptget upgrade -t testing -s
+Inst libc6 [1.0] (2.0 testing [all])
+Conf libc6 (2.0 testing [all])' aptget upgrade -t testing -s
aptget upgrade -y -qq 2>&1 > /dev/null
testdpkginstalled libc6
The following packages will be upgraded:
libc6-same
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
-Inst libc6-same [1.0] (2.0 testing [i386])
-Conf libc6-same (2.0 testing [i386])' aptget upgrade -t testing -s
+Inst libc6-same [1.0] (2.0 testing [all])
+Conf libc6-same (2.0 testing [all])' aptget upgrade -t testing -s
aptget upgrade -y -qq 2>&1 > /dev/null
testdpkginstalled libc6-same
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok'
The following extra packages will be installed:
amarok-common (2.3.2-2+exp)
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-null'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null'
The following extra packages will be installed:
amarok-common (2.3.2-2+exp)
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null'
The following extra packages will be installed:
Selected version '2.3.2-2+exp' (experimental2 [i386]) for 'amarok-less'
Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-less'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-higher'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-higher'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-higher'
Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-higher'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-higher'
The following extra packages will be installed:
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null2'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-null2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null2'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null2'
The following extra packages will be installed:
amarok-common (2.3.2-2+exp)
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine'
Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-xine'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine'
The following extra packages will be installed:
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine2'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine2'
Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine2'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine2'
The following extra packages will be installed:
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine3'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine3'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine3'
Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine3' because of 'amarok-xine3'
-Selected version '2.0' (experimental [i386]) for 'intermediatepkg' because of 'phonon-backend-xine3'
+Selected version '2.0' (experimental [all]) for 'intermediatepkg' because of 'phonon-backend-xine3'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine3'
The following extra packages will be installed:
amarok-common (2.3.2-2+exp)
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine4'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-xine4'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine4'
Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine4'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine4'
The following extra packages will be installed:
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-broken'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-broken'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-broken'
Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-broken'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-broken'
The following extra packages will be installed:
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends'
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-recommends'
The following extra packages will be installed:
amarok-common (2.3.2-2+exp)
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends'
The following extra packages will be installed:
amarok-common (2.3.2-2+exp)
Recommended packages:
testequal "Reading package lists...
Building dependency tree...
Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends2'
-Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-common' because of 'amarok-recommends2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends2'
The following extra packages will be installed:
amarok-common (2.3.2-2+exp)
libc6 (2.11.2-7+sid)
# if one depends doesn't work, we don't need to look deeper…
testequal "Reading package lists...
Building dependency tree...
-Selected version '1.0' (experimental [i386]) for 'uninstallablepkg'
+Selected version '1.0' (experimental [all]) for 'uninstallablepkg'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created