#!/bin/bash # perl.SlackBuild # by Stuart Winter for the Slackware porting Project. # Heavily based on the original Slackware build script by # Patrick Volkerding & David Cantrell. # 01-Jun-2004 # Record toolchain & other info for the build log: slackbuildinfo # Paths to skeleton port's source & real Slackware source tree: export CWD=$SLACKSOURCE/$PKGSERIES/$PACKAGE export PORTCWD=$PWD # Additional required modules: XMLPARSER=2.34 DBI=1.52 DBDMYSQL=3.0006 # : IMPORTANT VERSION INFORMATION : # IMPORTANT: also update -Dinc_version_list in ./configure below! # Temporary build locations: export TMPBUILD=$TMP/build-$PACKAGE export PKG=$TMP/package-$PACKAGE mkpkgdirs # Delete and re-create temporary directories # Determine the CFLAGS for the known architectures: case $PORTARCH in # arm) export SLKCFLAGS="-Os -march=armv3 -mtune=xscale" ;; arm) export SLKCFLAGS="-O2 -march=armv3 -mtune=xscale" ;; powerpc) export SLKCFLAGS="" ;; sparc) export SLKCFLAGS="" ;; *) export SLKCFLAGS="" ;; esac # Extract source: tar jxvvf $CWD/$PACKAGE-$VERSION.tar.bz2 cd $PACKAGE-$VERSION slackhousekeeping # Apply patches (taken from Debian's diff): # This is to address a problem building with -O2 and gcc4. #patch -p1 --verbose < $PORTCWD/sources/66_debian_arm_optim || failpatch # Avoid some tests which fail on ARM (see the patch for details): patch -p1 --verbose < $PORTCWD/sources/68_debian_arm_fp || failpatch # Configure perl: ./Configure -de $USE_THREADS \ -Dprefix=/usr \ -Dcccdlflags='-fPIC' \ -Dinstallprefix=/usr \ -Doptimize="$SLKCFLAGS" \ -Dinc_version_list='5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' \ -Darchname=$ARCH-linux || failconfig # Build: make || failmake make test || failtest # Install onto filesystem (needed to build modules): make install ( cd /usr/bin ln -sf perl$VERSION perl ln -sf c2ph pstruct ln -sf s2p psed ) # Install into package directory: make install DESTDIR=$PKG # Add additional modules: ( cd ext ( tar zxvvf $CWD/DBI-${DBI}.tar.gz cd DBI-${DBI} slackhousekeeping perl Makefile.PL make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$PACKAGE-$VERSION/DBI-${DBI} cp -a README $PKG/usr/doc/$PACKAGE-$VERSION/DBI-${DBI} ) ( tar zxvvf $CWD/DBD-mysql-${DBDMYSQL}.tar.gz cd DBD-mysql-${DBDMYSQL} slackhousekeeping perl Makefile.PL make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$PACKAGE-$VERSION/DBD-mysql-${DBDMYSQL} cp -a INSTALL.html README TODO $PKG/usr/doc/$PACKAGE-$VERSION/DBD-mysql-${DBDMYSQL} ) ( tar zxvvf $CWD/XML-Parser-${XMLPARSER}.tar.gz cd XML-Parser-${XMLPARSER} slackhousekeeping perl Makefile.PL make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$PACKAGE-$VERSION/XML-Parser-${XMLPARSER} cp -a README $PKG/usr/doc/$PACKAGE-$VERSION/XML-Parser-${XMLPARSER} ) ) # 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/$PACKAGE-$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/$PACKAGE-$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 * ) chmod 755 $PKG/usr/bin/* chmod 644 $PKG/usr/man/man?/* rm -rf $PKG/usr/share # If necessary, start the fakeroot server so we can set file/dir ownerships: start_fakeroot # Apply generic Slackware packaging policies: cd $PKG slackstripall # strip all .a archives and all ELFs slackgzpages -i # compress man & info pages and delete usr/info/dir slackslack # chown -R root:root, chmod -R og-w, slackchown, slack644docs slackdesc # install slack-desc and doinst.sh # Build the package: if [ $PORTARCH = arm ]; then slackmp # run makepkg else makepkg -l y -c n $PKGSTORE/$PKGSERIES/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz fi # Perform any final checks on the package: cd $PKG slackhlinks # search for any hard links