poldek: poldek/arg_packages.c, poldek/arg_packages.h, poldek/conf....

mis mis at pld-linux.org
Sun Apr 2 21:10:42 CEST 2006


Author: mis                          Date: Sun Apr  2 19:10:41 2006 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- fixed (implemented multilib support in fact) #5767 and (related) #5772
- multilib mode triggered automaticaly by rpm's %_transaction_color
- code cleanups

---- Files affected:
poldek/poldek:
   arg_packages.c (1.24 -> 1.25) , arg_packages.h (1.8 -> 1.9) , conf.c (1.80 -> 1.81) , conf.h (1.15 -> 1.16) , lib_init.c (1.73 -> 1.74) , pkg.c (1.108 -> 1.109) , poldek_intern.h (1.7 -> 1.8) , poldek_ts.c (1.55 -> 1.56) , uninstall.c (1.39 -> 1.40) 

---- Diffs:

================================================================
Index: poldek/poldek/arg_packages.c
diff -u poldek/poldek/arg_packages.c:1.24 poldek/poldek/arg_packages.c:1.25
--- poldek/poldek/arg_packages.c:1.24	Sat Jan  7 02:13:20 2006
+++ poldek/poldek/arg_packages.c	Sun Apr  2 21:10:36 2006
@@ -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: poldek/poldek/arg_packages.h
diff -u poldek/poldek/arg_packages.h:1.8 poldek/poldek/arg_packages.h:1.9
--- poldek/poldek/arg_packages.h:1.8	Wed May 25 17:54:02 2005
+++ poldek/poldek/arg_packages.h	Sun Apr  2 21:10:36 2006
@@ -15,6 +15,7 @@
 
 void arg_packages_clean(struct arg_packages *aps);
 int arg_packages_size(struct arg_packages *aps);
+
 tn_array *arg_packages_get_masks(struct arg_packages *aps, int hashed);
 
 int arg_packages_add_pkgmask(struct arg_packages *aps, const char *mask);

================================================================
Index: poldek/poldek/conf.c
diff -u poldek/poldek/conf.c:1.80 poldek/poldek/conf.c:1.81
--- poldek/poldek/conf.c:1.80	Sat Mar 18 16:27:47 2006
+++ poldek/poldek/conf.c	Sun Apr  2 21:10:36 2006
@@ -1319,7 +1319,7 @@
         return default_v;
 
     if (sscanf(vs, "%d", &v) != 1) {
-        logn(LOGERR, _("invalid value ('%s') of option '%s'"), vs, name);
+        logn(LOGERR, _("invalid value ('%s') of integer option '%s'"), vs, name);
         v = default_v;
     }
     
@@ -1336,7 +1336,7 @@
         return default_v;
 
     if ((bool = poldek_util_parse_bool(v)) < 0) {
-        logn(LOGERR, _("invalid value ('%s') of option '%s'"), v, name);
+        logn(LOGERR, _("invalid value ('%s') of boolean option '%s'"), v, name);
         bool = default_v;
     }
 

================================================================
Index: poldek/poldek/conf.h
diff -u poldek/poldek/conf.h:1.15 poldek/poldek/conf.h:1.16
--- poldek/poldek/conf.h:1.15	Tue Nov  1 20:14:19 2005
+++ poldek/poldek/conf.h	Sun Apr  2 21:10:36 2006
@@ -29,6 +29,7 @@
 
 const char *poldek_conf_get(const tn_hash *htconf, const char *name, int *is_multi);
 int poldek_conf_get_bool(const tn_hash *htconf, const char *name, int default_v);
+int poldek_conf_get_bool3(const tn_hash *htconf, const char *name, int default_v);
 int poldek_conf_get_int(const tn_hash *htconf, const char *name, int default_v);
 tn_array *poldek_conf_get_multi(const tn_hash *htconf, const char *name);
 

================================================================
Index: poldek/poldek/lib_init.c
diff -u poldek/poldek/lib_init.c:1.73 poldek/poldek/lib_init.c:1.74
--- poldek/poldek/lib_init.c:1.73	Tue Nov  1 20:17:04 2005
+++ poldek/poldek/lib_init.c	Sun Apr  2 21:10:36 2006
@@ -98,6 +98,7 @@
     int op;
     int _defaultv;
     int defaultv;
