Преглед изворни кода

* apt-pkg/deb/dpkgpm.cc:
- redirect out/input of dpkg --assert-multi-arch to /dev/null

David Kalnischkies пре 14 година
родитељ
комит
67b5d3dc34
3 измењених фајлова са 23 додато и 2 уклоњено
  1. 5 0
      apt-pkg/deb/dpkgpm.cc
  2. 8 0
      debian/changelog
  3. 10 2
      test/integration/test-dpkg-assert-multi-arch

+ 5 - 0
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);

+ 8 - 0
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 ]

+ 10 - 2
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