guix: dune-build-system: Put dune into a reproducible release mode.
* guix/build/dune-build-system.scm (build,check): Replace the profile parameter with the appropriate release flags. * guix/build-system/dune.scm: Remove the profile parameter. * doc/guix.texi: Remove paragraph on profile parameter. Signed-off-by: Julien Lepiller <julien@lepiller.eu>master
parent
5c5e9d4e50
commit
f8f94cc544
|
@ -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
|
||||
|
|
|
@ -60,6 +60,17 @@
|
|||
#:allow-other-keys
|
||||
#:rest arguments)
|
||||
"Return a bag for NAME."
|
||||
|
||||
;; Flags that put dune into reproducible build mode.
|
||||
(define dune-release-flags
|
||||
(if (version>=? (package-version dune) "2.5.0")
|
||||
;; For dune >= 2.5.0 this is just --release.
|
||||
''("--release")
|
||||
;; --release does not exist before 2.5.0. Replace with flags compatible
|
||||
;; with our old ocaml4.07-dune (1.11.3)
|
||||
''("--root" "." "--ignore-promoted-rules" "--no-config"
|
||||
"--profile" "release")))
|
||||
|
||||
(define private-keywords
|
||||
'(#:source #:target #:dune #:findlib #:ocaml #:inputs #:native-inputs))
|
||||
|
||||
|
@ -79,7 +90,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 +102,7 @@
|
|||
(out-of-source? #t)
|
||||
(jbuild? #f)
|
||||
(package #f)
|
||||
(profile "release")
|
||||
(dune-release-flags ''())
|
||||
(tests? #t)
|
||||
(test-flags ''())
|
||||
(test-target "test")
|
||||
|
@ -129,7 +142,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
|
||||
|
|
|
@ -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)
|
||||
|
|
Reference in New Issue