char *defvendor = 0;
int i = 0;
+ int res = 0;
/* architectures
we use the first architecture in BASEARCHS or noarch
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"))
{
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);
}
/* 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)
if (!s)
{
s = pool_id2solvable(pool, repo_add_solvable(repo));
- repodata_extend(data, s - pool->solvables);
handle = s - pool->solvables;
}
}
}
}
+ 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?
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;
solv_free(otherarchs);
if (!(flags & REPO_NO_INTERNALIZE))
repodata_internalize(data);
- return 0;
+ return res;
}