Variable for version/release?
Jos Vos
jos at xos.nl
Sat Oct 17 16:43:43 UTC 2009
On Sat, Oct 17, 2009 at 11:16:40AM -0500, Ignacio Valdes wrote:
> Thanks! Say I get the following message: /var/tmp/rpm-tmp.42695: line
> 6: [: %{arch_switch}: integer expression expected
> with the following code but I do not know why this does not work?
>
> %ifarch x86_64
> $define arch_switch 1
> %endif
>
> if [ %{arch_switch} -eq 1 ]; then
> actual_gtm_path="/opt/lsb-gtm/V5.3-004A_x86_64"
> else
> actual_gtm_path="/opt/lsb-gtm/V5.3-004A_i686"
> fi
This does not work because %{arch_switch} is not always defined.
In case it isn't, rpm gives an error (although you describe a
shell/test error -- I'd think rpm would also given an error).
There are multiple ways to solve this:
(1)
Make sure %{arch_switch} is always defined:
%ifarch x86_64
$define arch_switch 1
%else
$define arch_switch 0
%endif
OR:
(2)
Change the evaluation so that this always succeeds:
if [ 0%{?arch_switch} -eq 1 ]; then
actual_gtm_path="/opt/lsb-gtm/V5.3-004A_x86_64"
else
actual_gtm_path="/opt/lsb-gtm/V5.3-004A_i686"
fi
Here, %{?arch_switch} evaluates to its value ("1" in your case) when
it is defined, or to the empty string otherwise (because of the "?"
there will be no rpm evaluation error). Because teh concatenation
of "0" with your value, this will be "0" or "01", which is always
an integer.
--
-- Jos Vos <jos at xos.nl>
-- X/OS Experts in Open Systems BV | Phone: +31 20 6938364
-- Amsterdam, The Netherlands | Fax: +31 20 6948204
More information about the Rpm-list
mailing list