Browse Source

* apt-pkg/algorithms.cc:
- change the debug outputs to display also arch of the
package and version dependencies information

David Kalnischkies 16 years ago
parent
commit
47f6d1b72b
4 changed files with 70 additions and 38 deletions
  1. 37 37
      apt-pkg/algorithms.cc
  2. 3 0
      apt-pkg/cacheiterators.h
  3. 24 0
      apt-pkg/pkgcache.cc
  4. 6 1
      debian/changelog

+ 37 - 37
apt-pkg/algorithms.cc

@@ -58,7 +58,7 @@ void pkgSimulate::Describe(PkgIterator Pkg,ostream &out,bool Current,bool Candid
 {
 {
    VerIterator Ver(Sim);
    VerIterator Ver(Sim);
  
  
-   out << Pkg.Name();
+   out << Pkg.FullName(true);
 
 
    if (Current == true)
    if (Current == true)
    {
    {
@@ -123,9 +123,9 @@ bool pkgSimulate::Install(PkgIterator iPkg,string /*File*/)
          {
          {
 	    if ((Sim[End] & pkgDepCache::DepGInstall) == 0)
 	    if ((Sim[End] & pkgDepCache::DepGInstall) == 0)
 	    {
 	    {
-	       cout << " [" << I.Name() << " on " << Start.TargetPkg().Name() << ']';
+	       cout << " [" << I.FullName(false) << " on " << Start.TargetPkg().FullName(false) << ']';
 	       if (Start->Type == pkgCache::Dep::Conflicts)
 	       if (Start->Type == pkgCache::Dep::Conflicts)
-		  _error->Error("Fatal, conflicts violated %s",I.Name());
+		  _error->Error("Fatal, conflicts violated %s",I.FullName(false).c_str());
 	    }	    
 	    }	    
 	 }
 	 }
       }      
       }      
@@ -165,7 +165,7 @@ bool pkgSimulate::Configure(PkgIterator iPkg)
 //   Sim.MarkInstall(Pkg,false);
 //   Sim.MarkInstall(Pkg,false);
    if (Sim[Pkg].InstBroken() == true)
    if (Sim[Pkg].InstBroken() == true)
    {
    {
-      cout << "Conf " << Pkg.Name() << " broken" << endl;
+      cout << "Conf " << Pkg.FullName(false) << " broken" << endl;
 
 
       Sim.Update();
       Sim.Update();
       
       
@@ -177,17 +177,17 @@ bool pkgSimulate::Configure(PkgIterator iPkg)
 	    continue;
 	    continue;
 	 
 	 
 	 if (D->Type == pkgCache::Dep::Obsoletes)
 	 if (D->Type == pkgCache::Dep::Obsoletes)
-	    cout << " Obsoletes:" << D.TargetPkg().Name();
+	    cout << " Obsoletes:" << D.TargetPkg().FullName(false);
 	 else if (D->Type == pkgCache::Dep::Conflicts)
 	 else if (D->Type == pkgCache::Dep::Conflicts)
-	    cout << " Conflicts:" << D.TargetPkg().Name();
+	    cout << " Conflicts:" << D.TargetPkg().FullName(false);
 	 else if (D->Type == pkgCache::Dep::DpkgBreaks)
 	 else if (D->Type == pkgCache::Dep::DpkgBreaks)
-	    cout << " Breaks:" << D.TargetPkg().Name();
+	    cout << " Breaks:" << D.TargetPkg().FullName(false);
 	 else
 	 else
-	    cout << " Depends:" << D.TargetPkg().Name();
+	    cout << " Depends:" << D.TargetPkg().FullName(false);
       }	    
       }	    
       cout << endl;
       cout << endl;
 
 
-      _error->Error("Conf Broken %s",Pkg.Name());
+      _error->Error("Conf Broken %s",Pkg.FullName(false));
    }   
    }   
    else
    else
    {
    {
@@ -254,7 +254,7 @@ void pkgSimulate::ShortBreaks()
       if (Sim[I].InstBroken() == true)
       if (Sim[I].InstBroken() == true)
       {
       {
 	 if (Flags[I->ID] == 0)
 	 if (Flags[I->ID] == 0)
-	    cout << I.Name() << ' ';
+	    cout << I.FullName(false) << ' ';
 /*	 else
 /*	 else
 	    cout << I.Name() << "! ";*/
 	    cout << I.Name() << "! ";*/
       }      
       }      
@@ -290,7 +290,7 @@ bool pkgApplyStatus(pkgDepCache &Cache)
 	       Cache.MarkInstall(I, false, 0, false);
 	       Cache.MarkInstall(I, false, 0, false);
 	    else
 	    else
 	       return _error->Error(_("The package %s needs to be reinstalled, "
 	       return _error->Error(_("The package %s needs to be reinstalled, "
-				    "but I can't find an archive for it."),I.Name());
+				    "but I can't find an archive for it."),I.FullName(true));
 	 }
 	 }
 	 
 	 
 	 continue;
 	 continue;
@@ -325,7 +325,7 @@ bool pkgApplyStatus(pkgDepCache &Cache)
 	 default:
 	 default:
 	 if (I->InstState != pkgCache::State::Ok)
 	 if (I->InstState != pkgCache::State::Ok)
 	    return _error->Error("The package %s is not ok and I "
 	    return _error->Error("The package %s is not ok and I "
-				 "don't know how to fix it!",I.Name());
+				 "don't know how to fix it!",I.FullName(false));
       }
       }
    }
    }
    return true;
    return true;
