[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