[devel] Автоматические release

Aleksey Avdeev solo at solin.spb.ru
Tue Aug 4 21:07:19 MSD 2009


Michael Shigorin пишет:
> On Tue, Aug 04, 2009 at 07:29:54PM +0400, Aleksey Avdeev wrote:
>> Похоже начало вытанцовываться что-то похожее. Если использовать
>> прилагаемый макрофайл (см. вложение), то:
>>
>> Release: %distr_auto_release <prefix><number>[.<suffix>]
> 
> IMHO чуточку лучше бы
> 
> Release: %distro_release ...
> 
> или вообще
> 
> Release: %branch_release ...

   OK. Тогда и остальные макросы в %branch_switch и %branch_release_num, 
для единообразия.

> 
>> PS: Данный вариант мне нравиться дольше, чем используемый
>> сейчас. Думаю запаковать его. Прошу предлагать более внятные
>> названия для макросов и/или самого пакета.
> 
> Да, вполне симпатично.
> 
>> #auto_distr macros
>>
>> # release format: <prefix><number>[.<suffix>]
>> %distr_auto_release() %(if [ "%{?distr_switch}" = "" ]; then echo "%1"; else echo "%1"|sed -rn -e 's@^([^[:space:]]+)([0-9]+)(|(\\.[^[:space:]]+))$@\\1/\\2/\\3 at p'|awk -v FS='/' -v distr_name='%{?distr_switch}' -v distr_num='%{?distr_num}' 'BEGIN {if (distr_num == "") {num="1"} else {num=distr_num}; suf=("." distr_name "." num) }; {print $1 ($2-1) suf $3}'; fi)
> 
> Что-то подсказывает, что вместо if, echo, sed и awk можно
> обойтись просто awk; с другой стороны, так экономится пара
> циклов в тривиальном случае... :)

   Вариант избавится от sed напрашивается. Но я не придумал, как в awk с 
помощью регулярного выражения разрезать строку на 3 переменных: в голову 
приходят только варианты отрезания подстрок по частям... А это 
получается более монстраподобно, чем sed.

   От if можно избавиться с помощью конструкции вида
%{!?distr_switch: %1}%{?distr_switch:  %(...)}, но это потребует 
обработки в awk ситуации, когда "%distr_switch" = "" (когда он определён 
как %nil или ""). if же позволяет отсечь данный случай на раннем этапе, 
до вызова sed/awk.

PS: По хорошему, нужно ещё придумать как поступать когда <number> = 0 и 
когда <number> имеет ведущие 0 (сейчас они теряются).

-- 

С уважением. Алексей.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 552 bytes
Desc: OpenPGP digital signature
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20090804/6ea50af0/attachment-0001.bin>


More information about the Devel mailing list