Gear/gear-uupdate: различия между версиями
Нет описания правки |
|||
Строка 43: | Строка 43: | ||
Вместо полученного треш-репозитория лучше | Вместо полученного треш-репозитория лучше | ||
завести новый git репозиторий или залить обновление как srpm. | завести новый git репозиторий или залить обновление как srpm. | ||
=== запуск утилиты вручную === | === запуск утилиты вручную === | ||
Строка 66: | Строка 64: | ||
в .git/uupdate/ будет что-то вроде | в .git/uupdate/ будет что-то вроде | ||
01-checkout-and-update-upstream-branch.sh | 01-checkout-and-update-upstream-branch.sh | ||
02-merge-upstream-to-patch1-branch.sh | 02-merge-upstream-to-patch1-branch.sh | ||
... | ... | ||
07-merge-upstream-to-patch6-branch.sh | 07-merge-upstream-to-patch6-branch.sh | ||
08-merge-to-main-and-update-spec-and-tags.sh | |||
Эти скрипты можно просмотреть и убедиться еще раз, | Эти скрипты можно просмотреть и убедиться еще раз, | ||
Строка 76: | Строка 74: | ||
После чего их можно выполнить с помощью gear-uupdate-execute. | После чего их можно выполнить с помощью gear-uupdate-execute. | ||
Далее уже сразу можно запускать gear-uupdate. | Далее уже сразу можно запускать gear-uupdate. | ||
=== запуск gear-uupdate из-под других утилит === | |||
gear-cronbuild | {{cmd|rpm-uscan}} (и {{cmd|gear-cronbuild}}) обучены запускать gear-uupdate самостоятельно. | ||
gear-uupdate. | |||
rpm-uscan с обычным watch файлом | {{cmd|rpm-uscan}} с обычным watch файлом по умолчанию только проверяет наличие обновлений | ||
и скачивает их. {{cmd|gear-uupdate}} при | |||
Есть 2 варианта, как заставить rpm-uscan сразу после скачивания | Есть 2 варианта, как заставить {{cmd|rpm-uscan}} сразу после скачивания | ||
вызвать gear-uupdate: | вызвать {{cmd|gear-uupdate}}: | ||
1) вызвать rpm-uscan с опцией, | 1) вызвать {{cmd|rpm-uscan}} с опцией, | ||
rpm-uscan --force-action gear-uupdate | rpm-uscan --force-action gear-uupdate | ||
2) добавить в watch файл магию - добавить еще одну колонку, | 2) добавить в watch файл магию - добавить еще одну колонку для <user action>, т.е. | ||
в которой написать uupdate (можно gear-uupdate | команды, указанной пользователем, в которой написать gear-uupdate (можно {{cmd|uupdate}}), | ||
{{cmd|rpm-uscan}} при этом все равно вызовет {{cmd|gear-uupdate}}. | |||
uupdate -- это магическая утилита из debian, которая | uupdate -- это магическая утилита из debian, которая | ||
Строка 101: | Строка 99: | ||
с debian --- все, что написано в uscan(1) (тж. rpm-uscan(1)) | с debian --- все, что написано в uscan(1) (тж. rpm-uscan(1)) | ||
будет работать и у нас. | будет работать и у нас. | ||
gear-cronbuild при наличии watch файла и отсутствии | |||
cronbuild скриптов просто молча и запускает rpm-uscan с опцией --force-action gear-uupdate | |||
что дает эффект принудительного вызова gear-uupdate при наличии обновления. |
Версия от 22:56, 12 июня 2014
Назначение gear-uupdate
gear-uupdate(1) (uu, два u) --- утилита для автоматического обновления gear репозитория из архива с исходниками "правильным образом". Она умеет читать .gear-rules, находить место и ветвь, где хранятся распакованные исходники, обновлять их, мержить результат в ветви с патчами и в главную ветвь.
Не путать с утилитой gear-update, предназначенной для распаковки архива с исходниками в указанный каталог с регистрацией результата в git. gear-uupdate вызывает gear-update в процессе своей работы.
Утилита является аналогом для ALT Linux утилиты uupdate(1) из Debian, предназначенной для обновления .deb пакетов с помощью watch файлов совместно с утилитой uscan(1), и совместима с ней по аргументам и формату вызова.
В ALT Linux gear-uupdate(1) может неявно вызываться утилитами rpm-uscan(1) или gear-cronbuild-apply-hooks(1) для автоматизированного обновления gear репозитория, либо же ее можно использовать вручную для облегчения процесса обновления gear репозитория.
принцип работы и поддерживаемые репозитории.
gear-uupdate(1) -- это обертка над парой утилит gear-uupdate-prepare(1) и gear-uupdate-execute.
gear-uupdate-prepare c помощью библиотеки perl-Gear-Rules читает .gear[-/]rules, изучая директивы tar и diff, вычисляет, в какой ветке (и каком подкаталоге если есть) находятся исходники, есть ли отдельные ветви для патчей, если исходники в отдельной ветке, то как ее потом мержить в ветку с .gear (просто или с -s ours).
Поддерживаются все основные разумные схемы gear, в частности, описанные в статье Руководство по gear
Проверить, поддерживается ли конкретная схема gear репозитория, можно с помощью утилиты gear-rules-verify.
gear-rules-verify
выдаст подробную диагностику, совместим ли репозиторий с gear-uupdate(1). В частности, если в репозитории есть коммиты, автор которых не состоит в team, то gear-uupdate откажется работать. Логика здесь в том, что похоже, репозиторий ранее обновлялся из апстримного git/svn/otherVCS, а теперь мы хотим обновить его из тарбола. как правило, так делать не надо. Вместо полученного треш-репозитория лучше завести новый git репозиторий или залить обновление как srpm.
запуск утилиты вручную
Руками gear-uupdate запускают так:
gear-uupdate --upstream-version 6.8.9.3 ImageMagick-6.8.9-3.tar.xz
либо так
gear-uupdate ImageMagick-6.8.9-3.tar.xz 6.8.9.3
При первом запуске лучше не запускать сразу gear-uupdate, а запустить
gear-uupdate-prepare --upstream-version 6.8.9.3 ImageMagick-6.8.9-3.tar.xz
gear-uupdate-prepare сначала выполнит проверки из gear-rules-verify.
Затем, gear-uupdate-prepare (ничего не меняя в репозитории) генерирует набор shell скриптов. Эти скрипты могут быть созданы в корне gear репозитория, если апстрим в подкаталоге в текущей ветке. в остальных случаях скрипты надо прятать от git, поэтому они создаются в папке .git/uupdate/. после выполнения gear-uupdate-prepare в .git/uupdate/ будет что-то вроде
01-checkout-and-update-upstream-branch.sh 02-merge-upstream-to-patch1-branch.sh ... 07-merge-upstream-to-patch6-branch.sh 08-merge-to-main-and-update-spec-and-tags.sh
Эти скрипты можно просмотреть и убедиться еще раз, что робот понял структуру репозитория правильно.
После чего их можно выполнить с помощью gear-uupdate-execute.
Далее уже сразу можно запускать gear-uupdate.
запуск gear-uupdate из-под других утилит
rpm-uscan (и gear-cronbuild) обучены запускать gear-uupdate самостоятельно.
rpm-uscan с обычным watch файлом по умолчанию только проверяет наличие обновлений и скачивает их. gear-uupdate при
Есть 2 варианта, как заставить rpm-uscan сразу после скачивания вызвать gear-uupdate: 1) вызвать rpm-uscan с опцией,
rpm-uscan --force-action gear-uupdate
2) добавить в watch файл магию - добавить еще одну колонку для <user action>, т.е. команды, указанной пользователем, в которой написать gear-uupdate (можно uupdate), rpm-uscan при этом все равно вызовет gear-uupdate.
uupdate -- это магическая утилита из debian, которая обновляет debian репозиторий. у нас gear репозиторий, поэтому ей на замену я написал gear-uupdate, которая обновляет gear репозиторий, так, чтобы она была полностью совместима с debian --- все, что написано в uscan(1) (тж. rpm-uscan(1)) будет работать и у нас.
gear-cronbuild при наличии watch файла и отсутствии cronbuild скриптов просто молча и запускает rpm-uscan с опцией --force-action gear-uupdate что дает эффект принудительного вызова gear-uupdate при наличии обновления.