On Thu, Jul 14, 2005 at 05:06:11PM +0400, Sergey Vlasov wrote: > Как-то нужно передать информацию для modpost; возможно, придётся положить > собранные файлы модулей ещё и в kernel-headers-ieee80211-%flavour, а потом > как-то их подсовывать при сборке зависимых модулей. Именно так и пришлось сделать (причём в kernel-headers-ieee80211-%flavour кладутся даже не *.ko, а *.o, потом при сборке модулей эти файлы копируются в сборочный каталог, в .tmp_versions/ создаются файлы *.mod, а потом сборочная система ядра ещё и собирает из них *.ko). Некрасиво, но другого способа быстро решить эту проблему я пока не вижу. Если делать совсем правильно, нужно патчить scripts/mod/modpost.c в ядре, чтобы добавить туда поддержку генерации и использования нескольких файлов типа имеющегося сейчас Module.symvers. --- modules/ieee80211/kernel-modules-ieee80211.spec.modpost 2005-07-14 15:20:40 +0400 +++ modules/ieee80211/kernel-modules-ieee80211.spec 2005-07-14 18:33:02 +0400 @@ -63,6 +63,11 @@ modules which interface with these drive %install %__mkdir_p %buildroot/%module_dir %__cp -a *.ko %buildroot/%module_dir +%__mkdir_p %buildroot/%_prefix/src/linux-%kversion-%flavour/drivers/net/ieee80211 +for f in *.ko; do + mod="${f%.ko}" + %__cp -a "$mod.o" %buildroot/%_prefix/src/linux-%kversion-%flavour/drivers/net/ieee80211/ +done %__mkdir_p %buildroot/%_prefix/src/linux-%kversion-%flavour/include/net %__cp -a net/* %buildroot/%_prefix/src/linux-%kversion-%flavour/include/net/ echo "%name = %version-%release" \ @@ -81,6 +86,7 @@ echo "%name = %version-%release" \ %files -n kernel-headers-%module_name-%flavour %defattr(644,root,root,755) %_prefix/src/linux-%kversion-%flavour/include/net/* +%_prefix/src/linux-%kversion-%flavour/drivers/net/ieee80211 %_prefix/src/linux-%kversion-%flavour/kernel-modules-%module_name.release %changelog --- modules/ipw2100/kernel-modules-ipw2100.spec.modpost 2005-07-14 15:26:32 +0400 +++ modules/ipw2100/kernel-modules-ipw2100.spec 2005-07-14 18:33:47 +0400 @@ -53,6 +53,16 @@ PRO/Wireless 2100 Network Connection min %build . %_usrsrc/linux-%kversion-%flavour/gcc_version.inc + +%__mkdir .tmp_versions +%__mkdir ieee80211 +for f in %_usrsrc/linux-%kversion-%flavour/drivers/net/ieee80211/*.o; do + mod="${f##*/}" + mod="${mod%.o}" + echo "$(pwd)/ieee80211/$mod.ko" > .tmp_versions/"$mod".mod + %__cp -a "$f" ieee80211/ +done + %make_build -C %_usrsrc/linux-%kversion-%flavour SUBDIRS=$PWD \ LINUXSRC=%_usrsrc/linux-%kversion-%flavour/ \ IEEE80211_INC=%_usrsrc/linux-%kversion-%flavour/include --- modules/ipw2200/kernel-modules-ipw2200.spec.modpost 2005-07-14 15:25:09 +0400 +++ modules/ipw2200/kernel-modules-ipw2200.spec 2005-07-14 18:40:23 +0400 @@ -53,6 +53,16 @@ PRO/Wireless 2200 Network Connection min %build . %_usrsrc/linux-%kversion-%flavour/gcc_version.inc + +%__mkdir .tmp_versions +%__mkdir ieee80211 +for f in %_usrsrc/linux-%kversion-%flavour/drivers/net/ieee80211/*.o; do + mod="${f##*/}" + mod="${mod%.o}" + echo "$(pwd)/ieee80211/$mod.ko" > .tmp_versions/"$mod".mod + %__cp -a "$f" ieee80211/ +done + %make_build -C %_usrsrc/linux-%kversion-%flavour SUBDIRS=$PWD \ LINUXSRC=%_usrsrc/linux-%kversion-%flavour/ \ IEEE80211_INC=%_usrsrc/linux-%kversion-%flavour/include