@@ -709,7 +709,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
 	 if ((Flags[P->ID] & Protected) == Protected)
 	 if ((Flags[P->ID] & Protected) == Protected)
 	 {
 	 {
 	    if (Debug == true)
 	    if (Debug == true)
-	       clog << "    Reinst Failed because of protected " << P.Name() << endl;
+	       clog << "    Reinst Failed because of protected " << P.FullName(false) << endl;
 	    Fail = true;
 	    Fail = true;
 	 }      
 	 }      
 	 else
 	 else
@@ -720,7 +720,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
 	       if (DoUpgrade(P) == false)
 	       if (DoUpgrade(P) == false)
 	       {
 	       {
 		  if (Debug == true)
 		  if (Debug == true)
-		     clog << "    Reinst Failed because of " << P.Name() << endl;
+		     clog << "    Reinst Failed because of " << P.FullName(false) << endl;
 		  Fail = true;
 		  Fail = true;
 	       }
 	       }
 	       else
 	       else
@@ -739,7 +739,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
 		   break;
 		   break;
 	       
 	       
 	       if (Debug == true)
 	       if (Debug == true)
-		  clog << "    Reinst Failed early because of " << Start.TargetPkg().Name() << endl;
+		  clog << "    Reinst Failed early because of " << Start.TargetPkg().FullName(false) << endl;
 	       Fail = true;
 	       Fail = true;
 	    }     
 	    }     
 	 }
 	 }
@@ -763,7 +763,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
    }	 
    }	 
    
    
    if (Debug == true)
    if (Debug == true)
-      clog << "  Re-Instated " << Pkg.Name() << endl;
+      clog << "  Re-Instated " << Pkg.FullName(false) << endl;
    return true;
    return true;
 }
 }
 									/*}}}*/
 									/*}}}*/
@@ -863,7 +863,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 	     (Flags[I->ID] & ReInstateTried) == 0)
 	     (Flags[I->ID] & ReInstateTried) == 0)
 	 {
 	 {
 	    if (Debug == true)
 	    if (Debug == true)
-	       clog << " Try to Re-Instate " << I.Name() << endl;
+	       clog << " Try to Re-Instate " << I.FullName(false) << endl;
 	    unsigned long OldBreaks = Cache.BrokenCount();
 	    unsigned long OldBreaks = Cache.BrokenCount();
 	    pkgCache::Version *OldVer = Cache[I].InstallVer;
 	    pkgCache::Version *OldVer = Cache[I].InstallVer;
 	    Flags[I->ID] &= ReInstateTried;
 	    Flags[I->ID] &= ReInstateTried;
@@ -879,14 +879,14 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 	    }	    
 	    }	    
 	    else
 	    else
 	       if (Debug == true)
 	       if (Debug == true)
-		  clog << "Re-Instated " << I.Name() << " (" << OldBreaks << " vs " << Cache.BrokenCount() << ')' << endl;
+		  clog << "Re-Instated " << I.FullName(false) << " (" << OldBreaks << " vs " << Cache.BrokenCount() << ')' << endl;
 	 }
 	 }
 	    
 	    
 	 if (Cache[I].InstallVer == 0 || Cache[I].InstBroken() == false)
 	 if (Cache[I].InstallVer == 0 || Cache[I].InstBroken() == false)
 	    continue;
 	    continue;
 	 
 	 
 	 if (Debug == true)
 	 if (Debug == true)
-	    clog << "Investigating " << I.Name() << endl;
+	    clog << "Investigating " << I << endl;
 	 
 	 
 	 // Isolate the problem dependency
 	 // Isolate the problem dependency
 	 PackageKill KillList[100];
 	 PackageKill KillList[100];
