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 -
_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxxxxx
http://lists.rpm.org/mailman/listinfo/rpm-list