+    int optype;
 };
 
 static tn_array *default_op_map = NULL; /* see build_default_op_map() */
@@ -665,18 +666,25 @@
     p_st_destroy(&pst);
 }
 
+int default_op_map_ent_cmp(struct default_op_map_ent *e1,
+                           struct default_op_map_ent *e2)
+{
+    return strcmp(e1->name, e2->name);
+}
+
 static tn_array *build_default_op_map(void)
 {
     struct poldek_conf_tag *tags = NULL;
     tn_array *op_map;
     int i = 0;
-    struct default_op_map_ent *ent, addon[] = {
-        { 0, "(!no)hold", POLDEK_OP_HOLD,   1,  1  },
-        { 0, "(!no)ingore", POLDEK_OP_IGNORE, 1, 1  }, 
-        { 0, NULL, 0, 0, 0 }
+    struct default_op_map_ent *ent;
+    struct default_op_map_ent addon[] = {
+        { 0, "(!no)hold", POLDEK_OP_HOLD,   1,  1, CONF_TYPE_BOOLEAN  },
+        { 0, "(!no)ingore", POLDEK_OP_IGNORE, 1, 1, CONF_TYPE_BOOLEAN  }, 
+        { 0, NULL, 0, 0, 0, 0 }
     };
     
-    op_map = n_array_new(32, free, NULL);
+    op_map = n_array_new(32, free, (tn_fn_cmp)default_op_map_ent_cmp);
     
     while (poldek_conf_sections[i].name) {
         if (n_str_eq(poldek_conf_sections[i].name, "global")) {
@@ -704,13 +712,16 @@
             ent->_defaultv = poldek_util_parse_bool(tags[i].defaultv);
             ent->defaultv = ent->_defaultv;
             n_assert(ent->defaultv == 0 || ent->defaultv == 1);
+            ent->optype = CONF_TYPE_BOOLEAN;
             
         } else if (tags[i].flags & CONF_TYPE_BOOLEAN3) {
             ent->_defaultv = poldek_util_parse_bool3(tags[i].defaultv);
             n_assert(ent->_defaultv == 0 || ent->_defaultv == 1 ||
                      ent->_defaultv == 2);
-            ent->defaultv = -1;
             
+            ent->defaultv = ent->_defaultv;
+            ent->optype = CONF_TYPE_BOOLEAN3;
+
         } else {
             n_assert(0);
         }
@@ -726,6 +737,7 @@
         ent->name = addon[i].name;
         ent->op = addon[i].op;
         ent->_defaultv = ent->defaultv = addon[i].defaultv;
+        ent->optype = addon[i].optype;
         n_array_push(op_map, ent);
         i++;
     }
@@ -734,7 +746,8 @@
         struct default_op_map_ent *ent = n_array_nth(op_map, i);
         DBGF("%s %d\n", ent->name, ent->_defaultv);
     }
-#endif    
+#endif
+    n_array_sort(op_map);
     return op_map;
 }
 
@@ -750,30 +763,45 @@
         return;
     
     htcnf = poldek_conf_get_section_ht(ctx->htconf, "global");
-    i = 0;
+
     DBGF("ts %p, tsctx %p\n", ts, ctx->ts);
+    DBGF("default_op_map size = %d\n", n_array_size(default_op_map));
 
