guix-commits
[Top][All Lists]
Advanced

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

01/06: self: Add 'guix-daemon' to the result.


From: Ludovic Courtès
Subject: 01/06: self: Add 'guix-daemon' to the result.
Date: Thu, 14 Jun 2018 17:36:15 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit baed923682802b7281bd68274f080d2bb55d3eff
Author: Ludovic Courtès <address@hidden>
Date:   Thu Jun 14 21:59:23 2018 +0200

    self: Add 'guix-daemon' to the result.
    
    * gnu/packages/package-management.scm (guix-daemon): New variable.
    * guix/self.scm (whole-package): Add #:daemon and honor it.
    (compiled-guix): Pass #:daemon to 'whole-package'.
---
 gnu/packages/package-management.scm | 47 +++++++++++++++++++++++++++++++++++++
 guix/self.scm                       | 15 +++++++++++-
 2 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/package-management.scm 
b/gnu/packages/package-management.scm
index 24cf3ad..6d99cdd 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -294,6 +294,53 @@ the Nix package manager.")
 ;; Alias for backward compatibility.
 (define-public guix-devel guix)
 
+(define-public guix-daemon
+  ;; This package is for internal consumption: it allows us to quickly build
+  ;; the 'guix-daemon' program and use that in (guix self), used by 'guix
+  ;; pull'.
+  (package
+    (inherit guix)
+    (properties `((hidden? . #t)))
+    (name "guix-daemon")
+
+    ;; Use a minimum set of dependencies.
+    (native-inputs
+     (fold alist-delete (package-native-inputs guix)
+           '("po4a" "graphviz" "help2man")))
+    (inputs
+     `(("gnutls" ,gnutls)
+       ("guile-git" ,guile-git)
+       ,@(package-inputs guix)))
+    (propagated-inputs '())
+
+    (arguments
+     (substitute-keyword-arguments (package-arguments guix)
+       ((#:tests? #f #f)
+        #f)
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (replace 'build
+             (lambda _
+               (invoke "make" "nix/libstore/schema.sql.hh")
+               (invoke "make" "-j" (number->string
+                                    (parallel-job-count))
+                       "guix-daemon")))
+           (delete 'copy-bootstrap-guile)
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (invoke "make" "install-binPROGRAMS"
+                       "install-nodist_pkglibexecSCRIPTS")
+
+               ;; We need to tell 'guix-daemon' which 'guix' command to use.
+               ;; Here we use a questionable hack where we hard-code
+               ;; "~root/.config", which could be wrong (XXX).
+               (let ((out (assoc-ref outputs "out")))
+                 (substitute* (find-files (string-append out "/libexec"))
+                   (("exec \".*/bin/guix\"")
+                    "exec ~root/.config/current/bin/guix"))
+                 #t)))
+           (delete 'wrap-program)))))))
+
 (define-public guile2.0-guix
   (package
     (inherit guix)
diff --git a/guix/self.scm b/guix/self.scm
index 3023ae3..1306df4 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -385,7 +385,7 @@ load path."
 (define* (whole-package name modules dependencies
                         #:key
                         (guile-version (effective-version))
-                        info
+                        info daemon
                         (command (guix-command modules
                                                #:dependencies dependencies
                                                #:guile-version guile-version)))
@@ -401,6 +401,10 @@ the modules, and DEPENDENCIES, a list of packages depended 
on.  COMMAND is the
                        (symlink #$command
                                 (string-append #$output "/bin/guix"))
 
+                       (when #$daemon
+                         (symlink (string-append #$daemon "/bin/guix-daemon")
+                                  (string-append #$output "/bin/guix-daemon")))
+
                        (let ((modules (string-append #$output
                                                      "/share/guile/site/"
                                                      (effective-version)))
@@ -611,6 +615,15 @@ the modules, and DEPENDENCIES, a list of packages depended 
on.  COMMAND is the
                                       #:guile-version guile-version)))
            (whole-package name built-modules dependencies
                           #:command command
+
+                          ;; Include 'guix-daemon'.  XXX: Here we inject an
+                          ;; older snapshot of guix-daemon, but that's a good
+                          ;; enough approximation for now.
+                          #:daemon (module-ref (resolve-interface
+                                                '(gnu packages
+                                                      package-management))
+                                               'guix-daemon)
+
                           #:info (info-manual source)
                           #:guile-version guile-version)))
         ((= 0 pull-version)



reply via email to

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