Watch: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
== Использование watch файлов в ALT Linux ==
== Использование watch файлов в ALT Linux ==


В утилитах {{prg|srpmnmu}}, {{prg|srpmtool}},
=== Назначение watch файлов ===
идущих с perl-RPM-Source-Editor >= 0.71,
доступно автообновление src.rpm пакетов с помощью опции
--uupdate. (uu, два u, поскольку так называется соответствующая
утилита в Debian).


Пример вызова:
Файлы debian/watch были введены в Debian для автоматического отслеживания появления новых версий пакета в upstream'е.
$ srpmtool --uupdate /path/to/name-version-rel.src.rpm
Для работы с watch файлами в Debian используется инструмент uscan из пакете devscripts.


=== Добавление watch-файла ===
В ALT Linux для работы с watch файлами рекомендуется использовать адаптированные к rpm, gear и платформе ALT Linux
утилиты rpm-uscan, uscan-query, srpmnmu/srpmtool.


Для работы watch файл должен быть создан либо позаимствован c debian и упакован в пакет (прописан в спеке):
=== Создание watch файлов ===
...
Source7: %name.watch
...
По умолчанию подразумевается, что .watch файл указывает на Source(0):.


Если это не так, например, .watch файл указывает на Source3:,
Готовый watch файл часто можно позаимствовать из соответствующего исходного пакета в debian.
то надо паковать .watch файл как %name.source3.watch
Олнако watch файл может быть легко создан самостоятельно.


