]> git.saurik.com Git - apt.git/commitdiff
eipp: properly handle arch-specific provides
authorDavid Kalnischkies <david@kalnischkies.de>
Fri, 3 Jun 2016 12:40:06 +0000 (14:40 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 27 Jun 2016 09:57:12 +0000 (11:57 +0200)
The generation of the EIPP request was a bit to strict not generation
what would actually be needed to be part of the scenario.

apt-pkg/edsp.cc
test/integration/test-specific-architecture-dependencies

index f2d728933db3aee3cb54f688ef12b08dc2f14c1c..21f7f360722e94b8c09f7e626055d6609dbd63f3 100644 (file)
@@ -1218,6 +1218,35 @@ bool EIPP::WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress * const
               pkgset[PV->ID] = true;
         }
         pkgset[P->ID] = true;
+        if (strcmp(P.Arch(), "any") == 0)
+        {
+           APT::StringView const pkgname(P.Name());
+           auto const idxColon = pkgname.find(':');
+           if (idxColon != APT::StringView::npos)
+           {
+              pkgCache::PkgIterator PA;
+              if (pkgname.substr(idxColon + 1) == "any")
+              {
+                 auto const GA = Cache.FindGrp(pkgname.substr(0, idxColon).to_string());
+                 for (auto PA = GA.PackageList(); PA.end() == false; PA = GA.NextPkg(PA))
+                 {
+                    pkgset[PA->ID] = true;
+                 }
+              }
+              else
+              {
+                 auto const PA = Cache.FindPkg(pkgname.to_string());
+                 if (PA.end() == false)
+                    pkgset[PA->ID] = true;
+              }
+           }
+        }
+        else
+        {
+           auto const PA = Cache.FindPkg(P.FullName(false), "any");
+           if (PA.end() == false)
+              pkgset[PA->ID] = true;
+        }
       }
    };
    for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
index 9595556199aec0525d12734fdd30f6faee4c6412..447e407e55748769f0abd0bfc6c76835bdef4862 100755 (executable)
@@ -69,7 +69,7 @@ Inst depender-x32:i386 (1 unstable [i386])
 Conf libc6:i386 (1 unstable [i386])
 Conf depender-x32:i386 (1 unstable [i386])' aptget install depender-x32:i386 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following additional packages will be installed:
   libc6:i386
@@ -81,7 +81,7 @@ Inst depender-x32 (1 unstable [amd64])
 Conf libc6:i386 (1 unstable [i386])
 Conf depender-x32 (1 unstable [amd64])' aptget install depender-x32:amd64 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following additional packages will be installed:
   libc6
@@ -93,7 +93,7 @@ Inst depender-x64 (1 unstable [amd64])
 Conf libc6 (1 unstable [amd64])
 Conf depender-x64 (1 unstable [amd64])' aptget install depender-x64:amd64 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following additional packages will be installed:
   libc6
@@ -105,7 +105,7 @@ Inst depender-x64:i386 (1 unstable [i386])
 Conf libc6 (1 unstable [amd64])
 Conf depender-x64:i386 (1 unstable [i386])' aptget install depender-x64:i386 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following packages will be REMOVED:
   libold:i386 libold
@@ -128,7 +128,7 @@ Remv libold:i386 [1]
 Inst breaker-x32 (1 unstable [amd64])
 Conf breaker-x32 (1 unstable [amd64])' aptget install breaker-x32:amd64 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following packages will be REMOVED:
   libold:i386
@@ -139,7 +139,7 @@ Remv libold:i386 [1]
 Inst breaker-x32:i386 (1 unstable [i386])
 Conf breaker-x32:i386 (1 unstable [i386])' aptget install breaker-x32:i386 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following packages will be REMOVED:
   libold
@@ -213,7 +213,7 @@ The following NEW packages will be installed:
 Inst foo-native-depender (1 unstable [amd64])
 Conf foo-native-depender (1 unstable [amd64])' aptget install foo-native-depender -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
   foo-foreign-depender:i386
@@ -265,7 +265,7 @@ Conf foo-no-conflictor:i386 (1 unstable [i386])' aptget install foo-no-conflicto
 msgmsg 'switch to single architecture'
 configarchitecture 'amd64'
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following additional packages will be installed:
   libc6
@@ -277,11 +277,11 @@ Inst depender-x64 (1 unstable [amd64])
 Conf libc6 (1 unstable [amd64])
 Conf depender-x64 (1 unstable [amd64])' aptget install depender-x64 -s
 
-testequal 'Reading package lists...
+testfailureequal 'Reading package lists...
 Building dependency tree...
 E: Unable to locate package depender-x64:i386' aptget install depender-x64:i386 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
   foo-native-depender
@@ -289,7 +289,7 @@ The following NEW packages will be installed:
 Inst foo-native-depender (1 unstable [amd64])
 Conf foo-native-depender (1 unstable [amd64])' aptget install foo-native-depender -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following packages will be REMOVED:
   libold:i386
@@ -300,7 +300,7 @@ Remv libold:i386 [1]
 Inst breaker-x32 (1 unstable [amd64])
 Conf breaker-x32 (1 unstable [amd64])' aptget install breaker-x32:amd64 -s
 
-testequal 'Reading package lists...
+testsuccessequal 'Reading package lists...
 Building dependency tree...
 The following packages will be REMOVED:
   libold
@@ -311,7 +311,7 @@ Remv libold [1]
 Inst breaker-x64 (1 unstable [amd64])
 Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s
 
-testequal 'Reading package lists...
+testfailureequal 'Reading package lists...
 Building dependency tree...
 Some packages could not be installed. This may mean that you have
 requested an impossible situation or if you are using the unstable