]> git.saurik.com Git - apt.git/commitdiff
improve error message for apt-get source pkg:arch{=ver,/release}
authorMichael Vogt <mvo@debian.org>
Wed, 11 Dec 2013 08:21:26 +0000 (09:21 +0100)
committerMichael Vogt <mvo@debian.org>
Wed, 11 Dec 2013 08:21:26 +0000 (09:21 +0100)
cmdline/apt-get.cc
test/integration/test-apt-get-source-arch

index 9cc5b40316a9aea420ee6fb36226e05ac880dd45..c2b59a83cfa1ec6713a0465e861707cd81be3a28 100644 (file)
@@ -269,15 +269,15 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
                  break;
            }
 
+            // ignore arches that are not for us
+            if (ArchTag != "" && Ver.Arch() != ArchTag)
+               continue;
+
             // pick highest version for the arch unless the user wants
             // something else
             if (ArchTag != "" && VerTag == "" && RelTag == "")
-            {
-               if(Ver.Arch() != ArchTag)
-                  continue;
                if(Cache->VS().CmpVersion(VerTag, Ver.VerStr()) < 0)
                   VerTag = Ver.VerStr();
-            }
 
            // We match against a concrete version (or a part of this version)
            if (VerTag.empty() == false &&
@@ -320,6 +320,16 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
         }
       }
 
+      if (Src == "" && ArchTag != "")
+      {
+          _error->Error(_("Can not find a package '%s' with version '%s' and "
+                          "release '%s'"), Pkg.FullName().c_str(), 
+                                           VerTag.c_str(), RelTag.c_str());
+         Src = Name;
+         return 0;
+      }
+
+
       if (Src.empty() == true)
       {
         // if we don't have found a fitting package yet so we will
index 3ac6907a968143df9dadf3ae3ef6825950a38fe8..97d0e096a2d651908cbfc9ef344f3f5dbcb63845 100755 (executable)
@@ -58,3 +58,13 @@ Need to get 0 B of source archives.
 testequal "$HEADER
 E: Can not find a package for architecture 'not-a-available-arch'
 E: Unable to find a source package for foo:not-a-available-arch" aptget source -q --print-uris foo:not-a-available-arch
+
+# error on unavailable version for arch
+testequal "$HEADER
+E: Can not find a package 'foo:amd64' with version '2.0' and release ''
+E: Unable to find a source package for foo:amd64=2.0" aptget source -q --print-uris foo:amd64=2.0
+
+# error on unavailable release for arch 
+testequal "$HEADER
+E: Can not find a package 'foo:amd64' with version '' and release 'oldstable'
+E: Unable to find a source package for foo:amd64/oldstable" aptget source -q --print-uris foo:amd64/oldstable