if multi-arch is detected ensure that pkg:all is reported as pkg:all
authorDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 19 Jan 2012 12:12:14 +0000 (13:12 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 19 Jan 2012 12:12:14 +0000 (13:12 +0100)
Versions with arch:all are added to the package with the native arch,
so we can't rely on Pkg.Arch() for the architecture

apt-pkg/deb/dpkgpm.cc
debian/changelog
test/integration/test-dpkg-assert-multi-arch

index 0dc00e8..6feada4 100644 (file)
@@ -1090,7 +1090,10 @@ bool pkgDPkgPM::Go(int OutStatusFd)
            }
            else
            {
-              char * const fullname = strdup(I->Pkg.FullName(false).c_str());
+              std::string name = I->Pkg.Name();
+              pkgCache::VerIterator PkgVer = Cache[I->Pkg].InstVerIter(Cache);
+              name.append(":").append(PkgVer.Arch());
+              char * const fullname = strdup(name.c_str());
               Packages.push_back(fullname);
               ADDARG(fullname);
            }
index 6ed7cb7..10356cd 100644 (file)
@@ -3,8 +3,9 @@ apt (0.8.16~exp11) experimental; urgency=low
   [ David Kalnischkies ]
   * apt-pkg/deb/dpkgpm.cc:
     - redirect out/input of dpkg --assert-multi-arch to /dev/null
+    - if multi-arch is detected ensure that pkg:all is reported as pkg:all
 
- -- David Kalnischkies <kalnischkies@gmail.com>  Thu, 19 Jan 2012 12:39:31 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com>  Thu, 19 Jan 2012 13:00:13 +0100
 
 apt (0.8.16~exp10) experimental; urgency=low
 
index 8be7e0d..532cfd2 100755 (executable)
@@ -9,6 +9,8 @@ configarchitecture 'amd64' 'i386'
 buildsimplenativepackage 'native-pkg' 'amd64' '1.0' 'stable'
 buildsimplenativepackage 'foreign-pkg' 'i386' '0.5' 'stable' 'Multi-Arch: foreign'
 buildsimplenativepackage 'same-lib' 'amd64,i386' '0.5' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'all-pkg' 'all' '2.0' 'stable'
+buildsimplenativepackage 'all-foreign-pkg' 'all' '2.0' 'stable'
 
 setupaptarchive
 
@@ -42,9 +44,21 @@ testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386'
 testqualifier 'same-lib' 'same-lib'
 testqualifier 'same-lib:amd64' 'same-lib'
 testqualifier 'same-lib:i386' 'same-lib:i386'
+testqualifier 'all-pkg' 'all-pkg'
+testqualifier 'all-pkg:amd64' 'all-pkg'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg'
+insertinstalledpackage 'all-pkg' 'amd64' '1.0'
+insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0'
+testqualifier 'all-pkg' 'all-pkg'
+testqualifier 'all-pkg:amd64' 'all-pkg'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg'
 
 # multiarch dpkg (new interface version)
 
+rm rootdir/var/lib/dpkg/status
+touch rootdir/var/lib/dpkg/status
 echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper
 echo '#! /bin/sh
 if echo "$*" | grep -q -- "--assert-multi-arch"; then
@@ -59,3 +73,13 @@ testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386'
 testqualifier 'same-lib' 'same-lib:amd64'
 testqualifier 'same-lib:amd64' 'same-lib:amd64'
 testqualifier 'same-lib:i386' 'same-lib:i386'
+testqualifier 'all-pkg' 'all-pkg:all'
+testqualifier 'all-pkg:amd64' 'all-pkg:all'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all'
+insertinstalledpackage 'all-pkg' 'amd64' '1.0'
+insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0'
+testqualifier 'all-pkg' 'all-pkg:all'
+testqualifier 'all-pkg:amd64' 'all-pkg:all'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all'