tests: 'marionette-service-type' nows takes a <marionette-configuration>.
* gnu/tests.scm (<marionette-configuration>): New record type. (marionette-shepherd-service): Argument now is a <marionette-configuration>. (marionette-operating-system): Adjust accordingly. Add #:requirements parameter and honor it.
This commit is contained in:
		
							parent
							
								
									858d372c98
								
							
						
					
					
						commit
						037f9e07cd
					
				
					 1 changed files with 98 additions and 73 deletions
				
			
		| 
						 | 
					@ -27,7 +27,13 @@
 | 
				
			||||||
  #:use-module (srfi srfi-1)
 | 
					  #:use-module (srfi srfi-1)
 | 
				
			||||||
  #:use-module (srfi srfi-9 gnu)
 | 
					  #:use-module (srfi srfi-9 gnu)
 | 
				
			||||||
  #:use-module (ice-9 match)
 | 
					  #:use-module (ice-9 match)
 | 
				
			||||||
  #:export (marionette-service-type
 | 
					  #:export (marionette-configuration
 | 
				
			||||||
 | 
					            marionette-configuration?
 | 
				
			||||||
 | 
					            marionette-configuration-device
 | 
				
			||||||
 | 
					            marionette-configuration-imported-modules
 | 
				
			||||||
 | 
					            marionette-configuration-requirements
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            marionette-service-type
 | 
				
			||||||
            marionette-operating-system
 | 
					            marionette-operating-system
 | 
				
			||||||
            define-os-with-source
 | 
					            define-os-with-source
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,14 +56,26 @@
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; Code:
 | 
					;;; Code:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (marionette-shepherd-service imported-modules)
 | 
					(define-record-type* <marionette-configuration>
 | 
				
			||||||
  "Return the Shepherd service for the marionette REPL"
 | 
					  marionette-configuration make-marionette-configuration
 | 
				
			||||||
  (define device
 | 
					  marionette-configuration?
 | 
				
			||||||
    "/dev/hvc0")
 | 
					  (device           marionette-configuration-device ;string
 | 
				
			||||||
 | 
					                    (default "/dev/hvc0"))
 | 
				
			||||||
 | 
					  (imported-modules marionette-configuration-imported-modules
 | 
				
			||||||
 | 
					                    (default '()))
 | 
				
			||||||
 | 
					  (requirements     marionette-configuration-requirements ;list of symbols
 | 
				
			||||||
 | 
					                    (default '())))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define (marionette-shepherd-service config)
 | 
				
			||||||
 | 
					  "Return the Shepherd service for the marionette REPL"
 | 
				
			||||||
 | 
					  (match config
 | 
				
			||||||
 | 
					    (($ <marionette-configuration> device imported-modules requirement)
 | 
				
			||||||
     (list (shepherd-service
 | 
					     (list (shepherd-service
 | 
				
			||||||
            (provision '(marionette))
 | 
					            (provision '(marionette))
 | 
				
			||||||
         (requirement '(udev))                    ;so that DEVICE is available
 | 
					
 | 
				
			||||||
 | 
					            ;; Always depend on UDEV so that DEVICE is available.
 | 
				
			||||||
 | 
					            (requirement `(udev ,@requirement))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (modules '((ice-9 match)
 | 
					            (modules '((ice-9 match)
 | 
				
			||||||
                       (srfi srfi-9 gnu)
 | 
					                       (srfi srfi-9 gnu)
 | 
				
			||||||
                       (guix build syscalls)
 | 
					                       (guix build syscalls)
 | 
				
			||||||
| 
						 | 
					@ -124,7 +142,7 @@
 | 
				
			||||||
                        (primitive-exit 1))))
 | 
					                        (primitive-exit 1))))
 | 
				
			||||||
                   (pid
 | 
					                   (pid
 | 
				
			||||||
                    pid))))
 | 
					                    pid))))
 | 
				
			||||||
         (stop #~(make-kill-destructor)))))
 | 
					            (stop #~(make-kill-destructor)))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define marionette-service-type
 | 
					(define marionette-service-type
 | 
				
			||||||
  ;; This is the type of the "marionette" service, allowing a guest system to
 | 
					  ;; This is the type of the "marionette" service, allowing a guest system to
 | 
				
			||||||
| 
						 | 
					@ -136,12 +154,19 @@
 | 
				
			||||||
                                          marionette-shepherd-service)))))
 | 
					                                          marionette-shepherd-service)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define* (marionette-operating-system os
 | 
					(define* (marionette-operating-system os
 | 
				
			||||||
                                      #:key (imported-modules '()))
 | 
					                                      #:key
 | 
				
			||||||
  "Return a marionetteed variant of OS such that OS can be used as a marionette
 | 
					                                      (imported-modules '())
 | 
				
			||||||
in a virtual machine--i.e., controlled from the host system."
 | 
					                                      (requirements '()))
 | 
				
			||||||
 | 
					  "Return a marionetteed variant of OS such that OS can be used as a
 | 
				
			||||||
 | 
					marionette in a virtual machine--i.e., controlled from the host system.  The
 | 
				
			||||||
 | 
					marionette service in the guest is started after the Shepherd services listed
 | 
				
			||||||
 | 
					in REQUIREMENTS."
 | 
				
			||||||
  (operating-system
 | 
					  (operating-system
 | 
				
			||||||
    (inherit os)
 | 
					    (inherit os)
 | 
				
			||||||
    (services (cons (service marionette-service-type imported-modules)
 | 
					    (services (cons (service marionette-service-type
 | 
				
			||||||
 | 
					                             (marionette-configuration
 | 
				
			||||||
 | 
					                              (requirements requirements)
 | 
				
			||||||
 | 
					                              (imported-modules imported-modules)))
 | 
				
			||||||
                    (operating-system-user-services os)))))
 | 
					                    (operating-system-user-services os)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-syntax define-os-with-source
 | 
					(define-syntax define-os-with-source
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue