[pacman-dev] CVS update of pacman-lib (10 files)

Dan McGee dan at archlinux.org
Tue Feb 27 23:00:22 EST 2007


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




More information about the pacman-dev mailing list