Bug 143874 - Commented %define still %defines
Commented %define still %defines
Status: CLOSED NOTABUG
Product: Fedora
Classification: Fedora
Component: rpm (Show other bugs)
3
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Jeff Johnson
Mike McLean
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2004-12-30 11:23 EST by Matthew Saltzman
Modified: 2007-11-30 17:10 EST (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1065463 (view as bug list)
Environment:
Last Closed: 2004-12-30 11:29:32 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
RPM spec file exhibiting how commented %defines are still live. (497 bytes, text/plain)
2004-12-30 11:26 EST, Matthew Saltzman
no flags Details

  None (edit)
Description Matthew Saltzman 2004-12-30 11:23:11 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5)
Gecko/20041111 Firefox/1.0

Description of problem:
A %define directive on a comment line still %defines the symbol.  If
the commented line appears after a live %define directive, the
commented definition replaces the live one.

Commented lines should have no effect.

Version-Release number of selected component (if applicable):
rpm-4.3.2-21

How reproducible:
Always

Steps to Reproduce:
1. Install the attached foo.spec file in SOURCES.
2. rpmbuild -bp foo.spec
3.
    

Actual Results:  Output echoes "bazz" on screen.

Expected Results:  Output echoes "bar" on screen.

Additional info:

foo.spec file attached below.

Note the lines:

%define foo bar
# %define foo bazz

The latter %define overrides the former, even though it is commented out.
Comment 1 Matthew Saltzman 2004-12-30 11:26:38 EST
Created attachment 109189 [details]
RPM spec file exhibiting how commented %defines are still live.

Build this package (foo-0.0) with "rpmbuild -bp foo.spec".  The output echoes
"bazz" when it should echo "bar".
Comment 2 Paul Nasrat 2004-12-30 11:29:32 EST
This is a known limitation of the spec parser, macros are expanded everywhere -
comments, changelog etc. Common packager approaches are to either add a % to
escape or replace the % with the #
eg:

#%%define foo bazz 

or 
#define foo bazz
Comment 3 Matthew Saltzman 2004-12-30 11:55:51 EST
OK fine, but this needs to be documented in big red letters in places that
specfile authors are likely to see it (appropriate sections of the HOWTO and 
Maximum RPM, at least).  For anyone used to most common programming languages,
shell languages, makefile syntax, etc., this is totally unexpected behavior.

In the Maximum RPM snapshot
(http://www.rpm.org/max-rpm-snapshot/ch-rpm-inside.html#S1-RPM-INSIDE-COMMENTS)
the following appears:

Comments are a way to make RPM ignore a line in the spec file. The contents of a
comment line are entirely up to the person writing the spec file.

To create a comment, enter an octothorp (#) at the start of the line. Any text
following the comment character will be ignored by RPM. 

The same appears in Appendix E
(http://www.rpm.org/max-rpm-snapshot/ch-rpm-specref.html#S1-RPM-SPECREF-COMMENTS)

I have not encountered any reference to expansion of macros in comments anywhere
I've looked.
Comment 4 Paul Nasrat 2004-12-30 12:01:45 EST
For speedy update patches against maximum rpm happily taken and the snapshot
will be updated. CVS details here, feel free to attach here or post to rpm-list:

http://rpm.org/cvs_help/

Comment 5 Matthew Saltzman 2004-12-30 14:08:28 EST
OK Will post here or there when I have a chance to write the patches.

Note You need to log in before you can comment on or make changes to this bug.