From 2230c71508dc3075698150975bfcd93fb30d592e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 3 Dec 2014 21:25:46 -0400 Subject: convert no-th linux build to use cabal.config with pinned versions for reproducability of builds --- standalone/linux/cabal.config | 208 ++++++++++++++++++++++++++++++ standalone/linux/install-haskell-packages | 34 ++--- 2 files changed, 227 insertions(+), 15 deletions(-) create mode 100644 standalone/linux/cabal.config (limited to 'standalone') 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 -- cgit v1.2.3