[devel] /usr/lib/rpm/perl.req -- ахтунг!

=?iso-8859-1?q?at_=CE=C1_turbinal=2Eorg?= =?iso-8859-1?q?at_=CE=C1_turbinal=2Eorg?=
Ср Окт 30 20:23:13 MSK 2002


On Wed, Oct 30, 2002 at 02:05:22PM +0600, Alexey Morozov wrote:
> > > Я вчитался в perl.req. Выяснилось, что он натурально зарубает все
> > > перловые зависимости, которые не предоставляются в среде сборки (а также
> > > самим пакетом).  Например, если в среде сборки нет ничего кроме
> > > perl-base и perl-devel, тогда в requires у пакета окажутся зависимости
> > > вида perl(XXX.pm) только из perl-base и perl-devel.
> > > Какие будут мнения по этому вопросу?
> > Предварительный диагноз: если отхачить perl.req на предмет ignore VMS*,
> > Mac* и т.п., то можно будет включить полный поиск зависимостей.
> А если делать так:
> запоминать таблицу загруженных модулей (через %INC),
> грузить некоторый модуль, а потом сравнивать %INC с запомненным.

Проблема здесь в том, что загрузка произвольного модуля эквивалента
исполнению произвольного кода в окружении сборки. В меньшей степени это
касается make test. Можно попробовать ограничить определенную активность
кода с помощью Safe(3) и Opcode(3).

Но вообще же, это никак не решает поставленную мной проблему, ибо
очевидно, что в %INC ничего кроме окружения сборки оказаться не может.

> Мне кажется, что у /некоторых/ модулей зависимости могут быть весьма
> неявными и совсем не обязательными, то есть, он либо может (с некоторой
> усеченной функциональностью) использоваться и без таковых модулей, либо
> использует эти необязательные случаи только в экзотических случаях, типа
> того же VMS или, например, в mod_perl...

Да, это так. Но ведь есть ещё и AutoLoader. Вчитайтесь, например, в
Storable.pm. Какие модули -- навскидку -- ему необходимы для успешной
работы? "Это не простой вопрос."

Вообще, весь этот perl.{req,prov} -- это грязный хак. Но это лучше, чем
ничего.




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