10.60. Perl-5.16.2 N32 Libraries

The Perl package contains the Practical Extraction and Report Language.

10.60.1. Installation of Perl

By default, Perl's Compress::Raw::Zlib module builds and links against its own internal copy of Zlib. The following command will tell it to use the system-installed Zlib:

sed -i -e '/^BUILD_ZLIB/s/True/False/' \
       -e '/^INCLUDE/s,\./zlib-src,/usr/include,' \
       -e '/^LIB/s,\./zlib-src,/usr/lib32,' \
       cpan/Compress-Raw-Zlib/config.in

Perl does not, by default, know about library directories with names other than lib, The following patch will allow it to install to other directories:

patch -Np1 -i ../perl-5.16.2-Configure_multilib-1.patch

There is a further (possibly cosmetic) anomaly - if we install perl and then run perl -V it will claim that libc is in /lib. The following sed fixes this, but only takes effect when make install is run:

sed -i "/libc/s@/lib@/lib32@" hints/linux.sh

We still need to tell perl to actually use lib32:

echo 'installstyle="lib32/perl5"' >>hints/linux.sh

To have full control over the way Perl is set up, you can run the interactive Configure script and hand-pick the way this package is built. If you prefer instead to use the defaults that Perl auto-detects, prepare Perl for compilation with:

./configure.gnu --prefix=/usr \
   -Dvendorprefix=/usr \
   -Dman1dir=/usr/share/man/man1 \
   -Dman3dir=/usr/share/man/man3 \
   -Dpager="/bin/less -isR" \
   -Dlibpth="/usr/local/lib32 /lib32 /usr/lib32" \
   -Dcc="gcc ${BUILDN32}" \
   -Dusethreads -Duseshrplib

The meaning of the new configure option:

-Dlibpth="/usr/local/lib32 /lib32 /usr/lib32"

This tells Perl to link against the N32 libraries.

-Dpager="/bin/less -isR"

This corrects an error in the way that perldoc invokes the less program.

-Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3

Since Groff is not installed yet, configure.gnu thinks that we do not want man pages for Perl. Issuing these parameters overrides this decision.

-Dusethreads

This tells Perl to use threads.

-Duseshrplib

This tells Perl to build a shared libperl.

Compile the package:

make

To test the results, issue: make test.

Install the package:

make install

Add a suffix to the perl binary which will be used by the multiarch wrapper:

mv -v /usr/bin/perl{,-n32}
mv -v /usr/bin/perl5.16.2{,-n32}

Details on this package are located in Section 10.61.2, “Contents of Perl.”