[devel] Re: Perl модули

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Апр 2 22:48:59 MSD 2005


On Sat, Mar 26, 2005 at 06:47:41PM +0300, Вячеслав Диконов wrote:
> # WARNING: failed to extract version
> at /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/Apache/SOAP.pm line 18:
> # $VERSION = sprintf("%d.%s", map {s/_//g; $_} q$Name:
> release-0_60-public $ =~ /-(\d+)_([\d_]+)/);
> # 'map' trapped by operation mask at (eval 3) line 1, <$fh> line 18.

Это из-за Safe->reval в perl.prov.  То есть map был отнесен
к "ненадежным" опкодам.  То есть в `Porivdes: perl(Apache/SOAP.pm)'
и др. версии не будет.  На это пока можно забить.

А версия на самом деле такая:

$ perl -le '$VERSION = sprintf("%d.%s", map {s/_//g; $_} q$Name: release-0_60-public $ =~ /-(\d+)_([\d_]+)/); print $VERSION'
0.60
$

А опкоды на самом деле называются mapwhile и mapstart:

$ perl -MO=Concise -le '$VERSION = sprintf("%d.%s", map {s/_//g; $_} q$Name: release-0_60-public $ =~ /-(\d+)_([\d_]+)/);'
k  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 2 -e:1) v ->3
j     <2> sassign vKS/2 ->k
h        <@> sprintf[t5] sK/2 ->i
3           <0> pushmark s ->4
4           <$> const[PV "%d.%s"] s ->5
9           <|> mapwhile(other->a)[t4] lK/1 ->h
8              <@> mapstart lK*/2 ->9
5                 <0> pushmark s ->6
-                 <1> null lK/1 ->6
-                    <1> null lK/1 ->9
g                       <@> leave lKP ->9
a                          <0> enter l ->b
b                          <;> nextstate(main 1 -e:1) v ->c
d                          </> subst(/"_"/) vK ->e
c                             <$> const[PV ""] s ->d
e                          <;> nextstate(main 1 -e:1) v ->f
-                          <1> ex-rv2sv sK/1 ->g
f                             <#> gvsv[*_] s ->g
7                 </> match(/"-(\\d+)_([\\d_]+)"/) lKMS/RTIME ->8
6                    <$> const[PV "Name: release-0_60-public "] s ->7
-        <1> ex-rv2sv sKRM*/1 ->j
i           <#> gvsv[*VERSION] s ->j
-e syntax OK
$

> + /usr/lib/rpm/find-requires
> error: file /bin/env: No such file or directory

А это кто сказал?
И почему не отвалилось?

> Can't locate MQClient/MQSeries.pm in @INC (@INC
> contains: /usr/lib/rpm /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5 /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/i386-linux /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl /etc/perl5 /usr/lib/perl5/i386-linux /usr/lib/perl5 /usr/lib/perl5/vendor_perl/i386-linux /usr/lib/perl5/vendor_perl /usr/lib/perl5/vendor_perl /etc/perl5 /usr/lib/perl5/i386-linux /usr/lib/perl5 /usr/local/lib/perl5/site_perl/5.8.6/i386-linux /usr/local/lib/perl5/site_perl/5.8.6 /usr/local/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/i386-linux /usr/lib/perl5/vendor_perl /usr/lib/perl5/vendor_perl .) at /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/SOAP/Transport/MQ.pm line 17.
> BEGIN failed--compilation aborted
> at /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/SOAP/Transport/MQ.pm line 17.
> /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/SOAP/Transport/MQ.pm: deparse failed, trying to recover with -MSOAP::Transport
> Can't locate SOAP/Transport.pm in @INC (@INC
> contains: /usr/lib/rpm /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5 /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/i386-linux /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl /etc/perl5 /usr/lib/perl5/i386-linux /usr/lib/perl5 /usr/lib/perl5/vendor_perl/i386-linux /usr/lib/perl5/vendor_perl /usr/lib/perl5/vendor_perl /etc/perl5 /usr/lib/perl5/i386-linux /usr/lib/perl5 /usr/local/lib/perl5/site_perl/5.8.6/i386-linux /usr/local/lib/perl5/site_perl/5.8.6 /usr/local/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/i386-linux /usr/lib/perl5/vendor_perl /usr/lib/perl5/vendor_perl .).
> BEGIN failed--compilation aborted.
> # /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/SOAP/Transport/MQ.pm: deparse failed. prefix=/home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl
> ошибка: /bin/sh не удалось
> ошибка: Невозможно найти Requires

Проще всего забыть про MQSeries.pm:
%add_findreq_skiplist */Transport/MQ.pm

Тогда Transport::MQ работать не будет, но это далеко не основной
транспорт, насколько я понимаю.  По HTTP этот SOAP гоняют.

> Тесты пришлось отключить, потому что для полного их выполнения придется
> ставить Perl::Apache, а это тянет весь Apache в зависимости к набору
> скриптов, читающих программу телепередач из Интернета.

Ох.  Хорошо было бы, если perl-SOAP-Lite собирал кто-нибудь из тех,
кто его использует.  Я не использую.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20050402/7cd4ca20/attachment-0001.bin>


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