summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2016-11-23 22:17:01 +0100
committerJulian Andres Klode <jak@debian.org>2017-02-22 16:53:45 +0100
commit1037b2c18d5ec1b1f4e7f329d995799727ff2b70 (patch)
tree03805b67791e85b51a3f13750aa1cfc867e7bf53
parent44c0cf26f9768787ae2ba3e981e862f497c3df30 (diff)
downloadapt-1037b2c18d5ec1b1f4e7f329d995799727ff2b70.tar.gz
do not configure unconfigured to be removed packages
We try to configure all packages at the end which need to be configured, but that also applies to packages which weren't completely installed (e.g. maintainerscript failed) we end up removing in this interaction instead. APT doesn't perform this explicit configure in the end as it is using "dpkg --configure --pending", but it does confuse the progress report and potentially also hook scripts. Regression-Of: 9ffbac99e52c91182ed8ff8678a994626b194e69 (cherry picked from commit bb9c5972524ac5c078fa0f0bc5674c7a0fe01fb4)
-rw-r--r--apt-pkg/deb/dpkgpm.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index d76b59449..08cfccf93 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -1424,7 +1424,8 @@ bool pkgDPkgPM::ExpandPendingCalls(std::vector<Item> &List, pkgDepCache &Cache)
if (I.Op == Item::Install && alreadyConfigured.insert(I.Pkg->ID).second == true)
AppendList.emplace_back(Item::Configure, I.Pkg);
for (auto Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg)
- if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure && alreadyConfigured.insert(Pkg->ID).second == true)
+ if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure &&
+ Cache[Pkg].Delete() == false && alreadyConfigured.insert(Pkg->ID).second == true)
AppendList.emplace_back(Item::Configure, Pkg);
std::move(AppendList.begin(), AppendList.end(), std::back_inserter(List));
}