From: Alexey Tourbin <at@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] IA: intltool-0.37.1-alt1 broken deps
Date: Sun, 9 Mar 2008 20:28:09 +0300
Message-ID: <20080309172809.GD24653@solemn.turbinal> (raw)
In-Reply-To: <20080309170043.GA22433@wo.int.altlinux.org>
[-- Attachment #1: Type: text/plain, Size: 1839 bytes --]
On Sun, Mar 09, 2008 at 08:00:43PM +0300, Dmitry V. Levin wrote:
> По крайней мере, "require XML::Parser" присутствует в файлах
> /usr/bin/intltool-extract
> /usr/bin/intltool-merge
> /usr/share/aclocal/intltool.m4
> (правда, в защищённом от perl.req виде).
/usr/bin/intltool-extract:
595 sub readXml
596 {
597 my $xmldoc = shift || return;
598 my $ret = eval 'require XML::Parser';
599 if(!$ret) {
600 die "You must have XML::Parser installed to run $0\n\n";
601 }
Зачищать зависимости таким способом, как правило, не следует.
Стандартное сообщение об ошибке
$ perl -e 'use asdf'
Can't locate asdf.pm in @INC (@INC contains: /etc/perl5 ...) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
$
не намного хуже, чем user-friendly "You must have XML::Parser ...".
К тому же 'require XML::Parser' может отвалить по разным причинам,
а не только по той единственной причине, что XML::Parser не установлен.
Здесь, правда, есть тонкости (но они не касаются >~90% случаев).
Например, если в перловом исходнике стоит use (без eval/строки --
eval "use ..." это другое), то syntax check будет невозможен,
если соответствующий модуль не установлен (даже eval { use ... }).
"use" безусловно выполняется так скоро, как его видит парсер.
Чтобы сделать syntax check возможным без установки модуля, можно
заменить "use" на "require". Но "use" может опережающим образом менять
прототипы функций, то есть, фактически, ->import может воздействовать
на синтаксис последующего кода.
Короче, в общем, этот код лучше развернуть следующим образом:
вместо
598 my $ret = eval 'require XML::Parser';
599 if(!$ret) {
600 die "You must have XML::Parser installed to run $0\n\n";
601 }
написать
require XML::Parser;
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
next prev parent reply other threads:[~2008-03-09 17:28 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-09 17:00 Dmitry V. Levin
2008-03-09 17:28 ` Alexey Tourbin [this message]
2008-03-09 18:00 ` Alexey Tourbin
2008-03-10 19:19 ` Dmitry V. Levin
2008-03-10 23:15 ` Alexey Rusakov
2008-03-10 16:36 ` Dmitry V. Levin
2008-03-10 19:14 ` Dmitry V. Levin
2008-03-10 21:47 ` Alexey Rusakov
2008-03-11 0:23 ` Dmitry V. Levin
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=20080309172809.GD24653@solemn.turbinal \
--to=at@altlinux.ru \
--cc=devel@lists.altlinux.org \
/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