Bug 6795

Summary: New macros
Product: Sisyphus Reporter: evseev <evseev>
Component: kernel-build-toolsAssignee: Sergey Vlasov <vsu>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: boyarsh, glebfm, kernelbot, ldv, mike, rider, sbolshakov, shrek, sin, vitty, vsu, vt, zerg
Version: unstable   
Hardware: all   
OS: Linux   

Description evseev 2005-05-08 03:56:26 MSD
По мотивам опакечивания 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 Sergey Vlasov 2005-05-10 18:57:04 MSD
Нет, так дело не пойдёт.  Модули для ядра должны собираться отдельно от
userspace-части - хотя бы потому, что при обновлении ядра необходимо
пересобирать и модули, и для автоматизации этого процесса шаблон spec для пакета
с модулями должен лежать в kernel CVS.

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

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

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