mirror of
https://github.com/moparisthebest/pacman
synced 2025-02-28 09:21:53 -05:00
* 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.
This commit is contained in:
parent
820fae9d75
commit
bd7eb9475c
@ -12,26 +12,6 @@ endif
|
||||
|
||||
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
|
||||
|
@ -187,10 +187,12 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
|
||||
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 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ Example:
|
||||
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 @@ Possible rules are:
|
||||
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 @@ Possible rules are:
|
||||
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 @@ DEPENDS field.
|
||||
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.
|
||||
|
||||
|
@ -76,6 +76,9 @@ class pmrule:
|
||||
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
|
||||
|
@ -18,3 +18,4 @@ self.args = "-U %s" % p.filename()
|
||||
self.addrule("PACMAN_RETCODE=1")
|
||||
self.addrule("PKG_EXIST=pkg1")
|
||||
self.addrule("PKG_VERSION=pkg2|1.0-1")
|
||||
self.addrule("PKG_PROVIDES=pkg2|imaginary")
|
||||
|
@ -17,3 +17,4 @@ self.args = "-U %s" % p.filename()
|
||||
self.addrule("PACMAN_RETCODE=0")
|
||||
self.addrule("PKG_VERSION=pkg1|1.0-2")
|
||||
self.addrule("PKG_EXIST=pkg2")
|
||||
self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
|
||||
|
@ -17,3 +17,4 @@ self.args = "-U %s" % p.filename()
|
||||
self.addrule("PACMAN_RETCODE=0")
|
||||
self.addrule("PKG_VERSION=pkg1|1.0-2")
|
||||
self.addrule("PKG_EXIST=pkg2")
|
||||
self.addrule("PKG_REQUIREDBY=pkg2|pkg1")
|
||||
|
@ -24,3 +24,5 @@ self.addrule("PACMAN_RETCODE=0")
|
||||
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")
|
||||
|
@ -22,3 +22,5 @@ self.addrule("PACMAN_RETCODE=0")
|
||||
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")
|
||||
|
23
pactest/tests/upgrade057.py
Normal file
23
pactest/tests/upgrade057.py
Normal file
@ -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")
|
Loading…
x
Reference in New Issue
Block a user