From: Alexey Tourbin <at@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Cc: morozov@gmail.com
Subject: Re: [devel] git.alt build
Date: Wed, 18 Apr 2007 08:05:58 +0400
Message-ID: <20070418040558.GL5165@solemn.turbinal> (raw)
In-Reply-To: <20070417133145.GC25347@basalt.office.altlinux.org>
[-- 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 --]
next prev parent reply other threads:[~2007-04-18 4:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-17 1:29 Alexey Tourbin
2007-04-17 13:31 ` Dmitry V. Levin
2007-04-18 4:05 ` Alexey Tourbin [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070418040558.GL5165@solemn.turbinal \
--to=at@altlinux.ru \
--cc=devel@lists.altlinux.org \
--cc=morozov@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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