poldek: poldek/install3/conflicts.c, poldek/install3/ictx.c, polde...

mis mis at pld-linux.org
Wed Jan 30 22:29:40 CET 2008


Author: mis                          Date: Wed Jan 30 21:29:40 2008 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- prevent upgrading packages already beeing removed
- just give up on non-upgradable orphan with unmet deps 
- iset cleanups

---- Files affected:
poldek/poldek/install3:
   conflicts.c (1.2 -> 1.3) , ictx.c (1.1 -> 1.2) , ictx.h (1.1 -> 1.2) , install.c (1.1 -> 1.2) , iset.c (1.2 -> 1.3) , iset.h (1.1 -> 1.2) , mark.c (1.2 -> 1.3) , obsoletes.c (1.2 -> 1.3) , process.c (1.2 -> 1.3) , requirements.c (1.2 -> 1.3) 

---- Diffs:

================================================================
Index: poldek/poldek/install3/conflicts.c
diff -u poldek/poldek/install3/conflicts.c:1.2 poldek/poldek/install3/conflicts.c:1.3
--- poldek/poldek/install3/conflicts.c:1.2	Fri Jan 25 15:24:00 2008
+++ poldek/poldek/install3/conflicts.c	Wed Jan 30 22:29:34 2008
@@ -148,7 +148,7 @@
     tn_array *dbpkgs = NULL;
 
     pkgdb_search(ictx->ts->db, &dbpkgs, PMTAG_CAP, capreq_name(cnfl),
-                 iset_packages(ictx->unset), PKG_LDWHOLE_FLDEPDIRS);
+                 iset_packages_by_recno(ictx->unset), PKG_LDWHOLE_FLDEPDIRS);
 
     if (dbpkgs == NULL)
         return 0;
@@ -217,7 +217,7 @@
     tn_array *dbpkgs = NULL;
 
     pkgdb_search(ictx->ts->db, &dbpkgs, PMTAG_CNFL, capreq_name(cap),
-                 iset_packages(ictx->unset), PKG_LDWHOLE_FLDEPDIRS);
+                 iset_packages_by_recno(ictx->unset), PKG_LDWHOLE_FLDEPDIRS);
 
     if (dbpkgs == NULL)
         return 0;

================================================================
Index: poldek/poldek/install3/ictx.c
diff -u poldek/poldek/install3/ictx.c:1.1 poldek/poldek/install3/ictx.c:1.2
--- poldek/poldek/install3/ictx.c:1.1	Wed Jan 23 23:56:19 2008
+++ poldek/poldek/install3/ictx.c	Wed Jan 30 22:29:35 2008
@@ -227,3 +227,10 @@
     
     ictx->abort = 0;
 }
+
+int i3_stop_processing(struct i3ctx *ictx, int stop) 
+{
+    ictx->abort = stop;
+    return ictx->abort;
+}
+

================================================================
Index: poldek/poldek/install3/ictx.h
diff -u poldek/poldek/install3/ictx.h:1.1 poldek/poldek/install3/ictx.h:1.2
--- poldek/poldek/install3/ictx.h:1.1	Wed Jan 23 23:56:19 2008
+++ poldek/poldek/install3/ictx.h	Wed Jan 30 22:29:35 2008
@@ -28,19 +28,6 @@
 #include "pkgfl.h"
 #include "iset.h"
 
-#define capreq_stra(c, dp)                             \
-    do {                                               \
-        const struct capreq *cc = (c);                 \
-        char  **dptr = (dp);                           \
-        if (!capreq_versioned(cc))                     \
-            *dptr = (char*)capreq_name(cc);            \
-        else {                                         \
-            *dptr = alloca(256);                       \
-            capreq_snprintf(*dptr, 256, cc);           \
-        }                                              \
-    } while (0)
-
-
 struct poldek_ts;
 struct pkgmark_set;
 struct poldek_iinf;
@@ -117,6 +104,14 @@
 
 extern int poldek_conf_MULTILIB;
 
+/* set stop flag */
+int i3_stop_processing(struct i3ctx *ictx, int stop);
+
+#define i3_return_zero_if_stoppped(i3ctx)        \
+    do { if (sigint_reached() || i3ctx->abort)   \
+            return 0;                            \
+    } while(0)
+
 /* mark.c */
 int i3_mark_package(struct i3ctx *ictx, struct pkg *pkg, uint32_t mark);
 int i3_unmark_package(struct i3ctx *ictx, struct pkg *pkg);

