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

commit f2b8082250e3d71dc4ab0680676295d908848166
Author: Michel Hermier <herm...@frugalware.org>
Date:   Mon Nov 18 21:36:22 2013 +0100

libpacman: Make sync.c use pmtrans_t::syncpkgs.

diff --git a/lib/libpacman/deps.c b/lib/libpacman/deps.c
index dc9aa5c..5d86149 100644
--- a/lib/libpacman/deps.c
+++ b/lib/libpacman/deps.c
@@ -410,13 +410,16 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned 
char op, pmlist_t *packag
if(!_pacman_list_is_strin((char *)j->data, packages)) {
/* check if a package in trans->packages provides this package */
for(k=trans->packages; !found && k; k=k->next) {
-                                               pmpkg_t *spkg = NULL;
-                                       if(trans->type == PM_TRANS_TYPE_SYNC) {
-                                               pmsyncpkg_t *ps = k->data;
-                                               spkg = ps->pkg;
-                                       } else {
-                                               spkg = k->data;
+                                               pmpkg_t *spkg = k->data;
+
+                                               if(spkg && 
_pacman_list_is_strin(tp->name, _pacman_pkg_getinfo(spkg, PM_PKG_PROVIDES))) {
+                                                       found=1;
+                                               }
}
+                                       for(k=trans->syncpkgs; !found && k; 
k=k->next) {
+                                               pmsyncpkg_t *ps = k->data;
+                                               pmpkg_t *spkg = ps->pkg;
+
if(spkg && _pacman_list_is_strin(tp->name, _pacman_pkg_getinfo(spkg, 
PM_PKG_PROVIDES))) {
found=1;
}
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 0c58a55..1506aaa 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -730,7 +730,7 @@ void *pacman_trans_getinfo(unsigned char parm)
case PM_TRANS_TYPE:     data = (void *)(long)trans->type; break;
case PM_TRANS_FLAGS:    data = (void *)(long)trans->flags; break;
case PM_TRANS_TARGETS:  data = trans->targets; break;
-               case PM_TRANS_PACKAGES: data = trans->packages; break;
+               case PM_TRANS_PACKAGES: data = trans->packages ? 
trans->packages : trans->syncpkgs; break;
case PM_TRANS_SYNCPKGS: data = trans->syncpkgs; break;
default:
data = NULL;
diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index 0a62f38..c1488c4 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -191,7 +191,7 @@ int _pacman_sync_addtarget(pmtrans_t *trans, const char 
*name)
RET_ERR(PM_ERR_MEMORY, -1);
}
_pacman_log(PM_LOG_FLOW2, _("adding target '%s' to the transaction set"), 
spkg->name);
-               trans->packages = _pacman_list_add(trans->packages, ps);
+               trans->syncpkgs = _pacman_list_add(trans->syncpkgs, ps);
}

return(0);
@@ -242,12 +242,13 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t 
**data)

ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
+       ASSERT(trans->packages == NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));

if(data) {
*data = NULL;
}

-       for(i = trans->packages; i; i = i->next) {
+       for(i = trans->syncpkgs; i; i = i->next) {
pmsyncpkg_t *ps = i->data;
list = _pacman_list_add(list, ps->pkg);
}
@@ -258,7 +259,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
/* Resolve targets dependencies */
EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL);
_pacman_log(PM_LOG_FLOW1, _("resolving targets dependencies"));
-               for(i = trans->packages; i; i = i->next) {
+               for(i = trans->syncpkgs; i; i = i->next) {
pmpkg_t *spkg = ((pmsyncpkg_t *)i->data)->pkg;
if(_pacman_resolvedeps(trans, spkg, list, trail, data) == -1) {
/* pm_errno is set by resolvedeps */
@@ -276,27 +277,27 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t 
**data)
ret = -1;
goto cleanup;
}
-                               trans->packages = 
_pacman_list_add(trans->packages, ps);
+                               trans->syncpkgs = 
_pacman_list_add(trans->syncpkgs, ps);
_pacman_log(PM_LOG_FLOW2, _("adding package %s-%s to the transaction targets"),
spkg->name, spkg->version);
} else {
/* remove the original targets from the list if requested */
if((trans->flags & PM_TRANS_FLAG_DEPENDSONLY)) {
/* they are just pointers so we don't have to free them */
-                                       trans->packages = 
_pacman_list_remove(trans->packages, spkg, pkg_cmp, NULL);
+                                       trans->syncpkgs = 
_pacman_list_remove(trans->syncpkgs, spkg, pkg_cmp, NULL);
}
}
}

