[devel] git.alt build
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Чт Июн 19 06:17:14 MSD 2008
On Wed, Apr 18, 2007 at 08:05:58AM +0400, Alexey Tourbin wrote:
> Мы обсуждали с AMorozov на канале, как организовать полную regression
> пересборку сизифа при прохождении каждого отдельного пакета.
> Естественно, пересобирать нужно не всё, а только те пакеты, которые
> как-либо зависят он вновь пришедшего пакета.
>
> Точнее алгоритм regression переcборки такой:
>
> 1) учитываем все подпакеты вновь пришедшего пакета;
> 2) инициализируем query-buildroot с учетом поступивших подпакетов;
> 3) если какой-либо подпакет входит в basesystem+rpm-build, т.е. встал
> в query-buildroot, тогда организуется низкоприоритетная очередь
> "пересобрать весь сизиф"; дальше это не рассматривается; точнее,
> содержимое query-билдрута не учитвается;
> 4) query-buildroot в который встал basesystem+rpm-build я далее называю
> query-песочницей, или просто песочницей. Теперь нужно *каждый* src.rpm
> пакет пробить по песочнице в смысле print_uris, чтобы посмотреть, не
> встанет ли в buildroot при его сборке какой-либо вновь учтенный пакет;
> 5) если обнаруживается, что для сборки очередного src.rpm пакета в
> buildroot нужно поставить некоторые из только что учтенных пакетов,
> тогда src.rpm пакет является предметом regression пересборки.
>
> В итоге должны пересобираться все src.rpm пакеты, такие что в buildroot
> у них встает один из вновь прибывших подпакетов.
>
> Здесь есть две проблемы:
>
> 1) query песочницы обходится порядка одной секунды. Если пробивать по
> песочнице порядка 6000 src.rpm пакетов, то на каждый входящий пакет
> придётся квирить песочницу порядка двух часов.
>
> Мы обсудили с AMorozov что алгоритм замыкания зависимостей находится в
> apt-get.cc; и что этот алгоритм, вообще говоря, не реентерабельный,
> поскольку модифицирует глобальную структуру данных Cache. Т.е. не
> существует простого способа (в цикле) существенно снизить время запроса
> к песочнице.
>
> 2) Ещё хуже. На самом деле нет готовых src.rpm пакетов, по которым
> можно квирить песочницу. Есть только git репозитарии. Запуск gear и
> создание pkg.tar, который можно будет полноценно проквирить, обойдется
> ещё в какое-то время. Хуже того, полноценный квиринг pkg.tar
> подразумевает постепенной наращивание билдрута (различие между
> BuildRequires и BuildRequires(pre)). То есть, грубо говоря, нужно
> "начать собирать" пакет, чтобы понять, нужны ему какие-либо из вновь
> учтенных пакетов или нет.
>
> То есть вопрос который мы обсуждали на канале стоит так: в сизиф прошел
> новый пакет (в виде подпакетов). Какие теперь пакеты подлежат
> пересборке в тестовых целях (с новым пактом, в виде подпакетов)?
>
> Как я уже писал, существует более простая модель. Можно просто
> сохранять билдлог предыдущей сборки и проверять по этому логу что
> становится в билдрут. Но это не разрешает проблемы Provides+Obsolets.
> Например пришел пакет libstdc++4.2, а в старых логах libstdc++4.1, тогда
> нет хорошего способа сказать, что вместо libstdc++4.1 теперь apt
> поставит libstdc++4.2, и результат может кардинально измениться.
В query-rebuild.git есть вариант, как можно проквирить *.src.rpm и
отсеить те из них, которые нуждаются в тестовой пересборке. Это всё
равно занимает достаточно много времени (несколько минут), но не
паталогически много времени. И здесь всё ещё нельзя отказаться от
src.rpm. Чтобы отказаться от src.rpm нужно "кешировать" BuildRequires.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20080619/e2c6f248/attachment-0002.bin>
Подробная информация о списке рассылки Devel