Browse Source

eipp: properly handle arch-specific provides

The generation of the EIPP request was a bit to strict not generation
what would actually be needed to be part of the scenario.
tags/debian/1.3_pre1
David Kalnischkies 5 years ago
parent
commit
14bed2c010
2 changed files with 42 additions and 13 deletions
  1. +29
    -0
      apt-pkg/edsp.cc
  2. +13
    -13
      test/integration/test-specific-architecture-dependencies

+ 29
- 0
apt-pkg/edsp.cc View 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)


+ 13
- 13
test/integration/test-specific-architecture-dependencies View File

@@ -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


Loading…
Cancel
Save