aboutsummaryrefslogtreecommitdiffstats
path: root/community/ocaml/APKBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'community/ocaml/APKBUILD')
-rw-r--r--community/ocaml/APKBUILD141
1 files changed, 95 insertions, 46 deletions
diff --git a/community/ocaml/APKBUILD b/community/ocaml/APKBUILD
index e86462ef2b4..51cbf6e66fc 100644
--- a/community/ocaml/APKBUILD
+++ b/community/ocaml/APKBUILD
@@ -1,38 +1,52 @@
# Contributor: Borys Zhukov <mp5@mp5.im>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: omni <omni+alpine@hack.org>
pkgname=ocaml
-pkgver=4.08.1
+pkgver=4.14.2
pkgrel=1
pkgdesc="Main implementation of the Caml programming language"
-url="http://ocaml.org/"
-arch="all !x86 !armhf !armv7"
-license="LGPL-2.1-or-later-WITH-linking-exception"
+url="https://ocaml.org/"
+# riscv64: hangs forever at final build step
+# loongarch64: no upstream support
+arch="all !riscv64 !loongarch64"
+license="LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception"
depends="$pkgname-runtime=$pkgver-r$pkgrel gcc"
-makedepends="gdbm-dev libc-dev ncurses-dev zlib-dev binutils-dev"
-[ "$CARCH" = "x86_64" ] || options="textrels"
+makedepends="gdbm-dev libc-dev ncurses-dev zlib-dev binutils-dev rpm-scripts"
+checkdepends="parallel"
subpackages="
+ $pkgname-abuild-helper:_abuild_helper:noarch
$pkgname-doc
- $pkgname-dev
+ $pkgname-byte
$pkgname-ocamldoc
$pkgname-compiler-libs:_compiler_libs
$pkgname-runtime
"
-source="http://caml.inria.fr/pub/distrib/ocaml-${pkgver%.*}/$pkgname-$pkgver.tar.gz
- compile-without-debug-info.patch
- fix-mcontext-fields.patch
- fix-segfault-in-ppc64le.patch
- fix-check-parser-uptodate-or-warn.sh.patch
+source="https://caml.inria.fr/pub/distrib/ocaml-${pkgver%.*}/ocaml-$pkgver.tar.gz
+ ocaml4-abuild-find
"
-builddir="$srcdir/$pkgname-$pkgver"
+
+# 32bit archs
+case "$CARCH" in
+armv7|armhf|x86)
+ options="$options textrels"
+ export LDFLAGS="$LDFLAGS -Wl,-z,notext"
+ ;;
+esac
build() {
- cd "$builddir"
+ local extra_conf_opts
+ if ! subpackage_types_has byte; then
+ extra_conf_opts="
+ --disable-installing-bytecode-programs
+ "
+ fi
+
./configure \
--prefix /usr \
--bindir /usr/bin \
--libdir /usr/lib/ocaml \
--mandir /usr/share/man \
+ $extra_conf_opts \
CC="${CC:-gcc}" \
AS="${CC:-gcc} -c" \
ASPP="${CC:-gcc} -c"
@@ -40,15 +54,11 @@ build() {
}
check() {
- cd "$builddir"
-
- # FIXME: there seem to be some spurious failures, ignore until fixed.
- make -C testsuite all || true
+ make ocamltest
+ make -C testsuite parallel
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
@@ -62,64 +72,103 @@ package() {
-a -delete
# To be consistent with other binaries.
- mv usr/bin/ocamldoc usr/bin/ocamldoc.byte
+ if subpackage_types_has byte; then
+ mv usr/bin/ocamldoc usr/bin/ocamldoc.byte
+ else
+ rm usr/bin/ocamldoc
+ fi
ln -s ocamldoc.opt usr/bin/ocamldoc
}
-dev() {
- pkgdesc="OCaml bytecode executables"
+byte() {
+ pkgdesc="$pkgdesc (bytecode executables)"
+ replaces="$pkgname-dev"
- _submv 'usr/bin/*.byte'
+ amove usr/bin/*.byte
}
ocamldoc() {
- pkgdesc="Documentation generator for OCaml"
+ pkgdesc="$pkgdesc (documentation generator)"
depends="$pkgname=$pkgver-r$pkgrel"
replaces="$pkgname" # for backward compatibility
- _submv usr/bin/ocamldoc\*
- _submv usr/lib/ocaml/ocamldoc
+ amove usr/bin/ocamldoc*
+ amove usr/lib/ocaml/ocamldoc
}
_compiler_libs() {
- pkgdesc="Compiler libraries for OCaml"
+ pkgdesc="$pkgdesc (compiler libraries)"
depends="$pkgname=$pkgver-r$pkgrel"
replaces="$pkgname" # for backward compatibility
- _submv usr/lib/ocaml/compiler-libs
+ amove usr/lib/ocaml/compiler-libs
}
runtime() {
- pkgdesc="OCaml runtime environment"
+ pkgdesc="$pkgdesc (runtime environment)"
depends=""
replaces="$pkgname" # for backward compatibility
- _submv usr/bin/ocamlrun
+ amove usr/bin/ocamlrun*
+ amove usr/lib/ocaml/ld.conf
local i; for i in \
'*.cmo' \
'*.cmi' \
'*.cma' \
- 'VERSION' \
'stublibs' \
- 'vmthreads/*.cmi' \
- 'vmthreads/*.cma' \
'threads/*.cmi' \
'threads/*.cma'
do
- _submv "usr/lib/ocaml/$i"
+ amove "usr/lib/ocaml/$i"
done
}
-_submv() {
- local path="$1"
- mkdir -p "$subpkgdir"/${path%/*}
- mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
- rmdir -p "$pkgdir"/${path%/*} 2>/dev/null || true
+_abuild_helper() {
+ pkgdesc="Helper script for OCaml 4 dependency tracing"
+ depends="$pkgname=$pkgver-r$pkgrel rpm-scripts"
+ install_if="$pkgname=$pkgver-r$pkgrel build-base"
+
+ install -Dvm755 ocaml4-abuild-find -t "$subpkgdir"/usr/bin/
+}
+
+prepare_py_provides() {
+ local dir="${subpkgdir:-$pkgdir}" ocaml_providers=""
+ local pkgbasedir=${pkgbasedir:-"$startdir/pkg"}
+ local controldir="$pkgbasedir"/.control.${subpkgname:-$pkgname}
+ # the main package depends on -runtime, so declare
+ # what runtime provides under the main package as
+ # the move to runtime is not a whole directory
+ # move like -ocamldoc and -compiler-libs
+ if [ "$subpkgname" = "$pkgname-runtime" ]; then
+ controldir="$pkgbasedir"/.control.$pkgname
+ mkdir -p "$controldir"
+ fi
+
+ options_has "!tracedeps" && return 0
+ cd "$dir"
+
+ local ocamlobjinfo="$pkgbasedir"/$pkgname/usr/bin/ocamlobjinfo
+
+ ocaml_providers="$(find usr/lib/ocaml -type f \( \
+ -name '*.cma' -o -name '*.cmi' -o -name '*.cmo' \
+ -o -name '*.cmx' -o -name '*.cmxa' \) 2>/dev/null \
+ | /usr/lib/rpm/ocamldeps.sh --provides -f "$ocamlobjinfo" \
+ | sed -e 's/^ocaml(/ocaml4-intf:/' \
+ -e 's/^ocamlx(/ocaml4-impl:/' \
+ -e 's/) = /:/')"
+
+ # Both ocaml-compiler-libs and ocaml-runtime contain a topdirs.cmi
+ # So, only allow "ocaml4-intf:Topdirs" in ocaml to avoid conflicts
+ local i; for i in $ocaml_providers; do
+ if [ "$subpkgname" != "$pkgname-compiler-libs" ] \
+ || [ "${i%:*}" != "ocaml4-intf:Topdirs" ]; then
+ echo "$i=$pkgver-r$pkgrel" >> "$controldir"/.provides-py
+ fi
+ done
}
-sha512sums="8239c1879926e59c3d9611ad0d97618ce21b0528f1bd59db3df9c24287ad180ffa74f34e52e1fab39e71cbf8113a9a4ee5037cc33ae64ca6a9a109fe4ada0256 ocaml-4.08.1.tar.gz
-49cbd6df3a70d00df33d34ab4508dd04d52cbc94efc6c8cac8668758e7346be3c7acedf5b8af38a0adb18c69b8d0859667b12cc11699002c048af962cf283ad2 compile-without-debug-info.patch
-e853f609006bd2514bbf63cf9215150496ec62ceee3e55f6f719b19453c97251ad935245578528fab798e626dab5a6c4e2fd5fb652f99ddd5cfd261ac0c4c9bb fix-mcontext-fields.patch
-e65b647427d9c94933d5be97857daf8cdc65e25c10066740dbcbab7a4e6f8ddb2277ee7d5796abf5916e5bdd59b057de736190432c480fc8ff2a4b2a94d46eca fix-segfault-in-ppc64le.patch
-b3362906c23ecdb084db7dbf18cae22f0a54ba968f1ecf9c8d13c230ca221b3f77fa820a52e091ce7b71b1cb4a91faf1346692aa6fa411bb46fca784500def25 fix-check-parser-uptodate-or-warn.sh.patch"
+sha512sums="
+64df6462a83058e805ab29d58ef2f3597eb0ed52bf1294a9e6303fb783845cde78c7de04d165e77454a440fa2d50ff10ca81f2d1f9294f2dccdfe28824bce028 ocaml-4.14.2.tar.gz
+66a05e85cb00ffa8c6c06f948ea5d3bc6a255296d5bf5ac353c60a4844047876b23b6c1ddea5de1c6849a98ae273f17e3723db49f96da49d5a0bf0d3192ec57c ocaml4-abuild-find
+"