ALT Linux Team development discussions
 help / color / mirror / Atom feed
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 --]

  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