[Shipwright] Shipwright Build using older versions of Perl modules

sunnavy sunnavy at gmail.com
Mon Dec 16 09:58:55 EST 2013


Hi Sam

Shipwright ignores local directory(except its own ones), that’s the reason.
I would suggest import ExtUtils::ParseXS to Shipyard too and move it ahead
of cpan-Scalar-List-Utils at least in shipwright/order.yml.

Will this work for you?

Regards
sunnavy

On Dec 13, 2013, at 1:11, Wenck, Samuel <samuel.wenck at lmco.com> wrote:

> 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
>  
> _______________________________________________
> Shipwright mailing list
> Shipwright at lists.bestpractical.com
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/shipwright



More information about the Shipwright mailing list