@@ -911,7 +911,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 		     if ((Flags[I->ID] & Protected) != Protected)
 		     if ((Flags[I->ID] & Protected) != Protected)
 		     {
 		     {
 			if (Debug == true)
 			if (Debug == true)
-			   clog << "  Or group remove for " << I.Name() << endl;
+			   clog << "  Or group remove for " << I.FullName(false) << endl;
 			Cache.MarkDelete(I);
 			Cache.MarkDelete(I);
 			Change = true;
 			Change = true;
 		     }		     
 		     }		     
@@ -919,7 +919,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 		  if (OldEnd == LEnd && OrOp == OrKeep)
 		  if (OldEnd == LEnd && OrOp == OrKeep)
 		  {
 		  {
 		     if (Debug == true)
 		     if (Debug == true)
-			clog << "  Or group keep for " << I.Name() << endl;
+			clog << "  Or group keep for " << I.FullName(false) << endl;
 		     Cache.MarkKeep(I, false, false);
 		     Cache.MarkKeep(I, false, false);
 		     Change = true;
 		     Change = true;
 		  }
 		  }
@@ -956,7 +956,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 	    }
 	    }
 	    
 	    
 	    if (Debug == true)
 	    if (Debug == true)
-	       clog << "Package " << I.Name() << " has broken " << Start.DepType() << " on " << Start.TargetPkg().Name() << endl;
+	       clog << "Broken " << Start << endl;
 
 
 	    /* Look across the version list. If there are no possible
 	    /* Look across the version list. If there are no possible
 	       targets then we keep the package and bail. This is necessary
 	       targets then we keep the package and bail. This is necessary
@@ -987,8 +987,8 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 	       pkgCache::PkgIterator Pkg = Ver.ParentPkg();
 	       pkgCache::PkgIterator Pkg = Ver.ParentPkg();
 
 
 	       if (Debug == true)
 	       if (Debug == true)
-		  clog << "  Considering " << Pkg.Name() << ' ' << (int)Scores[Pkg->ID] <<
-		  " as a solution to " << I.Name() << ' ' << (int)Scores[I->ID] << endl;
+		  clog << "  Considering " << Pkg.FullName(false) << ' ' << (int)Scores[Pkg->ID] <<
+		  " as a solution to " << I.FullName(false) << ' ' << (int)Scores[I->ID] << endl;
 
 
 	       /* Try to fix the package under consideration rather than
 	       /* Try to fix the package under consideration rather than
 	          fiddle with the VList package */
 	          fiddle with the VList package */
@@ -1026,7 +1026,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 			Cache.MarkInstall(I, false, 0, false);
 			Cache.MarkInstall(I, false, 0, false);
 		     
 		     
 		     if (Debug == true)
 		     if (Debug == true)
