guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/02: guix: dune-build-system: Add a package parameter.


From: guix-commits
Subject: 01/02: guix: dune-build-system: Add a package parameter.
Date: Sat, 23 Mar 2019 17:59:13 -0400 (EDT)

roptat pushed a commit to branch master
in repository guix.

commit 78b3748c1c5446f19e7a74ec424d61a7826fc843
Author: Julien Lepiller <address@hidden>
Date:   Sat Mar 23 19:18:31 2019 +0100

    guix: dune-build-system: Add a package parameter.
    
    * guix/build-system/dune.scm: Add a package parameter.
    * guix/build/dune.scm (build, test, install): Use it.
    * doc/guix.texi: Document it.
---
 doc/guix.texi                    |  5 +++++
 guix/build-system/dune.scm       |  2 ++
 guix/build/dune-build-system.scm | 17 ++++++++++-------
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index d10fbce..6e8ce3c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5816,6 +5816,11 @@ list of flags passed to the @code{dune} command during 
the build.
 The @code{#:jbuild?} parameter can be passed to use the @code{jbuild}
 command instead of the more recent @code{dune} command while building
 a package.  Its default value is @code{#f}.
+
+The @code{#:package} parameter can be passed to specify a package name, which
+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
address@hidden
 @end defvr
 
 @defvr {Scheme Variable} go-build-system
diff --git a/guix/build-system/dune.scm b/guix/build-system/dune.scm
index 8bd41c8..6a2f3d1 100644
--- a/guix/build-system/dune.scm
+++ b/guix/build-system/dune.scm
@@ -87,6 +87,7 @@
                      (build-flags ''())
                      (out-of-source? #t)
                      (jbuild? #f)
+                     (package #f)
                      (tests? #t)
                      (test-flags ''())
                      (test-target "test")
@@ -125,6 +126,7 @@ provides a 'setup.ml' file as its build system."
                    #:build-flags ,build-flags
                    #:out-of-source? ,out-of-source?
                    #:jbuild? ,jbuild?
+                   #:package ,package
                    #: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 00b0c7c..7e2ec1e 100644
--- a/guix/build/dune-build-system.scm
+++ b/guix/build/dune-build-system.scm
@@ -31,27 +31,30 @@
 ;; Code:
 
 (define* (build #:key (build-flags '()) (jbuild? #f)
-                (use-make? #f) #:allow-other-keys)
+                (use-make? #f) (package #f) #:allow-other-keys)
   "Build the given package."
   (let ((program (if jbuild? "jbuilder" "dune")))
-    (apply invoke program "build" "@install" build-flags))
+    (apply invoke program "build" "@install"
+           (append (if package (list "-p" package) '()) build-flags)))
   #t)
 
 (define* (check #:key (test-flags '()) (test-target "test") tests?
-                  (jbuild? #f) #:allow-other-keys)
+                  (jbuild? #f) (package #f) #:allow-other-keys)
   "Test the given package."
   (when tests?
     (let ((program (if jbuild? "jbuilder" "dune")))
-      (apply invoke program "runtest" test-target test-flags)))
+      (apply invoke program "runtest" test-target
+             (append (if package (list "-p" package) '()) test-flags))))
   #t)
 
 (define* (install #:key outputs (install-target "install") (jbuild? #f)
-                  #:allow-other-keys)
+                  (package #f) #:allow-other-keys)
   "Install the given package."
   (let ((out (assoc-ref outputs "out"))
         (program (if jbuild? "jbuilder" "dune")))
-    (invoke program install-target "--prefix" out "--libdir"
-            (string-append out "/lib/ocaml/site-lib")))
+    (apply invoke program install-target "--prefix" out "--libdir"
+           (string-append out "/lib/ocaml/site-lib")
+           (if package (list package) '())))
   #t)
 
 (define %standard-phases



reply via email to

[Prev in Thread] Current Thread [Next in Thread]