diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2017-05-16 01:36:03 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2017-05-17 13:38:42 +0200 |
commit | bf5f52db4540a8eac95a255c1b9b3c226ae08e49 (patch) | |
tree | 6bf1689a4d7ea7675db6b1fea97c987a2913482b | |
parent | 735829e7c6918524a9f139fc9dd95cf8c73f326d (diff) | |
download | aports-bf5f52db4540a8eac95a255c1b9b3c226ae08e49.tar.bz2 aports-bf5f52db4540a8eac95a255c1b9b3c226ae08e49.tar.xz |
testing/idris: use cabal freeze and sandbox for great good
-rw-r--r-- | testing/idris/APKBUILD | 96 | ||||
-rw-r--r-- | testing/idris/cabal.config | 109 |
2 files changed, 177 insertions, 28 deletions
diff --git a/testing/idris/APKBUILD b/testing/idris/APKBUILD index 4f8bb22b6e..2222b3c30d 100644 --- a/testing/idris/APKBUILD +++ b/testing/idris/APKBUILD @@ -1,4 +1,9 @@ +# Contributor: Mitch Tishmack <mitch.tishmack@gmail.com> +# Contributor: Jakub Jirutka <jakub@jirutka.cz> # Maintainer: Mitch Tishmack <mitch.tishmack@gmail.com> +# +# Note: This abuilds downloads Haskell dependencies in the prepare phase +# without any verification! pkgname=idris pkgver=1.0 pkgrel=0 @@ -9,44 +14,78 @@ license="BSD3" depends="gmp-dev gcc" makedepends="ghc cabal libffi-dev ncurses-dev zlib-dev" subpackages="$pkgname-doc" -source="$pkgname-$pkgver.tar.gz::https://github.com/idris-lang/Idris-dev/archive/v$pkgver.tar.gz" +source="$pkgname-$pkgver.tar.gz::https://github.com/idris-lang/Idris-dev/archive/v$pkgver.tar.gz + cabal.config" builddir="$srcdir/Idris-dev-$pkgver" -_home="$builddir/deps" -_tmp="$builddir/tmp" +export CABAL_CONFIG="$srcdir/cabal/cabal.config" + +cabal_update() { + msg "Updating constraints" + + cd "$builddir" + + # Create cabal config and fetch index. + HOME="${CABAL_CONFIG%/*}" cabal update + + # Resolve deps and generate fresh cabal.config with version constraints. + rm -f cabal.config + cabal freeze + + # Add version tag at the first line. + sed -i "1i--$pkgver" cabal.config + + mv cabal.config "$startdir"/ + + cd "$startdir" + abuild checksum +} prepare() { default_prepare + if [ "$(head -n 1 "$srcdir"/cabal.config)" != "--$pkgver" ]; then + die "Requirements file is outdated, run 'abuild cabal_update'" + fi + cd "$builddir" - mkdir -p "$_tmp" "$_home" - ( - export HOME="$_home" - export TMPDIR="$_tmp" - cabal update - cabal install libffi -v - cabal install --dependencies-only -v - ) + + # Create cabal config and fetch index. + HOME="${CABAL_CONFIG%/*}" cabal update + + # Cabal implicitly loads cabal.config from the project's directory. + ln -sf "$srcdir"/cabal.config . + + # Create Cabal sandbox that will be used for all subsequent cabal + # invocations. This is something like Python virtual env. + cabal sandbox init + + # Fetch all dependencies. + # XXX: This should always fetch the same versions as defined in + # our cabal.config, but Cabal does not verify packages integrity! + cabal fetch libffi . } build() { cd "$builddir" - ( - export HOME="$_home" - export TMPDIR="$_tmp" - # Note, ordering of prefixes is important! - cabal configure --prefix='/usr' \ - --docdir='$prefix/share/doc' \ - --datadir='$prefix/share' \ - --htmldir='$docdir/html' \ - --libdir='$prefix/lib' \ - --libsubdir="$pkgname" \ - --datasubdir="$pkgname" \ - --dynlibdir="$pkgname" \ - --disable-shared \ - --flags='GMP FFI standalone' - cabal build - ) + + # Build dependencies. + cabal install --offline -v libffi + cabal install --only-dependencies --offline -v + + # Note: ordering of prefixes is important! + cabal configure \ + --prefix='/usr' \ + --docdir='$prefix/share/doc' \ + --datadir='$prefix/share' \ + --htmldir='$docdir/html' \ + --libdir='$prefix/lib' \ + --libsubdir="$pkgname" \ + --datasubdir="$pkgname" \ + --dynlibdir="$pkgname" \ + --disable-shared \ + --flags='GMP FFI standalone' + cabal build } # TODO: Run upstream tests and/or figure out how to set paths to be able @@ -73,4 +112,5 @@ package() { mv usr/share/doc/LICENSE usr/share/licenses/$pkgname/ } -sha512sums="a350004a8510f01d1cc8f965a9a4e2dab219f003980b98354ebb5ae42f73b32c90c98dce193943e9709d994cb92ad35814a46b79412a1afc85d42e1018c6ba10 idris-1.0.tar.gz" +sha512sums="a350004a8510f01d1cc8f965a9a4e2dab219f003980b98354ebb5ae42f73b32c90c98dce193943e9709d994cb92ad35814a46b79412a1afc85d42e1018c6ba10 idris-1.0.tar.gz +e078892987816012034295be81118fbc710e3dbf08af18257e5390fc159bb5d64e1aae8a802835ca92b1e0d065524833d657bc9edffc9ebefc8cb5c02935694a cabal.config" diff --git a/testing/idris/cabal.config b/testing/idris/cabal.config new file mode 100644 index 0000000000..302341d0a0 --- /dev/null +++ b/testing/idris/cabal.config @@ -0,0 +1,109 @@ +--1.0 +constraints: aeson ==1.1.2.0, + attoparsec ==0.13.1.0, + array ==0.5.1.1, + base ==4.9.1.0, + ghc-prim ==0.5.0.0, + rts ==1.0, + integer-gmp ==1.0.0.1, + bytestring ==0.10.8.1, + deepseq ==1.4.2.0, + containers ==0.5.7.1, + scientific ==0.3.4.12, + binary ==0.8.3.0, + hashable ==1.2.6.0, + text ==1.2.2.1, + integer-logarithms ==1.0.1, + vector ==0.12.0.1, + primitive ==0.6.2.0, + transformers ==0.5.2.0, + base-compat ==0.9.3, + unix ==2.7.2.1, + time ==1.6.0.1, + dlist ==0.8.0.2, + tagged ==0.8.5, + template-haskell ==2.11.1.0, + ghc-boot-th ==8.0.2, + pretty ==1.1.3.3, + transformers-compat ==0.5.1.4, + time-locale-compat ==0.1.1.3, + unordered-containers ==0.2.8.0, + uuid-types ==1.0.3, + random ==1.1, + annotated-wl-pprint ==0.7.0, + ansi-terminal ==0.6.2.3, + ansi-wl-pprint ==0.6.7.3, + async ==2.1.1.1, + stm ==2.4.4.1, + base64-bytestring ==1.0.0.1, + blaze-html ==0.9.0.1, + blaze-builder ==0.4.0.2, + blaze-markup ==0.8.0.0, + cheapskate ==0.1.0.5, + data-default ==0.7.1.1, + data-default-class ==0.1.2.0, + data-default-instances-containers ==0.0.1, + data-default-instances-dlist ==0.0.1, + data-default-instances-old-locale ==0.0.1, + old-locale ==1.0.0.7, + mtl ==2.2.1, + syb ==0.7, + uniplate ==1.6.12, + xss-sanitize ==0.3.5.7, + css-text ==0.1.2.2, + network-uri ==2.6.1.0, + parsec ==3.1.11, + tagsoup ==0.14.1, + utf8-string ==1.0.1.1, + code-page ==0.1.3, + directory ==1.3.0.0, + filepath ==1.4.1.1, + fingertree ==0.1.1.0, + fsnotify ==0.2.1, + hinotify ==0.3.9, + unix-compat ==0.4.3.1, + haskeline ==0.7.3.0, + terminfo ==0.4.0.2, + ieee754 ==0.8.0, + network ==2.6.3.1, + optparse-applicative ==0.13.2.0, + process ==1.4.3.0, + parsers ==0.12.4, + base-orphans ==0.6, + charset ==0.3.7.1, + semigroups ==0.18.3, + regex-tdfa ==1.2.2, + regex-base ==0.93.2, + safe ==0.3.14, + split ==0.2.3.2, + terminal-size ==0.3.2.1, + trifecta ==1.6.2.1, + comonad ==5.0.1, + contravariant ==1.4, + StateVar ==1.1.0.4, + void ==0.7.2, + distributive ==0.5.2, + lens ==4.15.2, + bifunctors ==5.4.2, + exceptions ==0.8.3, + free ==4.12.4, + prelude-extras ==0.4.0.3, + profunctors ==5.2, + semigroupoids ==5.2, + kan-extensions ==5.0.2, + adjunctions ==4.3, + fail ==4.9.0.0, + parallel ==3.2.1.1, + reflection ==2.1.2, + reducers ==3.12.1, + vector-binary-instances ==0.2.3.5, + zip-archive ==0.3.0.6, + digest ==0.0.1.2, + old-time ==1.1.0.3, + zlib ==0.6.1.2, + tasty ==0.11.2.1, + clock ==0.7.2, + unbounded-delays ==0.1.1.0, + tasty-golden ==2.3.1.1, + temporary ==1.2.0.4, + tasty-rerun ==1.1.6 |