Subject: [bug#49025] [PATCH v3 core-updates 29/37] glib: Use a correct python in scripts when cross-compiling.

From: Maxime Devos <[email-masked]>
Date: Fri, 18 Jun 2021 19:16:23 +0200

During the build, a native python should be used as these
scripts will be invoked during the build, but when installed,
they should be a python for the system we're compiling for.

* gnu/packages/glib.scm
  (glib)[arguments]<#:phases>{patch-python-references}: Look up
  "python" in 'native-inputs', not 'inputs'.
  (glib)[inputs]{python,python-wrapper,bash-minimal}: New inputs.
---
 gnu/packages/glib.scm | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 94276ae0ef..25c5ae494b 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2020 Florian Pelz <[email-masked]>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <[email-masked]>
 ;;; Copyright © 2020 Arthur Margerit <[email-masked]>
+;;; Copyright © 2021 Maxime Devos <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -222,14 +223,19 @@ shared NFS home directories.")
              #t))
          ;; Python references are not being patched in patch-phase of build,
          ;; despite using python-wrapper as input. So we patch them manually.
+         ;;
+         ;; These python scripts are both used during build and installed,
+         ;; so at first, use a python from 'native-inputs', not 'inputs'. When
+         ;; cross-compiling, the 'patch-shebangs' phase will replace
+         ;; the native python with a python from 'inputs'.
          (add-after 'unpack 'patch-python-references
-           (lambda* (#:key inputs #:allow-other-keys)
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
              (substitute* '("gio/gdbus-2.0/codegen/gdbus-codegen.in"
                             "glib/gtester-report.in"
                             "gobject/glib-genmarshal.in"
                             "gobject/glib-mkenums.in")
                (("@PYTHON@")
-                (string-append (assoc-ref inputs "python")
+                (string-append (assoc-ref (or native-inputs inputs) "python")
                                "/bin/python"
                                ,(version-major+minor
                                  (package-version python)))))
@@ -282,6 +288,13 @@ shared NFS home directories.")
        ("xsltproc" ,libxslt)))
     (inputs
      `(("bash-completion" ,bash-completion)
+       ;; "python", "python-wrapper" and "bash-minimal"
+       ;; are for the 'patch-shebangs' phase, to make
+       ;; sure the installed scripts end up with a correct shebang
+       ;; when cross-compiling.
+       ("python" ,python)
+       ("python-wrapper" ,python-wrapper)
+       ("bash-minimal" ,(canonical-package bash-minimal))
        ("dbus" ,dbus)
        ("libelf" ,libelf)))
     (propagated-inputs
-- 
2.32.0