[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