From: Mikhail Zabaluev <mhz@altlinux.org>
To: devel@altlinux.ru
Cc: at@turbinal.org
Subject: [devel] Re: /usr/lib/rpm/perl.req -- patch
Date: Sat, 2 Nov 2002 12:49:58 +0300
Message-ID: <20021102094958.GD6621@mhz.mikhail.zabaluev.name> (raw)
In-Reply-To: <20021030234453.GA6989@homestead.turbinal.org>
[-- Attachment #1: Type: text/plain, Size: 1786 bytes --]
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
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2002-11-02 9:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-29 23:27 [devel] /usr/lib/rpm/perl.req -- ахтунг! at
2002-10-30 0:58 ` at
2002-10-30 8:05 ` Alexey Morozov
2002-10-30 17:23 ` at
2002-10-30 23:44 ` [devel] /usr/lib/rpm/perl.req -- patch at
2002-10-31 0:19 ` at
2002-10-31 0:32 ` Dmitry V. Levin
2002-10-31 1:15 ` at
2002-11-02 9:27 ` [devel] " Mikhail Zabaluev
2002-10-31 0:22 ` [devel] " Dmitry V. Levin
2002-11-02 9:49 ` Mikhail Zabaluev [this message]
2002-11-02 14:01 ` [devel] " at
2002-11-02 15:18 ` Alexey Tourbin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20021102094958.GD6621@mhz.mikhail.zabaluev.name \
--to=mhz@altlinux.org \
--cc=at@turbinal.org \
--cc=devel@altlinux.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git