diff options
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 834cb0e25..23d3ff977 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -1248,6 +1248,11 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) if (RunScriptsWithPkgs("DPkg::Pre-Install-Pkgs") == false) return false; + auto const noopDPkgInvocation = _config->FindB("Debug::pkgDPkgPM",false); + // store auto-bits as they are supposed to be after dpkg is run + if (noopDPkgInvocation == false) + Cache.writeStateFile(NULL); + // 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); @@ -1434,7 +1439,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) J = I; - if (_config->FindB("Debug::pkgDPkgPM",false) == true) + if (noopDPkgInvocation == true) { for (std::vector<const char *>::const_iterator a = Args.begin(); a != Args.end(); ++a) @@ -1613,7 +1618,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) if (pkgPackageManager::SigINTStop) _error->Warning(_("Operation was interrupted before it could finish")); - if (_config->FindB("Debug::pkgDPkgPM",false) == false) + if (noopDPkgInvocation == false) { std::string const oldpkgcache = _config->FindFile("Dir::cache::pkgcache"); if (oldpkgcache.empty() == false && RealFileExists(oldpkgcache) == true && @@ -1630,7 +1635,9 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) } } - Cache.writeStateFile(NULL); + // disappearing packages can forward their auto-bit + if (disappearedPkgs.empty() == false) + Cache.writeStateFile(NULL); d->progress->Stop(); |