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