-    for (i=0; i<n_array_size(default_op_map); i++) {
+    for (i=0; i < n_array_size(default_op_map); i++) {
         struct default_op_map_ent *ent = n_array_nth(default_op_map, i);
+
+        DBGF("op[%d] %s (config %d)\n", i, ent->name,  ent->config);
         
         if (ent->config == 0)   /* omit non-config options */
             continue;
+        
 
         n_assert(ent->defaultv >= 0);
         
         if (poldek_ts_op_touched(ts, ent->op)) { /* modified by cmdl opts */
-            DBGF("  - ldconfig %s(%d) = %d\n", ent->name, ent->op,
+            DBGF(" %d. - ldconfig %s(%d) = %d\n", i, ent->name, ent->op,
                  ts->getop(ts, ent->op));
             
         } else {
+            int v;
+            if (ent->optype == CONF_TYPE_BOOLEAN)
+                v = poldek_conf_get_bool(htcnf, ent->name, ent->defaultv);
             
-            int v = poldek_conf_get_bool(htcnf, ent->name, ent->defaultv);
+            else if (ent->optype == CONF_TYPE_BOOLEAN3)
+                v = poldek_conf_get_bool3(htcnf, ent->name, ent->defaultv);
+            else
+                n_assert(0);
             
-            DBGF("  + ldconfig %s(%d) = %d\n", ent->name, ent->op, v);
+            if (ent->optype == CONF_TYPE_BOOLEAN3 && v == 2) { /* auto */
+                if (ent->defaultv != 0 && ent->defaultv != 1)  
+                    continue;
+                v = ent->defaultv;
+            }
+                    
+            n_assert(v == 0 || v == 1);
+            DBGF(" %d. + ldconfig %s(%d) = %d\n", i, ent->name, ent->op, v);
             poldek_ts_xsetop(ts, ent->op, v, 0);
         }
-        
-        i++;
     }
     
     if (ts->getop(ts, POLDEK_OP_CONFIRM_INST) && poldek_VERBOSE < 1)
@@ -1252,19 +1280,21 @@
                         v = 1;
                     break;
 
-                case POLDEK_OP_MULTILIB: /* NFY */
-                    v = 0;
+                case POLDEK_OP_MULTILIB: /* do not touch, will
+                                            be determined later */
                     break;
                     
                 default:
                     n_assert(0);
             }
+            DBGF("auto %s  = %d\n",  ent->name,  v);
             ent->defaultv = v;
         }
         
-        poldek_ts_xsetop(ts, ent->op, v, 0);
+        if (v != 2)  
+            poldek_ts_xsetop(ts, ent->op, v, 0);
     }
-    
+    DBGF("default_op_map size = %d\n", n_array_size(default_op_map));
     return 1;
 }
 
@@ -1351,6 +1381,54 @@
     return 1;
 }
 
+static void __setup_multilib(struct poldek_ctx *ctx)
+{
+    struct default_op_map_ent *ent, tmp;
+    char     scolor[64];
+    int      color, multilib = 2;
+    
+    
+    if (!pm_conf_get(ctx->pmctx, "%{_transaction_color}", scolor, sizeof(scolor)))
+        return;
+    
+    if (sscanf(scolor, "%u", &color) != 1) 
+        return;
+
+    if (ctx->htconf) {
+        tn_hash *htcnf = poldek_conf_get_section_ht(ctx->htconf, "global");
+        multilib = poldek_conf_get_bool3(htcnf, "multilib", 2);
+    }
+    
+    if (color && multilib == 0) {
+        logn(LOGWARN, _("RPM works in multilib mode, while poldek not"));
+        return;
+        
+    } else if (!color && multilib == 1) {
+        logn(LOGWARN, _("poldek works in multilib mode, while rpm not"));
+        return;
+    }
+
+    if (multilib == 2) {        /* auto */
+        ctx->_rpm_tscolor = color;
+    
+        tmp.name = "multilib";
+        ent = n_array_bsearch(default_op_map, &tmp);
+        n_assert(ent);
+        
+        ent->defaultv = 0;
+        if (color)
+            ent->defaultv = 1;
+
+        if (color)
+            msgn(2, "Enabling multilib mode, rpm's transaction color = %d",
+                 color);
+        
+        DBGF("multilib(auto) = %d\n", ent->defaultv);
+        poldek_ts_xsetop(ctx->ts, ent->op, ent->defaultv, 0);
+    }
+}
+
+
 
 /*  */
 static int setup_pm(struct poldek_ctx *ctx) 
