Bug 6795 - New macros
: New macros
Status: CLOSED NOTABUG
: Sisyphus
(All bugs in Sisyphus/kernel-build-tools)
: unstable
: all Linux
: P2 enhancement
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-05-08 03:56 by
Modified: 2007-04-21 16:16 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-05-08 03:56:26
По мотивам опакечивания mpio, который включает в себя ядерный модуль, //me 
пришёл к двум выводам:
1) внутри спека надо знать версию ядра, чтобы делать к ней привязку пакета с 
модулем;
2) при определении версии надо ориентироваться не на `uname -r`, а на 
/usr/include/linux/version.h, в том числе переучивать configure.

Предлагаемые макросы для /etc/rpm/macros.d/kernel:

%define kernel_version      %(grep UTS_RELEASE %kinclude/version.h | awk
'{print 
$3}' | tr -d '"')
%define kernel_base_version %(A=%kernel_version; echo ${A%%%%-*})
%define kernel_release      %(A=%kernel_version; echo ${A##*-})
%define kernel_flavour      %(A=%kernel_version; B=${A#*-}; echo ${B%%-*})
%define kernel_modules_basedir  /lib/modules/%kernel_version

# за правильность регулярного выражения не ручаюсь, но его смысл, надеюсь, 
понятен..
%define patch_detect_kernel_version subst 's,(`uname -r`)|($\(uname -r\)),%
kernel_version,g'

%define kernel_module_basename  kernel-modules-%name
%define kernel_module_name      %kernel_module_basename-%kernel_flavour
%define kernel_module_provides  %kernel_module_basename-%kernel_version

Пример применения можно посмотреть в mpio.spec
Steps to Reproduce:
x
Actual Results:  
x

Expected Results:  
x
------- Comment #1 From 2005-05-10 18:57:04 -------
Нет, так дело не пойдёт.  Модули для ядра должны собираться отдельно от
userspace-части - хотя бы потому, что при обновлении ядра необходимо
пересобирать и модули, и для автоматизации этого процесса шаблон spec для
пакета
с модулями должен лежать в kernel CVS.

В качестве образца можно посмотреть пакеты lm_sensors, fglrx_glx - там при
сборке пакета с userspace-частью дополнительно собирается соответствующий пакет
kernel-source-%module_name, содержащий исходники для сборки модулей ядра. 
Затем
этот собранный пакет используется при сборке пакетов
kernel-modules-%module_name-%flavour (для каждого варианта ядра собирается свой
пакет).

Пакет mpio в таком виде никуда не годится.

Модуль, кстати, содержит множество ошибок, и к тому же его вообще не следовало
писать - для такого обмена с устройством предназначена usbfs и использующая её
библиотека libusb.