[devel] Re: /usr/lib/rpm/perl.req -- patch

Mikhail Zabaluev mhz на altlinux.org
Сб Ноя 2 12:49:58 MSK 2002


Hello at,

On Thu, Oct 31, 2002 at 02:44:53AM +0300, at на turbinal.org wrote:
>
> Возникает только проблема условных зависимостей. Например, в CGI.pm
> написано:
> 
> if ($ENV{...}) {
> 	require Apache;
> } elsif ($ENV{...}) {
> 	require FCGI;
> }
> 
> Таким образом, при "правильном" поиске зависимостей пакет perl-CGI
> потянет за собой пакеты apache-mod_perl и mod_fcgi, что несколько
> странно. В целом, настолько сильные зависимости были бы неприемлемы.
> 
> Кстати, сейчас в perl-CGI зависимость на apache-mod_perl отсутствует
> только потому, что apache-mod_perl не установлен в среде сборки.
> 
> Я посмотрел, как это сделано в rpm-*mdk. Там используется такое
> наблюдение, что условные зависимости (require) обычно начинаются с
> отступа. Всё это абсолютно в духе грязного хака, но пока это лучшее, что
> можно придумать. Если мне дадут возможность отхачить perl.req, я
> попробую быстро добиться приемлемой его работы на всем, что мы собираем
> (нужно подтверждение).

Я задумывался о менее грязном решении: компилировать файлы и выдавать
из обратно через B::Deparse. Вывод будет идеально отформатирован,
безусловные require не имеют отступа, а код процедур не
из main::, наоборот, не выдаётся по умолчанию.
Но пропадают use.
Есть ещё и более вкусная штучка -- B::Xref, которая выдаёт
файлы и пакеты, использованные на этапе компиляции.
Попробуйте:

perl -MO=Xref,r <скрипт> | grep ^File

Проблема может быть ещё в том, что некоторые блоки perl-кода
могут исполняться сразу на этапе компиляции и повлиять на результат.
Но с этим ничего поделать нельзя: это perl,
There Is More Than One Way To Screw It :)

-- 
Stay tuned,
  MhZ                                     JID: mookid на jabber.org
___________
Repartee is something we think of twenty-four hours too late.
		-- Mark Twain
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : http://lists.altlinux.org/pipermail/devel/attachments/20021102/652cdd4a/attachment.bin 


Подробная информация о списке рассылки Devel