Discussion:
Kernel-Version in SPEC
Daniel Spannbauer
2014-10-13 08:54:26 UTC
Permalink
Hallo,

ich muss beim Kernel-Bau die KErnel-Version ermitteln und je nach
Version etwas mit IF und ELSE im Spec rumspringen.

Finde gerade irgendwie den Ansatz nicht...
Versuch habe ich es mit:
%define kernel_vers %(uname -r |gawk -F"-" '{ print $1 }')


Dann mit

if %{%{kernel_vers} >= 3.8.0
kjklsdfjkl
kasdfjlk
endif

Aber rpm mosert mir wegen "bad %if condition" rum. Ein "rpmbuild -E
'{kernel_version] xxx.spec" spuckt mir keinen Inhalt des define raus, so
dass da wohl einfach nichts drin steht das ich in der if-condition
vergleichen könnte.

Hat jemand sowas schon mal gemacht? Ich google mir gerade nen Wolf....

Gruß

Daniel
--
Daniel Spannbauer Systemadministration
marco Systemanalyse und Entwicklung GmbH Tel +49 8333 9233-27 Fax -11
Rechbergstr. 4-6, D 87727 Babenhausen Mobil +49 171 4033220
http://www.marco.de/ Email ***@marco.de
Geschäftsführer Martin Reuter HRB 171775 Amtsgericht München
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
David Haller
2014-10-13 09:58:56 UTC
Permalink
Hallo,
Post by Daniel Spannbauer
ich muss beim Kernel-Bau die KErnel-Version ermitteln und je nach
Version etwas mit IF und ELSE im Spec rumspringen.
Finde gerade irgendwie den Ansatz nicht...
%define kernel_vers %(uname -r |gawk -F"-" '{ print $1 }')
Dann mit
if %{%{kernel_vers} >= 3.8.0
kjklsdfjkl
kasdfjlk
endif
Aber rpm mosert mir wegen "bad %if condition" rum.
Solche Fragen gehoeren eher nach -packaging ...

%define kernel_vers %(uname -r |gawk -F"-" '{ print $1 }')

Soweit, so richtig ... ABER: bei

%if ..\n %endif

kann RPM offenbar keine Versionsvergleiche wie bei Require/Provides
etc. Deswegen ist wohl auch %{suse_version} z.B. 1310 und nicht 13.1.

Abhilfe (Variable mit Absicht umbenamst):

====
%define kern_ver %(uname -r | gawk -F"-" '{ split($1, a, ".");
for(v in a) { printf("%03i", a[v]); }; }')
[..]

%if 0%{?kern_ver} >= 003008000
echo HURRA
%else
echo BONK
%endif
====

(könnte man auch 2-stellig aufziehen, also '%02i' und '>= 030800').

BTW1: ich mag awk :)

BTW2: auf die Schnelle seh ich grad nix in /etc/rpm/* oder
/usr/lib/rpm/* was zu dem Problem passen würde, ich lege dir also
einen "Enhancement-Bug" dazu nahe (daß ein Makro zur Kernel-Version
analog zu "%{suse_version}" etc. definiert wird).

HTH,
-dnh
--
Post by Daniel Spannbauer
You say our final product doesn't have bugs worth tracking?
No. Your final products are in general known for their bugginess.
This could be a marketing decision to assure your jobs. ;-))
-- > Stephan Kulow and Eberhard Mönkeberg in opensuse-factory
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Daniel Spannbauer
2014-10-13 11:08:15 UTC
Permalink
Post by David Haller
Solche Fragen gehoeren eher nach -packaging ...
%define kernel_vers %(uname -r |gawk -F"-" '{ print $1 }')
Soweit, so richtig ... ABER: bei
%if ..\n %endif
kann RPM offenbar keine Versionsvergleiche wie bei Require/Provides
etc. Deswegen ist wohl auch %{suse_version} z.B. 1310 und nicht 13.1.
====
%define kern_ver %(uname -r | gawk -F"-" '{ split($1, a, ".");
for(v in a) { printf("%03i", a[v]); }; }')
[..]
%if 0%{?kern_ver} >= 003008000
echo HURRA
%else
echo BONK
%endif
====
(könnte man auch 2-stellig aufziehen, also '%02i' und '>= 030800').
Danke, ist schon mal ein Ansatz.
Haste da mal ein rpmbuild -E '0%{?kern_ver} xxx.spec laufen lassen?

mit ?kern_vers kriege ich doch nur den Returncode, oder? also "0"...
Bei mir ists jedenfalls so, rpmbuild retuniert mir da ne "0".
Post by David Haller
BTW1: ich mag awk :)
Bei uns werden ganze Mail-Configs damit gestrickt oder der LDAP gefüttert :)
Post by David Haller
BTW2: auf die Schnelle seh ich grad nix in /etc/rpm/* oder
/usr/lib/rpm/* was zu dem Problem passen würde, ich lege dir also
einen "Enhancement-Bug" dazu nahe (daß ein Makro zur Kernel-Version
analog zu "%{suse_version}" etc. definiert wird).
Ich brauchs einmal, andere scheinen keine Probleme mit sowas zu haben.
Glaub für eine Person wäre ein Enhancement-Request etwas viel...



Danke
Gruß

Daniel
--
Daniel Spannbauer Systemadministration
marco Systemanalyse und Entwicklung GmbH Tel +49 8333 9233-27 Fax -11
Rechbergstr. 4-6, D 87727 Babenhausen Mobil +49 171 4033220
http://www.marco.de/ Email ***@marco.de
Geschäftsführer Martin Reuter HRB 171775 Amtsgericht München
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Lesen Sie weiter auf narkive:
Loading...