]> git.saurik.com Git - apt.git/commitdiff
Check candidate version when installing build-deps. Clo...
authorArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 17:00:23 +0000 (17:00 +0000)
committerArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 17:00:23 +0000 (17:00 +0000)
Author: tausq
Date: 2003-02-02 03:30:52 GMT
Check candidate version when installing build-deps. Closes: #178121

cmdline/apt-get.cc
debian/changelog

index fdf06cbe09671c14a95e0748885b7297a7ba676d..6ed1022fac2275ddabb07ceeae6cba2f65118fae 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: apt-get.cc,v 1.124 2003/02/01 20:18:46 tausq Exp $
+// $Id: apt-get.cc,v 1.125 2003/02/02 03:30:53 tausq Exp $
 /* ######################################################################
    
    apt-get - Cover for dpkg
@@ -1945,7 +1945,7 @@ bool DoBuildDep(CommandLine &CmdL)
             {
                // Check if there are any alternatives
                if (((*D).Op & pkgCache::Dep::Or) != pkgCache::Dep::Or)
-                 return _error->Error(_("%s dependency on %s cannot be satisfied "
+                 return _error->Error(_("%s dependency for %s cannot be satisfied "
                                          "because the package %s cannot be found"),
                                         Last->BuildDepType((*D).Type),Src.c_str(),
                                          (*D).Package.c_str());
@@ -1967,9 +1967,6 @@ bool DoBuildDep(CommandLine &CmdL)
                    (((*D).Op & pkgCache::Dep::Or) == pkgCache::Dep::Or))
                D++;
                        
-            // Get installed versions
-           pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache);
-
            /* 
             * If this is a virtual package, we need to check the list of
             * packages that provide it and see if any of those are
@@ -1979,6 +1976,22 @@ bool DoBuildDep(CommandLine &CmdL)
             for (; Prv.end() != true; Prv++)
               if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false)
                  break;
+            
+            // Get installed version and version we are going to install
+           pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache);
+           pkgCache::VerIterator CV = (*Cache)[Pkg].CandidateVerIter(*Cache);
+
+            for (; CV.end() != true; CV++)
+            {
+               if (Cache->VS().CheckDep(CV.VerStr(),(*D).Op,(*D).Version.c_str()) == true)
+                  break;
+            }
+            if (CV.end() == true)
+              return _error->Error(_("%s dependency for %s cannot be satisfied "
+                                      "because no available versions of package %s "
+                                      "can satisfy version requirements"),
+                                     Last->BuildDepType((*D).Type),Src.c_str(),
+                                      (*D).Package.c_str());
 
             /*
             * TODO: if we depend on a version lower than what we already have 
index fb6cb5bacfcd73e0b590d714f69a1070de0eaffb..e4bba3f906af016753b960a74c4349358db0065b 100644 (file)
@@ -82,6 +82,8 @@ apt (0.5.5) unstable; urgency=low
   * Double default value of APT::Cache-Limit, until such time as it
     can be made more dynamic.  Closes: #178623.
   * Report uris with '.gz' when there are errors.  Closes: #178435.
+  * When installing build-deps, make sure the new version will 
+    satisfy build requirements. Closes: #178121
 
  -- Jason Gunthorpe <jgg@debian.org>  Sun, 15 Sep 2002 17:16:59 -0600