summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2012-01-19 12:40:38 +0100
committerDavid Kalnischkies <kalnischkies@gmail.com>2012-01-19 12:40:38 +0100
commit67b5d3dc34e88e092c8e5f05efc82370a873c80f (patch)
tree2a6611273a030a0ceabf5fd8917edee8c8a2635f
parent0d5603b886f67562c105b03820c595ac7ae3451a (diff)
* apt-pkg/deb/dpkgpm.cc:
- redirect out/input of dpkg --assert-multi-arch to /dev/null
-rw-r--r--apt-pkg/deb/dpkgpm.cc5
-rw-r--r--debian/changelog8
-rwxr-xr-xtest/integration/test-dpkg-assert-multi-arch12
3 files changed, 23 insertions, 2 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index 4dc0baa50..0dc00e8ad 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -858,6 +858,11 @@ bool pkgDPkgPM::Go(int OutStatusFd)
pid_t dpkgAssertMultiArch = ExecFork();
if (dpkgAssertMultiArch == 0)
{
+ // redirect everything to the ultimate sink as we only need the exit-status
+ int const nullfd = open("/dev/null", O_RDONLY);
+ dup2(nullfd, STDIN_FILENO);
+ dup2(nullfd, STDOUT_FILENO);
+ dup2(nullfd, STDERR_FILENO);
execv(Args[0], (char**) &Args[0]);
_error->WarningE("dpkgGo", "Can't detect if dpkg supports multi-arch!");
_exit(2);
diff --git a/debian/changelog b/debian/changelog
index ef25344ca..6ed7cb73e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+apt (0.8.16~exp11) experimental; urgency=low
+
+ [ David Kalnischkies ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - redirect out/input of dpkg --assert-multi-arch to /dev/null
+
+ -- David Kalnischkies <kalnischkies@gmail.com> Thu, 19 Jan 2012 12:39:31 +0100
+
apt (0.8.16~exp10) experimental; urgency=low
[ David Kalnischkies ]
diff --git a/test/integration/test-dpkg-assert-multi-arch b/test/integration/test-dpkg-assert-multi-arch
index b1ec73e18..8be7e0d76 100755
--- a/test/integration/test-dpkg-assert-multi-arch
+++ b/test/integration/test-dpkg-assert-multi-arch
@@ -14,14 +14,22 @@ setupaptarchive
testqualifier() {
msgtest 'Test for correct qualifier mode' $2
- GIVEN="$(aptget install $1 -qq -o Debug::pkgDPkgPM=1 2>&1 | grep -- '--configure' | sed -e 's/^.*--configure \([^ ]*\).*$/\1/')"
- test "$GIVEN" = "$2" && msgpass || msgfail
+ GIVEN="$(aptget install $1 -qq -o Debug::pkgDPkgPM=1 2>&1 | grep -e '--configure' -e '^dpkg:' | sed -e 's/^.*--configure \([^ ]*\).*$/\1/')"
+ if [ "$GIVEN" = "$2" ]; then
+ msgpass
+ else
+ echo
+ echo "$GIVEN"
+ msgfail
+ fi
}
# non-multiarch or "ubuntus" old multiarchified dpkg
echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper
echo '#! /bin/sh
if echo "$*" | grep -q -- "--assert-multi-arch"; then
+ echo >&2 'dpkg: Fehler: unbekannte Option --assert-multi-arch'
+ echo >&1 'dpkg: Info: unbekannte Option --assert-multi-arch'
return 2;
fi
return $*' > ./dpkg-wrapper