On Tue, Apr 28, 2020 at 9:55 AM Nicolas Mailhot via devel
<devel(a)lists.fedoraproject.org> wrote:
Le mardi 28 avril 2020 à 08:43 +0200, Petr Pisar a écrit :
> On Mon, Apr 27, 2020 at 04:33:52PM +0200, Petr Šabata wrote:
> >
> > %_use_ncurses %{lua:
> > if rpm.expand("%{name}") == "yourpackage1"
> > or rpm.expand("%{name}") == "yourpackage2" then
> > print(rpm.expand("%{bcond_with foo}%{with foo}"))
> > else
> > print(rpm.expand("%{bcond_without foo}%{with foo}"))
> > end
> > }
%{name} use in macro logic is unsafe because %{name} does not exist in
the preamble before the Name: line, and the Name: line does not exist
before you start declaring package headers.
Once you’re in package
header declaration mode rpm parser behaviour will prevent you from
doing logic between headers blocks, so it all needs interleaving, which
ends un not possible sanely in any semi-complex spec file.
You're correct but I can't think of any solution besides not using the
macros before you define Name, just like in your example below. It's
certainly a drawback.
P
The rpm parser will now insult you with messages like
warning: undefined macro(s) in %{_sourcedir}: /var/lib/builder/rpmbuild/SOURCES/%{name}
if you try to use %{name} at the srpm level.
This is an rpm 4.15 change
https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/83
Regards,
--
Nicolas Mailhot