ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: [devel] giter-factory idea
Date: Mon, 17 Sep 2007 02:15:47 +0400
Message-ID: <20070916221547.GZ5297@solemn.turbinal> (raw)
In-Reply-To: <46EDA0FE.7020003@solin.spb.ru>

[-- Attachment #1: Type: text/plain, Size: 6071 bytes --]

On Mon, Sep 17, 2007 at 01:32:46AM +0400, Aleksey Avdeev wrote:
> > В общем, у меня есть некоторый набор "правильных идей", он касается
> > первичного тестирования пакетов при сборке из gear.  Большая часть этих
> > идей была озвучена здесь (в списке devel@), некоторые принципиально
> > важные пояснения были в частной переписке.  Я могу продублировать
> > пояснения здесь, хотя вряд ли это что-то даст, потому что нужно очень
> > хорошо понимать, о чем идет речь.
> 
>   Хотелось бы услышать. (Для возможности подумать идею в фоновом режиме.)

Ваш стиль коммитов в git.alt не слишком обнадеживает насчет
продуктивности обдумывания.  Тем не менее.

Есть прямая аналогия между коммитами в git и прохождением пакетов
в репозитарий.

Существует "хед" репозитария.  Хед сдвигается, когда пакет проходит
в сизиф.  Перед сдвигом хеда выполняется ряд проверок.  Если проверки
отваливают, то "сдвиг хеда" невозможен, а формируется отдельный "бранч
репозитария" (который замораживается на некоторое время, пока не станет
ясно, насколько там серьезные ошибки).  В дальнейшем этот бранч либо
удаляется (если ошибки серьезные), либо происходит мёрж этого бранча
в хед (если все специфические ошибки удалось разрулить).

Короче, начать с самого примитива и закончить самым заумным мне сейчас
будет сложно.  Я приведу несколько кусков текста, которые я написал в
частной переписке.  Типа кому надо тот поймёт.

-- 

> > В схеме с подтверждением вручную очень желательно иметь идентификатор [задания]
> Что это "подтверждение вручную" ?

Это моя идея внедрения первичного тестирования в giter-factory.
Сразу публиковать пакеты на автомате нельзя.  Сейчас вроде как
подразумевается квалифицированная проверка перед подписью и публикацией,
а если пакет автоматически опубликовался, то "отозвать" его задним
числом уже нельзя.

Значит, в автоматической системе перед публикацией будет выполняться
ряд проверок.  Минимально что должно проверяться -- это целостность
репозитария при внедрении в него новых пакетов.  В частности это
unmet'ы и возможность инициализации нового билдрута.  Представляешь
что будет если пакет опубликовался и --initroot перестал работать?!

Дальше надо будет внедрять "полную пересборку сизифа", чтобы выяснить
ломают новые пакеты что-нибудь по возможности сборки или нет.

Соответственно, если обнаружена "подозрительная ситуация", то пакет
(точнее, весь task) ставится "на подтверждение вручную".  Думаю что
можно будет обнаруживать разные классы атак на целостность репозитария.
В зависимости от классификации атаки подтверждения со стороны самого
maintainer'а может быть достаточно или не достаточно (во втором случае
требуется подтверждение со стороны "авторитета", т.е. грубо говоря
ldv|legion).

Подтверждение вручную ломает всю идею сериализации.  Если task встал
на подтверждение вручную, то этот task не должен задерживать продвижение
очереди.  Соответственно, могут возникать очень нетривиальные ситуации:
что делать с подтверждением вручную, если оно пришло слишком поздно,
и фигурально выражаясь, погода изменилась и ветер дует теперь дует в
другую сторону?  Но и тут можно кое-что придумать.  В простейшем случае
можно просто перекладывать "старые" пакеты в "новый" репозитарий, но на
самом деле это никуда не годится.  Здесь помогает аналогия мёржа.  Нужно
"смёржить" старые пакеты из "бранча" (таска), который встал на
подтверждение вручную, в текущий бранч master (новый репозитарий).
Стратегии мёржа могут быть разные.  Простейшая стратегия это как раз
нормальная формализация "перекладывания пакетов".  В бранче сидит
"операция мёржа", которая активизируется при подтверждении вручную:

        rm pkg1-subpkg1-v1.i586.rpm
        rm pkg1-subpkg2-v1.i586.rpm
        rm pkg1-v1.src.rpm
        add pkg1-subpkg1-v2.i586.rpm
        add pkg1-subpkg2-v2.i586.rpm
        add pkg1-v2.src.rpm

Если все команды rm могут быть выполнены на master'е, то данный мёрж 
всё ещё возможен.  Если же мёрж невозможен, то таск отменяется.  Можно
будет делать что-то типа авто-ребейса.

Потом можно будет сделать более продвинутые стратегии мёржа,
в части уточнение возможности пересборки пакетов и т.д.

