Need some help understanding the RPM spec bit operator
Jeff Johnson
n3npq at mac.com
Thu Aug 12 19:22:12 UTC 2010
On Aug 12, 2010, at 3:12 PM, Mitko Haralanov wrote:
> Hi all,
>
> I am having some trouble understanding how the RPM spec bit operator
> seems to work. The documentation that I have been able to find confirms
> my understanding of it but, in practice, it doesn't work that way.
>
> In my spec file, I define a variable like this:
> %{!?debug: %global debug 0}
> %if %{debug}
> %define __strip /bin/true
> %endif
>
> Later on I use that same variable like this:
> ./configure --prefix=%{_prefix} %{?debug: --enable-debug}
>
> The rpmbuild command line can be called with "--define 'debug 1'" when
> compiling with debugging enabled of without that "--define" when
> compiling without debugging.
>
> However, no matter what the value of the %{debug} variable is,
> "--enable-debug" is present on the ./configure command line. Why is
> that? I thought that the bit operator tests not only whether a variable
> is defined but also whether it's value is 0 or 1?
>
The %{?foo} is an existence, not a value test.
The %{!?foo} is just the negation of the existence test, i.e. TRUE if foo does not exist.
So you've always defined %{debug} but sometimes with value 0.
Hint:
%if 0%{?debug}
...
%endif
is one way to map the existence test back to a value test.
hth
73 de Jeff
> --
> Mitko Haralanov mitko at qlogic.com
> Senior Software Engineer 650.934.8064
> NSG InfiniBand Engineering http://www.qlogic.com
> ==========================================
> _______________________________________________
> Rpm-list mailing list
> Rpm-list at lists.rpm.org
> http://lists.rpm.org/mailman/listinfo/rpm-list
More information about the Rpm-list
mailing list