From c3566fccb6fa25b70bf2e78fafe71f9048a6a719 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 13 May 2024 12:20:57 -0400 Subject: gnu: make-linux-libre*: Run install targets in parallel. This reduces the total build time by about 20%. * gnu/packages/linux.scm (make-linux-libre*) [phases] {install}: Ensure that -jN is used for the install targets. Also honor make flags. Change-Id: Ib3f4fdcbdeab736315a91eafa8d6d1dff5b89884 --- gnu/packages/linux.scm | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'gnu/packages') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 69cb8c878b..d061935c8c 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1076,9 +1076,15 @@ ARCH and optionally VARIANT, or #f if there is no such configuration." (close-port port)) (invoke "make" "oldconfig")))) (replace 'install - (lambda _ + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) (let ((moddir (string-append #$output "/lib/modules")) - (dtbdir (string-append #$output "/lib/dtbs"))) + (dtbdir (string-append #$output "/lib/dtbs")) + (make-flags + (append make-flags + (list "-j" + (if parallel-build? + (number->string (parallel-job-count)) + "1"))))) ;; Install kernel image, kernel configuration and link map. (for-each (lambda (file) (install-file file #$output)) (find-files "." "^(\\.config|bzImage|zImage|Image\ @@ -1086,22 +1092,23 @@ ARCH and optionally VARIANT, or #f if there is no such configuration." ;; Install device tree files (unless (null? (find-files "." "\\.dtb$")) (mkdir-p dtbdir) - (invoke "make" (string-append "INSTALL_DTBS_PATH=" dtbdir) - "dtbs_install")) + (apply invoke "make" + (string-append "INSTALL_DTBS_PATH=" dtbdir) + "dtbs_install" make-flags)) ;; Install kernel modules (mkdir-p moddir) - (invoke "make" - ;; Disable depmod because the Guix system's module - ;; directory is an union of potentially multiple - ;; packages. It is not possible to use depmod to - ;; usefully calculate a dependency graph while - ;; building only one of them. - "DEPMOD=true" - (string-append "MODULE_DIR=" moddir) - (string-append "INSTALL_PATH=" #$output) - (string-append "INSTALL_MOD_PATH=" #$output) - "INSTALL_MOD_STRIP=1" - "modules_install") + (apply invoke "make" + ;; Disable depmod because the Guix system's module + ;; directory is an union of potentially multiple + ;; packages. It is not possible to use depmod to + ;; usefully calculate a dependency graph while building + ;; only one of them. + "DEPMOD=true" + (string-append "MODULE_DIR=" moddir) + (string-append "INSTALL_PATH=" #$output) + (string-append "INSTALL_MOD_PATH=" #$output) + "INSTALL_MOD_STRIP=1" + "modules_install" make-flags) (let* ((versions (filter (lambda (name) (not (string-prefix? "." name))) (scandir moddir))) @@ -1123,7 +1130,7 @@ ARCH and optionally VARIANT, or #f if there is no such configuration." elfutils ;needed to enable CONFIG_STACK_VALIDATION flex bison - util-linux ;needed for hexdump + util-linux ;needed for hexdump ;; These are needed to compile the GCC plugins. gmp mpfr -- cgit v1.2.3