[sisyphus] Re: [sisyphus] Давайте спорить. О Perl?

Mikhail Zabaluev =?iso-8859-1?q?mhz_=CE=C1_alt-linux=2Eorg?=
Ср Май 23 03:09:14 MSD 2001


Hello Alexey,

On Tue, May 22, 2001 at 08:17:57PM +0700, Alexey Morozov wrote:
>
> >>высчитывания зависимостей perl-пакетов (не perl(Some::Module), а 
> >>perl(Some/Module.pm))? И чем последняя лучше общепринятой? И почему бы 
> >>
> >Это Вам расскажет maintainer perl'а.
> >
> Угу.

А что, и расскажу. Когда мы с Дмитрием обсуждали авто-зависимости для
Perl, никаких общепринятых схем, кроме perl-Some-Module в имени
пакета, на горизонте не было. Выбранная схема позволяет включать в
зависимости не только .pm-модули, но и .pl, .ph и -- теоретически --
любые другие. Почитайте внимательно TFM: оператор require допускает
явную файловую форму, а также разделитель "'" вместо "::". Вы уже
ненавидите Perl так, как ненавижу его я? :) Во всем этом разнобое
самыми надежными выглядят имена файлов.

> >>предметно на повод написания/переписывания /usr/lib/rpm/perl.{req,prov}? 
> >>
> >К maintainer'ам perl'а и rpm'а.
> >
> Ok. Неплохо б только пообсуждать, что и как делать. Одна голова хорошо...
> 
> >Опять Вы голословны, однако.
> >
> Хорошо.
> 
> Пример кода:
> --------------------------------------------------
> package Test::Module;
> use Config;
> 
> if ($Config{'usethreads'}) {
>   require Thread;
>   # начинаем колбаситься в threaded model
> } else {
>   # куча-куча форков и колбасенье через shmem/pipe
> }
> 1;
> -------------------------------------------------
> 
> рекомендую Вам поставить для хохмы два perl'а, так, чтобы Thread.pm 
> оказался в путях и попробовать собрать такой вот пакет. Я Вас уверяю, 
> Thread.pm _попадет_ в зависимости нашего модуля, хотя, гхм, ну, Вы 
> видите... Собственно, я наткнулся на что-то похожее, хотя и не столь 
> явно выраженное, когда собирал DBI,
> 
> Нет, я еще раз повторю, я не знаю, как правильно. Возможно, совсем 
> правильно, но ломово - руками.

Истинно так. AutoReq и AutoProv - подпорки, которые не должны
полностью заменять высшую нервную деятельность. Они должны работать
там, где эта деятельность не требуется. В тех же пакетах, где
встречаются такие require "из-за угла", AutoReq: perl (на финальной
стадии работы над пакетом) не используется.

В текущей версии скриптов perl.{req,prov} анализируются наиболее
распространенные формы операторов включения, да еще делается eval в
"сейфе" как попытка определения номера версии. Есть ухищрения, которые
можно применить -- например, в Perl 5.6.x можно прогнать байт-код
через декомпилятор, и если тот не загнется, получить идеально
выровненный текст, где уровень отступа означает вложенность. Но пока
не видно практической нужды увеличивать точность работы за счет
понижения производительности. Идеи, разумеется, приветствуются.
Особенно - в виде кода, патчей и т.п.

-- 
Stay tuned,
  MhZ                                     JID: mookid на jabber.org
___________
The most costly of all follies is to believe passionately in the palpably
not true.  It is the chief occupation of mankind.
		-- H.L. Mencken




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