[devel] Re: %NotRequires/%NotProvides RPM macros
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Май 26 16:14:48 MSD 2004
On Wed, May 26, 2004 at 02:51:23PM +0400, Dmitry V. Levin wrote:
> > %NotRequires perl(warnings.pm) libz.so.1
> > %NotProvides perl(PerlIO/gzip.pm)
> - имена странные
Для сравнения.
В MDK нужно писать:
%define _requires_exceptions 'perl(warnings.pm)' libz.so.1
В PLD нужно писать:
%define _noautoreq 'perl(warnings.pm)' libz.so.1
По сравнению с MDK/PLD суть моих предложений в следующем:
- удобнее писать не %define, а использовать готовый макрос,
семантика которого очевидна из названия
- удобнее использовать shell patterns, а не `grep -v'
- удобнее использовать автоматическое кворитрование аргументов,
передаваемых скрипту
Т.е. получается больше похоже на тэги Requires и Provides, что
кажется мне более естественным.
> - так на shellе не пишут:
> strings=`"$@"`
> echo "$strings" | while read string; do
Я уже запутался, в каком порядке происходят substitutions, word
splitting и т.д., как это связано с субшеллами, backticks,
embedded newlines и т.п.
Заодно узнал, что в bash субшелл порождается для _правой_ части пайпа,
а левая часть пайпа остается работать в текущем шелле. (В zsh это
работает с точностью до наоборот.)
Поэтому в bourne shell не работает такой очевидный, казалось бы, код:
echo "$strings" | while read string; do
match=
echo "$patterns" | while read pattern; do
if [ -z "${string##$pattern}" ]; then
match=1
break
fi
done
if [ -z "$match" ]; then
echo "$string"
fi
done
Т.е. match=1 устанавливается в дочернем процессе, а по команде break
субшелл радостно прекращает свою работу. Чево только не узнаешь. :)
> --
> ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20040526/d4387967/attachment-0001.bin>
Подробная информация о списке рассылки Devel