При создании watch-файлов следует руководствоваться [http://wiki.debian.org/debian/watch/ документацией Debian].
При создании watch-файлов следует руководствоваться [http://wiki.debian.org/debian/watch/ документацией Debian].
man rpm-uscan.
watch-файл
Первая линия watch-файла должна быть версией формата (3, на текущий момент), а следующие линии содержат любые URL для парсинга. Например:
    version=3
    http://ftp.gnu.org/gnu/hello/hello-(.*).tar.gz


Для проектов, размещенных на SourceForge, можно воспользоваться [http://lintian.debian.org/tags/debian-watch-file-should-use-sf-redirector.html особым форматом записи] (применяет редиректор на qa.debian.org с целью предоставления неизменного интерфейса к порой изменяющейся схеме SF):
Для проектов, размещенных на SourceForge, можно воспользоваться [http://lintian.debian.org/tags/debian-watch-file-should-use-sf-redirector.html особым форматом записи] (применяет редиректор на qa.debian.org с целью предоставления неизменного интерфейса к порой изменяющейся схеме SF):
Строка 30: Строка 31:
<pre>version=3
<pre>version=3
http://xapian.org/download http://oligarchy.co.uk/xapian/([\d.]+)/xapian-core-\1\.tar\.gz</pre>
http://xapian.org/download http://oligarchy.co.uk/xapian/([\d.]+)/xapian-core-\1\.tar\.gz</pre>
=== Упаковка watch файлов ===
==== src.rpm ====
Для работы watch файл должен быть создан либо позаимствован c debian и упакован в пакет (прописан в спеке):
...
SourceXX: %name.watch
...
По умолчанию подразумевается, что .watch файл указывает на Source(0):.
Если это не так, например, .watch файл указывает на Source3:,
то надо паковать .watch файл как
SourceXX: %name.source3.watch
==== gear репозиторий ====
В утилитах {{prg|srpmnmu}}, {{prg|srpmtool}},
идущих с perl-RPM-Source-Editor >= 0.71,
доступно автообновление src.rpm пакетов с помощью опции
--uupdate. (uu, два u, поскольку так называется соответствующая
утилита в Debian).
Пример вызова:
$ srpmtool --uupdate /path/to/name-version-rel.src.rpm


=== Обновление src.rpm ===
=== Обновление src.rpm ===

Версия от 00:43, 15 июня 2014

Использование watch файлов в ALT Linux

Назначение watch файлов

Файлы debian/watch были введены в Debian для автоматического отслеживания появления новых версий пакета в upstream'е. Для работы с watch файлами в Debian используется инструмент uscan из пакете devscripts.

В ALT Linux для работы с watch файлами рекомендуется использовать адаптированные к rpm, gear и платформе ALT Linux утилиты rpm-uscan, uscan-query, srpmnmu/srpmtool.

Создание watch файлов

Готовый watch файл часто можно позаимствовать из соответствующего исходного пакета в debian. Олнако watch файл может быть легко создан самостоятельно.

При создании watch-файлов следует руководствоваться документацией Debian. man rpm-uscan.

watch-файл

Первая линия watch-файла должна быть версией формата (3, на текущий момент), а следующие линии содержат любые URL для парсинга. Например:
   version=3
   http://ftp.gnu.org/gnu/hello/hello-(.*).tar.gz

Для проектов, размещенных на SourceForge, можно воспользоваться особым форматом записи (применяет редиректор на qa.debian.org с целью предоставления неизменного интерфейса к порой изменяющейся схеме SF):

version=3
http://sf.net/<project>/<tar-name>-(.+)\.tar\.gz

При публикации архивов с путями вида name/1.2/name-1.2.3.tar.gz и отсутствии симлинка current могут пригодиться обратные ссылки (backreferences) в регулярном выражении, например:

version=3
http://xapian.org/download http://oligarchy.co.uk/xapian/([\d.]+)/xapian-core-\1\.tar\.gz



Упаковка watch файлов

src.rpm

Для работы watch файл должен быть создан либо позаимствован c debian и упакован в пакет (прописан в спеке):

...
SourceXX: %name.watch
...

По умолчанию подразумевается, что .watch файл указывает на Source(0):.

Если это не так, например, .watch файл указывает на Source3:, то надо паковать .watch файл как

SourceXX: %name.source3.watch



gear репозиторий

В утилитах srpmnmu, srpmtool, идущих с perl-RPM-Source-Editor >= 0.71, доступно автообновление src.rpm пакетов с помощью опции --uupdate. (uu, два u, поскольку так называется соответствующая утилита в Debian).

Пример вызова: $ srpmtool --uupdate /path/to/name-version-rel.src.rpm

Обновление src.rpm

$ srpmnmu --uupdate /path/to/name-version-rel.src.rpm
$ rpm -i /path/to/name-version-rel.src.rpm
$ srpmnmu -i --uupdate name.spec
$ diff -u name.spec~ name.spec
$ rpmbuild -bs --nodeps name.spec (or hashertarbuild -bs name.spec)

$ srpmnmu --uupdate flashrom.spec
uupdate: new version 0.9.4
Записан: flashrom-0.9.4-alt1.src.rpm
$ srpmnmu --uupdate flashrom-0.9.4-alt1.src.rpm
uupdate: version 0.9.4 is up to date.

Пример работы со спек-файлом:

$ rpm -i /path/to/name-version-rel.src.rpm
$ srpmnmu -i --uupdate name.spec
$ diff -u name.spec~ name.spec   ### (смотрим, чего там робот наменял)
$ rpmbuild -bs --nodeps name.spec (or hashertarbuild -bs name.spec)

Watch для gear-репозитория

утилита rpm-uscan из одноименного пакета представляет собой форк Debian'овской утилиты uscan, адаптированный к работе в rpm окружении и с поддержкой gear-репозиториев.

rpm-uscan --report --any-archive

Ее можно использовать для проверки наличия новых версий, и их загрузки (с опцией --download).

Изменено поведение опции --repack (переупаковывает архив в несжатый tar), добавлена опция --any-archive (ищет всевозможные форматы архивов; полезна, если в watch файле был прописан tar.gz, а апстрим в новом релизе переехал на tar.xz.

В git/gear-репозитории rpm-uscan можно запускать совсем без опций -- она самостоятельно найдет watch файл и узнает текущую версию.

Обновление gear-репозитория

Поддерживается обновление gear-репозитария по watch файлу для большинства употребительных типов gear-репозитариев. Перед первым употреблением имеет смысл установить утилиту gear-rules-verify из пакета perl-Gear-Rules >= 0.04

gear-rules-verify

сообщит, поддерживается ли обновление для вашего gear репозитория.

Для и проверки, и обновления gear-репозитария по watch файлу используйте команду

rpm-uscan --force-action gear-uupdate

при этом rpm-uscan скачает архив с исходниками и вызовет утилиту

gear-uupdate --upstream-version *new version* *архив*

которая и обновит gear репозиторий.

Эта же возможность интегрирована и в cronbuild. При наличии watch файла утилиты из пакета gear-cronbuild (см. Gear/cronbuild)

gear-cronbuild-apply-hooks
gear-cronbuild-apply-hooks-in-chroot

вызывают внутри rpm-uscan --force-action gear-uupdate.

Утилиту gear-uupdate можно использовать и независимо от rpm-uscan, как более интеллектуальный вариант gear-update.

Таким образом, владельцам обновляемых из тарбола gear репозиториев имеет смысл класть в gear репозиторий рядом со спек файлом и watch файл. Готовый watch файл можно поискать в Debian либо написать самому согласно документации.

I: перспективы автоматизации с помощью .watch файлов.

В текущем виде uupdate-like автоматизация не совсем полная, так как хоть она и снимает с майнтайнера часть рутинной работы, никуда не девается необходимость сличать исходники, не появились ли у пакета новые сборочные зависимости.

Поэтому в перспективе я еще хочу как опцию прикрутить к обновлению анализаторы кода, которые будут читать configure.ac и т.д. и добавлять в BuildRequires: все то, чего там, по их мнению, не хватает для новой версии.

С этими анализаторами я в перспективе хочу развернуть на watch.altlinux.org автосборщик, который будет следить за пакетами с watch файлами, и при выходе новой версии отправлять на test-only новый пакет.

Ссылки