aports/main/ocaml5/APKBUILD

129 lines
2.9 KiB
Text

# Contributor: Borys Zhukov <mp5@mp5.im>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: omni <omni+alpine@hack.org>
# Maintainer: Celeste <cielesti@protonmail.com>
maintainer="Celeste <cielesti@protonmail.com>"
pkgname=ocaml5
pkgver=5.3.0
pkgrel=0
pkgdesc="Main implementation of the Caml programming language"
url="https://ocaml.org/"
# loongarch64: no upstream support, unofficial port provided as ocaml5-loongarch
arch="all !loongarch64"
license="LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception"
depends="$pkgname-runtime=$pkgver-r$pkgrel gcc"
checkdepends="parallel"
subpackages="
$pkgname-doc
$pkgname-ocamldoc
$pkgname-compiler-libs:_compiler_libs
$pkgname-runtime
"
source="https://caml.inria.fr/pub/distrib/ocaml-${pkgver%.*}/ocaml-$pkgver.tar.xz"
builddir="$srcdir/ocaml-$pkgver"
# Current native compiler support in 5.3.x
case "$CARCH" in
x86_64|aarch64|riscv64|s390x|ppc64le)
_native_compiler=true
;;
*)
_native_compiler=false
;;
esac
build() {
local make_target extra_conf_opts
if $_native_compiler; then
make_target="world.opt"
extra_conf_opts="
--enable-native-compiler
--enable-native-toplevel
--disable-installing-bytecode-programs
"
msg "Building native compiler for $CARCH"
else
make_target="world"
extra_conf_opts="
--disable-native-compiler
--disable-native-toplevel
--enable-installing-bytecode-programs
"
msg "Building bytecode compiler for $CARCH"
fi
want_check && extra_conf_opts="
$extra_conf_opts
--enable-ocamltest
"
./configure \
--prefix=/usr \
--bindir=/usr/bin \
--libdir=/usr/lib/ocaml \
--mandir=/usr/share/man \
--docdir=/usr/share/doc/$pkgname \
--disable-installing-source-artifacts \
$extra_conf_opts \
CC="${CC:-gcc}"
make $make_target
}
check() {
make ocamltest
local i; for i in $(seq 0 5); do
[ $i -eq 0 ] || msg "Retrying ($i/5)..."
if [ $i -lt 3 ]; then
make -C testsuite parallel && return 0
else
# If tests don't succeed after 3 retries, assume we
# don't have enough resources to run them parallelly
make -C testsuite all && return 0
fi
sleep 5
done
return 1
}
package() {
make DESTDIR="$pkgdir" install
}
ocamldoc() {
pkgdesc="$pkgdesc (documentation generator)"
depends="$pkgname=$pkgver-r$pkgrel"
amove usr/bin/ocamldoc*
amove usr/lib/ocaml/ocamldoc
}
_compiler_libs() {
pkgdesc="$pkgdesc (compiler libraries)"
depends="$pkgname=$pkgver-r$pkgrel"
provides="$pkgname-dev=$pkgver-r$pkgrel"
amove usr/lib/ocaml/compiler-libs
}
runtime() {
pkgdesc="$pkgdesc (runtime environment)"
depends=
amove usr/bin/ocamlrun*
amove usr/lib/ocaml/ld.conf
local i; for i in \
'*.cmo' \
'*.cmi' \
'*.cma' \
'stublibs' \
'threads/*.cmi' \
'threads/*.cma'
do
amove "usr/lib/ocaml/$i"
done
}
sha512sums="
d2f030d4b318d9893895ea7c77df9ae2c74c2875084b755b0d2f7e20a5311f77aa3114c818b7a789573fa0c1a34ff4aee49812f3909149ab17dd681d76c24103 ocaml-5.3.0.tar.xz
"