* [devel] git.alt build
@ 2007-04-17  1:29 Alexey Tourbin
  2007-04-17 13:31 ` Dmitry V. Levin
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Tourbin @ 2007-04-17  1:29 UTC (permalink / raw)
  To: devel
[-- Attachment #1: Type: text/plain, Size: 56 bytes --]
А есть какие-нибудь наброски не тему реализации build?
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-17  1:29 [devel] git.alt build Alexey Tourbin
@ 2007-04-17 13:31 ` Dmitry V. Levin
  2007-04-18  4:05   ` Alexey Tourbin
  2007-04-20 21:29   ` Dmitry V. Levin
  0 siblings, 2 replies; 13+ messages in thread
From: Dmitry V. Levin @ 2007-04-17 13:31 UTC (permalink / raw)
  To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 293 bytes --]
On Tue, Apr 17, 2007 at 05:29:39AM +0400, Alexey Tourbin wrote:
> А есть какие-нибудь наброски не тему реализации build?
Все наброски, которые у меня есть, находятся в
git.alt:/people/ldv/packages/girar.git
Но там по поводу сборки почти ничего нет.
У тебя есть идеи?
-- 
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-17 13:31 ` Dmitry V. Levin
@ 2007-04-18  4:05   ` Alexey Tourbin
  2007-04-18  8:34     ` Sergey Vlasov
                       ` (2 more replies)
  2007-04-20 21:29   ` Dmitry V. Levin
  1 sibling, 3 replies; 13+ messages in thread
From: Alexey Tourbin @ 2007-04-18  4:05 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: morozov
[-- Attachment #1: Type: text/plain, Size: 3311 bytes --]
On Tue, Apr 17, 2007 at 05:31:45PM +0400, Dmitry V. Levin wrote:
> On Tue, Apr 17, 2007 at 05:29:39AM +0400, Alexey Tourbin wrote:
> > А есть какие-нибудь наброски не тему реализации build?
> 
> Все наброски, которые у меня есть, находятся в
> git.alt:/people/ldv/packages/girar.git
> 
> Но там по поводу сборки почти ничего нет.
> 
> У тебя есть идеи?
Мы обсуждали с 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, и результат может кардинально измениться.
В общем, трудная проблема.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-18  4:05   ` Alexey Tourbin
@ 2007-04-18  8:34     ` Sergey Vlasov
  2007-04-20 21:44     ` Dmitry V. Levin
  2008-06-19  2:17     ` Alexey Tourbin
  2 siblings, 0 replies; 13+ messages in thread
From: Sergey Vlasov @ 2007-04-18  8:34 UTC (permalink / raw)
  To: devel; +Cc: morozov
[-- Attachment #1: Type: text/plain, Size: 839 bytes --]
On Wed, Apr 18, 2007 at 08:05:58AM +0400, Alexey Tourbin wrote:
> 1) query песочницы обходится порядка одной секунды.  Если пробивать по
> песочнице порядка 6000 src.rpm пакетов, то на каждый входящий пакет
> придётся квирить песочницу порядка двух часов.
> 
> Мы обсудили с AMorozov что алгоритм замыкания зависимостей находится в
> apt-get.cc; и что этот алгоритм, вообще говоря, не реентерабельный,
> поскольку модифицирует глобальную структуру данных Cache.  Т.е. не
> существует простого способа (в цикле) существенно снизить время запроса
> к песочнице.
fork()?  Или там ещё и shared mmap модифицируется?
> 2) Ещё хуже.  На самом деле нет готовых src.rpm пакетов, по которым
> можно квирить песочницу.  Есть только git репозитарии.
Если даже отказаться от хранения src.rpm, можно хотя бы сохранять их
заголовки.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-17 13:31 ` Dmitry V. Levin
  2007-04-18  4:05   ` Alexey Tourbin
@ 2007-04-20 21:29   ` Dmitry V. Levin
  2007-04-22 12:44     ` Alexey Gladkov
  1 sibling, 1 reply; 13+ messages in thread
From: Dmitry V. Levin @ 2007-04-20 21:29 UTC (permalink / raw)
  To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 409 bytes --]
On Tue, Apr 17, 2007 at 05:31:45PM +0400, Dmitry V. Levin wrote:
> On Tue, Apr 17, 2007 at 05:29:39AM +0400, Alexey Tourbin wrote:
> > А есть какие-нибудь наброски не тему реализации build?
> 
> Все наброски, которые у меня есть, находятся в
> git.alt:/people/ldv/packages/girar.git
У Legion'а тоже есть наброски, но они почему-то лежат в
непубличном каталоге /people/legion/private/.
-- 
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-18  4:05   ` Alexey Tourbin
  2007-04-18  8:34     ` Sergey Vlasov
@ 2007-04-20 21:44     ` Dmitry V. Levin
  2007-04-20 22:00       ` Alexey Tourbin
  2008-06-19  2:17     ` Alexey Tourbin
  2 siblings, 1 reply; 13+ messages in thread
