From afb249f212bb0d004b8ccd813a17aa8c5950cf12ca8ecc312aab4ed0ccc81719 Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Sat, 9 Apr 2022 19:49:56 +0000 Subject: [PATCH] - Adjust bootstrap of dune. Build the dune binary in the main package, and all libraries in the devel subpackage. This reduces the number of packages, and fixes dune --version output. - Remove subpackage bootstrap OBS-URL: https://build.opensuse.org/package/show/devel:languages:ocaml/ocaml-dune?expand=0&rev=80 --- _multibuild | 2 +- ocaml-dune.changes | 8 ++++ ocaml-dune.spec | 93 +++++++++++++++++++++++++++------------------- 3 files changed, 64 insertions(+), 39 deletions(-) diff --git a/_multibuild b/_multibuild index db67352..d5bfa3b 100644 --- a/_multibuild +++ b/_multibuild @@ -1,3 +1,3 @@ -bootstrap +devel diff --git a/ocaml-dune.changes b/ocaml-dune.changes index e3b3270..fdff1ce 100644 --- a/ocaml-dune.changes +++ b/ocaml-dune.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat Apr 9 12:34:56 UTC 2022 - ohering@suse.de + +- Adjust bootstrap of dune. Build the dune binary in the main + package, and all libraries in the devel subpackage. This reduces + the number of packages, and fixes dune --version output. +- Remove subpackage bootstrap + ------------------------------------------------------------------- Mon Apr 4 04:04:04 UTC 2022 - ohering@suse.de diff --git a/ocaml-dune.spec b/ocaml-dune.spec index 00d7860..763e79b 100644 --- a/ocaml-dune.spec +++ b/ocaml-dune.spec @@ -28,41 +28,50 @@ Name: %pkg%nsuffix Version: 3.0.3 Release: 0 %{?ocaml_preserve_bytecode} -Summary: A composable build system for OCaml License: MIT Group: Development/Languages/OCaml BuildRoot: %_tmppath/%name-%version-build URL: https://opam.ocaml.org/packages/dune Source0: %pkg-%version.tar.xz Requires: ocamlfind(compiler-libs) -BuildRequires: ocaml-rpm-macros >= 20220222 +BuildRequires: ocaml-rpm-macros >= 20220409 BuildRequires: ocaml(ocaml_base_version) >= 4.08 %if "%build_flavor" == "" -BuildRequires: ocaml-dune-bootstrap = %version +Provides: %name-bootstrap = %version-%release +Provides: %name-bootstrap-devel = %version-%release +Obsoletes: %name-bootstrap < %version-%release +Obsoletes: %name-bootstrap-devel < %version-%release +Summary: A composable build system for OCaml +%description +This package provides the dune binary and the documentation. +%endif +%if "%build_flavor" == "devel" +Summary: Various libraries +Group: Development/Languages/OCaml +BuildRequires: ocaml-dune = %version BuildRequires: ocamlfind(csexp) BuildRequires: ocamlfind(pp) BuildRequires: ocamlfind(result) Provides: ocaml-dune-configurator == %version-%release Obsoletes: ocaml-dune-configurator < %version-%release -%description -A composable build system for OCaml -%endif -%if "%build_flavor" == "bootstrap" -%description -This package provides a minimal dune binary in %ocaml_dune_bootstrap_directory -to build a few number of packages to bootstrap the full dune package. -%endif - -%package devel -Summary: Development files for %name -Group: Development/Languages/OCaml Provides: ocaml-dune-configurator-devel == %version-%release Obsoletes: ocaml-dune-configurator-devel < %version-%release -Requires: %name = %version -%description devel -The %name-devel package contains libraries and signature files for -developing applications that use %name. +%description +This package provides various libraries: +dune-action-plugin +dune-build-info +dune-configurator +dune-glob +dune-private-libs +dune-rpc +dune-site +dyn +fiber +ordering +stdune +xdg +%endif %prep %setup -q -n %pkg-%version @@ -75,7 +84,9 @@ ocaml configure.ml \ '--mandir=%_mandir' \ %nil # -%if "%build_flavor" == "bootstrap" +%if "%build_flavor" == "" +dune_release_pkgs='dune' +%ocaml_dune_setup jobs="-j `/usr/bin/getconf _NPROCESSORS_ONLN`" ocaml bootstrap.ml --verbose ${jobs} ./dune.exe build \ @@ -85,13 +96,12 @@ ocaml bootstrap.ml --verbose ${jobs} --verbose \ ${jobs} \ %nil -# leaving early -exit 0 +mkdir .bin +ln -s ../dune.exe .bin/dune %endif # -%if "%build_flavor" == "" +%if "%build_flavor" == "devel" pkgs=( -dune dune-action-plugin dune-build-info dune-configurator @@ -108,26 +118,35 @@ xdg dune_release_pkgs="${pkgs[*]}" dune_release_pkgs="${dune_release_pkgs// /,}" # -export PATH="%ocaml_dune_bootstrap_directory:$PATH" %ocaml_dune_setup %ocaml_dune_build %endif %install -%if "%build_flavor" == "bootstrap" -mkdir -vp %buildroot%ocaml_dune_bootstrap_directory -cp -avL dune.exe %buildroot%ocaml_dune_bootstrap_directory/dune -tee %name.files <<'_EOF_' -%ocaml_dune_bootstrap_directory -%%doc CHANGES.md -_EOF_ -echo '%dir %ocaml_dune_bootstrap_directory' > %name.files.devel +# use the just built dune +PATH="$PWD/.bin:$PATH" +%ocaml_dune_install +%if "%build_flavor" == "devel" +# the META file removed below belongs to this package, to provide dune.configurator +mkdir -vp %buildroot%ocaml_standard_library/dune +tee %buildroot%ocaml_standard_library/dune/META <<_EOM_ +package "configurator" ( + directory = "configurator" + version = "%version" + requires = "dune-configurator" +) +_EOM_ +%endif +%if "%build_flavor" == "" +# the installed META file provides and requires 'dune-configurator' +rm -rfv %buildroot%ocaml_standard_library %endif # -%if "%build_flavor" == "" -export PATH="%ocaml_dune_bootstrap_directory:$PATH" -%ocaml_dune_install %ocaml_create_file_list +# +%if "%build_flavor" == "devel" +# package everything, including the cmxs files +tee -a %name.files < %name.files.devel %endif %files -f %name.files @@ -140,7 +159,5 @@ export PATH="%ocaml_dune_bootstrap_directory:$PATH" %_datadir/emacs %endif -%files devel -f %name.files.devel -%defattr(-,root,root,-) %changelog