SOURCES: poldek-uninstall-multilib.patch (NEW), poldek-bug-5774.pa...
glen
glen at pld-linux.org
Sun Apr 2 22:24:29 CEST 2006
Author: glen Date: Sun Apr 2 20:24:29 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- bugfixes from mis
---- Files affected:
SOURCES:
poldek-uninstall-multilib.patch (NONE -> 1.1) (NEW), poldek-bug-5774.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/poldek-uninstall-multilib.patch
diff -u /dev/null SOURCES/poldek-uninstall-multilib.patch:1.1
--- /dev/null Sun Apr 2 22:24:29 2006
+++ SOURCES/poldek-uninstall-multilib.patch Sun Apr 2 22:24:23 2006
@@ -0,0 +1,283 @@
+Index: arg_packages.c
+===================================================================
+RCS file: /cvsroot/poldek/poldek/arg_packages.c,v
+retrieving revision 1.24
+retrieving revision 1.25
+diff -u -r1.24 -r1.25
+--- arg_packages.c 7 Jan 2006 01:13:20 -0000 1.24
++++ arg_packages.c 2 Apr 2006 19:10:36 -0000 1.25
+@@ -42,6 +42,8 @@
+ #include "pkgset.h"
+ #include "pm/pm.h"
+
++extern int poldek_conf_MULTILIB;
++
+ #define ARG_PACKAGES_SETUPDONE (1 << 0)
+
+ /* @VIRTUAL [DEFAULT_MASK [EVR]] */
+@@ -227,36 +229,6 @@
+ // n_hash_size(aps->resolved_caps);
+ }
+
+-#if 0 /* XXX: disabled, #5702 */
+-/* tries to convert N-[E:]V-R to N#[E:]V-R */
+-static char *mask2evrhashedmask(const char *mask)
+-{
+- const char *name, *ver, *rel, *p;
+- char nmask[1024], e[32] = "", *tmp;
+- int32_t epoch = 0;
+- int n;
+-
+- n_strdupap(mask, &tmp);
+- if (!poldek_util_parse_nevr(tmp, &name, &epoch, &ver, &rel))
+- return NULL;
+-
+- p = ver; /* check if it is really version */
+- while (*p) {
+- if (isdigit(*p))
+- break;
+- p++;
+- }
+-
+- if (*p == '\0') /* no digits => part of name propably */
+- return NULL;
+-
+- if (epoch)
+- snprintf(e, sizeof(e), "%d:", epoch);
+- n = n_snprintf(nmask, sizeof(nmask), "%s#%s%s-%s", name, e, ver, rel);
+- return n_strdupl(nmask, n);
+-}
+-#endif
+-
+ tn_array *arg_packages_get_masks(struct arg_packages *aps, int hashed)
+ {
+ tn_array *masks;
+@@ -264,19 +236,11 @@
+
+ masks = n_array_clone(aps->package_masks);
+ for (i=0; i < n_array_size(aps->package_masks); i++) {
+- const char *mask;
+-
+- mask = n_array_nth(aps->package_masks, i);
+- if (hashed && strchr(mask, '-') && strchr(mask, '*') == NULL) {
+-#if 0 /* XXX: disabled so smart NEVR parsing, #5702 */
+- char *nmask;
+- if ((nmask = mask2evrhashedmask(mask)))
+- mask = nmask;
+-#endif
+- }
++ const char *mask = n_array_nth(aps->package_masks, i);
+ n_array_push(masks, n_strdup(mask));
+ }
+-
++
++ hashed = 0; /* disabled for a while */
+ for (i=0; i < n_array_size(aps->packages); i++) {
+ struct pkg *pkg = n_array_nth(aps->packages, i);
+ char mask[1024], e[32] = "";
+@@ -284,9 +248,13 @@
+
+ if (pkg->epoch)
+ snprintf(e, sizeof(e), "%d:", pkg->epoch);
+-
++
+ n = n_snprintf(mask, sizeof(mask), "%s%s%s%s-%s", pkg->name,
+- hashed ? "#" : "-", e, pkg->ver, pkg->rel);
++ hashed ? "#" : "-", e, pkg->ver, pkg->rel);
++
++ if (0 && poldek_conf_MULTILIB && pkg_arch(pkg))
++ n += n_snprintf(&mask[n], sizeof(mask) - n, ".%s", pkg_arch(pkg));
++
+ n_array_push(masks, n_strdupl(mask, n));
+ }
+
+Index: uninstall.c
+===================================================================
+RCS file: /cvsroot/poldek/poldek/uninstall.c,v
+retrieving revision 1.39
+retrieving revision 1.40
+diff -u -r1.39 -r1.40
+--- uninstall.c 18 Mar 2006 17:03:48 -0000 1.39
++++ uninstall.c 2 Apr 2006 19:10:36 -0000 1.40
+@@ -227,6 +227,7 @@
+ MEMINF("START");
+ DBGF("%s\n", pkg_id(pkg));
+
++ msg_i(3, indent, "%s\n", pkg_id(pkg));
+ for (i=0; i < n_array_size(pkg->reqs); i++) {
+ struct capreq *req = n_array_nth(pkg->reqs, i);
+
+@@ -235,7 +236,7 @@
+
+ DBGF("req %s\n", capreq_snprintf_s(req));
+
+- if (pkg_satisfies_req(pkg, req, 1)) { /* self match, should be handled
++ if (pkg_satisfies_req(pkg, req, 1)) { /* XXX: self match, should be handled
+ at lower level; TOFIX */
+ DBGF("%s: satisfied by itself\n", capreq_snprintf_s(req));
+
+@@ -243,7 +244,7 @@
+ uctx->uninst_set->dbpkgs)) {
+
+ DBGF("%s: satisfied by db\n", capreq_snprintf_s(req));
+- msg_i(3, indent, "%s: satisfied by db\n", capreq_snprintf_s(req));
++ msg_i(3, indent, " %s: satisfied by db\n", capreq_snprintf_s(req));
+
+ } else if (!uctx->ts->getop(uctx->ts, POLDEK_OP_FOLLOW)) {
+ logn(LOGERR, _("%s (cap %s) is required by %s"),
+@@ -402,7 +403,8 @@
+
+ static
+ int do_resolve_package(struct uninstall_ctx *uctx, struct poldek_ts *ts,
+- const char *mask, const struct capreq *cr)
++ const char *mask, const struct capreq *cr,
++ const char *arch)
+ {
+ tn_array *dbpkgs;
+ int i, nmatches = 0;
+@@ -446,6 +448,12 @@
+ pkg_evr_match_req(dbpkg, cr, POLDEK_MA_PROMOTE_REQEPOCH))
+ matched = 1;
+ }
++
++ if (matched && arch) {
++ const char *dbarch = pkg_arch(dbpkg);
++ matched = n_str_eq(arch, dbarch ? dbarch : "none");
++ }
++
+ }
+
+ if (matched) {
+@@ -459,7 +467,7 @@
+ }
+
+ static int resolve_package(struct uninstall_ctx *uctx, struct poldek_ts *ts,
+- const char *mask)
++ const char *mask, const char *arch)
+ {
+ char *p;
+ struct capreq *cr, *cr_evr;
+@@ -491,7 +499,7 @@
+ }
+ }
+
+- if (do_resolve_package(uctx, ts, mask, cr))
++ if (do_resolve_package(uctx, ts, mask, cr, arch))
+ resolved = 1;
+
+ if (cr_evr)
+@@ -500,6 +508,58 @@
+ return resolved;
+ }
+
++static int resolve_mask(struct uninstall_ctx *uctx, struct poldek_ts *ts,
++ const char *mask)
++{
++ char *p, *tmp;
++ const char *n, *v, *r;
++ char nmask[256];
++ int32_t e = 0;
++ int matched = 0;
++
++ msgn(2, "Trying %s\n", mask);
++ if (resolve_package(uctx, ts, mask, NULL))
++ return 1;
++
++ if ((p = strchr(mask, '-')) == NULL) /* try N-[E:]V */
++ return 0;
++
++ /* try N-[E:]V-R */
++ n_strdupap(mask, &tmp);
++ p = strrchr(tmp, '-');
++ *p = '#';
++
++ msgn(2, " Trying %s\n", tmp);
++
++ if (resolve_package(uctx, ts, tmp, NULL))
++ return 1;
++
++ n_strdupap(mask, &tmp);
++ if (poldek_util_parse_nevr(tmp, &n, &e, &v, &r)) {
++ if (e)
++ n_snprintf(nmask, sizeof(nmask), "%s#%d:%s-%s", n, e, v, r);
++ else
++ n_snprintf(nmask, sizeof(nmask), "%s#%s-%s", n, v, r);
++
++ msgn(2, " Trying %s\n", nmask);
++ DBGF("try %s => %s (%s, %s, %s)\n", mask, nmask, n, v, r);
++ matched = resolve_package(uctx, ts, nmask, NULL);
++
++ if (!matched && (p = strchr(r, '.'))) { /* try N-[E:]-V-R.ARCH */
++ *p = '\0';
++ p++;
++
++ if (e)
++ n_snprintf(nmask, sizeof(nmask), "%s#%d:%s-%s", n, e, v, r);
++ else
++ n_snprintf(nmask, sizeof(nmask), "%s#%s-%s", n, v, r);
++ msgn(2, " Trying %s (arch=%s)\n", nmask, p);
++ matched = resolve_package(uctx, ts, nmask, p);
++ }
++ }
++
++ return matched;
++}
+
+ static int resolve_packages(struct uninstall_ctx *uctx, struct poldek_ts *ts)
+ {
+@@ -509,51 +569,11 @@
+ masks = poldek_ts_get_args_asmasks(ts, 1);
+
+ for (i=0; i < n_array_size(masks); i++) {
+- char *mask = n_array_nth(masks, i);
+- int matched = 0;
+-
+- msgn(2, "Trying %s\n", mask);
+- if (resolve_package(uctx, ts, mask)) {
+- matched = 1;
+-
+- } else {
+- char *p;
+-
+- if ((p = strchr(mask, '-'))) { /* try N-[E:]V */
+- char *tmp;
+- n_strdupap(mask, &tmp);
+-
+- p = strrchr(tmp, '-');
+- *p = '#';
++ char *mask = n_array_nth(masks, i);
+
+- msgn(2, " Trying %s\n", tmp);
+-
+- if (resolve_package(uctx, ts, tmp)) {
+- matched = 1;
+-
+- } else { /* try N-[E:]V-R */
+- const char *n, *v, *r;
+- char nmask[256];
+- int32_t e = 0;
+-
+- n_strdupap(mask, &tmp);
+- if (poldek_util_parse_nevr(tmp, &n, &e, &v, &r)) {
+- if (e)
+- n_snprintf(nmask, sizeof(nmask), "%s#%d:%s-%s", n, e, v, r);
+- else
+- n_snprintf(nmask, sizeof(nmask), "%s#%s-%s", n, v, r);
+-
+- msgn(2, " Trying %s\n", nmask);
+- DBGF("try %s => %s (%s, %s, %s)\n", mask, nmask, n, v, r);
+- matched = resolve_package(uctx, ts, nmask);
+- }
+- }
+- }
+-
+- if (!matched) {
+- logn(LOGERR, _("%s: no such package"), mask);
+- nerr++;
+- }
++ if (!resolve_mask(uctx, ts, mask)) {
++ logn(LOGERR, _("%s: no such package"), mask);
++ nerr++;
+ }
+ }
+
================================================================
Index: SOURCES/poldek-bug-5774.patch
diff -u /dev/null SOURCES/poldek-bug-5774.patch:1.1
--- /dev/null Sun Apr 2 22:24:29 2006
+++ SOURCES/poldek-bug-5774.patch Sun Apr 2 22:24:23 2006
@@ -0,0 +1,25 @@
+===================================================================
+RCS file: /cvsroot/poldek/poldek/vfile/vfetch.c,v
+retrieving revision 1.13
+retrieving revision 1.14
+diff -u -r1.13 -r1.14
+--- poldek/poldek/vfile/vfetch.c 2005/05/15 15:47:00 1.13
++++ poldek/poldek/vfile/vfetch.c 2006/04/02 19:49:12 1.14
+@@ -11,7 +11,7 @@
+ */
+
+ /*
+- $Id$
++ $Id$
+ */
+ #ifdef HAVE_CONFIG_H
+ # include "config.h"
+@@ -299,7 +299,7 @@
+ snprintf(url, sizeof(url), req->url);
+ vf_request_free(req);
+ req = NULL;
+- rc = vf_fetch(req->url, destdir, flags, NULL);
++ rc = vf_fetch(url, destdir, flags, NULL);
+ }
+ }
+ if (req)
================================================================
More information about the pld-cvs-commit
mailing list