On Sat, 09 Apr 2011 19:34:48 +0200, Christoph wrote:
> On Sat, 09 Apr 2011 19:01:20 +0200, Christoph wrote:
>
> > I have a spec with
> >
> > %global panelversion 4.8.3
> > or
> > %global panelversion %(rpm -q --qf='%{VERSION}' xfce4-panel)
> >
> > As expected this returns "4.8.3" and
> >
> > Requires: xfce4-panel >= %{panelversion}
> >
> > works fine. However
> >
> > %if 0%{?panelversion} >= 4.7
> > %patch3 -p1
> > %endif
> >
> > does not but returns:
> >
> > Error: xfce4-cellmodem-plugin.spec:54: parseExpressionBoolean returns -1
> >
> > Do I miss something obvious?
>
> Neither 04.8.3 nor 4.7 can be converted into an integer as expected by
> the >= comparison. For values like that, you would need to use string
> comparison.
What would that look like in a spec?
String comparison in general? It uses double-quotes as in shell scripts:
%if "blubb" >= "blah"
%echo blubb >= blah
%endif
%if "4.8.3" >= "4.7"
%echo 4.8.3 >= 4.7
%endif
You can use RPM macros in there, too, of course.
But with regard to what you try to do, it will be severely limited,
because it is not a substitute for full RPM Version Comparison. Example:
"4.8.10" is less than "4.8.3", but in RPM space, that isn't true:
$ rpmdev-vercmp 4.8.10 4.8.3
0:4.8.10-None is newer