Bug 147238 - Loses macro definition
Summary: Loses macro definition
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: rpm
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Paul Nasrat
QA Contact: Mike McLean
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2005-02-04 22:33 UTC by Enrico Scholz
Modified: 2007-11-30 22:10 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-07-13 16:50:13 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Enrico Scholz 2005-02-04 22:33:01 UTC
Description of problem:


----- test.spec
%{!?myvar:%define myvar                 foo}
%define othervar                        bar
%{!?release_func:%define release_func() %1}

Name:		test
%{error:%myvar}
%{error:%othervar}
Version:	%release_func 1
%{error:%myvar}
%{error:%othervar}
Release:	0.fdr.1
Epoch:		0
Group:          X
License:        X
Summary:        X

%description
------


| $ rpmbuild -bs test.spec
| error: foo
| error: bar
| error: %myvar
| error: bar

please notice the 3rd line: the definition of %myvar was forgotten
suddenly when a function was executed.


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

rpm-4.3.3-8



How reproducible:

100%

Steps to Reproduce:
1. see above


Actual results:

3rd line is 'error: %myvar'


Expected results:

3rd line is 'error: foo'

Comment 1 Jeff Johnson 2006-07-13 16:50:13 UTC
Yep.

A function cleans all macro definitions at same (or deeper) recursion level lazily upon exit.

Doing
    %{!?myvar:%global myvar                 foo}
will give you the behavior you expect.

This issue is too arcane to fix imho, use the workaround.





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