Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
221 commits
Select commit Hold shift + click to select a range
60c467b
fiddling with bin/detect
mwotton Jun 17, 2012
f5a7750
some logging
mwotton Jun 17, 2012
0eda76c
be noisier
mwotton Jun 17, 2012
3890492
be noisierer
mwotton Jun 17, 2012
3f3fc0f
copy ghc dir to /app/ghc
mwotton Jun 17, 2012
1665aea
need to specify file to edit in place
mwotton Jun 17, 2012
f3c3908
some more logging
mwotton Jun 17, 2012
07062f2
add ghc to PATH
mwotton Jun 17, 2012
772ae9f
logging &hax
mwotton Jun 20, 2012
3e066d7
logs & deletions
mwotton Jun 21, 2012
978867f
more hacknslash
mwotton Jun 21, 2012
0769e8f
return 0 for a successful compile
mwotton Jul 21, 2012
64c33a3
logging
mwotton Jul 21, 2012
7d1c0cd
probably should not delete the build dir
mwotton Jul 21, 2012
ccfa3dc
copy binaries to build dir
mwotton Jul 21, 2012
381a318
clean up build dir
mwotton Jul 21, 2012
6a9d581
ghc, not .ghc.
mwotton Jul 21, 2012
cf0c1cf
stop caching, try to run code at end of compile
mwotton Jul 21, 2012
26b561e
symbolic link for ghc
mwotton Jul 21, 2012
3b59c78
global replace for build dir
mwotton Jul 21, 2012
f39a6bd
delete stray sed invocation with extreme prejudice
mwotton Jul 21, 2012
0d59251
fix path
mwotton Jul 21, 2012
d892029
logging of base.conf
mwotton Jul 21, 2012
7d17cd0
more config munging
mwotton Jul 21, 2012
e5bff7b
ghc-pkg check to work out why ghc is barfing
mwotton Jul 21, 2012
ec28d25
full path to ghc-pkg
mwotton Jul 21, 2012
7d033a1
global ghc path change
mwotton Jul 21, 2012
3b89a28
rejig ghc-pkg dance, try setting LD_LIBRARY_PATH when running cabal
mwotton Jul 21, 2012
eb3dda2
voodoo recache
mwotton Jul 21, 2012
d338431
cannot return 0 in bash
mwotton Jul 21, 2012
6e5ad7c
shouldn't need to specify PATH
mwotton Jul 21, 2012
6e4b06e
healthcheck
mwotton Jul 22, 2012
c93eb9c
correct source location for binaries
mwotton Jul 22, 2012
2e39caa
extend path
mwotton Jul 22, 2012
f92ced5
wip notice
mwotton Aug 29, 2012
3be2e24
Add deletion of hopefully unneeded parts of GHC
puffnfresh Nov 6, 2012
5e24e0f
Use reduced GHC install
puffnfresh Nov 6, 2012
2588e6a
List GHC directory
puffnfresh Nov 6, 2012
212d84b
Fix ghc script directory
puffnfresh Nov 6, 2012
cb49c70
Extract .cabal to HOME
puffnfresh Nov 6, 2012
1ab9cfd
Add .cabal/bin to PATH
puffnfresh Nov 6, 2012
b4b636f
Run 5 concurrent jobs
puffnfresh Nov 6, 2012
8648348
Use PATH to remove prefixes from scripts
puffnfresh Nov 6, 2012
298728f
Can't use ghc-pkg in PATH
puffnfresh Nov 7, 2012
2f3d34d
Cache Cabal packages
puffnfresh Nov 7, 2012
bfc64a2
Put ghc under CACHE_DIR
puffnfresh Nov 7, 2012
bdbd54c
Print sizes of CACHE_DIR and BUILD_DIR
puffnfresh Nov 7, 2012
60e45f5
Remove PATH updating from release script
puffnfresh Nov 7, 2012
5be1fe1
Fix bug in release
puffnfresh Nov 7, 2012
2b532db
Make release output empty YAML
puffnfresh Nov 7, 2012
7ded578
ignore if libgmp.so has already been linked to correct spot
mwotton Nov 7, 2012
d12f7d2
Fix bug in release
puffnfresh Nov 7, 2012
202e229
Update README
puffnfresh Nov 7, 2012
3897985
Force libgmp link
puffnfresh Nov 7, 2012
40c5418
Remove tmp directory
puffnfresh Nov 7, 2012
ed4324e
Mention GHC version in README
puffnfresh Nov 7, 2012
0595ef6
Manually cache and restore .ghc directory
puffnfresh Nov 7, 2012
69d3c70
call heroku-pre-install script in directory before installing (if it …
timjb Nov 12, 2012
9d11126
Merge pull request #1 from timjb/master
mwotton Nov 21, 2012
14b75ca
host on s3
tom-pang Jan 1, 2013
b4f52a8
Merge pull request #1 from tcrayford/host_on_s3
puffnfresh Jan 26, 2013
75780b5
Add verbose mode for cabal install
ichistmeinname Feb 24, 2013
dc3c09f
Add verbose mode for cabal install
ichistmeinname Feb 24, 2013
001aeb9
Add verbose mode for cabal install
ichistmeinname Feb 24, 2013
c86736f
Add ghc-pkg list command
ichistmeinname Feb 25, 2013
0df8802
Add ghc-pkg list ghc command
ichistmeinname Feb 26, 2013
13e18f1
Add OS-check
ichistmeinname Feb 26, 2013
27adaf7
Add OS-check
ichistmeinname Feb 26, 2013
caf09f3
Add OS-check
ichistmeinname Feb 26, 2013
3567095
Add OS-check
ichistmeinname Feb 26, 2013
00e130a
Edit precompile and compile files
ichistmeinname Mar 11, 2013
ebd4ab1
Check ghc-pkg list
ichistmeinname Mar 11, 2013
2c9e334
Add Haskell-Platform download
ichistmeinname Mar 11, 2013
abaaadc
Add Haskell-Platform download
ichistmeinname Mar 11, 2013
2922e83
Add Haskell-Platform download
ichistmeinname Mar 11, 2013
dfb68c7
Add Haskell-Platform download
ichistmeinname Mar 11, 2013
48b7703
Add Haskell-Platform download
ichistmeinname Mar 11, 2013
2349d8c
Add Haskell-Platform download
ichistmeinname Mar 11, 2013
762f87d
Add -with-ghc option
ichistmeinname Mar 11, 2013
b986e80
Add -with-ghc option
ichistmeinname Mar 11, 2013
cb1089d
Edit --with-ghc option
ichistmeinname Mar 11, 2013
9c0e108
Change Haskell Platform version to 2012
ichistmeinname Mar 11, 2013
b9b5a92
Change Haskell Platform version to 2012
ichistmeinname Mar 11, 2013
8738206
Change Haskell Platform version to 2012.2.0.0
ichistmeinname Mar 11, 2013
1c6dbac
Change Haskell Platform version to 2012.2.0.0
ichistmeinname Mar 11, 2013
ca9dcb0
Keep hpc-package
ichistmeinname Mar 11, 2013
c99e0c3
Restructure compile
ichistmeinname Mar 11, 2013
d3c9cbb
Keep redundant files of ghc installation
ichistmeinname Mar 11, 2013
a29f4d8
Install ghc manually
ichistmeinname Mar 11, 2013
154da60
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
1abf18e
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
f9aa864
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
3f9b09e
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
c500c6d
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
e481455
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
06bb7bf
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
08b183a
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
8eb6e2b
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
f4b2e8b
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
575c7e7
Readd hpc-conf.d
ichistmeinname Mar 11, 2013
340caa7
Use other ghc-precompile
ichistmeinname Mar 12, 2013
323ffd8
Restructure compilation
ichistmeinname Mar 12, 2013
ca5b765
Restructure compilation
ichistmeinname Mar 12, 2013
d6b8ac9
Change download URL
ichistmeinname Mar 12, 2013
2b58190
Change download URL
ichistmeinname Mar 12, 2013
fb20e82
Change download URL
ichistmeinname Mar 12, 2013
e77a86f
Test ghc-pkg
ichistmeinname Mar 12, 2013
d8cceca
Test ghc and /usr/local/heroku/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr…
ichistmeinname Mar 12, 2013
e7657c7
Test ghc and PATH
ichistmeinname Mar 12, 2013
e31b2fa
Fix compile
ichistmeinname Mar 12, 2013
0883c07
Fix compile
ichistmeinname Mar 12, 2013
5c8e779
Fix compile
ichistmeinname Mar 12, 2013
d710ab3
Fix compile
ichistmeinname Mar 12, 2013
3527dd4
Fix compile
ichistmeinname Mar 12, 2013
4607623
Fix compile
ichistmeinname Mar 12, 2013
bcdff9d
Fix compile
ichistmeinname Mar 12, 2013
8d830bd
Fix compile
ichistmeinname Mar 12, 2013
f8a3b95
Fix compile
ichistmeinname Mar 12, 2013
67eba66
Fix compile
ichistmeinname Mar 12, 2013
5e99364
Fix compile
ichistmeinname Mar 12, 2013
c11a881
Fix compile
ichistmeinname Mar 12, 2013
ae8b1b8
Fix compile
ichistmeinname Mar 12, 2013
4bdb4bb
Fix compile
ichistmeinname Mar 12, 2013
105262e
Fix compile
ichistmeinname Mar 12, 2013
f5528aa
Fix compile
ichistmeinname Mar 12, 2013
a184934
Fix compile
ichistmeinname Mar 12, 2013
fe9294e
Fix compile
ichistmeinname Mar 12, 2013
9b1ee37
Fix compile
ichistmeinname Mar 12, 2013
4f5cb3b
Fix compile
ichistmeinname Mar 12, 2013
15ccc05
Fix compile
ichistmeinname Mar 12, 2013
8cb5a62
Fix compile
ichistmeinname Mar 12, 2013
d894d5d
Fix compile
ichistmeinname Mar 12, 2013
5815e2e
Fix compile
ichistmeinname Mar 12, 2013
d14489c
Fix compile
ichistmeinname Mar 12, 2013
dce4cfd
Fix compile
ichistmeinname Mar 12, 2013
b6a4e12
Fix compile
ichistmeinname Mar 12, 2013
1c05f64
Fix compile
ichistmeinname Mar 12, 2013
c44019a
Fix compile
ichistmeinname Mar 12, 2013
417e7c8
Fix compile
ichistmeinname Mar 12, 2013
b11d2b9
Fix compile
ichistmeinname Mar 12, 2013
c487ddc
Fix compile
ichistmeinname Mar 12, 2013
bfb75f0
Fix compile
ichistmeinname Mar 12, 2013
9cbf3e7
Fix compile
ichistmeinname Mar 12, 2013
48715ff
Fix compile
ichistmeinname Mar 12, 2013
0f03c3a
Fix compile
ichistmeinname Mar 12, 2013
3ae4c77
Fix compile
ichistmeinname Mar 12, 2013
f1a5086
Fix compile
ichistmeinname Mar 12, 2013
4015ebf
Fix compile
ichistmeinname Mar 12, 2013
693527c
Fix compile
ichistmeinname Mar 12, 2013
ce2cb36
Fix compile
ichistmeinname Mar 12, 2013
0a927d6
Fix compile
ichistmeinname Mar 12, 2013
d0bd6fa
Fix compile
ichistmeinname Mar 12, 2013
ae8e9c7
Fix compile
ichistmeinname Mar 12, 2013
0ac864d
Fix compile
ichistmeinname Mar 12, 2013
0114c09
Fix compile
ichistmeinname Mar 12, 2013
a54085b
Fix compile
ichistmeinname Mar 12, 2013
5b14b3c
Fix compile
ichistmeinname Mar 12, 2013
ed73654
Fix compile
ichistmeinname Mar 12, 2013
a83ed3c
Fix compile
ichistmeinname Mar 12, 2013
a22ab37
Fix compile
ichistmeinname Mar 12, 2013
87e991e
Fix compile
ichistmeinname Mar 12, 2013
d6c1a3c
Fix compile
ichistmeinname Mar 12, 2013
334d8fa
Fix compile
ichistmeinname Mar 12, 2013
d471597
Fix compile
ichistmeinname Mar 12, 2013
f95271e
Fix compile
ichistmeinname Mar 12, 2013
fc67513
Fix compile
ichistmeinname Mar 12, 2013
521f09f
Fix compile
ichistmeinname Mar 12, 2013
7fc4f16
Fix compile
ichistmeinname Mar 12, 2013
8338f31
Fix compile
ichistmeinname Mar 12, 2013
548b0a3
Fix compile
ichistmeinname Mar 12, 2013
632a3ba
Fix compile
ichistmeinname Mar 12, 2013
5e89a4f
Fix compile
ichistmeinname Mar 12, 2013
b59923a
Fix compile
ichistmeinname Mar 12, 2013
558bcfe
Fix compile
ichistmeinname Mar 12, 2013
461906d
Fix compile
ichistmeinname Mar 12, 2013
a84f344
Fix compile
ichistmeinname Mar 12, 2013
d71720e
Fix compile
ichistmeinname Mar 12, 2013
43b9b57
Fix compile
ichistmeinname Mar 12, 2013
06f138f
Fix compile
ichistmeinname Mar 12, 2013
2074171
Fix compile
ichistmeinname Mar 12, 2013
3cb50cf
Fix compile
ichistmeinname Mar 12, 2013
1df6142
Fix compile
ichistmeinname Mar 12, 2013
8857d17
Fix compile
ichistmeinname Mar 12, 2013
44bb1be
Fix compile
ichistmeinname Mar 12, 2013
5d5f7bd
Fix compile
ichistmeinname Mar 12, 2013
4ba0816
Fix compile
ichistmeinname Mar 12, 2013
1dadc1a
Fix compile
ichistmeinname Mar 12, 2013
eef70f8
Fix compile
ichistmeinname Mar 12, 2013
1aa85ff
Fix compile
ichistmeinname Mar 12, 2013
728e76f
Fix compile
ichistmeinname Mar 12, 2013
72c9fef
Fix compile
ichistmeinname Mar 12, 2013
b9f32b0
Fix compile
ichistmeinname Mar 12, 2013
ec44356
Fix compile
ichistmeinname Mar 12, 2013
1133de9
Fix compile
ichistmeinname Mar 12, 2013
9d3a015
Fix compile
ichistmeinname Mar 12, 2013
5efdb55
Fix compile
ichistmeinname Mar 12, 2013
c45c85e
Fix compile
ichistmeinname Mar 12, 2013
cc37125
Fix compile
ichistmeinname Mar 12, 2013
8990a37
Fix compile
ichistmeinname Mar 12, 2013
f9945a9
Fix compile
ichistmeinname Mar 12, 2013
02fa6ea
Fix compile
ichistmeinname Mar 12, 2013
78e9229
Fix compile
ichistmeinname Mar 12, 2013
62dcd51
Add verbose level
ichistmeinname Mar 12, 2013
df6a551
Add ghc-pkg list
ichistmeinname Mar 12, 2013
ba6add5
Remove ghc-pkg list
ichistmeinname Mar 12, 2013
c0b7287
Fix typo
ichistmeinname Mar 13, 2013
b7a67d7
Cache .ghc directory
ichistmeinname Mar 13, 2013
dc86f95
Cache .ghc directory
ichistmeinname Mar 13, 2013
a74504e
Fix typo
ichistmeinname Mar 13, 2013
21eba84
Move cache to home directory
ichistmeinname Mar 13, 2013
83d8d62
Fix dirs
ichistmeinname Mar 13, 2013
831aab6
Remove rm-statements
ichistmeinname Mar 13, 2013
48395f2
Tidy up precompile
ichistmeinname Mar 13, 2013
f4580c1
Add comments in readme
ichistmeinname Mar 13, 2013
a832e81
Remove hpc.conf
ichistmeinname Mar 13, 2013
5a89bf1
Sync with changes from @ichistmeinname
puffnfresh May 10, 2013
1c56b5d
trying to work out why criterion is being pulled in.
mwotton Jul 15, 2013
91135f5
Merge remote-tracking branch 'origin/patch-1'
mwotton Jul 15, 2013
9ae8a7b
Merge branch 'master' of github.com:mwotton/heroku-buildpack-haskell
mwotton Jul 15, 2013
2854fa6
use threaded runtime for compiles
mwotton Jul 15, 2013
36c400e
bad idea, threaded goes in the cabal file
mwotton Jul 15, 2013
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 21 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,34 @@
# Heroku buildpack: Haskell
# Heroku Buildpack: Haskell

This is a [Heroku buildpack](http://devcenter.heroku.com/articles/buildpacks)
for Haskell apps. It uses cabal-1.14.0.
for Haskell apps. It uses GHC 7.4.1 and cabal-1.16.0.1.

## Demo

A demo is online here:

http://haskell-buildpack-demo.herokuapp.com/

The demo repo is here:

https://github.com/pufuwozu/haskell-buildpack-demo

## Usage

$ ls
Procfile app.cabal src

$ heroku create --stack=cedar --buildpack https://github.com/luciferous/heroku-buildpack-haskell.git
$ heroku create --stack=cedar --buildpack https://github.com/pufuwozu/heroku-buildpack-haskell.git

$ git push heroku master
...

-----> Heroku receiving push
-----> Fetching custom git buildpack... done
-----> Haskell app detected
-----> Building app with cabal
-----> Running: cabal install

-----> Downloading GHC
######################################################################## 100.0%
-----> Downloading Cabal
######################################################################## 100.0%
-----> Setting up ghc-pkg
...
69 changes: 43 additions & 26 deletions bin/compile
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,59 @@ set -eo pipefail
BUILD_DIR=$1
CACHE_DIR=$2

cd $BUILD_DIR
FIXED_HOME=/app

mkdir -p $CACHE_DIR

cp -R $CACHE_DIR/ghc ghc &> /dev/null || true
cp -R $CACHE_DIR/cabal .cabal &> /dev/null || true

if [ ! -e ghc ]; then
GHC_URL="http://s3.amazonaws.com/heroku-buildpack-haskell/ghc.tar.gz"
if [ ! -e $CACHE_DIR/ghc ]; then
GHC_URL="http://informatik.uni-kiel.de/~sad/ghc.tar.gz"
echo "-----> Downloading GHC"
curl -# --max-time 120 -L "$GHC_URL" | tar xz
curl -# --max-time 120 -L "$GHC_URL" | tar xz -C $CACHE_DIR
fi

# Restore GHC registry if available
if [ -e $CACHE_DIR/dotghc ]; then
rm -rf $FIXED_HOME/app/.ghc
mv $CACHE_DIR/dotghc $FIXED_HOME/.ghc
fi

if [ ! -e .cabal ]; then
CABAL_URL="http://s3.amazonaws.com/heroku-buildpack-haskell/cabal.tar.gz"
echo "-----> Bundling Cabal"
curl -# --max-time 120 -L "$CABAL_URL" | tar xz
# Fix directory
mv $CACHE_DIR/ghc $FIXED_HOME

# Restore Cabal cache or download an empty environemt
if [ -e $CACHE_DIR/cabal ]; then
rm -rf $FIXED_HOME/.cabal
mv $CACHE_DIR/cabal $FIXED_HOME/.cabal
elif [ ! -e $FIXED_HOME/.cabal ]; then
CABAL_URL="http://informatik.uni-kiel.de/~sad/cabal.tar.gz"
echo "-----> Downloading Cabal"
curl -# --max-time 120 -L "$CABAL_URL" | tar xz -C $FIXED_HOME
fi

mkdir -p bin
ln -s ghc/bin/ghc bin/ghc
ln -s .cabal/bin/cabal bin/cabal
# Set LD_LIBRARAY_PATH and link essential libraries
mkdir -p $FIXED_HOME/usr/lib
ln -s /usr/lib/libgmp.so.3.5.2 $FIXED_HOME/usr/lib/libgmp.so
export LD_LIBRARY_PATH=$FIXED_HOME/usr/lib

mkdir -p lib
ln -s /usr/lib/libgmp.so.3 lib/libgmp.so
# Set PATH
export PATH=$FIXED_HOME/ghc/bin:$FIXED_HOME/.cabal/bin$PATH

ghc/bin/ghc-pkg describe base > base.conf
sed -i "s#ld-options:#ld-options: -L`pwd`/lib#"
ghc/bin/ghc-pkg update base.conf
rm base.conf
echo "-----> Updating Cabal"
cabal update

.cabal/bin/cabal update
.cabal/bin/cabal install
echo "-----> Release the hounds! Installing application"
cd $BUILD_DIR
cabal install -j5 --disable-library-profiling --disable-executable-profiling --disable-shared

rm -rf $CACHE_DIR/ghc
cp -R ghc $CACHE_DIR/ghc
echo "-----> Caching Cabal packages"
echo $FIXED_HOME/.ghc
shopt -s extglob
rm $FIXED_HOME/.cabal/bin/!(cabal|happy)
mv $FIXED_HOME/.cabal $CACHE_DIR/cabal
mv $FIXED_HOME/ghc $CACHE_DIR/ghc
mv $FIXED_HOME/.ghc $CACHE_DIR/dotghc

rm -rf $CACHE_DIR/cabal
cp -R .cabal $CACHE_DIR/cabal
echo "Cache dir size:"
du -ms $CACHE_DIR
echo "Build dir size:"
du -ms $BUILD_DIR
6 changes: 3 additions & 3 deletions bin/detect
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#!/bin/bash

if test -n "$(find "$1" -maxdepth 1 -name '*.cabal' -print -quit)"
then echo Haskell
else echo no; exit 1
then echo Haskell; exit 0
else exit 1
fi
8 changes: 1 addition & 7 deletions bin/release
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
#!/bin/sh

$BUILD_DIR=$1

cat <<EOF
---
config_vars:
PATH: $BUILD_DIR/.cabal/bin:$BUILD_DIR/bin:/usr/local/bin:/usr/bin:/bin
EOF
echo "--- {}"
63 changes: 45 additions & 18 deletions precompile-binaries.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,56 @@ cd ghc-7.4.1/
make install
cd ..

# GHC space trimming (risky business)

# Remove haddock and hpc - no docs or coverage
rm $HOME/ghc/bin/haddock*
rm $HOME/ghc/lib/ghc-7.4.1/haddock
rm -r $HOME/ghc/lib/ghc-7.4.1/html
rm -r $HOME/ghc/lib/ghc-7.4.1/latex
# rm $HOME/ghc/bin/hp*
# rm -r $HOME/ghc/lib/ghc-7.4.1/hp*
# rm -r $HOME/ghc/lib/ghc-7.4.1/package.conf.d/hpc-0.5.1.1-*
# rm -r $HOME/ghc/lib/ghc-7.4.1/ghc-7.4.1
# rm -r $HOME/ghc/lib/ghc-7.4.1/package.conf.d/ghc-7.4.1-*
# rm -r $HOME/ghc/lib/ghc-7.4.1/package.conf.d/package.cache
echo "" > $HOME/ghc/lib/ghc-7.4.1/ghc-usage.txt
echo "" > $HOME/ghc/lib/ghc-7.4.1/ghci-usage.txt

# Remove duplicate libs
find $HOME/ghc/lib -name "*_p.a" -delete
find $HOME/ghc/lib -name "*.p_hi" -delete
find $HOME/ghc/lib -name "*.dyn_hi" -delete
find $HOME/ghc/lib -name "*HS*.so" -delete
find $HOME/ghc/lib -name "*HS*.o" -delete
find $HOME/ghc/lib -name "*_debug.a" -delete

# Don't need man or doc
rm -rf $HOME/ghc/share

# Strip binaries
strip --strip-unneeded $HOME/ghc/lib/ghc-7.4.1/{run,}ghc

export PATH=$PATH:$HOME/ghc/bin

# ldconfig for linker hack
$HOME/ghc/bin/ghc-pkg describe base > base.package.conf
ghc-pkg describe base > base.package.conf
sed -i "s/ld-options:/ld-options:\ -L\/app\/usr\/lib/" base.package.conf
$HOME/ghc/bin/ghc-pkg update base.package.conf

# haskell-platform (disabled because it requires opengl)
#curl --silent http://lambda.haskell.org/platform/download/2011.4.0.0/haskell-platform-2011.4.0.0.tar.gz|tar xz
#cd haskell-platform-2011.4.0.0/

# cabal
curl --silent http://www.haskell.org/cabal/release/cabal-1.14.0/Cabal-1.14.0.tar.gz|tar xz
cd Cabal-1.14.0/
$HOME/ghc/bin/ghc --make Setup
./Setup configure --user --with-ghc=$HOME/ghc/bin/ghc
./Setup build
./Setup install
cd ..
ghc-pkg update base.package.conf

# cabal-install
curl --silent http://www.haskell.org/cabal/release/cabal-install-0.14.0/cabal-install-0.14.0.tar.gz|tar xz
cd cabal-install-0.14.0/
PATH=$PATH:$HOME/ghc/bin sh bootstrap.sh
curl --silent http://hackage.haskell.org/packages/archive/cabal-install/1.16.0.1/cabal-install-1.16.0.1.tar.gz|tar xz
cd cabal-install-1.16.0.1/
sh bootstrap.sh
cd ..

export PATH=$PATH:$HOME/.cabal

# Install a binary that Yesod needs separately
cabal update
cabal install happy
find $HOME/.cabal -name "*HS*.o" -delete
rm -rf $HOME/.cabal/{config,share,packages,logs}

tar cvzf ghc.tar.gz ghc
tar cvzf cabal.tar.gz .cabal
Empty file removed tmp/README.md
Empty file.
Empty file removed tmp/index.php
Empty file.