blob: 80c7d88c2442a7d1700642583d050b71bd10cfa8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
#!/bin/sh
# 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.
#
# Needs some extra C libraries to be installed inside the cross-compiler
# lib directory: libgnutls libxml2
#
# 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.
# lib dir
set -e
if [ "$1" ]; then
mode="$1"
shift 1
fi
cabalopts="$@"
cabalinstall () {
echo cabal install "$@" "$cabalopts"
eval cabal install "$@" "$cabalopts"
}
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
}
unpatched () {
cabalinstall "$@"
}
onlycross () {
if [ ! "$native" ]; then
eval "$@"
fi
}
onlynative () {
if [ "$native" ]; then
eval "$@"
fi
}
install_pkgs () {
rm -rf tmp
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
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
}
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
|