-			clog << "  Holding Back " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl;
+			clog << "  Holding Back " << I.FullName(false) << " rather than change " << Start.TargetPkg().FullName(false) << endl;
 		  }		  
 		  }		  
 		  else
 		  else
 		  {		     
 		  {		     
@@ -1036,7 +1036,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 			if (InOr == false)
 			if (InOr == false)
 			{
 			{
 			   if (Debug == true)
 			   if (Debug == true)
-			      clog << "  Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl;
+			      clog << "  Removing " << I.FullName(false) << " rather than change " << Start.TargetPkg().FullName(false) << endl;
 			   Cache.MarkDelete(I);
 			   Cache.MarkDelete(I);
 			   if (Counter > 1 && Scores[Pkg->ID] > Scores[I->ID])
 			   if (Counter > 1 && Scores[Pkg->ID] > Scores[I->ID])
 			      Scores[I->ID] = Scores[Pkg->ID];
 			      Scores[I->ID] = Scores[Pkg->ID];
@@ -1068,7 +1068,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 		     if (Cache[End] & pkgDepCache::DepGCVer) 
 		     if (Cache[End] & pkgDepCache::DepGCVer) 
 		     {
 		     {
 			if (Debug)
 			if (Debug)
-			   clog << "  Upgrading " << Pkg.Name() << " due to Breaks field in " << I.Name() << endl;
+			   clog << "  Upgrading " << Pkg.FullName(false) << " due to Breaks field in " << I.FullName(false) << endl;
 			Cache.MarkInstall(Pkg, false, 0, false);
 			Cache.MarkInstall(Pkg, false, 0, false);
 			continue;
 			continue;
 		     }
 		     }
@@ -1079,7 +1079,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 		     continue;
 		     continue;
 		
 		
 		  if (Debug == true)
 		  if (Debug == true)
-		     clog << "  Added " << Pkg.Name() << " to the remove list" << endl;
+		     clog << "  Added " << Pkg.FullName(false) << " to the remove list" << endl;
 		  
 		  
 		  LEnd->Pkg = Pkg;
 		  LEnd->Pkg = Pkg;
 		  LEnd->Dep = End;
 		  LEnd->Dep = End;
@@ -1111,12 +1111,12 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 		     Cache.MarkInstall(I, false, 0, false);
 		     Cache.MarkInstall(I, false, 0, false);
 		  
 		  
 		  if (Debug == true)
 		  if (Debug == true)
-		     clog << "  Holding Back " << I.Name() << " because I can't find " << Start.TargetPkg().Name() << endl;
+		     clog << "  Holding Back " << I.FullName(false) << " because I can't find " << Start.TargetPkg().FullName(false) << endl;
 	       }	       
 	       }	       
 	       else
 	       else
 	       {
 	       {
 		  if (Debug == true)
 		  if (Debug == true)
-		     clog << "  Removing " << I.Name() << " because I can't find " << Start.TargetPkg().Name() << endl;
+		     clog << "  Removing " << I.FullName(false) << " because I can't find " << Start.TargetPkg().FullName(false) << endl;
 		  if (InOr == false)
 		  if (InOr == false)
 		     Cache.MarkDelete(I);
 		     Cache.MarkDelete(I);
 	       }
 	       }
@@ -1146,14 +1146,14 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
 		      J->Dep->Type == pkgCache::Dep::Obsoletes)
 		      J->Dep->Type == pkgCache::Dep::Obsoletes)
 		  {
 		  {
 		     if (Debug == true)
 		     if (Debug == true)
-			clog << "  Fixing " << I.Name() << " via remove of " << J->Pkg.Name() << endl;
+			clog << "  Fixing " << I.FullName(false) << " via remove of " << J->Pkg.FullName(false) << endl;
 		     Cache.MarkDelete(J->Pkg);
 		     Cache.MarkDelete(J->Pkg);
 		  }
 		  }
 	       }
 	       }
 	       else
 	       else
 	       {
 	       {
 		  if (Debug == true)
 		  if (Debug == true)
-		     clog << "  Fixing " << I.Name() << " via keep of " << J->Pkg.Name() << endl;
+		     clog << "  Fixing " << I.FullName(false) << " via keep of " << J->Pkg.FullName(false) << endl;
 		  Cache.MarkKeep(J->Pkg, false, false);
 		  Cache.MarkKeep(J->Pkg, false, false);
 	       }
 	       }
 
 
