X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=ext%2Frepo_content.c;h=2ce69409debf2a967532861721f3f48e3e695b9b;hb=bc61a35f537078664825a35c86895eb20d847d1f;hp=a51f7c23adc6660a347146eba0d7331d35eb1edc;hpb=a70afe41f3940323e680b06da9744624dd94f214;p=platform%2Fupstream%2Flibsolv.git diff --git a/ext/repo_content.c b/ext/repo_content.c index a51f7c2..2ce6940 100644 --- a/ext/repo_content.c +++ b/ext/repo_content.c @@ -213,6 +213,7 @@ repo_add_content(Repo *repo, FILE *fp, int flags) char *defvendor = 0; int i = 0; + int res = 0; /* architectures we use the first architecture in BASEARCHS or noarch @@ -289,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")) { @@ -339,13 +363,15 @@ repo_add_content(Repo *repo, FILE *fp, int flags) type = solv_chksum_str2type(checksumtype); if (!type) { - fprintf(stderr, "Unknown checksum type: %s: %s\n", value, checksumtype); + pool_error(pool, -1, "%s: unknown checksum type '%s'", value, checksumtype); + res = 1; continue; } l = solv_chksum_len(type); if (strlen(checksum) != 2 * l) { - fprintf(stderr, "Invalid checksum length: %s: for %s\n", value, checksum); + pool_error(pool, -1, "%s: invalid checksum length for %s", value, checksumtype); + res = 1; continue; } fh = repodata_new_handle(data); @@ -441,43 +467,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? @@ -545,5 +567,5 @@ repo_add_content(Repo *repo, FILE *fp, int flags) solv_free(otherarchs); if (!(flags & REPO_NO_INTERNALIZE)) repodata_internalize(data); - return 0; + return res; }