diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/gating.yaml b/gating.yaml new file mode 100755 index 0000000..2c7ed80 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-* +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} diff --git a/ocaml-dune-debuginfo.patch b/ocaml-dune-debuginfo.patch index 8917c71..906cec4 100644 --- a/ocaml-dune-debuginfo.patch +++ b/ocaml-dune-debuginfo.patch @@ -1,8 +1,8 @@ ---- dune-3.11.0/src/dune_rules/dune_project.ml.orig 2023-09-23 19:52:10.552217543 -0600 -+++ dune-3.11.0/src/dune_rules/dune_project.ml 2023-09-23 22:03:32.641347776 -0600 -@@ -455,7 +455,7 @@ let filename = "dune-project" +--- dune-3.20.0/src/dune_lang/dune_project.ml.orig 2025-08-19 00:28:44.000000000 -0600 ++++ dune-3.20.0/src/dune_lang/dune_project.ml 2025-08-21 20:42:51.793195598 -0600 +@@ -425,7 +425,7 @@ let interpret_lang_and_extensions ~(lang + let filename = "dune-project" let opam_file_location_default ~lang:_ = `Relative_to_project - let implicit_transitive_deps_default ~lang:_ = true let wrapped_executables_default ~(lang : Lang.Instance.t) = lang.version >= (2, 0) -let map_workspace_root_default ~(lang : Lang.Instance.t) = lang.version >= (3, 0) +let map_workspace_root_default ~(lang : Lang.Instance.t) = false diff --git a/ocaml-dune.spec b/ocaml-dune.spec index b30b7ad..9409c70 100644 --- a/ocaml-dune.spec +++ b/ocaml-dune.spec @@ -10,37 +10,40 @@ # docs are not needed in RHEL, and add unwanted build dependencies %bcond docs %{undefined rhel} +%global giturl https://github.com/ocaml/dune + Name: ocaml-dune -Version: 3.15.2 -Release: 1%{?dist} +Version: 3.20.2 +Release: 2%{?dist} Summary: Composable build system for OCaml and Reason # Dune itself is MIT. Some bundled libraries have a different license: +# BSD-2-Clause: +# - vendor/ocaml-blake3-mini # ISC: # - vendor/cmdliner -# - vendor/fmt # - vendor/notty -# - vendor/opam-0install # - vendor/sha # - vendor/uutf -# LGPL-2.0-only: +# LGPL-2.1-only: # - vendor/incremental-cycles -# LGPL-2.0-only WITH OCaml-LGPL-linking-exception +# LGPL-2.1-only WITH OCaml-LGPL-linking-exception # - vendor/ocaml-inotify # - vendor/opam # - vendor/opam-file-format # - vendor/re -# LGPL-2.1-or-later: -# - vendor/0install-solver +# LGPL-2.1-or-later +# - src/dune_pkg/opam_solver.* +# - src/sat/hash_set.* +# - src/sat/sat.* # MIT: # - vendor/build_path_prefix_map -# - vendor/fiber # - vendor/lwd # - vendor/spawn -License: MIT AND ISC AND LGPL-2.0-only AND LGPL-2.0-only WITH OCaml-LGPL-linking-exception AND LGPL-2.1-or-later +License: MIT AND BSD-2-Clause AND ISC AND LGPL-2.1-only AND LGPL-2.1-only WITH OCaml-LGPL-linking-exception AND LGPL-2.1-or-later URL: https://dune.build -VCS: https://github.com/ocaml/dune -Source0: %{vcs}/archive/%{version}/dune-%{version}.tar.gz +VCS: git:%{giturl}.git +Source: %{giturl}/archive/%{version}/dune-%{version}.tar.gz # When building without lwt, remove libraries that need it Patch0: %{name}-no-lwt.patch # Temporary workaround for broken debuginfo (rhbz#2168932) @@ -54,15 +57,18 @@ BuildRequires: emacs-nw BuildRequires: make BuildRequires: ocaml >= 4.08 BuildRequires: ocaml-compiler-libs +%if !0%{?rhel} BuildRequires: ocaml-csexp-devel >= 1.5.0 -BuildRequires: ocaml-pp-devel >= 1.2.0 +BuildRequires: ocaml-pp-devel >= 2.0.0 +%endif BuildRequires: ocaml-rpm-macros %if %{with docs} +BuildRequires: %{py3_dist furo} +BuildRequires: %{py3_dist myst-parser} BuildRequires: %{py3_dist sphinx} BuildRequires: %{py3_dist sphinx-copybutton} BuildRequires: %{py3_dist sphinx-design} -BuildRequires: %{py3_dist sphinx-rtd-theme} %endif %if %{with lwt} @@ -72,17 +78,14 @@ BuildRequires: ocaml-lwt-devel >= 5.6.0 # Dune has vendored deps to avoid dependency cycles. Upstream deliberately # does not support unbundling these dependencies. # See https://github.com/ocaml/dune/issues/220 -Provides: bundled(ocaml-0install-solver) = 2.18 Provides: bundled(ocaml-build-path-prefix-map) = 0.3 Provides: bundled(ocaml-cmdliner) = 1.2.0 -Provides: bundled(ocaml-fiber) = 3.7.0 -Provides: bundled(ocaml-fmt) = 0.8.10 Provides: bundled(ocaml-incremental-cycles) = 1e2030a5d5183d84561cde142eecca40e03db2a3 Provides: bundled(ocaml-inotify) = 2.3 Provides: bundled(ocaml-lwd) = 0.3 Provides: bundled(ocaml-notty) = 0.2.3 -Provides: bundled(ocaml-opam) = 2.2.0~alpha2 -Provides: bundled(ocaml-opam-0install) = 0.4.3 +Provides: bundled(ocaml-blake3-mini) = c6aa40e5f1973c2e6b736660ce2c8dcd3b3f9c9f +Provides: bundled(ocaml-opam) = 2.2.0 Provides: bundled(ocaml-opam-file-format) = 2.1.6 Provides: bundled(ocaml-re) = 1.11.0 Provides: bundled(ocaml-sha) = 1.15.4 @@ -97,9 +100,6 @@ Requires: ocaml-rpm-macros # The dune rules module requires Toploop Requires: ocaml-compiler-libs%{?_isa} -# Both packages install a binary named dune and an associated man page -Conflicts: wdune - # This can be removed when F42 reaches EOL Obsoletes: ocaml-fiber < 3.7.0 Obsoletes: ocaml-fiber-devel < 3.7.0 @@ -169,8 +169,11 @@ system, a mode to edit dune files, and flymake support for dune files. %package action-plugin Summary: API for writing dynamic dune actions License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-glob%{?_isa} = %{version}-%{release} +Requires: %{name}-rpc%{?_isa} = %{version}-%{release} +Requires: ocaml-dyn%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering%{?_isa} = %{version}-%{release} +Requires: ocaml-stdune%{?_isa} = %{version}-%{release} %description action-plugin This experimental library provides an API for writing dynamic Dune @@ -183,6 +186,14 @@ Summary: Development files for %{name}-action-plugin License: MIT Requires: %{name}-action-plugin%{?_isa} = %{version}-%{release} Requires: %{name}-glob-devel%{?_isa} = %{version}-%{release} +Requires: %{name}-rpc-devel%{?_isa} = %{version}-%{release} +Requires: ocaml-dyn-devel%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering-devel%{?_isa} = %{version}-%{release} +Requires: ocaml-stdune-devel%{?_isa} = %{version}-%{release} +%if !0%{?rhel} +Requires: ocaml-csexp-devel%{?_isa} +Requires: ocaml-pp-devel%{?_isa} +%endif %description action-plugin-devel The ocaml-dune-action-plugin-devel package contains libraries and @@ -192,7 +203,6 @@ ocaml-dune-action-plugin. %package build-info Summary: Embed build information in an executable License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} %description build-info The build-info library allows access to information about how an @@ -213,7 +223,6 @@ files for developing applications that use ocaml-dune-build-info. %package configurator Summary: Helper library for gathering system configuration License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: ocaml-stdune%{?_isa} = %{version}-%{release} %description configurator @@ -232,10 +241,9 @@ Summary: Development files for %{name}-configurator License: MIT Requires: %{name}-configurator%{?_isa} = %{version}-%{release} Requires: ocaml-stdune-devel%{?_isa} = %{version}-%{release} - -# This can be removed when F40 reaches EOL -Obsoletes: %{name}-devel < 2.9.1-4 -Provides: %{name}-devel = %{version}-%{release} +%if !0%{?rhel} +Requires: ocaml-csexp-devel%{?_isa} +%endif %description configurator-devel The ocaml-dune-configurator-devel package contains libraries and @@ -245,8 +253,9 @@ ocaml-dune-configurator. %package glob Summary: Parser and interpreter for dune language globs License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-private-libs%{?_isa} = %{version}-%{release} +Requires: ocaml-dyn%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering%{?_isa} = %{version}-%{release} Requires: ocaml-stdune%{?_isa} = %{version}-%{release} %description glob @@ -258,7 +267,12 @@ Summary: Development files for %{name}-glob License: MIT Requires: %{name}-glob%{?_isa} = %{version}-%{release} Requires: %{name}-private-libs-devel%{?_isa} = %{version}-%{release} +Requires: ocaml-dyn-devel%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering-devel%{?_isa} = %{version}-%{release} Requires: ocaml-stdune-devel%{?_isa} = %{version}-%{release} +%if !0%{?rhel} +Requires: ocaml-pp-devel%{?_isa} +%endif %description glob-devel The ocaml-dune-glob-devel package contains libraries and signature files @@ -267,8 +281,6 @@ for developing applications that use ocaml-dune-glob. %package private-libs Summary: Private dune libraries License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: ocaml-stdune%{?_isa} = %{version}-%{release} %description private-libs This package contains code that is shared between various dune-xxx @@ -279,7 +291,6 @@ no stability guarantee. Summary: Development files for %{name}-private-libs License: MIT Requires: %{name}-private-libs%{?_isa} = %{version}-%{release} -Requires: ocaml-dyn-devel%{?_isa} = %{version}-%{release} %description private-libs-devel The ocaml-dune-private-libs-devel package contains libraries and @@ -288,7 +299,8 @@ signature files for other dune packages. Do not use. %package rpc Summary: Communicate with dune using rpc License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: ocaml-dyn%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering%{?_isa} = %{version}-%{release} Requires: ocaml-stdune%{?_isa} = %{version}-%{release} Requires: ocaml-xdg%{?_isa} = %{version}-%{release} @@ -299,8 +311,14 @@ This package contains a library used to communicate with dune over rpc. Summary: Development files for %{name}-rpc License: MIT Requires: %{name}-rpc%{?_isa} = %{version}-%{release} +Requires: ocaml-dyn-devel%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering-devel%{?_isa} = %{version}-%{release} Requires: ocaml-stdune-devel%{?_isa} = %{version}-%{release} Requires: ocaml-xdg-devel%{?_isa} = %{version}-%{release} +%if !0%{?rhel} +Requires: ocaml-csexp-devel%{?_isa} +Requires: ocaml-pp-devel%{?_isa} +%endif %description rpc-devel The ocaml-dune-rpc-devel package contains libraries and signature files @@ -310,7 +328,6 @@ for developing applications that use ocaml-rpc. %package rpc-lwt Summary: Communicate with dune using rpc and Lwt License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-rpc%{?_isa} = %{version}-%{release} %description rpc-lwt @@ -322,7 +339,9 @@ Summary: Development files for %{name}-rpc-lwt License: MIT Requires: %{name}-rpc-lwt%{?_isa} = %{version}-%{release} Requires: %{name}-rpc-devel%{?_isa} = %{version}-%{release} +%if !0%{?rhel} Requires: ocaml-csexp-devel%{?_isa} +%endif Requires: ocaml-lwt-devel%{?_isa} %description rpc-lwt-devel @@ -333,7 +352,6 @@ files for developing applications that use ocaml-rpc-lwt. %package site Summary: Embed location information inside executables and libraries License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-private-libs%{?_isa} = %{version}-%{release} %description site @@ -353,7 +371,6 @@ for developing applications that use ocaml-dune-site. %package -n ocaml-chrome-trace Summary: Chrome trace event generation library License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} %description -n ocaml-chrome-trace Library to output trace data to a file in Chrome's trace_event format. @@ -372,7 +389,6 @@ developing applications that use ocaml-dyn. %package -n ocaml-dyn Summary: Dynamic types License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: ocaml-ordering%{?_isa} = %{version}-%{release} %description -n ocaml-dyn @@ -383,7 +399,6 @@ Summary: Development files for ocaml-dyn License: MIT Requires: ocaml-dyn%{?_isa} = %{version}-%{release} Requires: ocaml-ordering-devel%{?_isa} = %{version}-%{release} -Requires: ocaml-pp-devel%{?_isa} %description -n ocaml-dyn-devel The ocaml-dyn-devel package contains libraries and signature files for @@ -392,7 +407,6 @@ developing applications that use ocaml-dyn. %package -n ocaml-ocamlc-loc Summary: Parse OCaml compiler output into structured form License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: ocaml-dyn%{?_isa} = %{version}-%{release} %description -n ocaml-ocamlc-loc @@ -411,7 +425,6 @@ for developing applications that use ocaml-ocamlc-loc. %package -n ocaml-ordering Summary: Element ordering License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} %description -n ocaml-ordering Element ordering in OCaml. @@ -428,8 +441,8 @@ for developing applications that use ocaml-ordering. %package -n ocaml-stdune Summary: Dune's unstable standard library License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} Requires: ocaml-dyn%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering%{?_isa} = %{version}-%{release} %description -n ocaml-stdune This package contains Dune's unstable standard library. @@ -439,7 +452,11 @@ Summary: Development files for ocaml-stdune License: MIT Requires: ocaml-stdune%{?_isa} = %{version}-%{release} Requires: ocaml-dyn-devel%{?_isa} = %{version}-%{release} +Requires: ocaml-ordering-devel%{?_isa} = %{version}-%{release} +%if !0%{?rhel} Requires: ocaml-csexp-devel%{?_isa} +Requires: ocaml-pp-devel%{?_isa} +%endif %description -n ocaml-stdune-devel The ocaml-stdune-devel package contains libraries and signature files @@ -448,7 +465,6 @@ for developing applications that use ocaml-stdune. %package -n ocaml-xdg Summary: XDG Base Directory Specification License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} %description -n ocaml-xdg This package contains the XDG Base Directory Specification. @@ -470,11 +486,9 @@ rm -fr otherlibs/dune-rpc-lwt dune-rpc-lwt.opam %endif %autopatch -m1 -p1 -# Allow use of Sphinx 6 -sed -i 's/, < 6//'g doc/requirements.txt - %build ./configure \ + --prefix %{_prefix} \ --bindir %{_bindir} \ --datadir %{_datadir} \ --docdir %{_prefix}/doc \ @@ -490,8 +504,10 @@ sed -i 's/, < 6//'g doc/requirements.txt %endif # We also want the libraries +%if !0%{?rhel} # Do not use the bundled csexp and pp when building them rm -fr vendor/{csexp,pp} +%endif ./dune.exe build %{?_smp_mflags} --verbose --release @install %install @@ -588,6 +604,74 @@ cd - %files -n ocaml-xdg-devel -f .ofiles-xdg-devel %changelog +* Mon Oct 13 2025 Richard W.M. Jones - 3.20.2-2 +- OCaml 5.4.0 rebuild + +* Tue Sep 16 2025 Jerry James - 3.20.2-1 +- Version 3.20.2 + +* Mon Aug 25 2025 Jerry James - 3.20.1-1 +- Version 3.20.1 + +* Fri Aug 22 2025 Jerry James - 3.20.0-1 +- Version 3.20.0 + +* Wed Jul 23 2025 Jerry James - 3.19.1-2 +- Migrate tests from STI to TMT (rhbz#2382985) + +* Wed Jun 11 2025 Jerry James - 3.19.1-1 +- Version 3.19.1 + +* Fri May 23 2025 Jerry James - 3.19.0-1 +- Version 3.19.0 + +* Fri May 02 2025 Jerry James - 3.18.2-1 +- Version 3.18.2 + +* Fri Apr 18 2025 Jerry James - 3.18.1-1 +- Version 3.18.1 + +* Thu Apr 3 2025 Jerry James - 3.18.0-1 +- Version 3.18.0 + +* Thu Jan 23 2025 Jerry James - 3.17.2-1 +- Version 3.17.2 + +* Fri Jan 17 2025 Fedora Release Engineering - 3.17.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Dec 26 2024 Jerry James - 3.17.1-1 +- Version 3.17.1 +- Update License field for changes in vendored dependencies +- Drop upstreamed furo theme patch + +* Thu Oct 31 2024 Jerry James - 3.16.1-1 +- Version 3.16.1 + +* Thu Oct 10 2024 Charalampos Stratakis - 3.16.0-5 +- Use the furo theme for docs build + +* Tue Oct 08 2024 Richard W.M. Jones - 3.16.0-4 +- Rebuild for ocaml-lwt 5.8.0 + +* Thu Jul 18 2024 Fedora Release Engineering - 3.16.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jun 19 2024 Richard W.M. Jones - 3.16.0-2 +- OCaml 5.2.0 ppc64le fix + +* Mon Jun 17 2024 Jerry James - 3.16.0-1 +- Version 3.16.0 + +* Wed May 29 2024 Richard W.M. Jones - 3.15.3-2 +- OCaml 5.2.0 for Fedora 41 + +* Mon May 27 2024 Jerry James - 3.15.3-1 +- Version 3.15.3 + +* Wed May 15 2024 Richard W.M. Jones - 3.15.2-2 +- Use bundled ocaml-csexp and ocaml-pp (RHEL only) + * Wed Apr 24 2024 Jerry James - 3.15.2-1 - Version 3.15.2 diff --git a/plans.fmf b/plans.fmf new file mode 100644 index 0000000..9337313 --- /dev/null +++ b/plans.fmf @@ -0,0 +1,10 @@ +summary: Run all tests +discover: + how: fmf +execute: + how: tmt +prepare: + how: install + package: + - ocaml + - ocaml-dune diff --git a/sources b/sources index c1219ab..828aee6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (dune-3.15.2.tar.gz) = a15658e439984e0256aedd67b5107d8a347c73752566e8e76f5cf5ef807c3761747f5443bd042d0434a26f73ab18ab283eaf705f797ca31737b45530251210e6 +SHA512 (dune-3.20.2.tar.gz) = efb4376e03a3e760ee230c22ba8ac788623382437d9e3551fdd6bacdca1c6aa2db90246feb011d3d0e7ba3afa47161ebd06c80cfb24e357a82f7764bf003e355 diff --git a/tests/basic-test.sh b/tests/basic-test.sh new file mode 100755 index 0000000..a15afdf --- /dev/null +++ b/tests/basic-test.sh @@ -0,0 +1,6 @@ +#!/bin/bash - +set -e +set -x + +# Just check that dune works. +dune --version diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..a5f5b31 --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,2 @@ +summary: Basic test +test: ./basic-test.sh