]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/deb/deblistparser.cc:
authorDavid Kalnischkies <kalnischkies@gmail.com>
Mon, 25 Jul 2011 10:52:50 +0000 (12:52 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Mon, 25 Jul 2011 10:52:50 +0000 (12:52 +0200)
  - 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

apt-pkg/deb/deblistparser.cc
debian/changelog

index 9ae1065a4047f72bb57b213b833a7b482b6e9b94..651fa2a8143e637c7356cd60ed132a4374d3f2d8 100644 (file)
@@ -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::stringarch) {
+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
index 76d5a218315017b00435f1680af18a5b44d56db2..fe4b233a4d6231a53ca99a61fcd10dc3c15aab0b 100644 (file)
@@ -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