From: Michael Schroeder Date: Wed, 31 Oct 2012 11:05:35 +0000 (+0100) Subject: fix .src matching .src and .nosrc packages X-Git-Tag: BASE-SuSE-Code-12_3-Branch~199 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=084fe5bb77898536d192565c0a392561dff647b1;p=thirdparty%2Flibsolv.git fix .src matching .src and .nosrc packages --- diff --git a/src/pool.c b/src/pool.c index 4d33e8b3..6116f02c 100644 --- a/src/pool.c +++ b/src/pool.c @@ -550,7 +550,10 @@ pool_match_nevr_rel(Pool *pool, Solvable *s, Id d) { case REL_ARCH: if (s->arch != evr) - return 0; + { + if (evr != ARCH_SRC || s->arch != ARCH_NOSRC) + return 0; + } return pool_match_nevr(pool, s, name); case REL_OR: if (pool_match_nevr(pool, s, name)) @@ -741,12 +744,14 @@ pool_addrelproviders(Pool *pool, Id d) * we have to iterate over the solvables as src packages do not * provide anything, thus they are not indexed in our * whatprovides hash */ - if (evr == ARCH_SRC) + if (evr == ARCH_SRC || evr == ARCH_NOSRC) { Solvable *s; for (p = 1, s = pool->solvables + p; p < pool->nsolvables; p++, s++) { - if (s->arch != ARCH_SRC && s->arch != ARCH_NOSRC) + if (!s->repo) + continue; + if (s->arch != evr && s->arch != ARCH_NOSRC) continue; if (pool_match_nevr(pool, s, name)) queue_push(&plist, p);