Explorar o código

* cmdline/apt-get.cc:
- fix apt-get source pkg=version regression (closes: #561971)

Michael Vogt %!s(int64=16) %!d(string=hai) anos
pai
achega
bf07dd586e
Modificáronse 2 ficheiros con 19 adicións e 7 borrados
  1. 17 7
      cmdline/apt-get.cc
  2. 2 0
      debian/changelog

+ 17 - 7
cmdline/apt-get.cc

@@ -1299,31 +1299,41 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
 	       {
 		  pkgRecords::Parser &Parse = Recs.Lookup(VF);
 		  Src = Parse.SourcePkg();
+		  // no SourcePkg name, so it is the "binary" name
+		  if (Src.empty() == true)
+		     Src = TmpSrc;
+		  // no Version, so we try the Version of the SourcePkg -
+		  // and after that the version of the binary package
 		  if (VerTag.empty() == true)
 		     VerTag = Parse.SourceVer();
+		  if (VerTag.empty() == true)
+		     VerTag = Ver.VerStr();
 		  break;
 	       }
 	    }
+	    if (Src.empty() == false)
+	       break;
 	 }
 	 if (Src.empty() == true) 
 	 {
-	    if (VerTag.empty() == false)
-	       _error->Warning(_("Ignore unavailable version '%s' of package '%s'"), VerTag.c_str(), TmpSrc.c_str());
-	    else
+	    // Sources files have no codename information
+	    if (VerTag.empty() == true && DefRel.empty() == false)
 	       _error->Warning(_("Ignore unavailable target release '%s' of package '%s'"), DefRel.c_str(), TmpSrc.c_str());
-	    VerTag.clear();
 	    DefRel.clear();
 	 }
       }
-      if (VerTag.empty() == true && DefRel.empty() == true) 
+      if (Src.empty() == true)
       {
-	 // if we don't have a version or default release, use the CandidateVer to find the Source
+	 // if we don't have found a fitting package yet so we will
+	 // choose a good candidate and proceed with that.
+	 // Maybe we will find a source later on with the right VerTag
 	 pkgCache::VerIterator Ver = Cache.GetCandidateVer(Pkg);
 	 if (Ver.end() == false) 
 	 {
 	    pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList());
 	    Src = Parse.SourcePkg();
-	    VerTag = Parse.SourceVer();
+	    if (VerTag.empty() == true)
+	       VerTag = Parse.SourceVer();
 	 }
       }
    }

+ 2 - 0
debian/changelog

@@ -3,6 +3,8 @@ apt (0.7.25.1) UNRELEASED; urgency=low
   * merged lp:~mvo/apt/history
     - this writes a /var/log/apt/history tagfile that contains details
       from the transaction (complements term.log)
+  * cmdline/apt-get.cc:
+    - fix apt-get source pkg=version regression (closes: #561971)
 
  -- Michael Vogt <michael.vogt@ubuntu.com>  Fri, 18 Dec 2009 16:54:18 +0100