Correctly expand %{obsoletes}, %{requires}, etc. in spec (RhBug:555926)

- tags declared multiple times in spec were simply overwritten so
  referencing it via %{} just showed contents of the last one
This commit is contained in:
Jindrich Novy 2010-01-16 12:43:16 +01:00
parent a9483191a5
commit e811ef56aa
1 changed files with 17 additions and 2 deletions

View File

@ -688,8 +688,23 @@ static int handlePreambleTag(rpmSpec spec, Package pkg, rpmTag tag,
return RPMRC_FAIL;
}
if (macro)
addMacro(spec->macros, macro, NULL, field, RMIL_SPEC);
if (macro) {
char *macro_expanded = NULL,
*macro_token = NULL,
*field_set = NULL;
rasprintf(&macro_token, "%%%s", macro);
macro_expanded = rpmExpand(macro_token);
if (!strcmp(macro_expanded, macro_token)) {
field_set = xstrdup(field);
} else {
rasprintf(&field_set, "%s %s", macro_expanded, field);
}
addMacro(spec->macros, macro, NULL, field_set, RMIL_SPEC);
free(macro_expanded);
free(macro_token);
free(field_set);
}
return RPMRC_OK;
}