diff options
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 15 | ||||
-rwxr-xr-x | test/integration/test-apt-progress-fd | 12 | ||||
-rwxr-xr-x | test/integration/test-apt-progress-fd-deb822 | 4 | ||||
-rwxr-xr-x | test/integration/test-dpkg-assert-multi-arch | 9 | ||||
-rwxr-xr-x | test/integration/test-no-fds-leaked-to-maintainer-scripts | 3 |
5 files changed, 25 insertions, 18 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 4a77942f1..4591049a9 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -1248,15 +1248,28 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) if (RunScriptsWithPkgs("DPkg::Pre-Install-Pkgs") == false) return false; + decltype(List)::const_iterator::difference_type const notconfidx = + _config->FindB("Dpkg::ExplicitLastConfigure", false) ? std::numeric_limits<decltype(notconfidx)>::max() : + std::distance(List.cbegin(), std::find_if_not(List.crbegin(), List.crend(), [](Item const &i) { return i.Op == Item::Configure; }).base()); + // support subpressing of triggers processing for special // cases like d-i that runs the triggers handling manually bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false); - if (_config->FindB("DPkg::ConfigurePending", true) == true) + bool const ConfigurePending = _config->FindB("DPkg::ConfigurePending", true); + if (ConfigurePending) List.push_back(Item(Item::ConfigurePending, PkgIterator())); // for the progress BuildPackagesProgressMap(); + if (notconfidx != std::numeric_limits<decltype(notconfidx)>::max()) + { + if (ConfigurePending) + List.erase(std::next(List.cbegin(), notconfidx), std::prev(List.cend())); + else + List.erase(std::next(List.cbegin(), notconfidx), List.cend()); + } + d->stdin_is_dev_null = false; // create log diff --git a/test/integration/test-apt-progress-fd b/test/integration/test-apt-progress-fd index 86eaa1354..57728ca81 100755 --- a/test/integration/test-apt-progress-fd +++ b/test/integration/test-apt-progress-fd @@ -25,8 +25,7 @@ pmstatus:testing:50.0000:Preparing to configure testing (amd64) pmstatus:dpkg-exec:50.0000:Running dpkg pmstatus:testing:50.0000:Configuring testing (amd64) pmstatus:testing:66.6667:Configuring testing (amd64) -pmstatus:testing:83.3333:Installed testing (amd64) -pmstatus:dpkg-exec:83.3333:Running dpkg' +pmstatus:testing:83.3333:Installed testing (amd64)' # upgrade exec 3> apt-progress.log @@ -41,8 +40,7 @@ pmstatus:testing:50.0000:Preparing to configure testing (amd64) pmstatus:dpkg-exec:50.0000:Running dpkg pmstatus:testing:50.0000:Configuring testing (amd64) pmstatus:testing:66.6667:Configuring testing (amd64) -pmstatus:testing:83.3333:Installed testing (amd64) -pmstatus:dpkg-exec:83.3333:Running dpkg' +pmstatus:testing:83.3333:Installed testing (amd64)' # reinstall exec 3> apt-progress.log @@ -57,8 +55,7 @@ pmstatus:testing:50.0000:Preparing to configure testing (amd64) pmstatus:dpkg-exec:50.0000:Running dpkg pmstatus:testing:50.0000:Configuring testing (amd64) pmstatus:testing:66.6667:Configuring testing (amd64) -pmstatus:testing:83.3333:Installed testing (amd64) -pmstatus:dpkg-exec:83.3333:Running dpkg' +pmstatus:testing:83.3333:Installed testing (amd64)' # and remove exec 3> apt-progress.log @@ -83,7 +80,6 @@ pmstatus:testing2:50.0000:Preparing to configure testing2 (i386) pmstatus:dpkg-exec:50.0000:Running dpkg pmstatus:testing2:50.0000:Configuring testing2 (i386) pmstatus:testing2:66.6667:Configuring testing2 (i386) -pmstatus:testing2:83.3333:Installed testing2 (i386) -pmstatus:dpkg-exec:83.3333:Running dpkg' +pmstatus:testing2:83.3333:Installed testing2 (i386)' rm -f apt-progress*.log diff --git a/test/integration/test-apt-progress-fd-deb822 b/test/integration/test-apt-progress-fd-deb822 index a8d59608d..d9a4505d1 100755 --- a/test/integration/test-apt-progress-fd-deb822 +++ b/test/integration/test-apt-progress-fd-deb822 @@ -58,10 +58,6 @@ Status: progress Package: testing:amd64 Percent: 83.3333 Message: Installed testing (amd64) - -Status: progress -Percent: 83.3333 -Message: Running dpkg ' rm -f apt-progress*.log diff --git a/test/integration/test-dpkg-assert-multi-arch b/test/integration/test-dpkg-assert-multi-arch index f73c78935..14b29ec87 100755 --- a/test/integration/test-dpkg-assert-multi-arch +++ b/test/integration/test-dpkg-assert-multi-arch @@ -16,12 +16,15 @@ setupaptarchive testqualifier() { msgtest 'Test with' $1 'for correct qualifier mode' $2 - GIVEN="$(aptget install $1 -qq -o Debug::pkgDPkgPM=1 2>&1 | grep -v -- '--unpack' | sed -e 's/^.*--[^u][^ ]* \([^ ]*\).*$/\1/')" + #aptget install $1 -qq -o Debug::pkgDPkgPM=1 || true + aptget install $1 -qq -o Debug::pkgDPkgPM=1 -o Dpkg::ExplicitLastConfigure=1 > testqualifier.output 2>&1 || true + GIVEN="$(grep -v -- '--unpack' testqualifier.output | sed -e 's/^.*--[^u][^ ]* \([^ ]*\).*$/\1/')" if [ "$GIVEN" = "$2" ]; then msgpass else - echo - echo "$GIVEN" + cat >&2 testqualifier.output + echo >&2 + echo >&2 "$GIVEN" msgfail fi } diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts index d86e638cd..56cbff095 100755 --- a/test/integration/test-no-fds-leaked-to-maintainer-scripts +++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts @@ -59,8 +59,7 @@ startup packages configure configure $PKGNAME 1.0 <none> status unpacked $PKGNAME 1.0 status half-configured $PKGNAME 1.0 -status installed $PKGNAME 1.0 -startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log +status installed $PKGNAME 1.0" cut -f 3- -d' ' rootdir/var/log/dpkg.log } checkinstall |