$ /usr/lib/rpm/perl.req /usr/libexec/git-core/git-svn # perl(Compress/Zlib.pm) at line 48 (depth 4) inside eval SKIP dying at /usr/libexec/git-core/git-svn line 5583 at /usr/lib/perl5/vendor_perl/B/PerlReq.pm line 309 B::PerlReq::__ANON__('Can\'t locate object method "XSUB" via package "B::PV" at /us...') called at /usr/lib/perl5/vendor_perl/B/Walker.pm line 103 B::Walker::walk_gv('B::GV=SCALAR(0x152fc730)') called at /usr/lib/perl5/vendor_perl/B/Walker.pm line 122 B::Walker::walk_stash('HASH(0x149fb630)', 'Git::SVN::Log::') called at /usr/lib/perl5/vendor_perl/B/Walker.pm line 117 B::Walker::walk_stash('HASH(0x149fb300)', 'Git::SVN::') called at /usr/lib/perl5/vendor_perl/B/Walker.pm line 117 B::Walker::walk_stash('HASH(0x149fb2b8)', 'Git::') called at /usr/lib/perl5/vendor_perl/B/Walker.pm line 117 B::Walker::walk_stash('HASH(0x14841be8)', '') called at /usr/lib/perl5/vendor_perl/B/Walker.pm line 129 B::Walker::walk_subs() called at /usr/lib/perl5/vendor_perl/B/PerlReq.pm line 313 B::PerlReq::__ANON__() called at (eval 1) line 31 O::CHECK() called at /usr/libexec/git-core/git-svn line 0 eval {...} called at /usr/libexec/git-core/git-svn line 0 Can't locate object method "XSUB" via package "B::PV" at /usr/lib/perl5/vendor_perl/B/Walker.pm line 103. CHECK failed--call queue aborted. # /usr/libexec/git-core/git-svn: deparse failed. isPerl=0.055435727756259. $ rpmquery -f /usr/bin/perl /usr/lib/rpm/perl.req perl-base-5.12.2-alt00 rpm-build-perl-0.73-alt1
Простейший тесткейс: perl -MO=PerlReq -e 'use constant a=>"a"; print a,"a";' любопытно также сравнить вывод на perl-5.8.9 и на perl-5.12.2: perl -MData::Dumper -e 'print Dumper(\%::)' | grep "','" В данном примере ошибка происходит в функции walk_gv(), метод CV возвращает объект класса B::PV для символа 'a,"a";', вместо ожидаемого B:CV, соответственно вызов метода XSUB для этого класса приводит к фатальной ошибке. Вариант решения проблемы: http://git.altlinux.org/people/crux/packages/rpm-build-perl.git?p=rpm-build-perl.git;a=commitdiff;h=1136a3172304460cd96b75fe58c872c67b391f46
rpm-build-perl-0.73-alt2 -> sisyphus: * Mon Nov 15 2010 Vladimir Lettiev <crux@altlinux> 0.73-alt2 - fixed fatal error in walk_gv() when method CV return not B::CV class object (Closes: #24564)
Deparse тоже не работает, надо файлить перлбаг. $ perl -MO=Deparse /usr/libexec/git-core/git-svn Can't locate object method "GV" via package "B::PV" at /usr/share/perl5/B/Deparse.pm line 506. CHECK failed--call queue aborted.
http://rt.perl.org/rt3/Ticket/Display.html?id=79520
Ошибка была исправлена в blead perl в коммите e5c69c9, для решения подобной проблемы в http://rt.perl.org/rt3//Public/Bug/Display.html?id=76540 Можно сделать cherry-pick на этот коммит (а также зависимый e3d2b9e). Я уже проверил сборку с этими изменениями - B::Deparse заработал. Можно, в принципе, отправлять в Sisyphus.
Исправление будет в 5.12.3 http://www.nntp.perl.org/group/perl.perl5.porters/2011/01/msg168102.html