#!/bin/bash # perl.SlackBuild # 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/$PKGNAM export PORTCWD=$PWD # Additional required modules: DBDMYSQL=4.023 DBI=1.628 URI=1.60 XMLPARSER=2.41 XMLSIMPLE=2.20 GETTEXT=1.05 # : IMPORTANT VERSION INFORMATION : # IMPORTANT: also update -Dinc_version_list in ./configure below! # Temporary build locations: export TMPBUILD=$TMP/build-$PKGNAM export PKG=$TMP/package-$PKGNAM mkpkgdirs # Delete and re-create temporary directories # Determine the CFLAGS for the known architectures: case $ARCH in arm) export SLKCFLAGS="-O2 -march=armv5te" export LIBDIRSUFFIX="" ;; *) export SLKCFLAGS="-O2" ;; esac # Extract source: tar xvvf $CWD/$PKGNAM-$VERSION.tar.?z* cd $PKGNAM-$VERSION || exit 1 slackhousekeeping # Apply patches (taken from Debian's diff): tar xf $PORTCWD/sources/perl*debian* || exit 1 auto_apply_patch debian/patches/debian/arm_thread_stress_timeout.diff || exit 1 # Configure perl: USE_THREADS="-Dusethreads -Duseithreads" ./Configure -de $USE_THREADS \ -Dprefix=/usr \ -Dsiteprefix=/usr/local \ -Dsitelib="/usr/local/share/perl5" \ -Dsitearch="/usr/local/lib${LIBDIRSUFFIX}/perl5" \ -Darchlib="/usr/lib${LIBDIRSUFFIX}/perl5" \ -Dcccdlflags='-fPIC' \ -Dinstallprefix=/usr \ -Dvendorprefix=/usr \ -Dprivlib="/usr/share/perl5" \ -Dvendorlib="/usr/share/perl5/vendor_perl" \ -Dvendorarch="/usr/lib${LIBDIRSUFFIX}/perl5/vendor_perl" \ -Dscriptdir='/usr/bin' \ -Doptimize="$SLKCFLAGS" \ -Duseshrplib \ -Ubincompat5005 \ -Uversiononly \ -Dlibpth="/usr/local/lib${LIBDIRSUFFIX} /usr/lib${LIBDIRSUFFIX} /lib${LIBDIRSUFFIX}" \ -Dpager='/usr/bin/less -isr' \ -Darchname=$ARCH-linux-gnueabi || failconfig # Kludge for gcc-4.2.3's needlessly changed output: cat makefile | grep -v '\' > foo mv foo makefile cat x2p/makefile | grep -v '\' > foo mv foo x2p/makefile # Build: make $NUMJOBS || failmake make test || failtest # Install onto filesystem (needed to build modules): make install ( cd /usr/bin ln -vsf perl$VERSION perl ln -vsf c2ph pstruct ln -vsf s2p psed ) #mkdir -p /usr/lib${LIBDIRSUFFIX}/perl5/vendor_perl/${VERSION}/${ARCH}-linux-thread-multi # Install into package directory: make install DESTDIR=$PKG #mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/perl5/vendor_perl/${VERSION}/${ARCH}-linux-gnueabi-thread-multi # Add additional modules: ( cd ext ( tar xvvf $CWD/DBI-${DBI}.tar.gz cd DBI-${DBI} slackhousekeeping perl Makefile.PL INSTALLDIRS=vendor make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/DBI-${DBI} cp -a README $PKG/usr/doc/$PKGNAM-$VERSION/DBI-${DBI} ) ( tar xvvf $CWD/DBD-mysql-${DBDMYSQL}.tar.gz cd DBD-mysql-${DBDMYSQL} slackhousekeeping perl Makefile.PL INSTALLDIRS=vendor make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/DBD-mysql-${DBDMYSQL} cp -a INSTALL.html README TODO $PKG/usr/doc/$PKGNAM-$VERSION/DBD-mysql-${DBDMYSQL} ) ( tar xvvf $CWD/XML-Parser-${XMLPARSER}.tar.gz cd XML-Parser-${XMLPARSER} slackhousekeeping perl Makefile.PL INSTALLDIRS=vendor make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION/XML-Parser-${XMLPARSER} cp -a README $PKG/usr/doc/$PKGNAM-$VERSION/XML-Parser-${XMLPARSER} ) ( tar xvvf $CWD/XML-Simple-${XMLSIMPLE}.tar.gz cd XML-Simple-${XMLSIMPLE} chown -R root:root . perl Makefile.PL INSTALLDIRS=vendor make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/perl-$VERSION/XML-Simple${XMLSIMPLE} cp -a README $PKG/usr/doc/perl-$VERSION/XML-Simple${XMLSIMPLE} chmod 644 $PKG/usr/doc/perl-$VERSION/XML-Simple${XMLSIMPLE}/* ) ( tar xvvf $CWD/URI-${URI}.tar.gz cd URI-${URI} slackhouskeeping perl Makefile.PL INSTALLDIRS=vendor make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/perl-$VERSION/URI-${URI} cp -a README $PKG/usr/doc/perl-$VERSION/URI-${URI} chmod 644 $PKG/usr/doc/perl-$VERSION/URI-${URI}/* ) ( tar xzvf $CWD/gettext-${GETTEXT}.tar.gz cd gettext-${GETTEXT} chown -R root:root . perl Makefile.PL INSTALLDIRS=vendor make make test make install make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/perl-$VERSION/gettext-${GETTEXT} cp -a README $PKG/usr/doc/perl-$VERSION/gettext-${GETTEXT} chmod 644 $PKG/usr/doc/perl-$VERSION/gettext-${GETTEXT}/* ) ) # Symlinks that replace hard links ( cd $PKG/usr/bin ln -vsf perl$VERSION perl ln -vsf c2ph pstruct ln -vsf s2p psed ) # Install documentation mkdir -pm755 $PKG/usr/doc/$PKGNAM-$VERSION cp -fav \ AUTHORS Artistic Changes Copying INSTALL \ README* \ README.{cn,jp,ko,tw} README.linux \ $PKG/usr/doc/$PKGNAM-$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 -vsf c2ph.1.gz pstruct.1.gz ln -vsf s2p.1.gz psed.1.gz ) ( cd $PKG/usr/man/man3 && gzip -9 * ) chmod 755 $PKG/usr/bin/* chmod 644 $PKG/usr/man/man?/* # This file shouldn't get clobbered: if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/perl5/perllocal.pod ]; then mv $PKG/usr/lib${LIBDIRSUFFIX}/perl5/perllocal.pod $PKG/usr/lib${LIBDIRSUFFIX}/perl5/perllocal.pod.new fi # 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 # The Slackware doinst.sh script contains non-portable arch names: #sed -i 's?i486?'"$ARCH"'?g' install/doinst.sh # And switch our target tripet to include "gnueabi" #sed -i 's?linux-thread-multi?linux-gnueabi-thread-multi?g' install/doinst.sh cat << EOF > $PKG/install/doinst.sh #!/bin/sh config() { NEW="\$1" OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)" # If there's no config file by that name, mv it over: if [ ! -r \$OLD ]; then mv \$NEW \$OLD elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy rm \$NEW fi # Otherwise, we leave the .new copy for the admin to consider... } # For future reference, if the change is ever reverted. We need to remember "gnueabi" here. # config usr/lib/perl5/${VERSION}/$ARCH-linux-gnueabi-thread-multi/perllocal.pod.new config usr/lib/perl5/perllocal.pod.new EOF slackmp # run makepkg -l y -c n # Perform any final checks on the package: cd $PKG slackhlinks # search for any hard links