convert no-th linux build to use cabal.config with pinned versions for reproducability of builds
This commit is contained in:
parent
068b99f09f
commit
9dbd2ff6c2
2 changed files with 227 additions and 15 deletions
208
standalone/linux/cabal.config
Normal file
208
standalone/linux/cabal.config
Normal file
|
@ -0,0 +1,208 @@
|
||||||
|
constraints: Crypto ==4.2.5.1,
|
||||||
|
DAV ==1.0.3,
|
||||||
|
HTTP ==4000.2.17,
|
||||||
|
HUnit ==1.2.5.2,
|
||||||
|
IfElse ==0.85,
|
||||||
|
MissingH ==1.2.1.0,
|
||||||
|
MonadRandom ==0.1.13,
|
||||||
|
QuickCheck ==2.7.6,
|
||||||
|
SHA ==1.6.1,
|
||||||
|
SafeSemaphore ==0.10.1,
|
||||||
|
aeson ==0.7.0.6,
|
||||||
|
ansi-terminal ==0.6.1.1,
|
||||||
|
ansi-wl-pprint ==0.6.7.1,
|
||||||
|
appar ==0.1.4,
|
||||||
|
asn1-encoding ==0.8.1.3,
|
||||||
|
asn1-parse ==0.8.1,
|
||||||
|
asn1-types ==0.2.3,
|
||||||
|
async ==2.0.1.5,
|
||||||
|
attoparsec ==0.11.3.4,
|
||||||
|
attoparsec-conduit ==1.1.0,
|
||||||
|
authenticate ==1.3.2.10,
|
||||||
|
base-unicode-symbols ==0.2.2.4,
|
||||||
|
base16-bytestring ==0.1.1.6,
|
||||||
|
base64-bytestring ==1.0.0.1,
|
||||||
|
bifunctors ==4.1.1.1,
|
||||||
|
bloomfilter ==2.0.0.0,
|
||||||
|
byteable ==0.1.1,
|
||||||
|
byteorder ==1.0.4,
|
||||||
|
case-insensitive ==1.2.0.1,
|
||||||
|
cereal ==0.4.0.1,
|
||||||
|
cipher-aes ==0.2.8,
|
||||||
|
cipher-des ==0.0.6,
|
||||||
|
cipher-rc4 ==0.1.4,
|
||||||
|
clientsession ==0.9.0.3,
|
||||||
|
comonad ==4.2,
|
||||||
|
conduit ==1.1.6,
|
||||||
|
conduit-extra ==1.1.3,
|
||||||
|
connection ==0.2.3,
|
||||||
|
contravariant ==0.6.1.1,
|
||||||
|
cookie ==0.4.1.2,
|
||||||
|
cprng-aes ==0.5.2,
|
||||||
|
crypto-api ==0.13.2,
|
||||||
|
crypto-cipher-types ==0.0.9,
|
||||||
|
crypto-numbers ==0.2.3,
|
||||||
|
crypto-pubkey ==0.2.4,
|
||||||
|
crypto-pubkey-types ==0.4.2.2,
|
||||||
|
crypto-random ==0.0.7,
|
||||||
|
cryptohash ==0.11.6,
|
||||||
|
cryptohash-conduit ==0.1.1,
|
||||||
|
css-text ==0.1.2.1,
|
||||||
|
shakespeare-text ==1.0.2,
|
||||||
|
data-default ==0.5.3,
|
||||||
|
data-default-class ==0.0.1,
|
||||||
|
data-default-instances-base ==0.0.1,
|
||||||
|
data-default-instances-containers ==0.0.1,
|
||||||
|
data-default-instances-dlist ==0.0.1,
|
||||||
|
data-default-instances-old-locale ==0.0.1,
|
||||||
|
dataenc ==0.14.0.7,
|
||||||
|
dbus ==0.10.8,
|
||||||
|
distributive ==0.4.4,
|
||||||
|
dlist ==0.7.0.1,
|
||||||
|
dns ==1.3.0,
|
||||||
|
edit-distance ==0.2.1.2,
|
||||||
|
either ==4.3,
|
||||||
|
email-validate ==1.0.0,
|
||||||
|
entropy ==0.2.1,
|
||||||
|
errors ==1.4.7,
|
||||||
|
exceptions ==0.6.1,
|
||||||
|
failure ==0.2.0.3,
|
||||||
|
fast-logger ==2.1.5,
|
||||||
|
fdo-notify ==0.3.1,
|
||||||
|
feed ==0.3.9.2,
|
||||||
|
file-embed ==0.0.6,
|
||||||
|
fingertree ==0.1.0.0,
|
||||||
|
free ==4.9,
|
||||||
|
gnuidn ==0.2,
|
||||||
|
gnutls ==0.1.4,
|
||||||
|
gsasl ==0.3.5,
|
||||||
|
hS3 ==0.5.7,
|
||||||
|
hamlet ==1.1.9.2,
|
||||||
|
hashable ==1.2.1.0,
|
||||||
|
hinotify ==0.3.5,
|
||||||
|
hjsmin ==0.1.4.7,
|
||||||
|
hslogger ==1.2.1,
|
||||||
|
http-client ==0.3.8.2,
|
||||||
|
http-client-tls ==0.2.2,
|
||||||
|
http-conduit ==2.1.2.3,
|
||||||
|
http-date ==0.0.2,
|
||||||
|
http-types ==0.8.5,
|
||||||
|
hxt ==9.3.1.4,
|
||||||
|
hxt-charproperties ==9.1.1.1,
|
||||||
|
hxt-regex-xmlschema ==9.0.4,
|
||||||
|
hxt-unicode ==9.0.2.2,
|
||||||
|
idna ==0.2,
|
||||||
|
iproute ==1.2.11,
|
||||||
|
json ==0.5,
|
||||||
|
keys ==3.10.1,
|
||||||
|
language-javascript ==0.5.13,
|
||||||
|
lens ==4.4.0.2,
|
||||||
|
libxml-sax ==0.7.5,
|
||||||
|
mime-mail ==0.4.1.2,
|
||||||
|
mime-types ==0.1.0.4,
|
||||||
|
mmorph ==1.0.3,
|
||||||
|
monad-control ==0.3.2.2,
|
||||||
|
monad-logger ==0.3.6.1,
|
||||||
|
monad-loops ==0.4.2.1,
|
||||||
|
monads-tf ==0.1.0.2,
|
||||||
|
mtl ==2.1.2,
|
||||||
|
nats ==0.1.2,
|
||||||
|
network ==2.4.1.2,
|
||||||
|
network-conduit ==1.1.0,
|
||||||
|
network-info ==0.2.0.5,
|
||||||
|
network-multicast ==0.0.10,
|
||||||
|
network-protocol-xmpp ==0.4.6,
|
||||||
|
network-uri ==2.6.0.1,
|
||||||
|
optparse-applicative ==0.10.0,
|
||||||
|
parallel ==3.2.0.4,
|
||||||
|
path-pieces ==0.1.4,
|
||||||
|
pem ==0.2.2,
|
||||||
|
persistent ==1.3.3,
|
||||||
|
persistent-template ==1.3.2.2,
|
||||||
|
pointed ==4.0,
|
||||||
|
prelude-extras ==0.4,
|
||||||
|
profunctors ==4.0.4,
|
||||||
|
publicsuffixlist ==0.1,
|
||||||
|
punycode ==2.0,
|
||||||
|
random ==1.0.1.1,
|
||||||
|
ranges ==0.2.4,
|
||||||
|
reducers ==3.10.2.1,
|
||||||
|
reflection ==1.2.0.1,
|
||||||
|
regex-base ==0.93.2,
|
||||||
|
regex-compat ==0.95.1,
|
||||||
|
regex-posix ==0.95.2,
|
||||||
|
regex-tdfa ==1.2.0,
|
||||||
|
resource-pool ==0.2.1.1,
|
||||||
|
resourcet ==1.1.2.3,
|
||||||
|
safe ==0.3.8,
|
||||||
|
securemem ==0.1.3,
|
||||||
|
semigroupoids ==4.2,
|
||||||
|
semigroups ==0.15.3,
|
||||||
|
shakespeare ==1.2.1.1,
|
||||||
|
shakespeare-css ==1.0.7.4,
|
||||||
|
shakespeare-i18n ==1.0.0.5,
|
||||||
|
shakespeare-js ==1.2.0.4,
|
||||||
|
silently ==1.2.4.1,
|
||||||
|
simple-sendfile ==0.2.14,
|
||||||
|
skein ==1.0.9,
|
||||||
|
socks ==0.5.4,
|
||||||
|
split ==0.2.2,
|
||||||
|
stm ==2.4.2,
|
||||||
|
stm-chans ==3.0.0.2,
|
||||||
|
streaming-commons ==0.1.4.1,
|
||||||
|
stringprep ==0.1.5,
|
||||||
|
stringsearch ==0.3.6.5,
|
||||||
|
syb ==0.4.0,
|
||||||
|
system-fileio ==0.3.14,
|
||||||
|
system-filepath ==0.4.12,
|
||||||
|
tagged ==0.7.2,
|
||||||
|
tagsoup ==0.13.1,
|
||||||
|
tagstream-conduit ==0.5.5.1,
|
||||||
|
tasty ==0.10,
|
||||||
|
tasty-hunit ==0.9,
|
||||||
|
tasty-quickcheck ==0.8.1,
|
||||||
|
tasty-rerun ==1.1.3,
|
||||||
|
text ==1.1.1.0,
|
||||||
|
text-icu ==0.6.3.7,
|
||||||
|
tf-random ==0.5,
|
||||||
|
tls ==1.2.9,
|
||||||
|
transformers ==0.3.0.0,
|
||||||
|
transformers-base ==0.4.1,
|
||||||
|
transformers-compat ==0.3.3.3,
|
||||||
|
unbounded-delays ==0.1.0.8,
|
||||||
|
unix-compat ==0.4.1.3,
|
||||||
|
unix-time ==0.2.2,
|
||||||
|
unordered-containers ==0.2.5.0,
|
||||||
|
utf8-string ==0.3.7,
|
||||||
|
uuid ==1.3.3,
|
||||||
|
vault ==0.3.0.3,
|
||||||
|
vector ==0.10.0.1,
|
||||||
|
void ==0.6.1,
|
||||||
|
wai ==3.0.1.1,
|
||||||
|
wai-app-static ==3.0.0.1,
|
||||||
|
wai-extra ==3.0.1.2,
|
||||||
|
wai-logger ==2.1.1,
|
||||||
|
warp ==3.0.0.5,
|
||||||
|
warp-tls ==3.0.0,
|
||||||
|
word8 ==0.1.1,
|
||||||
|
x509 ==1.4.11,
|
||||||
|
x509-store ==1.4.4,
|
||||||
|
x509-system ==1.4.5,
|
||||||
|
x509-validation ==1.5.0,
|
||||||
|
xml ==1.3.13,
|
||||||
|
xml-conduit ==1.2.1,
|
||||||
|
xml-hamlet ==0.4.0.9,
|
||||||
|
xml-types ==0.3.4,
|
||||||
|
xss-sanitize ==0.3.5.2,
|
||||||
|
yaml ==0.8.9.3,
|
||||||
|
yesod ==1.2.6.1,
|
||||||
|
yesod-auth ==1.3.4.6,
|
||||||
|
yesod-core ==1.2.20.1,
|
||||||
|
yesod-default ==1.2.0,
|
||||||
|
yesod-form ==1.3.16,
|
||||||
|
yesod-persistent ==1.2.3.1,
|
||||||
|
yesod-routes ==1.2.0.7,
|
||||||
|
yesod-static ==1.2.4,
|
||||||
|
zlib ==0.5.4.1,
|
||||||
|
bytestring ==0.10.4.0,
|
||||||
|
scientific ==0.3.3.1
|
|
@ -3,13 +3,10 @@
|
||||||
# to all the necessary haskell packages being installed, with the
|
# to all the necessary haskell packages being installed, with the
|
||||||
# necessary patches to work on architectures that lack template haskell.
|
# necessary patches to work on architectures that lack template haskell.
|
||||||
#
|
#
|
||||||
# Note that the newest version of packages are installed.
|
# The cabal.config is used to pin the haskell packages to the last
|
||||||
# It attempts to reuse patches for older versions, but
|
# versions that have been gotten working. To update, delete the
|
||||||
# new versions of packages often break cross-compilation by adding TH,
|
# cabal.config, run this script with an empty cabal and fix up the broken
|
||||||
# etc
|
# patches, and then use cabal freeze to generate a new cabal.config.
|
||||||
#
|
|
||||||
# Future work: Convert to using the method used here:
|
|
||||||
# https://github.com/kaoskorobase/ghc-ios-cabal-scripts/
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
@ -26,14 +23,22 @@ cabalinstall () {
|
||||||
|
|
||||||
patched () {
|
patched () {
|
||||||
pkg=$1
|
pkg=$1
|
||||||
shift 1
|
ver=$2
|
||||||
cabal unpack $pkg$1
|
if [ -z "$ver" ]; then
|
||||||
|
ver="$(grep " $pkg " ../cabal.config | cut -d= -f 3 | sed 's/,$//')"
|
||||||
|
fi
|
||||||
|
if [ -z "$ver" ]; then
|
||||||
|
cabal unpack $pkg
|
||||||
|
else
|
||||||
|
cabal unpack $pkg-$ver
|
||||||
|
fi
|
||||||
cd $pkg*
|
cd $pkg*
|
||||||
git init
|
git init
|
||||||
git config user.name dummy
|
git config user.name dummy
|
||||||
git config user.email dummy@example.com
|
git config user.email dummy@example.com
|
||||||
git add .
|
git add .
|
||||||
git commit -m "pre-patched state of $pkg"
|
git commit -m "pre-patched state of $pkg"
|
||||||
|
ln -sf ../../cabal.config
|
||||||
for patch in ../../haskell-patches/${pkg}_* ../../../no-th/haskell-patches/${pkg}_*; do
|
for patch in ../../haskell-patches/${pkg}_* ../../../no-th/haskell-patches/${pkg}_*; do
|
||||||
if [ -e "$patch" ]; then
|
if [ -e "$patch" ]; then
|
||||||
echo trying $patch
|
echo trying $patch
|
||||||
|
@ -45,16 +50,19 @@ patched () {
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
cabalinstall
|
cabalinstall
|
||||||
rm -rf $pkg*
|
rm -f cabal.config
|
||||||
cd ..
|
cd ..
|
||||||
|
rm -rf $pkg*
|
||||||
}
|
}
|
||||||
|
|
||||||
installgitannexdeps () {
|
installgitannexdeps () {
|
||||||
pushd ../..
|
pushd ../..
|
||||||
|
ln -sf standalone/linux/cabal.config
|
||||||
echo "cabal install QuickCheck -f-templateHaskell"
|
echo "cabal install QuickCheck -f-templateHaskell"
|
||||||
cabal install -j1 QuickCheck -f-templateHaskell
|
cabal install -j1 QuickCheck -f-templateHaskell
|
||||||
echo cabal install --only-dependencies "$@"
|
echo cabal install --only-dependencies "$@"
|
||||||
cabal install -j1 --only-dependencies "$@"
|
cabal install -j1 --only-dependencies "$@"
|
||||||
|
rm -f cabal.config
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,11 +82,7 @@ install_pkgs () {
|
||||||
patched yesod-core
|
patched yesod-core
|
||||||
patched persistent
|
patched persistent
|
||||||
patched persistent-template
|
patched persistent-template
|
||||||
# Newer versions of file-embed cause ghc -ddump-splices
|
patched file-embed
|
||||||
# to output invalid character codes.
|
|
||||||
# Note that the system generating the splices should also
|
|
||||||
# use this version of file-embed.
|
|
||||||
patched file-embed -0.0.6
|
|
||||||
patched process-conduit
|
patched process-conduit
|
||||||
patched yesod-static
|
patched yesod-static
|
||||||
patched yesod-persistent
|
patched yesod-persistent
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue