[pacman-dev] CVS update of pacman-lib (10 files)
Date: Tuesday, February 27, 2007 @ 23:00:22 Author: dan Path: /home/cvs-pacman/pacman-lib Added: pactest/tests/upgrade057.py (1.1) Modified: doc/Makefile.am (1.16 -> 1.17) lib/libalpm/deps.c (1.70 -> 1.71) pactest/README (1.1 -> 1.2) pactest/pmrule.py (1.3 -> 1.4) pactest/tests/upgrade052.py (1.3 -> 1.4) pactest/tests/upgrade053.py (1.1 -> 1.2) pactest/tests/upgrade054.py (1.1 -> 1.2) pactest/tests/upgrade055.py (1.1 -> 1.2) pactest/tests/upgrade056.py (1.1 -> 1.2) * Added another test as suggested by Nagy on the ML- a package both provides for and is a dependency of another package. (upgrade057) * Removed man2html stuff from doc/Makefile.am. * Patch: improved depends checking in _alpm_checkdeps Nagy Gabor <ngaba@petra.hos.u-szeged.hu> * Slight revisions to pmrule.py to allow for a PKG_PROVIDES test. * Very quick updates to the pactest README. * Added rules to some of the newer upgrade tests. Note: upgrade055 now fails due to requiredby entries not being written packages that are dependencies in a provides role. -----------------------------+ doc/Makefile.am | 20 ----------------- lib/libalpm/deps.c | 49 ++++++++++++++++-------------------------- pactest/README | 22 +++++++++++++----- pactest/pmrule.py | 3 ++ pactest/tests/upgrade052.py | 1 pactest/tests/upgrade053.py | 1 pactest/tests/upgrade054.py | 1 pactest/tests/upgrade055.py | 2 + pactest/tests/upgrade056.py | 2 + pactest/tests/upgrade057.py | 23 +++++++++++++++++++ 10 files changed, 68 insertions(+), 56 deletions(-) Index: pacman-lib/doc/Makefile.am diff -u pacman-lib/doc/Makefile.am:1.16 pacman-lib/doc/Makefile.am:1.17 --- pacman-lib/doc/Makefile.am:1.16 Thu Feb 22 22:23:07 2007 +++ pacman-lib/doc/Makefile.am Tue Feb 27 23:00:21 2007 @@ -12,26 +12,6 @@ EXTRA_DIST = $(man_MANS) -MAN2HTML=man2html -r -SUFFIXES=.3 .5 .8 .3.html .5.html .8.html - -# targets for each man section, sed removes a weird artifact left by man2html -.3.3.html: - $(RM) $@ - -${MAN2HTML} $< | sed '1,2d' > $@ - -.5.5.html: - $(RM) $@ - -${MAN2HTML} $< | sed '1,2d' > $@ - -.8.8.html: - $(RM) $@ - -${MAN2HTML} $< | sed '1,2d' > $@ - -man2html: pacman.8.html makepkg.8.html PKGBUILD.5.html makepkg.conf.5.html pacman.conf.5.html libalpm.3.html - clean-local: - $(RM) *.html $(RM) man3/*.3 -.PHONY: man2html Index: pacman-lib/lib/libalpm/deps.c diff -u pacman-lib/lib/libalpm/deps.c:1.70 pacman-lib/lib/libalpm/deps.c:1.71 --- pacman-lib/lib/libalpm/deps.c:1.70 Mon Feb 26 03:38:48 2007 +++ pacman-lib/lib/libalpm/deps.c Tue Feb 27 23:00:21 2007 @@ -187,10 +187,12 @@ return(newtargs); } -/* Returns a alpm_list_t* of missing_t pointers. - * - * dependencies can include versions with depmod operators. - * +/** Checks dependencies and returns missing ones in a list. Dependencies can include versions with depmod operators. + * @param trans pointer to the transaction object + * @param db pointer to the local package database + * @param op transaction type + * @param packages an alpm_list_t* of packages to be checked + * @return an alpm_list_t* of missing_t pointers. */ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op, alpm_list_t *packages) @@ -236,32 +238,19 @@ continue; } _alpm_db_read(db, p, INFRQ_DEPENDS); - for(k = p->depends; k && !found; k = k->next) { - /* find the dependency info in p->depends */ - _alpm_splitdep(k->data, &depend); - if(!strcmp(depend.name, oldpkg->name)) { - found = 1; - } - } - if(found == 0) { - /* look for packages that list depend.name as a "provide" */ - alpm_list_t *provides = _alpm_db_whatprovides(db, depend.name); - if(provides == NULL) { - /* not found */ - continue; - } - /* we found an installed package that provides depend.name */ - FREELISTPTR(provides); - } - if(!_alpm_depcmp(tp, &depend)) { - _alpm_log(PM_LOG_DEBUG, _("checkdeps: found %s as required by %s"), - depend.name, p->name); - miss = _alpm_depmiss_new(p->name, PM_DEP_TYPE_REQUIRED, depend.mod, - depend.name, depend.version); - if(!_alpm_depmiss_isin(miss, baddeps)) { - baddeps = alpm_list_add(baddeps, miss); - } else { - FREE(miss); + for(k = p->depends; k; k = k->next) { + /* don't break any existing dependencies (possible provides) */ + _alpm_splitdep(k->data, &depend); + if(_alpm_depcmp(oldpkg, &depend) && !_alpm_depcmp(tp, &depend)) { + _alpm_log(PM_LOG_DEBUG, _("checkdeps: updated '%s' won't satisfy a dependency of '%s'"), + oldpkg->name, p->name); + miss = _alpm_depmiss_new(p->name, PM_DEP_TYPE_REQUIRED, depend.mod, + depend.name, depend.version); + if(!_alpm_depmiss_isin(miss, baddeps)) { + baddeps = alpm_list_add(baddeps, miss); + } else { + FREE(miss); + } } } } Index: pacman-lib/pactest/README diff -u pacman-lib/pactest/README:1.1 pacman-lib/pactest/README:1.2 --- pacman-lib/pactest/README:1.1 Sun Oct 15 15:04:28 2006 +++ pacman-lib/pactest/README Tue Feb 27 23:00:21 2007 @@ -102,7 +102,7 @@ option ------ -A dictionnary that holds the data used in the pacman configuration file. +A dictionary that holds the data used in the pacman configuration file. It has 3 keys, each one of them pointing at a list of strings: - noupgrade - noextract @@ -269,9 +269,8 @@ PACMAN_RETCODE=value PACMAN_OUTPUT=value -For the RETCODE one, pactest will compare pacman return code with the value -provided as an item. -For the OUTPUT one, pactest will grep pacman outputs for the given value. +For RETCODE, pactest will ensure the pacman return code is the value given. +For OUTPUT, pactest will grep pacman outputs for the given value. Note: PACMAN_OUTPUT should not be used. Pacman outputs are likely to change from one release to another, so that it's reliability is quite low. @@ -286,14 +285,19 @@ PKG_EXIST=name PKG_MODIFIED=name PKG_VERSION=name|version + PKG_GROUPS=name|group + PKG_PROVIDES=name|providename PKG_DEPENDS=name|depname PKG_REQUIREDBY=name|reqbyname + PKG_REASON=name|intvalue + PKG_FILES=name|filename + PKG_BACKUP=name|backupname Example: PKG_DEPENDS=ncurses|glibc -pactest will test the local database entry "ncurses" has "glibc" in its -DEPENDS field. +pactest will test to ensure the local database entry "ncurses" has "glibc" in +its DEPENDS field. . FILE rules @@ -302,3 +306,9 @@ FILE_PACNEW=path/to/file FILE_PACSAVE=path/to/file FILE_PACORIG=path/to/file + +Example: + FILE_EXIST=etc/test.conf + +pactest will ensure the file /etc/test.conf exists in the filesystem. + Index: pacman-lib/pactest/pmrule.py diff -u pacman-lib/pactest/pmrule.py:1.3 pacman-lib/pactest/pmrule.py:1.4 --- pacman-lib/pactest/pmrule.py:1.3 Mon Feb 26 03:19:02 2007 +++ pacman-lib/pactest/pmrule.py Tue Feb 27 23:00:21 2007 @@ -76,6 +76,9 @@ elif case == "GROUPS": if not value in newpkg.groups: success = 0 + elif case == "PROVIDES": + if not value in newpkg.provides: + success = 0 elif case == "DEPENDS": if not value in newpkg.depends: success = 0 Index: pacman-lib/pactest/tests/upgrade052.py diff -u pacman-lib/pactest/tests/upgrade052.py:1.3 pacman-lib/pactest/tests/upgrade052.py:1.4 --- pacman-lib/pactest/tests/upgrade052.py:1.3 Tue Feb 27 11:15:47 2007 +++ pacman-lib/pactest/tests/upgrade052.py Tue Feb 27 23:00:21 2007 @@ -18,3 +18,4 @@ self.addrule("PACMAN_RETCODE=1") self.addrule("PKG_EXIST=pkg1") self.addrule("PKG_VERSION=pkg2|1.0-1") +self.addrule("PKG_PROVIDES=pkg2|imaginary") Index: pacman-lib/pactest/tests/upgrade053.py diff -u pacman-lib/pactest/tests/upgrade053.py:1.1 pacman-lib/pactest/tests/upgrade053.py:1.2 --- pacman-lib/pactest/tests/upgrade053.py:1.1 Mon Feb 26 20:34:08 2007 +++ pacman-lib/pactest/tests/upgrade053.py Tue Feb 27 23:00:21 2007 @@ -17,3 +17,4 @@ self.addrule("PACMAN_RETCODE=0") self.addrule("PKG_VERSION=pkg1|1.0-2") self.addrule("PKG_EXIST=pkg2") +self.addrule("PKG_REQUIREDBY=pkg2|pkg1") Index: pacman-lib/pactest/tests/upgrade054.py diff -u pacman-lib/pactest/tests/upgrade054.py:1.1 pacman-lib/pactest/tests/upgrade054.py:1.2 --- pacman-lib/pactest/tests/upgrade054.py:1.1 Mon Feb 26 20:34:08 2007 +++ pacman-lib/pactest/tests/upgrade054.py Tue Feb 27 23:00:21 2007 @@ -17,3 +17,4 @@ self.addrule("PACMAN_RETCODE=0") self.addrule("PKG_VERSION=pkg1|1.0-2") self.addrule("PKG_EXIST=pkg2") +self.addrule("PKG_REQUIREDBY=pkg2|pkg1") Index: pacman-lib/pactest/tests/upgrade055.py diff -u pacman-lib/pactest/tests/upgrade055.py:1.1 pacman-lib/pactest/tests/upgrade055.py:1.2 --- pacman-lib/pactest/tests/upgrade055.py:1.1 Tue Feb 27 11:15:47 2007 +++ pacman-lib/pactest/tests/upgrade055.py Tue Feb 27 23:00:21 2007 @@ -24,3 +24,5 @@ self.addrule("PKG_EXIST=pkg1") self.addrule("PKG_VERSION=pkg2|1.0-2") self.addrule("PKG_EXIST=pkg3") +self.addrule("PKG_REQUIREDBY=pkg2|pkg1") +self.addrule("PKG_DEPENDS=pkg1|imaginary") Index: pacman-lib/pactest/tests/upgrade056.py diff -u pacman-lib/pactest/tests/upgrade056.py:1.1 pacman-lib/pactest/tests/upgrade056.py:1.2 --- pacman-lib/pactest/tests/upgrade056.py:1.1 Tue Feb 27 14:44:45 2007 +++ pacman-lib/pactest/tests/upgrade056.py Tue Feb 27 23:00:21 2007 @@ -22,3 +22,5 @@ self.addrule("PKG_EXIST=pkg1") self.addrule("PKG_VERSION=pkg2|1.0-2") self.addrule("PKG_EXIST=pkg3") +self.addrule("!PKG_REQUIREDBY=pkg1|pkg2") +self.addrule("PKG_REQUIREDBY=pkg1|pkg3") Index: pacman-lib/pactest/tests/upgrade057.py diff -u /dev/null pacman-lib/pactest/tests/upgrade057.py:1.1 --- /dev/null Tue Feb 27 23:00:22 2007 +++ pacman-lib/pactest/tests/upgrade057.py Tue Feb 27 23:00:22 2007 @@ -0,0 +1,23 @@ +self.description = "Upgrade a package that both provides and is a dependency" + +lp1 = pmpkg("pkg1") +lp1.depends = ["pkg2", "imag3"] +self.addpkg2db("local", lp1) + +lp2 = pmpkg("pkg2") +lp2.provides = ["imag3"] +lp2.requiredby = ["pkg1"] +self.addpkg2db("local", lp2) + +p = pmpkg("pkg2", "1.0-2") +p.provides = ["imag3"] +self.addpkg(p) + +self.args = "-U %s" % p.filename() + +self.addrule("PACMAN_RETCODE=0") +self.addrule("PKG_EXIST=pkg1") +self.addrule("PKG_VERSION=pkg2|1.0-2") +self.addrule("PKG_REQUIREDBY=pkg2|pkg1") +self.addrule("PKG_DEPENDS=pkg1|pkg2") +self.addrule("PKG_DEPENDS=pkg1|imag3")
participants (1)
-
Dan McGee