mirror of
https://github.com/openSUSE/libsolv.git
synced 2026-02-05 12:45:46 +01:00
repo_autopattern: support creation of obsoletes for product packages
This adds support for provides of the type "product-obsoletes(name)". We translate this to "Obsoletes: product:<name>" in the generated product pseudo package. We need this because people used "Obsoletes: product:name" in the "release" package, but this is no longer allowed in newer rpm versions. Besides, the obsoletes is kind of wrong in the "release" package anyway, it belongs in the generated "product:" package.
This commit is contained in:
@@ -404,17 +404,19 @@ repo_add_autopattern(Repo *repo, int flags)
|
||||
while ((prv = *prvp++) != 0) /* go through all provides */
|
||||
{
|
||||
Id evr = 0;
|
||||
int flags = 0;
|
||||
if (ISRELDEP(prv))
|
||||
{
|
||||
Reldep *rd = GETRELDEP(pool, prv);
|
||||
if (rd->flags != REL_EQ)
|
||||
continue;
|
||||
prv = rd->name;
|
||||
evr = rd->evr;
|
||||
flags = rd->flags;
|
||||
}
|
||||
pn = pool_id2str(pool, prv);
|
||||
if (strncmp("product-", pn, 8) != 0)
|
||||
continue;
|
||||
if (flags && flags != REL_EQ && strncmp(pn, "product-obsoletes(", 18) != 0)
|
||||
continue;
|
||||
newname = 0;
|
||||
if (evr)
|
||||
{
|
||||
@@ -452,6 +454,18 @@ repo_add_autopattern(Repo *repo, int flags)
|
||||
repodata_add_poolstr_array(data, s2 - pool->solvables, PRODUCT_URL_TYPE, type);
|
||||
repodata_add_poolstr_array(data, s2 - pool->solvables, PRODUCT_URL, newname);
|
||||
}
|
||||
else if (!strncmp(pn, "product-obsoletes(", 18) && pn[18] && pn[19])
|
||||
{
|
||||
if (newname)
|
||||
pool_freetmpspace(pool, newname);
|
||||
newname = pool_tmpjoin(pool, "product:", pn + 18, 0);
|
||||
newname[strlen(newname) - 1] = 0; /* closing ) */
|
||||
unescape(newname);
|
||||
Id obs = pool_str2id(pool, newname, 1);
|
||||
if (flags && evr)
|
||||
obs = pool_rel2id(pool, obs, evr, flags, 1);
|
||||
s2->obsoletes = repo_addid_dep(s2->repo, s2->obsoletes, obs, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
queue_free(&prdq);
|
||||
|
||||
Reference in New Issue
Block a user