diff options
-rw-r--r-- | apt-pkg/algorithms.cc | 11 | ||||
-rw-r--r-- | apt-pkg/depcache.cc | 11 | ||||
-rw-r--r-- | cmdline/apt-get.cc | 6 |
3 files changed, 24 insertions, 4 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 479927d65..2799c2fdd 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -1061,6 +1061,17 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) return _error->Error(_("Unable to correct problems, you have held broken packages.")); } + // set the auto-flags (mvo: I'm not sure if we _really_ need this, but + // I didn't managed + pkgCache::PkgIterator I = Cache.PkgBegin(); + for (;I.end() != true; I++) { + if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) { + std::cout << "Resolve installed new pkg: " << I.Name() << " (now marking it as auto)" << std::endl; + Cache[I].Flags |= pkgCache::Flag::Auto; + } + } + + return true; } /*}}}*/ diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 552a45a16..c490d89bc 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -151,6 +151,17 @@ bool pkgDepCache::writeStateFile(OpProgress *prog) std::ostringstream ostr; for(pkgCache::PkgIterator pkg=Cache->PkgBegin(); !pkg.end();pkg++) { + + // clear out no longer installed pkg + if(PkgState[pkg->ID].Delete() || pkg.CurrentVer() == NULL) + PkgState[pkg->ID].AutomaticRemove = pkgCache::State::RemoveUnknown; + + // check if we have new information + if(PkgState[pkg->ID].Flags & pkgCache::Flag::Auto) { + std::cout << "pkg: " << pkg.Name() << " is auto-dep" << std::endl; + PkgState[pkg->ID].AutomaticRemove = pkgCache::State::RemoveRequired; + } + if(PkgState[pkg->ID].AutomaticRemove != pkgCache::State::RemoveUnknown) { ostr.str(string("")); ostr << "Package: " << pkg.Name() diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 9f9ecd375..bc8cd1ae5 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1703,10 +1703,8 @@ bool DoInstall(CommandLine &CmdL) if (*J == 0) { List += string(I.Name()) + " "; - // mark each pkg as auto-installed - Cache[I].AutomaticRemove = pkgCache::State::RemoveRequired; - VersionsList += string(Cache[I].CandVersion) + "\n"; - } + VersionsList += string(Cache[I].CandVersion) + "\n"; + } } ShowList(c1out,_("The following extra packages will be installed:"),List,VersionsList); |