KNOWNID(PRODUCT_SHORTLABEL, "product:shortlabel"), /* not in repomd? */
KNOWNID(PRODUCT_DISTPRODUCT, "product:distproduct"), /* obsolete */
KNOWNID(PRODUCT_DISTVERSION, "product:distversion"), /* obsolete */
-KNOWNID(PRODUCT_TYPE, "product:type"), /* not in repomd? */
+KNOWNID(PRODUCT_TYPE, "product:type"), /* e.g. 'base' */
KNOWNID(PRODUCT_URL, "product:url"),
KNOWNID(PRODUCT_URL_TYPE, "product:url:type"),
-KNOWNID(PRODUCT_FLAGS, "product:flags"), /* code10 repo flags? obsolete? */
+KNOWNID(PRODUCT_FLAGS, "product:flags"), /* e.g. 'update', 'no_you' */
KNOWNID(PRODUCT_PRODUCTLINE, "product:productline"), /* installed product only */
KNOWNID(PRODUCT_REGISTER_TARGET, "product:regtarget"), /* installed product only */
KNOWNID(PRODUCT_REGISTER_RELEASE, "product:regrelease"), /* installed product only */
KNOWNID(REPOSITORY_DISTROS, "repository:distros"),
KNOWNID(REPOSITORY_PRODUCT_LABEL, "repository:product:label"),
KNOWNID(REPOSITORY_PRODUCT_CPEID, "repository:product:cpeid"),
-KNOWNID(REPOSITORY_REPOID, "repository:repoid"), /* obsolete? */
+KNOWNID(REPOSITORY_REPOID, "repository:repoid"), /* obsolete? */
/* keyword (tags) for this repository */
KNOWNID(REPOSITORY_KEYWORDS, "repository:keywords"),
KNOWNID(DELTA_SEQ_NUM, "delta:seqnum"),
/* XXX: shouldn't use a real ID */
-KNOWNID(NAMESPACE_PRODUCTBUDDY, "namespace:productbuddy"),
+KNOWNID(NAMESPACE_PRODUCTBUDDY, "namespace:productbuddy"), /* obsolete */
KNOWNID(REPOSITORY_REPOMD, "repository:repomd"),
KNOWNID(REPOSITORY_REPOMD_TYPE, "repository:repomd:type"),
int i;
if (!qr->count)
return;
-
- if (m && !MAPTST(m, s - pool->solvables))
- {
- /* called from solver_addrpmrulesforlinked */
- for (i = 0; i < qr->count; i++)
- if (MAPTST(m, qr->elements[i]))
- break;
- if (i == qr->count)
- return;
- queue_push(workq, s - pool->solvables);
- return;
- }
#if 0
printf("ADDLINKS %s\n -> %s\n", pool_solvable2str(pool, s), pool_dep2str(pool, req));
for (i = 0; i < qr->count; i++)
addrpmrule(solv, qp->elements[0], -qr->elements[i], SOLVER_RULE_RPM_PACKAGE_REQUIRES, prv);
}
if (!m)
- return;
+ return; /* nothing more to do if called from getrpmruleinfos() */
for (i = 0; i < qr->count; i++)
- if (m && !MAPTST(m, qr->elements[i]))
+ if (!MAPTST(m, qr->elements[i]))
queue_push(workq, qr->elements[i]);
for (i = 0; i < qp->count; i++)
- if (m && !MAPTST(m, qp->elements[i]))
+ if (!MAPTST(m, qp->elements[i]))
queue_push(workq, qp->elements[i]);
if (solv->installed && s->repo == solv->installed)
{
{
Pool *pool = solv->pool;
Solvable *s;
- const char *name;
- int i;
- Queue workq;
+ int i, j;
+ Queue qr;
- queue_init(&workq);
+ queue_init(&qr);
for (i = 1; i < pool->nsolvables; i++)
{
if (MAPTST(m, i))
s = pool->solvables + i;
if (!s->repo || s->repo == solv->installed)
continue;
- name = pool_id2str(pool, s->name);
- if (!strchr(name, ':'))
+ if (!strchr(pool_id2str(pool, s->name), ':'))
continue;
if (!pool_installable(pool, s))
continue;
- add_package_link(solv, s, m, &workq);
- if (workq.count)
+ find_package_link(pool, s, 0, &qr, 0, 0);
+ if (qr.count)
{
- int j;
- for (j = 0; j < workq.count; j++)
- solver_addrpmrulesforsolvable(solv, pool->solvables + workq.elements[j], m);
- queue_empty(&workq);
+ for (j = 0; j < qr.count; j++)
+ if (MAPTST(m, qr.elements[j]))
+ {
+ solver_addrpmrulesforsolvable(solv, s, m);
+ break;
+ }
+ queue_empty(&qr);
}
}
- queue_free(&workq);
+ queue_free(&qr);
}
#endif