From: Dmitry V. Levin @ 2007-04-20 21:44 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: morozov
[-- Attachment #1: Type: text/plain, Size: 1327 bytes --]
On Wed, Apr 18, 2007 at 08:05:58AM +0400, Alexey Tourbin wrote:
> On Tue, Apr 17, 2007 at 05:31:45PM +0400, Dmitry V. Levin wrote:
> > On Tue, Apr 17, 2007 at 05:29:39AM +0400, Alexey Tourbin wrote:
> > > А есть какие-нибудь наброски не тему реализации build?
> > 
> > Все наброски, которые у меня есть, находятся в
> > git.alt:/people/ldv/packages/girar.git
> > 
> > Но там по поводу сборки почти ничего нет.
> > 
> > У тебя есть идеи?
> 
> Мы обсуждали с AMorozov на канале, как организовать полную regression
> пересборку сизифа при прохождении каждого отдельного пакета.
Если целью является сборочная система, функционирующая без участия
человека (с минимально возможным участием человека), то к ней лучше
приближаться постепенно.
Мне кажется, что тестирование на предмет build regression более
ресурсоёмкое, чем тестирование на предмет install regression.
Впрочем, и последнее выглядит более ресурсоёмким, чем (в среднем) сборка
одного пакета.  Единственный метод, который у нас есть, базируется на
"apt-cache unmet" и является очень ресурсоёмким в части формирования
индексов временного репозитория.
Кроме того, добро от "apt-cache unmet" ещё не даёт гарантии того, что
устанавливаемость не сломана.
Поэтому оптимизация install regression testing сейчас более актуальна.
-- 
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-20 21:44     ` Dmitry V. Levin
@ 2007-04-20 22:00       ` Alexey Tourbin
  2007-04-20 22:25         ` Dmitry V. Levin
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Tourbin @ 2007-04-20 22:00 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: morozov
[-- Attachment #1: Type: text/plain, Size: 2301 bytes --]
On Sat, Apr 21, 2007 at 01:44:06AM +0400, Dmitry V. Levin wrote:
> > Мы обсуждали с AMorozov на канале, как организовать полную regression
> > пересборку сизифа при прохождении каждого отдельного пакета.
> 
> Если целью является сборочная система, функционирующая без участия
> человека (с минимально возможным участием человека), то к ней лучше
> приближаться постепенно.
Без человека это функционировать не может.  Я это понимаю так, что нужно
уведомить maintainer'а, что входящий пакет ломает некоторые другие
пакеты (и, может быть, потребуется исправить пакет, прежде чем он
попадет в сизиф).
То есть, как бы философски, это разница между знанием и невежеством.
Я отправил в сизиф новую сборку перла и я не знаю, сломает она
что-нибудь или нет.  Нужно ждать неделю или две, когда пройдет очередная
пересборка, тогда станет ясно.  С другой стороны, если бы я заранее
знал, что будут некоторые проблемы, то я, быть может, и не отправил бы
такую сборку в сизиф.
> Мне кажется, что тестирование на предмет build regression более
> ресурсоёмкое, чем тестирование на предмет install regression.
По крайней мере новая схема сборки пакетов должна быть достаточно
гибкой, чтобы при достаточном количестве ресурсов такую regression
пересборку можно было делать.
> Впрочем, и последнее выглядит более ресурсоёмким, чем (в среднем) сборка
> одного пакета.
Что ты понимаешь под install regression?  Какие комбинации пакетов надо
тестировать на установку?
> Единственный метод, который у нас есть, базируется на
> "apt-cache unmet" и является очень ресурсоёмким в части формирования
> индексов временного репозитория.
По поводу unmet'ов тоже есть некоторые мысли.  Не все unmet'ы одинаково
критичны.  Их нужно взвешивать по количеству пакетов, которые с
появлением данного анмета становится невозможным установить.
Например, если unmet появился в пакете perl-base, то это очень-очень
плохой unmet; а если unmet появился в пакете perl-devel, то это просто
очень плохой unmet.  А бывают unmet'ы практически безобидные. :)
> Кроме того, добро от "apt-cache unmet" ещё не даёт гарантии того, что
> устанавливаемость не сломана.
Конечно.  А устанавливаемость не гарантирует работоспособности.
Пересборка в большей степени дает проверку работоспособности.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-20 22:00       ` Alexey Tourbin
@ 2007-04-20 22:25         ` Dmitry V. Levin
  2007-04-20 23:09           ` Alexey Tourbin
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry V. Levin @ 2007-04-20 22:25 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: morozov
[-- Attachment #1: Type: text/plain, Size: 3506 bytes --]
On Sat, Apr 21, 2007 at 02:00:38AM +0400, Alexey Tourbin wrote:
> On Sat, Apr 21, 2007 at 01:44:06AM +0400, Dmitry V. Levin wrote:
> > > Мы обсуждали с AMorozov на канале, как организовать полную regression
> > > пересборку сизифа при прохождении каждого отдельного пакета.
> > 
> > Если целью является сборочная система, функционирующая без участия
> > человека (с минимально возможным участием человека), то к ней лучше
> > приближаться постепенно.
> 
> Без человека это функционировать не может.
Я имею в виду систему, которая в идеале функционирует без
человека-смотрителя, а на практике вмешательство человека-смотрителя
минимально.
> То есть, как бы философски, это разница между знанием и невежеством.
> Я отправил в сизиф новую сборку перла и я не знаю, сломает она
> что-нибудь или нет.  Нужно ждать неделю или две, когда пройдет очередная
> пересборка, тогда станет ясно.  С другой стороны, если бы я заранее
> знал, что будут некоторые проблемы, то я, быть может, и не отправил бы
> такую сборку в сизиф.
И как ты предлагаешь этот вопрос решать?  Автоматически тестировать
пересборку всего, чтобы определить, пропускать ли новую сборку перла в
Сизиф, конечно, было бы здорово, если бы это тестирование не было столь
ресурсоёмким.
> > Мне кажется, что тестирование на предмет build regression более
> > ресурсоёмкое, чем тестирование на предмет install regression.
> 
> По крайней мере новая схема сборки пакетов должна быть достаточно
> гибкой, чтобы при достаточном количестве ресурсов такую regression
> пересборку можно было делать.
Конечно, новая схема сборки пакетов должна быть достаточно гибкой для
этого.  Но я не верю, что она сразу будет уметь всё.
> > Впрочем, и последнее выглядит более ресурсоёмким, чем (в среднем) сборка
> > одного пакета.
> 
> Что ты понимаешь под install regression?  Какие комбинации пакетов надо
> тестировать на установку?
install regression -- это такая ситуация: пакет A раньше устанавливался,
а теперь перестал устанавливаться.  Например, если у пакета A появился
unmet, то это install regression.
> > Единственный метод, который у нас есть, базируется на
> > "apt-cache unmet" и является очень ресурсоёмким в части формирования
> > индексов временного репозитория.
> 
> По поводу unmet'ов тоже есть некоторые мысли.  Не все unmet'ы одинаково
> критичны.  Их нужно взвешивать по количеству пакетов, которые с
> появлением данного анмета становится невозможным установить.
Это значит, что часть unmet'ов можно обрабатывать автоматически, без
привлечения человека-смотрителя.
> Например, если unmet появился в пакете perl-base, то это очень-очень
> плохой unmet; а если unmet появился в пакете perl-devel, то это просто
> очень плохой unmet.  А бывают unmet'ы практически безобидные. :)
Ну да, имеет место своеобразная транзитивность: если пакет A зависит
от пакета B, который получил unmet на пакет C, то пакет A тем самым
получил косвенный unmet на пакет C.
> > Кроме того, добро от "apt-cache unmet" ещё не даёт гарантии того, что
> > устанавливаемость не сломана.
> 
> Конечно.  А устанавливаемость не гарантирует работоспособности.
Конечно.  Но зато устанавливаемость, видимо, поддаётся автоматизированному
тестированию.
> Пересборка в большей степени дает проверку работоспособности.
Есть множество пакетов, для которых пересборочный тест является основной
характеристикой работоспособности.  Но в это множество попадает не так
много пакетов.
-- 
ldv
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-20 22:25         ` Dmitry V. Levin
@ 2007-04-20 23:09           ` Alexey Tourbin
  2007-04-20 23:18             ` Alexey Tourbin
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Tourbin @ 2007-04-20 23:09 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: morozov
[-- Attachment #1: Type: text/plain, Size: 3115 bytes --]
On Sat, Apr 21, 2007 at 02:25:47AM +0400, Dmitry V. Levin wrote:
> > То есть, как бы философски, это разница между знанием и невежеством.
> > Я отправил в сизиф новую сборку перла и я не знаю, сломает она
> > что-нибудь или нет.  Нужно ждать неделю или две, когда пройдет очередная
> > пересборка, тогда станет ясно.  С другой стороны, если бы я заранее
> > знал, что будут некоторые проблемы, то я, быть может, и не отправил бы
> > такую сборку в сизиф.
> 
> И как ты предлагаешь этот вопрос решать?  Автоматически тестировать
> пересборку всего, чтобы определить, пропускать ли новую сборку перла в
> Сизиф, конечно, было бы здорово, если бы это тестирование не было столь
> ресурсоёмким.
Ресурсы дело наживное.  Для начало нужно научиться быстро определять,
какие пакеты подлежат пересборке.  За вычетом perl-base получится
несколько сотен пакетов.  Среднее время сборки пакета, очень грубо,
около одной минуты.  Без распараллеливания получается несколько часов.
Туговато.
$ grep '^perl-[^b].*-5.8.8-alt10$' -l -r success error |wc -l
1341
$
Даже если управляться с каждым входящим пакетом за час, то получается
пропускная способность около 24 пакетов в сутки.  Нужно бы поточнее
статистику прикинуть.
И, конечно, не понятно, что делать, если обнаружено, что входящий пакет
что-либо ломает.  Очередь встаёт, пока человек не ответит да/нет.
С другой стороны, полная regression пересборка у нас всё равно проходит,
так что затраты по ресурсам сопоставимы.  Просто при полной regeression
пересборке "схлопываются" зависимости, то есть нельзя определить, какой
именно пакет сломал сборку данного пакета (если в билдруте поменялось
более одного пакета).
> > > Впрочем, и последнее выглядит более ресурсоёмким, чем (в среднем) сборка
> > > одного пакета.
> > 
> > Что ты понимаешь под install regression?  Какие комбинации пакетов надо
> > тестировать на установку?
> 
> install regression -- это такая ситуация: пакет A раньше устанавливался,
> а теперь перестал устанавливаться.  Например, если у пакета A появился
> unmet, то это install regression.
То просто попробовать установить все пакеты сизифа после прохождения
очередного пакета?
Или же просто попробовать установить сами собранные пакеты, и если они
устанавливаются, тогда нет причин думать, что и другие пакеты, которые
их требуют, не будут устанавливаться?
Последнее реализовать довольно просто.  Можно прямо в сборочный
buildroot попробовать поставить свежесобранные пакеты через rpm -Uv.
Мне пока не приходят в голову "легальные" случаи, когда такая установка
может не пройти.  То есть сборочные зависимости пакета я вижу как
надмножество установочных зависимостей.  Ну или аптом ставить, если
выяснится, что в ряде случаев это предположение неверно.  Прямо в hasher
бы такую штуку вделать.
> Есть множество пакетов, для которых пересборочный тест является основной
> характеристикой работоспособности.  Но в это множество попадает не так
> много пакетов.
Но это лучшее, что у нас есть для "раннего" автоматеческого
тестирования, без привлечения квалифицированных тестеров.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-20 23:09           ` Alexey Tourbin
@ 2007-04-20 23:18             ` Alexey Tourbin
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey Tourbin @ 2007-04-20 23:18 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: morozov
[-- Attachment #1: Type: text/plain, Size: 1042 bytes --]
On Sat, Apr 21, 2007 at 03:09:09AM +0400, Alexey Tourbin wrote:
> Или же просто попробовать установить сами собранные пакеты, и если они
> устанавливаются, тогда нет причин думать, что и другие пакеты, которые
> их требуют, не будут устанавливаться?
> 
> Последнее реализовать довольно просто.  Можно прямо в сборочный
> buildroot попробовать поставить свежесобранные пакеты через rpm -Uv.
> Мне пока не приходят в голову "легальные" случаи, когда такая установка
> может не пройти.  То есть сборочные зависимости пакета я вижу как
> надмножество установочных зависимостей.  Ну или аптом ставить, если
> выяснится, что в ряде случаев это предположение неверно.  Прямо в hasher
> бы такую штуку вделать.
Нет, бывают случаи, когда из одного пакета собирается несколько
конфликтующих backend'ов.
В общем, если "устанавливаемость" приравнять к "устанавливаемости по
зависимостям", то эту задачу лучше всего решать на уровне апта, который
предварительно нужно захачить, чтобы алгоритм замыкания зависимостей
работал в цикле.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-20 21:29   ` Dmitry V. Levin
@ 2007-04-22 12:44     ` Alexey Gladkov
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey Gladkov @ 2007-04-22 12:44 UTC (permalink / raw)
  To: ALT Devel discussion list
Dmitry V. Levin пишет:
> У Legion'а тоже есть наброски, но они почему-то лежат в
> непубличном каталоге /people/legion/private/.
Ну это неправда giter-factory.git лежал публично. :)
Переложил репозиторий из привата:
git,alt:/people/legion/packages/giter-factory.git
-- 
Rgrds, legion
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2007-04-18  4:05   ` Alexey Tourbin
  2007-04-18  8:34     ` Sergey Vlasov
  2007-04-20 21:44     ` Dmitry V. Levin
@ 2008-06-19  2:17     ` Alexey Tourbin
  2008-06-19  2:18       ` Alexey Tourbin
  2 siblings, 1 reply; 13+ messages in thread
From: Alexey Tourbin @ 2008-06-19  2:17 UTC (permalink / raw)
  To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 3438 bytes --]
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.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [devel] git.alt build
  2008-06-19  2:17     ` Alexey Tourbin
@ 2008-06-19  2:18       ` Alexey Tourbin
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey Tourbin @ 2008-06-19  2:18 UTC (permalink / raw)
  To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 454 bytes --]
