summaryrefslogtreecommitdiff
path: root/dselect
diff options
context:
space:
mode:
authorIan Jackson <ian@chiark.chu.cam.ac.uk>1996-07-01 02:51:11 +0100
committerIan Jackson <ian@chiark.chu.cam.ac.uk>1996-07-01 02:51:11 +0100
commit3a5b7e80afb07ffaebf804e72f4e232f935f60e1 (patch)
treea89b2cda50e4e248e29efd7be5eab315539f5057 /dselect
parentb16210d877e072cf87cff3f8a84f677e8e1e59a8 (diff)
downloaddpkg-3a5b7e80afb07ffaebf804e72f4e232f935f60e1.tar.gz
dpkg (1.2.11); priority=MEDIUM
* dselect had dependency bug if installed package newer than avail. * Added `replaces' to dselect's list of package relationship strings. -- Ian Jackson <ian@chiark.chu.cam.ac.uk> Mon, 1 Jul 1996 02:51:11 +0100
Diffstat (limited to 'dselect')
-rw-r--r--dselect/pkgdepcon.cc14
-rw-r--r--dselect/pkgdisplay.cc6
2 files changed, 11 insertions, 9 deletions
diff --git a/dselect/pkgdepcon.cc b/dselect/pkgdepcon.cc
index bfe48c985..a6abb3094 100644
--- a/dselect/pkgdepcon.cc
+++ b/dselect/pkgdepcon.cc
@@ -39,7 +39,7 @@ int packagelist::useavailable(pkginfo *pkg) {
pkg->clientdata->selected == pkginfo::want_install &&
informative(pkg,&pkg->available) &&
(pkg->status != pkginfo::stat_installed ||
- versioncompare(&pkg->available.version,&pkg->installed.version) > 1))
+ versioncompare(&pkg->available.version,&pkg->installed.version) > 0))
return 1;
else
return 0;
@@ -48,6 +48,8 @@ int packagelist::useavailable(pkginfo *pkg) {
pkginfoperfile *packagelist::findinfo(pkginfo *pkg) {
pkginfoperfile *r;
r= useavailable(pkg) ? &pkg->available : &pkg->installed;
+ if (debug)
+ fprintf(debug,"packagelist[%p]::findinfo(%s) useavailable=%d\n",this,pkg->name,useavailable(pkg));
if (!r->valid) blankpackageperfile(r);
return r;
}
@@ -350,17 +352,17 @@ int packagelist::deppossatisfied(deppossi *possi, perpackagestate **fixbyupgrade
// the right version, and therefore OK, or a version must have
// been specified, in which case we don't need to look at the rest
// anyway.
- if (want == pkginfo::want_hold) {
+ if (useavailable(possi->ed)) {
+ assert(want == pkginfo::want_install);
+ return versionsatisfied(&possi->ed->available,possi);
+ } else {
if (versionsatisfied(&possi->ed->installed,possi)) return 1;
- if (fixbyupgrade && !*fixbyupgrade &&
+ if (want == pkginfo::want_hold && fixbyupgrade && !*fixbyupgrade &&
versionsatisfied(&possi->ed->available,possi) &&
versioncompare(&possi->ed->available.version,
&possi->ed->installed.version) > 1)
*fixbyupgrade= possi->ed->clientdata;
return 0;
- } else {
- assert(want == pkginfo::want_install);
- return versionsatisfied(&possi->ed->available,possi);
}
}
if (possi->verrel != deppossi::dvr_none) return 0;
diff --git a/dselect/pkgdisplay.cc b/dselect/pkgdisplay.cc
index 89d0ee533..92c31a868 100644
--- a/dselect/pkgdisplay.cc
+++ b/dselect/pkgdisplay.cc
@@ -39,12 +39,12 @@ const char
*const eflagstrings[]= { "", "REINSTALL", 0 },
*const statusstrings[]= { "not installed", "unpacked (not set up)",
"failed config", "installed", "half installed",
- "removed (configs remain)", 0 },
+ "removed (configs remain)", 0 },
*const prioritystrings[]= { "Required", "Important", "Standard", "Recommended",
"Optional", "Extra", "Contrib",
- "!Bug!", "Unclassified", 0 },
+ "!Bug!", "Unclassified", 0 },
*const relatestrings[]= { "suggests", "recommends", "depends on", "pre-depends on",
- "conflicts with", "provides", 0 },
+ "conflicts with", "provides", "replaces", 0 },
*const priorityabbrevs[]= { "Req", "Imp", "Std", "Rec",
"Opt", "Xtr", "Ctb",
"bUG", "?" };