KNOWNID(SOLVABLE_SUGGESTS, "solvable:suggests"),
KNOWNID(SOLVABLE_SUPPLEMENTS, "solvable:supplements"),
KNOWNID(SOLVABLE_ENHANCES, "solvable:enhances"),
-KNOWNID(SOLVABLE_FRESHENS, "solvable:freshens"),
KNOWNID(RPM_RPMDBID, "rpm:dbid"),
/* normal requires before this, prereqs after this */
KNOWNID(SOLVABLE_PREREQMARKER, "solvable:prereqmarker"),
pool_addfileprovides_dep(pool, repo->idarraydata + s->supplements, &sf, isfp);
if (s->enhances)
pool_addfileprovides_dep(pool, repo->idarraydata + s->enhances, &sf, isfp);
- if (s->freshens)
- pool_addfileprovides_dep(pool, repo->idarraydata + s->freshens, &sf, isfp);
}
map_free(&sf.seen);
map_free(&isf.seen);
}
Offset
-repo_fix_legacy(Repo *repo, Offset provides, Offset supplements)
+repo_fix_legacy(Repo *repo, Offset provides, Offset supplements, Offset freshens)
{
Pool *pool = repo->pool;
Id id, idp, idl;
}
}
}
- if (!supplements)
- return 0;
- for (i = supplements; repo->idarraydata[i]; i++)
+ if (supplements)
{
- id = repo->idarraydata[i];
- if (ISRELDEP(id))
- continue;
- dep = (char *)id2str(pool, id);
- if (!strncmp(dep, "system:modalias(", 16))
- dep += 7;
- if (!strncmp(dep, "modalias(", 9) && dep[9] && dep[10] && strlen(dep) < sizeof(buf))
+ for (i = supplements; repo->idarraydata[i]; i++)
{
- strcpy(buf, dep);
- p = strchr(buf + 9, ':');
- if (p && p != buf + 9 && strchr(p + 1, ':'))
- {
- *p++ = 0;
- idp = str2id(pool, buf + 9, 1);
- p[strlen(p) - 1] = 0;
- id = str2id(pool, p, 1);
- id = rel2id(pool, NAMESPACE_MODALIAS, id, REL_NAMESPACE, 1);
- id = rel2id(pool, idp, id, REL_AND, 1);
- }
- else
+ id = repo->idarraydata[i];
+ if (ISRELDEP(id))
+ continue;
+ dep = (char *)id2str(pool, id);
+ if (!strncmp(dep, "system:modalias(", 16))
+ dep += 7;
+ if (!strncmp(dep, "modalias(", 9) && dep[9] && dep[10] && strlen(dep) < sizeof(buf))
{
- p = buf + 9;
- p[strlen(p) - 1] = 0;
- id = str2id(pool, p, 1);
- id = rel2id(pool, NAMESPACE_MODALIAS, id, REL_NAMESPACE, 1);
+ strcpy(buf, dep);
+ p = strchr(buf + 9, ':');
+ if (p && p != buf + 9 && strchr(p + 1, ':'))
+ {
+ *p++ = 0;
+ idp = str2id(pool, buf + 9, 1);
+ p[strlen(p) - 1] = 0;
+ id = str2id(pool, p, 1);
+ id = rel2id(pool, NAMESPACE_MODALIAS, id, REL_NAMESPACE, 1);
+ id = rel2id(pool, idp, id, REL_AND, 1);
+ }
+ else
+ {
+ p = buf + 9;
+ p[strlen(p) - 1] = 0;
+ id = str2id(pool, p, 1);
+ id = rel2id(pool, NAMESPACE_MODALIAS, id, REL_NAMESPACE, 1);
+ }
+ if (id)
+ repo->idarraydata[i] = id;
}
- if (id)
- repo->idarraydata[i] = id;
- }
- else if (!strncmp(dep, "packageand(", 11) && strlen(dep) < sizeof(buf))
- {
- strcpy(buf, dep);
- id = 0;
- dep = buf + 11;
- while ((p = strchr(dep, ':')) != 0)
+ else if (!strncmp(dep, "packageand(", 11) && strlen(dep) < sizeof(buf))
{
- if (p == dep)
+ strcpy(buf, dep);
+ id = 0;
+ dep = buf + 11;
+ while ((p = strchr(dep, ':')) != 0)
+ {
+ if (p == dep)
+ {
+ dep = p + 1;
+ continue;
+ }
+ *p++ = 0;
+ idp = str2id(pool, dep, 1);
+ if (id)
+ id = rel2id(pool, id, idp, REL_AND, 1);
+ else
+ id = idp;
+ dep = p;
+ }
+ if (dep[0] && dep[1])
{
- dep = p + 1;
- continue;
+ dep[strlen(dep) - 1] = 0;
+ idp = str2id(pool, dep, 1);
+ if (id)
+ id = rel2id(pool, id, idp, REL_AND, 1);
+ else
+ id = idp;
}
- *p++ = 0;
- idp = str2id(pool, dep, 1);
if (id)
- id = rel2id(pool, id, idp, REL_AND, 1);
- else
- id = idp;
- dep = p;
+ repo->idarraydata[i] = id;
}
- if (dep[0] && dep[1])
+ else if (!strncmp(dep, "filesystem(", 11) && strlen(dep) < sizeof(buf))
{
- dep[strlen(dep) - 1] = 0;
- idp = str2id(pool, dep, 1);
- if (id)
- id = rel2id(pool, id, idp, REL_AND, 1);
- else
- id = idp;
+ strcpy(buf, dep + 11);
+ if ((p = strrchr(buf, ')')) != 0)
+ *p = 0;
+ id = str2id(pool, buf, 1);
+ id = rel2id(pool, NAMESPACE_FILESYSTEM, id, REL_NAMESPACE, 1);
+ repo->idarraydata[i] = id;
}
- if (id)
- repo->idarraydata[i] = id;
- }
- else if (!strncmp(dep, "filesystem(", 11) && strlen(dep) < sizeof(buf))
- {
- strcpy(buf, dep + 11);
- if ((p = strrchr(buf, ')')) != 0)
- *p = 0;
- id = str2id(pool, buf, 1);
- id = rel2id(pool, NAMESPACE_FILESYSTEM, id, REL_NAMESPACE, 1);
- repo->idarraydata[i] = id;
}
}
+ if (freshens && repo->idarraydata[freshens])
+ {
+ Id idsupp = 0, idfresh = 0;
+ if (!supplements)
+ return freshens;
+ for (i = supplements; repo->idarraydata[i]; i++)
+ {
+ if (!idsupp)
+ idsupp = repo->idarraydata[i];
+ else
+ idsupp = rel2id(pool, idsupp, repo->idarraydata[i], REL_OR, 1);
+ }
+ for (i = freshens; repo->idarraydata[i]; i++)
+ {
+ if (!idfresh)
+ idfresh = repo->idarraydata[i];
+ else
+ idfresh = rel2id(pool, idfresh, repo->idarraydata[i], REL_OR, 1);
+ }
+ if (!idsupp)
+ idsupp = idfresh;
+ else
+ idsupp = rel2id(pool, idsupp, idfresh, REL_AND, 1);
+ supplements = repo_addid_dep(repo, 0, idsupp, 0);
+ }
return supplements;
}
{ SOLVABLE_SUGGESTS, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
{ SOLVABLE_SUPPLEMENTS, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
{ SOLVABLE_ENHANCES, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
- { SOLVABLE_FRESHENS, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
{ RPM_RPMDBID, REPOKEY_TYPE_U32, 0, KEY_STORAGE_SOLVABLE },
};
domatch_idarray(s, SOLVABLE_ENHANCES, md, repo->idarraydata + s->enhances);
if (keyname || md->stop > SEARCH_NEXT_KEY)
return;
- case SOLVABLE_FRESHENS:
- if (s->freshens)
- domatch_idarray(s, SOLVABLE_FRESHENS, md, repo->idarraydata + s->freshens);
- if (keyname || md->stop > SEARCH_NEXT_KEY)
- return;
case RPM_RPMDBID:
if (repo->rpmdbid)
{
extern Offset repo_addid(Repo *repo, Offset olddeps, Id id);
extern Offset repo_addid_dep(Repo *repo, Offset olddeps, Id id, Id marker);
extern Offset repo_reserve_ids(Repo *repo, Offset olddeps, int num);
-extern Offset repo_fix_legacy(Repo *repo, Offset provides, Offset supplements);
+extern Offset repo_fix_legacy(Repo *repo, Offset provides, Offset supplements, Offset freshens);
static inline const char *repo_name(const Repo *repo)
{
Repo *repo; // current repo
Repodata *data; // current repo data
Solvable *solvable; // current solvable
+ Offset freshens; // current freshens vector
// package data
int epoch; // epoch (as offset into evrspace)
pd->epoch = 0;
pd->version = 0;
pd->release = 0;
+ pd->freshens = 0;
#if 0
fprintf(stderr, "package #%d\n", s - pool->solvables);
#endif
s->enhances = adddep(pool, pd, s->enhances, atts, 0);
break;
case STATE_FRESHENS:
- s->freshens = 0;
+ pd->freshens = 0;
break;
case STATE_FRESHENSENTRY:
- s->freshens = adddep(pool, pd, s->freshens, atts, 0);
+ pd->freshens = adddep(pool, pd, pd->freshens, atts, 0);
break;
default:
break;
/* ensure self-provides */
if (s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
s->provides = repo_addid_dep(pd->repo, s->provides, rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
- s->supplements = repo_fix_legacy(pd->repo, s->provides, s->supplements);
+ s->supplements = repo_fix_legacy(pd->repo, s->provides, s->supplements, pd->freshens);
+ pd->freshens = 0;
/* see bugzilla bnc#190163 */
const char *flavor = findKernelFlavor(pd, s);
#include "repopack.h"
#define INTERESTED_START SOLVABLE_NAME
-#define INTERESTED_END SOLVABLE_FRESHENS
+#define INTERESTED_END SOLVABLE_ENHANCES
#define SOLV_ERROR_NOT_SOLV 1
#define SOLV_ERROR_UNSUPPORTED 2
s->suggests = ido;
else if (id == SOLVABLE_ENHANCES)
s->enhances = ido;
- else if (id == SOLVABLE_FRESHENS)
- s->freshens = ido;
#if 0
POOL_DEBUG(SAT_DEBUG_STATS, "%s ->\n", id2str(pool, id));
for (; repo->idarraydata[ido]; ido++)
{ SOLVABLE_SUGGESTS, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
{ SOLVABLE_SUPPLEMENTS, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
{ SOLVABLE_ENHANCES, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
- { SOLVABLE_FRESHENS, REPOKEY_TYPE_IDARRAY, 0, KEY_STORAGE_SOLVABLE },
{ RPM_RPMDBID, REPOKEY_TYPE_U32, 0, KEY_STORAGE_SOLVABLE },
};
di->idp = s->enhances
? di->repo->idarraydata + s->enhances : 0;
continue;
- case SOLVABLE_FRESHENS:
- di->idp = s->freshens
- ? di->repo->idarraydata + s->freshens : 0;
- continue;
case RPM_RPMDBID:
if (!di->repo->rpmdbid)
continue;
Offset supplements;
Offset enhances;
- Offset freshens;
} Solvable;
#endif /* SATSOLVER_SOLVABLE_H */
}
}
-#if CODE10
-/*-------------------------------------------------------------------
- * add patch atom requires
- */
-
-static void
-addpatchatomrequires(Solver *solv, Solvable *s, Id *dp, Queue *q, Map *m)
-{
- Pool *pool = solv->pool;
- Id fre, *frep, p, *pp, ndp;
- Solvable *ps;
- Queue fq;
- Id qbuf[64];
- int i, used = 0;
-
- queue_init_buffer(&fq, qbuf, sizeof(qbuf)/sizeof(*qbuf));
- queue_push(&fq, -(s - pool->solvables));
- for (; *dp; dp++)
- queue_push(&fq, *dp);
- ndp = pool_queuetowhatprovides(pool, &fq);
- frep = s->repo->idarraydata + s->freshens;
- while ((fre = *frep++) != 0)
- {
- FOR_PROVIDES(p, pp, fre)
- {
- ps = pool->solvables + p;
- addrule(solv, -p, ndp);
- used = 1;
- if (!MAPTST(m, p))
- queue_push(q, p);
- }
- }
- if (used)
- {
- for (i = 1; i < fq.count; i++)
- {
- p = fq.elements[i];
- if (!MAPTST(m, p))
- queue_push(q, p);
- }
- }
- queue_free(&fq);
-}
-#endif
/*-------------------------------------------------------------------
POOL_DEBUG(SAT_DEBUG_RULE_CREATION, "package %s [%d] is not installable\n", solvable2str(pool, s), (Id)(s - pool->solvables));
addrule(solv, -n, 0); /* uninstallable */
}
-#if CODE10
- patchatom = 0;
- if (s->freshens && !s->supplements)
- {
- const char *name = id2str(pool, s->name);
- if (name[0] == 'a' && !strncmp(name, "atom:", 5))
- patchatom = 1;
- }
-#endif
/*-----------------------------------------
* check requires of s
break;
}
- /* if nothing found, check for freshens
- * (patterns use this)
- */
- if (!sup && s->freshens)
- {
- supp = s->repo->idarraydata + s->freshens;
- while ((sup = *supp++) != ID_NULL)
- if (dep_possible(solv, sup, m))
- break;
- }
-
/* if nothing found, check for enhances */
if (!sup && s->enhances)
{
if (dep_possible(solv, sup, m))
break;
}
- /* if notthing found, goto next solvables */
+ /* if nothing found, goto next solvables */
if (!sup)
continue;
addrpmrulesforsolvable(solv, s, m);
else
{
s = pool->solvables + i;
- if (!s->supplements && !s->freshens)
+ if (!s->supplements)
continue;
if (!pool_installable(pool, s))
continue;
{
p = dqs.elements[i];
s = pool->solvables + p;
- if (!s->supplements && !s->freshens)
+ if (!s->supplements)
continue;
if (!solver_is_supplementing(solv, s))
queue_pushunique(&dq, p);
oldnrules = solv->nrules;
/*
- * add rules for suggests, [freshens,] enhances
+ * add rules for suggests, enhances
*/
addrpmrulesforweak(solv, &addedmap);
POOL_DEBUG(SAT_DEBUG_STATS, "added %d rpm rules because of weak dependencies\n", solv->nrules - oldnrules);
addrule(solv, 0, 0); /* create dummy rule */
continue;
}
-#if CODE10
- if (s->freshens && !s->supplements)
- {
- const char *name = id2str(pool, s->name);
- if (name[0] == 'a' && !strncmp(name, "atom:", 5))
- {
- addrule(solv, 0, 0);
- continue;
- }
- }
-#endif
addupdaterule(solv, s, 1); /* allow s to be updated */
}
/*
continue;
}
-#if CODE10
- /* no update rules for patch atoms */
- if (s->freshens && !s->supplements)
- {
- const char *name = id2str(pool, s->name);
- if (name[0] == 'a' && !strncmp(name, "atom:", 5))
- {
- addrule(solv, 0, 0);
- continue;
- }
- }
-#endif
addupdaterule(solv, s, 0); /* allowall = 0: downgrades allowed */
/*
solver_is_supplementing(Solver *solv, Solvable *s)
{
Id sup, *supp;
- if (!s->supplements && !s->freshens)
+ if (!s->supplements)
return 0;
- if (s->supplements)
- {
- supp = s->repo->idarraydata + s->supplements;
- while ((sup = *supp++) != 0)
- if (solver_dep_fulfilled(solv, sup))
- break;
- if (!sup)
- return 0;
- }
- if (s->freshens)
- {
- supp = s->repo->idarraydata + s->freshens;
- while ((sup = *supp++) != 0)
- if (solver_dep_fulfilled(solv, sup))
- break;
- if (!sup)
- return 0;
- }
- return 1;
+ supp = s->repo->idarraydata + s->supplements;
+ while ((sup = *supp++) != 0)
+ if (solver_dep_fulfilled(solv, sup))
+ return 1;
+ return 0;
}
static inline int
printids(repo, "suggests", s->suggests);
printids(repo, "supplements", s->supplements);
printids(repo, "enhances", s->enhances);
- printids(repo, "freshens", s->freshens);
if (repo->rpmdbid)
printf("rpmdbid: %u\n", repo->rpmdbid[i - repo->start]);
#if 0
if (s && s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
s->provides = repo_addid_dep(repo, s->provides, rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
if (s)
- s->supplements = repo_fix_legacy(repo, s->provides, s->supplements);
+ s->supplements = repo_fix_legacy(repo, s->provides, s->supplements, 0);
/* Only support one product. */
s = pool_id2solvable(pool, repo_add_solvable(repo));
repodata_extend(data, s - pool->solvables);
if (s && s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
s->provides = repo_addid_dep(repo, s->provides, rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
if (s)
- s->supplements = repo_fix_legacy(repo, s->provides, s->supplements);
+ s->supplements = repo_fix_legacy(repo, s->provides, s->supplements, 0);
if (pd.tmp)
sat_free(pd.tmp);
unsigned int datanum;
Solvable *solvable;
char *kind;
+ Offset freshens;
unsigned int timestamp;
struct stateswitch *swtab[NUMSTATES];
pd->kind = "patch";
pd->solvable = pool_id2solvable(pool, repo_add_solvable(pd->repo));
+ pd->freshens = 0;
if (!strcmp(pd->kind, "patch"))
{
s->enhances = adddep(pool, pd, s->enhances, atts, 0);
break;
case STATE_FRESHENS:
- s->freshens = 0;
+ pd->freshens = 0;
break;
case STATE_FRESHENSENTRY:
- s->freshens = adddep(pool, pd, s->freshens, atts, 0);
+ pd->freshens = adddep(pool, pd, pd->freshens, atts, 0);
break;
case STATE_REBOOT:
repodata_set_void(pd->data, pd->datanum, UPDATE_REBOOT);
s->arch = ARCH_NOARCH;
if (s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
s->provides = repo_addid_dep(pd->repo, s->provides, rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
- s->supplements = repo_fix_legacy(pd->repo, s->provides, s->supplements);
+ s->supplements = repo_fix_legacy(pd->repo, s->provides, s->supplements, pd->freshens);
+ pd->freshens = 0;
break;
case STATE_NAME:
s->name = str2id(pool, pd->content, 1);
s->suggests = makedeps(pool, repo, rpmhead, TAG_SUGGESTSNAME, TAG_SUGGESTSVERSION, TAG_SUGGESTSFLAGS, 1);
s->supplements = makedeps(pool, repo, rpmhead, TAG_ENHANCESNAME, TAG_ENHANCESVERSION, TAG_ENHANCESFLAGS, 2);
s->enhances = makedeps(pool, repo, rpmhead, TAG_ENHANCESNAME, TAG_ENHANCESVERSION, TAG_ENHANCESFLAGS, 1);
- s->freshens = 0;
- s->supplements = repo_fix_legacy(repo, s->provides, s->supplements);
+ s->supplements = repo_fix_legacy(repo, s->provides, s->supplements, 0);
if (repodata)
{
s->suggests = copydeps(pool, repo, r->suggests, fromrepo);
s->supplements = copydeps(pool, repo, r->supplements, fromrepo);
s->enhances = copydeps(pool, repo, r->enhances, fromrepo);
- s->freshens = copydeps(pool, repo, r->freshens, fromrepo);
/* copy all attributes */
if (!data)
int acontent;
int docontent;
Solvable *solvable;
+ Offset freshens;
struct stateswitch *swtab[NUMSTATES];
enum state sbtab[NUMSTATES];
const char *lang;
pd->kind = "patch";
pd->solvable = pool_id2solvable(pool, repo_add_solvable(pd->common.repo));
+ pd->freshens = 0;
repodata_extend(pd->data, pd->solvable - pool->solvables);
pd->handle = repodata_get_handle(pd->data, (pd->solvable - pool->solvables) - pd->data->start);
#if 0
break;
case STATE_CAPS_FRESHENS:
case STATE_FRESHENS:
- s->freshens = 0;
+ pd->freshens = 0;
break;
case STATE_FRESHENSENTRY:
- s->freshens = adddep(pool, pd, s->freshens, atts, 0);
+ pd->freshens = adddep(pool, pd, pd->freshens, atts, 0);
break;
case STATE_CAP_PROVIDES:
case STATE_CAP_REQUIRES:
s->evr = ID_EMPTY; /* some patterns have this */
if (s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
s->provides = repo_addid_dep(repo, s->provides, rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
- s->supplements = repo_fix_legacy(repo, s->provides, s->supplements);
+ s->supplements = repo_fix_legacy(repo, s->provides, s->supplements, pd->freshens);
+ pd->freshens = 0;
pd->kind = 0;
break;
case STATE_NAME:
s->enhances = adddepplain(pool, &pd->common, s->enhances, pd->content, 0, pd->capkind);
break;
case STATE_CAP_FRESHENS:
- s->freshens = adddepplain(pool, &pd->common, s->freshens, pd->content, 0, pd->capkind);
+ pd->freshens = adddepplain(pool, &pd->common, pd->freshens, pd->content, 0, pd->capkind);
break;
case STATE_SUMMARY:
pd->lang = 0;
*/
static void
-finish_solvable(struct parsedata *pd, Solvable *s, int handle)
+finish_solvable(struct parsedata *pd, Solvable *s, int handle, Offset freshens)
{
Pool *pool = pd->repo->pool;
rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
/* XXX This uses repo_addid_dep internally, so should also be
harmless to do twice. */
- s->supplements = repo_fix_legacy(pd->repo, s->provides, s->supplements);
+ s->supplements = repo_fix_legacy(pd->repo, s->provides, s->supplements, freshens);
if (pd->ndirs)
commit_diskusage (pd, handle);
}
char *line, *linep;
int aline;
Solvable *s;
+ Offset freshens;
int intag = 0;
int cummulate = 0;
int indesc = 0;
linep = line;
s = 0;
+ freshens = 0;
/* XXX deactivate test code */
blanr = 0;
/* If we have an old solvable, complete it by filling in some
default stuff. */
if (s)
- finish_solvable(&pd, s, handle);
+ finish_solvable(&pd, s, handle, freshens);
/*
* define kind
evr = makeevr(pool, join2(sp[1], "-", sp[2]));
s = 0;
+ freshens = 0;
/* Now see if we know this solvable already. If we found neither
the name nor the arch at all in this repo
s->suggests = adddep(pool, &pd, s->suggests, line, 0, pd.kind);
continue;
case CTAG('=', 'F', 'r', 'e'): /* freshens */
- s->freshens = adddep(pool, &pd, s->freshens, line, 0, pd.kind);
+ freshens = adddep(pool, &pd, freshens, line, 0, pd.kind);
continue;
case CTAG('=', 'P', 'r', 'c'): /* packages recommended */
if (flags & SUSETAGS_KINDS_SEPARATELY)
if (flags & SUSETAGS_KINDS_SEPARATELY)
fprintf (stderr, "Unsupported: pattern -> package freshens\n");
else
- s->freshens = adddep(pool, &pd, s->freshens, line, 0, 0);
+ freshens = adddep(pool, &pd, freshens, line, 0, 0);
continue;
case CTAG('=', 'P', 's', 'p'): /* pattern: package supplements */
if (flags & SUSETAGS_KINDS_SEPARATELY)
} /* for(;;) */
if (s)
- finish_solvable(&pd, s, handle);
+ finish_solvable(&pd, s, handle, freshens);
/* Shared attributes
* (e.g. multiple binaries built from same source)
*sp++ = SOLVABLE_ENHANCES;
cbdata.mykeys[SOLVABLE_ENHANCES].size += incneedidarray(pool, idarraydata + s->enhances, needid);
}
- if (s->freshens && cbdata.keymap[SOLVABLE_FRESHENS])
- {
- *sp++ = SOLVABLE_FRESHENS;
- cbdata.mykeys[SOLVABLE_FRESHENS].size += incneedidarray(pool, idarraydata + s->freshens, needid);
- }
if (repo->rpmdbid && cbdata.keymap[RPM_RPMDBID])
{
*sp++ = RPM_RPMDBID;
data_addidarray_sort(xd, pool, needid, idarraydata + s->supplements, 0);
if (s->enhances && cbdata.keymap[SOLVABLE_ENHANCES])
data_addidarray_sort(xd, pool, needid, idarraydata + s->enhances, 0);
- if (s->freshens && cbdata.keymap[SOLVABLE_FRESHENS])
- data_addidarray_sort(xd, pool, needid, idarraydata + s->freshens, 0);
if (repo->rpmdbid && cbdata.keymap[RPM_RPMDBID])
data_addu32(xd, repo->rpmdbid[i - repo->start]);
if (anyrepodataused)