#!/bin/sh
# Build and install Perl on Slackware
# by:  David Cantrell <david@slackware.com>
#

CWD=`pwd`
TMP=/tmp
ARCH=i386

PERL_VER=5.6.1
DBI_VER=1.15
DATASHOWTABLE_VER=3.3
GETOPT_MIXED_VER=1.008
MD5_VER=1.7
TERMREADKEY_VER=2.14
LIBNET_VER=1.0703
VERSION=$PERL_VER

# OK, this is a real kludge, but it should work.
# Is ndbm used for anything anymore?
mkdir -p $TMP/junk
echo "HARMLESS ERROR POSSIBLE HERE:"
mv /usr/lib/*ndbm* junk

# We remove the old Perl from the system before building
rm -rf /usr/lib/perl5

# Extract the sources
cd $TMP
tar xvzf $CWD/perl-$VERSION.tar.gz
tar xvzf $CWD/DBI-$DBI_VER.tar.gz
tar xvzf $CWD/Data-ShowTable-$DATASHOWTABLE_VER.tar.gz
tar xvzf $CWD/Getopt-Mixed-$GETOPT_MIXED_VER.tar.gz
tar xvzf $CWD/MD5-$MD5_VER.tar.gz
tar xvzf $CWD/TermReadKey-$TERMREADKEY_VER.tar.gz
tar xvzf $CWD/libnet-$LIBNET_VER.tar.gz

# It is often suggested that we add this to the ./Configure:
#            -Dusethreads \
# However, this option is considered experimental, and is not
# recommended for production systems.  As such, we can't add
# to our default perl build.  If you want the option anyway,
# just add it below and rebuild perl.

# Configure the source tree
cd $TMP/perl-$VERSION
./Configure -de \
            -Dprefix=/usr \
            -Darchname=i386-linux \
            -Dprivlib=/usr/lib/perl5 \
            -Darchlib=/usr/lib/perl5/i386-linux \
            -Dsitelib=/usr/lib/perl5/site_perl \
            -Dsitearch=/usr/lib/perl5/site_perl/i386-linux
cd $TMP
cp -a perl-$VERSION perl-$VERSION-suid

# Build perl
cd $TMP/perl-$VERSION
make
make test

# Build suidperl
cd $TMP/perl-$VERSION-suid
make suidperl

# Install perl
cd $TMP/perl-$VERSION
make install

# Install suidperl
cd $TMP/perl-$VERSION-suid
cp suidperl /usr/bin/suidperl$VERSION
chmod 4711 /usr/bin/suidperl$VERSION

# Symlinks
( cd /usr/bin
  ln -sf perl$VERSION perl
  ln -sf suidperl$VERSION suidperl
  ln -sf c2ph pstruct )

# Install documentation
cd $TMP/perl-$VERSION
mkdir -p /usr/doc/perl-$VERSION
cp -a AUTHORS Artistic Copying INSTALL MAINTAIN MANIFEST README \
   README.Y2K README.threads Todo Todo-5.6 /usr/doc/perl-$VERSION

# Make and install the DBI module and docs
cd $TMP/DBI-$DBI_VER
perl ./Makefile.PL
make
make test
make install
mkdir -p /usr/doc/perl-$VERSION/DBI-$DBI_VER
cp -a MANIFEST README ToDo /usr/doc/perl-$VERSION/DBI-$DBI_VER

# Make and install Data-Showtable module and docs
cd $TMP/Data-ShowTable-$DATASHOWTABLE_VER
zcat $CWD/Data-ShowTable-$DATASHOWTABLE_VER.diff.gz | patch -p1 --verbose
perl ./Makefile.PL
make
make test
make install
mkdir -p /usr/doc/perl-$VERSION/Data-ShowTable-$DATASHOWTABLE_VER
cp -a Copyright GNU-LICENSE MANIFEST README *.html \
   /usr/doc/perl-$VERSION/Data-ShowTable-$DATASHOWTABLE_VER

# Make and install Getopt-Mixed module and docs
cd $TMP/Getopt-Mixed-$GETOPT_MIXED_VER
perl ./Makefile.PL
make
make test
make install
mkdir -p /usr/doc/perl-$VERSION/Getopt-Mixed-$GETOPT_MIXED_VER
cp -a MANIFEST README tstopt1 tstopt2 \
   /usr/doc/perl-$VERSION/Getopt-Mixed-$GETOPT_MIXED_VER

# Make and install libnet module and docs
cd $TMP/libnet-$LIBNET_VER
perl ./Makefile.PL
make
make test
make install
mkdir -p /usr/doc/perl-$VERSION/libnet-$LIBNET_VER
cp -a ChangeLog MANIFEST README* /usr/doc/perl-$VERSION/libnet-$LIBNET_VER

# Make and install TermReadKey module and docs
cd $TMP/TermReadKey-$TERMREADKEY_VER
perl ./Makefile.PL
make
make test
make install
mkdir -p /usr/doc/perl-$VERSION/TermReadKey-$TERMREADKEY_VER
cp -a MANIFEST README /usr/doc/perl-$VERSION/TermReadKey-$TERMREADKEY_VER

# Make and install MD5 module and docs
cd $TMP/MD5-$MD5_VER
perl ./Makefile.PL
make
make test
make install
mkdir -p /usr/doc/perl-$VERSION/MD5-$MD5_VER
cp -a Changes MANIFEST README /usr/doc/perl-$VERSION/MD5-$MD5_VER

# move ndbm stuff back
echo "HARMLESS ERROR POSSIBLE HERE:"
mv $TMP/junk/*ndbm* /usr/lib
