Kernel-Version in SPEC
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 ds@marco.de Geschäftsführer Martin Reuter HRB 171775 Amtsgericht München -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo, Am Mon, 13 Oct 2014, Daniel Spannbauer schrieb:
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.
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 --
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+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
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').
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".
BTW1: ich mag awk :)
Bei uns werden ganze Mail-Configs damit gestrickt oder der LDAP gefüttert :)
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 ds@marco.de Geschäftsführer Martin Reuter HRB 171775 Amtsgericht München -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (2)
-
Daniel Spannbauer
-
David Haller