[devel] IA: intltool-0.37.1-alt1 broken deps

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вс Мар 9 20:28:09 MSK 2008


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;
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20080309/18de4325/attachment-0002.bin>


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