# Contributor: Mitch Tishmack # Contributor: Jakub Jirutka # Maintainer: Mitch Tishmack # # Note: This abuilds downloads Haskell dependencies in the prepare phase # without any verification! setvar pkgname = 'idris' setvar pkgver = '1.0' setvar pkgrel = '0' setvar pkgdesc = ""A Language with Dependent Types"" setvar url = ""http://www.idris-lang.org"" setvar arch = ""x86_64"" setvar license = ""BSD3"" setvar depends = ""gmp-dev gcc"" setvar makedepends = ""ghc cabal libffi-dev ncurses-dev zlib-dev"" setvar subpackages = ""$pkgname-doc"" setvar source = ""$pkgname-$pkgver.tar.gz::https://github.com/idris-lang/Idris-dev/archive/v$pkgver.tar.gz cabal.config"" setvar builddir = ""$srcdir/Idris-dev-$pkgver"" export CABAL_CONFIG="$srcdir/cabal/cabal.config" proc 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 } proc prepare { default_prepare if test $(head -n 1 "$srcdir"/cabal.config) != "--$pkgver" { die "Requirements file is outdated, run 'abuild cabal_update'" } cd $builddir" # 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 . } proc build { cd $builddir # 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 # to compile hello_world for check. proc check { cd $builddir ./dist/build/idris/idris --version } proc package { cd $builddir cabal copy --destdir="$pkgdir" cd $pkgdir # We don't need the haskell shared libraries or interface files. rm -r usr/lib/idris mkdir -p usr/share/doc/idris/ \ usr/share/licenses/$pkgname/ mv usr/share/idris/docs usr/share/doc/idris mv usr/share/doc/LICENSE usr/share/licenses/$pkgname/ } setvar sha512sums = ""a350004a8510f01d1cc8f965a9a4e2dab219f003980b98354ebb5ae42f73b32c90c98dce193943e9709d994cb92ad35814a46b79412a1afc85d42e1018c6ba10 idris-1.0.tar.gz e078892987816012034295be81118fbc710e3dbf08af18257e5390fc159bb5d64e1aae8a802835ca92b1e0d065524833d657bc9edffc9ebefc8cb5c02935694a cabal.config""