[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