Github messages for voidlinux
 help / color / mirror / Atom feed
From: kwshi <kwshi@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] New package: dune-2.8.5 (OCaml build system), `dune` build-style
Date: Tue, 22 Jun 2021 02:57:10 +0200	[thread overview]
Message-ID: <20210622005710.2GdJLDOiyzmC5V61F1fSLHeaMGSBXmSfiMLK3p6LD1I@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-31601@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 2180 bytes --]

There is an updated pull request by kwshi against master on the void-packages repository

https://github.com/kwshi/void-packages dune
https://github.com/void-linux/void-packages/pull/31601

New package: dune-2.8.5 (OCaml build system), `dune` build-style
- new package: dune-2.8.5
- common: add `dune` build-style
- new package: ocaml-csexp-1.5.1
- new package: ocaml-dune-configurator-2.8.5

<!-- Mark items with [x] where applicable -->

This PR adds the [Dune](https://dune.build/) OCaml build system, somewhat analogous to Cargo for Rust, Stack for Haskell, etc.; it is considered "the" modern OCaml build system & most widely used for OCaml projects. I've also defined a `dune.sh` build style for simplifying OCaml source builds. To make sure it works/demo its use, I've also added two packages `ocaml-csexp` and `ocaml-dune-configurator`, which build using `build_style=dune`.

#### General

- [x] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?

- [ ] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!--
#### Does it build and run successfully?
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/31601.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-dune-31601.patch --]
[-- Type: text/x-diff, Size: 8186 bytes --]

From 9eed0df5792f098fa00ec811b42cb7adbab7cd33 Mon Sep 17 00:00:00 2001
From: Kye Shi <shi.kye@gmail.com>
Date: Mon, 21 Jun 2021 14:28:15 -0700
Subject: [PATCH 1/5] new package: dune-2.8.5

---
 srcpkgs/dune/template | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 srcpkgs/dune/template

diff --git a/srcpkgs/dune/template b/srcpkgs/dune/template
new file mode 100644
index 000000000000..c8a78e86a3c3
--- /dev/null
+++ b/srcpkgs/dune/template
@@ -0,0 +1,19 @@
+# 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 <shi.kye@gmail.com>"
+license="MIT"
+homepage="https://dune.build/"
+distfiles="https://github.com/ocaml/dune/archive/refs/tags/$version.tar.gz"
+checksum="35ea0326509d6964b4b0f56b86e88cba9b3304f9b6e6322fe98257f73a57fc30"
+nocross="yes"
+
+post_install() {
+	mv -t "$DESTDIR/usr/share" "$DESTDIR/usr"/{doc,man}
+	vlicense "LICENSE.md"
+}

From 3b77956449015ccc53c91657cbc94ab8e4ec8efc Mon Sep 17 00:00:00 2001
From: Kye Shi <shi.kye@gmail.com>
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 f511648e973d6bc536e092f40df13a5d46321815 Mon Sep 17 00:00:00 2001
From: Kye Shi <shi.kye@gmail.com>
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 <shi.kye@gmail.com>"
+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 05909a7afd529a109147372ad7737483829a8e82 Mon Sep 17 00:00:00 2001
From: Kye Shi <shi.kye@gmail.com>
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 <shi.kye@gmail.com>"
+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 7e84df1877a04ce71b6fcb7230ab82f89a36dcc0 Mon Sep 17 00:00:00 2001
From: Kye Shi <shi.kye@gmail.com>
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

  parent reply	other threads:[~2021-06-22  0:57 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-22  0:34 [PR PATCH] " kwshi
2021-06-22  0:36 ` [PR PATCH] [Updated] " kwshi
2021-06-22  0:57 ` kwshi [this message]
2021-06-22  1:02 ` kwshi
2021-06-22  2:18 ` kwshi
2021-06-22  2:34 ` kwshi
2021-06-22  2:36 ` kwshi
2021-06-22  2:41 ` kwshi
2021-06-22  2:45 ` kwshi
2021-06-22  2:54 ` [PR PATCH] [Updated] New package: dune-2.8.5 (OCaml builder), " kwshi
2021-06-22 19:56 ` kwshi
2021-12-30  1:46 ` kwshi
2022-05-23  2:12 ` common/build-style: add `dune` (OCaml builder) github-actions
2022-06-06  2:14 ` [PR PATCH] [Closed]: " github-actions

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210622005710.2GdJLDOiyzmC5V61F1fSLHeaMGSBXmSfiMLK3p6LD1I@z \
    --to=kwshi@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).