Menu

#762 Support newer versions of perl

Next
open
perl (1)
5
2015-08-21
2015-04-08
TheWizard
No

Perl 5.14 is almost 4 years old and is unsupported.
Feature request to support newer versions of Perl 5:

- 5.16.x
- 5.18.x
- 5.20.x

and Perl 6

Discussion

  • Sharon Lucas

    Sharon Lucas - 2015-04-28

    I started looking at providing support for newer version of Perl. Note that Perl 5.16 is no longer available to download free on the ActivePerl web site at http://aspn.activestate.com/ASPN/Downloads/ActivePerl/ so I probably won't be able to provide STAF Perl 5.16 support.

    I tried to build STAF Perl support for Windows 64-bit using ActivePerl 5.18. Here are some notes on problems I encountered and workarounds.

    Building STAF Perl Support on Windows 64-bit using ActivePerl 5.18:

    I downloaded ActivePerl-5.18.4.1804-MSWin32-x64-298913.msi from the ActivePerl web site at http://aspn.activestate.com/ASPN/Downloads/ActivePerl/ and installed it on a Windows 7 64-bit system to directory C:\Perl64-5.18. Then I tarred up this directory to my STAF win32 build machine (where I build winamd64).

    Starting with Perl 5.18, ActivePerl is built with MinGW on Windows, not Visual Studio, so there are some changes that need to be made to ActivePerl 5.18 for Windows in order to use it to build STAF Perl 5.18 support.

    1) To fix various compile errors regarding the definition of the PERL_STATIC_INLINE variable, edit the lib\CORE\config.h file (after changing it's permissions so it isn't read only) and change the define line for PERL_STATIC_INLINE to use the value used when compiling using Microsoft Visual Studio (MSVC) instead of setting it to the value used when compiling using "gcc -ansi":

    Change:

    #define PERL_STATIC_INLINE static __inline__  /**/
    

    to:

    #define PERL_STATIC_INLINE static __inline  /**/
    

    Here's how it was defined in the config.h file in ActivePerl 5.14 which worked:

    /* PERL_STATIC_INLINE:
    
     *  This symbol gives the best-guess incantation to use for static
     *  inline functions.  If HAS_STATIC_INLINE is defined, this will
     *  give C99-style inline.  If HAS_STATIC_INLINE is not defined,
     *  this will give a plain 'static'.  It will always be defined
     *  to something that gives static linkage.
     *  Possibilities include
     *      static inline       (c99)
     *      static __inline__   (gcc -ansi)
     *      static __inline     (MSVC)
     *      static _inline      (older MSVC)
     *      static              (c89 compilers)
     */
    #define HAS_STATIC_INLINE               /**/
    #define PERL_STATIC_INLINE static __inline  /**/
    

    2) Another change is needed to fix the following link error which now occurs because there is no longer a file named perl518.lib in the lib\CORE folder or anywhere else:

    *** Linking shared library PLSTAF.dll ***
    cl : Command line warning D9035 : option 'Og' has been deprecated and will be removed in a future release
    
    LINK : fatal error LNK1181: cannot open input file 'perl518.lib'
    

    STAF needs the perl518.lib file to link to Perl. Since ActivePerl 5.18 and newer is being built with MinGW, not Visual Studio, this library file is now named libperl518.a as it is using the standard GNU extension. To resolve the STAF Perl link error, copy file lib\CORE\libperl518.a to lib\CORE\perl518.lib.

    These were the changes I made to successfully build STAF Perl support using ActivePerl 5.18 on Windows 64-bit.

     
  • Sharon Lucas

    Sharon Lucas - 2015-04-28
    • assigned_to: Sharon Lucas
     
  • Sharon Lucas

    Sharon Lucas - 2015-04-28

    Building STAF Perl Support on Windows 64-bit using ActivePerl 5.20:

    I downloaded ActivePerl-5.20.2.2001-MSWin32-x64-298913.msi from the ActivePerl web site at http://aspn.activestate.com/ASPN/Downloads/ActivePerl/ and installed it on a Windows 7 64-bit system to directory C:\Perl64-5.20. Then I tarred up this directory to put it on my STAF win32 build machine (where I build winamd64).

    Here are the changes needed to build STAF Perl support on Windows 64-bit using ActivePerl 5.20. Note that the same changes needed to build STAF for Perl 5.18 are also needed for Perl 5.20 as well as another change to Perl's lib\CORE\config.h file to comment out the definition of I_STDBOOL.

    1) To fix various compile errors regarding the definition of the PERL_STATIC_INLINE variable, edit the lib\CORE\config.h file (after changing it's permissions so it isn't read only) and change the define line for PERL_STATIC_INLINE to use the value used when compiling using Microsoft Visual Studio (MSVC) instead of setting it to the value used when compiling using "gcc -ansi":

    Change:

    #define PERL_STATIC_INLINE static __inline__  /**/
    

    to:

    #define PERL_STATIC_INLINE static __inline  /**/
    

    2) To fix the following error compiling STAFPerlGlue.obj trying to open file stdbool.h:

    c:\perl64-5.20\lib\core\handy.h(77) : fatal error C1083: Cannot open include file: 'stdbool.h': No such file or directory

    Edit the lib\CORE\config.h file and comment out the definition of I_STDBOOL by changing line:

    #define I_STDBOOL       /**/
    

    to:

    /*#define   I_STDBOOL       / **/
    

    3) To resolve the STAF Perl link error, copy file lib\CORE\libperl520.a to lib\CORE\perl520.lib.

     
  • Sharon Lucas

    Sharon Lucas - 2015-05-07

    STAF Support for ActivePerl 5.18 and 5.20 on winamd64

    Even though I was able to build STAF Perl support on Windows 64-bit using ActivePerl 5.18 and 5.20 with the changes that I previously posted, when trying to test the STAF Perl support library built, I got an error popup "Perl Command Line Interpreter has stopped working" as follows:

    C:\STAF-64\bin\perl518>set PERLLIB=C:\STAF-64\bin\perl518;C:\STAF-64\bin;
    C:\STAF-64\bin\perl518>set PATH=C:\tools\Perl64-5.18\bin;%PATH%
    C:\STAF-64\bin\perl518>perl -v
    
    This is perl 5, version 18, subversion 4 (v5.18.4) built for MSWin32-x64-multi-thread
    (with 1 registered patch, see perl -V for more detail)
    
    Copyright 1987-2013, Larry Wall
    
    Binary build 1804 [298913] provided by ActiveState http://www.ActiveState.com
    Built Mar 24 2015 13:59:13
    
    Perl may be copied only under the terms of either the Artistic License or the
    GNU General Public License, which may be found in the Perl 5 source kit.
    
    Complete documentation for Perl, including FAQ lists, should be found on
    this system using "man perl" or "perldoc perl".  If you have access to the
    Internet, point your browser at http://www.perl.org/, the Perl Home Page.
    
    
    C:\STAF-64\bin\perl518>cd \dev\sf\src\staf\lang\perl
    C:\dev\sf\src\staf\lang\perl>perl TestPerl.pl
    

    Got error popup "Perl Command Line Interpreter has stopped working. Close the program."

    And the same error when using Perl 5.20:

    C:\>set PERLLIB=C:\STAF-64\bin\perl520;C:\STAF-64\bin;
    C:\>set PATH=C:\tools\Perl64-5.20\bin;%PATH%
    C:\>perl -v
    
    This is perl 5, version 20, subversion 2 (v5.20.2) built for MSWin32-x64-multi-thread
    (with 1 registered patch, see perl -V for more detail)
    
    Copyright 1987-2015, Larry Wall
    
    Binary build 2001 [298913] provided by ActiveState http://www.ActiveState.com
    Built Mar 24 2015 12:09:44
    
    Perl may be copied only under the terms of either the Artistic License or the
    GNU General Public License, which may be found in the Perl 5 source kit.
    
    Complete documentation for Perl, including FAQ lists, should be found on
    this system using "man perl" or "perldoc perl".  If you have access to the
    Internet, point your browser at http://www.perl.org/, the Perl Home Page.
    
    
    C:\>cd dev\sf\src\staf\lang\perl
    C:\dev\sf\src\staf\lang\perl>perl TestPerl.pl
    

    Got error popup "Perl Command Line Interpreter has stopped working. Close the program."

    STAF Support for ActivePerl 5.18 on win32

    Downloaded ActivePerl-5.18.4-1804-MSWin32-x86-64int-298913.msi from the ActivePerl web site and installed it on the STAF win32 build machine.

    The same changes that were needed to build ActivePerl 5.18 on winamd64 were also needed to build ActivePerl 5.18 on win32:

    1) Edit the C:\ActivePerl-5.18\lib\CORE\config.h file (after changing it's permissions so it isn't read only) and change the define line for PERL_STATIC_INLINE to use the value used when compiling using Microsoft Visual Studio (MSVC) instead of setting it to the value used when compiling using "gcc -ansi":

    #define PERL_STATIC_INLINE static __inline  /**/
    

    2) To resolve the STAF Perl link error:

    C:\>cd \ActivePerl-5.18\lib\CORE
    C:\>copy libperl518.a perl518.lib.
    

    However, still could not build STAF support for Perl 5.18 on the STAF win32 build machine. I think that the ActivePerl file for win32 that I downloaded from the ActivePerl web site may be for running a 32-bit Perl 5.18 version on a Windows 64-bit machine, not for running a 32-bit Perl version on a Windows 32-bit machine as I needed. Here are the compile errors:

    Failed win32 (RC=2): [win32] Build failed for project perl on build machine staf3f.austin.ibm.com. RC=2, Result=None
    
    Build Stdout/Stderr:
    ...
    
    *** Compiling STAFPerlService.obj ***
    STAFPerlService.cpp
    
    *** Compiling STAFPerlGlue.obj ***
    STAFPerlGlue.cpp
    
    C:\ActivePerl-5.18\lib\CORE\perl.h(1740) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\perl.h(1741) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\perlio.h(292) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\perlio.h(295) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\win32iop.h(61) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\win32iop.h(62) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\win32iop.h(77) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\win32iop.h(78) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\win32iop.h(78) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\win32iop.h(79) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(195) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(195) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(195) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(195) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(195) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(195) : error C2065: 'L' : undeclared identifier
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(196) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(196) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(196) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(196) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(196) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(197) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(197) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(197) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(197) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(197) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(198) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(198) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(198) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(198) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(198) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(200) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(201) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(201) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(202) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(202) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(203) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(207) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(217) : error C2065: '_rotl64' : undeclared identifier
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(224) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(225) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(226) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(227) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(228) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(229) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\hv_func.h(230) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\proto.h(937) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\proto.h(949) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\proto.h(949) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\proto.h(954) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\proto.h(7885) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\proto.h(7898) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\inline.h(147) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\inline.h(147) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\inline.h(147) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\inline.h(155) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\inline.h(155) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.18\lib\CORE\inline.h(155) : error C2632: 'long' followed by 'long' is illegal
    
    make: *** [/cygdrive/c/dev/autobuild/build/obj/win32/staf/retail/lang/perl/perl518/STAFPerlGlue.obj] Error 2
    

    STAF Support for ActivePerl 5.20 on win32

    Downloaded ActivePerl-5.20.2.2001-MSWin32-x86-64int-298913.msi from the ActivePerl web site and installed it on the STAF win32 build machine to C:\ActivePerl-5.20.

    The same changes that were needed to build ActivePerl 5.20 on winamd64 were also needed to build ActivePerl 5.20 on win32:

    1) Edit the C:\ActivePerl-5.20\lib\CORE\config.h file (after changing it's permissions so it isn't read only) and change the define line for PERL_STATIC_INLINE to use the value used when compiling using Microsoft Visual Studio (MSVC) instead of setting it to the value used when compiling using "gcc -ansi":

    #define PERL_STATIC_INLINE static __inline  /**/
    

    2) To resolve the STAF Perl link error:

    C:\>cd \ActivePerl-5.20\lib\CORE
    C:\>copy libperl520.a perl520.lib.
    

    3) Edit the C:\ActivePerl-5.20\lib\CORE\config.h file and comment out the definition of I_STDBOOL:

    /*#define   I_STDBOOL       / **/
    

    However, still could not build STAF support for Perl 5.20 on the STAF win32 build machine. I think that the ActivePerl file for win32 that I downloaded from the ActivePerl web site may be for running a 32-bit Perl 5.20 version on a Windows 64-bit machine, not for running a 32-bit Perl version on a Windows 32-bit machine as I needed. Here are the compile errors:

    Failed win32 (RC=2): [win32] Build failed for project perl on build machine staf3f.austin.ibm.com. RC=2, Result=None
    
    Build Stdout/Stderr:
    ...
    
    *** Compiling STAFPerlGlue.obj ***
    STAFPerlGlue.cpp
    
    C:\ActivePerl-5.20\lib\CORE\perl.h(1587) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\perl.h(1588) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\perlio.h(277) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\perlio.h(280) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\win32iop.h(61) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\win32iop.h(62) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\win32iop.h(77) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\win32iop.h(78) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\win32iop.h(78) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\win32iop.h(79) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(195) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(195) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(195) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(195) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(195) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(195) : error C2065: 'L' : undeclared identifier
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(196) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(196) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(196) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(196) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(196) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(197) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(197) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(197) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(197) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(197) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(198) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(198) : error C2059: syntax error : 'bad suffix on number'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(198) : warning C4305: 'initializing' : truncation from 'const unsigned __int64' to 'unsigned long'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(198) : warning C4309: 'initializing' : truncation of constant value
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(198) : error C2146: syntax error : missing ';' before identifier 'L'
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(200) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(201) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(201) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(202) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(202) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(203) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(207) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(215) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(217) : error C2065: '_rotl64' : undeclared identifier
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(224) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(225) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(226) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(227) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(228) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(229) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\hv_func.h(230) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\proto.h(976) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\proto.h(988) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\proto.h(988) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\proto.h(993) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\proto.h(8069) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\proto.h(8082) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\inline.h(277) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\inline.h(277) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\inline.h(277) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\inline.h(285) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\inline.h(285) : error C2632: 'long' followed by 'long' is illegal
    C:\ActivePerl-5.20\lib\CORE\inline.h(285) : error C2632: 'long' followed by 'long' is illegal
    
    make: *** [/cygdrive/c/dev/autobuild/build/obj/win32/staf/retail/lang/perl/perl520/STAFPerlGlue.obj] Error 2
    

    STAF Support for ActivePerl 5.18 on linux 32-bit

    The STAF build machine for Linux 32-bit is currently broken. I need to replace it before I can try to build STAF Perl support for ActivePerl 5.18 on Linux.

    STAF Support for ActivePerl 5.20 on linux 32-bit

    The ActivePerl web site does not currently provide a file to download for ActivePerl 5.20 for Linux 32-bit.

    STAF Support for ActivePerl 5.18 on linux-amd64

    I was able to successfully build and test STAF Perl support on Linux 64bit (AMD64) using ActivePerl 5.18 so I plan to add support for Perl 5.18 for linux-amd64 in the next STAF release (planned for the end of June 2015). I ran TestPerl.pl and it ran successfully.

    # export PERLLIB=/usr/local/staf/lib/perl518:/usr/local/staf/bin
    # export PATH=/opt/ActivePerl-5.18/bin:$PATH
    # perl TestPerl.pl
    Using handle: 4
    
    Testing Class STAFHandle Methods...
      Verify that auto-unmarshalling result is turned on by default
      Turn off auto-unmarshalling result  Turn on auto-unmarshalling result
    Testing STAF::Submit2 API with "local PING PING"
    
    Testing $STAF::STAFHandle::kReqSync
      Result: PONG
    
    Testing $STAF::STAFHandle::kReqFireAndForget
      Result: 27
    ...  (more successful test results)
    
    Unregistering handle 39
    
    *** All tests successful ***
    #
    

    I checked in the code changes I made to provide Perl support on linux-amd64 for Perl 5.18 and I will attach a file containing those changes.

    STAF Support for ActivePerl 5.20 on linux-amd64

    I was unable to install ActivePerl 5.20 on my Linux AMD64 STAF build machine due to the install of ActivePerl 5.20 failing because my STAF linux-amd64 build machine does not have the GLIBC version required for the ActivePerl 5.20 install to work:

    # tar xfz ActivePerl-5.20.2.2001-x86_64-linux-glibc-2.15-298913.tar.gz
    # cd ActivePerl-5.20.2.2001-x86_64-linux-glibc-2.15-298913
    # ls
    ACTIVEPERL.txt  install.sh   perl        RELEASE.txt
    CHANGES.txt     LICENSE.txt  README.txt  support
    # sh install.sh
    perl/bin/perl: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by perl/bin/perl)
    perl/bin/perl: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by perl/bin/perl)
    #
    
     

    Last edit: Sharon Lucas 2015-05-07
  • Sharon Lucas

    Sharon Lucas - 2015-05-07

    Note, since Perl 6 isn't available on ActivePerl yet as its planned final release date isn't until around the end of December 2015, this will need to be looked at in a different feature request.

     
  • Sharon Lucas

    Sharon Lucas - 2015-05-07

    Attached a diff of the changes to build STAF Perl 5.18 support on linux-amd64.

     
  • Sharon Lucas

    Sharon Lucas - 2015-08-21

    Added support for Perl 5.16 and 5.18 for STAF on Mac OS X as Mac OS X 10.10 comes with Perl 5.16 and 5.18 (and removed support for Perl 5.8 and 5.10 on Mac OS X since the new STAF Mac OS X 10.10 build system does not have the older Perl versions on it). The STAF Perl updates for Mac OS X will be part of STAF V3.4.23 planned for release at the end of September 2015.

    I attached a file containing a cvs diff of the Perl changes for Mac OS X.

     

Log in to post a comment.

MongoDB Logo MongoDB