10.33. Perl-5.8.8 N32 Libraries

The Perl package contains the Practical Extraction and Report Language.

10.33.1. Installation of Perl

The following sed causes DynaLoader.a to be built with -fPIC so it can be linked into a shared library later:

sed -i -e "s@pldlflags=''@pldlflags=\"\$cccdlflags\"@g" \
    -e "s@static_target='static'@static_target='static_pic'@g" Makefile.SH

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.8.8-Configure_multilib-1.patch

The following sed causes DynaLoader.a to be built with -fPIC so it can be linked into a shared library later:

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

Before starting to configure, create a basic /etc/hosts file which will be referenced in one of Perl's configuration files as well as being used used by the testsuite if you run that:

echo "127.0.0.1 localhost clfs" > /etc/hosts

We also have to enable the loopback interface, this will prevent some perl networking testsuite failures:

ip link set lo up

We also have to set the hostname for some of the test:

hostname clfs

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 \
   -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

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.

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 multilib wrapper installed later:

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

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