From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imath.kiev.ua; s=hydra; t=1529348200; bh=+qlcd7eVfY+MwySprTTKB1syhQK9+386XdW1M6qwlX8=; h=Date:From:To:Subject; b=Ijxr6qVdJPhORDufTiBi2ZhSsApmFvIabtzKQ0wlk3KaY7gKuhgGRpPjR4VaooPt1 KFbwgg60xw2wu96tw6F7sqmYR+x8guFFoWhXoIUGJ4sFdHWZmVbrkxM6WsG1C42Nbv p9v78Wl5Uq7h9UD/T4x69uJNDLLHjj5J5BGUWmTk= Date: Mon, 18 Jun 2018 21:56:39 +0300 From: Igor Vlasenko To: devel@lists.altlinux.org Message-ID: <20180618185639.GA5467@dad.imath.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.9.1 (2017-09-22) Subject: [devel] I: girar-nmu 2.0 X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jun 2018 18:56:43 -0000 Archived-At: List-Archive: List-Post: Уважаемые коллеги! Кто пользовался пакетом 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> , <-H|--gitery> . ==== В большинстве случаев, к 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> . ==== Поддержка e2k. Кроме умолчальных girar и gitery, у нас появились дополнительные girar и gitery для дополнительных архитектур, таких, как e2k. Чтобы работать с ними, утилитам надо каждый раз указывать -R girar.e2k -H git.e2k . Вместо этого -P e2k загрузит /etc/girar-nmu/e2k, профиль для работы с e2k, где girar и gitery переопределены. Можно создавать и другие свои профили настроек, в /etc/girar-nmu/ и в $HOME/.config/girar-nmu/. === 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 [--before[-subtask] ] girar-task-for-each-* по умолчанию создают новый task для каждой задачи. Все они оддерживают опции -S|--share (ssh girar task share enabled) -d|--deps (ssh girar task deps 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, не выложен в Сизиф. Замечания и пожелания приветствуются. -- I V