====== Обновление пакета в Sisyphus на примере tora ====== Имея учетку на altlinux.org, можно предлагать изменения в пакеты репозитория Sisyphus. Статья описывает, как предложить обновление пакета до последнего коммита из апстримного репозитория **Настройка** Установка нужных пакетов sudo apt-get install gear hasher git-core Настроить подписание тегов git через gpg2, указать свой ящик и имя для создания коммитов. Почта и имя должны совпадать с теми, которые указаны в ключе (список закрытых ключей: gpg2 -K) git config --global gpg.program gpg2 git config --global user.email "you@example.com" git config --global user.name "Your Name" Добавить своего пользователя (в моем случае - keremet) в группы, необходимые для запуска hasher sudo hasher-useradd keremet Перелогиниться. В /etc/hasher-priv/system добавить строчку: allowed_mountpoints=/proc В файл ~/.ssh/config добавить строки. Пользователя указать своего. Доступ к этим сервера осуществляется по ключу. Убедиться, что ваш ключ добавлен на них. # Гитовница Host git.alt HostName gitery.altlinux.org User git_keremet Port 222 # Сборочница Host girar HostName gyle.altlinux.org User git_keremet Port 222 важно cp /home/keremet/.ssh/id_rsa /home/keremet/.ssh/id_ed25519 **После настройки** Создать баг в https://bugzilla.altlinux.org/, чтобы была понятна причина обновления. Примеры https://bugzilla.altlinux.org/show_bug.cgi?id=39894, https://bugzilla.altlinux.org/show_bug.cgi?id=39434 Если есть старая копия репозитория в учетке, то удалить эту копию ssh git.alt rm-db /people/keremet/packages/tora.git Клонировать репозиторий в свою учетку. [keremet@comp-core-i5-8250u-0f4293 tora]$ ssh git.alt clone /gears/t/tora.git Cloning into bare repository 'packages/tora.git'... done. gitery-clone: /people/keremet/packages/tora.git [keremet@comp-core-i5-8250u-0f4293 tora]$ Клонировать себе на комп. Параметром git clone будет то, что написано после «gitery-clone:» с дописанным спереди «git://git.altlinux.org». git clone git://git.altlinux.org/people/keremet/packages/tora.git cd tora Перейти на последний коммит, скачанный из апстрима. При данном обновлении он был обозначен тегом v3.2-292-g1a03ec3d. git checkout v3.2-292-g1a03ec3d Удалить самопоставленный тег, чтобы git describe отсчитывал от апстримного тега. Удаление произойдет только в локальном репозитории. git tag -d v3.2-292-g1a03ec3d Скачать последние коммиты из апстрима и замержить их git checkout -b master git pull https://github.com/tora-tool/tora git tag -a "`git describe`" -m "`git describe`" git checkout sisyphus git merge master git branch -D master Важно: релизный коммит и коммит изменениями должны быть разными. Пример: http://git.altlinux.org/people/nickel/packages/?p=grub.git;a=commitdiff;h=9b12800710bb5f07774becceb28bb99f9167486c http://git.altlinux.org/people/nickel/packages/?p=grub.git;a=commitdiff;h=b4b579adeda4287a3474fddf8d958b03df1ffb6a В .gear/tora.spec обновить строку Release, добавить запись в %changelog. В описании изменений указать например «(closes: 39894)», где число — номер бага В .gear/rules исправить тег в "tar:" Обновить список нужных для сборки тегов в .gear/tags командой: gear-store-tags -acv Удалить отдельный файл тега из .gear/tags/list, исправить хэш нового тега на хэш коммита. Создать релизный коммит и тег. git add -u gear-commit gear-create-tag Выполнить локальную сборку, установку пакета и его проверку mkdir ~/hasher_tora hsh --initroot-only ~/hasher_tora gear --commit --hasher -- hsh-rebuild --no-sisyphus-check=packager,gpg,changelog ~/hasher_tora sudo apt-get remove tora sudo rpm -i /home/keremet/hasher_tora/repo/x86_64/RPMS.hasher/tora-3.2-alt8.gitf31e755f.x86_64.rpm Отправить изменений в свой репозиторий на сервере git remote add git.alt git.alt:packages/tora git push git.alt sisyphus --follow-tags Собрать пакет на сервере [keremet@comp-core-i5-8250u-0f4293 tora]$ ssh girar build $(basename $(pwd)) $(git describe) new task #269170: owner=keremet repo=sisyphus fetching tag "3.2-alt8.gitf31e755f" from /people/keremet/packages/tora.git... done generating pkg.tar for tora.git tag "3.2-alt8.gitf31e755f"... done task #269170: added #100: build tag "3.2-alt8.gitf31e755f" from /people/keremet/packages/tora.git task #269170: try #1 is AWAITING, result will be emailed to keremet@altlinux.org [keremet@comp-core-i5-8250u-0f4293 tora]$ Задача на сборку появится тут http://git.altlinux.org/tasks/269170/ После того как сборка выполнилась успешно, передать на проверку ssh girar task run --commit 269170 Кому передать на проверку можно посмотреть так ssh girar acl sisyphus tora show или по ссылке http://git.altlinux.org/acl/list.packages.sisyphus После получения одобрения от проверяющего повторить предыдущую команду. "%filter_from_requires /^python3(bpy)/d" можно заменить на "%add_python3_req_skip bpy» Полезные команды: gear-commit --amend git tag -d tag_name git push git.alt --delete tag_name ssh girar task ls ssh girar task delsub 276809 300 ssh girar task add 281289 repo $(basename $(pwd)) $(git describe) ssh girar task run 276809 -f - перетрет старые тэги: gear-create-tag -f git push git.alt sisyphus 2021.2-alt1 -f ssh girar task rm 276797 git describe --match v2021.2 ssh girar build -b p10 --commit -m new_subpackage copy vlc-plugin-pause-click Отладка в сборочном chroot Для отладки сборки иногда полезно запустить shell в сборочном chroot. Для этого используется утилита hsh-shell(1): hsh-shell Можно запустить программу и с правами псевдо-root: hsh-shell --rooter Для контроля за содержимым сборочного chroot'а используются опции hsh: --cleanup-only, --eager-cleanup, --lazy-cleanup и соответствующие настройки вроде lazy_cleanup=1 в ~/.hasher/config. Для запуска произвольных программ в сборочном чруте существует более низкоуровневая утилита hsh-run(1).