-- 

На самом деле rm и add должны выполняться с большей гранулярностью.

        rm name SVR filename
        add name SVR filename

Гранулярность в rm страхует от удаления новой сборки в которой
добавился serial.  А гранулярность add страхует от того, что пакет
с именем name но другим SVR/filename был уже добавлен.

Но это детали.  Суть в том, что в принципе "аналогия операции мёржа"
позволяет справляться с нарушением сериализации.  Очень живительная
аналогия, я когда её понял то прямо обрадовался.  То есть можно точно
определить, изменилась погода или нет.  По крайней мере на уровне
возможности "перекладывания пакетов".

-- 

> Я хочу сократить вмешательство человека до минимума.
> [...]

Я попытался раскрыть идею в соседнем письме.  Смысл как раз в том, чтобы
формализовать весь набор действий, который выполняет квалифицированный 
специалист при проверке и подписи репозитария.  То есть работы на самом
деле должно сократиться.  То что	<...делается...>
вручную или полу-автоматически при помощи каких-то скриптов, будет
преподнесено на блюдечке с голубой каёмочкой.

Более того, большую часть "подтверждений вручную" можно будет отдать
на откуп самим maintainer'ам.  Пускай сами подтверждают или отменяют,
чево они там насобирали.  Подтверждение со стороны авторитета явно
требуется только при "конфликтах".  Например я добавил в пакет perl
подпакет coreutils.  То есть может быть конфликт между двумя
maintainer'ами.  Проверка acl по src.rpm проходит, а при попытке
преложить пакеты в репозитарий ничего не получается.  Тут-то и может
потребоваться "авторитетное" подтверждение.

Если же я запаковал в perl подпакет perl-libwww, который в свою очередь
тоже висит на мне, то авторитетам вмешиваться ни к чему.

Плюс аналогичная проверка, конечно же, нужна на provides/obsolets,
чтобы не было конфликта претензий.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2007-09-16 22:15 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-28 17:11 [devel] pkgconfiglib.req Alexey M. Tourbin
2007-08-28 19:55 ` Alexey Tourbin
2007-08-28 20:12   ` [devel] /usr/lib/pkgconfig vs noarch Dmitry V. Levin
2007-08-28 20:47     ` Alexey Tourbin
2007-08-28 21:07       ` Alexey Tourbin
2007-08-28 21:32         ` [devel] sisyphus_check noarch Alexey Tourbin
2007-09-01 13:12         ` [devel] /usr/lib/pkgconfig vs noarch Денис Смирнов
2007-08-29 15:56       ` Dmitry V. Levin
2007-08-29 17:05         ` [devel] giter-factory Alexey Tourbin
2007-08-29 19:29           ` Dmitry V. Levin
2007-08-29 19:37             ` Alexey Tourbin
2007-08-29 21:02               ` Alexey Tourbin
2007-08-29 21:11                 ` Dmitry V. Levin
2007-08-29 21:47                   ` Alexey Tourbin
2007-08-29 21:55                     ` Dmitry V. Levin
2007-08-29 22:26                       ` Alexey Tourbin
2007-08-30  8:40                         ` Kirill A. Shutemov
2007-09-01 23:47                       ` Alexey Tourbin
2007-08-30  8:53                 ` Kirill A. Shutemov
2007-09-16 21:13           ` Michael Shigorin
2007-09-16 21:36             ` Alexey Tourbin
2007-09-16 21:32               ` Aleksey Avdeev
2007-09-16 22:15                 ` Alexey Tourbin [this message]
2007-09-16 23:01                   ` [devel] giter-factory idea Aleksey Avdeev
2007-09-17  5:42                     ` Alexey Tourbin
2007-09-17 10:41                       ` Aleksey Avdeev
2007-09-18  9:32               ` [devel] giter-factory Michael Shigorin
2007-08-28 20:29   ` [devel] pkgconfiglib.req Alexey I. Froloff
2007-08-28 20:46   ` Alexey Rusakov
2007-08-29 13:51 ` Igor Zubkov
2007-09-16 21:17 ` Michael Shigorin
2007-09-16 22:50   ` Alexey Rusakov
2007-09-17  5:36     ` Alexey Tourbin
2007-09-18 10:09       ` [devel] UQ: git-clone git.alt: unable to chdir or not a git archive Michael Shigorin
2007-09-18 10:09         ` Pavlov Konstantin
2007-09-18 10:15           ` [devel] отбой, спасибо, сам дурак Michael Shigorin
2007-09-18 11:44       ` [devel] pkgconfiglib.req Michael Shigorin
2007-09-18 11:49         ` Alexey Rusakov
2007-09-19 22:22         ` [devel] *.pc -devel Alexey Tourbin

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=20070916221547.GZ5297@solemn.turbinal \
    --to=at@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /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