X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/0a57c0f0e4d0bc3474ce4d2101f36a997891d30d..f8ac1720a94468d1384e88a57729e6d9801b56fd:/apt-pkg/depcache.cc?ds=sidebyside diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 52b43d83d..9adc4e390 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -78,7 +78,6 @@ bool pkgDepCache::Init(OpProgress *Prog) // Find the proper cache slot StateCache &State = PkgState[I->ID]; State.iFlags = 0; - State.InstallReason = Manual; // Figure out the install version State.CandidateVer = GetCandidateVer(I); @@ -113,8 +112,9 @@ bool pkgDepCache::readStateFile(OpProgress *Prog) if(FileExists(state)) { state_file.Open(state, FileFd::ReadOnly); int file_size = state_file.Size(); - Prog->OverallProgress(0, file_size, 1, - _("Reading state information")); + if(Prog != NULL) + Prog->OverallProgress(0, file_size, 1, + _("Reading state information")); pkgTagFile tagfile(&state_file); pkgTagSection section; @@ -125,17 +125,19 @@ bool pkgDepCache::readStateFile(OpProgress *Prog) // Silently ignore unknown packages and packages with no actual // version. if(!pkg.end() && !pkg.VersionList().end()) { - short reason = section.FindI("Install-Reason",pkgDepCache::Manual); - PkgState[pkg->ID].InstallReason = (ChangedReason)reason; + short reason = section.FindI("Auto-Installed", 0); + if(reason > 0) + PkgState[pkg->ID].Flags |= Flag::Auto; if(_config->FindB("Debug::pkgAutoRemove",false)) - std::cout << "Install-Reason for: " << pkgname - << " is " << reason << std::endl; + std::cout << "Auto-Installed : " << pkgname << std::endl; amt+=section.size(); - Prog->OverallProgress(amt, file_size, 1, - _("Reading state information")); + if(Prog != NULL) + Prog->OverallProgress(amt, file_size, 1, + _("Reading state information")); } - Prog->OverallProgress(file_size, file_size, 1, - _("Reading state information")); + if(Prog != NULL) + Prog->OverallProgress(file_size, file_size, 1, + _("Reading state information")); } } @@ -147,6 +149,9 @@ bool pkgDepCache::writeStateFile(OpProgress *prog) FileFd StateFile; string state = _config->FindDir("Dir::State") + "pkgstates"; + if(_config->FindB("Debug::pkgAutoRemove",false)) + std::clog << "pkgDepCache::writeStateFile()" << std::endl; + if(!StateFile.Open(state, FileFd::WriteEmpty)) return _error->Error(_("Failed to write StateFile %s"), state.c_str()); @@ -154,22 +159,12 @@ 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].InstallReason = Manual; - - // check if we have new information - if(PkgState[pkg->ID].Flags & pkgCache::Flag::Auto) { - if(_config->FindI("Debug::pkgAutoRemove",false)) - std::clog << "pkg: " << pkg.Name() << " is auto-dep" << std::endl; - PkgState[pkg->ID].InstallReason = Libapt; - } - - if(PkgState[pkg->ID].InstallReason != Manual) { + if(PkgState[pkg->ID].Flags & Flag::Auto) { + if(_config->FindB("Debug::pkgAutoRemove",false)) + std::clog << "AutoInstal: " << pkg.Name() << std::endl; ostr.str(string("")); ostr << "Package: " << pkg.Name() - << "\nInstall-Reason: " - << (int)(PkgState[pkg->ID].InstallReason) << "\n\n"; + << "\nAuto-Installed: 1\n\n"; StateFile.Write(ostr.str().c_str(), ostr.str().size()); } }