Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=be003d51dfcc0ed1dc35ce52473bb393f1f0896f

commit be003d51dfcc0ed1dc35ce52473bb393f1f0896f
Author: Michel Hermier <[email protected]>
Date:   Sat May 4 19:17:44 2013 +0200

libpacman: Introduce and use _pacman_trans_checkdeps as replacement of 
_pacman_checkdeps.

diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c
index 6a7838f..0eb09c5 100644
--- a/lib/libpacman/deps.c
+++ b/lib/libpacman/deps.c
@@ -374,12 +374,11 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, 
pmtranspkg_t *transpkg, pmlist_
}
}
}
-               if (transpkg->type == PM_TRANS_TYPE_UPGRADE) {
+               if (transpkg->type == PM_TRANS_TYPE_UPGRADE &&
+                               transpkg->pkg_local != NULL) { /* Really an 
upgrade */
/* PM_TRANS_TYPE_UPGRADE handles the backwards dependencies, ie, the packages
* listed in the requiredby field.
*/
-                       if(transpkg->pkg_local != NULL) {
-                               /* Really an upgrade*/
for(j = _pacman_pkg_getinfo(transpkg->pkg_local, PM_PKG_REQUIREDBY); j; j = 
j->next) {
pmtranspkg_t *requiredtranspkg = __pacman_trans_get_trans_pkg (trans, (const 
char *)j->data);
pmpkg_t *p;
@@ -412,7 +411,6 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, 
pmtranspkg_t *transpkg, pmlist_
}
}
}
-                       }
}
if (transpkg->type == PM_TRANS_TYPE_REMOVE) {
/* check requiredby fields */
@@ -449,11 +447,22 @@ int _pacman_transpkg_checkdeps(pmtrans_t *trans, 
pmtranspkg_t *transpkg, pmlist_
return 0;
}

+int _pacman_trans_checkdeps (pmtrans_t *trans, pmlist_t **depmisslist) {
+       pmlist_t *i;
+
+       for (i = trans->packages; i != NULL; i = i->next) {
+               pmtranspkg_t *transpkg = i->data;
+
+               _pacman_transpkg_checkdeps (trans, transpkg, depmisslist);
+       }
+       return 0;
+}
+
/* 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) {
+pmlist_t *_pacman_checkdeps (pmtrans_t *trans, unsigned char op, pmlist_t 
*packages) {
pmlist_t *i, *ret = NULL;

for (i = packages; i; i = i->next) {
diff --git a/lib/libpacman/deps.h b/lib/libpacman/deps.h
index 89a1521..a792c9a 100644
--- a/lib/libpacman/deps.h
+++ b/lib/libpacman/deps.h
@@ -53,6 +53,8 @@ void _pacman_sortbydeps(pmtrans_t *trans, int mode);
pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t 
*packages);
int _pacman_splitdep(const char *depstr, pmdepend_t *depend);
void _pacman_removedeps(pmtrans_t *trans);
+
+int _pacman_trans_checkdeps (pmtrans_t *trans, pmlist_t **depmisslist);
int _pacman_trans_resolvedeps(pmtrans_t *trans, pmlist_t **data);

#endif /* _PACMAN_DEPS_H */
diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index a106cb9..9ff9571 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -608,7 +608,7 @@ int _pacman_sync_prepare (pmtrans_t *trans, pmlist_t **data)
EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL);

_pacman_log(PM_LOG_FLOW1, _("looking for unresolvable dependencies"));
-               deps = _pacman_checkdeps(trans, PM_TRANS_TYPE_UPGRADE, 
trans->_packages);
+               _pacman_trans_checkdeps (trans, &deps);
if(deps) {
if(data) {
*data = deps;
@@ -918,7 +918,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data)
}
} else {

-       pmlist_t *lp;
+       pmlist_t *lp = NULL;
pmlist_t *rmlist = NULL;
char rm_fname[PATH_MAX];
pmpkg_t *info = NULL;
@@ -929,7 +929,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t **data)
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
/* look for unsatisfied dependencies */
_pacman_log(PM_LOG_FLOW1, _("looking for unsatisfied dependencies"));
-                       lp = _pacman_checkdeps(trans, trans->type, 
trans->_packages);
+                       _pacman_trans_checkdeps (trans, &lp);
if(lp != NULL) {
if(data) {
*data = lp;
@@ -1003,7 +1003,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t 
**data)
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);

_pacman_log(PM_LOG_FLOW1, _("looking for unsatisfied dependencies"));
-               lp = _pacman_checkdeps(trans, trans->type, trans->_packages);
+               _pacman_trans_checkdeps (trans, &lp);
if(lp != NULL) {
if(trans->flags & PM_TRANS_FLAG_CASCADE) {
while(lp) {
@@ -1019,7 +1019,7 @@ int _pacman_trans_prepare(pmtrans_t *trans, pmlist_t 
**data)
}
}
FREELIST(lp);
-                                       lp = _pacman_checkdeps(trans, 
trans->type, trans->_packages);
+                                       _pacman_trans_checkdeps (trans, &lp);
}
} else {
if(data) {
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to