Просмотр исходного кода

Improve the debugging of the auto-remove code.

Daniel Burrows лет назад: 18
Родитель
Сommit
83860e3728
2 измененных файлов с 45 добавлено и 2 удалено
  1. 43 2
      apt-pkg/depcache.cc
  2. 2 0
      debian/changelog

+ 43 - 2
apt-pkg/depcache.cc

@@ -1305,7 +1305,7 @@ bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc)
       {
 	 // the package is installed (and set to keep)
 	 if(PkgState[p->ID].Keep() && !p.CurrentVer().end())
-	    MarkPackage(p, p.CurrentVer(),
+ 	    MarkPackage(p, p.CurrentVer(),
 			follow_recommends, follow_suggests);
 	 // the package is to be installed 
 	 else if(PkgState[p->ID].Install())
@@ -1356,7 +1356,18 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
    if(state.Marked)
       return;
 
-   //std::cout << "Setting Marked for: " << pkg.Name() << std::endl;
+   if(_config->FindB("Debug::pkgAutoRemove",false))
+     {
+       std::clog << "Marking: " << pkg.Name();
+       if(!ver.end())
+	 std::clog << " " << ver.VerStr();
+       if(!currver.end())
+	 std::clog << ", Curr=" << currver.VerStr();
+       if(!instver.end())
+	 std::clog << ", Inst=" << instver.VerStr();
+       std::clog << std::endl;
+     }
+
    state.Marked=true;
 
    if(!ver.end())
@@ -1376,6 +1387,19 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
 	   {
 	      if(_system->VS->CheckDep(V.VerStr(), d->CompareOp, d.TargetVer()))
 	      {
+		if(_config->FindB("Debug::pkgAutoRemove",false))
+		  {
+		    std::clog << "Following dep: " << d.ParentPkg().Name()
+			      << " " << d.ParentVer().VerStr() << " "
+			      << d.DepType() << " "
+			      << d.TargetPkg().Name();
+		    if((d->CompareOp & ~pkgCache::Dep::Or) != pkgCache::Dep::NoOp)
+		      {
+			std::clog << " (" << d.CompType() << " "
+				  << d.TargetVer() << ")";
+		      }
+		    std::clog << std::endl;
+		  }
 		 MarkPackage(V.ParentPkg(), V, 
 			     follow_recommends, follow_suggests);
 	      }
@@ -1387,6 +1411,23 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
 	      if(_system->VS->CheckDep(prv.ProvideVersion(), d->CompareOp, 
 				       d.TargetVer()))
 	      {
+		if(_config->FindB("Debug::pkgAutoRemove",false))
+		  {
+		    std::clog << "Following dep: " << d.ParentPkg().Name()
+			      << " " << d.ParentVer().VerStr() << " "
+			      << d.DepType() << " "
+			      << d.TargetPkg().Name();
+		    if((d->CompareOp & ~pkgCache::Dep::Or) != pkgCache::Dep::NoOp)
+		      {
+			std::clog << " (" << d.CompType() << " "
+				  << d.TargetVer() << ")";
+		      }
+		    std::clog << ", provided by "
+			      << prv.OwnerPkg().Name() << " "
+			      << prv.OwnerVer().VerStr()
+			      << std::endl;
+		  }
+
 		 MarkPackage(prv.OwnerPkg(), prv.OwnerVer(),
 			     follow_recommends, follow_suggests);
 	      }

+ 2 - 0
debian/changelog

@@ -52,6 +52,8 @@ apt (0.7.12) unstable; urgency=low
     - Patch MarkInstall to follow currently satisfied Recommends even
       if they aren't "new", so that we automatically force upgrades
       when the version of a Recommends has been tightened.  (Closes: #470115)
+    - Enable more complete debugging information when Debug::pkgAutoRemove
+      is set.
   * apt-pkg/contrib/configuration.cc
     - Lift the 1024-byte limit on lines in configuration files.
       (Closes: #473710, #473874)