diff options
author | David Kalnischkies <david@kalnischkies.de> | 2016-11-23 22:17:01 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2016-11-24 00:21:35 +0100 |
commit | bb9c5972524ac5c078fa0f0bc5674c7a0fe01fb4 (patch) | |
tree | 86fe89b3e1f4b59fff135d502aa8a2676ca08751 | |
parent | 53f3fc59f4eb37eea57bbde53fb75f2e15af0378 (diff) | |
download | apt-bb9c5972524ac5c078fa0f0bc5674c7a0fe01fb4.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
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 3 |
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)); } |