[Shipwright] Shipwright Build using older versions of Perl modules

Wenck, Samuel samuel.wenck at lmco.com
Thu Dec 12 12:11:54 EST 2013


Summary:
While attempting to build a shipwright vessel using version 2.4.38 of shipwright on CentOS 6.4, it appears that the builder script is referencing an older version of a Perl module instead of the updated module installed using the CPAN client.

Details:
I have successfully imported the cpan-Devel-GlobalDestruction-XS package and all of its dependencies into a file system based shipyard using this import command:

shipwright import --include-dual-lifed --min-perl-version= 5.008006 --log-file - --log-level info cpan:Devel::GlobalDestruction

When I use the following build commands from within the ship yard:

cd /opt/rt_build/rt4.2.1_vessel/shipwright/yard
./bin/shipwright-builder  --flags mysql --install-base ../vessel

I receive the following error messages:

building RT
building cpan-Test-Harness
building cpan-Test
building cpan-Test-Simple
building cpan-Scalar-List-Utils
build cpan-Scalar-List-Utils make part failed, last output of build.log is:
                  blib/arch/auto/Test/Simple/extralibs.ld blibdirs.ts \
                  core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
                  core.*perl.*.? Makefile.aperl \
                  perl Simple.def \
                  core.[0-9][0-9][0-9] mon.out \
                  libSimple.def perlmain.c \
                  perl.exe so_locations \
                  Simple.exp
        rm -rf \
                  blib
        mv Makefile Makefile.old > /dev/null 2>&1
        Checking if your kit is complete...
        Looks good
        Writing Makefile for List::Util
        cp lib/List/Util/XS.pm blib/lib/List/Util/XS.pm
        cp lib/List/Util.pm blib/lib/List/Util.pm
        cp lib/Scalar/Util.pm blib/lib/Scalar/Util.pm
        /usr/bin/perl /usr/share/perl5/ExtUtils/xsubpp  -typemap /usr/share/perl5/ExtUtils/typemap  ListUtil.xs > ListUtil.xsc && mv ListUtil.xsc ListUtil.c
        Undefined subroutine &ExtUtils::ParseXS::errors called at /usr/share/perl5/ExtUtils/xsubpp line 44.
        make: *** [ListUtil.c] Error 255
at ./bin/shipwright-builder line 605
        main::_install('cpan-Scalar-List-Utils', 'GLOB(0x28edc68)') called at ./bin/shipwright-builder line 435
        main::install() called at ./bin/shipwright-builder line 300

The messages indicate that the build script is referencing the old version of the /usr/share/perl5/ExtUtils/xsubpp script which is part of the CentOS perl-ExtUtils-ParseXS RPM:

[root at CentOS64Dev]# rpm -ql perl-ExtUtils-ParseXS-2.2003.0-131.el6_4.x86_64
/usr/share/man/man3/ExtUtils::ParseXS.3pm.gz
/usr/share/perl5/ExtUtils/ParseXS.pm
/usr/share/perl5/ExtUtils/xsubpp

instead of using the newer version installed here by CPAN command line client:

[root at CentOS64Dev ~]# ls -alt /usr/local/share/perl5/ExtUtils/xsubpp
-r--r--r--. 1 root root 5033 Aug 29 13:29 /usr/local/share/perl5/ExtUtils/xsubpp

The scripts are very different due to newer version of the module. Here is the CPAN information about the newer module which I installed onto the build system for where I running the above commands:

cpan[1]> i ExtUtils::ParseXS
CPAN: Storable loaded ok (v2.20)
Reading '/root/.cpan/Metadata'
  Database was generated on Thu, 12 Dec 2013 03:07:48 GMT
Module id = ExtUtils::ParseXS
    DESCRIPTION  Converts Perl XS code into C code
    CPAN_USERID  KWILLIAMS (Ken Williams <kwilliams at cpan.org>)
    CPAN_VERSION 3.22
    CPAN_FILE    S/SM/SMUELLER/ExtUtils-ParseXS-3.22.tar.gz
    UPLOAD_DATE  2013-08-29
    DSLIP_STATUS Rdpfp (released,developer,perl,functions,Standard-Perl)
    MANPAGE      ExtUtils::ParseXS - converts Perl XS code into C code
    INST_FILE    /usr/local/share/perl5/ExtUtils/ParseXS.pm
    INST_VERSION 3.22

I verified that Perl's path contains the local directory in the hierarchy before the other directory:

Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL
                        USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
                        USE_PERLIO USE_REENTRANT_API USE_SITECUSTOMIZE
  Built under linux
  Compiled at Apr 30 2013 12:24:05
  @INC:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5

I don't think I am doing anything wrong as I have built other shipwright vessels using the same commands.  Is there a way to tell shipwright to use only the newer Perl modules and not ones installed by RPMs?


I would appreciate any assistance as to how I should resolve this issue.

Thanks in advance, Sam

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/shipwright/attachments/20131212/19f01796/attachment.html>


More information about the Shipwright mailing list