From: pukkamustard <pukkamustard@posteo.net>
To: Julien Lepiller <julien@lepiller.eu>
Cc: 49868@debbugs.gnu.org
Subject: [bug#49868] [PATCH 0/2] guix: dune-build-system: Add a profile parameter.
Date: Wed, 08 Sep 2021 08:24:19 +0000 [thread overview]
Message-ID: <86h7evxyf2.fsf@posteo.net> (raw)
In-Reply-To: <20210908000321.662876ee@tachikoma.lepiller.eu>
[-- Attachment #1: Type: text/plain, Size: 1539 bytes --]
Julien Lepiller <julien@lepiller.eu> writes:
>>
>> 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---
>
> I suppose these additional flags are not available in dune 1.11?
>
No, unfortunately the flags are not available in 1.11. We need to check
version and use appropriate flags.
>>
>> 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?
>
> Yeah, that sounds good.
Attached a patch that does that. ocaml4.07 packages are building again.
Unsure about the double quote things and if there is a better way to
check versions.
> Another solution would be to get rid of
> ocaml4.07, but that's our future bootstrap path (as this is the only
> bootstrapped version currently), so we will need it anyway...
Yup, good to keep it.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-guix-dune-build-system-Put-dune-into-a-reproducible-.patch --]
[-- Type: text/x-patch, Size: 4844 bytes --]
From bb6bf9e12b81165405da6d5872c18f63e425742d Mon Sep 17 00:00:00 2001
From: pukkamustard <pukkamustard@posteo.net>
Date: Tue, 7 Sep 2021 13:41:12 +0200
Subject: [PATCH] guix: dune-build-system: Put dune into a reproducible release
mode.
* guix/build/dune-build-system.scm (build,check): Remove the profile parameter
and use the release flag.
* guix/build-system/dune.scm: Remove the profile parameter.
* doc/guix.texi: Remove paragraph on profile parameter.
---
doc/guix.texi | 5 -----
guix/build-system/dune.scm | 17 ++++++++++++++---
guix/build/dune-build-system.scm | 15 +++++++++------
3 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 36a0c7f5ec..a056edc192 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -7735,11 +7735,6 @@ is useful when a package contains multiple packages and you want to build
only one of them. This is equivalent to passing the @code{-p} argument to
@code{dune}.
-The @code{#:profile} parameter can be passed to specify the
-@uref{https://dune.readthedocs.io/en/stable/dune-files.html#profile,
-dune build profile}. This is equivalent to passing the @code{--profile}
-argument to @code{dune}. Its default value is @code{"release"}.
-
@end defvr
@defvr {Scheme Variable} go-build-system
diff --git a/guix/build-system/dune.scm b/guix/build-system/dune.scm
index 1a64cf9b75..f52bbd0257 100644
--- a/guix/build-system/dune.scm
+++ b/guix/build-system/dune.scm
@@ -60,6 +60,15 @@
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
+
+ ;; Flags that put dune into reproducible build mode.
+ (define dune-release-flags
+ (if (equal? (package-version dune) "1.11.3")
+ ''("--root" "." "--ignore-promoted-rules" "--no-config"
+ "--profile" "release")
+ ;; For dune >= 2.5.0 this is just --release.
+ ''("--release")))
+
(define private-keywords
'(#:source #:target #:dune #:findlib #:ocaml #:inputs #:native-inputs))
@@ -79,7 +88,9 @@
(build-inputs `(("dune" ,dune)
,@(bag-build-inputs base)))
(build dune-build)
- (arguments (strip-keyword-arguments private-keywords arguments))))))
+ (arguments (append
+ `(#:dune-release-flags ,dune-release-flags)
+ (strip-keyword-arguments private-keywords arguments)))))))
(define* (dune-build store name inputs
#:key (guile #f)
@@ -89,7 +100,7 @@
(out-of-source? #t)
(jbuild? #f)
(package #f)
- (profile "release")
+ (dune-release-flags ''())
(tests? #t)
(test-flags ''())
(test-target "test")
@@ -129,7 +140,7 @@ provides a 'setup.ml' file as its build system."
#:out-of-source? ,out-of-source?
#:jbuild? ,jbuild?
#:package ,package
- #:profile ,profile
+ #:dune-release-flags ,dune-release-flags
#:tests? ,tests?
#:test-target ,test-target
#:install-target ,install-target
diff --git a/guix/build/dune-build-system.scm b/guix/build/dune-build-system.scm
index 6a0c2593ac..e9ccc71057 100644
--- a/guix/build/dune-build-system.scm
+++ b/guix/build/dune-build-system.scm
@@ -32,23 +32,26 @@
;; Code:
(define* (build #:key (build-flags '()) (jbuild? #f)
- (use-make? #f) (package #f)
- (profile "release") #:allow-other-keys)
+ (use-make? #f) (package #f) (dune-release-flags '())
+ #:allow-other-keys)
"Build the given package."
(let ((program (if jbuild? "jbuilder" "dune")))
(apply invoke program "build" "@install"
- (append (if package (list "-p" package) '())
- `("--profile" ,profile)
+ (append (if package (list "-p" package)
+ dune-release-flags)
build-flags)))
#t)
(define* (check #:key (test-flags '()) (test-target "test") tests?
- (jbuild? #f) (package #f) #:allow-other-keys)
+ (jbuild? #f) (package #f) (dune-release-flags '())
+ #:allow-other-keys)
"Test the given package."
(when tests?
(let ((program (if jbuild? "jbuilder" "dune")))
(apply invoke program "runtest" test-target
- (append (if package (list "-p" package) '()) test-flags))))
+ (append (if package (list "-p" package)
+ dune-release-flags)
+ test-flags))))
#t)
(define* (install #:key outputs (install-target "install") (jbuild? #f)
--
2.33.0
next prev parent reply other threads:[~2021-09-08 8:35 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-04 8:04 [bug#49868] [PATCH 0/2] guix: dune-build-system: Add a profile parameter pukkamustard
2021-08-04 8:08 ` [bug#49868] [PATCH 1/2] " pukkamustard
2021-08-04 8:08 ` [bug#49868] [PATCH 2/2] gnu: ocaml4.07-base: Remove unnecessary arguments pukkamustard
2021-08-09 2:17 ` [bug#49868] [PATCH 0/2] guix: dune-build-system: Add a profile parameter Julien Lepiller
2021-08-09 7:17 ` pukkamustard
2021-08-09 7:19 ` [bug#49868] [PATCH v2 1/2] " pukkamustard
2021-08-09 7:19 ` [bug#49868] [PATCH v2 2/2] gnu: ocaml4.07-base: Remove unnecessary arguments pukkamustard
2021-08-20 22:09 ` bug#49868: [PATCH 0/2] guix: dune-build-system: Add a profile parameter Julien Lepiller
2021-08-24 6:52 ` [bug#49868] " pukkamustard
2021-08-24 7:13 ` pukkamustard
2021-08-24 7:51 ` pukkamustard
2021-09-07 9:33 ` pukkamustard
2021-09-07 11:06 ` Julien Lepiller
2021-09-07 11:46 ` pukkamustard
2021-09-07 13:03 ` Julien Lepiller
2021-09-07 18:11 ` pukkamustard
2021-09-07 22:03 ` Julien Lepiller
2021-09-08 8:24 ` pukkamustard [this message]
2021-09-08 11:45 ` Julien Lepiller
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
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86h7evxyf2.fsf@posteo.net \
--to=pukkamustard@posteo.net \
--cc=49868@debbugs.gnu.org \
--cc=julien@lepiller.eu \
/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.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).