Sfoglia il codice sorgente

Improve the debugging of the auto-remove code.

Daniel Burrows 18 anni fa
parent
commit
83860e3728
2 ha cambiato i file con 45 aggiunte e 2 eliminazioni
  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)
 	 // the package is installed (and set to keep)
 	 if(PkgState[p->ID].Keep() && !p.CurrentVer().end())
 	 if(PkgState[p->ID].Keep() && !p.CurrentVer().end())
-	    MarkPackage(p, p.CurrentVer(),
+ 	    MarkPackage(p, p.CurrentVer(),
 			follow_recommends, follow_suggests);
 			follow_recommends, follow_suggests);
 	 // the package is to be installed 
 	 // the package is to be installed 
 	 else if(PkgState[p->ID].Install())
 	 else if(PkgState[p->ID].Install())
@@ -1356,7 +1356,18 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
    if(state.Marked)
    if(state.Marked)
       return;
       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;
    state.Marked=true;
 
 
    if(!ver.end())
    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(_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, 
 		 MarkPackage(V.ParentPkg(), V, 
 			     follow_recommends, follow_suggests);
 			     follow_recommends, follow_suggests);
 	      }
 	      }
@@ -1387,6 +1411,23 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
 	      if(_system->VS->CheckDep(prv.ProvideVersion(), d->CompareOp, 
 	      if(_system->VS->CheckDep(prv.ProvideVersion(), d->CompareOp, 
 				       d.TargetVer()))
 				       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(),
 		 MarkPackage(prv.OwnerPkg(), prv.OwnerVer(),
 			     follow_recommends, follow_suggests);
 			     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
     - Patch MarkInstall to follow currently satisfied Recommends even
       if they aren't "new", so that we automatically force upgrades
       if they aren't "new", so that we automatically force upgrades
       when the version of a Recommends has been tightened.  (Closes: #470115)
       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
   * apt-pkg/contrib/configuration.cc
     - Lift the 1024-byte limit on lines in configuration files.
     - Lift the 1024-byte limit on lines in configuration files.
       (Closes: #473710, #473874)
       (Closes: #473710, #473874)