From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00, RCVD_IN_SORBS_WEB,SPF_PASS autolearn=no version=3.2.5 Date: Tue, 10 Jan 2012 22:07:31 +0200 From: Igor Vlasenko To: devel@lists.altlinux.org Message-ID: <20120110200731.GA7465@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.5.21 (2010-09-15) X-imath-kiev-ua-MailScanner-Information: Please contact the ISP for more information X-imath-kiev-ua-MailScanner-ID: 31C5D4B0385.ACD6C X-imath-kiev-ua-MailScanner: Found to be clean X-imath-kiev-ua-MailScanner-From: vlasenko@imath.kiev.ua Subject: [devel] I: .watch files: master class 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: Tue, 10 Jan 2012 20:07:41 -0000 Archived-At: List-Archive: List-Post: Господа, собирался писать для watch.altlinux.org плагин оповещения через .watch файлы, но оказалось, что увы, у нас этой возможностью не пользуются, и плагин писать пока рано и незачем, так как в наших пакетах .watch файлов, которые бы этот плагин обрабатывал, нет (мои не в счет). Поэтому хочу провести небольшой ликбез по debian watch файлам. у нас для работы с ними портировано и написано ряд утилит, надо смело пользоваться. 1) watch файлы - это просто. Напишем watch файл на примере пакета mytetra. watch файл состоит из 2-х строк: сначала идет магическая строка "version=3" далее, если бы у проекта был бы простой каталог загрузки http://webhamster.ru/db/data/articles/105 с ftp или http листингом, то вторую строчку можно было бы написать как регулярное выражение http://webhamster.ru/db/data/articles/105/mytetra_(.*)_src.zip где в скобках та часть url, которая задает версию. # -- было бы -------- version=3 http://webhamster.ru/db/data/articles/105/mytetra_(.*)_src.zip # ------------------- Однако у проекта mytetra простого каталога загрузки нет, вместо этого есть страничка проекта http://webhamster.ru/site/page/index/articles/projectcode/105 и с нее уже ведут ссылки. Поэтому в watch файл надо вписать 2 компоненты через пробел: URL странички и регулярное выражение для ссылок с нее. Если бы ссылки были относительные, надо было бы написать #-----mytetra.watch------ version=3 http://webhamster.ru/site/page/index/articles/projectcode/105 mytetra_(.*)_src.zip #---------------------- но там ссылки абсолютные, и надо писать #-----mytetra.watch------ version=3 http://webhamster.ru/site/page/index/articles/projectcode/105 http://webhamster.ru/db/data/articles/105/mytetra_(.*)_src.zip #---------------------- Такой, watch файл будет работать, но из файла mytetra_1_30_1_src.zip получится версия 1_30_1, а нам бы хотелось, чтобы было 1.30.1. Такое тоже можно, надо в начало строки указать опции uscan. Получим #-----mytetra.watch------ version=3 opts="uversionmangle=s/_/./g" http://webhamster.ru/site/page/index/articles/projectcode/105 http://webhamster.ru/db/data/articles/105/mytetra_(.*)_src.zip #--------------------- Запускаем и проверяем: $ rpm-uscan mytetra.watch ... Для любителей экзотики сюда же в конец можно добавить " debian <имя скрипта>" тогда rpm-uscan после загрузки новой версии вызовет указанный там скрипт. Пример: #-----mytetra.watch------ version=3 opts="uversionmangle=s/_/./g" http://webhamster.ru/site/page/index/articles/projectcode/105 http://webhamster.ru/db/data/articles/105/mytetra_(.*)_src.zip debian my_update_script.sh #--------------------- Особый случай -- uupdate как имя скрипта обновления. В этом случае, для " debian uupdate" будет вызвана утилита gear-uupdate. 2) Надо паковать watch файлы в rpm пакет, см. http://www.altlinux.org/Watch тогда песочница сможет их наблюдать. также, src.rpm файлы тогда можно обновлять одной командой srpmtool --uupdate /path/to/src.rpm Для gear-репозиториев, для работы cronbuild достаточно упаковать watch файл, тогда скрипты писать не нужно. Для gear-репозиториев, при наличии watch файла rpm-uscan можно запускать без аргументов, он найдет все сам. Когда что-то не понятно, спрашивайте. -- Dr. Igor Vlasenko -------------------- Topology Department Institute of Math Kiev, Ukraine