Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ceff01739073eab6b61b2ec2bb610f81f296b1bb
commit ceff01739073eab6b61b2ec2bb610f81f296b1bb Author: Michel Hermier <[email protected]> Date: Sat May 4 09:51:00 2013 +0200 libpacman: Remove unecessary 'packages' parameter to _pacman_checkconflicts. diff --git a/lib/libpacman/conflict.c b/lib/libpacman/conflict.c index c25ef3c..fcd5001 100644 --- a/lib/libpacman/conflict.c +++ b/lib/libpacman/conflict.c @@ -50,8 +50,7 @@ * * conflicts are always name only */ -pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) -{ +pmlist_t *_pacman_checkconflicts(pmtrans_t *trans) { pmpkg_t *info = NULL; pmlist_t *i, *j, *k; pmlist_t *baddeps = NULL; @@ -59,13 +58,12 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) int howmany, remain; double percent; - howmany = f_list_count (packages); + howmany = f_list_count (trans->packages); + + for(i = trans->packages; i; i = i->next) { + pmtranspkg_t *transpkg = i->data; + const char *transpkg_name = __pacman_transpkg_name (transpkg); - for(i = packages; i; i = i->next) { - pmpkg_t *tp = i->data; - if(tp == NULL) { - continue; - } remain = f_list_count (i); percent = (double)(howmany - remain + 1) / howmany; @@ -75,24 +73,28 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) howmany - remain + 1); } - for(j = _pacman_pkg_getinfo(tp, PM_PKG_CONFLICTS); j; j = j->next) { - if(!strcmp(tp->name, j->data)) { + if (!(transpkg->type & PM_TRANS_TYPE_ADD)) { + continue; + } + + for(j = _pacman_pkg_getinfo(transpkg->pkg_new, PM_PKG_CONFLICTS); j; j = j->next) { + if(!strcmp(transpkg_name, j->data)) { /* a package cannot conflict with itself -- that's just not nice */ continue; } /* CHECK 1: check targets against database */ - _pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs db"), tp->name); + _pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs db"), transpkg_name); for(k = _pacman_db_get_pkgcache(trans->handle->db_local); k; k = k->next) { pmpkg_t *dp = (pmpkg_t *)k->data; - if(!strcmp(dp->name, tp->name)) { + if(!strcmp(dp->name, transpkg_name)) { /* a package cannot conflict with itself -- that's just not nice */ continue; } if(!strcmp(j->data, dp->name)) { /* conflict */ _pacman_log(PM_LOG_DEBUG, _("targs vs db: found %s as a conflict for %s"), - dp->name, tp->name); - miss = _pacman_depmiss_new(tp->name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, dp->name, NULL); + dp->name, transpkg_name); + miss = _pacman_depmiss_new(transpkg_name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, dp->name, NULL); if(!_pacman_depmiss_isin(miss, baddeps)) { baddeps = _pacman_list_add(baddeps, miss); } else { @@ -105,8 +107,8 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) if(!strcmp(m->data, j->data)) { /* confict */ _pacman_log(PM_LOG_DEBUG, _("targs vs db: found %s as a conflict for %s"), - dp->name, tp->name); - miss = _pacman_depmiss_new(tp->name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, dp->name, NULL); + dp->name, transpkg_name); + miss = _pacman_depmiss_new(transpkg_name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, dp->name, NULL); if(!_pacman_depmiss_isin(miss, baddeps)) { baddeps = _pacman_list_add(baddeps, miss); } else { @@ -117,18 +119,21 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) } } /* CHECK 2: check targets against targets */ - _pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs targs"), tp->name); - for(k = packages; k; k = k->next) { - pmpkg_t *otp = (pmpkg_t *)k->data; - if(!strcmp(otp->name, tp->name)) { + _pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs targs"), transpkg_name); + for(k = trans->packages; k; k = k->next) { + pmtranspkg_t *other_transpkg = k->data; + const char *other_transpkg_name = __pacman_transpkg_name (other_transpkg); + + if (other_transpkg == transpkg || + !(other_transpkg->type & PM_TRANS_TYPE_ADD)) { /* a package cannot conflict with itself -- that's just not nice */ continue; } - if(!strcmp(otp->name, (char *)j->data)) { + if(!strcmp(other_transpkg_name, (char *)j->data)) { /* otp is listed in tp's conflict list */ _pacman_log(PM_LOG_DEBUG, _("targs vs targs: found %s as a conflict for %s"), - otp->name, tp->name); - miss = _pacman_depmiss_new(tp->name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, otp->name, NULL); + other_transpkg_name, transpkg_name); + miss = _pacman_depmiss_new(transpkg_name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, other_transpkg_name, NULL); if(!_pacman_depmiss_isin(miss, baddeps)) { baddeps = _pacman_list_add(baddeps, miss); } else { @@ -137,11 +142,11 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) } else { /* see if otp provides something in tp's conflict list */ pmlist_t *m; - for(m = _pacman_pkg_getinfo(otp, PM_PKG_PROVIDES); m; m = m->next) { + for(m = _pacman_pkg_getinfo(other_transpkg->pkg_new, PM_PKG_PROVIDES); m; m = m->next) { if(!strcmp(m->data, j->data)) { _pacman_log(PM_LOG_DEBUG, _("targs vs targs: found %s as a conflict for %s"), - otp->name, tp->name); - miss = _pacman_depmiss_new(tp->name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, otp->name, NULL); + other_transpkg_name, transpkg_name); + miss = _pacman_depmiss_new(transpkg_name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, other_transpkg_name, NULL); if(!_pacman_depmiss_isin(miss, baddeps)) { baddeps = _pacman_list_add(baddeps, miss); } else { @@ -153,24 +158,26 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) } } /* CHECK 3: check database against targets */ - _pacman_log(PM_LOG_DEBUG, _("checkconflicts: db vs targ '%s'"), tp->name); + _pacman_log(PM_LOG_DEBUG, _("checkconflicts: db vs targ '%s'"), transpkg_name); for(k = _pacman_db_get_pkgcache(trans->handle->db_local); k; k = k->next) { pmlist_t *conflicts = NULL; int usenewconflicts = 0; info = k->data; - if(!strcmp(info->name, tp->name)) { + if(!strcmp(info->name, transpkg_name)) { /* a package cannot conflict with itself -- that's just not nice */ continue; } /* If this package (*info) is also in our packages pmlist_t, use the * conflicts list from the new package, not the old one (*info) */ - for(j = packages; j; j = j->next) { - pmpkg_t *pkg = j->data; - if(!strcmp(pkg->name, info->name)) { + for(j = trans->packages; j; j = j->next) { + pmtranspkg_t *transpkg = j->data; + + if (transpkg->type & PM_TRANS_TYPE_ADD && + !strcmp(transpkg->pkg_new->name, info->name)) { /* Use the new, to-be-installed package's conflicts */ - conflicts = _pacman_pkg_getinfo(pkg, PM_PKG_CONFLICTS); + conflicts = _pacman_pkg_getinfo(transpkg->pkg_new, PM_PKG_CONFLICTS); usenewconflicts = 1; } } @@ -179,10 +186,10 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) conflicts = _pacman_pkg_getinfo(info, PM_PKG_CONFLICTS); } for(j = conflicts; j; j = j->next) { - if(!strcmp((char *)j->data, tp->name)) { + if(!strcmp((char *)j->data, transpkg_name)) { _pacman_log(PM_LOG_DEBUG, _("db vs targs: found %s as a conflict for %s"), - info->name, tp->name); - miss = _pacman_depmiss_new(tp->name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, info->name, NULL); + info->name, transpkg_name); + miss = _pacman_depmiss_new(transpkg_name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, info->name, NULL); if(!_pacman_depmiss_isin(miss, baddeps)) { baddeps = _pacman_list_add(baddeps, miss); } else { @@ -193,11 +200,11 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) pmlist_t *m; for(m = conflicts; m; m = m->next) { pmlist_t *n; - for(n = _pacman_pkg_getinfo(tp, PM_PKG_PROVIDES); n; n = n->next) { + for(n = _pacman_pkg_getinfo(transpkg->pkg_new, PM_PKG_PROVIDES); n; n = n->next) { if(!strcmp(m->data, n->data)) { _pacman_log(PM_LOG_DEBUG, _("db vs targs: found %s as a conflict for %s"), - info->name, tp->name); - miss = _pacman_depmiss_new(tp->name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, info->name, NULL); + info->name, transpkg_name); + miss = _pacman_depmiss_new(transpkg_name, PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, info->name, NULL); if(!_pacman_depmiss_isin(miss, baddeps)) { baddeps = _pacman_list_add(baddeps, miss); } else { diff --git a/lib/libpacman/conflict.h b/lib/libpacman/conflict.h index 324b08f..f87db17 100644 --- a/lib/libpacman/conflict.h +++ b/lib/libpacman/conflict.h @@ -33,7 +33,7 @@ typedef struct __pmconflict_t { char ctarget[PKG_NAME_LEN]; } pmconflict_t; -pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages); +pmlist_t *_pacman_checkconflicts(pmtrans_t *trans); pmlist_t *_pacman_db_find_conflicts(pmtrans_t *trans, pmlist_t **skip_list); #endif /* _PACMAN_CONFLICT_H */ diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c index c3d7efb..b50ae4b 100644 --- a/lib/libpacman/deps.c +++ b/lib/libpacman/deps.c @@ -345,7 +345,6 @@ pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode) /* Returns a pmlist_t* of missing_t pointers. * * dependencies can include versions with depmod operators. - * */ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packages) { diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c index 29b9bec..6f1c220 100644 --- a/lib/libpacman/trans.c +++ b/lib/libpacman/trans.c @@ -672,7 +672,7 @@ int _pacman_sync_prepare (pmtrans_t *trans, pmlist_t **data) EVENT(trans, PM_TRANS_EVT_INTERCONFLICTS_START, NULL, NULL); _pacman_log(PM_LOG_FLOW1, _("looking for conflicts")); - deps = _pacman_checkconflicts(trans, list); + deps = _pacman_checkconflicts(trans); if(deps) { int errorout = 0; @@ -998,7 +998,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data) /* no unsatisfied deps, so look for conflicts */ _pacman_log(PM_LOG_FLOW1, _("looking for conflicts")); - lp = _pacman_checkconflicts(trans, trans->_packages); + lp = _pacman_checkconflicts(trans); if(lp != NULL) { if(data) { *data = lp; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
