simplify packagelink code a bit
authorMichael Schroeder <mls@suse.de>
Thu, 17 Oct 2013 15:19:16 +0000 (17:19 +0200)
committerMichael Schroeder <mls@suse.de>
Thu, 17 Oct 2013 15:19:16 +0000 (17:19 +0200)
src/knownid.h
src/rules.c

index a153915..ba4d71b 100644 (file)
@@ -174,10 +174,10 @@ KNOWNID(PRODUCT_REFERENCEFILE,            "product:referencefile"),       /* installed product o
 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 */
@@ -210,7 +210,7 @@ KNOWNID(REPOSITORY_UPDATES,         "repository:updates"),
 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"),
@@ -233,7 +233,7 @@ KNOWNID(DELTA_SEQ_EVR,                      "delta:seqevr"),
 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"),
index a3f80b3..6f9c170 100644 (file)
@@ -445,18 +445,6 @@ addlinks(Solver *solv, Solvable *s, Id req, Queue *qr, Id prv, Queue *qp, Map *m
   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++)
@@ -482,12 +470,12 @@ addlinks(Solver *solv, Solvable *s, Id req, Queue *qr, Id prv, Queue *qp, Map *m
        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)
     {
@@ -846,11 +834,10 @@ solver_addrpmrulesforlinked(Solver *solv, Map *m)
 {
   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))
@@ -858,21 +845,23 @@ solver_addrpmrulesforlinked(Solver *solv, Map *m)
       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