make linked package support a condition build option
authorMichael Schroeder <mls@suse.de>
Tue, 15 Oct 2013 11:17:42 +0000 (13:17 +0200)
committerMichael Schroeder <mls@suse.de>
Tue, 15 Oct 2013 11:17:42 +0000 (13:17 +0200)
CMakeLists.txt
src/rules.c
src/solver.c

index 04d6c8e..6151317 100644 (file)
@@ -89,6 +89,7 @@ SET (ENABLE_RPMDB_BYRPMHEADER ON)
 SET (ENABLE_RPMMD ON)
 SET (ENABLE_SUSEREPO ON)
 SET (ENABLE_HELIXREPO ON)
+SET (ENABLE_LINKED_PKGS ON)
 SET (have_system ${have_system}x)
 ENDIF (SUSE)
 
@@ -204,7 +205,8 @@ FOREACH (VAR HAVE_STRCHRNUL HAVE_FOPENCOOKIE HAVE_FUNOPEN WORDS_BIGENDIAN
   HAVE_RPM_DB_H HAVE_PGPDIGGETPARAMS
   ENABLE_RPMDB ENABLE_PUBKEY ENABLE_RPMMD ENABLE_RPMDB_BYRPMHEADER ENABLE_SUSEREPO ENABLE_COMPS
   ENABLE_HELIXREPO ENABLE_MDKREPO ENABLE_ARCHREPO ENABLE_DEBIAN ENABLE_HAIKU
-  ENABLE_LZMA_COMPRESSION ENABLE_BZIP2_COMPRESSION ENABLE_PGPVRFY ENABLE_APPDATA)
+  ENABLE_LZMA_COMPRESSION ENABLE_BZIP2_COMPRESSION ENABLE_PGPVRFY ENABLE_APPDATA
+  ENABLE_LINKED_PKGS)
   IF(${VAR})
     ADD_DEFINITIONS (-D${VAR}=1)
     SET (SWIG_FLAGS ${SWIG_FLAGS} -D${VAR})
index 5461b07..bc0a850 100644 (file)
@@ -435,6 +435,8 @@ addrpmrule(Solver *solv, Id p, Id d, int type, Id dep)
     addrpmruleinfo(solv, p, d, type, dep);
 }
 
+#ifdef ENABLE_LINKED_PKGS
+
 static void
 addlinks(Solver *solv, Solvable *s, Id req, Queue *qr, Id prv, Queue *qp, Map *m, Queue *workq)
 {
@@ -454,6 +456,13 @@ addlinks(Solver *solv, Solvable *s, Id req, Queue *qr, Id prv, Queue *qp, Map *m
       queue_push(workq, s - pool->solvables);
       return;
     }
+  if (!m && workq)
+    {
+      /* just push required packages on the work queue */
+      for (i = 0; i < qr->count; i++)
+       queue_push(workq, qr->elements[i]);
+      return;
+    }
 #if 0
   printf("ADDLINKS %s\n -> %s\n", pool_solvable2str(pool, s), pool_dep2str(pool, req));
   for (i = 0; i < qr->count; i++)
@@ -708,6 +717,8 @@ add_package_link(Solver *solv, Solvable *s, Map *m, Queue *workq)
     add_product_link(solv, s, m, workq);
 }
 
+#endif
+
 /*-------------------------------------------------------------------
  * 
  * add (install) rules for solvable
@@ -797,8 +808,10 @@ solver_addrpmrulesforsolvable(Solver *solv, Solvable *s, Map *m)
            }
        }
 
+#ifdef ENABLE_LINKED_PKGS
       /* add pseudo-package <-> real-package links */
       add_package_link(solv, s, m, &workq);
+#endif
 
       /*-----------------------------------------
        * check requires of s
@@ -1019,6 +1032,7 @@ solver_addrpmrulesforsolvable(Solver *solv, Solvable *s, Map *m)
   queue_free(&workq);
 }
 
+#ifdef ENABLE_LINKED_PKGS
 void
 solver_addrpmrulesforlinked(Solver *solv, Map *m)
 {
@@ -1052,6 +1066,7 @@ solver_addrpmrulesforlinked(Solver *solv, Map *m)
     }
   queue_free(&workq);
 }
+#endif
 
 /*-------------------------------------------------------------------
  * 
@@ -2382,6 +2397,7 @@ getrpmruleinfos(Solver *solv, Rule *r, Queue *rq)
   /* also try reverse direction for conflicts */
   if ((r->d == 0 || r->d == -1) && r->w2 < 0)
     solver_addrpmrulesforsolvable(solv, pool->solvables - r->w2, 0);
+#ifdef ENABLE_LINKED_PKGS
   /* check linked packages */
   d = 0;
   if ((r->d == 0 || r->d == -1))
@@ -2397,6 +2413,7 @@ getrpmruleinfos(Solver *solv, Rule *r, Queue *rq)
        break;
       add_package_link(solv, pool->solvables + l, 0, 0);
     }
+#endif
   solv->ruleinfoq = 0;
   queue_shift(rq);
 }
index a6a9b92..fa01e20 100644 (file)
@@ -3301,9 +3301,11 @@ solver_solve(Solver *solv, Queue *job)
   solver_addrpmrulesforweak(solv, &addedmap);
   POOL_DEBUG(SOLV_DEBUG_STATS, "added %d rpm rules because of weak dependencies\n", solv->nrules - oldnrules);
 
+#ifdef ENABLE_LINKED_PKGS
   oldnrules = solv->nrules;
   solver_addrpmrulesforlinked(solv, &addedmap);
   POOL_DEBUG(SOLV_DEBUG_STATS, "added %d rpm rules because of linked packages\n", solv->nrules - oldnrules);
+#endif
 
   /*
    * first pass done, we now have all the rpm rules we need.