From e5fff4bca52642eb714ac51d14347c20433e8c00 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Tue, 15 Oct 2013 13:17:42 +0200 Subject: [PATCH] make linked package support a condition build option --- CMakeLists.txt | 4 +++- src/rules.c | 17 +++++++++++++++++ src/solver.c | 2 ++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 04d6c8e..6151317 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}) diff --git a/src/rules.c b/src/rules.c index 5461b07..bc0a850 100644 --- a/src/rules.c +++ b/src/rules.c @@ -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); } diff --git a/src/solver.c b/src/solver.c index a6a9b92..fa01e20 100644 --- a/src/solver.c +++ b/src/solver.c @@ -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. -- 2.7.4