The %if construct doesn't recognize "_" as a legas first character in a macro name. For example %define _foo bar ... %if _foo == "bar" ... gets an error, wheras %define foo bar ... %if foo == "bar" ... does not. Suggest changing line 265 in expression.c } else if (isalpha(*p)) { to } else if (isalpha(*p) || *p == '_') {
This had been fixed in (at least) rpm-3.0.4. Thanks for the patch.