================================================================
Index: poldek/poldek/install3/install.c
diff -u poldek/poldek/install3/install.c:1.1 poldek/poldek/install3/install.c:1.2
--- poldek/poldek/install3/install.c:1.1	Wed Jan 23 23:56:19 2008
+++ poldek/poldek/install3/install.c	Wed Jan 30 22:29:35 2008
@@ -196,9 +196,8 @@
             break;
     }
     n_array_free(toinstall);
-        
-    if (ictx->abort || sigint_reached())
-        return 0;
+
+    i3_return_zero_if_stoppped(ictx);
 
     install_summary(ictx);
     pkgdb_close(ts->db); /* release db as soon as possible */

================================================================
Index: poldek/poldek/install3/iset.c
diff -u poldek/poldek/install3/iset.c:1.2 poldek/poldek/install3/iset.c:1.3
--- poldek/poldek/install3/iset.c:1.2	Sun Jan 27 19:28:19 2008
+++ poldek/poldek/install3/iset.c	Wed Jan 30 22:29:35 2008
@@ -36,7 +36,8 @@
 #define PKGMARK_ISET (1 << 20)
 
 struct iset {
-    tn_array             *pkgs;         
+    tn_array             *pkgs;
+    tn_array             *pkgs_by_recno;
     tn_hash              *capcache; /* cache of resolved packages caps */
     struct pkgmark_set   *pms;
 };
@@ -58,18 +59,18 @@
     return iset->pkgs;
 }
 
+const tn_array *iset_packages_by_recno(struct iset *iset)
+{
+    return iset->pkgs_by_recno;
+}
+
 tn_array *iset_packages_in_install_order(struct iset *iset)
 {
     tn_array *pkgs = NULL;
-    void *cmpfn;
-    
-    cmpfn = n_array_ctl_set_cmpfn(iset->pkgs, (tn_fn_cmp)pkg_cmp_name_evr_rev);
     
     packages_order(iset->pkgs, &pkgs, PKGORDER_INSTALL);
     n_assert(pkgs);
     n_assert(n_array_size(pkgs) == n_array_size(iset->pkgs));
-
-    n_array_ctl_set_cmpfn(iset->pkgs, cmpfn);
     return pkgs;
 }
 
@@ -83,7 +84,8 @@
     struct iset *iset; 
 
     iset = n_malloc(sizeof(*iset));
-    iset->pkgs = pkgs_array_new_ex(128, pkg_cmp_recno);
+    iset->pkgs = pkgs_array_new(128);
+    iset->pkgs_by_recno = pkgs_array_new_ex(128, pkg_cmp_recno);
     iset->capcache = n_hash_new(128, NULL);
     iset->pms = pkgmark_set_new(0, 0);
     return iset;
@@ -92,6 +94,7 @@
 void iset_free(struct iset *iset) 
 {
     n_array_free(iset->pkgs);
+    n_array_free(iset->pkgs_by_recno);
     n_hash_free(iset->capcache);
     pkgmark_set_free(iset->pms);
     free(iset);
@@ -101,7 +104,7 @@
 {
     DBGF("add %s\n", pkg_id(pkg));
     n_array_push(iset->pkgs, pkg_link(pkg));
-    
+    n_array_push(iset->pkgs_by_recno, pkg_link(pkg));
     mflag |= PKGMARK_ISET;
     iset_markf(iset, pkg, mflag);
 }
@@ -115,49 +118,52 @@
     
     n_hash_clean(iset->capcache); /* flush all, TODO: remove pkg caps only */
     pkg_clr_mf(iset->pms, pkg, PKGMARK_ISET);
-    
-    for (i=0; i < n_array_size(iset->pkgs); i++) {
+
+    i = n_array_bsearch_idx(iset->pkgs, pkg);
+    if (i >= 0) {
         struct pkg *p = n_array_nth(iset->pkgs, i);
-        if (pkg_cmp_name_evr(p, pkg) == 0) {
-            if (!poldek_conf_MULTILIB)
-                break;
-            
-            if (pkg_cmp_arch(p, pkg) == 0)
-                break;
-        }
-    }
+        
+        n_assert(pkg_cmp_name_evr(p, pkg) == 0);
+        
+        if (poldek_conf_MULTILIB)
+            n_assert(pkg_cmp_arch(p, pkg) == 0);
 
-    if (i < n_array_size(iset->pkgs)) /* found */
         n_array_remove_nth(iset->pkgs, i);
     
+        /* recreate pkgs_by_recno (cheaper than manually find item to remove) */
+        n_array_free(iset->pkgs_by_recno);
+        iset->pkgs_by_recno = n_array_dup(iset->pkgs, (tn_fn_dup)pkg_link);
+        n_array_ctl_set_cmpfn(iset->pkgs_by_recno, (tn_fn_cmp)pkg_cmp_recno);
+    }
+    
     n_assert(!iset_has_pkg(iset, pkg));
     return 1;
 }
 
