diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2012-01-29 13:10:38 +0100 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2012-01-29 13:10:38 +0100 |
commit | 734a6727696b42d5351f41b5b33ec767ccbd5db6 (patch) | |
tree | c288bec755928979f0c6a1581e95f54e9ae26f38 | |
parent | e6ee75afbd4277df7bb2f5dc9ea03c18aecd3986 (diff) |
ensure that dpkg binary doesn't have the chroot-directory prefixed
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 12 | ||||
-rw-r--r-- | debian/changelog | 3 |
2 files changed, 13 insertions, 2 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 4c473c1c2..51e896a4a 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -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(); diff --git a/debian/changelog b/debian/changelog index 4beeefea2..e8e659749 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 |