guix-commits
[Top][All Lists]
Advanced

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

01/02: system: hurd: Create system profile for guix development.


From: guix-commits
Subject: 01/02: system: hurd: Create system profile for guix development.
Date: Fri, 17 Apr 2020 09:24:18 -0400 (EDT)

janneke pushed a commit to branch wip-hurd-vm
in repository guix.

commit b4be88fbd59f6e5cd48ede0e418fe2a481fa21ec
Author: Jan (janneke) Nieuwenhuizen <address@hidden>
AuthorDate: Fri Apr 17 07:51:14 2020 +0200

    system: hurd: Create system profile for guix development.
    
    Doing
    
        guix build -f gnu/system/hurd.scm
    
    now produces a VM with a system profile that includes the minimal 
requirements
    to do guix development from git.
    
    * gnu/system/hurd.scm (%hurd-os-development): New variable that includes
    git-minimal and guix build dependencies.
    (cross-hurd-image): Add new keyword parameter `os'; use it instead of global
    %hurd-os and use %base-packages/hurd via os.
    Return thunk for development.
---
 gnu/system/hurd.scm | 39 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 34 insertions(+), 5 deletions(-)

diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
index fa2d6fa..3db2eef 100644
--- a/gnu/system/hurd.scm
+++ b/gnu/system/hurd.scm
@@ -19,7 +19,10 @@
 
 (define-module (gnu system hurd)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:use-module (ice-9 match)
   #:use-module (guix gexp)
+  #:use-module (guix packages)
   #:use-module (guix profiles)
   #:use-module (guix utils)
   #:use-module (gnu bootloader grub)
@@ -34,6 +37,7 @@
   #:use-module (gnu packages less)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu services)
   #:use-module (gnu services base)
   #:use-module (gnu services hurd)
@@ -109,6 +113,28 @@
     (pam-services '())
     (setuid-programs '())))
 
+(define (package-node-edges package) ;c&p from guix/scripts/graph.scm
+  "Return the list of dependencies of PACKAGE."
+  (match (package-direct-inputs package)
+    (((labels packages . outputs) ...)
+     ;; Filter out origins and other non-package dependencies.
+     (filter package? packages))))
+
+(define (disjoin . predicates)
+  (lambda (. arguments)
+    (any (cut apply <> arguments) predicates)))
+
+(define %hurd-os-development
+  (operating-system
+    (inherit %hurd-os)
+    (packages (append (list git-minimal)
+                      (filter (negate (compose
+                                       (disjoin (cut member <> '("graphviz" 
"po4a"))
+                                                (cut string-prefix? 
"bootstrap/" <>))
+                                       package-name))
+                              (package-node-edges guix))
+                      %base-packages/hurd))))
+
 (define operating-system-accounts
   (@@ (gnu system) operating-system-accounts))
 
@@ -207,7 +233,7 @@ fi\n")))
     (scheme-file "shepherd.conf" config)))
 
 
-(define* (cross-hurd-image #:key (hurd hurd) (gnumach gnumach))
+(define* (cross-hurd-image #:key (hurd hurd) (gnumach gnumach) (os %hurd-os))
   "Return a cross-built GNU/Hurd image."
 
   (define (cross-built thing)
@@ -223,7 +249,7 @@ fi\n")))
 
   (define system-profile
     (map-manifest-entries cross-built-entry
-                          (packages->manifest %base-packages/hurd)))
+                          (packages->manifest (operating-system-packages os))))
 
   (define grub.cfg
     (let ((hurd (cross-built hurd))
@@ -278,15 +304,15 @@ sshd:x:2:2:sshd:/var/empty:/bin/no-sh
   ;; XXX This still gives 64bit .go files
   ;; (define shepherd.conf
   ;;   (with-parameters ((%current-target-system "i586-pc-gnu"))
-  ;;     (shepherd-configuration-file (hurd-shepherd-services %hurd-os))))
+  ;;     (shepherd-configuration-file (hurd-shepherd-services os))))
 
   (define shepherd.conf
     (with-parameters ((%current-target-system "i586-pc-gnu"))
-      (hurd-shepherd-configuration-file (hurd-shepherd-services %hurd-os))))
+      (hurd-shepherd-configuration-file (hurd-shepherd-services os))))
 
   (define boot-activation
     (with-parameters ((%current-target-system "i586-pc-gnu"))
-      (operating-system-activation-script %hurd-os)))
+      (operating-system-activation-script os)))
 
   (define hurd-directives
     `((directory "/servers")
@@ -370,3 +396,6 @@ sshd:x:2:2:sshd:/var/empty:/bin/no-sh
 
 ;; Return this thunk so one can type "guix build -f gnu/system/hurd.scm".
 cross-hurd-image
+
+;; Return the development thunk so "guix build -f gnu/system/hurd.scm"
+(lambda _ (cross-hurd-image #:os %hurd-os-development))



reply via email to

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