# Contributor: Jakub Jirutka # Maintainer: Jakub Jirutka 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 !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"