blob: 2222b3c30d73f7104ef59303527b1f26502b984f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# 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
pkgdesc="A Language with Dependent Types"
url="http://www.idris-lang.org"
arch="x86_64 armhf"
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
cabal.config"
builddir="$srcdir/Idris-dev-$pkgver"
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"
# 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"
# 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.
check() {
cd "$builddir"
./dist/build/idris/idris --version
}
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/
}
sha512sums="a350004a8510f01d1cc8f965a9a4e2dab219f003980b98354ebb5ae42f73b32c90c98dce193943e9709d994cb92ad35814a46b79412a1afc85d42e1018c6ba10 idris-1.0.tar.gz
e078892987816012034295be81118fbc710e3dbf08af18257e5390fc159bb5d64e1aae8a802835ca92b1e0d065524833d657bc9edffc9ebefc8cb5c02935694a cabal.config"
|