ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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