From: Michael Schroeder Date: Fri, 29 May 2015 11:28:06 +0000 (+0200) Subject: Add POOL_FLAG_NOWHATPROVIDESAUX pool flag X-Git-Tag: 0.6.11~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=005f92b70e411beb64c2404c3b131d0ff874a7cf;p=thirdparty%2Flibsolv.git Add POOL_FLAG_NOWHATPROVIDESAUX pool flag The whatprovidesaux data takes up a lot of mem, so if mem is rare you can turn it off now. --- diff --git a/ext/testcase.c b/ext/testcase.c index d2b79d63..251cd2fe 100644 --- a/ext/testcase.c +++ b/ext/testcase.c @@ -128,6 +128,7 @@ static struct poolflags2str { { POOL_FLAG_HAVEDISTEPOCH, "havedistepoch", 0 }, { POOL_FLAG_NOOBSOLETESMULTIVERSION, "noobsoletesmultiversion", 0 }, { POOL_FLAG_ADDFILEPROVIDESFILTERED, "addfileprovidesfiltered", 0 }, + { POOL_FLAG_NOWHATPROVIDESAUX, "nowhatprovidesaux", 0 }, { 0, 0, 0 } }; diff --git a/src/pool.c b/src/pool.c index 174a8633..f78f71ad 100644 --- a/src/pool.c +++ b/src/pool.c @@ -194,6 +194,8 @@ pool_get_flag(Pool *pool, int flag) return pool->noobsoletesmultiversion; case POOL_FLAG_ADDFILEPROVIDESFILTERED: return pool->addfileprovidesfiltered; + case POOL_FLAG_NOWHATPROVIDESAUX: + return pool->nowhatprovidesaux; default: break; } @@ -236,6 +238,9 @@ pool_set_flag(Pool *pool, int flag, int value) case POOL_FLAG_ADDFILEPROVIDESFILTERED: pool->addfileprovidesfiltered = value; break; + case POOL_FLAG_NOWHATPROVIDESAUX: + pool->nowhatprovidesaux = value; + break; default: break; } @@ -508,10 +513,13 @@ pool_createwhatprovides(Pool *pool) /* alloc aux vector */ whatprovidesauxdata = 0; - pool->whatprovidesaux = whatprovidesaux = solv_calloc(num, sizeof(Offset)); - pool->whatprovidesauxoff = num; - pool->whatprovidesauxdataoff = off; - pool->whatprovidesauxdata = whatprovidesauxdata = solv_calloc(pool->whatprovidesauxdataoff, sizeof(Id)); + if (!pool->nowhatprovidesaux) + { + pool->whatprovidesaux = whatprovidesaux = solv_calloc(num, sizeof(Offset)); + pool->whatprovidesauxoff = num; + pool->whatprovidesauxdataoff = off; + pool->whatprovidesauxdata = whatprovidesauxdata = solv_calloc(pool->whatprovidesauxdataoff, sizeof(Id)); + } /* now fill data for all provides */ for (i = pool->nsolvables - 1; i > 0; i--) diff --git a/src/pool.h b/src/pool.h index 409de057..42246af2 100644 --- a/src/pool.h +++ b/src/pool.h @@ -160,6 +160,7 @@ struct _Pool { int addfileprovidesfiltered; /* 1: only use filtered file list for addfileprovides */ int addedfileprovides; /* true: application called addfileprovides */ Queue lazywhatprovidesq; /* queue to store old whatprovides offsets */ + int nowhatprovidesaux; /* don't allocate and use the whatprovides aux helper */ #endif }; @@ -195,6 +196,7 @@ struct _Pool { #define POOL_FLAG_NOOBSOLETESMULTIVERSION 8 #define POOL_FLAG_ADDFILEPROVIDESFILTERED 9 #define POOL_FLAG_IMPLICITOBSOLETEUSESCOLORS 10 +#define POOL_FLAG_NOWHATPROVIDESAUX 11 /* ----------------------------------------------- */