From b9e46156e1f35303b56fbe2ed4694385b6104214 Mon Sep 17 00:00:00 2001 From: Maxime Devos Date: Tue, 6 Jul 2021 10:57:49 +0200 Subject: [PATCH core-updates] build-system/qt: Fix build failures when cross-compiling. One of the features of 'qt-build-system' is that it automatically creates wrappers, but it needs 'bash' (or 'bash-minimal') to do so. If "bin/bash" doesn't exist among the 'inputs', then 'search-input-file' (used by 'wrap-all-programs') will raise an exception. Address this exception by adding "bash-minimal" to 'host-inputs' when cross-compiling. This change does not impact native compilation; the derivations for natively-compiled packages remain identical. * guix/build-system/qt.scm (bash-for-wrappers): New procedure. (lower): Add 'bash-minimal' to 'host-inputs' when cross-compiling. --- guix/build-system/qt.scm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/guix/build-system/qt.scm b/guix/build-system/qt.scm index ccee89d5ef..9fa90baeeb 100644 --- a/guix/build-system/qt.scm +++ b/guix/build-system/qt.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2013 Cyril Roelandt ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2019 Hartmut Goebel +;;; Copyright © 2021 Maxime Devos ;;; ;;; This file is part of GNU Guix. ;;; @@ -63,6 +64,13 @@ (let ((module (resolve-interface '(gnu packages cmake)))) (module-ref module 'cmake-minimal))) +(define (bash-for-wrappers) + "Return the bash package to use for wrappers." + + ;; Do not use `@' to avoid introducing circular dependencies. + (let ((module (resolve-interface '(gnu packages bash)))) + (module-ref module 'bash-minimal))) + ;; This barely is a copy from (guix build-system cmake), only adjusted to use ;; the variables defined here. (define* (lower name @@ -91,7 +99,12 @@ '()) ;; Keep the standard inputs of 'gnu-build-system'. ,@(standard-packages))) - (host-inputs inputs) + ;; Make sure the 'qt-wrap' phase has a cross-compiled bash + ;; for wrappers when cross-compiling. + (host-inputs `(,@(if target + `(("bash-minimal" ,(bash-for-wrappers))) + '()) + ,@inputs)) ;; The cross-libc is really a target package, but for bootstrapping ;; reasons, we can't put it in 'host-inputs'. Namely, 'cross-gcc' is a -- 2.32.0