ensure that dpkg binary doesn't have the chroot-directory prefixed
authorDavid Kalnischkies <kalnischkies@gmail.com>
Sun, 29 Jan 2012 12:10:38 +0000 (13:10 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sun, 29 Jan 2012 12:10:38 +0000 (13:10 +0100)
apt-pkg/deb/dpkgpm.cc
debian/changelog

index 4c473c1..51e896a 100644 (file)
@@ -836,7 +836,17 @@ bool pkgDPkgPM::Go(int OutStatusFd)
    // Generate the base argument list for dpkg
    std::vector<const char *> Args;
    unsigned long StartSize = 0;
-   string const Tmp = _config->Find("Dir::Bin::dpkg","dpkg");
+   string Tmp = _config->Find("Dir::Bin::dpkg","dpkg");
+   {
+      string const dpkgChrootDir = _config->FindDir("DPkg::Chroot-Directory", "/");
+      size_t dpkgChrootLen = dpkgChrootDir.length();
+      if (dpkgChrootDir != "/" && Tmp.find(dpkgChrootDir) == 0)
+      {
+        if (dpkgChrootDir[dpkgChrootLen - 1] == '/')
+           --dpkgChrootLen;
+        Tmp = Tmp.substr(dpkgChrootLen);
+      }
+   }
    Args.push_back(Tmp.c_str());
    StartSize += Tmp.length();
 
index 4beeefe..e8e6597 100644 (file)
@@ -3,8 +3,9 @@ apt (0.8.16~exp12+nmu1) experimental; urgency=low
   [ David Kalnischkies ]
   * apt-pkg/deb/dpkgpm.cc:
     - chroot if needed before dpkg --assert-multi-arch
+    - ensure that dpkg binary doesn't have the chroot-directory prefixed
 
- -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 29 Jan 2012 12:58:24 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 29 Jan 2012 13:08:58 +0100
 
 apt (0.8.16~exp12) experimental; urgency=low