From 13dd2864ca740ee7e6a6ce163c883dc24a294c87 Mon Sep 17 00:00:00 2001 From: Nagy Gabor Date: Tue, 18 Dec 2007 14:24:44 +0100 Subject: 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 Signed-off-by: Dan McGee --- lib/libalpm/alpm.h | 4 +++- lib/libalpm/deps.c | 19 ++++++++++++++++++- pactest/tests/add046.py | 14 ++++++++++++++ pactest/tests/add047.py | 14 ++++++++++++++ 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 pactest/tests/add046.py create mode 100644 pactest/tests/add047.py diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index f64796cb..3a484be3 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -369,7 +369,9 @@ typedef enum _pmdepmod_t { 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 } pmdepmod_t; pmdepend_t *alpm_splitdep(const char *depstring); diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 1603f99f..8d77fd46 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -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_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; } } @@ -374,10 +376,19 @@ pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring) depend->mod = PM_DEP_MOD_LE; *ptr = '\0'; 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; *ptr = '\0'; 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 { /* no version specified - copy in the name and return it */ 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: opr = "="; break; + case PM_DEP_MOD_LT: + opr = "<"; + break; + case PM_DEP_MOD_GT: + opr = ">"; + break; default: opr = ""; break; diff --git a/pactest/tests/add046.py b/pactest/tests/add046.py new file mode 100644 index 00000000..5f967cbe --- /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") diff --git a/pactest/tests/add047.py b/pactest/tests/add047.py new file mode 100644 index 00000000..153364a5 --- /dev/null +++ b/pactest/tests/add047.py @@ -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") -- cgit v1.2.3-24-g4f1b