On Sun, Sep 10, 2006 at 10:59:13PM +0400, Alexey Tourbin wrote: > Вопрос по brainfuck^W rpm macros. > > Я хочу один раз подменить __find_requires и __find_provides, отдав в > качестве аргумента новому значению текущее значение: > > %fpc_global() %{?!fpc_%1:%{expand:%%global %1 %2 %%%1%%global fpc_%1 %2}} %fpc_global() %{expand:%%{?!fpc_%1:%%global %1 %2 %%%1%%global fpc_%1 %2}} Так работает. По-видимому имя переменной в ?! не может содержать ещё одну меременную, примерно как в шелле. Значт, нужен ещё один eval. > %fpc_macro %([ -x %_rpmlibdir/fpc2.req ])%{fpc_global __find_requires %_rpmlibdir/fpc2.req}%{fpc_global __find_provides %_rpmlibdir/fpc2.prov} > %fpc_dir %fpc_macro%_libdir/fpc2 > %fpc_make make RELEASE=1 CREATESMART=1 LINKSMART=1 FPCDIR=%fpc_dir > > К сожалению аргументы накапливаются в цикле: > > $ rpm --eval $'%fpc_dir\n%fpc_make\n%__find_requires' > /usr/lib/fpc2 > make RELEASE=1 CREATESMART=1 LINKSMART=1 FPCDIR=/usr/lib/fpc2 > /usr/lib/rpm/fpc2.req /usr/lib/rpm/fpc2.req /usr/lib/rpm/find-requires > $