[devel] I: girar-nmu 2.0
Grigory Ustinov
grenka на altlinux.org
Вт Июн 19 19:56:55 MSK 2018
А войдут ли утилиты для импорта из федоры? Имеется в виду не полноценный
импорт, а "первичная подготовка спека", чтобы мейнтейнер мог ещё
посмотреть, что-то изменить и уже отправить новый пакет в сизиф.
Очень хотелось бы что-такое увидеть! Мне хотелось бы отправить в сизиф
некоторое количество таких пакетов.
On 18.06.2018 21:56, Igor Vlasenko wrote:
> Уважаемые коллеги!
>
> Кто пользовался пакетом girar-nmu.
> Я собираюсь выпустить girar-nmu 2.0,
> улучшенный, но, к сожалению,
> не полностью совместимый с girar-nmu 1.x --
> с изменениями в опциях и переименованными утилитами.
>
> Чтобы не создавать проблем, делаю заранее анонс с планами.
>
> girar-nmu 2.0
> ---------
>
> == Введение ==
>
> girar-nmu был создан как набор утилит для проведения
> различных массовых пересборок пакетов, например, с новой библиотекой.
>
> Для этого в нем есть набор скриптов
> girar-nmu-sort-transaction -- вычислить порядок сборки (если она важна)
> girar-nmu-prepare -- подготовить пакеты для транзакции
> girar-nmu-local-build -- локально пересобрать транзакцию
> girar-nmu-task-add -- добавить пакеты транзакции в task
> girar-nmu-task-for-each -- или отправить на сборку в отдельных task'ах.
>
> Кроме того, в его состав вошли вспомогательные утилиты-помощники
> (helpers), часть с префиксом girar-nmu-helper-* и часть girar-*.
> Со временем оказалось, что я эти вспомогательные утилиты
> использую гораздо чаще, чем основной набор girar-nmu-*.
> Более того, у пакета girar-nmu-* появились пользователи,
> которые тоже делают акцент на вспомогательных утилитах.
>
> После того, как мне поступил запрос от Григория Устинова
> на добавление в набор утилиты Михаила Гордеева, стало ясно,
> что утилиты-помощники пользуются спросом сами по себе.
> У нас уже есть пакет girar-utils, но он по функциональности
> практически не перекрывается с утилитами из girar-nmu.
> Пришлось заняться приданием этим утилитам товарного вида.
> Я обновил документацию, навел порядок с опциями --
> добавил длинные опции, добавил новые возможности и привел
> во всех утилитах опции в единообразный вид, заодно и добавил
> поддержку всех имеющих смысл опций в каждой утилите.
>
> К сожалению, лучшее -- враг хорошего, наведение единообразия
> сломало для некоторых опций совместимость. Поэтому я решил
> пойти дальше и переименовать утилиты, где совместимость нарушена,
> убрав -nmu-helper-, раз уже эти утилиты используются независимо
> от скриптов girar-nmu-*.
>
> Представляю вашему вниманию girar-nmu 2.0.
>
> === общие опции ===
>
> <-V|--version>, <-v|--verbose>, <-q|--quiet>, <-h|--help>
> в представлении не нуждаются. Как и <-b|--branch> sisyphus|p8|...
>
> ==== <-R|--girar|--gyle> <girar ssh alias>, <-H|--gitery> <gitery ssh alias>. ====
>
> В большинстве случаев, к girar и gitery(git.alt) нужен ssh доступ,
> там, где нельзя обойтись git.altlinux.org.
> По правилам, эти хосты надо прописать алиасами в ~/.ssh/config.
> Однако исторически сложилось несколько возможных алиасов.
> Их можно указать опциями -R/-H (--girar/--gitery), если
> значения по умолчанию (girar и git.alt) не подходят,
> а можно прописать в
> /etc/girar-nmu/default (лучше в $HOME/.config/girar-nmu/default).
>
> ==== <-P|--profile> <profile>. ====
>
> Поддержка e2k. Кроме умолчальных girar и gitery, у нас появились
> дополнительные girar и gitery для дополнительных архитектур,
> таких, как e2k. Чтобы работать с ними, утилитам надо каждый раз
> указывать -R girar.e2k -H git.e2k . Вместо этого -P e2k
> загрузит /etc/girar-nmu/e2k, профиль для работы с e2k,
> где girar и gitery переопределены.
> Можно создавать и другие свои профили настроек, в
> /etc/girar-nmu/<profile> и в $HOME/.config/girar-nmu/<profile>.
>
> === girar-clone-*, girar-fetch-*, ... ===
>
> утилиты клонирования gear репозитория
> girar-clone-build-commit
> girar-clone-srpm-build
> girar-clone-task-git
>
> girar-clone-build-commit -- склонировать gear репозиторий,
> из которого собрался пакет в Симзиф или бранчи.
> к примеру,
> girar-clone-build-commit --branch p8 pkg-config
>
> girar-clone-srpm-build -- склонировать автоматический
> gear репозиторий для src.rpm пакетов.
>
> girar-clone-task-git -- склонировать gear репозиторий из таска.
> к примеру,
> girar-clone-task-git 208431 100
>
> Если же gear репозиторий уже есть, то втянуть нужный коммит
> можно с помощью утилит
> girar-fetch-build-commit
> girar-fetch-srpm-build
> girar-fetch-task-git
>
> и полезные утилиты
> girar-get-upload-method [-b branch] <имя>
> girar-print-build-commit [-b branch] <имя>
>
> girar-get-upload-method [-b branch] <имя>
> применяется для определения, как залит пакет:
> как src.rpm или из gear репозитория.
>
> girar-print-build-commit [-b branch] <имя>
> применяется для вычисления аргументов task check-git-inheritance.
> К примеру,
> ssh girar task check-git-inheritance 208523 100 disable `girar-print-build-commit -b sisyphus devscripts`
>
> === Работа с girar ===
>
> Собственно создание тасков в girar представлено двумя семействами утилит
> girar-task-add-* [опции] [список задач]
> girar-task-for-each-* [опции] [список задач]
> (еще думаю добавить семейство girar-build-*, для запуска списка задач
> одним таsk'om).
>
> именно,
> girar-task-add-srpm
> girar-task-add-git
> girar-task-add-copy
> girar-task-add-del
> girar-task-add-rebuild
>
> girar-task-for-each-srpm
> girar-task-for-each-git
> girar-task-for-each-copy
> girar-task-for-each-del
> girar-task-for-each-rebuild
>
> girar-task-add-* по умолчанию добавляют задачи
> в --task <task> [--before[-subtask] <subtask>]
> girar-task-for-each-* по умолчанию создают новый task
> для каждой задачи.
>
> Все они оддерживают опции -S|--share (ssh girar task share enabled)
> -d|--deps <dep1,...,depN> (ssh girar task deps <task> add dep1 ... add depN)
> а girar-task-for-each-* -- и опции запуска:
> --test-only,--swift.
>
> В качестве аргумента принимается список:
> имен, в случае -copy/del/rebuild
> пример
> girar-build-del --share --deps 555111,555112 --test-only `cat names-to-del.txt`
> src.rpm пакетов, в случае -srpm:
> пример
> girar-task-for-each-srpm --no-test-only ~/hasher/repo/SRPMS.hasher/*.src.rpm
> git каталогов, в случае -git:
> girar-task-add-git /path/to/foo.git /path/to/bar.git
>
> Утилиты girar-*-srpm выполняют подписывание srpm
> (опция --rpm-sign=<...> и ряд коротких опций,
> поддерживается несколько вариантов подписи, в т.ч. gpg и gpg2),
> заливают srpm и добавляют их имена на сборку.
>
> Утилиты girar-*-git проверяют, все ли изменения добавлены в git index.
> Если есть изменения вне индекса, прерываются. Иначе коммитят изменения
> (-с, --сommit, можно отключить --no-сommit), создают тег, если он не
> указан -t|--tag и последний коммит тегом не является,
> создают клонированием последней сборки репозиторий на gitery, если
> там его нет, заливают туда сборочный тег, отправляют на сборку,
> при необходимости могут сразу удалить репозиторий на gitery
> (опция -K, --kill-after) и есть ряд других полезных опций.
> Если git репозиторий(и) не указан(ы), то используется текущий каталог.
>
> Изменения по сравнению с бывшей утилитой girar-nmu-helper-git-push-build
> в поддержке списка аргументов и в настройках по умолчанию
> (ранее я всегда запускал ее как girar-nmu-helper-git-push-build -c -T,
> подумал, что это поведение имеет смысл включить по умолчанию).
>
> Код пока только у меня в git, не выложен в Сизиф.
> Замечания и пожелания приветствуются.
>
Подробная информация о списке рассылки Devel