macro expansion problems

Panu Matilainen pmatilai at redhat.com
Mon Jul 30 10:30:41 UTC 2018


On 07/09/2018 12:42 PM, Adrian Reber wrote:
> I am trying to define a macro and it seems I do not understand the macro
> expansion correctly.
> 
> The macro I want to use, uses a variable which is defined later and I
> cannot get it right. The following is a short example of what I would
> like to do:
> 
> %global debug_package %{nil}
> %global newname %(eval echo %{extname} | tr [a-z] [A-Z])
> %global extname lower
> Name: %{extname}
> Version: 1
> Release: 1
> Summary: Summary
> License: yes
> %description
> %{newname}
> 
> # rpmspec -q test.spec --parse
> Name: lower
> Version: 1
> Release: 1
> Summary: Summary
> License: yes
> %description
> %{EXTNAME}
> 
> 
> I understand the result but I tried many variants with expand to get it
> working, but I failed. This is on CentOS 7.
> 
> Is it possible to change the value of a variable in a macro with a
> variable which is defined later?

Yes, you just need to use %define to get lazy macro expansion, %global 
expands the body at time of definition. Using %define for "newname" 
macro definition gives you:

Name: lower
Version: 1
Release: 1
Summary: Summary
License: yes
%description
LOWER

...which I suppose is the behavior you're after here.

Yet another victim of Fedora's "%define is evil, use %global" misguided 
guidelines.

	- Panu -


More information about the Rpm-list mailing list