Author: mlschroe Date: Wed Jan 30 15:56:38 2008 New Revision: 8413 URL: http://svn.opensuse.org/viewcvs/zypp?rev=8413&view=rev Log: - use namespace instead of solvable for languages (breaks some test cases, solv files have to be regenerated) Modified: trunk/sat-solver/src/pool.c trunk/sat-solver/src/pool.h trunk/sat-solver/src/repo.c trunk/sat-solver/src/solver.c trunk/sat-solver/testsuite/deptestomatic.c Modified: trunk/sat-solver/src/pool.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.c?rev=8413&r1=8412&r2=8413&view=diff ============================================================================== --- trunk/sat-solver/src/pool.c (original) +++ trunk/sat-solver/src/pool.c Wed Jan 30 15:56:38 2008 @@ -55,6 +55,7 @@ "namespace:installed", "namespace:modalias", "namespace:splitprovides", + "namespace:language", "system:system", "src", "nosrc", Modified: trunk/sat-solver/src/pool.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.h?rev=8413&r1=8412&r2=8413&view=diff ============================================================================== --- trunk/sat-solver/src/pool.h (original) +++ trunk/sat-solver/src/pool.h Wed Jan 30 15:56:38 2008 @@ -47,15 +47,16 @@ #define NAMESPACE_INSTALLED 18 #define NAMESPACE_MODALIAS 19 #define NAMESPACE_SPLITPROVIDES 20 -#define SYSTEM_SYSTEM 21 -#define ARCH_SRC 22 -#define ARCH_NOSRC 23 -#define ARCH_NOARCH 24 -#define REPODATA_EXTERNAL 25 -#define REPODATA_KEYS 26 -#define REPODATA_LOCATION 27 +#define NAMESPACE_LANGUAGE 21 +#define SYSTEM_SYSTEM 22 +#define ARCH_SRC 23 +#define ARCH_NOSRC 24 +#define ARCH_NOARCH 25 +#define REPODATA_EXTERNAL 26 +#define REPODATA_KEYS 27 +#define REPODATA_LOCATION 28 -#define ID_NUM_INTERNAL 28 +#define ID_NUM_INTERNAL 29 /* well known solvable */ Modified: trunk/sat-solver/src/repo.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repo.c?rev=8413&r1=8412&r2=8413&view=diff ============================================================================== --- trunk/sat-solver/src/repo.c (original) +++ trunk/sat-solver/src/repo.c Wed Jan 30 15:56:38 2008 @@ -346,9 +346,14 @@ dep = p + 1; continue; } - strncpy(dep - 9, "language:", 9); *p++ = 0; +#if 0 + strncpy(dep - 9, "language:", 9); idl = str2id(pool, dep - 9, 1); +#else + idl = str2id(pool, dep, 1); + idl = rel2id(pool, NAMESPACE_LANGUAGE, idl, REL_NAMESPACE, 1); +#endif if (id) id = rel2id(pool, id, idl, REL_OR, 1); else @@ -360,8 +365,13 @@ for (p = dep; *p && *p != ')'; p++) ; *p = 0; +#if 0 strncpy(dep - 9, "language:", 9); idl = str2id(pool, dep - 9, 1); +#else + idl = str2id(pool, dep, 1); + idl = rel2id(pool, NAMESPACE_LANGUAGE, idl, REL_NAMESPACE, 1); +#endif if (id) id = rel2id(pool, id, idl, REL_OR, 1); else Modified: trunk/sat-solver/src/solver.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/solver.c?rev=8413&r1=8412&r2=8413&view=diff ============================================================================== --- trunk/sat-solver/src/solver.c (original) +++ trunk/sat-solver/src/solver.c Wed Jan 30 15:56:38 2008 @@ -2328,9 +2328,9 @@ int qcount; POOL_DEBUG(SAT_DEBUG_STATS, "installing recommended packages\n"); - if (!REGARD_RECOMMENDS_OF_INSTALLED_ITEMS) + if (!solv->dosplitprovides && !REGARD_RECOMMENDS_OF_INSTALLED_ITEMS) { - for (i = 0; i < solv->decisionq.count; i++) + for (i = 1; i < solv->decisionq.count; i++) { p = solv->decisionq.elements[i]; if (p > 0 && pool->solvables[p].repo == solv->installed) @@ -2380,9 +2380,9 @@ queue_pushunique(&dq, i); } } - if (!REGARD_RECOMMENDS_OF_INSTALLED_ITEMS) + if (!solv->dosplitprovides && !REGARD_RECOMMENDS_OF_INSTALLED_ITEMS) { - for (i = 0; i < solv->decisionq.count; i++) + for (i = 1; i < solv->decisionq.count; i++) { p = solv->decisionq.elements[i]; if (p > 0 && pool->solvables[p].repo == solv->installed) Modified: trunk/sat-solver/testsuite/deptestomatic.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/testsuite/deptestomatic.c?rev=8413&r1=8412&r2=8413&view=diff ============================================================================== --- trunk/sat-solver/testsuite/deptestomatic.c (original) +++ trunk/sat-solver/testsuite/deptestomatic.c Wed Jan 30 15:56:38 2008 @@ -174,6 +174,9 @@ Repo *system; // system repo Repo *locales; // where we store locales + Id *languages; + int nlanguages; + Id arch; // set architecture int fixsystem; /* 0/1, if fix system (?) */ @@ -182,6 +185,7 @@ int allowuninstall; /* 0/1, if solver should remove installed package for solution */ int allowvirtualconflicts; /* 0/1, if conflicts specify package names or package provides */ int allowarchchange; /* 0/1, if packages can change architecture */ + int dosplitprovides; /* 0/1, if splitprovides should be looked at */ struct stateswitch *swtab[NUMSTATES]; enum state sbtab[NUMSTATES]; @@ -271,6 +275,13 @@ char dir[PATH_MAX]; int i; + if (name == NAMESPACE_LANGUAGE && !ISRELDEP(evr)) + { + for (i = 0; i < pd->nlanguages; i++) + if (evr == pd->languages[i]) + return 1; + return 0; + } if (name != NAMESPACE_MODALIAS || ISRELDEP(evr)) return 0; if (pd->nmodaliases == -1) @@ -648,6 +659,7 @@ } +#if 0 static void insertLocale( Parsedata *pd, const char *name) { Pool *pool = pd->pool; @@ -686,6 +698,24 @@ queue_push( &(pd->trials), s - pool->solvables ); } +#else + +static void insertLocale(Parsedata *pd, const char *name) +{ + int i; + Id id; + + id = str2id(pd->pool, name, 1); + for (i = 0; i < pd->nlanguages; i++) + if (pd->languages[i] == id) + return; + pd->languages = realloc(pd->languages, (pd->nlanguages + 1) * sizeof(Id)); + pd->languages[pd->nlanguages++] = id; +} + +#endif + + /*----------------------------------------------------------------*/ /* @@ -1134,6 +1164,7 @@ //pd->fixsystem = 1; pd->allowuninstall = 1; pd->allowdowngrade = 1; + pd->dosplitprovides = 1; break; case STATE_UPGRADE: { @@ -1212,6 +1243,7 @@ solv->allowdowngrade = pd->allowdowngrade; solv->allowuninstall = pd->allowuninstall; solv->allowarchchange = pd->allowarchchange; + solv->dosplitprovides = pd->dosplitprovides; solv->noupdateprovide = 1; // Solve ! -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org