#!/bin/sh # Set initial variables: CWD=$(pwd) APP=ocaml-findlib SRC=findlib VERSION=$(ls $SRC-*.tar.?z* | sed -e 's/\.tar\..z.*//' | rev | cut -d- -f1 | rev) MARCH=${MARCH:-native} ARCH=${ARCH:-x86_64} BUILD=${BUILD:-1} TAG=${TAG:-micu} TMP=${TMP:-/tmp} OUTDIR=${OUTDIR:-$TMP} LIBSUFFIX="" if [ "$MARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mtune=i686" elif [ "$MARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "$MARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" elif [ "$MARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686" elif [ "$MARCH" = "nocona" ]; then SLKCFLAGS="-O2 -march=nocona -mtune=generic -mmmx -msse -msse2 -msse3" elif [ "$MARCH" = "core2" ]; then SLKCFLAGS="-O2 -march=core2 -mtune=core2 -mmmx -msse -msse2 -msse3" elif [ "$MARCH" = "atom" -o "$MARCH" = "bonnell" ]; then SLKCFLAGS="-O2 -march=bonnell -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mmovbe -mfxsr --param l1-cache-size=24 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=bonnell" elif [ "$MARCH" = "sandybridge" ]; then SLKCFLAGS="-O2 -march=sandybridge" elif [ "$MARCH" = "pentium3" ]; then SLKCFLAGS="-O2 -march=pentium3 -mmmx -msse" elif [ "$MARCH" = "pentium2" ]; then SLKCFLAGS="-O2 -march=pentium2 -mmmx" elif [ "$MARCH" = "s390" ]; then SLKCFLAGS="-O2" else SLKCFLAGS="-O2 -march=$MARCH" fi if [ "$ARCH" = "x86_64" ]; then LIBSUFFIX=${LIBSUFFIX:-64} SLKCFLAGS="$SLKCFLAGS -fPIC -m64" fi MAKE="make" PKG=$TMP/package-$APP rm -rf $PKG mkdir -p $PKG cd $TMP rm -rf $SRC-$VERSION tar xvf $CWD/$SRC-$VERSION.tar.?z* || exit 1 cd $SRC-$VERSION || exit 1 chown -R root.root . find . -perm 444 -exec chmod 644 {} \; find . -perm 777 -exec chmod 755 {} \; find . -perm 666 -exec chmod 644 {} \; CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure -bindir /usr/bin \ -mandir /usr/man \ -config /etc/ocaml/findlib.conf || exit 1 $MAKE all || exit 1 $MAKE opt || exit 1 make prefix=/tmp/package-ocaml-findlib install || exit 1 # Don't ship .la files: rm -f $PKG/{,usr/}lib${LIBSUFFIX}/*.la chown -R root.bin $PKG/usr/bin $PKG/usr/sbin # Preserve original config file: mv $PKG/etc/ocaml/findlib.conf $PKG/etc/ocaml/findlib.conf.new # Remove some manpages: rm -f $PKG/usr/man/man5/META.5 $PKG/usr/man/man5/site-lib.5 rmdir $PKG/usr/man/man3 ( cd $PKG 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 find . | xargs file | grep "current ar archive" | grep ELF | cut -f 1 -d : | xargs strip -g 2> /dev/null ) # Compress and if needed symlink the man pages: if [ -d $PKG/usr/info ]; then rm -f $PKG/usr/info/dir gzip -9 $PKG/usr/info/* fi if [ -d $PKG/usr/man ]; then ( cd $PKG/usr/man for manpagedir in $(find . -type d -name "man*") ; do ( cd $manpagedir for eachpage in $( find . -type l -maxdepth 1) ; do ln -s $( readlink $eachpage ).gz $eachpage.gz rm $eachpage done gzip -9 *.? ) done ) fi mkdir -p $PKG/usr/doc/$APP-$VERSION cp -a INSTALL LICENSE $PKG/usr/doc/$APP-$VERSION mkdir -p $PKG/install [ -f $CWD/doinst.sh ] && cat $CWD/doinst.sh > $PKG/install/doinst.sh [ -f $CWD/doinst.sh.gz ] && zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh cat $CWD/slack-desc > $PKG/install/slack-desc # Allow to run as non-root until now: if [ $(id -u) -ne 0 ]; then echo "*** Running as non-root, skipping makepkg." echo "*** Package contents is in $PKG directory." exit 0 fi cd $PKG makepkg -l y -c n $OUTDIR/$APP-$VERSION-$ARCH-${BUILD}${TAG}.txz # Clean up the extra stuff: if [ "$1" = "--cleanup" ]; then rm -rf $TMP/$SRC-$VERSION rm -rf $PKG fi