summaryrefslogtreecommitdiff
path: root/cmdline
diff options
context:
space:
mode:
authorArch Librarian <arch@canonical.com>2004-09-20 17:00:23 +0000
committerArch Librarian <arch@canonical.com>2004-09-20 17:00:23 +0000
commite5002e30de6295533732fd8e74aad86aa67bab9f (patch)
treefd8e58212f8fc9af482895006a855c718fac88ae /cmdline
parent40285ffdcd559895ff43488eacf4dd5e980c7227 (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
Diffstat (limited to 'cmdline')
-rw-r--r--cmdline/apt-get.cc23
1 files changed, 18 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