diff options
author | Joey Hess <joey@kitenet.net> | 2013-12-16 23:05:00 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-12-16 23:05:00 -0400 |
commit | baec0fdf7e574290188ffc2d64a912bf9dd5fda2 (patch) | |
tree | 7536cf7266c5fff4f0590f83632b6e6b6969526a /standalone/linux/install-haskell-packages | |
parent | c3ea7e50f0102008242ffeda974ed9eb9868c8d7 (diff) |
begin work on installing TH-using dependencies of webapp, for standalone armel build
Will move common patches out of android/haskell-patches.
Diffstat (limited to 'standalone/linux/install-haskell-packages')
-rwxr-xr-x | standalone/linux/install-haskell-packages | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/standalone/linux/install-haskell-packages b/standalone/linux/install-haskell-packages new file mode 100755 index 000000000..62bdf701b --- /dev/null +++ b/standalone/linux/install-haskell-packages @@ -0,0 +1,72 @@ +#!/bin/bash +# Bootstraps from an empty cabal (plus apt-get build-dep git-annex) +# to all the necessary haskell packages being installed, with the +# necessary patches to work on architectures that lack template haskell. +# +# Note that the newest version of packages is installed. +# It attempts to reuse patches for older versions, but +# new versions of packages often break cross-compilation by adding TH, +# etc +# +# Future work: Convert to using the method used here: +# https://github.com/kaoskorobase/ghc-ios-cabal-scripts/ + +set -e + +if [ ! -d ../haskell-patches ]; then + cd standalone/linux +fi + +cabalopts="$@" + +cabalinstall () { + echo cabal install "$@" "$cabalopts" + eval cabal install "$@" "$cabalopts" +} + +patched () { + pkg=$1 + shift 1 + cabal unpack $pkg + cd $pkg* + git init + git config user.name dummy + git config user.email dummy@example.com + git add . + git commit -m "pre-patched state of $pkg" + for patch in ../../../haskell-patches/no-th/${pkg}_*; do + if [ -e "$patch" ]; then + echo trying $patch + if ! patch -p1 < $patch; then + echo "failed to apply $patch" + echo "please resolve this, replace the patch with a new version, and exit the subshell to continue" + $SHELL + fi + fi + done + cabalinstall "$@" + rm -rf $pkg* + cd .. +} + +installgitannexdeps () { + pushd ../.. + echo cabal install --only-dependencies "$@" + cabal install --only-dependencies "$@" + popd +} + +install_pkgs () { + rm -rf tmp + mkdir tmp + cd tmp + + patched DAV + + cd .. + + installgitannexdeps +} + +cabal update +install_pkgs |