-int iset_has_pkg_recno(struct iset *iset, int recno) 
+int iset_has_pkg(struct iset *iset, const struct pkg *pkg)
 {
-    struct pkg tmpkg;
-    tmpkg.recno = recno;
-    return n_array_bsearch(iset->pkgs, &tmpkg) != NULL;
+    return iset_ismarkedf(iset, pkg, PKGMARK_ISET);
 }
 
-int iset_has_pkg(struct iset *iset, const struct pkg *pkg)
+struct pkg *iset_has_kind_of_pkg(struct iset *iset, const struct pkg *pkg)
 {
     int i;
+
+    i = n_array_bsearch_idx_ex(iset->pkgs, pkg, (tn_fn_cmp)pkg_cmp_name);
+    if (i < 0)
+        return NULL;
     
-    return iset_ismarkedf(iset, pkg, PKGMARK_ISET);
-    
-    for (i=0; i<n_array_size(iset->pkgs); i++) {
+    for (; i < n_array_size(iset->pkgs); i++) {
         struct pkg *p = n_array_nth(iset->pkgs, i);
-        if (pkg_cmp_name_evr(p, pkg) == 0) {
-            if (poldek_conf_MULTILIB)
-                return pkg_cmp_arch(p, pkg) == 0;
-            else
-                return 1;
-        }
+        
+        if (pkg_is_kind_of(p, pkg))
+            return p;
+        
+        if (n_str_ne(p->name, pkg->name))
+            return NULL;
     }
     
-    return 0;
+    return NULL;
 }
 
 int iset_provides(struct iset *iset, const struct capreq *cap)
@@ -237,7 +243,6 @@
     int i;
 
     printf("iset dump %p: ",  iset);
-    
         
     for (i=0; i<n_array_size(iset->pkgs); i++) {
         struct pkg *pkg = n_array_nth(iset->pkgs, i);

================================================================
Index: poldek/poldek/install3/iset.h
diff -u poldek/poldek/install3/iset.h:1.1 poldek/poldek/install3/iset.h:1.2
--- poldek/poldek/install3/iset.h:1.1	Wed Jan 23 23:56:19 2008
+++ poldek/poldek/install3/iset.h	Wed Jan 30 22:29:35 2008
@@ -22,6 +22,9 @@
 
 const struct pkgmark_set *iset_pms(struct iset *iset);
 const tn_array *iset_packages(struct iset *iset);
+
+/* return array sorted by package recno */
+const tn_array *iset_packages_by_recno(struct iset *iset);
 tn_array *iset_packages_in_install_order(struct iset *iset);
 
 
@@ -30,5 +33,6 @@
 
 int iset_provides(struct iset *iset, const struct capreq *cap);
 int iset_has_pkg(struct iset *iset, const struct pkg *pkg);
+struct pkg *iset_has_kind_of_pkg(struct iset *iset, const struct pkg *pkg);
 
 #endif    

================================================================
Index: poldek/poldek/install3/mark.c
diff -u poldek/poldek/install3/mark.c:1.2 poldek/poldek/install3/mark.c:1.3
--- poldek/poldek/install3/mark.c:1.2	Sun Jan 27 19:30:15 2008
+++ poldek/poldek/install3/mark.c	Wed Jan 30 22:29:35 2008
@@ -69,7 +69,7 @@
     rc = i3_is_pkg_installable(ictx->ts, pkg,
                                pkg_is_marked_i(ictx->ts->pms, pkg));
     if (rc <= 0) {
-        ictx->abort = 1;
+        i3_stop_processing(ictx, 1);
         return 0;
     }
     

================================================================
Index: poldek/poldek/install3/obsoletes.c
diff -u poldek/poldek/install3/obsoletes.c:1.2 poldek/poldek/install3/obsoletes.c:1.3
--- poldek/poldek/install3/obsoletes.c:1.2	Sun Jan 27 19:36:06 2008
+++ poldek/poldek/install3/obsoletes.c	Wed Jan 30 22:29:35 2008
@@ -87,7 +87,7 @@
         }
 #endif
         n = pkgdb_q_what_requires(db, orphaned, cap,
-                                  iset_packages(ictx->unset),
+                                  iset_packages_by_recno(ictx->unset),
                                   ldflags, ma_flags);
         norphaned += n;
         trace(indent + 1, "%s: %d package(s) orphaned", capreq_snprintf_s(cap), n);
@@ -217,7 +217,7 @@
         getflags |= PKGDB_GETF_OBSOLETEDBY_REV;
 
     
-    obsoleted = get_obsoletedby_pkg(db, iset_packages(unset), pkg,
+    obsoleted = get_obsoletedby_pkg(db, iset_packages_by_recno(unset), pkg,
                                     getflags, PKG_LDWHOLE_FLDEPDIRS);
     
     n = obsoleted ? n_array_size(obsoleted) : 0;
@@ -306,7 +306,7 @@
     
         for (i=0; i < n_array_size(orphans); i++) {
             struct orphan *o = n_array_nth(orphans, i);
-            i3_process_orphan(indent, ictx, o);
+            i3_process_orphan(indent + 2, ictx, o);
         }
     }
     

================================================================
Index: poldek/poldek/install3/process.c
diff -u poldek/poldek/install3/process.c:1.2 poldek/poldek/install3/process.c:1.3
--- poldek/poldek/install3/process.c:1.2	Sun Jan 27 19:33:34 2008
+++ poldek/poldek/install3/process.c	Wed Jan 30 22:29:35 2008
@@ -88,7 +88,7 @@
 {
     int rc = 1;
     
-    trace(indent, "PROCESS %s as NEW", pkg_id(i3pkg->pkg));
+    trace(indent, "DOPROCESS %s as NEW", pkg_id(i3pkg->pkg));
     
     n_assert(!pkg_isset_mf(ictx->processed, i3pkg->pkg, PKGMARK_GRAY));
     pkg_set_mf(ictx->processed, i3pkg->pkg, PKGMARK_GRAY);
@@ -131,8 +131,7 @@
 {
     struct i3pkg *i3pkg = i3pkg_new(pkg, 0, NULL, NULL, I3PKGBY_HAND);
 
-    if (ictx->abort || sigint_reached())
-        return 0;
+    i3_return_zero_if_stoppped(ictx);
 
     if (pkg_isset_mf(ictx->processed, pkg, PKGMARK_GRAY))
         return 1;
@@ -148,13 +147,14 @@
     unsigned   markflag = PKGMARK_DEP;
     struct pkg *pkg = i3pkg->pkg;
     int rc;
-    
-    if (ictx->abort || sigint_reached())
-        return 0;
 
-    if (pkg_isset_mf(ictx->processed, pkg, PKGMARK_GRAY))
-        return 1;
+    i3_return_zero_if_stoppped(ictx);
 
+    if (pkg_isset_mf(ictx->processed, pkg, PKGMARK_GRAY)) {
+        tracef(indent, "DONOT PROCESSING %s as NEW", pkg_id(pkg));
+        return 1;
+    }
+    
     trace(indent, "PROCESS %s as NEW", pkg_id(pkg));
     n_assert(!pkg_isset_mf(ictx->processed, pkg, PKGMARK_GRAY));
     
@@ -184,8 +184,7 @@
 
 int i3_process_orphan(int indent, struct i3ctx *ictx, struct orphan *o) 
 {
-    if (ictx->abort || sigint_reached())
-        return 0;
+    i3_return_zero_if_stoppped(ictx);
 
     indent += 2;
     trace(indent, "PROCESS %s as ORPHAN", pkg_id(o->pkg));

================================================================
Index: poldek/poldek/install3/requirements.c
diff -u poldek/poldek/install3/requirements.c:1.2 poldek/poldek/install3/requirements.c:1.3
--- poldek/poldek/install3/requirements.c:1.2	Sun Jan 27 19:33:34 2008
+++ poldek/poldek/install3/requirements.c	Wed Jan 30 22:29:35 2008
@@ -144,10 +144,10 @@
         if (ictx->ts->getop(ictx->ts, POLDEK_OP_OBSOLETES)) {
             /* anybody provides, or obsoletes me? */
             p = find_successor_by(indent, ictx, pkg, PS_SEARCH_CAP);
-            if (p == NULL)
+            if (p == NULL) {
                 p = find_successor_by(indent, ictx, pkg, PS_SEARCH_OBSL);
-            
-            by_obsoletes = 1;
+                by_obsoletes = 1;
+            }
         }
     }
     
@@ -171,31 +171,56 @@
 
 
 static int try_to_upgrade_orphan(int indent, struct i3ctx *ictx,
-                                 struct pkg *pkg, struct capreq *req)
+                                 struct pkg *pkg, struct capreq *req,
+                                 const struct pkg *req_satisfier)
 {
     struct successor succ;
-    struct pkg *p;
+    struct pkg *sucpkg;
+    char *message = NULL;
     int install = 0;
-
-    tracef(indent, "%s req: %s\n", pkg_id(pkg), capreq_snprintf_s(req));
-
-    if ((p = find_successor(indent, ictx, pkg, &succ)) == NULL)
-        return 0;
     
-    /* already in inset or will be there soon  */
-    if (i3_is_marked(ictx, p) || pkg_is_marked_i(ictx->ts->pms, p))
-        install = 1;
+    tracef(indent, "%s req: %s (satisfied=%s)", pkg_id(pkg),
+           capreq_stra(req), req_satisfier ? "yes": "no");
     
-    else if (succ.by_obsoletes && !i3_is_marked(ictx, p))
+    if ((sucpkg = find_successor(indent + 2, ictx, pkg, &succ)) == NULL) {
+        if (!req_satisfier) {
+            /* no successor and unmet req => pkg is candidate to be removed */
+            ;
+        }
+        return 0;
+    }
+
+    /* already in inset or will be there soon */
+    if (i3_is_marked(ictx, sucpkg) || pkg_is_marked_i(ictx->ts->pms, sucpkg)) {
+        message = "already marked";
         install = 1;
-    
-    else if (ictx->ts->getop(ictx->ts, POLDEK_OP_GREEDY)) { 
-        n_assert(!i3_is_marked(ictx, p));
+        goto l_end;
+    }
+
+    if (pkg_requires_cap(sucpkg, req)) {
+        message = "successor requires req too";
+        install = 0;
+        
+    } else {
+        if (succ.by_obsoletes)
+            message = "by Obsoletes tag";
+
+        else if (ictx->ts->getop(ictx->ts, POLDEK_OP_GREEDY)) 
+            message = "upgrade resolves req";
+
         install = 1;
     }
     
-    if (install) {
-        struct i3pkg *i3tomark = i3pkg_new(p, 0, pkg, req, I3PKGBY_GREEDY);
+l_end:
+    if (!install) {
+        tracef(indent, "- %s: do not upgrading orphan%s%s%s", pkg_id(sucpkg),
+               message ? " (":"", message ? message:"", message ? ")":"");
+        
+    } else {
+        struct i3pkg *i3tomark = i3pkg_new(sucpkg, 0, pkg, req, I3PKGBY_GREEDY);
+
+        n_assert(message);
+        tracef(indent, "- %s: upgrading orphan (%s)", pkg_id(sucpkg), message);
         i3_process_package(indent, ictx, i3tomark);
     }
 
@@ -204,16 +229,17 @@
 
 
 static int process_orphan_req(int indent, struct i3ctx *ictx,
-                               struct pkg *pkg, struct capreq *req)
+                              struct pkg *pkg, struct capreq *req)
+
 {
     struct poldek_ts *ts = ictx->ts; /* just for short */
-    struct pkg       *tomark = NULL;
+    struct pkg       *tomark = NULL, *toremove = NULL;
     tn_array         *candidates = NULL;
-    char             *strreq;
-    int              rc = 1, indentt = indent + 1;
+    const char       *strreq;
+    int              rc = 1, giveup = 0, indentt = indent + 1;
 
-    capreq_stra(req, &strreq);
-    tracef(indent, "%s, req: %s", pkg_id(pkg), strreq);
+    strreq = capreq_stra(req);
+    tracef(indent, "%s, req: %s (%s)", pkg_id(pkg), capreq_snprintf_s(req), strreq);
 
     /* skip foreign (not provided by uninstalled) dependencies */
     if (!iset_provides(ictx->unset, req)) {
@@ -239,23 +265,31 @@
         msgn_i(3, indent, "%s: satisfied by db", strreq);
         goto l_end;
     }
-
+    
     /* try upgrade orphan */
     if (ts->getop(ts, POLDEK_OP_GREEDY)) {
-        if (try_to_upgrade_orphan(indentt, ictx, pkg, req))
+        if (try_to_upgrade_orphan(indentt + 1, ictx, pkg, req, tomark))
             goto l_end;
     }
 
+    if (tomark && (toremove = iset_has_kind_of_pkg(ictx->unset, tomark))) {
+        tracef(indent, "%s is marked for removal (%s)", pkg_id(tomark),
+               pkg_id(toremove));
+        giveup = 1;
+        i3_stop_processing(ictx, 1); /* loop, stop processing */
+    }  
+
     if (n_array_size(candidates) == 0)
         n_array_cfree(&candidates);
     else /* if they exists, must be more than one */
         n_assert(n_array_size(candidates) > 1);
     
-    trace(indentt, "- %s: %s candidate is %s", pkg_id(pkg), strreq,
-          tomark ? pkg_id(tomark) : "(null)");
+    trace(indentt, "- %s: %s candidate is %s (installable=%s)", pkg_id(pkg),
+          strreq, tomark ? pkg_id(tomark) : "none",
+          toremove ? "no" : tomark ? "yes" : "-");
     
     /* to-mark candidates */
-    if (tomark && ts->getop(ts, POLDEK_OP_FOLLOW)) {
+    if (tomark && toremove == NULL && ts->getop(ts, POLDEK_OP_FOLLOW)) {
         struct pkg *real_tomark = tomark;
         struct i3pkg *i3tomark;
         
@@ -263,7 +297,7 @@
             real_tomark = i3_choose_equiv(ts, req, candidates, tomark);
             
             if (real_tomark == NULL) { /* user abort */
-                ictx->abort = 1;
+                i3_stop_processing(ictx, 1);
                 rc = 0;
                 goto l_end;
             }
@@ -273,10 +307,14 @@
         i3_process_package(indent, ictx, i3tomark);
         goto l_end;
     }
-            
+    
     /* unresolved req */
-    i3_error(ictx, pkg, I3ERR_REQUIREDBY,
-             _("%s is required by %s"), strreq, pkg_id(pkg));
+    if (giveup)
+        i3_error(ictx, pkg, I3ERR_REQUIREDBY,
+                 _("%s is required by %s, give up"), strreq, pkg_id(pkg));
+    else
+        i3_error(ictx, pkg, I3ERR_REQUIREDBY, _("%s is required by %s"),
+                 strreq, pkg_id(pkg));
     
  l_end:
     n_array_cfree(&candidates);
@@ -315,6 +353,7 @@
         }
         
         process_orphan_req(indent, ictx, pkg, req);
+        i3_return_zero_if_stoppped(ictx);
     }
 
     return 1;
@@ -340,11 +379,11 @@
     struct poldek_ts *ts = ictx->ts; /* just for short */
     struct pkg       *pkg, *tomark = NULL;
     tn_array         *candidates = NULL;
-    char             *strreq, *errfmt;
+    const char       *strreq, *errfmt;
     int              rc = 1, indentt = indent + 1;
     
     pkg = i3pkg->pkg;
-    capreq_stra(req, &strreq);
+    strreq = capreq_stra(req);
     
     tracef(indent, "%s, req: %s", pkg_id(pkg), strreq);
     
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/conflicts.c?r1=1.2&r2=1.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/ictx.c?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/ictx.h?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/install.c?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/iset.c?r1=1.2&r2=1.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/iset.h?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/mark.c?r1=1.2&r2=1.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/obsoletes.c?r1=1.2&r2=1.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/process.c?r1=1.2&r2=1.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/requirements.c?r1=1.2&r2=1.3&f=u



More information about the pld-cvs-commit mailing list