[devel] Метарепозиторий Сизифа

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Ноя 7 00:35:30 MSK 2007


On Tue, Nov 06, 2007 at 05:46:44PM +0300, Dmitry V. Levin wrote:
> Проблема в том, что действующую систему сборки хочется трогать как можно
> меньше, поскольку ещё есть надежда перейти на новую систему сборки
> в обозримом будущем.

Надеяться не вредно.  В свое время на консультации перед первым
экзаменом по высшей математике я задал преподавателю два вопроса:
1) какие оценки Вы обычно ставите; и 2) стоит ли надеяться на хорошую
оценку.  Ответы были соответственно 1) оценки бывают разные; и
2) надеяться можно всегда.  (Оценка на экзамене была удовлетворительной --
я не понимал, что такое последовательность Коши.  Через две недели я
пошел на пересдачу и мне поставили хорошую оценку.  Полтора года спустя
итоговая оценка была отличной.)

Можно не только надеяться, но и пытаться понять суть вещей.

Я предлагаю попытаться понять и обсуждать более фундаментальные вещи
(если есть что обсуждать), не опускаясь до техники реализации.  Но это
идёт рука об руку.  Когда уже становится достаточно понятно, что нечно
подлежит реализации, то это становится достаточно просто реализовать.

Некоторое время назад я писал про желаемую процедуру прохождения
пакетов.  Теперь надо посмотреть на это с другой стороны -- на какой
структуре данных эта процедура будет работать.

Нужно дать "более алгебраическое" описание желаемой действительности,
а именно, какие элементарные множества у нас имеются, и какие
элементарные операции к элементам этих множеств применимы.
Алгебраическая строгость, конечно, быстро пропадёт, но она по крайней
мере помогает понять "что к чему" на ранних этапах.

Я уже писал, что прохождение новых пакетов в сизиф подобно "коммитам"
в некоем "репозитарии" пакетов (метарепозитарии).  Наивная сериализация
склоняет к линейной истории коммитов, но практика говорит о том, что
любой "неудачный коммит" всего лишь открывает транзакцию, которая,
при условии устранения всех "неудачных моментов" может быть потом
"слита" (merge) в mainline (HEAD) репозитария.

То есть, выражаясь более эзотерически, существует некий "холизм",
когда "борьба" или "духовная брань" на земле отображется в это самое
дело на небе, а "поле битвы -- сердца людей" (Достоевский).  Это значит,
что история "настоящего пакета" должна находить отражение в истории
"метарепозитария" в целом. Прошу прощения за отклонение в изотерику.
Идея в целом достаточно важна, но мои вербальные возможности столь же
скудны.

Нет никакой нужды дальше поддерживать мнимое существование
"метарепозитария Сизифа".  Можно это понятие эксплицировать, и сказать,
что метарепозитария Сизифа -- это обычный git-репозитарий, в котором
хранится существенная информация о пакетах в Сизифе.  Это информация
является достаточной, а в основном и необходимой, для дальнейшего
продвижения "хеда" репозитария.

Короче, идея в следущем.  Есть git-репозитарий сизифа.  В нём существуют
подкаталоги по имени каждого src.rpm пакета.  Прохождение любого
пакета автоматически "влияет" на всё остальные (зависимые) пакеты по
крайней мере в смысле возможности пересборки.

Рассмотрим пример.  Пришёл пакет perl-XML-LibXML, и он "собрался"
(собираемость пакета является уточняемым понятием).  Дальше предстоит
некое довольно долгое тестирование репозитария на предмет того, что
новый пакет ничего не ломает.  Это значит, что каждый входящий пакет
открывает входящую транзакцию, по номеру серийного задания.  Пусть номер
задания будет 333, и пакет perl-XML-LibXML собрался.  Создается бранч 333.

	* branch 333: perl-XML-LibXML built ok
	 `* HEAD -- current sisyphus

Имеется попытка перевода репозитария в новое целостное состояние --
с новым пакетом perl-XML-LibXML.  Происходят всевозможные тестирования,
в частности, пересборка пакета perl-XML-LibXSLT.

	* perl-XML-LibXSLT rebuilt ok (perl-XML-LibXSLT/ updated)
	* branch 333: perl-XML-LibXML built ok
	 `* HEAD -- current sisyphus

Когда всё тестирование прошло без обломов, тогда merge нового бранча
(или же "commit") происходит автоматически.

	 /* HEAD -- merge new perl-XML-LibXSLT into current sisyphus
	* | perl-XML-LibXSLT rebuilt ok (perl-XML-LibXSLT/ updated)
	* | branch 333: perl-XML-LibXML built ok
	 `* HEAD -- current sisyphus

На самом деле здесь будет "fast forward", то есть в простейшем случае,
если иметь в виду сериализацию заданий, не нарушается линейность истории.

В более неудачном случае merge не может быть простым "fast forward",
и здесь потребуется sophisticated стратегия мёржа.  Стратегии мёржа
метарепозитария я не буду обсуждать раньше времени, чтобы не усложнять
того что по сути просто.

Короче, есть такое дело -- МОЗГОВОЙ ШТУРМ.
Я предлагаю сделать метарепозитарий сизифа, в котором содержится
необходимя и достаточная информация для поддержки "новой системы сборки
пакетов".  На каждый src.rpm пакет имеется соответствующий подкаталог
метарепозитария.

Вопрос по части мозгового штурма у меня к вам простой -- ЧТО ДОЛЖНО
ЛЕЖАТЬ В ПОДКАТАЛОГАХ ЭТОГО РЕПОЗИТАРИЯ?  (У меня есть тетрадка в
которой исчеркано несколько страниц на эту тему... но я прошу высказать
то что сходу приходит вам в голову.)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20071107/13e603ec/attachment-0002.bin>


Подробная информация о списке рассылки Devel