Обновление пакета в 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).