poldek: poldek/install/Makefile.am, poldek/install/conflicts.c, po...
mis
mis at pld-linux.org
Sun Jul 8 18:45:43 CEST 2007
Author: mis Date: Sun Jul 8 16:45:43 2007 GMT
Module: poldek Tag: HEAD
---- Log message:
- use lifted pm's api
---- Files affected:
poldek/poldek/install:
Makefile.am (1.2 -> 1.3) , conflicts.c (1.7 -> 1.8) , icaps.c (1.5 -> 1.6) , misc.c (1.12 -> 1.13) , obsoletes.c (1.9 -> 1.10)
---- Diffs:
================================================================
Index: poldek/poldek/install/Makefile.am
diff -u poldek/poldek/install/Makefile.am:1.2 poldek/poldek/install/Makefile.am:1.3
--- poldek/poldek/install/Makefile.am:1.2 Thu Sep 22 22:30:58 2005
+++ poldek/poldek/install/Makefile.am Sun Jul 8 18:45:38 2007
@@ -9,7 +9,9 @@
ictx.c ictx.h mark.c misc.c \
conflicts.c icaps.c \
obsoletes.c requirements.c \
- process.c
+ process.c \
+ dbpkgset.c dbpkgset.h \
+ dbdep.c dbdep.h
dist-hook:
rm -rf $(distdir)/.deps
================================================================
Index: poldek/poldek/install/conflicts.c
diff -u poldek/poldek/install/conflicts.c:1.7 poldek/poldek/install/conflicts.c:1.8
--- poldek/poldek/install/conflicts.c:1.7 Mon Jul 2 22:29:44 2007
+++ poldek/poldek/install/conflicts.c Sun Jul 8 18:45:38 2007
@@ -157,11 +157,11 @@
{
int i, ncnfl = 0;
tn_hash *ht = NULL;
- tn_array *dbpkgs;
+ tn_array *dbpkgs = NULL;
+
+ pkgdb_search(ictx->ts->db, &dbpkgs, PMTAG_CAP, capreq_name(cnfl),
+ ictx->uninst_set->dbpkgs, PKG_LDWHOLE_FLDEPDIRS);
- dbpkgs = pkgdb_get_provides_dbpkgs(ictx->ts->db, cnfl,
- ictx->uninst_set->dbpkgs,
- PKG_LDWHOLE_FLDEPDIRS);
if (dbpkgs == NULL)
return 0;
@@ -216,17 +216,19 @@
return ncnfl;
}
+
+
/* check if db cnfl conflicts with cap */
static
int find_db_conflicts_dbcnfl_with_cap(int indent, struct install_ctx *ictx,
struct pkg *pkg, const struct capreq *cap)
{
int i, j, ncnfl = 0;
- tn_array *dbpkgs;
+ tn_array *dbpkgs = NULL;
- dbpkgs = pkgdb_get_conflicted_dbpkgs(ictx->ts->db, cap,
- ictx->uninst_set->dbpkgs,
- PKG_LDWHOLE_FLDEPDIRS);
+ pkgdb_search(ictx->ts->db, &dbpkgs, PMTAG_CNFL, capreq_name(cap),
+ ictx->uninst_set->dbpkgs, PKG_LDWHOLE_FLDEPDIRS);
+
if (dbpkgs == NULL)
return 0;
================================================================
Index: poldek/poldek/install/icaps.c
diff -u poldek/poldek/install/icaps.c:1.5 poldek/poldek/install/icaps.c:1.6
--- poldek/poldek/install/icaps.c:1.5 Sun Jul 1 23:04:26 2007
+++ poldek/poldek/install/icaps.c Sun Jul 8 18:45:38 2007
@@ -20,12 +20,12 @@
int prepare_icap(struct poldek_ts *ts, const char *capname, tn_array *pkgs)
{
int i, found = 0;
- tn_array *dbpkgs;
+ tn_array *dbpkgs = NULL;
struct capreq *cap;
capreq_new_name_a(capname, cap);
- dbpkgs = pkgdb_get_provides_dbpkgs(ts->db, cap, NULL, 0);
-
+ pkgdb_search(ts->db, &dbpkgs, PMTAG_CAP, capname, NULL, 0);
+
if (dbpkgs == NULL) {
struct pkg *pkg = NULL;
================================================================
Index: poldek/poldek/install/misc.c
diff -u poldek/poldek/install/misc.c:1.12 poldek/poldek/install/misc.c:1.13
--- poldek/poldek/install/misc.c:1.12 Sun Jul 1 23:04:26 2007
+++ poldek/poldek/install/misc.c Sun Jul 8 18:45:38 2007
@@ -16,6 +16,12 @@
#include "ictx.h"
+/* from pkgset-req.c */
+extern int psreq_find_match_packages(struct pkgset *ps,
+ const struct pkg *pkg, struct capreq *req,
+ struct pkg ***packages, int *npackages,
+ int strict);
+
int in_is_pkg_installed(struct install_ctx *ictx, struct pkg *pkg, int *cmprc)
{
tn_array *dbpkgs = NULL;
================================================================
Index: poldek/poldek/install/obsoletes.c
diff -u poldek/poldek/install/obsoletes.c:1.9 poldek/poldek/install/obsoletes.c:1.10
--- poldek/poldek/install/obsoletes.c:1.9 Sun Jun 17 22:29:53 2007
+++ poldek/poldek/install/obsoletes.c Sun Jul 8 18:45:38 2007
@@ -44,6 +44,14 @@
return is_iset_provides(ictx, pkg, cap);
}
+static
+int get_pkgs_requires_capn(struct pkgdb *db, tn_array *dbpkgs,
+ const char *capname,
+ const tn_array *exclude, unsigned ldflags)
+{
+ return pkgdb_search(db, &dbpkgs, PMTAG_REQ, capname, exclude, ldflags);
+}
+
/* add to ictx->orphan_dbpkgs packages required by pkg */
static int process_pkg_orphans(struct install_ctx *ictx, struct pkg *pkg)
@@ -59,9 +67,9 @@
DBGF("%s\n", pkg_id(pkg));
MEMINF("process_pkg_orphans:");
- if (!is_iset_provides_capn(ictx, pkg, pkg->name))
- n += pkgdb_get_pkgs_requires_capn(db, ictx->orphan_dbpkgs, pkg->name,
- ictx->uninst_set->dbpkgs, ldflags);
+ if (!is_iset_provides_capn(ictx, pkg, pkg->name))
+ n += get_pkgs_requires_capn(db, ictx->orphan_dbpkgs, pkg->name,
+ ictx->uninst_set->dbpkgs, ldflags);
if (pkg->caps)
for (i=0; i < n_array_size(pkg->caps); i++) {
@@ -87,9 +95,9 @@
pkgfl_it_init(&it, pkg->fl);
while ((path = pkgfl_it_get(&it, NULL))) {
if (!is_iset_provides_capn(ictx, pkg, path))
- n += pkgdb_get_pkgs_requires_capn(db, ictx->orphan_dbpkgs, path,
- ictx->uninst_set->dbpkgs,
- ldflags);
+ n += get_pkgs_requires_capn(db, ictx->orphan_dbpkgs, path,
+ ictx->uninst_set->dbpkgs,
+ ldflags);
}
}
@@ -257,18 +265,26 @@
}
static
-int get_obsoletedby_pkg(struct pkgdb *db, tn_array *dbpkgs, struct pkg *pkg,
+int get_obsoletedby_pkg(struct pkgdb *db, tn_array *unpkgs, struct pkg *pkg,
unsigned getflags, unsigned ldflags)
{
+ tn_array *dbpkgs;
int n;
if (poldek_conf_MULTILIB)
pkgdb_set_filter(db, obs_filter, pkg);
- n = pkgdb_get_obsoletedby_pkg(db, dbpkgs, pkg, getflags, ldflags);
+ dbpkgs = pkgs_array_new_ex(16, pkg_cmp_recno);
+ n = pkgdb_q_obsoletedby_pkg(db, dbpkgs, pkg, getflags, unpkgs, ldflags);
if (poldek_conf_MULTILIB)
pkgdb_set_filter(db, NULL, NULL);
+
+ while (n_array_size(dbpkgs)) {
+ struct pkg *p = n_array_shift(dbpkgs);
+ n_array_push(unpkgs, p);
+ }
+ n_array_free(dbpkgs);
return n;
}
================================================================
---- CVS-web:
http://cvs.pld-linux.org/poldek/poldek/install/Makefile.am?r1=1.2&r2=1.3&f=u
http://cvs.pld-linux.org/poldek/poldek/install/conflicts.c?r1=1.7&r2=1.8&f=u
http://cvs.pld-linux.org/poldek/poldek/install/icaps.c?r1=1.5&r2=1.6&f=u
http://cvs.pld-linux.org/poldek/poldek/install/misc.c?r1=1.12&r2=1.13&f=u
http://cvs.pld-linux.org/poldek/poldek/install/obsoletes.c?r1=1.9&r2=1.10&f=u
More information about the pld-cvs-commit
mailing list