refresh haskell package patches for new android build
Android build is now almost entirely automated, except for the installation of cross-built libs needed for XMPP. Haskell packages updated to current newest versions. Am not currently pinning the versions, as that didn't work out last time I tried it (must have missed some pins before).
This commit is contained in:
parent
6d24155365
commit
2889211efd
42 changed files with 3639 additions and 4604 deletions
|
@ -2,23 +2,21 @@
|
|||
# Bootstraps from an empty cabal to all the necessary haskell packages
|
||||
# being installed, with the necessary patches to work on Android.
|
||||
#
|
||||
# Packages are installed at specific versions we have patches for. Newer
|
||||
# versions often break cross-compilation by adding TH, etc.
|
||||
# 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
|
||||
#
|
||||
# Needs some extra C libraries to be installed inside the cross-compiler
|
||||
# lib directory: libgnutls libxml2
|
||||
# Needs some extra C libraries and packages to be installed
|
||||
# on the host system:
|
||||
# libgnutls-dev libxml2-dev libgsasl7-dev pkg-config c2hs
|
||||
#
|
||||
# When run with "native" as a parameter, the same versions are installed
|
||||
# in the host system. This is needed in order to use the EvilSplicer to
|
||||
# expand Template Haskell.
|
||||
# Also needs some C libraries to be installed inside the cross-compiler
|
||||
# lib directory (~/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/sysroot/usr/lib/)
|
||||
# , cross-compiled for Android: libgnutls libxml2
|
||||
|
||||
# lib dir
|
||||
set -e
|
||||
|
||||
if [ "$1" ]; then
|
||||
mode="$1"
|
||||
shift 1
|
||||
fi
|
||||
cabalopts="$@"
|
||||
|
||||
cabalinstall () {
|
||||
|
@ -28,36 +26,32 @@ cabalinstall () {
|
|||
|
||||
patched () {
|
||||
pkg=$1
|
||||
version=$2
|
||||
if [ "$native" ]; then
|
||||
cabalinstall --force-reinstalls $pkg-$version
|
||||
else
|
||||
shift 2
|
||||
cabal unpack $pkg-$version
|
||||
cd $pkg-$version
|
||||
for patch in ../../haskell-patches/${pkg}_*; do
|
||||
echo applying $patch
|
||||
patch -p1 < $patch
|
||||
done
|
||||
cabalinstall "$@"
|
||||
cd ..
|
||||
fi
|
||||
shift 1
|
||||
cabal unpack $pkg
|
||||
cd $pkg*
|
||||
git init
|
||||
git add .
|
||||
git commit -m "pre-patched state of $pkg"
|
||||
for patch in ../../haskell-patches/${pkg}_*; do
|
||||
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
|
||||
done
|
||||
cabalinstall "$@"
|
||||
rm -rf $pkg*
|
||||
cd ..
|
||||
}
|
||||
|
||||
unpatched () {
|
||||
cabalinstall "$@"
|
||||
}
|
||||
|
||||
onlycross () {
|
||||
if [ ! "$native" ]; then
|
||||
eval "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
onlynative () {
|
||||
if [ "$native" ]; then
|
||||
eval "$@"
|
||||
fi
|
||||
installgitannexdeps () {
|
||||
echo cabal install git-annex --only-dependencies
|
||||
cabal install git-annex --only-dependencies "$@"
|
||||
}
|
||||
|
||||
install_pkgs () {
|
||||
|
@ -65,145 +59,59 @@ install_pkgs () {
|
|||
mkdir tmp
|
||||
cd tmp
|
||||
|
||||
onlycross unpatched bytestring-0.10.3.0 text-0.11.3.1 parsec-3.1.3
|
||||
patched network 2.4.1.0
|
||||
unpatched cereal-0.3.5.2
|
||||
patched socks 0.4.2
|
||||
unpatched hslogger-1.2.1
|
||||
patched MissingH 1.2.0.0
|
||||
patched unix-time 0.1.4
|
||||
patched async 2.0.1.4
|
||||
patched zlib 0.5.4.0
|
||||
patched primitive 0.5.0.1
|
||||
patched vector 0.10.0.1
|
||||
patched distributive 0.3
|
||||
unpatched hashable-1.1.2.5
|
||||
patched case-insensitive 0.4.0.1
|
||||
unpatched nats-0.1 semigroups-0.9 tagged-0.4.4 comonad-3.0.1.1 comonad-transformers-3.0.1
|
||||
patched profunctors 3.3
|
||||
patched split 0.2.1.2
|
||||
unpatched monads-tf-0.1.0.1
|
||||
onlycross patched gnutls 0.1.4
|
||||
unpatched attoparsec-0.10.4.0 blaze-builder-0.3.1.1
|
||||
patched syb 0.3.7
|
||||
patched aeson 0.6.1.0
|
||||
patched lifted-base 0.2.0.2
|
||||
patched resourcet 0.4.4
|
||||
patched monad-control 0.3.1.4
|
||||
unpatched conduit-0.5.6
|
||||
patched monad-logger 0.2.3.2
|
||||
unpatched reflection-1.1.7 bifunctors-3.2 semigroupoids-3.0.2
|
||||
unpatched bifunctors-3.2 comonads-fd-3.0.1 groupoids-3.0.1.1
|
||||
unpatched profunctor-extras-3.3
|
||||
patched lens 3.8.5
|
||||
unpatched xml-types-0.3.3
|
||||
patched libxml-sax 0.7.3
|
||||
patched network-conduit 0.6.2.2
|
||||
unpatched asn1-data-0.7.1 asn1-types-0.1.3 attoparsec-conduit-0.5.0.3
|
||||
unpatched blaze-builder-conduit-0.5.0.3 blaze-markup-0.5.1.5 blaze-html-0.5.1.3
|
||||
patched cipher-aes 0.1.7
|
||||
unpatched crypto-api-0.10.2
|
||||
unpatched cprng-aes-0.3.4
|
||||
unpatched http-types-0.8.0 mime-types-0.1.0.3
|
||||
patched certificate 1.3.7
|
||||
unpatched system-fileio-0.3.11 tls-1.1.2
|
||||
unpatched utf8-string-0.3.7
|
||||
unpatched publicsuffixlist-0.1
|
||||
unpatched xml-conduit-1.0.3.3
|
||||
unpatched zlib-bindings-0.1.1.3 zlib-conduit-0.5.0.3
|
||||
patched shakespeare 1.0.3
|
||||
patched hamlet 1.1.6.1
|
||||
patched xml-hamlet 0.4.0.3
|
||||
unpatched certificate-1.3.7
|
||||
unpatched dataenc-0.12 hxt-charproperties-9.1.1 \
|
||||
hxt-regex-xmlschema-9.1.0 hxt-unicode-9.0.2 hxt-9.3.1.1
|
||||
unpatched -f-templateHaskell QuickCheck-2.5.1.1
|
||||
unpatched Crypto-4.2.5.1
|
||||
patched HTTP 4000.2.8
|
||||
patched hS3 0.5.7
|
||||
patched file-embed 0.0.4.7
|
||||
patched gsasl 0.3.5 \
|
||||
--ghc-options=-I$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/sysroot/usr/include/ \
|
||||
--ld-options="-L$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/sysroot/usr/lib/"
|
||||
onlycross patched network-protocol-xmpp 0.4.4
|
||||
onlynative network-protocol-xmpp
|
||||
patched shakespeare-css 1.0.2
|
||||
patched shakespeare-i18n 1.0.0.2
|
||||
patched shakespeare-js 1.1.2
|
||||
patched persistent 1.1.5.1
|
||||
onlycross unpatched largeword-1.0.4 crypto-api-0.10.2 http-date-0.0.4 \
|
||||
cryptohash-0.8.3 vault-0.2.0.4 unix-compat-0.4.1.1 \
|
||||
crypto-conduit-0.4.3 wai-1.3.0.3
|
||||
patched wai-app-static 1.3.1
|
||||
onlycross patched wai-extra 1.3.2.1
|
||||
patched yesod-routes 1.1.2
|
||||
onlycross unpatched http-conduit-1.8.7.1
|
||||
onlycross patched DAV 0.3
|
||||
onlynative unpatched DAV
|
||||
patched yesod-core 1.1.8
|
||||
patched yesod-persistent 1.1.0.1
|
||||
patched yesod-form 1.2.1.1
|
||||
onlycross unpatched warp-1.3.7.2 yaml-0.8.2
|
||||
patched yesod-default 1.1.3.2
|
||||
patched yesod 1.1.8
|
||||
patched yesod-static 1.1.2
|
||||
unpatched ifelse-0.85
|
||||
unpatched SafeSemaphore-0.9.0
|
||||
if [ ! "$native" ]; then cabal install bloomfilter-1.2.6.10 --constraint 'bytestring >= 0.10.3.0'; fi
|
||||
onlynative unpatched bloomfilter-1.2.6.10
|
||||
unpatched edit-distance-0.2.1.2
|
||||
unpatched uuid-1.2.12
|
||||
unpatched json-0.7
|
||||
unpatched SHA-1.6.1
|
||||
onlycross unpatched data-endian-0.0.1
|
||||
unpatched hinotify-0.3.5
|
||||
patched iproute 1.2.11
|
||||
unpatched dns 0.3.6
|
||||
|
||||
patched network
|
||||
patched lifted-base
|
||||
patched zlib
|
||||
patched process
|
||||
patched MissingH
|
||||
patched bloomfilter
|
||||
patched SafeSemaphore
|
||||
patched unordered-containers
|
||||
patched comonad
|
||||
patched HTTP
|
||||
patched MonadCatchIO-transformers
|
||||
patched distributive
|
||||
patched iproute
|
||||
patched primitive
|
||||
patched socks
|
||||
patched entropy
|
||||
patched vector
|
||||
patched wai-app-static
|
||||
patched persistent
|
||||
patched profunctors
|
||||
patched skein
|
||||
patched lens
|
||||
patched shakespeare
|
||||
patched shakespeare-css
|
||||
patched shakespeare-js
|
||||
patched DAV
|
||||
patched persistent-template
|
||||
patched hamlet
|
||||
patched yesod-core
|
||||
patched yesod-persistent
|
||||
patched yesod-form
|
||||
patched yesod-auth
|
||||
patched yesod
|
||||
|
||||
installgitannexdeps -f-Pairing -f-XMPP
|
||||
|
||||
cd ..
|
||||
rm -rf tmp
|
||||
}
|
||||
|
||||
native_install () {
|
||||
echo "Native install"
|
||||
native=1
|
||||
if [ ! -e $HOME/.cabal/packages/hackage.haskell.org ]; then
|
||||
cabal update
|
||||
fi
|
||||
install_pkgs
|
||||
}
|
||||
echo
|
||||
echo
|
||||
echo native build
|
||||
echo
|
||||
cabal install cabal-install
|
||||
cabal update
|
||||
installgitannexdeps
|
||||
|
||||
cross_path () {
|
||||
PATH=$HOME/.ghc/android-14/arm-linux-androideabi-4.7/bin:$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin:$PATH
|
||||
}
|
||||
|
||||
cross_install () {
|
||||
echo "Cross install"
|
||||
native=
|
||||
cross_path
|
||||
if [ ! -e $HOME/.ghc/android-14/arm-linux-androideabi-4.7/cabal/packages/hackage.haskell.org ]; then
|
||||
cabal update
|
||||
fi
|
||||
install_pkgs
|
||||
}
|
||||
|
||||
case "$mode" in
|
||||
native)
|
||||
native_install
|
||||
;;
|
||||
cross)
|
||||
cross_install
|
||||
;;
|
||||
cleancross)
|
||||
# cross install, first removing all currently installed
|
||||
# packages except those part of ghc
|
||||
rm -f $(grep -l $HOME/.ghc/android-14/arm-linux-androideabi-4.7/.cabal/lib/ $HOME/.ghc/android-14/arm-linux-androideabi-4.7/lib/ghc-*/package.conf.d/*.conf)
|
||||
cross_path
|
||||
ghc-pkg recache
|
||||
cross_install
|
||||
;;
|
||||
"")
|
||||
cross_install
|
||||
native_install
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
echo
|
||||
echo cross build
|
||||
echo
|
||||
PATH=$HOME/.ghc/android-14/arm-linux-androideabi-4.7/bin:$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin:$PATH
|
||||
cabal install cabal-install
|
||||
cabal update
|
||||
install_pkgs
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue