X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=ext%2Frepo_content.c;h=e94ca9e83d74b2e744cbc89c435d565100ebe636;hb=e69296cfbfd9bc7a9a5da7a78fbaca07072e3d16;hp=75f339c5c672e63d34592b36af4147851ad1a1ce;hpb=64af5496c8e755df389d568c8e5c1045dcda9483;p=platform%2Fupstream%2Flibsolv.git diff --git a/ext/repo_content.c b/ext/repo_content.c index 75f339c..e94ca9e 100644 --- a/ext/repo_content.c +++ b/ext/repo_content.c @@ -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")) { @@ -385,7 +408,6 @@ repo_add_content(Repo *repo, FILE *fp, int flags) } /* 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; } @@ -444,43 +465,39 @@ repo_add_content(Repo *repo, FILE *fp, int flags) } } } + if (!code10) + continue; /* * Every tag below is Code10 only * */ - if (code10 && istag ("DISTPRODUCT")) - /* DISTPRODUCT is for registration and Yast, not for the solver. */ - repodata_set_str(data, s - pool->solvables, PRODUCT_DISTPRODUCT, value); - else if (code10 && istag ("DISTVERSION")) - /* DISTVERSION is for registration and Yast, not for the solver. */ - repodata_set_str(data, s - pool->solvables, PRODUCT_DISTVERSION, value); - else if (code10 && istag ("ARCH")) + if (istag ("ARCH")) /* Theoretically we want to have the best arch of the given modifiers which still is compatible with the system arch. We don't know the latter here, though. */ s->arch = ARCH_NOARCH; - else if (code10 && istag ("PREREQUIRES")) + else if (istag ("PREREQUIRES")) s->requires = adddep(pool, &pd, s->requires, value, SOLVABLE_PREREQMARKER); - else if (code10 && istag ("REQUIRES")) + else if (istag ("REQUIRES")) s->requires = adddep(pool, &pd, s->requires, value, -SOLVABLE_PREREQMARKER); - else if (code10 && istag ("PROVIDES")) + else if (istag ("PROVIDES")) s->provides = adddep(pool, &pd, s->provides, value, 0); - else if (code10 && istag ("CONFLICTS")) + else if (istag ("CONFLICTS")) s->conflicts = adddep(pool, &pd, s->conflicts, value, 0); - else if (code10 && istag ("OBSOLETES")) + else if (istag ("OBSOLETES")) s->obsoletes = adddep(pool, &pd, s->obsoletes, value, 0); - else if (code10 && istag ("RECOMMENDS")) + else if (istag ("RECOMMENDS")) s->recommends = adddep(pool, &pd, s->recommends, value, 0); - else if (code10 && istag ("SUGGESTS")) + else if (istag ("SUGGESTS")) s->suggests = adddep(pool, &pd, s->suggests, value, 0); - else if (code10 && istag ("SUPPLEMENTS")) + else if (istag ("SUPPLEMENTS")) s->supplements = adddep(pool, &pd, s->supplements, value, 0); - else if (code10 && istag ("ENHANCES")) + else if (istag ("ENHANCES")) s->enhances = adddep(pool, &pd, s->enhances, value, 0); /* FRESHENS doesn't seem to exist. */ - else if (code10 && istag ("TYPE")) + else if (istag ("TYPE")) repodata_set_str(data, s - pool->solvables, PRODUCT_TYPE, value); /* XXX do something about LINGUAS and ARCH? @@ -527,7 +544,6 @@ repo_add_content(Repo *repo, FILE *fp, int flags) 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;