pacman_deptest() rework

This commit is contained in:
Aurelien Foret 2005-03-19 18:14:18 +00:00
parent 0a072b57c5
commit 2da0b2263e

View file

@ -233,25 +233,25 @@ int pacman_deptest(list_t *targets)
PM_PKG *dummy; PM_PKG *dummy;
if(pmo_d_vertest) { if(pmo_d_vertest) {
/* ORE
if(targets && targets->data && targets->next && targets->next->data) { if(targets && targets->data && targets->next && targets->next->data) {
int ret = rpmvercmp(targets->data, targets->next->data); int ret = alpm_pkg_vercmp(targets->data, targets->next->data);
printf("%d\n", ret); printf("%d\n", ret);
return(ret); return(ret);
}*/ }
return(0); return(0);
} }
/* we create a transaction to hold a dummy package to be able to use /* we create a transaction to hold a dummy package to be able to use
* pm_trans_prepare() */ * deps checkings from alpm_trans_prepare() */
/* ORE if(alpm_trans_init(PM_TRANS_TYPE_ADD, 0, NULL) == -1) {
trans = alpm_trans_new(PM_TRANS_ADD, 0); ERR(NL, "error: %s\n", alpm_strerror(pm_errno));
if(trans == NULL) { return(1);
FREEPKG(dummy);
ERR(NL, "error: can't allocate %d bytes\n", sizeof(pm_pkginfo_t));
exit(1);
} }
dummy = NULL;
/* ORE
find a way to create a fake package and to add it to the transaction
targets
dummy = (pm_pkginfo_t *)malloc(sizeof(pm_pkginfo_t)); dummy = (pm_pkginfo_t *)malloc(sizeof(pm_pkginfo_t));
if(dummy == NULL) { if(dummy == NULL) {
ERR(NL, "error: can't allocate %d bytes\n", sizeof(pm_pkginfo_t)); ERR(NL, "error: can't allocate %d bytes\n", sizeof(pm_pkginfo_t));
@ -267,9 +267,16 @@ int pacman_deptest(list_t *targets)
trans->targets = list_add(trans->targets, strdup(dummy->name));*/ trans->targets = list_add(trans->targets, strdup(dummy->name));*/
if(alpm_trans_addtarget(NULL) == -1) {
ERR(NL, "error: %s\n", alpm_strerror(pm_errno));
alpm_trans_release();
return(1);
}
if(alpm_trans_prepare(&data) == -1) { if(alpm_trans_prepare(&data) == -1) {
int ret = 126; int ret = 126;
list_t *synctargs = NULL; list_t *synctargs = NULL;
switch(pm_errno) { switch(pm_errno) {
case PM_ERR_UNSATISFIED_DEPS: case PM_ERR_UNSATISFIED_DEPS:
for(lp = alpm_list_first(data); lp; lp = alpm_list_next(lp)) { for(lp = alpm_list_first(data); lp; lp = alpm_list_next(lp)) {
@ -300,6 +307,7 @@ int pacman_deptest(list_t *targets)
ret = 127; ret = 127;
break; break;
} }
/* attempt to resolve missing dependencies */ /* attempt to resolve missing dependencies */
/* TODO: handle version comparators (eg, glibc>=2.2.5) */ /* TODO: handle version comparators (eg, glibc>=2.2.5) */
if(ret == 126 && synctargs != NULL) { if(ret == 126 && synctargs != NULL) {
@ -309,12 +317,9 @@ int pacman_deptest(list_t *targets)
} }
} }
FREELIST(synctargs); FREELIST(synctargs);
FREEPKG(dummy);
return(ret); return(ret);
} }
FREEPKG(dummy);
return(0); return(0);
} }