aboutsummaryrefslogtreecommitdiffstats
path: root/testing/reason/APKBUILD
blob: 430b8e9f88a4704905b3c2119d0e81f3595bb160 (plain) (blame)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=reason
pkgver=3.0.4
pkgrel=1
pkgdesc="Simple, fast & type safe code that leverages the JavaScript & OCaml ecosystems"
url="http://reasonml.github.io/"
# x86, armhf, s390x: limited by ocaml aport
arch="all !x86 !armhf !armv7 !s390x"
license="MIT"
checkdepends="nodejs utop-full"
_menhirver=20171013
makedepends="
	bash
	dune
	ocaml
	ocaml-compiler-libs
	ocaml-findlib-dev
	ocaml-menhir-dev=~$_menhirver
	ocaml-merlin-extend-dev
	ocaml-migrate-parsetree-dev
	ocaml-ocamlbuild-dev
	ocaml-result-dev
	ocaml-utop-dev
	ocamlbuild
	opam
	"
options="!check"  # FIXME: tests cannot find reason's modules
subpackages="
	ocaml-$pkgname-dev:_libdev
	$pkgname-merlin
	$pkgname-reactjs
	$pkgname-rebuild
	$pkgname-rtop
	ocaml-$pkgname:_lib
	"
source="$pkgname-$pkgver.tar.gz::https://github.com/facebook/$pkgname/archive/$pkgver.tar.gz
	rtop.sh.patch"
builddir="$srcdir/$pkgname-$pkgver"

build() {
	cd "$builddir"
	jbuilder build @install
}

check() {
	cd "$builddir"
	jbuilder runtest
}

package() {
	cd "$builddir"

	opam-installer -i \
		--prefix="$pkgdir/usr" \
		--libdir="$pkgdir/usr/lib/ocaml" \
		--docdir="$pkgdir/doc" \
		--mandir="$pkgdir/usr/share/man" \
		$pkgname.install

	cd "$pkgdir"

	# There's just a readme and changelog.
	rm -Rf doc

	# Remove annotation files and sources.
	find usr/lib/ocaml \
		-name '*.cmt' -delete \
		-o -name '*.cmti' -delete \
		-o -name '*.ml' -delete

	# Just for internal tests.
	rm usr/bin/testOprint

	# This is probably used only to generate parser (?).
	rm usr/bin/menhir_error_processor

	mkdir -p usr/share/$pkgname-rtop
	mv usr/bin/rtop_init.ml usr/share/$pkgname-rtop/
}

_libdev() {
	pkgdesc="$pkgdesc (development files)"
	depends="ocaml-$pkgname=$pkgver-r$pkgrel"
	local sitelib="usr/lib/ocaml/$pkgname"

	cd "$pkgdir"

	local path; for path in $(find $sitelib/ \
		-name '*.a' \
		-o -name '*.cmx' \
		-o -name '*.cmxa' \
		-o -name '*.mli')
	do
		mkdir -p "$subpkgdir"/${path%/*}
		mv "$path" "$subpkgdir"/${path%/*}/
	done
	rmdir "$subpkgdir"/$sitelib 2>/dev/null || true
}

merlin() {
	pkgdesc="Reason extension to Merlin - context sensitive completion"
	depends="ocaml-merlin"

	_submv usr/bin/ocamlmerlin-reason
}

reactjs() {
	pkgdesc="ReactJS interop that translates Reason JSX to JS"

	_submv usr/bin/ppx_react
	_submv usr/bin/reactjs_jsx_ppx_v2
	_submv usr/bin/reactjs_jsx_ppx_v3
}

rebuild() {
	pkgdesc="Simple build system for Reason based on OCamlbuild"
	depends="$pkgname ocaml ocaml-ocamlbuild"

	_submv usr/bin/rebuild
}

rtop() {
	pkgdesc="REPL for Reason based on Utop"
	depends="$pkgname=$pkgver-r$pkgrel
		ocaml-$pkgname=$pkgver-r$pkgrel
		ocaml-menhir-dev=~$_menhirver
		utop-full"

	_submv usr/bin/rtop
	_submv usr/lib/ocaml/$pkgname/rtop
	_submv usr/share/$pkgname-rtop
}

_lib() {
	pkgdesc="$pkgdesc (library)"
	depends="ocaml-runtime ocaml-menhir=~$_menhirver ocaml-migrate-parsetree"

	_submv usr/lib/ocaml/$pkgname
}

_submv() {
	local path="$1"
	mkdir -p "$subpkgdir"/${path%/*}
	mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
	rmdir -p "$pkgdir"/${path%/*} 2>/dev/null || true
}

sha512sums="ba21920b7320841b08cf0684aeb6718be92b175e2ab71d3b96b317f047c9726b656088cf1a4770766335d4f8a54194b84173e2d7458eabb9e2c0b89a78b1eb95  reason-3.0.4.tar.gz
5a658798a27fa69cc2685353cf0c26dfd95ea6a1d8d5c53c6476500b37b86c18b7b1d26fecac13c5ab0aa91e07f4aa5a7087934e9faca0002dad8f6b8fafd876  rtop.sh.patch"