diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 17:00:23 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 17:00:23 +0000 |
commit | e5002e30de6295533732fd8e74aad86aa67bab9f (patch) | |
tree | fd8e58212f8fc9af482895006a855c718fac88ae | |
parent | 40285ffdcd559895ff43488eacf4dd5e980c7227 (diff) |
Check candidate version when installing build-deps. Clo...
Author: tausq
Date: 2003-02-02 03:30:52 GMT
Check candidate version when installing build-deps. Closes: #178121
-rw-r--r-- | cmdline/apt-get.cc | 23 | ||||
-rw-r--r-- | debian/changelog | 2 |
2 files changed, 20 insertions, 5 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index fdf06cbe0..6ed1022fa 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -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 diff --git a/debian/changelog b/debian/changelog index fb6cb5bac..e4bba3f90 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 |