On Thu, Jun 19, 2008 at 06:17:14AM +0400, Alexey Tourbin wrote:
> В query-rebuild.git есть вариант, как можно проквирить *.src.rpm и
> отсеить те из них, которые нуждаются в тестовой пересборке.  Это всё
> равно занимает достаточно много времени (несколько минут), но не
> паталогически много времени.  И здесь всё ещё нельзя отказаться от
> src.rpm.  Чтобы отказаться от src.rpm нужно "кешировать" BuildRequires.
Please ignore this message. :)
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply	[flat|nested] 13+ messages in thread
end of thread, other threads:[~2008-06-19  2:18 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-04-17  1:29 [devel] git.alt build Alexey Tourbin
2007-04-17 13:31 ` Dmitry V. Levin
2007-04-18  4:05   ` Alexey Tourbin
2007-04-18  8:34     ` Sergey Vlasov
2007-04-20 21:44     ` Dmitry V. Levin
2007-04-20 22:00       ` Alexey Tourbin
2007-04-20 22:25         ` Dmitry V. Levin
2007-04-20 23:09           ` Alexey Tourbin
2007-04-20 23:18             ` Alexey Tourbin
2008-06-19  2:17     ` Alexey Tourbin
2008-06-19  2:18       ` Alexey Tourbin
2007-04-20 21:29   ` Dmitry V. Levin
2007-04-22 12:44     ` Alexey Gladkov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git