From 0db2a6e74952ee2c99d47e9580aac9d7fe657b16 Mon Sep 17 00:00:00 2001 From: Timothy Sample Date: Sat, 6 Feb 2021 13:49:34 -0500 Subject: gnu-bootstrap: Allow multiple module directories. * guix/build/gnu-bootstrap.scm (bootstrap-configure, bootstrap-build, bootstrap-install): Treat the 'modules' argument as a list of directories. * gnu/packages/commencement.scm (bootar, gash-boot, gash-utils-boot): Adjust call sites. --- guix/build/gnu-bootstrap.scm | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'guix/build/gnu-bootstrap.scm') diff --git a/guix/build/gnu-bootstrap.scm b/guix/build/gnu-bootstrap.scm index 7ca6ae8458..b4257a3717 100644 --- a/guix/build/gnu-bootstrap.scm +++ b/guix/build/gnu-bootstrap.scm @@ -25,6 +25,7 @@ (define-module (guix build gnu-bootstrap) #:use-module (guix build utils) + #:use-module (srfi srfi-1) #:use-module (system base compile) #:export (bootstrap-configure bootstrap-build @@ -32,7 +33,7 @@ (define-module (guix build gnu-bootstrap) (define (bootstrap-configure name version modules scripts) "Create a procedure that configures an early bootstrap package. The -procedure will search the MODULES directory and configure all of the +procedure will search each directory in MODULES and configure all of the '.in' files with NAME and VERSION. It will then search the SCRIPTS directory and configure all of the '.in' files with the bootstrap Guile and its module and object directories." @@ -52,9 +53,8 @@ (define (bootstrap-configure name version modules scripts) (substitute* target (("@PACKAGE_NAME@") name) (("@VERSION@") version)))) - (find-files modules - (lambda (fn st) - (string-suffix? ".in" fn)))) + (append-map (lambda (dir) (find-files dir "\\.in$")) + modules)) (for-each (lambda (template) (format #t "Configuring ~a~%" template) (let ((target (string-drop-right template 3))) @@ -71,7 +71,7 @@ (define (bootstrap-configure name version modules scripts) (define (bootstrap-build modules) "Create a procedure that builds an early bootstrap package. The -procedure will search the MODULES directory and compile all of the +procedure will search each directory in MODULES and compile all of the '.scm' files." (lambda _ (add-to-load-path (getcwd)) @@ -81,13 +81,15 @@ (define (bootstrap-build modules) (dir (dirname scm))) (format #t "Compiling ~a~%" scm) (compile-file scm #:output-file go))) - (find-files modules "\\.scm$")) + (append-map (lambda (dir) (find-files dir "\\.scm$")) + modules)) #t)) (define (bootstrap-install modules scripts) "Create a procedure that installs an early bootstrap package. The -procedure will install all of the '.scm' and '.go' files in the MODULES -directory, and all the executable files in the SCRIPTS directory." +procedure will install all of the '.scm' and '.go' files in each of the +directories in MODULES, and all the executable files in the SCRIPTS +directory." (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (guile-dir (assoc-ref inputs "guile")) @@ -105,7 +107,8 @@ (define (bootstrap-install modules scripts) (install-file scm (string-append moddir "/" dir)) (format #t "Installing ~a~%" go) (install-file go (string-append godir "/" dir)))) - (find-files modules "\\.scm$")) + (append-map (lambda (dir) (find-files dir "\\.scm$")) + modules)) (for-each (lambda (script) (format #t "Installing ~a~%" script) (install-file script (string-append out "/bin"))) -- cgit v1.2.3