[d-kernel] [RFC] strict BuildRequires for kernel patches

Sergey Vlasov vsu на altlinux.ru
Вс Июл 10 23:01:17 MSD 2005


On Sun, Jul 10, 2005 at 09:10:43PM +0300, Alex Yustasov wrote:
> On Sun, Jul 10, 2005 at 08:55:51PM +0400, Sergey Vlasov wrote:
> > Я вишу два варианта борьбы с этим безобразием:
> > 
> > - либо явно прописывать в spec-файлах ядер используемые версии пакетов
> >   с патчами (неудобно);
> > 
> > - либо брать текущие версии пакетов с патчами на момент сборки пакета
> >   с ядром (предполагая, что мантейнер соберёт ядро с правильными
> >   патчами, а после этого src.rpm не будет пересобираться).
> Может еще для ядра, которое пошло в сизиф,  где-нибудь сохранять набор
> патчей, с которыми оно было собрано?

Версии патчей, использованные при сборке, сейчас пишутся в
%description; старые версии патчей можно вытащить из kernel CVS (за
исключением нескольких пакетов, собирающихся "левым" образом).
Естественно, чтобы собрать в hasher именно старое ядро, нужно
использовать соответствующий старый репозиторий (в частности, не
содержащий более новых пакетов kernel-{fix,feat}-* - иначе при сборке
будут использованы новые версии).

> Или собирать пакет, в котором будет содержимое
> hasher/chroot/usr/src/kernel/patches/. Можно будет собрать такое же
> ядро.

Каким образом - руками?

> > 2) Использование при сборке ядра слишком новых пакетов с патчами также
> > может привести к возникновению неприятных проблем.  Патчи для новой
> > версии ядра довольно часто подходят и к старым версиям, но в новых
> > пакетах kernel-fix-* могут быть удалены патчи, которые были нужны для
> > старых версий ядра - в результате ядро, собранное по какой-то причине
> > с таким новым kernel-fix-*, не будет содержать нужных исправлений.
> > 
> > Для предотвращения таких ситуаций можно явно объявлять версии ядер, к
> > которым подходят патчи, например, добавив в пакеты с патчами Provides
> > вида kernel-fix-core(2.4.29), kernel-fix-core(2.6.12).  При переходе
> Может kernel-fix-core(2.6.12-altN)?

Тогда уж kernel-fix-core(2.6.12-std26-altN).  Но это получится
опять-таки явное прописывание версий всех патчей, только не в
spec-файле kernel-image-*, а по всем использованным пакетам с патчами.
Кроме того, пропадает возможность собрать свой вариант ядра на базе
имеющихся kernel-{fix,feat}-*, не трогая эти пакеты.

Кстати, устаревшие пакеты kernel-image-* можно обнаружить при
автоматической пересборке, даже если до действительной несобираемости
дело ещё не дошло - по несовпадению исходного и пересобранного src.rpm
(сейчас отличается только %description, в случае автоматического
проставления зависимостей на пакеты с патчами будут ещё и различия в
BuildRequires).  Хотя будет множество ложных срабатываний (например,
все пакеты с ядрами 2.4.x будут объявлены устаревшими после обновления
ядер 2.6.x, поскольку многие пакеты с патчами для этих ядер общие).
Так что такую проверку ввести не получится (ну разве что где-нибудь
выкладывать результаты для информации, но без рассылки спама).  Или же
придётся распилить пакеты с патчами на отдельные для 2.4 и 2.6 (но
сколько же тогда будет этих пакетов...).
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : http://lists.altlinux.ru/pipermail/devel-kernel/attachments/20050710/f47f573e/attachment-0001.bin


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