summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2011-07-25 12:52:50 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2011-07-25 12:52:50 +0200
commit550f6493654e921a8af860694efdb268c9b2a47c (patch)
treecc865225b0de3868943b68e93f09856bbe9283e2
parentbd9d81e3d793b9fb5c94fd5ad0b00245205b8cbc (diff)
* apt-pkg/deb/deblistparser.cc:
- Strip only :any and :native if MultiArch should be stripped as it is save to ignore them in non-MultiArch contexts but if the dependency is a specific architecture (and not the native) do not strip
-rw-r--r--apt-pkg/deb/deblistparser.cc9
-rw-r--r--debian/changelog6
2 files changed, 11 insertions, 4 deletions
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc
index 9ae1065a4..651fa2a81 100644
--- a/apt-pkg/deb/deblistparser.cc
+++ b/apt-pkg/deb/deblistparser.cc
@@ -461,7 +461,7 @@ const char *debListParser::ConvertRelation(const char *I,unsigned int &Op)
*
* The complete architecture, consisting of <kernel>-<cpu>.
*/
-static string CompleteArch(std::string& arch) {
+static string CompleteArch(std::string const &arch) {
if (arch == "armel") return "linux-arm";
if (arch == "armhf") return "linux-arm";
if (arch == "lpia") return "linux-i386";
@@ -500,9 +500,13 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop,
Package.assign(Start,I - Start);
// We don't want to confuse library users which can't handle MultiArch
+ string const arch = _config->Find("APT::Architecture");
if (StripMultiArch == true) {
size_t const found = Package.rfind(':');
- if (found != string::npos)
+ if (found != string::npos &&
+ (strcmp(Package.c_str() + found, ":any") == 0 ||
+ strcmp(Package.c_str() + found, ":native") == 0 ||
+ strcmp(Package.c_str() + found + 1, arch.c_str()) == 0))
Package = Package.substr(0,found);
}
@@ -543,7 +547,6 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop,
if (ParseArchFlags == true)
{
- string arch = _config->Find("APT::Architecture");
string completeArch = CompleteArch(arch);
// Parse an architecture
diff --git a/debian/changelog b/debian/changelog
index 76d5a2183..fe4b233a4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -34,8 +34,12 @@ apt (0.8.15.3) UNRELEASED; urgency=low
* apt-pkg/aptconfiguration.cc:
- ensure that native architecture is if not specified otherwise the
first architecture in the Architectures vector
+ * apt-pkg/deb/deblistparser.cc:
+ - Strip only :any and :native if MultiArch should be stripped as it is
+ save to ignore them in non-MultiArch contexts but if the dependency
+ is a specific architecture (and not the native) do not strip
- -- David Kalnischkies <kalnischkies@gmail.com> Mon, 25 Jul 2011 12:36:07 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com> Mon, 25 Jul 2011 12:46:19 +0200
apt (0.8.15.2) unstable; urgency=high