#!/bin/sh
# Build and install Perl on Slackware
# originally by:  David Cantrell <david@slackware.com>
# maintained by:  <volkerdi@slackware.com>
CWD=`pwd`
TMP=/tmp
PKG=$TMP/package-perl
VERSION=5.8.6
ARCH=${ARCH:-alpha}
BUILD=1
# Additional required modules:
DBI=1.46
DBDMYSQL=2.9004
XMLPARSER=2.34
DB_F=1.810

if [ "$ARCH" = "alpha" ]; then
  SLKCFLAGS="-O3"
fi
if [ -x /usr/bin/perl ]; then
  echo "Perl detected."
  echo
  echo "It's a good idea to remove your existing perl first."
  echo
  sleep 5
fi
rm -rf /usr/lib/perl5
# Clear build location:
rm -rf $PKG
mkdir -p $PKG
# Extract the source code:
( cd $TMP
rm -rf perl-$VERSION
tar xjf $CWD/perl-$VERSION.tar.bz2
# Change into the source directory:
cd perl-$VERSION
rm -rf ext/DB_File
tar xzf $CWD/DB_File-$DB_F.tar.gz -C $TMP/perl-$VERSION/ext
cd ext ; ln -s DB_File-$DB_F DB_File ; cd ..
# Adjust owner/perms to standard values:
chown -R root.root .
find . -perm 555 -exec chmod 755 {} \;
find . -perm 444 -exec chmod 644 {} \;
# Configure perl:
./Configure -de \
  -Dprefix=/usr \
  -Dcccdlflags='-fPIC' \
  -Duseshrplib \
  -Dinstallprefix=/usr \
  -Doptimize="$SLKCFLAGS" \
  $USE_THREADS \
  -Dinc_version_list='5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' \
  -Darchname=$ARCH-alphaslack-linux
# Build perl
make
make test
# Install perl (needed to build modules):
make install
( cd /usr/bin
  ln -sf perl$VERSION perl
  ln -sf c2ph pstruct
  ln -sf s2p psed
)
# Install perl package:
make install DESTDIR=$PKG
# Add additional modules:
( cd ext
  ( tar xzf $CWD/DBI-${DBI}.tar.gz
    cd DBI-${DBI}
    chown -R root.root .
    perl Makefile.PL
    make
    make test
    make install
    make install DESTDIR=$PKG
    mkdir -p $PKG/usr/doc/perl-$VERSION/DBI-${DBI}
    cp -a README $PKG/usr/doc/perl-$VERSION/DBI-${DBI}
    chmod 644 $PKG/usr/doc/perl-$VERSION/DBI-${DBI}/README
  )
  ( tar xzf $CWD/DBD-mysql-${DBDMYSQL}.tar.gz
    cd DBD-mysql-${DBDMYSQL}
    chown -R root.root .
    perl Makefile.PL
    make
    make test
    make install
    make install DESTDIR=$PKG
    mkdir -p $PKG/usr/doc/perl-$VERSION/DBD-mysql-${DBDMYSQL}
    cp -a INSTALL.html README TODO $PKG/usr/doc/perl-$VERSION/DBD-mysql-${DBDMYSQL}
    chmod 644 $PKG/usr/doc/perl-$VERSION/DBD-mysql-${DBDMYSQL}/*
  )
  ( tar xzf $CWD/XML-Parser-${XMLPARSER}.tar.gz
    cd XML-Parser-${XMLPARSER}
    chown -R root.root .
    perl Makefile.PL
    make
    make test
    make install
    make install DESTDIR=$PKG
    mkdir -p $PKG/usr/doc/perl-$VERSION/XML-Parser-${XMLPARSER}
    cp -a README $PKG/usr/doc/perl-$VERSION/XML-Parser-${XMLPARSER}
    chmod 644 $PKG/usr/doc/perl-$VERSION/XML-Parser-${XMLPARSER}/*
  )
)
# Strip everything:
( cd $PKG
  find . -type f | xargs file | grep "not strip" | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
# There are also miniperl and microperl.
# I haven't had any requests for them, but would be willing
# to consider adding one or both to the package if anyone
# actually needs them for some reason.
#make microperl
# Symlinks that replace hard links
( cd $PKG/usr/bin
  ln -sf perl$VERSION perl
  ln -sf c2ph pstruct
  ln -sf s2p psed )
# Install documentation
mkdir -p $PKG/usr/doc/perl-$VERSION
cp -a AUTHORS Artistic Copying INSTALL MANIFEST README README.Y2K README.cn README.jp README.ko README.micro README.tw Todo.micro $PKG/usr/doc/perl-$VERSION
# We follow LSB with symlinks in /usr/share:
( cd $PKG/usr/share
  mv man .. )
( cd $PKG/usr/man/man1
  mkdir foo
  cp *.1 foo
  rm *.1
  mv foo/* .
  rmdir foo
  gzip -9 *
  ln -sf c2ph.1.gz pstruct.1.gz
  ln -sf s2p.1.gz psed.1.gz )
( cd $PKG/usr/man/man3
  gzip -9 * )
chown -R root.bin $PKG/usr/bin
chmod 755 $PKG/usr/bin/*
chmod 644 $PKG/usr/man/man?/*
rmdir $PKG/usr/share
# Insert the slack-desc:
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
# Build the package:
cd $PKG
makepkg -l y -c n $TMP/perl-$VERSION-$ARCH-$BUILD.tgz
) 2>&1 | tee $TMP/perl.build.log