/* re-order w.r.t. dependencies */
k = l = NULL;
-               for(i=trans->packages; i; i=i->next) {
+               for(i=trans->syncpkgs; i; i=i->next) {
pmsyncpkg_t *s = (pmsyncpkg_t*)i->data;
k = _pacman_list_add(k, s->pkg);
}
m = _pacman_sortbydeps(k, PM_TRANS_TYPE_ADD);
for(i=m; i; i=i->next) {
-                       for(j=trans->packages; j; j=j->next) {
+                       for(j=trans->syncpkgs; j; j=j->next) {
pmsyncpkg_t *s = (pmsyncpkg_t*)j->data;
if(s->pkg==i->data) {
l = _pacman_list_add(l, s);
@@ -305,8 +306,8 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
}
FREELISTPTR(k);
FREELISTPTR(m);
-               FREELISTPTR(trans->packages);
-               trans->packages = l;
+               FREELISTPTR(trans->syncpkgs);
+               trans->syncpkgs = l;

EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL);

@@ -346,7 +347,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
/* check if the conflicting package is one that's about to be removed/replaced.
* if so, then just ignore it
*/
-                               for(j = trans->packages; j && !found; j = 
j->next) {
+                               for(j = trans->syncpkgs; j && !found; j = 
j->next) {
ps = j->data;
if(ps->type == PM_SYNC_TYPE_REPLACE) {
if(_pacman_pkg_isin(miss->depend.name, ps->data)) {
@@ -414,7 +415,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
pmsyncpkg_t *rsync = _pacman_trans_find(trans, rmpkg);
pmsyncpkg_t *spkg = NULL;
_pacman_log(PM_LOG_FLOW2, _("removing '%s' from target list"), rmpkg);
-                                                       trans->packages = 
_pacman_list_remove(trans->packages, rsync, ptr_cmp, (void **)&spkg);
+                                                       trans->syncpkgs = 
_pacman_list_remove(trans->syncpkgs, rsync, ptr_cmp, (void **)&spkg);
FREESYNC(spkg);
continue;
}
@@ -451,7 +452,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
/* remove it from the target list */
pmsyncpkg_t *spkg = NULL;
_pacman_log(PM_LOG_FLOW2, _("removing '%s' from target list"), 
miss->depend.name);
-                                                               trans->packages 
= _pacman_list_remove(trans->packages, rsync, ptr_cmp, (void **)&spkg);
+                                                               trans->syncpkgs 
= _pacman_list_remove(trans->syncpkgs, rsync, ptr_cmp, (void **)&spkg);
FREESYNC(spkg);
}
} else {
@@ -511,7 +512,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
* package that's in our final (upgrade) list.
*/
/*EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);*/
-               for(i = trans->packages; i; i = i->next) {
+               for(i = trans->syncpkgs; i; i = i->next) {
pmsyncpkg_t *ps = i->data;
if(ps->type == PM_SYNC_TYPE_REPLACE) {
for(j = ps->data; j; j = j->next) {
@@ -547,7 +548,7 @@ int _pacman_sync_prepare(pmtrans_t *trans, pmlist_t **data)
* provides the same thing.  If none are found, then it truly
* is an unresolvable conflict. */
pmlist_t *n, *o;
-                                                                       for(n = 
trans->packages; n && !pfound; n = n->next) {
+                                                                       for(n = 
trans->syncpkgs; n && !pfound; n = n->next) {
pmsyncpkg_t *sp = n->data;
for(o = sp->pkg->provides; o && !pfound; o = o->next) {
if(!strcmp(m->data, o->data)) {
@@ -636,12 +637,12 @@ int _pacman_sync_commit(pmtrans_t *trans, pmlist_t **data)
goto error;
}

-       for(i = trans->packages; i; i = i->next) {
+       for(i = trans->syncpkgs; i; i = i->next) {
pmsyncpkg_t *ps = i->data;
if(ps->type == PM_SYNC_TYPE_REPLACE) {
for(j = ps->data; j; j = j->next) {
pmpkg_t *pkg = j->data;
-                               if(!_pacman_pkg_isin(pkg->name, tr->packages)) {
+                               if(!_pacman_pkg_isin(pkg->name, tr->syncpkgs)) {
if(_pacman_trans_addtarget(tr, pkg->name) == -1) {
goto error;
}
@@ -677,7 +678,7 @@ int _pacman_sync_commit(pmtrans_t *trans, pmlist_t **data)
_pacman_log(PM_LOG_ERROR, _("could not initialize transaction"));
goto error;
}
-       for(i = trans->packages; i; i = i->next) {
+       for(i = trans->syncpkgs; i; i = i->next) {
pmsyncpkg_t *ps = i->data;
pmpkg_t *spkg = ps->pkg;
char str[PATH_MAX];
@@ -708,7 +709,7 @@ int _pacman_sync_commit(pmtrans_t *trans, pmlist_t **data)
/* propagate replaced packages' requiredby fields to their new owners */
if(replaces) {
_pacman_log(PM_LOG_FLOW1, _("updating database for replaced packages' 
dependencies"));
-               for(i = trans->packages; i; i = i->next) {
+               for(i = trans->syncpkgs; i; i = i->next) {
pmsyncpkg_t *ps = i->data;
if(ps->type == PM_SYNC_TYPE_REPLACE) {
pmpkg_t *new = _pacman_db_get_pkgfromcache(db_local, ps->pkg_name);
@@ -783,7 +784,7 @@ int _pacman_trans_download_commit(pmtrans_t *trans, 
pmlist_t **data)
struct stat buf;
pmdb_t *current = i->data;

-                       for(j = trans->packages; j; j = j->next) {
+                       for(j = trans->syncpkgs; j; j = j->next) {
pmsyncpkg_t *ps = j->data;
pmpkg_t *spkg = ps->pkg;
pmdb_t *dbs = spkg->data;
@@ -849,7 +850,7 @@ int _pacman_trans_download_commit(pmtrans_t *trans, 
pmlist_t **data)
if(!(trans->flags & PM_TRANS_FLAG_NOINTEGRITY)) {
EVENT(trans, PM_TRANS_EVT_INTEGRITY_START, NULL, NULL);

-                       for(i = trans->packages; i; i = i->next) {
+                       for(i = trans->syncpkgs; i; i = i->next) {
pmsyncpkg_t *ps = i->data;
pmpkg_t *spkg = ps->pkg;
char str[PATH_MAX], pkgname[PATH_MAX];
diff --git a/lib/libpacman/trans.c b/lib/libpacman/trans.c
index 575394e..7428bdb 100644
--- a/lib/libpacman/trans.c
+++ b/lib/libpacman/trans.c
@@ -125,14 +125,13 @@ void _pacman_trans_fini(pmtrans_t *trans)
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));

FREELIST(trans->targets);
-       if(trans->type == PM_TRANS_TYPE_SYNC) {
+       FREELISTPKGS(trans->packages);
+       {
pmlist_t *i;
-               for(i = trans->packages; i; i = i->next) {
+               for(i = trans->syncpkgs; i; i = i->next) {
FREESYNC(i->data);
}
-               FREELIST(trans->packages);
-       } else {
-               FREELISTPKGS(trans->packages);
+               FREELIST(trans->syncpkgs);
}
FREELIST(trans->skiplist);
FREELIST(trans->triggers);
@@ -258,14 +257,14 @@ int _pacman_trans_compute_triggers(pmtrans_t *trans)

/* NOTE: Not the most efficient way, but will do until we add some string hash. 
*/
for(lp = trans->packages; lp; lp = lp->next) {
-               pmpkg_t *pkg;
+               pmpkg_t *pkg = lp->data;

-               if(trans->type != PM_TRANS_TYPE_SYNC) {
-                       pkg = lp->data;
-               } else {
-                       /* FIXME: might be incomplete */
-                       pkg = ((pmsyncpkg_t *)lp->data)->pkg;
-               }
+               trans->triggers = 
f_stringlist_append_stringlist(trans->triggers, pkg->triggers);
+       }
+       for(lp = trans->syncpkgs; lp; lp = lp->next) {
+               pmpkg_t *pkg = ((pmsyncpkg_t *)lp->data)->pkg;
+
+               /* FIXME: might be incomplete */
trans->triggers = f_stringlist_append_stringlist(trans->triggers, 
pkg->triggers);
}
trans->triggers = _pacman_list_remove_dupes(trans->triggers);
diff --git a/lib/libpacman/trans_sysupgrade.c b/lib/libpacman/trans_sysupgrade.c
index 1ddf1ac..dca1e5b 100644
--- a/lib/libpacman/trans_sysupgrade.c
+++ b/lib/libpacman/trans_sysupgrade.c
@@ -119,7 +119,7 @@ int _pacman_sync_sysupgrade(pmtrans_t *trans, pmdb_t 
*db_local, pmlist_t *dbs_sy
goto error;
}
ps->data = _pacman_list_add(NULL, dummy);
-                                                                       
trans->packages = _pacman_list_add(trans->packages, ps);
+                                                                       
trans->syncpkgs = _pacman_list_add(trans->syncpkgs, ps);
}
_pacman_log(PM_LOG_FLOW2, _("%s-%s elected for upgrade (to be replaced by 
%s-%s)"),
lpkg->name, lpkg->version, spkg->name, spkg->version);
@@ -150,7 +150,7 @@ int _pacman_sync_sysupgrade(pmtrans_t *trans, pmdb_t 
*db_local, pmlist_t *dbs_sy
}

/* we don't care about a to-be-replaced package's newer version */
-               for(j = trans->packages; j && !replace; j=j->next) {
+               for(j = trans->syncpkgs; j && !replace; j=j->next) {
ps = j->data;
if(ps->type == PM_SYNC_TYPE_REPLACE) {
if(_pacman_pkg_isin(spkg->name, ps->data)) {
@@ -197,7 +197,7 @@ int _pacman_sync_sysupgrade(pmtrans_t *trans, pmdb_t 
*db_local, pmlist_t *dbs_sy
FREEPKG(dummy);
goto error;
}
-                               trans->packages = 
_pacman_list_add(trans->packages, ps);
+                               trans->syncpkgs = 
_pacman_list_add(trans->syncpkgs, ps);
} else {
/* spkg->name is already in the packages list -- just ignore it */
}
diff --git a/lib/libpacman/util.c b/lib/libpacman/util.c
index 5c5cd36..4eb33fd 100644
--- a/lib/libpacman/util.c
+++ b/lib/libpacman/util.c
@@ -646,18 +646,15 @@ int _pacman_check_freespace(pmtrans_t *trans, pmlist_t 
**data)
long long pkgsize=0, freespace;

for(i = trans->packages; i; i = i->next) {
-               if(trans->type == PM_TRANS_TYPE_SYNC)
-               {
-                       pmsyncpkg_t *ps = i->data;
-                       if(ps->type != PM_SYNC_TYPE_REPLACE) {
-                               pmpkg_t *pkg = ps->pkg;
-                               pkgsize += pkg->usize;
-                       }
-               }
-               else
-               {
-                       pmpkg_t *pkg = i->data;
-                       pkgsize += pkg->size;
+               pmpkg_t *pkg = i->data;
+               pkgsize += pkg->size;
+       }
+       for(i = trans->syncpkgs; i; i = i->next) {
+               pmsyncpkg_t *ps = i->data;
+
+               if(ps->type != PM_SYNC_TYPE_REPLACE) {
+                       pmpkg_t *pkg = ps->pkg;
+                       pkgsize += pkg->usize;
}
}
freespace = get_freespace();
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to