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