@@ -1362,7 +1440,8 @@
     if (strcmp(pm, "rpm") == 0) {
         ctx->pmctx = pm_new(pm);
         pm_configure(ctx->pmctx, "macros", ctx->ts->rpmacros);
-                         
+        __setup_multilib(ctx);
+        
     } else if (strcmp(pm, "pset") == 0) {
         n_array_sort_ex(ctx->dest_sources, (tn_fn_cmp)source_cmp_no);
         if (n_array_size(ctx->dest_sources) == 0) {

================================================================
Index: poldek/poldek/pkg.c
diff -u poldek/poldek/pkg.c:1.108 poldek/poldek/pkg.c:1.109
--- poldek/poldek/pkg.c:1.108	Sat Mar 18 17:29:00 2006
+++ poldek/poldek/pkg.c	Sun Apr  2 21:10:36 2006
@@ -215,7 +215,6 @@
 
     len += len + 1;             /* for id (nvr) */
     
-    
     if (poldek_conf_MULTILIB && arch) {
         arch_len = strlen(arch); 
         len += arch_len + 1;
@@ -356,7 +355,7 @@
 {
 #if ENABLE_TRACE   
     if (strcmp(pkg->name, "poldek") == 0) {
-        DBGF_F("%p %s (pdir %s, na->refcnt=%d), refcnt=%d (%p)\n",
+        DBGF("%p %s (pdir %s, na->refcnt=%d), refcnt=%d (%p)\n",
                pkg, pkg_snprintf_s(pkg),
                pkg->pkgdir ? pkgdir_idstr(pkg->pkgdir) : "<none>",
                pkg->na ? pkg->na->_refcnt : -1,

================================================================
Index: poldek/poldek/poldek_intern.h
diff -u poldek/poldek/poldek_intern.h:1.7 poldek/poldek/poldek_intern.h:1.8
--- poldek/poldek/poldek_intern.h:1.7	Fri Oct 21 01:11:22 2005
+++ poldek/poldek/poldek_intern.h	Sun Apr  2 21:10:36 2006
@@ -27,7 +27,7 @@
     unsigned         ps_setup_flags;
     struct pkgset    *ps;
     struct pm_ctx    *pmctx;
-
+    int              _rpm_tscolor; /* rpm transaction color */
 //    tn_array       *inst_pkgs;  /* array of installed packages  */
 //    time_t         ts_instpkgs; /* inst_pkgs timestamp */
     

================================================================
Index: poldek/poldek/poldek_ts.c
diff -u poldek/poldek/poldek_ts.c:1.55 poldek/poldek/poldek_ts.c:1.56
--- poldek/poldek/poldek_ts.c:1.55	Wed Oct 26 16:41:05 2005
+++ poldek/poldek/poldek_ts.c	Sun Apr  2 21:10:36 2006
@@ -1036,6 +1036,7 @@
 
     if (rc && !ts->getop(ts, POLDEK_OP_RPMTEST))
         pkgdb_tx_commit(ts->db);
+
     pkgdb_free(ts->db);
     ts->db = NULL;
     return rc;

================================================================
Index: poldek/poldek/uninstall.c
diff -u poldek/poldek/uninstall.c:1.39 poldek/poldek/uninstall.c:1.40
--- poldek/poldek/uninstall.c:1.39	Sat Mar 18 18:03:48 2006
+++ poldek/poldek/uninstall.c	Sun Apr  2 21:10:36 2006
@@ -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;
+        char *mask = n_array_nth(masks, i);
 
-        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 = '#';
-
-                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++;
         }
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/poldek/poldek/arg_packages.c?r1=1.24&r2=1.25&f=u
    http://cvs.pld-linux.org/poldek/poldek/arg_packages.h?r1=1.8&r2=1.9&f=u
    http://cvs.pld-linux.org/poldek/poldek/conf.c?r1=1.80&r2=1.81&f=u
    http://cvs.pld-linux.org/poldek/poldek/conf.h?r1=1.15&r2=1.16&f=u
    http://cvs.pld-linux.org/poldek/poldek/lib_init.c?r1=1.73&r2=1.74&f=u
    http://cvs.pld-linux.org/poldek/poldek/pkg.c?r1=1.108&r2=1.109&f=u
    http://cvs.pld-linux.org/poldek/poldek/poldek_intern.h?r1=1.7&r2=1.8&f=u
    http://cvs.pld-linux.org/poldek/poldek/poldek_ts.c?r1=1.55&r2=1.56&f=u
    http://cvs.pld-linux.org/poldek/poldek/uninstall.c?r1=1.39&r2=1.40&f=u



More information about the pld-cvs-commit mailing list