[Devel] Портирование linux-cifs на другие дистрибутивы
Konstantin Baev
=?iso-8859-1?q?kipruss_=CE=C1_etersoft=2Eru?=
Чт Окт 9 01:28:40 MSD 2008
Vitaly Lipatov пишет:
> В сообщении от 5 октября 2008 Evgeny Sinelnikov написал(a):
>
>> Здравствуйте,
>>
>> 24 сентября 2008 г. 15:50 пользователь Konstantin Baev
>>
>> <kipruss на etersoft.ru> написал:
>>
>>> Boris Savelev пишет:
>>>
>>>> %_initdir/%name build
>>>>
> добавьте || :
> в конце строки пожалуйста
> и надеюсь build возвращает false если не собралось
>
>
В спеке была строчка
%_initdir/%name build && %_initdir/%name start ||:
Но я её убрал недели 3 назад из-за опасений, что это будет как-то ломать
инсталлер. Вернуть могу как только будет на то согласие.
> Он никогда не требовался, так что жду объяснений, откуда эта зависимость
> появилась.
>
>
>
Про зависимость от rpm-build-compat:
ранее, были одни исходники на все ядра и были 2 разных скрипта -
build.sh и buildmodule.sh
теперь, поскольку в пакете собранного модуля нет, остался один
buildmodule.sh, но в него перекочевали некоторые части из build.sh, а
также было дописано некоторое количество дополнительного кода.
вот кусок из functions.sh (этот скрипт вызывается в начале buildmodule.sh)
DISTR_VENDOR=/usr/bin/distr_vendor
test -x $DISTR_VENDOR || fatal "Can't find distr_vendor"
get_sd()
{
BASE_KERNEL_SOURCES_DIR=
BASE_KERNEL_SOURCES_DIR=`grep -i $1 kernel_src.list | head -n1 | cut
-d" " -f 2 2>/dev/null`
}
get_etercifs_sd()
{
ETERCIFS_SOURCES_LIST=
ETERCIFS_SOURCES_LIST=`grep -i $1 etercifs_src.list | head -n1 | cut
-d" " -f 2 2>/dev/null`
}
И кусок кода из buildmodule.sh
. ./functions.sh
MODULEFILENAME=etercifs.ko
[ -n "$KERNELVERSION" ] || KERNELVERSION=`uname -r`
KERNEL=${KERNELVERSION%%-*}
get_src_dir || fatal "Distro $($DISTR_VENDOR -e) is not supported yet
for kernel sources"
get_etercifs_src_dir || fatal "Distro $($DISTR_VENDOR -e) is not
supported yet for etercifs sources"
[ -n "`ls $ETERCIFS_SOURCES_LIST`" ] || fatal "Etercifs kernel module
sources does not installed!"
KERNEL_SOURCE_ETERCIFS_LINK=`ls -1 $ETERCIFS_SOURCES_LIST | grep $KERNEL
| sort -r | head -n 1`
KERNEL_SOURCE_ETERCIFS=`readlink -f $KERNEL_SOURCE_ETERCIFS_LINK`
[ "$KERNEL_SOURCE_ETERCIFS" ] || fatal "Etercifs kernel module sources
for current kernel does not installed!"
То есть в зависимости от вендора мы ищем в нужном месте исходники ядра и
исходники модуля. Ранее такой необходимости не было.
То, что подобной зависимости быть не должно - понятно. Избавимся.
Завел багу: http://bugs.etersoft.ru/show_bug.cgi?id=2568
Как вариант: поставлять этот скрипт вместе с нашим пакетом, ставить его
в /usr/share/etercifs или аналог - и оттуда запускать. Это самый простой
вариант.
--
Konstantin Baev
kipruss на etersoft.ru
Подробная информация о списке рассылки devel