summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--haskell/ghc/README8
-rw-r--r--haskell/ghc/ghc.SlackBuild69
-rw-r--r--haskell/ghc/ghc.info14
3 files changed, 73 insertions, 18 deletions
diff --git a/haskell/ghc/README b/haskell/ghc/README
index d4cc3b8fd5..a63dd0582b 100644
--- a/haskell/ghc/README
+++ b/haskell/ghc/README
@@ -1,3 +1,11 @@
GHC is a state-of-the-art, open source, compiler and interactive environment
for the functional language Haskell. This is a complete build, including
interactive system and profiling libraries and documentation.
+
+You will need 4.3G of free space in /tmp/SBo to build this package.
+
+In theory, if you already have ghc 7.4 or newer on your build host,
+you can skip the bootstrapping done by this script by passing
+BOOTSTRAP=no environment variable to this script. In that case, you
+also do not have to download the bindist, just the ghc-*-src.tar.xz.
+This is not recommended, though, since it is poorly tested.
diff --git a/haskell/ghc/ghc.SlackBuild b/haskell/ghc/ghc.SlackBuild
index 65e556619b..d97f2edc46 100644
--- a/haskell/ghc/ghc.SlackBuild
+++ b/haskell/ghc/ghc.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for ghc
-# Copyright 2013 Mikko Värri, Finland
+# Copyright 2015 Mikko Värri, Finland
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,7 +23,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=ghc
-VERSION=${VERSION:-7.6.2}
+VERSION=${VERSION:-7.8.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -61,25 +61,68 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
+
+if [ "${BOOTSTRAP:-yes}" == "yes" ] ; then
+ BOOTSTRAPDIR=$TMP/$PRGNAM-$VERSION-bootstrap
+ rm -rf $BOOTSTRAPDIR
+
+ cd $TMP
+ rm -rf $PRGNAM-$VERSION
+ tar xvf $CWD/$PRGNAM-$VERSION-$TARARCH-unknown-linux-deb7.tar.xz
+ cd $PRGNAM-$VERSION
+ chown -R root:root .
+ find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ ./configure \
+ --prefix=$BOOTSTRAPDIR/usr \
+ --mandir=$BOOTSTRAPDIR/usr/man \
+ --docdir=$BOOTSTRAPDIR/usr/doc/$PRGNAM-$VERSION \
+ --libdir=$BOOTSTRAPDIR/usr/lib${LIBDIRSUFFIX}
+
+ # GHC binary distributions are compiled in an environment where
+ # libncurses is compiled as two separate libraries: libncurses and
+ # libtinfo. Slackware has all the symbols of libtinfo in libncurses,
+ # so we can soft link libtinfo to libncurses. But let's not do that
+ # system wide. The link is needed both during build ('make install')
+ # and during runtime (/usr/bin/ghc*).
+ LIBTINFO_DIR=$BOOTSTRAPDIR/usr/lib$LIBDIRSUFFIX
+ mkdir -p $LIBTINFO_DIR
+ ln -s /lib$LIBDIRSUFFIX/libncurses.so.5 $LIBTINFO_DIR/libtinfo.so.5
+ LD_LIBRARY_PATH=$LIBTINFO_DIR \
+ make install
+ sed -i -r -e "s|^exec |LD_LIBRARY_PATH=$LIBTINFO_DIR exec |" $BOOTSTRAPDIR/usr/bin/ghc{,-pkg}-$VERSION
+
+ BOOTSTRAPGHC=$BOOTSTRAPDIR/usr/bin/ghc
+else
+ BOOTSTRAPGHC=$( which ghc 2>/dev/null )
+fi
+
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION-$TARARCH-unknown-linux.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION-src.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
- --prefix=/usr \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --libdir=/usr/lib${LIBDIRSUFFIX}
-
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-ghc=$BOOTSTRAPGHC
+make
make install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
@@ -87,7 +130,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
find $PKG/usr/man -type f -exec gzip -9 {} \;
-cp -a INSTALL LICENSE README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/haskell/ghc/ghc.info b/haskell/ghc/ghc.info
index 4f05c19e6c..358a3d1acf 100644
--- a/haskell/ghc/ghc.info
+++ b/haskell/ghc/ghc.info
@@ -1,10 +1,14 @@
PRGNAM="ghc"
-VERSION="7.6.2"
+VERSION="7.8.4"
HOMEPAGE="http://haskell.org/ghc/"
-DOWNLOAD="http://www.haskell.org/ghc/dist/7.6.2/ghc-7.6.2-i386-unknown-linux.tar.bz2"
-MD5SUM="287d6c934f325a34fa4fcd96d26eb0e6"
-DOWNLOAD_x86_64="http://www.haskell.org/ghc/dist/7.6.2/ghc-7.6.2-x86_64-unknown-linux.tar.bz2"
-MD5SUM_x86_64="230270a985c522af939d9c71aa76343f"
+DOWNLOAD="http://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-i386-unknown-linux-deb7.tar.xz \
+ http://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-src.tar.xz"
+MD5SUM="33aa682a0c6db4b5c78a24f1c693d59b \
+ 91f74cf9d813603cc3145528db4bbead"
+DOWNLOAD_x86_64="http://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-x86_64-unknown-linux-deb7.tar.xz \
+ http://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-src.tar.xz"
+MD5SUM_x86_64="a8e26cbf09c1764c92b971d1192e7bfa \
+ 91f74cf9d813603cc3145528db4bbead"
REQUIRES=""
MAINTAINER="Mikko Värri"
EMAIL="vmj@linuxbox.fi"