commit:     853dfe8d44c02abbd15056a7e73f1f0e3428ba5a
Author:     Alfredo Tupone <tupone <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 17 22:00:59 2025 +0000
Commit:     Alfredo Tupone <tupone <AT> gentoo <DOT> org>
CommitDate: Mon Nov 17 22:02:03 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=853dfe8d

dev-lang/ocaml: add 5.4.0

Signed-off-by: Alfredo Tupone <tupone <AT> gentoo.org>

 dev-lang/ocaml/Manifest           |   1 +
 dev-lang/ocaml/ocaml-5.4.0.ebuild | 114 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 115 insertions(+)

diff --git a/dev-lang/ocaml/Manifest b/dev-lang/ocaml/Manifest
index 66dd4c270b2b..5ad64884c060 100644
--- a/dev-lang/ocaml/Manifest
+++ b/dev-lang/ocaml/Manifest
@@ -2,3 +2,4 @@ DIST ocaml-4.11.2.tar.gz 5075323 BLAKE2B 
bdc503d9a8d0e39dd11060febcd0287657b460e
 DIST ocaml-4.13.1.tar.gz 5323203 BLAKE2B 
f1dcb1601ebfa2a37351e3a466a7ca601518c2da403b01aeb182738a54d5887523ab554d747d6591cb09b07b417865e20907f7877117b2d2d069ef6c9edc0fae
 SHA512 
da3434177438c852da53c0fda7bc2519adcda6384d97d45e44137ed0fd384ffb3da61958a7b51296edb3f88f5a5310ca71b6862f6d756aaa4012d1f54e5955f6
 DIST ocaml-4.14.2.tar.gz 5505119 BLAKE2B 
518c2a69ee32e1c141b574a9800a64efc445381eb2808985b5dbb9d5ec54228aa25042a1c410307c3556488ba12a751980396b0d9a01e60a1ea84ac5b52e6dd6
 SHA512 
61bfa7961aae02458210f10865a5703f7a50a9be2452379e820cf2dfac2c6037da553c31835145e50a776880bdeb2ec78cd7a3147d65f418e7b3e593534e8a04
 DIST ocaml-5.3.0.tar.gz 6239856 BLAKE2B 
a790293d14a31d34b10f2fac22a416e967c2a06f64001b54665e691a6aecdb71caf60dd6217460257f8d18191551ffa01d0d3d62327c6eb9bc63c254c162752e
 SHA512 
73817ada340bdf4091b3edd7b292bd0074c87b4836f202f48ecf0f620a00feaa70ebc9101b97155e8caa6907646dfdf21eff728fa0e14542df3b5e5436229d06
+DIST ocaml-5.4.0.tar.gz 6448449 BLAKE2B 
88a055ac07a7ce126b71d8a242e63b68689bb637f40f0adc08e8f0be28961f7d7a6b3a2a673a137726f5100d4a032b6bba7424b168b283553e859f1bf868b482
 SHA512 
3684468800f4528c9fd96ef3fdd6aa04f71b77180d3ae8045d429f96b32e23cb3a8a307762c7237b6c56c087f45b59b0dab672a31166e3de254bb0fb9b4eb588

diff --git a/dev-lang/ocaml/ocaml-5.4.0.ebuild 
b/dev-lang/ocaml/ocaml-5.4.0.ebuild
new file mode 100644
index 000000000000..95a317e769b6
--- /dev/null
+++ b/dev-lang/ocaml/ocaml-5.4.0.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic
+
+DESCRIPTION="Programming language supporting functional, imperative & 
object-oriented styles"
+HOMEPAGE="https://ocaml.org/";
+SRC_URI="https://github.com/ocaml/ocaml/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="QPL-1.0 LGPL-2"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 
~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="emacs flambda latex +ocamlopt test xemacs"
+
+RDEPEND="sys-libs/binutils-libs:=
+       !dev-ml/findlib:0/0"
+BDEPEND="${RDEPEND}
+       virtual/pkgconfig"
+PDEPEND="emacs? ( app-emacs/ocaml-mode )
+       xemacs? ( app-xemacs/ocaml )"
+
+QA_FLAGS_IGNORED='/usr/lib.*/ocaml/bigarray.cmxs'
+
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+       default
+
+       cp "${FILESDIR}"/ocaml.conf "${T}" || die
+
+       # OCaml generates textrels on 32-bit arches
+       # We can't do anything about it, but disabling it means that tests
+       # for OCaml-based packages won't fail on unexpected output
+       # bug #773226
+       if use arm || use ppc || use x86 ; then
+               append-ldflags "-Wl,-z,notext"
+       fi
+
+       # Upstream build ignores LDFLAGS in several places.
+       sed -i -e 's/\(^MKDLL=.*\)/\1 $(LDFLAGS)/' \
+               -e 's/\(^OC_CFLAGS=.*\)/\1 $(LDFLAGS)/' \
+               -e 's/\(^OC_LDFLAGS=.*\)/\1 $(LDFLAGS)/' \
+               Makefile.config.in || die "LDFLAGS fix failed"
+
+       # drop failing test (domain_count < nproc)
+       rm testsuite/tests/parallel/recommended_domain_count_unix.ml || die
+
+       # test is not working
+       rm testsuite/tests/native-debugger/linux-gdb-amd64.ml || die
+}
+
+src_configure() {
+       filter-lto #bug 870349
+       local opt=(
+               --bindir="${EPREFIX}/usr/bin"
+               --libdir="${EPREFIX}/usr/$(get_libdir)/ocaml"
+               --mandir="${EPREFIX}/usr/share/man"
+               --prefix="${EPREFIX}/usr"
+               $(use_enable test ocamltest) \
+               $(use_enable flambda)
+       )
+
+       econf "${opt[@]}"
+}
+
+src_compile() {
+       env -u P emake world
+
+       if use ocamlopt ; then
+               env -u P emake opt
+               env -u P emake opt.opt
+       fi
+}
+
+src_test() {
+       emake -j
+
+       # OCaml tests only work when run sequentially
+       if use ocamlopt ; then
+               emake -j1 ocamltest.opt
+       else
+               emake -j1 ocamltest
+               #ewarn "${PN} was built without 'ocamlopt' USE flag; skipping 
tests."
+       fi
+
+       emake -j1 tests
+}
+
+src_install() {
+       # OCaml generates textrels on 32-bit arches
+       if use arm || use ppc || use x86 ; then
+               export QA_TEXTRELS='.*'
+       fi
+       default
+
+       dodir /usr/include
+       # Create symlink for header files
+       dosym "../$(get_libdir)/ocaml/caml" /usr/include/caml
+       dodoc Changes README.adoc
+
+       # Create envd entry for latex input files
+       if use latex ; then
+               echo 
"TEXINPUTS=\"${EPREFIX}/usr/$(get_libdir)/ocaml/ocamldoc:\"" > 
"${T}"/99ocamldoc || die
+               doenvd "${T}"/99ocamldoc
+       fi
+
+       sed -i -e "s:lib:$(get_libdir):" "${T}"/ocaml.conf || die
+
+       # Install ocaml-rebuild portage set
+       insinto /usr/share/portage/config/sets
+       doins "${T}"/ocaml.conf
+}

Reply via email to