Subject: Re: [bug#49868] [PATCH 0/2] guix: dune-build-system: Add a profile parameter.

From: pukkamustard <[email-masked]>
Date: Tue, 07 Sep 2021 18:11:24 +0000

Julien Lepiller <[email-masked]> writes:

> Unfortunately, this is breaking our ocaml4.07-* packages, because the
> --release flag doesn't exist in the version we use for ocaml4.07-dune.

Whoops. Seems like the --release flag was only added in dune 2.5.0
(https://github.com/ocaml/dune/blob/main/CHANGES.md#250-09042020;
ocaml4.07-dune is at 1.11.3).

> I think the easiest would be to add a flag #:release? and set it to #f
> in package-with-ocaml4.07.

That would work. But I think it would be better if we built everything
in release mode.

Unfortunately the way to do that with old dune is by expclity with '-p
PACKAGE1,PACKAGE2'. That means we need to rename the #:package argument
to #:packages, allow it to take a list and add explicit packages to all
OCaml4.07 packages.

Another way would be to write-out the flags for which -p and --release
are short-hand for. Unfortunately this is different in dune 2.9.0 and
1.11.3 (taken from the --help):

2.9.0:
--8<---------------cut here---------------start------------->8---
--root . --ignore-promoted-rules --no-config --profile release
  --always-show-command-line --promote-install-files --default-target
  @install
--8<---------------cut here---------------end--------------->8---

1.11.3:
--8<---------------cut here---------------start------------->8---
--root . --ignore-promoted-rules --no-config ----profile release
--8<---------------cut here---------------end--------------->8---

Can we check the version of dune in dune-build-system and either use
--release or the set of 1.11.3 flags?

I just tried doing this in (guix build dune-build-system). Didn't work
as I couldn't use (guix package). After reading up, I guess this needs
to be done in (guix build-system dune) and lowered down as an argument -
maybe as 'dune-release-flags'? Would that be ok?