[d-kernel] kernel policy
Peter Novodvorsky
=?iso-8859-1?q?nidd_=CE=C1_myxomop=2Ecom?=
Вт Апр 15 22:10:45 MSD 2003
ed на sam-solutions.net (Ed V. Bartosh) writes:
> n> Есть два вида патчей:
>
> n> kernel-patch-feat-%{upsteram_name}
> n> kernel-patch-fix-%{upstream_name}
> Предлагаю убрать patch- из названия:
> kernel-feat-%{upsteram_name}
> kernel-fix-%{upstream_name}
>
> По-моему достаточно информативно и короче.
это не информативно. это не говорит, что это -- патч. Может ещё
-source- убрать?
> Предлагаю сделать пакет kernel-build-tools с макросами/скриптами/etc
> применяющимися при сборке ядер.
> У меня уже есть, что туда положить :)
окей.
>
> n> 1.2 Внешние модули.
> n> -------------------
>
> n> Внешними модулями называются модули, исходные файлы которых
> n> поставляются не в виде патчей и которые можно собрать отдельно от
> n> ядра.
>
> n> Пакеты с такими собранными модулями должны называться
> n> kernel-<сокращённое название набора модулей>-<версия ядра с которым
> n> собраны модули>-<flavour ядра с которым собраны модули>.
> Предлагаю kernel-module-..., соответственно kernel-module-название-headers и
> kernel-module-название-source
>
> И еще - а зачем вообще эти модули нужны ? Предлагаю избавиться от них
> или хотя бы минимизировать их количество.
> Или описать здесь принципы выноса бинарных модулей в отдельный пакет.
> Я как-то до сих пор их не уяснил :(
Это те модули которые уже вынесены. См. kernel-alsa-2.4.21pre-std-up
src rpm. Нет, не судьба называть их kernel-module.
>
> n> 1.4 Пакет с ядром.
> n> ------------------
>
> n> Такой пакет должен называться kernel-image-<версия ядра>-<flavour
> n> ядра>.
> Что есть flavor в данном случае ?
> Может flavor-subflavor (std-up) ?
Да-да.
>
> n> 2. Versioning пакетов.
> n> ----------------------
>
> n> Пакетам с feat патчами желательно присваивать версии, полученные из
> n> upstream. Если upstream не делает versioning, допустимо называть их по
> n> дате последнего изменения upstream в формате ddmmyy.
>
> n> Пакетам с fix патчами обязательно присваивать версии по дате
> n> запаковывания в формате ddmmyy.
> Здесь можно привести формат имени таких пакетов.
secfixes. будут выглядеть именно так.
>
> n> 3.1 Патчи.
> n> ----------
>
> n> /usr/src/patches/<имя_патча>/* патчи
> /usr/src/kernel/patches/<имя_патча>/*
>
> n> patches/apply/<имя_патча> программа, которая
> /usr/src/kernel/patches/apply/<имя_патча>
>
окей-окей.
> Вместе с патчами могут ставиться и тарболы, предлагаю их
> ставить в /usr/src/kernel/patches/src/<имя_патча>/
> В отдельный пакет с сорцами уж точно нет смысла это выносить.
Да, но то как патч распологает свои файлы, -- не дело полиси, в этом
разбирается скрипт apply.
>
> n> прикладывает патчи
> Считаю, что apply-программы вещь опциональная, а стандартное
> приложение патчей должно быть выполнено в виде макроса.
> Такой макрос уже есть.
Нет, не опциальная. Если нужно, -- можно сделать
/usr/lib/kernel-build-tools/apply, а все apply программы будут просто
соурсить этот файл.
>
> n> Патчи внутри каталога могут находиться в любом расположении, это не
> n> определяется данным документом.
> Предлагаю определить, иначе будет затруднено вынесение общего
> функционала в макрос.
В среднем, будет один и тот же алгоритм. Но надо оставить за
патче-пакето-твроителями полную свободу в том, как и что патчить.
>
> n> Программа прикладывающая патч, будучи вызванная из каталога с исходными
> n> текстами ядра, обязана приложить к ним нужные патчи или возвратить 1 в
> n> случае ошибки прикладывания. Программа может пользоваться следующими
> n> переменными окружения заданными при запуске в среде:
> n> - APPLIED_PATCHES, переменная содержит список названий уже приложенных
> n> патчей через запятую.
> n> - KVER, версия ядра, к которой нужно приложить патч.
> Не уверен, что это нужно.
Нужно. Почему не нужно?
>
> n> 3.2 Пакет с исходными текстами.
> n> --------------------------------
>
> n> /usr/src/<имя_пакета>-source-<версия>.tar.gz
> n> ....
> Это для самого ядра и для модулей ?
>
> Вот мои пожелания, которые я не успел отправить, вернее их часть.
> Примите во внимание, плз:
>
> Принципы сборки/установки:
> 1. Тарболы с сорцами ядер устанавливаются в /usr/src
> 2. Пачти называются NN-название.patch, где NN определяет порядок приложения.
> устанавливаются в /usr/src/kernel/patches/название_пакета/
Это не регулируется policy.
> 3. Условное приложение патчей достигается путем установки
> патча в каталог /usr/src/kernel/patches/название_пакета/название_required_пакета
> Такой патч будет приложен только при условии того, что приложены
> патчи из пакета 'название_required_пакета'
Это рекоммендованный но не обязательный способ.
> 4. При условии успешного приложения пакета патчей в каталоге ./patches
> соответствующего дерева kernel sources должен создаваться файл
> APPLIED_имя_пакета
Это рекоммендация.
> 5. Тарболы с сорцами, используемыми пакетом с патчами устанавливаются в
> /usr/src/kernel/patches/src/название_пакета/
это рекоммендация.
> 6. Стандартные действия по установке патчей производятся с помощью
> макроса(ов) из пакета kernel-build-tools
шелл-библиотеки из пакета kernel-build-tools, которая соурсится каждым
из apply-скриптов.
> 7. Нестандартная действия по установке/приложению патчей производятся
> в скриптах имя_пакета-apply и устанавливаются в
> /usr/src/kernel/patches/apply
Не понимаю. Зачем делать условный оператор?
> 8. Распаковка sources, приложение патчей производится
> при сборке kernel-image
Да.
> 9. В репозитарии не должно быть бинарных пакетов с модулями, все
> модули должны находиться в соответствующем kernel-image
Нет. Все модули, которые могут собираться отдельно от ядра собираются
отдельно от ядра. как то: alsa, i2c, lm_sensors, и так далее,
см. сизиф.
Спасибо за комментарии,
Пётр.
--
Peter Novodvorsky nidd на myxomop.com
http://people.altlinux.ru/~nidd Deadheads, unite!
Подробная информация о списке рассылки devel-kernel