[d-kernel] Макросы поддерживаемых архитектур для сборки kernel-image

Anton D. Kachalov mouse на altlinux.org
Чт Июл 14 18:16:38 MSD 2005


Вот изготовил пару макросов.

<кусь>
%_kernel_config_offset 1
%_kernel_arches %nil

%set_kernel_arches() %global _kernel_arches %* \
%( \
    echo "ExclusiveArch: %*" \
    n=%_kernel_config_offset \
    for arch in %_kernel_arches; do \
        echo "Source$n: config-%kernel_base_version-%flavour.$arch" \
        n=$(($n+1)) \
    done \
)

%get_kernel_config() %{expand:%%SOURCE%( \
    n=%_kernel_config_offset \
    for arch in %_kernel_arches; do \
        if [ "$arch" = "%1" ]; then \
            echo $n \
            exit \
        fi \
        n=$((n+1)) \
    done \
    echo "__No_such_architecture__%{1}" \
)}
</кусь>

Пользоваться так. В самом начале спека вместо Source1: config-... и
ExclusiveArch: ... вставляем макрос: %set_kernel_arches i586 или

%set_kernel_arches i586 i686 athlon x86_64

При этом конфиги для каждой архитектуры должны именоваться как
config-%kernel_base_version-%flavour.архитектура
Введение более жёсткий правил на --target сделает более корректную
сборку ядер под определённый процессор. Т.е. если у нас нет config.i686,
то собрать ядрышко с --target=i686 не получится, что само по себе верно,
т.к. конфиг ядра создан для i586, а не i686.

Далее, в месте, где копируется конфиг на место дефолтного в сборочном
дереве, нужно написать что-то вроде такого:

%__cp -vf %{get_kernel_config %base_arch} .config

Замечания, предложения? Данные макросы, в первую очередь, созданы
необходимостью сборки из одного src.rpm ядер как и под i586, так и под
x86_64.

--
mouse



Подробная информация о списке рассылки devel-kernel