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
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
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
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
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
Package: testing:amd64
Percent: 83.3333
Message: Installed testing (amd64)
-
-Status: progress
-Percent: 83.3333
-Message: Running dpkg
'
rm -f apt-progress*.log
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
}
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