From 249c48d6daddcad8fd0cec4a364f154302fa2769 Mon Sep 17 00:00:00 2001 From: Kye Shi Date: Mon, 21 Jun 2021 14:28:15 -0700 Subject: [PATCH 1/5] new package: dune-2.8.5 --- srcpkgs/dune/template | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 srcpkgs/dune/template diff --git a/srcpkgs/dune/template b/srcpkgs/dune/template new file mode 100644 index 000000000000..872998cc2519 --- /dev/null +++ b/srcpkgs/dune/template @@ -0,0 +1,22 @@ +# Template file for 'dune' +pkgname=dune +version=2.8.5 +revision=1 +build_style="gnu-makefile" +make_build_target="release" +makedepends="ocaml" +short_desc="Composable build system for OCaml" +maintainer="Kye Shi " +license="MIT" +homepage="https://dune.build/" +distfiles="https://github.com/ocaml/dune/archive/refs/tags/$version.tar.gz" +checksum="35ea0326509d6964b4b0f56b86e88cba9b3304f9b6e6322fe98257f73a57fc30" +nocross="yes" +# Dune tests depend on other packages (e.g. `ocaml-csexp`) which must be built +# using Dune; requiring checks on Dune introduces circular dependencies. +make_check="no" + +post_install() { + mv -t "$DESTDIR/usr/share" "$DESTDIR/usr"/{doc,man} + vlicense "LICENSE.md" +} From 19dfba7cc4e22cb6fd32fea803766ea8fd5a3130 Mon Sep 17 00:00:00 2001 From: Kye Shi Date: Mon, 21 Jun 2021 17:25:26 -0700 Subject: [PATCH 2/5] common: add `dune` build-style --- common/build-style/dune.sh | 24 ++++++++++++++++++++++++ common/environment/build-style/dune.sh | 1 + 2 files changed, 25 insertions(+) create mode 100644 common/build-style/dune.sh create mode 100644 common/environment/build-style/dune.sh diff --git a/common/build-style/dune.sh b/common/build-style/dune.sh new file mode 100644 index 000000000000..17705f8c2106 --- /dev/null +++ b/common/build-style/dune.sh @@ -0,0 +1,24 @@ +# +# This helper is for templates using OCaml's dune build system. +# +do_build() { + : ${make_build_target:=@install} + dune build --release $make_build_args $make_build_target +} + +do_check() { + : ${make_check_target:=@runtest} + dune build $make_check_args $make_check_target +} + +do_install() { + dune install --prefix '/usr' --destdir "$DESTDIR" $make_install_args $make_install_target + if [ -e "$DESTDIR/usr/doc" ]; then + mkdir -p "$DESTDIR/usr/share" + mv "$DESTDIR/usr/doc" "$DESTDIR/usr/share" + fi + if [ -e "$DESTDIR/usr/man" ]; then + mkdir -p "$DESTDIR/usr/share" + mv "$DESTDIR/usr/man" "$DESTDIR/usr/share" + fi +} diff --git a/common/environment/build-style/dune.sh b/common/environment/build-style/dune.sh new file mode 100644 index 000000000000..36cf08537c55 --- /dev/null +++ b/common/environment/build-style/dune.sh @@ -0,0 +1 @@ +hostmakedepends+=" ocaml dune" From 05e59f045b128313fdccf2f61df93496df2075e4 Mon Sep 17 00:00:00 2001 From: Kye Shi Date: Mon, 21 Jun 2021 17:26:28 -0700 Subject: [PATCH 3/5] new package: ocaml-csexp-1.5.1 --- srcpkgs/ocaml-csexp/template | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 srcpkgs/ocaml-csexp/template diff --git a/srcpkgs/ocaml-csexp/template b/srcpkgs/ocaml-csexp/template new file mode 100644 index 000000000000..9507f7a10ce9 --- /dev/null +++ b/srcpkgs/ocaml-csexp/template @@ -0,0 +1,17 @@ +# Template file for 'ocaml-csexp' +pkgname=ocaml-csexp +version=1.5.1 +revision=1 +wrksrc="csexp-$version" +build_style="dune" +short_desc="Minimal support for Canonical S-expressions" +maintainer="Kye Shi " +license="MIT" +homepage="https://opam.ocaml.org/packages/csexp/" +distfiles="https://github.com/ocaml-dune/csexp/archive/refs/tags/$version.tar.gz" +checksum="ffab41b0b0f65ade305043205229a7649591195cbe86e24f2c254e9dc5b14a34" +nocross="yes" + +post_install() { + vlicense "LICENSE.md" +} From 0b88cd9733cd45e42e5c26adace57a4c424c7f11 Mon Sep 17 00:00:00 2001 From: Kye Shi Date: Mon, 21 Jun 2021 17:26:41 -0700 Subject: [PATCH 4/5] new package: ocaml-dune-configurator-2.8.5 --- srcpkgs/ocaml-dune-configurator/template | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 srcpkgs/ocaml-dune-configurator/template diff --git a/srcpkgs/ocaml-dune-configurator/template b/srcpkgs/ocaml-dune-configurator/template new file mode 100644 index 000000000000..47de83684ab0 --- /dev/null +++ b/srcpkgs/ocaml-dune-configurator/template @@ -0,0 +1,20 @@ +# Template file for 'ocaml-dune-configurator' +pkgname=ocaml-dune-configurator +version=2.8.5 +revision=1 +wrksrc="dune-$version" +build_style="dune" +make_build_args="-p dune-configurator" +make_install_target="dune-configurator" +makedepends="ocaml-csexp" +short_desc="Helper library for gathering system information" +maintainer="Kye Shi " +license="MIT" +homepage="https://dune.build/" +distfiles="https://github.com/ocaml/dune/archive/refs/tags/$version.tar.gz" +checksum="35ea0326509d6964b4b0f56b86e88cba9b3304f9b6e6322fe98257f73a57fc30" +nocross="yes" + +post_install() { + vlicense "LICENSE.md" +} From 2417ebe54d08b61134dcb626cef2772c7abfcd2f Mon Sep 17 00:00:00 2001 From: Kye Shi Date: Mon, 21 Jun 2021 17:57:02 -0700 Subject: [PATCH 5/5] Manual.md: document `dune` build-style --- Manual.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Manual.md b/Manual.md index d743276d3f04..5f14948fd3e7 100644 --- a/Manual.md +++ b/Manual.md @@ -584,18 +584,22 @@ phase if `${build_style}` is set to `configure`, `gnu-configure` or or `gnu-makefile`, this is the target passed to `${make_cmd}` in the build phase; when unset, it defaults to `all`. If `${build_style}` is `python3-pep517`, this is the path of the package directory that should be built as a Python wheel; when unset, defaults to `.` (the current -directory with respect to the build). +directory with respect to the build). If `${build_style}` is `dune`, this is the target passed to +`dune build` in the build phase; when unset, defaults to `@install`. - `make_check_target` The target to be passed in to `${make_cmd}` at the check phase if `${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile` -build methods. By default set to `check`. +build methods; by default set to `check`. If `${build_style}` is `dune`, this +is the target passed to `dune build` for running tests; when unset, defaults to `@runtest`. - `make_install_target` The installation target. When `${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile`, this is the target passed to `${make_command}` in the install phase; when unset, it defaults to `install`. If `${build_style}` is `python-pep517`, this is the path of the Python wheel produced by the build phase that will be installed; when unset, the `python-pep517` build style will look for a wheel matching the package name and version in the -current directory with respect to the install. +current directory with respect to the install. If `${build_style}` is `dune`, this is the list +of OCaml packages to install, specified as a comma-separated list; when unset, all packages +defined in the source project will be installed. - `patch_args` The arguments to be passed in to the `patch(1)` command when applying patches to the package sources during `do_patch()`. Patches are stored in @@ -914,6 +918,15 @@ the default `build`. - `configure` For packages that use non-GNU configure scripts, at least `--prefix=/usr` should be passed in via `configure_args`. +- `dune` For packages written in OCaml that use Dune for building. +Arguments to `dune build` can be passed via `make_build_args`, and the build target +(default `@install`) can be overridden via `make_build_target`. Arguments to +`dune install` can be passed via `make_install_args`, and the list of packages to +install (defaults to all packages defined in the project) can be overridden via +`make_install_target` as a comma-separated list (e.g. `containers,containers-data`). +Tests are run using `dune build @runtest`; the target (default `@runtest`) can be +overridden via `make_check_target` and arguments passed via `make_check_args`. + - `fetch` For packages that only fetch files and are installed as is via `do_install()`. - `gnu-configure` For packages that use GNU configure scripts, additional configuration