Git-Url:
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8b7a8ad1c76a860a4dac3aee1009f5742b5d585c
commit 8b7a8ad1c76a860a4dac3aee1009f5742b5d585c
Author: Miklos Vajna <[EMAIL PROTECTED]>
Date: Thu Dec 27 00:56:01 2007 +0100
support for ">" and "<"-style deps
- so after "=", "<=" and ">=", now ">" and ">" is supported, too
- backort of 13dd286 from pacman-g1
diff --git a/doc/FrugalBuild.txt b/doc/FrugalBuild.txt
index ff7c8f9..8ee5bcd 100644
--- a/doc/FrugalBuild.txt
+++ b/doc/FrugalBuild.txt
@@ -266,9 +266,10 @@ depends (array)::
An array of packages that this package depends on to build and run. Packages in
this list should be surrounded with single quotes and contain at least the
package name. They can also include a version requirement of the form
- name<>version, where <> is one of these three comparisons: >= (greater
than
- equal to), <= (less than or equal to), or = (equal to). See the
FrugalBuild
- example above for an example of the depends directive.
+ 'name<>version', where <> is one of five comparisons: >= (greater than
or equal
+ to), <= (less than or equal to), = (equal to), > (greater than), or <
(less
+ than). See the FrugalBuild example above for an example of the depends
+ directive.
makedepends (array)::
An array of packages that this package depends on to build (ie, not required to
diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c
index 641e1a9..ecadfc3 100644
--- a/lib/libpacman/deps.c
+++ b/lib/libpacman/deps.c
@@ -299,6 +299,8 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, pmdb_t *db,
unsigned char op, pmli
case PM_DEP_MOD_EQ: found = (cmp == 0); break;
case PM_DEP_MOD_GE: found = (cmp >= 0); break;
case PM_DEP_MOD_LE: found = (cmp <= 0); break;
+ case
PM_DEP_MOD_LT: found = (cmp < 0); break;
+ case
PM_DEP_MOD_GT: found = (cmp > 0); break;
}
FREE(ver);
}
@@ -344,6 +346,8 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, pmdb_t *db,
unsigned char op, pmli
case PM_DEP_MOD_EQ: found = (cmp == 0); break;
case PM_DEP_MOD_GE: found = (cmp >= 0); break;
case PM_DEP_MOD_LE: found = (cmp <= 0); break;
+ case
PM_DEP_MOD_LT: found = (cmp < 0); break;
+ case
PM_DEP_MOD_GT: found = (cmp > 0); break;
}
FREE(ver);
}
@@ -373,6 +377,8 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, pmdb_t *db,
unsigned char op, pmli
case PM_DEP_MOD_EQ: found = (cmp == 0); break;
case PM_DEP_MOD_GE: found = (cmp >= 0); break;
case PM_DEP_MOD_LE: found = (cmp <= 0); break;
+ case
PM_DEP_MOD_LT: found = (cmp < 0); break;
+ case
PM_DEP_MOD_GT: found = (cmp > 0); break;
}
FREE(ver);
}
@@ -453,6 +459,10 @@ int _pacman_splitdep(char *depstr, pmdepend_t *depend)
depend->mod = PM_DEP_MOD_LE;
} else if((ptr = strstr(str, "="))) {
depend->mod = PM_DEP_MOD_EQ;
+ } else if((ptr = strstr(str, "<"))) {
+ depend->mod = PM_DEP_MOD_LT;
+ } else if((ptr = strstr(str, ">"))) {
+ depend->mod = PM_DEP_MOD_GT;
} else {
/* no version specified - accept any */
depend->mod = PM_DEP_MOD_ANY;
@@ -466,7 +476,7 @@ int _pacman_splitdep(char *depstr, pmdepend_t *depend)
*ptr = '\0';
STRNCPY(depend->name, str, PKG_NAME_LEN);
ptr++;
- if(depend->mod != PM_DEP_MOD_EQ) {
+ if(depend->mod == PM_DEP_MOD_GE || depend->mod == PM_DEP_MOD_LE) {
ptr++;
}
STRNCPY(depend->version, ptr, PKG_VERSION_LEN);
@@ -691,6 +701,8 @@ int _pacman_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
case PM_DEP_MOD_LE: equal = (cmp <= 0); break;
+ case PM_DEP_MOD_LT: equal = (cmp < 0); break;
+ case PM_DEP_MOD_GT: equal = (cmp > 0); break;
default: equal = 1; break;
}
}
@@ -700,6 +712,8 @@ int _pacman_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
case PM_DEP_MOD_EQ: mod = "=="; break;
case PM_DEP_MOD_GE: mod = ">="; break;
case PM_DEP_MOD_LE: mod = "<="; break;
+ case PM_DEP_MOD_LT: mod = "<"; break;
+ case PM_DEP_MOD_GT: mod = ">"; break;
default: break;
}
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index cfb196f..5ca76d3 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -363,7 +363,9 @@ enum {
PM_DEP_MOD_ANY = 1,
PM_DEP_MOD_EQ,
PM_DEP_MOD_GE,
- PM_DEP_MOD_LE
+ PM_DEP_MOD_LE,
+ PM_DEP_MOD_GT,
+ PM_DEP_MOD_LT
};
enum {
PM_DEP_TYPE_DEPEND = 1,
diff --git a/pactest/tests/add046.py b/pactest/tests/add046.py
new file mode 100644
index 0000000..5f967cb
--- /dev/null
+++ b/pactest/tests/add046.py
@@ -0,0 +1,14 @@
+self.description = "pkg2<2.0 dependency (satisfy)"
+
+p = pmpkg("pkg1")
+p.depends = ["pkg2<2.0"]
+self.addpkg(p)
+
+lp = pmpkg("pkg2", "1.9b-3")
+self.addpkg2db("local", lp)
+
+self.args = "-A %s" % p.filename()
+
+self.addrule("PACMAN_RETCODE=0")
+self.addrule("PKG_EXIST=pkg1")
+self.addrule("PKG_EXIST=pkg2")
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git