Author: mlschroe Date: Fri Apr 4 21:43:12 2008 New Revision: 9388 URL: http://svn.opensuse.org/viewcvs/zypp?rev=9388&view=rev Log: - support REL_ARCH Modified: trunk/sat-solver/src/pool.c trunk/sat-solver/src/pool.h trunk/sat-solver/src/poolid.c Modified: trunk/sat-solver/src/pool.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.c?rev=9388&r1=9387&r2=9388&view=diff ============================================================================== --- trunk/sat-solver/src/pool.c (original) +++ trunk/sat-solver/src/pool.c Fri Apr 4 21:43:12 2008 @@ -423,6 +423,7 @@ int flags = rd->flags; Id pid, *pidp; Id p, *pp, *pp2, *pp3; + int i; d = GETRELID(d); queue_init_buffer(&plist, buf, sizeof(buf)/sizeof(*buf)); @@ -453,6 +454,11 @@ case REL_NAMESPACE: if (pool->nscallback) { + /* ask callback which packages provide the dependency + * 0: none + * 1: the system (aka SYSTEMSOLVABLE) + * >1: a set of packages, stored as offset on whatprovidesdata + */ p = pool->nscallback(pool, pool->nscallbackdata, name, evr); if (p > 1) { @@ -464,6 +470,20 @@ queue_push(&plist, SYSTEMSOLVABLE); } break; + case REL_ARCH: + pp = pool_whatprovides(pool, name); + i = 0; + while ((p = *pp++) != 0) + { + Solvable *s = pool->solvables + p; + if (s->arch == evr) + queue_push(&plist, p); + else + i = 1; + } + if (i == 0) + return pp; + break; default: break; } @@ -474,7 +494,13 @@ #endif if (flags && flags < 8) { - FOR_PROVIDES(p, pp, name) + pp = pool_whatprovides(pool, name); + while (ISRELDEP(name)) + { + rd = GETRELDEP(pool, name); + name = rd->name; + } + while ((p = *pp++) != 0) { #if 0 POOL_DEBUG(DEBUG_1, "addrelproviders: checking package %s\n", id2str(pool, pool->p[p].name)); Modified: trunk/sat-solver/src/pool.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.h?rev=9388&r1=9387&r2=9388&view=diff ============================================================================== --- trunk/sat-solver/src/pool.h (original) +++ trunk/sat-solver/src/pool.h Fri Apr 4 21:43:12 2008 @@ -133,6 +133,7 @@ #define REL_OR 17 #define REL_WITH 18 #define REL_NAMESPACE 19 +#define REL_ARCH 20 #if !defined(__GNUC__) && !defined(__attribute__) # define __attribute__(x) Modified: trunk/sat-solver/src/poolid.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/poolid.c?rev=9388&r1=9387&r2=9388&view=diff ============================================================================== --- trunk/sat-solver/src/poolid.c (original) +++ trunk/sat-solver/src/poolid.c Fri Apr 4 21:43:12 2008 @@ -166,6 +166,8 @@ return " WITH "; case REL_NAMESPACE: return " NAMESPACE "; + case REL_ARCH: + return "."; default: break; } -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org