aboutsummaryrefslogtreecommitdiff
path: root/standalone/linux
diff options
context:
space:
mode:
authorGravatar Joey Hess <id@joeyh.name>2014-12-03 21:25:46 -0400
committerGravatar Joey Hess <id@joeyh.name>2014-12-03 21:25:46 -0400
commit2230c71508dc3075698150975bfcd93fb30d592e (patch)
tree8600206cf52ad5543c04ffaaa2bc5eeeed658e18 /standalone/linux
parentea0128bbb3b0d976f64cd3467df26b39669222be (diff)
convert no-th linux build to use cabal.config with pinned versions for reproducability of builds
Diffstat (limited to 'standalone/linux')
-rw-r--r--standalone/linux/cabal.config208
-rwxr-xr-xstandalone/linux/install-haskell-packages34
2 files changed, 227 insertions, 15 deletions
diff --git a/standalone/linux/cabal.config b/standalone/linux/cabal.config
new file mode 100644
index 000000000..4eecbfeaf
--- /dev/null
+++ b/standalone/linux/cabal.config
@@ -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
diff --git a/standalone/linux/install-haskell-packages b/standalone/linux/install-haskell-packages
index f3c4da8c5..0ddc70b6a 100755
--- a/standalone/linux/install-haskell-packages
+++ b/standalone/linux/install-haskell-packages
@@ -3,13 +3,10 @@
# 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 are 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/
+# The cabal.config is used to pin the haskell packages to the last
+# versions that have been gotten working. To update, delete the
+# cabal.config, run this script with an empty cabal and fix up the broken
+# patches, and then use cabal freeze to generate a new cabal.config.
set -e
@@ -26,14 +23,22 @@ cabalinstall () {
patched () {
pkg=$1
- shift 1
- cabal unpack $pkg$1
+ ver=$2
+ 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*
git init
git config user.name dummy
git config user.email dummy@example.com
git add .
git commit -m "pre-patched state of $pkg"
+ ln -sf ../../cabal.config
for patch in ../../haskell-patches/${pkg}_* ../../../no-th/haskell-patches/${pkg}_*; do
if [ -e "$patch" ]; then
echo trying $patch
@@ -45,16 +50,19 @@ patched () {
fi
done
cabalinstall
- rm -rf $pkg*
+ rm -f cabal.config
cd ..
+ rm -rf $pkg*
}
installgitannexdeps () {
pushd ../..
+ ln -sf standalone/linux/cabal.config
echo "cabal install QuickCheck -f-templateHaskell"
cabal install -j1 QuickCheck -f-templateHaskell
echo cabal install --only-dependencies "$@"
cabal install -j1 --only-dependencies "$@"
+ rm -f cabal.config
popd
}
@@ -74,11 +82,7 @@ install_pkgs () {
patched yesod-core
patched persistent
patched persistent-template
- # Newer versions of file-embed cause ghc -ddump-splices
- # 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 file-embed
patched process-conduit
patched yesod-static
patched yesod-persistent