Bug 2873
| Summary: | insufficient warnings on illegal macro names in macro file | ||
|---|---|---|---|
| Product: | [Retired] Red Hat Linux | Reporter: | benedict |
| Component: | rpm | Assignee: | Jay Turner <jturner> |
| Status: | CLOSED WONTFIX | QA Contact: | |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 6.0 | CC: | benedict, srevivo |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 1999-05-24 19:58:37 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
benedict
1999-05-17 13:17:12 UTC
At the core of your request is how macro names should be parsed
in context. The rpm-2.5.x behavior was to parse non-space(s) until
next space, and according to that algorithm, you are expecting
error messages saying "%foo.bar" is an illegal name. (Note: there
is also the variant %{foo.bar} which is demarked by curly braces.)
In rpm 3.0, the parser accepts permitted characters in a name. That
will eventually permit constructs like
%define %sol solaris2
%sol2.5 => solaris2.5
without the curly brace artifacts (e.g. %{sol2}.5.
Another implementation feature in rpm-3.0 is the ability to overload
pre-existing non-macro tokens (e.g. %prep) in a transparent manner
%prep %%prep
Note that each of the % in the above statement is different. First
there's the macro %, then the (obvious) escaping %, and finally the
1st character of the (non-macro!) token %prep. So, given the ability
to overload non-macro tokens with macros that might not be defined
when parsed, there is no way to generate an error message about
illegal macro names when the macro name is parsed.
*** Bug 2629 has been marked as a duplicate of this bug. *** The following spec file snippet should echo twice when built with buildos irix6.5 - in 3.0 it echos only once. %prep %define mymacro irix6.5 %ifos %{mymacro} echo "Expansion of ifos %{mymacro} is OK" %endif %ifos iris6.5 echo "Expansion of ifos %{mymacro} is OK" %endif The output is Executing: %prep + umask 022 + cd /tmp/benedict/BUILD-test-3.0 + echo Expansion of ifos irix6.5 is OK Expansion of ifos irix6.5 is OK + exit 0 ------- Additional Comments From jbj 05/14/99 14:35 ------- Macros are correctly expanded before processing %ifX statements. Your example has a typo (iris6.5 vs. irix6.5), I can't tell which is wrong without examining uname(2) strings on an SGI platform. Please reopen this bug if there is still a problem. ------- Additional Comments From benedict.dk 05/17/99 05:53 ------- OK. Sorry about the typo. ------- Additional Comments From benedict.dk 05/17/99 09:30 ------- See Bug # 2873 The original problem for me was that I did not get any warning when I defined %irix6.x in a macro file - so I thought it was not expanded when I used a conditional such as %ifos %{irix6.x} Here's my typo:
%define %sol2 solaris2
%sol2.5 => solaris2.5
|