1
0
mirror of https://github.com/moparisthebest/pacman synced 2025-02-28 09:21:53 -05:00

PM_DEP_MOD_LT and PM_DEP_MOD_GT depmods added

You can use foo<2.0 and foo>2.0 as depend
add046.py and add047.py pactests were added to check this

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Nagy Gabor 2007-12-18 14:24:44 +01:00 committed by Dan McGee
parent 47f4c5a480
commit 13dd2864ca
4 changed files with 49 additions and 2 deletions

View File

@ -369,7 +369,9 @@ typedef enum _pmdepmod_t {
PM_DEP_MOD_ANY = 1, PM_DEP_MOD_ANY = 1,
PM_DEP_MOD_EQ, PM_DEP_MOD_EQ,
PM_DEP_MOD_GE, PM_DEP_MOD_GE,
PM_DEP_MOD_LE PM_DEP_MOD_LE,
PM_DEP_MOD_GT,
PM_DEP_MOD_LT
} pmdepmod_t; } pmdepmod_t;
pmdepend_t *alpm_splitdep(const char *depstring); pmdepend_t *alpm_splitdep(const char *depstring);

View File

@ -310,6 +310,8 @@ static int dep_vercmp(const char *version1, pmdepmod_t mod,
case PM_DEP_MOD_EQ: equal = (cmp == 0); break; case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
case PM_DEP_MOD_GE: 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_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; default: equal = 1; break;
} }
} }
@ -374,10 +376,19 @@ pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
depend->mod = PM_DEP_MOD_LE; depend->mod = PM_DEP_MOD_LE;
*ptr = '\0'; *ptr = '\0';
ptr += 2; ptr += 2;
} else if((ptr = strstr(newstr, "="))) { } else if((ptr = strstr(newstr, "="))) { /* Note: we must do =,<,> checks after <=, >= checks */
depend->mod = PM_DEP_MOD_EQ; depend->mod = PM_DEP_MOD_EQ;
*ptr = '\0'; *ptr = '\0';
ptr += 1; ptr += 1;
} else if((ptr = strstr(newstr, "<"))) {
depend->mod = PM_DEP_MOD_LT;
*ptr = '\0';
ptr += 1;
} else if((ptr = strstr(newstr, ">"))) {
depend->mod = PM_DEP_MOD_GT;
*ptr = '\0';
ptr += 1;
} else { } else {
/* no version specified - copy in the name and return it */ /* no version specified - copy in the name and return it */
depend->mod = PM_DEP_MOD_ANY; depend->mod = PM_DEP_MOD_ANY;
@ -684,6 +695,12 @@ char SYMEXPORT *alpm_dep_get_string(const pmdepend_t *dep)
case PM_DEP_MOD_EQ: case PM_DEP_MOD_EQ:
opr = "="; opr = "=";
break; break;
case PM_DEP_MOD_LT:
opr = "<";
break;
case PM_DEP_MOD_GT:
opr = ">";
break;
default: default:
opr = ""; opr = "";
break; break;

14
pactest/tests/add046.py Normal file
View File

@ -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")

14
pactest/tests/add047.py Normal file
View File

@ -0,0 +1,14 @@
self.description = "pkg2<2.0 dependency (not satisfy)"
p = pmpkg("pkg1")
p.depends = ["pkg2<2.0"]
self.addpkg(p)
lp = pmpkg("pkg2", "2.0-3")
self.addpkg2db("local", lp)
self.args = "-A %s" % p.filename()
self.addrule("PACMAN_RETCODE=1")
self.addrule("!PKG_EXIST=pkg1")
self.addrule("PKG_EXIST=pkg2")