Imported Upstream version 0.6.23
[platform/upstream/libsolv.git] / ext / repo_content.c
index 5b61a6b..b12c4cd 100644 (file)
@@ -142,7 +142,7 @@ adddep(Pool *pool, struct parsedata *pd, unsigned int olddeps, char *line, Id ma
 
          if (!rel || !evr)
            {
-             pool_debug(pool, SOLV_FATAL, "repo_content: bad relation '%s %s'\n", name, rel);
+             pool_debug(pool, SOLV_ERROR, "repo_content: bad relation '%s %s'\n", name, rel);
              continue;
            }
          for (flags = 0; flags < 6; flags++)
@@ -150,7 +150,7 @@ adddep(Pool *pool, struct parsedata *pd, unsigned int olddeps, char *line, Id ma
              break;
          if (flags == 6)
            {
-             pool_debug(pool, SOLV_FATAL, "repo_content: unknown relation '%s'\n", rel);
+             pool_debug(pool, SOLV_ERROR, "repo_content: unknown relation '%s'\n", rel);
              continue;
            }
          id = pool_rel2id(pool, id, pool_str2id(pool, evr, 1), flags + 1, 1);
@@ -290,6 +290,29 @@ repo_add_content(Repo *repo, FILE *fp, int flags)
              repodata_add_poolstr_array(data, SOLVID_META, REPOSITORY_REPOID, value);
              continue;
            }
+         if (istag ("REPOKEYWORDS"))
+           {
+             add_multiple_strings(data, SOLVID_META, REPOSITORY_KEYWORDS, value);
+             continue;
+           }
+         if (istag ("DISTRO"))
+           {
+             Id dh = repodata_new_handle(data);
+             char *p;
+             /* like with createrepo --distro */
+             if ((p = strchr(value, ',')) != 0)
+               {
+                 *p++ = 0;
+                 if (*value)
+                   repodata_set_poolstr(data, dh, REPOSITORY_PRODUCT_CPEID, value);
+               }
+             else
+               p = value;
+             if (*p)
+               repodata_set_str(data, dh, REPOSITORY_PRODUCT_LABEL, p);
+             repodata_add_flexarray(data, SOLVID_META, REPOSITORY_DISTROS, dh);
+             continue;
+           }
 
          if (istag ("DESCRDIR"))
            {
@@ -381,11 +404,10 @@ repo_add_content(Repo *repo, FILE *fp, int flags)
                  if (s->name && s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
                    s->provides = repo_addid_dep(repo, s->provides, pool_rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
                  if (code10)
-                   s->supplements = repo_fix_supplements(repo, s->provides, s->supplements, 0);
+                   repo_rewrite_suse_deps(s, 0);
                }
              /* create new solvable */
              s = pool_id2solvable(pool, repo_add_solvable(repo));
-             repodata_extend(data, s - pool->solvables);
              handle = s - pool->solvables;
              s->name = pool_str2id(pool, join(&pd, "product", ":", value), 1);
              if (datadir)
@@ -402,7 +424,6 @@ repo_add_content(Repo *repo, FILE *fp, int flags)
          if (!s)
            {
              s = pool_id2solvable(pool, repo_add_solvable(repo));
-             repodata_extend(data, s - pool->solvables);
              handle = s - pool->solvables;
            }
 
@@ -497,7 +518,7 @@ repo_add_content(Repo *repo, FILE *fp, int flags)
 
   if (s && !s->name)
     {
-      pool_debug(pool, SOLV_FATAL, "repo_content: 'content' incomplete, no product solvable created!\n");
+      pool_debug(pool, SOLV_ERROR, "repo_content: 'content' incomplete, no product solvable created!\n");
       repo_free_solvable(repo, s - pool->solvables, 1);
       s = 0;
     }
@@ -517,13 +538,12 @@ repo_add_content(Repo *repo, FILE *fp, int flags)
       if (s->name && s->arch != ARCH_SRC && s->arch != ARCH_NOSRC)
         s->provides = repo_addid_dep(repo, s->provides, pool_rel2id(pool, s->name, s->evr, REL_EQ, 1), 0);
       if (code10)
-       s->supplements = repo_fix_supplements(repo, s->provides, s->supplements, 0);
+       repo_rewrite_suse_deps(s, 0);
 
       /* now for every other arch, clone the product except the architecture */
       for (i = 0; i < numotherarchs; ++i)
        {
          Solvable *p = pool_id2solvable(pool, repo_add_solvable(repo));
-         repodata_extend(data, p - pool->solvables);
          p->name = s->name;
          p->evr = s->evr;
          p->vendor = s->vendor;