[devel] Угрозы развитию дистрибутива. Пути решения: gear-subsystem

Paul Wolneykien manowar на altlinux.org
Вт Окт 4 17:38:50 UTC 2011


04.10.2011 20:14, Денис Смирнов пишет:
> On Mon, Oct 03, 2011 at 05:11:41PM +0400, Paul Wolneykien wrote:
>
> PW>     Я и не говорю, что это всегда нужно — как раз наоборот: можно
> PW>  подсистему создать, а можно и не создавать.
>
> Так как это должно выглядеть?
>
> PW>     Если мы, в ряде случаев, перейдём от обновления отдельных пакетов к
> PW>  обновлению подсистем как единых сущностей, то и cronbuild будет
> PW>  обновлять подсистему целиком, а girar её пересобирать, согласно
> PW>  установленным для данной подсистемы правилам.
>
> Каким правилам?
>
> Hint: чтобы что-то закодить, нужно это очень четко описать.

   А чтобы что-то чётко описать, нужно сначала это хотя-бы примерно 
представить. :)

   Идея в том, чтобы совершать действия не с отдельным пакетом, а с 
группой пакетов — подсистемой ­— как с единым целым. Я представляю что 
подсистема — это:

   1. список gear-репозиториев, из которых собираются пакеты;

   2. сценарий для вычисления и сортировки набора всех требующих 
обновления пакетов;

   3. сценарий — единая точка входа для обновления версий и истории 
изменения в каждом из требующих обновления пакетов.

   Хранить информацию о наборе gear (git)-репозиториев (п. 1.) можно 
было бы, наверное, используя git-submodule. Тогда главный репозиторий 
хранил бы в себе пп. 2 и 3. Для выполнения обновления и сборки можно 
было бы завести команды-обёртки, использующие код пп. 2 и 3. Тогда 
обновление подсистемы может выглядеть примерно так:

   $ cd <dir>
   …
   обновляем код
   …
   $ git commit

   $ cd ..

   $ git submodule push

   $ gear subsystem add-changelog -m "Compiler update: v1.8.5"
# В результате чего обновляются релиз версии (-altN) и история
# изменений в каждом затрагиваемом пакете. Например, если
# обновляется компилятор и сценарий из п.2 выбирает ещё несколько
# библиотек для обновления, то в каждой из них релиз будет увеличен
# на единицу, а в истории изменений записано стандартное сообщение:
# "Update due to compiler update: v1.8.5", полученное на основе
# сообщения, указанного пользователем.

   $ gear subsystem tag -s -a -m "Version 1.8.5" v1.8.5
# В результате чего ставятся (подписанные) теги в каждом
# затрагиваемом git-репозитории.

   $ gear subsystem build sisyphus v1.8.5
# В результате чего формируется сборочное задание из всех
# затрагиваемых репозиториев (и тегов), отсортированное в
# правильном порядке.

   Как-то так. Это должно быть удобно и человеку и роботу (cronbuild). 
Или нет?


     Паша.


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