@@ -1189,7 +1189,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
    for (;I.end() != true; I++) {
    for (;I.end() != true; I++) {
       if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) {
       if (Cache[I].NewInstall() && !(Flags[I->ID] & PreInstalled)) {
 	 if(_config->FindI("Debug::pkgAutoRemove",false)) {
 	 if(_config->FindI("Debug::pkgAutoRemove",false)) {
-	    std::clog << "Resolve installed new pkg: " << I.Name() 
+	    std::clog << "Resolve installed new pkg: " << I.FullName(false) 
 		      << " (now marking it as auto)" << std::endl;
 		      << " (now marking it as auto)" << std::endl;
 	 }
 	 }
 	 Cache[I].Flags |= pkgCache::Flag::Auto;
 	 Cache[I].Flags |= pkgCache::Flag::Auto;
@@ -1252,7 +1252,7 @@ bool pkgProblemResolver::ResolveByKeep()
       if ((Flags[I->ID] & Protected) == 0)
       if ((Flags[I->ID] & Protected) == 0)
       {
       {
 	 if (Debug == true)
 	 if (Debug == true)
-	    clog << "Keeping package " << I.Name() << endl;
+	    clog << "Keeping package " << I.FullName(false) << endl;
 	 Cache.MarkKeep(I, false, false);
 	 Cache.MarkKeep(I, false, false);
 	 if (Cache[I].InstBroken() == false)
 	 if (Cache[I].InstBroken() == false)
 	 {
 	 {
@@ -1283,7 +1283,7 @@ bool pkgProblemResolver::ResolveByKeep()
 	 while (true)
 	 while (true)
 	 {
 	 {
 	    if (Debug == true)
 	    if (Debug == true)
-	       clog << "Package " << I.Name() << " has broken " << Start.DepType() << " on " << Start.TargetPkg().Name() << endl;
+	       clog << "Package " << I.FullName(false) << " " << Start << endl;
 
 
 	    // Look at all the possible provides on this package
 	    // Look at all the possible provides on this package
 	    SPtrArray<pkgCache::Version *> VList = Start.AllTargets();
 	    SPtrArray<pkgCache::Version *> VList = Start.AllTargets();
@@ -1300,7 +1300,7 @@ bool pkgProblemResolver::ResolveByKeep()
 	       if ((Flags[I->ID] & Protected) == 0)
 	       if ((Flags[I->ID] & Protected) == 0)
 	       {
 	       {
 		  if (Debug == true)
 		  if (Debug == true)
-		     clog << "  Keeping Package " << Pkg.Name() << " due to " << Start.DepType() << endl;
+		     clog << "  Keeping Package " << Pkg.FullName(false) << " due to " << Start.DepType() << endl;
 		  Cache.MarkKeep(Pkg, false, false);
 		  Cache.MarkKeep(Pkg, false, false);
 	       }
 	       }
 	       
 	       
@@ -1325,7 +1325,7 @@ bool pkgProblemResolver::ResolveByKeep()
       
       
       // Restart again.
       // Restart again.
       if (K == LastStop)
       if (K == LastStop)
-	 return _error->Error("Internal Error, pkgProblemResolver::ResolveByKeep is looping on package %s.",I.Name());
+	 return _error->Error("Internal Error, pkgProblemResolver::ResolveByKeep is looping on package %s.",I.FullName(false));
       LastStop = K;
       LastStop = K;
       K = PList - 1;
       K = PList - 1;
    }   
    }   

+ 3 - 0
apt-pkg/cacheiterators.h

@@ -293,6 +293,9 @@ class pkgCache::DepIterator : public Iterator<Dependency, DepIterator> {
 	inline const char *CompType() const {return Owner->CompType(S->CompareOp);};
 	inline const char *CompType() const {return Owner->CompType(S->CompareOp);};
 	inline const char *DepType() const {return Owner->DepType(S->Type);};
 	inline const char *DepType() const {return Owner->DepType(S->Type);};
 
 
+	//Nice printable representation
+	friend std::ostream& operator <<(std::ostream& out, DepIterator D);
+
 	inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) :
 	inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) :
 		Iterator<Dependency, DepIterator>(Owner, Trg), Type(DepVer) {
 		Iterator<Dependency, DepIterator>(Owner, Trg), Type(DepVer) {
 		if (S == 0)
 		if (S == 0)

+ 24 - 0
apt-pkg/pkgcache.cc

@@ -661,6 +661,30 @@ void pkgCache::DepIterator::GlobOr(DepIterator &Start,DepIterator &End)
    }
    }
 }
 }
 									/*}}}*/
 									/*}}}*/
+// ostream operator to handle string representation of a dependecy	/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+std::ostream& operator<<(ostream& out, pkgCache::DepIterator D)
+{
+   if (D.end() == true)
+      return out << "invalid dependency";
+
+   pkgCache::PkgIterator P = D.ParentPkg();
+   pkgCache::PkgIterator T = D.TargetPkg();
+
+   out << (P.end() ? "invalid pkg" : P.FullName(false)) << " " << D.DepType()
+	<< " on ";
+   if (T.end() == true)
+      out << "invalid pkg";
+   else
+      out << T;
+
+   if (D->Version != 0)
+      out << " (" << D.CompType() << " " << D.TargetVer() << ")";
+
+   return out;
+}
+									/*}}}*/
 // VerIterator::CompareVer - Fast version compare for same pkgs		/*{{{*/
 // VerIterator::CompareVer - Fast version compare for same pkgs		/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* This just looks over the version list to see if B is listed before A. In
 /* This just looks over the version list to see if B is listed before A. In

+ 6 - 1
debian/changelog

@@ -7,7 +7,12 @@ apt (0.8.0~pre1) UNRELASED; urgency=low
   [ Programs translations ]
   [ Programs translations ]
   * Swedish translation update. Closes: #592366
   * Swedish translation update. Closes: #592366
 
 
- -- Michael Vogt <mvo@debian.org>  Fri, 30 Jul 2010 12:42:57 +0200
+  [ David Kalnischkies ]
+  * apt-pkg/algorithms.cc:
+    - change the debug outputs to display also arch of the
+      package and version dependencies information
+
+ -- David Kalnischkies <kalnischkies@gmail.com>  Tue, 10 Aug 2010 15:56:11 +0200
 
 
 apt (0.7.26~exp12) experimental; urgency=low
 apt (0.7.26~exp12) experimental; urgency=low