all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems Maxime Devos
                   ` (35 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 206 bytes --]

These aren't required anymore.

* gnu/packages/gnupg.scm (libgpgerror)[arguments]{cross-symlinks}:
  Remove trailing #f.
---
 gnu/packages/gnupg.scm | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)


[-- Attachment #2: 0008-libgpg-error-Remove-trailing-f-from-phases.patch --]
[-- Type: text/x-patch, Size: 598 bytes --]

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index cb481b38e1..2f44e6ec6a 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -114,8 +114,7 @@
                            (string-append x "-unknown-linux-gnu")))))
                    (symlink
                     (string-append "lock-obj-pub." triplet ".h")
-                    "src/syscfg/lock-obj-pub.linux-gnu.h"))
-                 #t))))
+                    "src/syscfg/lock-obj-pub.linux-gnu.h"))))))
          '()))
     (native-inputs `(("gettext" ,gettext-minimal)))
     (home-page "https://gnupg.org")

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate Maxime Devos
                   ` (34 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 407 bytes --]

* gnu/packages/gpg.scm
  (libgpgerror)[arguments]<#:phases>{cross-symlinks}: Only
  link to src/syscfg/lock-obj-pub.linux-gnu.h if the package
  is being compiled for a Linux target. Do not link either
  if the architecture is unknown, as the headers vary with
  the architecture.
---
 gnu/packages/gnupg.scm | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)


[-- Attachment #2: 0009-libgpg-error-Prevent-silent-miscompilation-some-syst.patch --]
[-- Type: text/x-patch, Size: 3398 bytes --]

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2f44e6ec6a..de213d381f 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Fredrik Salomonsson <plattfot@posteo.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -77,6 +78,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
 (define-public libgpg-error
@@ -94,27 +96,37 @@
     (build-system gnu-build-system)
     (arguments
      (if (%current-target-system)
-         `(#:modules ((ice-9 match)
-                      (guix build gnu-build-system)
+         `(#:modules ((guix build gnu-build-system)
                       (guix build utils))
            #:phases
            (modify-phases %standard-phases
              ;; When cross-compiling, some platform specific properties cannot
              ;; be detected. Create a symlink to the appropriate platform
-             ;; file. See Cross-Compiling section at:
+             ;; file if required. Note that these platform files depend on
+             ;; both the operating system and architecture!
+             ;;
+             ;; See Cross-Compiling section at:
              ;; https://github.com/gpg/libgpg-error/blob/master/README
              (add-after 'unpack 'cross-symlinks
-               (lambda* (#:key target inputs #:allow-other-keys)
-                 (let ((triplet
-                        (match (string-take target
-                                            (string-index target #\-))
-                          ("armhf" "arm-unknown-linux-gnueabi")
-                          ("mips64el" "mips-unknown-linux-gnu")
-                          (x
-                           (string-append x "-unknown-linux-gnu")))))
-                   (symlink
-                    (string-append "lock-obj-pub." triplet ".h")
-                    "src/syscfg/lock-obj-pub.linux-gnu.h"))))))
+               (lambda _
+                 (define (link triplet source)
+                   (symlink (string-append "lock-obj-pub." triplet ".h")
+                            (string-append "src/syscfg/lock-obj-pub."
+                                           source ".h")))
+                 ,(let* ((target (%current-target-system))
+                         (architecture
+                          (string-take target (string-index target #\-))))
+                    (cond ((target-linux? target)
+                           (match architecture
+                             ("armhf"
+                              `(link "arm-unknown-linux-gnueabi" "linux-gnu"))
+                             ("mips64el"
+                              `(link "mips-unknown-linux-gnu" "linux-gnu"))
+                             ;; Don't always link to the "linux-gnu"
+                             ;; configuration, as this is not correct for
+                             ;; all architectures.
+                             (_ #t)))
+                          (#t #t)))))))
          '()))
     (native-inputs `(("gettext" ,gettext-minimal)))
     (home-page "https://gnupg.org")

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input Maxime Devos
                   ` (33 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 258 bytes --]

* guix/utils.scm (target-linux?): New predicate.
* tests/utils.scm
  ("target-linux?"): Test it.
  ("target-mingw?"): Also test ‘target-mingw?’.
---
 guix/utils.scm  |  6 ++++++
 tests/utils.scm | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)


[-- Attachment #2: 0001-utils-Define-target-linux-predicate.patch --]
[-- Type: text/x-patch, Size: 2274 bytes --]

diff --git a/guix/utils.scm b/guix/utils.scm
index 19990ceb8a..4ff2602e23 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -81,6 +82,7 @@
             %current-system
             %current-target-system
             package-name->name+version
+            target-linux?
             target-mingw?
             target-arm32?
             target-aarch64?
@@ -543,6 +545,10 @@ a character other than '@'."
     (idx (values (substring spec 0 idx)
                  (substring spec (1+ idx))))))
 
+(define* (target-linux? #:optional (target (or (%current-target-system)
+                                               (%current-system))))
+  (string-contains target "linux"))
+
 (define* (target-mingw? #:optional (target (%current-target-system)))
   (and target
        (string-suffix? "-mingw32" target)))
diff --git a/tests/utils.scm b/tests/utils.scm
index 7fcbb25552..80a0e669a4 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -289,6 +290,22 @@ skip these tests."
    (string-closest "hello" '("kikoo" "helo" "hihihi" "halo"))
    (string-closest "hello" '("aaaaa" "12345" "hellohello" "h"))))
 
+(test-equal "target-linux?"
+  '(#t #f #f #t)
+  (map (compose ->bool target-linux?)
+       '("i686-linux-gnu" "i686-w64-mingw32"
+         ;; Checking that "gnu" is present is not sufficient,
+         ;; as GNU/Hurd exists.
+         "i686-pc-gnu"
+         ;; Some targets have a suffix.
+         "arm-linux-gnueabihf")))
+
+(test-equal "target-mingw?"
+  '(#f #f #t)
+  (map (compose ->bool target-mingw?)
+       '("i686-linux-gnu" "i686-pc-gnu"
+         "i686-w64-mingw32")))
+
 (test-end)
 
 (false-if-exception (delete-file temp-file))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (2 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp Maxime Devos
                   ` (32 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 527 bytes --]

These macros are intended to be used in build phases.
More precisely, (assoc-ref %build-inputs "input") can be
replaced by #$(this-package-input "input") or #+(this-package-native-input
"native-input") as appropriate.

* guix/packages.scm
  (package-input, package-native-input): New (unexported) procedures.
  (this-package-input, this-package-native-input): New macros.
---
 guix/packages.scm  | 29 +++++++++++++++++++++++++++++
 tests/packages.scm | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+)


[-- Attachment #2: 0003-packages-Define-this-package-input-and-this-package-.patch --]
[-- Type: text/x-patch, Size: 3333 bytes --]

diff --git a/guix/packages.scm b/guix/packages.scm
index a66dbea1b7..80c8bbebf0 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -108,6 +108,9 @@
             deprecated-package
             package-field-location
 
+            this-package-input
+            this-package-native-input
+
             package-direct-sources
             package-transitive-sources
             package-direct-inputs
@@ -513,6 +516,32 @@ object."
         #f)))
     (_ #f)))
 
+(define (package-input package name)
+  "Return the package input NAME of PACKAGE--i.e., an input
+from the ‘inputs’ or ‘propagated-inputs’ field.  Native inputs are not
+considered.  If this input does not exist, return #f instead."
+  (and=> (or (assoc-ref (package-inputs package) name)
+             (assoc-ref (package-propagated-inputs package) name))
+         car))
+
+(define (package-native-input package name)
+  "Return the native package input NAME of PACKAGE--i.e., an input
+from the ‘native-inputs’ field. If this native input does not exist,
+return #f instead."
+  (and=> (assoc-ref (package-native-inputs package) name)
+         car))
+
+(define-syntax-rule (this-package-input name)
+  "Return the input NAME of the package being defined--i.e., an input
+from the ‘inputs’ or ‘propagated-inputs’ field.  Native inputs are not
+considered.  If this input does not exist, return #f instead."
+  (package-input this-package name))
+
+(define-syntax-rule (this-package-native-input name)
+  "Return the native package input NAME of the package being defined--i.e.,
+an input from the ‘native-inputs’ field.  If this native input does not
+exist, return #f instead."
+  (package-native-input this-package name))
 
 ;; Error conditions.
 
diff --git a/tests/packages.scm b/tests/packages.scm
index 47d10af5bc..91ec38e4cc 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1851,6 +1852,39 @@
   (package-location (specification->package "guile@2"))
   (specification->location "guile@2"))
 
+(test-eq "this-package-input, exists"
+  hello
+  (package-arguments
+   (dummy-package "a"
+     (inputs `(("hello" ,hello)))
+     (arguments (this-package-input "hello")))))
+
+(test-eq "this-package-input, exists in propagated-inputs"
+  hello
+  (package-arguments
+   (dummy-package "a"
+     (propagated-inputs `(("hello" ,hello)))
+     (arguments (this-package-input "hello")))))
+
+(test-eq "this-package-input, does not exist"
+  #f
+  (package-arguments
+   (dummy-package "a"
+     (arguments (this-package-input "hello")))))
+
+(test-eq "this-package-native-input, exists"
+  hello
+  (package-arguments
+   (dummy-package "a"
+     (native-inputs `(("hello" ,hello)))
+     (arguments (this-package-native-input "hello")))))
+
+(test-eq "this-package-native-input, does not exists"
+  #f
+  (package-arguments
+   (dummy-package "a"
+     (arguments (this-package-native-input "hello")))))
+
 (test-end "packages")
 
 ;;; Local Variables:

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (3 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation Maxime Devos
                   ` (31 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 242 bytes --]

This allows using ungexp later.

* gnu/packages/python.scm (wrap-python3)<#:builder>: Make this
  a G-expression.
---
 gnu/packages/python.scm | 46 ++++++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 23 deletions(-)


[-- Attachment #2: 0013-wrap-python3-Make-builder-a-G-exp-instead-of-a-raw-S.patch --]
[-- Type: text/x-patch, Size: 2864 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index b2ec486d7a..9628836567 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -573,29 +573,29 @@ for more information.")))
     (arguments
      `(#:modules ((guix build utils))
        #:builder
-         (begin
-           (use-modules (guix build utils))
-           (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
-                 (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
-                (mkdir-p bin)
-                (for-each
-                  (lambda (old new)
-                    (symlink (string-append python old)
-                             (string-append bin "/" new)))
-                  `("python3" ,"pydoc3" ,"idle3" ,"pip3")
-                  `("python"  ,"pydoc"  ,"idle"  ,"pip"))
-                ;; python-config outputs search paths based upon its location,
-                ;; use a bash wrapper to avoid changing its outputs.
-                (let ((bash (string-append (assoc-ref %build-inputs "bash")
-                                           "/bin/bash"))
-                      (old  (string-append python "python3-config"))
-                      (new  (string-append bin "/python-config")))
-                  (with-output-to-file new
-                    (lambda ()
-                      (format #t "#!~a~%" bash)
-                      (format #t "exec \"~a\" \"$@\"~%" old)
-                      (chmod new #o755)
-                      #t)))))))
+       ,#~(begin
+            (use-modules (guix build utils))
+            (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
+                  (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
+              (mkdir-p bin)
+              (for-each
+               (lambda (old new)
+                 (symlink (string-append python old)
+                          (string-append bin "/" new)))
+               `("python3" ,"pydoc3" ,"idle3" ,"pip3")
+               `("python"  ,"pydoc"  ,"idle"  ,"pip"))
+              ;; python-config outputs search paths based upon its location,
+              ;; use a bash wrapper to avoid changing its outputs.
+              (let ((bash (string-append (assoc-ref %build-inputs "bash")
+                                         "/bin/bash"))
+                    (old  (string-append python "python3-config"))
+                    (new  (string-append bin "/python-config")))
+                (with-output-to-file new
+                  (lambda ()
+                    (format #t "#!~a~%" bash)
+                    (format #t "exec \"~a\" \"$@\"~%" old)
+                    (chmod new #o755)
+                    #t)))))))
     (synopsis "Wrapper for the Python 3 commands")
     (description
      "This package provides wrappers for the commands of Python@tie{}3.x such

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (4 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error Maxime Devos
                   ` (30 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 418 bytes --]

When cross-compiling, "bash" is missing from %build-inputs,
leading to a build error. Use this-package-input instead of
%build-inputs to resolve this. While we're at it, eliminate
all uses of %outputs and %build-inputs.

* gnu/packages/python.scm
  (wrap-python3)[arguments]<#:builder>: Eliminte %outputs
  and %build-inputs.
---
 gnu/packages/python.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)


[-- Attachment #2: 0014-wrap-python3-Fix-cross-compilation.patch --]
[-- Type: text/x-patch, Size: 1636 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9628836567..fbad0b65b8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -60,6 +60,7 @@
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -575,8 +576,8 @@ for more information.")))
        #:builder
        ,#~(begin
             (use-modules (guix build utils))
-            (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
-                  (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
+            (let ((bin (string-append #$output "/bin"))
+                  (python #$(file-append (this-package-input "python") "/bin/")))
               (mkdir-p bin)
               (for-each
                (lambda (old new)
@@ -586,8 +587,7 @@ for more information.")))
                `("python"  ,"pydoc"  ,"idle"  ,"pip"))
               ;; python-config outputs search paths based upon its location,
               ;; use a bash wrapper to avoid changing its outputs.
-              (let ((bash (string-append (assoc-ref %build-inputs "bash")
-                                         "/bin/bash"))
+              (let ((bash #$(file-append (this-package-input "bash") "/bin/bash"))
                     (old  (string-append python "python3-config"))
                     (new  (string-append bin "/python-config")))
                 (with-output-to-file new

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (5 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug Maxime Devos
                   ` (29 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 407 bytes --]

When cross-compiling a package using gnu-build-system,
%build-inputs does not exist. But libgcrypt uses %build-inputs
anyway. Fix it.

* gnu/packages/gnupg.scm
  (libgcrypt)[arguments]<#:configure-flags>: Make this a G-exp
  instead of a raw S-exp. Eliminate %build-inputs and use
  this-package-input instead.
---
 gnu/packages/gnupg.scm | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)


[-- Attachment #2: 0012-libgcrypt-Fix-cross-compilation-build-error.patch --]
[-- Type: text/x-patch, Size: 1416 bytes --]

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 1fee30584c..35cfdf6f43 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -74,6 +74,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
@@ -169,11 +170,12 @@ Daemon and possibly more in the future.")
      ;; 'configure' uses 'gpg-error-config' to determine the '-L' flag, and
      ;; the 'gpg-error-config' it runs is the native one---i.e., the wrong one.
      `(#:configure-flags
-       (list (string-append "--with-gpg-error-prefix="
-                            (assoc-ref %build-inputs "libgpg-error-host"))
-             ;; When cross-compiling, _gcry_mpih_lshift etc are undefined
-             ,@(if (%current-target-system) '("--disable-asm")
-                   '()))))
+       ,#~(list (string-append "--with-gpg-error-prefix="
+                               #$(this-package-input "libgpg-error-host"))
+                ;; When cross-compiling, _gcry_mpih_lshift etc are undefined
+                #$@(if (%current-target-system)
+                       #~("--disable-asm")
+                       #~()))))
     (outputs '("out" "debug"))
     (home-page "https://gnupg.org/")
     (synopsis "Cryptographic function library")

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (6 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error Maxime Devos
                   ` (28 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 393 bytes --]

Previously, a symlink was created at
src/syscfg/lock-obj-pub.linux-gnu.h pointing at
lock-obj-pub.MANGLED-TARGET.h. I would think this has
to be the other way around, but I am not really sure.

* gnu/packages/gnupg.scm
  (gnupg)[arguments]<#:phases>{cross-symlinks}(link): Switch
  'triplet' and 'source'.
---
 gnu/packages/gnupg.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


[-- Attachment #2: 0010-libgpgerror-Maybe-fix-a-cross-compilation-bug.patch --]
[-- Type: text/x-patch, Size: 811 bytes --]

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index de213d381f..f5d4118af9 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -110,9 +110,9 @@
              (add-after 'unpack 'cross-symlinks
                (lambda _
                  (define (link triplet source)
-                   (symlink (string-append "lock-obj-pub." triplet ".h")
+                   (symlink (string-append "lock-obj-pub." source ".h")
                             (string-append "src/syscfg/lock-obj-pub."
-                                           source ".h")))
+                                           triplet ".h")))
                  ,(let* ((target (%current-target-system))
                          (architecture
                           (string-take target (string-index target #\-))))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (7 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases Maxime Devos
                   ` (27 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 276 bytes --]

TODO: inform upstream about the cross-compilation error.

* gnu/packages/gnupg.scm
  (libgpg-error)[arguments]{fix-gen-lock-obj.sh}: Prevent generated
  header files from being sprinkled with ‘\c’.
---
 gnu/packages/gnupg.scm | 7 +++++++
 1 file changed, 7 insertions(+)


[-- Attachment #2: 0011-libgpg-error-Fix-cross-compilation-error.patch --]
[-- Type: text/x-patch, Size: 887 bytes --]

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index f5d4118af9..1fee30584c 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -100,6 +100,13 @@
                       (guix build utils))
            #:phases
            (modify-phases %standard-phases
+             ;; If this is left out, some generated header
+             ;; files will be sprinkled with ‘\c’, which
+             ;; the compiler won't like.
+             (add-after 'unpack 'fix-gen-lock-obj.sh
+               (lambda _
+                 (substitute* "src/gen-lock-obj.sh"
+                   (("if test -n `echo -n`") "if ! test -n `echo -n`"))))
              ;; When cross-compiling, some platform specific properties cannot
              ;; be detected. Create a symlink to the appropriate platform
              ;; file if required. Note that these platform files depend on

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (8 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression Maxime Devos
                   ` (26 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 171 bytes --]

* gnu/packages/tls.scm
  (openssl)[arguments]<#:phases>: Delete trailing #t.
---
 gnu/packages/tls.scm | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)


[-- Attachment #2: 0016-openssl-Remove-trailing-t-from-phases.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 608a7d05b8..5bfc5545db 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -366,8 +366,7 @@ required structures.")
                            ((string-prefix? "powerpc64" target)
                             "linux-ppc64")
                            ((string-prefix? "powerpc" target)
-                            "linux-ppc")))
-                 #t)))
+                            "linux-ppc"))))))
            '())
         (replace 'configure
           (lambda* (#:key outputs #:allow-other-keys)
@@ -406,8 +405,7 @@ required structures.")
               (for-each (lambda (file)
                           (install-file file slib)
                           (delete-file file))
-                        (find-files lib "\\.a$"))
-              #t)))
+                        (find-files lib "\\.a$")))))
         (add-after 'install 'move-extra-documentation
           (lambda* (#:key outputs #:allow-other-keys)
                ;; Move man3 pages and full HTML documentation to "doc".
@@ -420,8 +418,7 @@ required structures.")
                  (copy-recursively man3 man-target)
                  (delete-file-recursively man3)
                  (copy-recursively html html-target)
-                 (delete-file-recursively html)
-                 #t)))
+                 (delete-file-recursively html))))
         (add-after
          'install 'remove-miscellany
          (lambda* (#:key outputs #:allow-other-keys)
@@ -430,8 +427,7 @@ required structures.")
            (let ((out (assoc-ref outputs "out")))
              (delete-file-recursively (string-append out "/share/openssl-"
                                                      ,(package-version this-package)
-                                                     "/misc"))
-             #t))))))
+                                                     "/misc"))))))))
    (native-search-paths
     (list (search-path-specification
            (variable "SSL_CERT_DIR")

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (9 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs Maxime Devos
                   ` (25 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 309 bytes --]

This allows using this-package-native-input later.

* gnu/packages/tls.scm
  (openssl)[arguments]<#:phases>: Make this a G-expression.
  (openssl-1.0)[arguments]<#:phases>: Likewise.
---
 gnu/packages/tls.scm | 42 ++++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 20 deletions(-)


[-- Attachment #2: 0017-openssl-Make-the-phases-argument-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 5413 bytes --]

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 5bfc5545db..9de9a78e84 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -38,6 +38,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system perl)
@@ -341,9 +342,10 @@ required structures.")
       ;; so we explicitly disallow it here.
       #:disallowed-references ,(list (canonical-package perl))
       #:phases
+      ,#~
       (modify-phases %standard-phases
-       ,@(if (%current-target-system)
-           '((add-before
+       #$@(if (%current-target-system)
+          #~((add-before
                'configure 'set-cross-compile
                (lambda* (#:key target outputs #:allow-other-keys)
                  (setenv "CROSS_COMPILE" (string-append target "-"))
@@ -367,7 +369,7 @@ required structures.")
                             "linux-ppc64")
                            ((string-prefix? "powerpc" target)
                             "linux-ppc"))))))
-           '())
+             #~())
         (replace 'configure
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
@@ -377,9 +379,9 @@ required structures.")
                 (("/usr/bin/env")
                  (string-append (assoc-ref %build-inputs "coreutils")
                                 "/bin/env")))
-              (invoke ,@(if (%current-target-system)
-                          '("./Configure")
-                          '("./config"))
+              (invoke #$@(if (%current-target-system)
+                             #~("./Configure")
+                             #~("./config"))
                       "shared"       ;build shared libraries
                       "--libdir=lib"
 
@@ -388,13 +390,13 @@ required structures.")
                       ;; conventional.
                       (string-append "--openssldir=" out
                                      "/share/openssl-"
-                                     ,(package-version this-package))
+                                     #$(package-version this-package))
 
                       (string-append "--prefix=" out)
                       (string-append "-Wl,-rpath," lib)
-                      ,@(if (%current-target-system)
-                          '((getenv "CONFIGURE_TARGET_ARCH"))
-                          '())))))
+                      #$@(if (%current-target-system)
+                             #~((getenv "CONFIGURE_TARGET_ARCH"))
+                             #~())))))
         (add-after 'install 'move-static-libraries
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Move static libraries to the "static" output.
@@ -426,7 +428,7 @@ required structures.")
            ;; scripts.  Remove them to avoid retaining a reference on Perl.
            (let ((out (assoc-ref outputs "out")))
              (delete-file-recursively (string-append out "/share/openssl-"
-                                                     ,(package-version this-package)
+                                                     #$(package-version this-package)
                                                      "/misc"))))))))
    (native-search-paths
     (list (search-path-specification
@@ -471,7 +473,7 @@ required structures.")
        ;; Parallel build is not supported in 1.0.x.
        ((#:parallel-build? _ #f) #f)
        ((#:phases phases)
-        `(modify-phases ,phases
+       #~(modify-phases #$phases
            (add-before 'patch-source-shebangs 'patch-tests
              (lambda* (#:key inputs native-inputs #:allow-other-keys)
                (let ((bash (assoc-ref (or native-inputs inputs) "bash")))
@@ -494,9 +496,9 @@ required structures.")
 	     ;; Override this phase because OpenSSL 1.0 does not understand -rpath.
 	     (lambda* (#:key outputs #:allow-other-keys)
 	       (let ((out (assoc-ref outputs "out")))
-		 (invoke ,@(if (%current-target-system)
-			       '("./Configure")
-			       '("./config"))
+		 (invoke #$@(if (%current-target-system)
+			        #~("./Configure")
+			        #~("./config"))
 			 "shared"                 ;build shared libraries
 			 "--libdir=lib"
 
@@ -504,12 +506,12 @@ required structures.")
 			 ;; PREFIX/ssl.  Change that to something more
 			 ;; conventional.
 			 (string-append "--openssldir=" out
-					"/share/openssl-" ,version)
+					"/share/openssl-" #$version)
 
 			 (string-append "--prefix=" out)
-			 ,@(if (%current-target-system)
-			       '((getenv "CONFIGURE_TARGET_ARCH"))
-			       '())))))
+			 #$@(if (%current-target-system)
+			        '((getenv "CONFIGURE_TARGET_ARCH"))
+			        '())))))
         (delete 'move-extra-documentation)
         (add-after 'install 'move-man3-pages
           (lambda* (#:key outputs #:allow-other-keys)
@@ -534,7 +536,7 @@ required structures.")
                ;; scripts.  Remove them to avoid retaining a reference on Perl.
                (let ((out (assoc-ref outputs "out")))
                  (delete-file-recursively (string-append out "/share/openssl-"
-                                                         ,version "/misc"))
+                                                         #$version "/misc"))
                  #t)))))))))
 
 (define-public libressl

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (10 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it Maxime Devos
                   ` (24 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 438 bytes --]

This doesn't fix anything broken, just for simplifying
the code a little while we're rebuilding the world anyway.
IMHO this makes the code a little more readable.

* gnu/packages/tls.scm (openssl)[arguments]<#:phases>: Don't refer
  to the association list 'outputs', use #$output, #$output:doc
  and #$output:static instead.
---
 gnu/packages/tls.scm | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)


[-- Attachment #2: 0018-openssl-Use-G-exp-machinery-for-referring-to-outputs.patch --]
[-- Type: text/x-patch, Size: 3972 bytes --]

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9de9a78e84..90211c733d 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -347,7 +348,7 @@ required structures.")
        #$@(if (%current-target-system)
           #~((add-before
                'configure 'set-cross-compile
-               (lambda* (#:key target outputs #:allow-other-keys)
+               (lambda* (#:key target #:allow-other-keys)
                  (setenv "CROSS_COMPILE" (string-append target "-"))
                  (setenv "CONFIGURE_TARGET_ARCH"
                          (cond
@@ -371,8 +372,8 @@ required structures.")
                             "linux-ppc"))))))
              #~())
         (replace 'configure
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
+          (lambda _
+            (let* ((out #$output)
                    (lib (string-append out "/lib")))
               ;; It's not a shebang so patch-source-shebangs misses it.
               (substitute* "config"
@@ -398,23 +399,23 @@ required structures.")
                              #~((getenv "CONFIGURE_TARGET_ARCH"))
                              #~())))))
         (add-after 'install 'move-static-libraries
-          (lambda* (#:key outputs #:allow-other-keys)
+          (lambda _
             ;; Move static libraries to the "static" output.
-            (let* ((out    (assoc-ref outputs "out"))
+            (let* ((out    #$output)
                    (lib    (string-append out "/lib"))
-                   (static (assoc-ref outputs "static"))
+                   (static #$output:static)
                    (slib   (string-append static "/lib")))
               (for-each (lambda (file)
                           (install-file file slib)
                           (delete-file file))
                         (find-files lib "\\.a$")))))
         (add-after 'install 'move-extra-documentation
-          (lambda* (#:key outputs #:allow-other-keys)
+          (lambda _
                ;; Move man3 pages and full HTML documentation to "doc".
-               (let* ((out    (assoc-ref outputs "out"))
+               (let* ((out    #$output)
                       (man3   (string-append out "/share/man/man3"))
                       (html (string-append out "/share/doc/openssl"))
-                      (doc    (assoc-ref outputs "doc"))
+                      (doc    #$output:doc)
                       (man-target (string-append doc "/share/man/man3"))
                       (html-target (string-append doc "/share/doc/openssl")))
                  (copy-recursively man3 man-target)
@@ -423,13 +424,12 @@ required structures.")
                  (delete-file-recursively html))))
         (add-after
          'install 'remove-miscellany
-         (lambda* (#:key outputs #:allow-other-keys)
+         (lambda _
            ;; The 'misc' directory contains random undocumented shell and Perl
            ;; scripts.  Remove them to avoid retaining a reference on Perl.
-           (let ((out (assoc-ref outputs "out")))
-             (delete-file-recursively (string-append out "/share/openssl-"
-                                                     #$(package-version this-package)
-                                                     "/misc"))))))))
+           (delete-file-recursively (string-append #$output "/share/openssl-"
+                                                   #$(package-version this-package)
+                                                   "/misc")))))))
    (native-search-paths
     (list (search-path-specification
            (variable "SSL_CERT_DIR")

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (11 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling Maxime Devos
                   ` (23 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 255 bytes --]

* gnu/packages/tls.scm
  (openssl)[arguments]<#:phases>{move-extra-documentation}: Use
  'rename-file' instead of 'copy-recursively' and
  'delete-file-recursively'.
---
 gnu/packages/tls.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)


[-- Attachment #2: 0019-openssl-Move-documentation-instead-of-copying-and-de.patch --]
[-- Type: text/x-patch, Size: 876 bytes --]

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 90211c733d..9aa0b5a212 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -418,10 +418,10 @@ required structures.")
                       (doc    #$output:doc)
                       (man-target (string-append doc "/share/man/man3"))
                       (html-target (string-append doc "/share/doc/openssl")))
-                 (copy-recursively man3 man-target)
-                 (delete-file-recursively man3)
-                 (copy-recursively html html-target)
-                 (delete-file-recursively html))))
+                 (mkdir-p (dirname man3-target))
+                 (mkdir-p (dirname html-target))
+                 (rename-file man3 man-target)
+                 (rename-file html html-target))))
         (add-after
          'install 'remove-miscellany
          (lambda _

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (12 preceding siblings ...)
  2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH Maxime Devos
                   ` (22 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 266 bytes --]

%build-inputs does not exist when cross-compiling,
so find bin/env by another way.

* (openssl)[arguments]<#:phases>{configure}: Don't use '%build-inputs',
  use 'which' instead.
---
 gnu/packages/tls.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)


[-- Attachment #2: 0021-openssl-Find-bin-env-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 883 bytes --]

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index c178806805..a4e754e27f 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -376,10 +376,10 @@ required structures.")
             (let* ((out #$output)
                    (lib (string-append out "/lib")))
               ;; It's not a shebang so patch-source-shebangs misses it.
+              ;; Don't use (assoc-ref %build-inputs "coreutils"), as
+              ;; %build-inputs is not defined when cross-compiling.
               (substitute* "config"
-                (("/usr/bin/env")
-                 (string-append (assoc-ref %build-inputs "coreutils")
-                                "/bin/env")))
+                (("/usr/bin/env") (which "env")))
               (invoke #$@(if (%current-target-system)
                              #~("./Configure")
                              #~("./config"))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (13 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu Maxime Devos
                   ` (21 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 373 bytes --]

By computing this value outside the build code, new targets
can be added without causing rebuilds for other targets.

* gnu/packages/tls.scm
  (target->openssl-target): New procedure.
  (openssl)[arguments]<#:phases>{set-cross-compile}: Use it.
---
 gnu/packages/tls.scm | 46 ++++++++++++++++++++++++++------------------
 1 file changed, 27 insertions(+), 19 deletions(-)


[-- Attachment #2: 0022-openssl-Extract-logic-for-computing-CONFIGURE_TARGET.patch --]
[-- Type: text/x-patch, Size: 2624 bytes --]

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index a4e754e27f..af91e42888 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -313,6 +313,31 @@ required structures.")
 (define-public guile3.0-gnutls
   (deprecated-package "guile3.0-gnutls" gnutls))
 
+(define (target->openssl-target target)
+  "Return the value to set CONFIGURE_TARGET_ARCH to when cross-compiling
+OpenSSL for TARGET."
+  ;; Keep this code outside the build code,
+  ;; such that new targets can be added
+  ;; without causing rebuilds for other targets.
+  (cond ((string-prefix? "i586" target)
+         "hurd-x86")
+        ((string-prefix? "i686" target)
+         "linux-x86")
+        ((string-prefix? "x86_64" target)
+         "linux-x86_64")
+        ((string-prefix? "mips64el" target)
+         "linux-mips64")
+        ((string-prefix? "arm" target)
+         "linux-armv4")
+        ((string-prefix? "aarch64" target)
+         "linux-aarch64")
+        ((string-prefix? "powerpc64le" target)
+         "linux-ppc64le")
+        ((string-prefix? "powerpc64" target)
+         "linux-ppc64")
+        ((string-prefix? "powerpc" target)
+         "linux-ppc")))
+
 (define-public openssl
   (package
    (name "openssl")
@@ -351,25 +376,8 @@ required structures.")
                (lambda* (#:key target #:allow-other-keys)
                  (setenv "CROSS_COMPILE" (string-append target "-"))
                  (setenv "CONFIGURE_TARGET_ARCH"
-                         (cond
-                           ((string-prefix? "i586" target)
-                            "hurd-x86")
-                           ((string-prefix? "i686" target)
-                            "linux-x86")
-                           ((string-prefix? "x86_64" target)
-                            "linux-x86_64")
-                           ((string-prefix? "mips64el" target)
-                            "linux-mips64")
-                           ((string-prefix? "arm" target)
-                            "linux-armv4")
-                           ((string-prefix? "aarch64" target)
-                            "linux-aarch64")
-                           ((string-prefix? "powerpc64le" target)
-                            "linux-ppc64le")
-                           ((string-prefix? "powerpc64" target)
-                            "linux-ppc64")
-                           ((string-prefix? "powerpc" target)
-                            "linux-ppc"))))))
+                         #$(target->openssl-target
+                            (%current-target-system))))))
              #~())
         (replace 'configure
           (lambda _

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (14 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression Maxime Devos
                   ` (20 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 709 bytes --]

GCC doesn't find libgcc_s.so anymore and looks in the wrong
location.  Fix this (well, more a work-around really).

* gnu/packages/cross-base.scm
  (cross-gcc-arguments)<#:configure-flags>:
  Add --with-toolexecdir, such that libstdc++ ends up in the right
  place. Add --with-slibdir such that libgcc_s.so end up in the right place.
  (cross-gcc-arguments)<#:phases>{move-shared-libraries}:
  New phase, moving libraries in the correct place.
  Delete .la files, libasan.so and libusan.so to prevent circular
  references. Likewise, fix a reference in libstdc++.so.VERSION-gdb.py.
---
 gnu/packages/cross-base.scm | 63 +++++++++++++++++++++++++++++++++++--
 1 file changed, 60 insertions(+), 3 deletions(-)


[-- Attachment #2: 0036-cross-base-Fix-cross-compiler-for-i686-linux-gnu.patch --]
[-- Type: text/x-patch, Size: 5218 bytes --]

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 9487ac9238..995b4ae065 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2019 Carl Dong <contact@carldong.me>
 ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (srfi srfi-1)
@@ -169,9 +171,26 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                                 ))
 
                        ;; Install cross-built libraries such as libgcc_s.so in
-                       ;; the "lib" output.
+                       ;; the "lib" output. At least for version 8.4.0, GCC
+                       ;; will put libstdc++ in ${toolexecdir}/lib instead.
+                       ;; (A bug?) So set --with-toolexecdir as well.
+
                        ,@(if libc
-                             `((string-append "--with-toolexeclibdir="
+                             `((string-append "--with-toolexecdir="
+                                              (assoc-ref %outputs "lib"))
+                               (string-append "--with-toolexeclibdir="
+                                              (assoc-ref %outputs "lib")
+                                              "/" ,target "/lib"))
+                             '())
+                       ;; At least for GCC 8.0, libgcc_s.so and libstdc++.so
+                       ;; are not installed in the location specified in
+                       ;; --with-toolexeclibdir so GCC will not find it
+                       ;; when cross-compiling, say, GNU Hello.
+                       ;;
+                       ;; Work-around by specifying slibdir. This is not
+                       ;; sufficient, see move-shared-libraries below.
+                       ,@(if (and libc (version>=? (package-version xgcc) "8.0"))
+                             `((string-append "--with-slibdir="
                                               (assoc-ref %outputs "lib")
                                               "/" ,target "/lib"))
                              '())
@@ -193,7 +212,45 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
                      ,flags))
             flags))
        ((#:phases phases)
-        `(cross-gcc-build-phases ,target ,phases))))))
+        (if (and libc (version>=? (package-version xgcc) "8.0"))
+            #~(modify-phases (cross-gcc-build-phases #$target #$phases)
+                (add-after 'install 'move-shared-libraries
+                  (lambda _
+                    (let* ((slib (format #f "~a/~a/lib/" #$output:lib #$target))
+                           (badlib (format #f "~a/~a/lib/" #$output #$target))
+                           (libs (map basename (find-files badlib #:fail-on-error? #t))))
+                      (for-each
+                       (lambda (lib)
+                         (let ((from (string-append badlib lib))
+                               (to   (string-append slib lib)))
+                           (when (file-exists? to)
+                             (error "~a was found twice, refusing to overwrite!"
+                                    lib))
+                           ;; The debugging script libstdc++.so.VERSION-gdb.py has
+                           ;; reference to #$output. Correct it.
+                           (when (string-suffix? "-gdb.py" lib)
+                             (substitute* from
+                               (("libdir = '(.*)'")
+                                (string-append "libdir = '" slib "'")))
+                             (system* "cat" from))
+                           ;; The .la files have references to BADLIB,
+                           ;; leading to cyclic references between
+                           ;; the outputs of the package. Remove them
+                           ;; and hope noone notices.
+                           ;;
+                           ;; Likewise, libasan.so.* and libubsan.so.*
+                           ;; have references to #$output.
+                           (if (or (string-suffix? ".la" lib)
+                                   (string-prefix? "libasan.so" lib)
+                                   (string-prefix? "libubsan.so" lib))
+                               (delete-file from)
+                               (rename-file from to))))
+                       libs)
+                      ;; If you have "cyclic references" problems,
+                      ;; uncomment this and use --keep-failed to figure
+                      ;; things out.
+                      (copy-recursively #$output:lib "out-test")))))
+            #~(cross-gcc-build-phases #$target #$phases)))))))
 
 (define (cross-gcc-patches xgcc target)
   "Return GCC patches needed for XGCC and TARGET."

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (15 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends Maxime Devos
                   ` (19 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 282 bytes --]

This allows using ungexp-native and this-package-native-input later.

* gnu/packages/admin.scm (net-base)[arguments]{#:builder}: Make this
  a G-expression.
---
 gnu/packages/admin.scm | 39 ++++++++++++++++++++-------------------
 1 file changed, 20 insertions(+), 19 deletions(-)


[-- Attachment #2: 0004-net-base-Make-builder-argument-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 2823 bytes --]

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 531686fdbb..5c7e41f51b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -74,6 +74,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autogen)
@@ -936,25 +937,25 @@ to allow automatic login and starting any app.")
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
-       #:builder (begin
-                   (use-modules (guix build utils)
-                                (srfi srfi-26))
-
-                   (let* ((source (assoc-ref %build-inputs "source"))
-                          (tar    (assoc-ref %build-inputs "tar"))
-                          (xz     (assoc-ref %build-inputs "xz"))
-                          (output (assoc-ref %outputs "out"))
-                          (etc    (string-append output "/etc")))
-                     (setenv "PATH" (string-append xz "/bin"))
-                     (invoke (string-append tar "/bin/tar") "xvf"
-                             source)
-                     (chdir ,(string-append "netbase-" version))
-                     (mkdir-p etc)
-                     (for-each copy-file
-                               '("etc-services" "etc-protocols" "etc-rpc")
-                               (map (cut string-append etc "/" <>)
-                                    '("services" "protocols" "rpc")))
-                     #t))))
+       #:builder ,#~(begin
+                      (use-modules (guix build utils)
+                                   (srfi srfi-26))
+
+                      (let* ((source (assoc-ref %build-inputs "source"))
+                             (tar    (assoc-ref %build-inputs "tar"))
+                             (xz     (assoc-ref %build-inputs "xz"))
+                             (output (assoc-ref %outputs "out"))
+                             (etc    (string-append output "/etc")))
+                        (setenv "PATH" (string-append xz "/bin"))
+                        (invoke (string-append tar "/bin/tar") "xvf"
+                                source)
+                        (chdir #$(string-append "netbase-" version))
+                        (mkdir-p etc)
+                        (for-each copy-file
+                                  '("etc-services" "etc-protocols" "etc-rpc")
+                                  (map (cut string-append etc "/" <>)
+                                       '("services" "protocols" "rpc")))
+                        #t))))
     (native-inputs `(("tar" ,tar)
                      ("xz" ,xz)))
     (synopsis "IANA protocol, port, and RPC number assignments")

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (16 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile Maxime Devos
                   ` (18 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 318 bytes --]

"source" is not in %build-inputs when cross-compiling, so another
approach for referring to the package source code is needed.

* gnu/packages/admin.scm (net-base)[arguments]<#:builder>: Eliminate
  %build-inputs and %outputs.
---
 gnu/packages/admin.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)


[-- Attachment #2: 0005-net-base-Fix-cross-compilation-eliminating-build-inp.patch --]
[-- Type: text/x-patch, Size: 1091 bytes --]

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 5c7e41f51b..f499a1252b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -941,10 +941,10 @@ to allow automatic login and starting any app.")
                       (use-modules (guix build utils)
                                    (srfi srfi-26))
 
-                      (let* ((source (assoc-ref %build-inputs "source"))
-                             (tar    (assoc-ref %build-inputs "tar"))
-                             (xz     (assoc-ref %build-inputs "xz"))
-                             (output (assoc-ref %outputs "out"))
+                      (let* ((source #+(package-source this-package))
+                             (tar    #+(this-package-native-input "tar"))
+                             (xz     #+(this-package-native-input "xz"))
+                             (output #$output)
                              (etc    (string-append output "/etc")))
                         (setenv "PATH" (string-append xz "/bin"))
                         (invoke (string-append tar "/bin/tar") "xvf"

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (17 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression Maxime Devos
                   ` (17 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 274 bytes --]

net-base is pure data, so cross-compiling is pointless.

* gnu/packages/admin.scm
  (net-base)[arguments]<#:target>: Set to #f.
  (net-base)[arguments]<#:allowed-references>: Disallow all
  references.
---
 gnu/packages/admin.scm | 5 +++++
 1 file changed, 5 insertions(+)


[-- Attachment #2: 0006-net-base-Don-t-cross-compile.patch --]
[-- Type: text/x-patch, Size: 686 bytes --]

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index f499a1252b..5e41ba9967 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -937,6 +937,11 @@ to allow automatic login and starting any app.")
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
+       ;; This package consists solely of architecture-independent
+       ;; tables. Cross-compilation is pointless! Make sure we'll
+       ;; always get the same derivation.
+       #:target #f
+       #:allowed-references ()
        #:builder ,#~(begin
                       (use-modules (guix build utils)
                                    (srfi srfi-26))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (18 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling Maxime Devos
                   ` (16 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 269 bytes --]

This allos using ungexp and this-package-input later.

* gnu/packages/readline.scm
  (readline)[arguments]<#:configure-flags>: Make this a
  G-expression.
---
 gnu/packages/readline.scm | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)


[-- Attachment #2: 0023-readline-Make-configure-flags-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 2070 bytes --]

diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index b4c91675a4..6cfa24c666 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -29,6 +29,7 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (ice-9 format))
 
 (define (patch-url version seqno)
@@ -76,19 +77,19 @@
     (build-system gnu-build-system)
     (propagated-inputs `(("ncurses" ,ncurses)))
     (arguments `(#:configure-flags
-                 (list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
-                                      (assoc-ref %build-inputs "ncurses")
-                                      "/lib")
+                 ,#~(list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
+                                         (assoc-ref %build-inputs "ncurses")
+                                         "/lib")
 
-                       ;; This test does an 'AC_TRY_RUN', which aborts when
-                       ;; cross-compiling, so provide the correct answer.
-                       ,@(if (%current-target-system)
-                             '("bash_cv_wcwidth_broken=no")
-                             '())
-                       ;; MinGW: ncurses provides the termcap api.
-                       ,@(if (target-mingw?)
-                             '("bash_cv_termcap_lib=ncurses")
-                             '()))
+                          ;; This test does an 'AC_TRY_RUN', which aborts when
+                          ;; cross-compiling, so provide the correct answer.
+                          #$@(if (%current-target-system)
+                                 '("bash_cv_wcwidth_broken=no")
+                                 '())
+                          ;; MinGW: ncurses provides the termcap api.
+                          #$@(if (target-mingw?)
+                                 '("bash_cv_termcap_lib=ncurses")
+                                 '()))
 
                  ,@(if (target-mingw?)
                        ;; MinGW: termcap in ncurses

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (19 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression Maxime Devos
                   ` (15 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 304 bytes --]

%build-inputs does not exist when cross-compiling, so
use this-package-input instead.

* gnu/packages/readline.scm
  (readline)[arguments]<#:configure-flags>: Use this-package-input
  instead of %build-inputs.
---
 gnu/packages/readline.scm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)


[-- Attachment #2: 0024-readline-Fix-build-error-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 1158 bytes --]

diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index 6cfa24c666..f9f2797247 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -77,9 +78,10 @@
     (build-system gnu-build-system)
     (propagated-inputs `(("ncurses" ,ncurses)))
     (arguments `(#:configure-flags
-                 ,#~(list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
-                                         (assoc-ref %build-inputs "ncurses")
-                                         "/lib")
+                 ,#~(list (string-append
+                           "LDFLAGS=-Wl,-rpath -Wl,"
+                           #$(this-package-input "ncurses")
+                           "/lib")
 
                           ;; This test does an 'AC_TRY_RUN', which aborts when
                           ;; cross-compiling, so provide the correct answer.

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (20 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error Maxime Devos
                   ` (14 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 274 bytes --]

This allows using this-package-input later.

* gnu/packages/bash.scm
  (bash)[arguments]<#:configure-flags>: Make this a G-expression
  instead of a raw S-expression.
---
 gnu/packages/bash.scm | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)


[-- Attachment #2: 0025-bash-Make-configure-flags-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 1794 bytes --]

diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 7e98367bbb..b3af873a66 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -109,15 +109,15 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
                                   "-DSSH_SOURCE_BASHRC")
                                 " "))
          (configure-flags
-          ``("--with-installed-readline"
-             ,,(string-append "CPPFLAGS=" cppflags)
-             ,(string-append
-               "LDFLAGS=-Wl,-rpath -Wl,"
-               (assoc-ref %build-inputs "readline")
-               "/lib"
-               " -Wl,-rpath -Wl,"
-               (assoc-ref %build-inputs "ncurses")
-               "/lib")))
+          #~`("--with-installed-readline"
+              ,#$(string-append "CPPFLAGS=" cppflags)
+              ,(string-append
+                "LDFLAGS=-Wl,-rpath -Wl,"
+                (assoc-ref %build-inputs "readline")
+                "/lib"
+                " -Wl,-rpath -Wl,"
+                (assoc-ref %build-inputs "ncurses")
+                "/lib")))
          (version "5.1"))
     (package
      (name "bash")
@@ -143,8 +143,8 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
       `(;; When cross-compiling, `configure' incorrectly guesses that job
         ;; control is missing.
         #:configure-flags ,(if (%current-target-system)
-                               `(cons* "bash_cv_job_control_missing=no"
-                                       ,configure-flags)
+                               #~(cons* "bash_cv_job_control_missing=no"
+                                        #$configure-flags)
                                configure-flags)
 
         ;; Bash is reportedly not parallel-safe.  See, for instance,

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (21 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression Maxime Devos
                   ` (13 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 322 bytes --]

%build-inputs does not exist when cross-compiling,
so use this-package-input instead.

* gnu/packages/bash.scm
  (bash)[arguments]<#:configure-flags>: Use this-package-input
  instead of %build-inputs.
---
 gnu/packages/bash.scm | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)


[-- Attachment #2: 0026-bash-Fix-cross-compilation-build-error.patch --]
[-- Type: text/x-patch, Size: 2033 bytes --]

diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index b3af873a66..d51ab26bc8 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -103,22 +103,25 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
           1))
 
 (define-public bash
-  (let* ((cppflags (string-join '("-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
-                                  "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
-                                  "-DNON_INTERACTIVE_LOGIN_SHELLS"
-                                  "-DSSH_SOURCE_BASHRC")
-                                " "))
-         (configure-flags
-          #~`("--with-installed-readline"
-              ,#$(string-append "CPPFLAGS=" cppflags)
-              ,(string-append
-                "LDFLAGS=-Wl,-rpath -Wl,"
-                (assoc-ref %build-inputs "readline")
-                "/lib"
-                " -Wl,-rpath -Wl,"
-                (assoc-ref %build-inputs "ncurses")
-                "/lib")))
-         (version "5.1"))
+  (let ((cppflags (string-join '("-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
+                                 "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
+                                 "-DNON_INTERACTIVE_LOGIN_SHELLS"
+                                 "-DSSH_SOURCE_BASHRC")
+                               " "))
+        (version "5.1"))
+    ;; Delay expansion to inside a lexical environment
+    ;; where this-package is bound.
+    (define-syntax configure-flags
+      (identifier-syntax
+       #~`("--with-installed-readline"
+           ,#$(string-append "CPPFLAGS=" cppflags)
+           ,(string-append
+             "LDFLAGS=-Wl,-rpath -Wl,"
+             ;; %build-inputs does not exist when cross-compiling,
+             ;; so use this-package-input instead.
+             #$(file-append (this-package-input "readline") "/lib")
+             " -Wl,-rpath -Wl,"
+             #$(file-append (this-package-input "ncurses") "/lib")))))
     (package
      (name "bash")
      (source (origin

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (22 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling Maxime Devos
                   ` (12 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 351 bytes --]

This allows using #$(this-package-input ...) later.

* gnu/packages/fontutils.scm
  (fontconfig)[arguments]<#:configure-flags>: Make this a
  G-expression instead of a raw S-expression.
  (fontconfig-with-documentation)[arguments]<#:configure-flags>: Likewise.
---
 gnu/packages/fontutils.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)


[-- Attachment #2: 0027-fontconfig-Make-the-configure-flags-argument-a-G-exp.patch --]
[-- Type: text/x-patch, Size: 1199 bytes --]

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index dbce5beba8..234f11129a 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -64,6 +64,7 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages tex)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix svn-download)
@@ -347,6 +348,7 @@ Font Format (WOFF).")
         ("python" ,python-minimal)))    ;to avoid a cycle through tk
      (arguments
       `(#:configure-flags
+        ,#~
         (list "--disable-docs"
               "--with-cache-dir=/var/cache/fontconfig"
               ;; register the default fonts
@@ -400,7 +402,7 @@ high quality, anti-aliased and subpixel rendered text on a display.")
     (arguments
      (substitute-keyword-arguments (package-arguments fontconfig)
        ((#:configure-flags configure-flags)
-        `(delete "--disable-docs" ,configure-flags))
+        #~(delete "--disable-docs" #$configure-flags))
        ((#:phases phases '%standard-phases)
         `(modify-phases ,phases
            (add-after 'install 'move-man-sections

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (23 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input " Maxime Devos
                   ` (11 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 312 bytes --]

%build-inputs does not exist when cross-compiling,
so use #$(this-package-input ...) instead.

* gnu/packages/fontutils.scm
  (fontconfig)[arguments]<#:configure-flags>: Use this-package-input
  instead of %build-inputs.
---
 gnu/packages/fontutils.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


[-- Attachment #2: 0028-fontconfig-Fix-build-error-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 742 bytes --]

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 234f11129a..b0d40efeae 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -353,8 +353,8 @@ Font Format (WOFF).")
               "--with-cache-dir=/var/cache/fontconfig"
               ;; register the default fonts
               (string-append "--with-default-fonts="
-                             (assoc-ref %build-inputs "font-dejavu")
-                             "/share/fonts")
+                             #$(file-append (this-package-input "font-dejavu")
+                                            "/share/fonts"))
 
               ;; Register fonts from user and system profiles.
               (string-append "--with-add-fonts="

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input when cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (24 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts " Maxime Devos
                   ` (10 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 283 bytes --]

"sitecustomize.py" is a native input, so look it up
in 'native-inputs', not 'inputs'.

* gnu/packages/python.scm (customize-site): Look up "sizecustomize.py"
  in 'native-inputs', not 'inputs'.
---
 gnu/packages/python.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)


[-- Attachment #2: 0015-python-Fix-reference-to-input-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 994 bytes --]

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index fbad0b65b8..f004b8e739 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -111,13 +111,14 @@
 
 (define* (customize-site version)
   "Generate a install-sitecustomize.py phase, using VERSION."
-  `(lambda* (#:key inputs outputs #:allow-other-keys)
+  `(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
      (let* ((out (assoc-ref outputs "out"))
             (site-packages (string-append
                             out "/lib/python"
                             ,(version-major+minor version)
                             "/site-packages"))
-            (sitecustomize.py (assoc-ref inputs "sitecustomize.py"))
+            (sitecustomize.py (assoc-ref (or native-inputs inputs)
+                                         "sitecustomize.py"))
             (dest (string-append site-packages "/sitecustomize.py")))
        (mkdir-p site-packages)
        (copy-file sitecustomize.py dest)

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts when cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (25 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input " Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling Maxime Devos
                   ` (9 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 481 bytes --]

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(-)


[-- Attachment #2: 0029-glib-Use-a-correct-python-in-scripts-when-cross-comp.patch --]
[-- Type: text/x-patch, Size: 2308 bytes --]

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 <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Arthur Margerit <ruhtra.mar@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; 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

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (26 preceding siblings ...)
  2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts " Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts Maxime Devos
                   ` (8 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 377 bytes --]

The time zone database is architecture-independent,
so trying to cross-compile it is pointless!

* gnu/packages/base.scm
  (tzdata)[arguments]<#:target>: Set to #f.
  (tzdata)[allowed-references]: Only include the "out" output itself,
  to make sure no (architecture-dependent) binaries are installed.
---
 gnu/packages/base.scm | 9 +++++++++
 1 file changed, 9 insertions(+)


[-- Attachment #2: 0007-tzdata-Don-t-bother-with-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 1157 bytes --]

diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index d30299a7b6..2674be8048 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
 ;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1251,6 +1252,14 @@ command.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
+       ;; This consists purely of (architecture-independent) data,
+       ;; so ‘cross-compilation’ is pointless here!
+       ;; (The binaries zic, dump, and tzselect are deleted in the post-install
+       ;; phase.)
+       #:target #f
+       ;; share/zoneinfo/posix is a symlink to share/zoneinfo,
+       ;; so include the package itself in #:allowed-references.
+       #:allowed-references ("out")
        #:make-flags (let ((out (assoc-ref %outputs "out"))
                           (tmp (getenv "TMPDIR")))
                       (list (string-append "TOPDIR=" out)

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (27 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation Maxime Devos
                   ` (7 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 214 bytes --]

* gnu/packages/glib.scm (glib)[arguments]<#:disallowed-references>:
  Disallow the native python when cross-compiling.
---
 gnu/packages/glib.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)


[-- Attachment #2: 0030-glib-Verify-the-cross-compiled-python-is-used-in-ins.patch --]
[-- Type: text/x-patch, Size: 1195 bytes --]

diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 25c5ae494b..244544ea6f 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -77,6 +77,8 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
+  #:use-module (srfi srfi-26)
   #:use-module ((srfi srfi-1) #:hide (zip))
 
   ;; Export variables up-front to allow circular dependency with the 'xorg'
@@ -200,7 +202,15 @@ shared NFS home directories.")
     (outputs '("out"   ; everything
                "bin")) ; glib-mkenums, gtester, etc.; depends on Python
     (arguments
-     `(#:disallowed-references (,tzdata-for-tests)
+     `(#:disallowed-references
+       (,tzdata-for-tests
+        ;; Verify glib-mkenums, gtester, ... use the cross-compiled
+        ;; python.
+        ,@(if (%current-target-system)
+              (map (cut gexp-input <> #:native? #t)
+                   `(,(this-package-native-input "python")
+                     ,(this-package-native-input "python-wrapper")))
+              '()))
        #:configure-flags '("-Dman=true"
                            "-Dselinux=disabled")
        #:phases

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (28 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3 Maxime Devos
                   ` (6 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 2136 bytes --]

For cross-compilation, meson needs to be passed a
‘cross file’ with information on the architecture,
CPU type, endianness and operating system, and the
name of the cross-compiler binaries.

The new module (guix build meson-configuration) has
some utilities for writing these cross files, used
by 'make-cross-file' in a G-exp.  The values for
the cross file are generated by 'make-machine-alist'
and 'make-binaries-alist'.

'make-machine-alist' and 'make-binaries-alist' live
on the host side, such that new architectures and operating
systems can be added without causing rebuilds for old
architectures.

Currently, only GNU/Hurd, GNU/Linux, MinGW, x86-32 and
x86-64 are supported by 'make-machine-alist'. For other
architectures, someone needs to figure out what to
use as ‘CPU type’ first.  Only i686-linux-gnu has been
tested.

This has been tested with:

$ ./pre-inst-env guix build glib --target=i686-linux-gnu

on a x86_64-linux system.  ‘If it compiles, it should work.’

* guix/build/meson-configuration.scm
  (configuration-port): New parameter.
  (write-section-header): New procedure.
  (write-assignment): New procedure.
  (write-assignments): New procedure.
* guix/build-system/meson.scm
  (target-hurd?): New predicate.
  (make-machine-alist): New procedure.
  (make-binaries-alist): New procedure.
  (make-cross-file): New procedure.
  (meson-cross-build): New procedure.
  (lower)[build-inputs]: Add standard cross packages when cross-compiling.
  Do not include regular 'inputs' when cross-compiling.
  (lower)[host-inputs]: Include 'inputs' when cross-compiling.
  (lower)[target-inputs]: Add cross packages when cross-compiling.
  (lower)[build]: Call 'meson-cross-build' instead of 'cross-build'
  when cross-compiling.
  (lower)[target]: Set it.
  (lower)[private-keywords]: Do not remove #:target when cross-compiling.
---
 Makefile.am                        |   1 +
 guix/build-system/meson.scm        | 197 ++++++++++++++++++++++++++---
 guix/build/meson-configuration.scm |  71 +++++++++++
 3 files changed, 250 insertions(+), 19 deletions(-)
 create mode 100644 guix/build/meson-configuration.scm


[-- Attachment #2: 0037-meson-Support-cross-compilation.patch --]
[-- Type: text/x-patch, Size: 13607 bytes --]

diff --git a/Makefile.am b/Makefile.am
index a10e06e5a7..d4bf626fd5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -234,6 +234,7 @@ MODULES =					\
   guix/build/emacs-utils.scm			\
   guix/build/java-utils.scm			\
   guix/build/lisp-utils.scm			\
+  guix/build/meson-configuration.scm		\
   guix/build/maven/java.scm			\
   guix/build/maven/plugin.scm			\
   guix/build/maven/pom.scm			\
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 5adc0f92c8..1f763af2aa 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,7 +31,8 @@
   #:use-module (guix packages)
   #:use-module (ice-9 match)
   #:export (%meson-build-system-modules
-            meson-build-system))
+            meson-build-system
+            make-cross-file))
 
 ;; Commentary:
 ;;
@@ -40,6 +42,62 @@
 ;;
 ;; Code:
 
+(define (target-hurd? triplet)
+  (and (string-suffix? "-gnu" triplet)
+       (not (string-contains triplet "linux"))))
+
+(define (make-machine-alist triplet)
+  "Make an association list describing what should go into
+the ‘host_machine’ section of the cross file when cross-compiling
+for TRIPLET."
+  `((system . ,(cond ((target-hurd? triplet) "gnu")
+                     ((target-linux? triplet) "linux")
+                     ((target-mingw? triplet) "windows")
+                     (#t (error "meson: unknown operating system"))))
+    (cpu_family . ,(cond ((target-x86-32? triplet) "x86")
+                         ((target-x86-64? triplet) "x86_64")
+                         ((target-arm32? triplet) "arm")
+                         ((target-aarch64? triplet) "aarch64")
+                         ((target-powerpc? triplet)
+                          (if (target-64bit? triplet)
+                              "ppc64"
+                              "ppc"))
+                         (#t (error "meson: unknown architecture"))))
+    (cpu . ,(cond ((target-x86-32? triplet) ; i386, ..., i686
+                   (substring triplet 0 4))
+                  ((target-x86-64? triplet) "x86_64")
+                  (#t (error "meson: unknown CPU"))))
+    (endian . ,(cond ((string-prefix? "powerpc64le-" triplet) "little")
+                     ((string-prefix? "mips64el-" triplet) "little")
+                     ((target-x86-32? triplet) "little")
+                     ((target-x86-64? triplet) "little")
+                     (#t (error "meson: unknown architecture"))))))
+
+(define (make-binaries-alist triplet)
+  "Make an associatoin list describing what should go into
+the ‘binaries’ section of the cross file when cross-compiling for
+TRIPLET."
+  `((c . ,(cc-for-target triplet))
+    (cpp . ,(cxx-for-target triplet))
+    (pkgconfig . ,(pkg-config-for-target triplet))
+    (objcopy . ,(string-append triplet "-objcopy"))
+    (ar . ,(string-append triplet "-ar"))
+    (ld . ,(string-append triplet "-ld"))
+    (strip . ,(string-append triplet "-strip"))))
+
+(define (make-cross-file triplet)
+  (computed-file "cross-file"
+    (with-imported-modules '((guix build meson-configuration))
+      #~(begin
+          (use-modules (guix build meson-configuration))
+          (call-with-output-file #$output
+            (lambda (f)
+              (parameterize ((configuration-port f))
+                (write-section-header "host_machine")
+                (write-assignments '#$(make-machine-alist triplet))
+                (write-section-header "binaries")
+                (write-assignments '#$(make-binaries-alist triplet)))))))))
+
 (define %meson-build-system-modules
   ;; Build-side modules imported by default.
   `((guix build meson-build-system)
@@ -68,24 +126,34 @@
                 #:rest arguments)
   "Return a bag for NAME."
   (define private-keywords
-    `(#:meson #:ninja #:inputs #:native-inputs #:outputs #:target))
-
-  (and (not target) ;; TODO: add support for cross-compilation.
-       (bag
-         (name name)
-         (system system)
-         (build-inputs `(("meson" ,meson)
-                         ("ninja" ,ninja)
-                         ,@native-inputs
-                         ,@inputs
-                         ;; Keep the standard inputs of 'gnu-build-system'.
-                         ,@(standard-packages)))
-         (host-inputs (if source
-                          `(("source" ,source))
-                          '()))
-         (outputs outputs)
-         (build meson-build)
-         (arguments (strip-keyword-arguments private-keywords arguments)))))
+    `(#:meson #:ninja #:inputs #:native-inputs #:outputs
+      ,@(if target
+            '()
+            '(#:target))))
+
+  (bag
+    (name name)
+    (system system) (target target)
+    (build-inputs `(("meson" ,meson)
+                    ("ninja" ,ninja)
+                    ,@native-inputs
+                    ,@(if target '() inputs)
+                    ;; Keep the standard inputs of 'gnu-build-system'.
+                    ,@(if target
+                          (standard-cross-packages target 'host)
+                          '())
+                    ,@(standard-packages)))
+    (host-inputs `(,@(if source
+                         `(("source" ,source))
+                         '())
+                   ,@(if target inputs '())))
+    ;; Keep the standard inputs of 'gnu-buid-system'.
+    (target-inputs (if target
+                       (standard-cross-packages target 'target)
+                       '()))
+    (outputs outputs)
+    (build (if target meson-cross-build meson-build))
+    (arguments (strip-keyword-arguments private-keywords arguments))))
 
 (define* (meson-build name inputs
                       #:key
@@ -161,6 +229,97 @@ has a 'meson.build' file."
                       #:disallowed-references disallowed-references
                       #:guile-for-build guile)))
 
+(define* (meson-cross-build name
+                            #:key
+                            target
+                            build-inputs host-inputs target-inputs
+                            guile source
+                            (outputs '("out"))
+                            (configure-flags ''())
+                            (search-paths '())
+                            (native-search-paths '())
+
+                            (build-type "debugoptimized")
+                            (tests? #f)
+                            (test-target "test")
+                            (glib-or-gtk? #f)
+                            (parallel-build? #t)
+                            (parallel-tests? #f)
+                            (validate-runpath? #t)
+                            (patch-shebangs? #t)
+                            (strip-binaries? #t)
+                            (strip-flags ''("--strip-debug"))
+                            (strip-directories ''("lib" "lib64" "libexec"
+                                                  "bin" "sbin"))
+                            (elf-directories ''("lib" "lib64" "libexec"
+                                                "bin" "sbin"))
+                            (phases '%standard-phases)
+                            (system (%current-system))
+                            (imported-modules %meson-build-system-modules)
+                            (modules '((guix build meson-build-system)
+                                       (guix build utils)))
+                            allowed-references
+                            disallowed-references)
+  "Cross-build SOURCE for TARGET using MESON, and with INPUTS, assuming that
+SOURCE has a 'meson.build' file."
+  (define cross-file
+    (make-cross-file target))
+  (define inputs
+    (if (null? target-inputs)
+        (input-tuples->gexp host-inputs)
+        #~(append #$(input-tuples->gexp host-inputs)
+                  #+(input-tuples->gexp target-inputs))))
+  (define builder
+    (with-imported-modules imported-modules
+      #~(begin
+          (use-modules #$@(sexp->gexp modules))
+
+          (define build-phases
+            #$(let ((phases (if (pair? phases) (sexp->gexp phases) phases)))
+                (if glib-or-gtk?
+                    phases
+                    #~(modify-phases #$phases
+                        (delete 'glib-or-gtk-compile-schemas)
+                        (delete 'glib-or-gtk-wrap)))))
+
+          ;; Do not use 'with-build-variables', as there should be
+          ;; no reason to use %build-inputs and friends.
+          (meson-build #:source #+source
+                       #:system #$system
+                       #:outputs #$(outputs->gexp outputs)
+                       #:inputs #$inputs
+                       #:native-inputs #+(input-tuples->gexp build-inputs)
+                       #:search-paths '#$(sexp->gexp
+                                          (map search-path-specification->sexp
+                                                     search-paths))
+                       #:native-search-paths '#$(sexp->gexp
+                                                 (map search-path-specification->sexp
+                                                      native-search-paths))
+                       #:phases build-phases
+                       #:configure-flags `("--cross-file" #+cross-file
+                                           ,@#$(sexp->gexp configure-flags))
+                       #:build-type #$build-type
+                       #:tests? #$tests?
+                       #:test-target #$test-target
+                       #:parallel-build? #$parallel-build?
+                       #:parallel-tests? #$parallel-tests?
+                       #:validate-runpath? #$validate-runpath?
+                       #:patch-shebangs? #$patch-shebangs?
+                       #:strip-binaries? #$strip-binaries?
+                       #:strip-flags #$(sexp->gexp strip-flags)
+                       #:strip-directories #$(sexp->gexp strip-directories)
+                       #:elf-directories #$(sexp->gexp elf-directories)))))
+
+  (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
+                                                  system #:graft? #f)))
+    (gexp->derivation name builder
+                      #:system system
+                      #:target target
+                      #:substitutable? substitutable?
+                      #:allowed-references allowed-references
+                      #:disallowed-references disallowed-references
+                      #:guile-for-build guile)))
+
 (define meson-build-system
   (build-system
     (name 'meson)
diff --git a/guix/build/meson-configuration.scm b/guix/build/meson-configuration.scm
new file mode 100644
index 0000000000..81b4eaa7e1
--- /dev/null
+++ b/guix/build/meson-configuration.scm
@@ -0,0 +1,71 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build meson-configuration)
+  #:use-module (ice-9 match)
+  #:export (write-section-header write-assignment
+            write-assignments make-machine-alist
+            configuration-port))
+
+;; Commentary:
+;;
+;; Utilities for generating a ‘Cross build definition file’ for
+;; the Meson build system.  Configuration values are currently
+;; never escaped.  In practice this is unlikely to be a problem
+;; in the build environment.
+;;
+;; Code:
+
+(define configuration-port
+  (fluid->parameter (make-unbound-fluid)))
+
+(define (write-section-header section-name)
+  "Write a section header for section named SECTION-NAME
+to the configuration port."
+  (format (configuration-port) "[~a]~%" section-name))
+
+(define (write-assignment key value)
+  "Write an assignment of VALUE to KEY to the configuration
+port.  VALUE must be a string (without any special characters
+such as quotes), a boolean or an integer.  Lists are currently
+not supported"
+  (define port (configuration-port))
+  (match value
+    ((? string?)
+     (format port "~a = '~a'~%" key value))
+    ((? integer?)
+     (format port "~a = ~a~%" key value))
+    (#f
+     (format port "~a = true~%" key))
+    (#t
+     (format port "~a = false~%" key))))
+
+(define* (write-assignments alist)
+  "Write the assignments in ALIST, an association list,
+to the configuration port."
+  (for-each (match-lambda
+              ((key . value)
+               (write-assignment key value)))
+            alist))
+
+(define* (make-machine-alist #:key system cpu-family cpu endian)
+  "Make an association list for the [host_machine] section."
+  `((system . ,system)
+    (cpu-family . ,cpu-family)
+    (cpu . ,cpu)
+    (endian . ,endian)))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (29 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression Maxime Devos
                   ` (5 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 340 bytes --]

There does not seem to be any reason to only move man3 pages.
So, move all man pages to a separate output for documentation.

* gnu/packages/tls.scm
  (openssl)[arguments]<#:phases>{move-extra-documentation}: Move
  all man pages, not only man3.
---
 gnu/packages/tls.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)


[-- Attachment #2: 0020-openssl-Move-all-man-pages-to-separate-output-not-on.patch --]
[-- Type: text/x-patch, Size: 1408 bytes --]

diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9aa0b5a212..c178806805 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -411,16 +411,16 @@ required structures.")
                         (find-files lib "\\.a$")))))
         (add-after 'install 'move-extra-documentation
           (lambda _
-               ;; Move man3 pages and full HTML documentation to "doc".
+               ;; Move man pages and full HTML documentation to "doc".
                (let* ((out    #$output)
-                      (man3   (string-append out "/share/man/man3"))
-                      (html (string-append out "/share/doc/openssl"))
+                      (man    (string-append out "/share/man"))
+                      (html   (string-append out "/share/doc/openssl"))
                       (doc    #$output:doc)
-                      (man-target (string-append doc "/share/man/man3"))
+                      (man-target (string-append doc "/share/man"))
                       (html-target (string-append doc "/share/doc/openssl")))
-                 (mkdir-p (dirname man3-target))
+                 (mkdir-p (dirname man-target))
                  (mkdir-p (dirname html-target))
-                 (rename-file man3 man-target)
+                 (rename-file man man-target)
                  (rename-file html html-target))))
         (add-after
          'install 'remove-miscellany

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (30 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3 Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling Maxime Devos
                   ` (4 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 257 bytes --]

This allows using #$(this-package-input ...) later.

* gnu/packages/tcl.scm (tk)[arguments]<#:configure-flags>: Make
  this a G-expression instead of an S-expression.
---
 gnu/packages/tcl.scm | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)


[-- Attachment #2: 0032-tk-Make-configure-flags-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 996 bytes --]

diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index 5fccfa5da9..c87a8187f2 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -230,15 +230,16 @@ X11 GUIs.")
                                           "/lib -lfontconfig")))))))
 
        #:configure-flags
+       ,#~
        (list (string-append "--with-tcl="
                             (assoc-ref %build-inputs "tcl")
                             "/lib")
              ;; This is needed when cross-compiling, see:
              ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=719247
-             ,@(if (%current-target-system)
-                   '("tcl_cv_strtod_buggy=1"
-                     "ac_cv_func_strtod=yes")
-                   '()))
+             #$@(if (%current-target-system)
+                    #~("tcl_cv_strtod_buggy=1"
+                        "ac_cv_func_strtod=yes")
+                    #~()))
 
        ;; The tests require a running X server, so we just skip them.
        #:tests? #f))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (31 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs " Maxime Devos
                   ` (3 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

* gnu/packages/elf.scm
  (libelf)[arguments]<#:phases>{delete-configure}: Regenerate
  the configure script when cross-compiling.
  (libelf)[arguments]<#:phases>{configure}: Do not replace
  when cross-compiling.
  (libelf)[native-inputs]: Add autoconf when cross-compiling.
---
 gnu/packages/elf.scm | 48 +++++++++++++++++++++++++++++---------------
 1 file changed, 32 insertions(+), 16 deletions(-)


[-- Attachment #2: 0034-libelf-Use-the-cross-compiler-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 3516 bytes --]

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 0309dd95b5..66c2334e5c 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2020 Mark Wielaard <mark@klomp.org>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module (guix build-system gnu)
   #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gcc)
@@ -205,22 +207,36 @@ static analysis of the ELF binaries at hand.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; This old `configure' script doesn't support
-             ;; variables passed as arguments.
-             (let ((out (assoc-ref outputs "out")))
-               (setenv "CONFIG_SHELL" (which "bash"))
-               (invoke "./configure"
-                       (string-append "--prefix=" out)
-                       ,@(if (string=? "powerpc64le-linux"
-                                       (%current-system))
-                             '("--host=powerpc64le-unknown-linux-gnu")
-                             '())
-                       ,@(if (string=? "aarch64-linux"
-                                       (%current-system))
-                             '("--host=aarch64-unknown-linux-gnu")
-                             '()))))))))
+         ,(if (%current-target-system)
+              ;; This old 'configure' script doesn't
+              ;; support cross-compilation well. E.g., it fails
+              ;; to find the cross-compiler.
+              `(add-before 'bootstrap 'delete-configure
+                 (lambda _
+                   (delete-file "configure")))
+              `(replace 'configure
+                 ;; This old `configure' script doesn't support
+                 ;; variables passed as arguments. TODO: would
+                 ;; simply regenerating 'configure' work
+                 ;; well enough, even if compiling natively
+                 ;; on powerpc or aarch64?
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "out")))
+                     (setenv "CONFIG_SHELL" (which "bash"))
+                     (invoke "./configure"
+                             (string-append "--prefix=" out)
+                             ,@(if (string=? "powerpc64le-linux"
+                                             (%current-system))
+                                   '("--host=powerpc64le-unknown-linux-gnu")
+                                   '())
+                             ,@(if (string=? "aarch64-linux"
+                                             (%current-system))
+                                   '("--host=aarch64-unknown-linux-gnu")
+                                   '())))))))))
+    (native-inputs
+     (if (%current-target-system)
+         `(("autoconf" ,autoconf))
+         '()))
     (home-page (string-append "https://web.archive.org/web/20181111033959/"
                               "http://www.mr511.de/software/english.html"))
     (synopsis "ELF object file access library")

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs when cross-compiling.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (32 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs Maxime Devos
                   ` (2 subsequent siblings)
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 318 bytes --]

%build-inputs does not exists when cross-compiling,
so use #$(this-package-input ...) instead.

* gnu/packages/tcl.scm
  (tk)[arguments]<#:configure-flags>: Use 'this-package-input'
  instead of '%build-inputs' when cross-compiling.
---
 gnu/packages/tcl.scm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)


[-- Attachment #2: 0033-tk-Do-not-use-build-inputs-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 946 bytes --]

diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index c87a8187f2..91ba8bbb3f 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -29,6 +29,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system perl)
@@ -232,7 +233,9 @@ X11 GUIs.")
        #:configure-flags
        ,#~
        (list (string-append "--with-tcl="
-                            (assoc-ref %build-inputs "tcl")
+                            #$(if (%current-target-system)
+                                  (this-package-input "tcl")
+                                  #~(assoc-ref %build-inputs "tcl"))
                             "/lib")
              ;; This is needed when cross-compiling, see:
              ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=719247

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (33 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs " Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs' Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate Maxime Devos
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 416 bytes --]

Previously, opendht referred to 'nettle-3.7'.
But nettle-3.7 has been renamed to simply 'nettle'.
So, refer to 'nettle' instead of 'nettle-3.7'.

This should fix recent evaluation failures of core-updates
on ci.guix.gnu.org.

* gnu/packages/networking.scm
  (opendht)[inputs]{nettle}: Refer to 'nettle' instead of 'nettle-3.7'.
---
 gnu/packages/networking.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


[-- Attachment #2: 0035-opendht-Correct-nettle-variable-name-in-inputs.patch --]
[-- Type: text/x-patch, Size: 534 bytes --]

diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 62c4d7a392..6b154067b1 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3478,7 +3478,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
     (build-system cmake-build-system)
     (inputs
      `(("argon2" ,argon2)
-       ("nettle" ,nettle-3.7)
+       ("nettle" ,nettle)
        ("readline" ,readline)
        ("jsoncpp" ,jsoncpp)
        ("openssl" ,openssl)             ;required for the DHT proxy

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs'.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (34 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate Maxime Devos
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 379 bytes --]

Otherwise, "tzdata" won't be found when cross-compiling
and string-append will complain about types. Alternatively,
"tzdata" could be moved from 'native-inputs' to 'inputs'.

* gnu/packages/glib.scm (glib)[arguments]<#:phases>{pre-check}:
  Look up "tzdata" in 'native-inputs', not 'inputs'.
---
 gnu/packages/glib.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)


[-- Attachment #2: 0031-glib-Look-up-tzdata-in-native-inputs-not-inputs.patch --]
[-- Type: text/x-patch, Size: 882 bytes --]

diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 244544ea6f..57e8282a89 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -251,10 +251,11 @@ shared NFS home directories.")
                                  (package-version python)))))
              #t))
          (add-before 'check 'pre-check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
+           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
              ;; For tests/gdatetime.c.
              (setenv "TZDIR"
-                     (string-append (assoc-ref inputs "tzdata")
+                     (string-append (assoc-ref (or native-inputs inputs)
+                                               "tzdata")
                                     "/share/zoneinfo"))
              ;; Some tests want write access there.
              (setenv "HOME" (getcwd))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate.
       [not found] <cover.1623680697.git.maximedevos@telenet.be>
                   ` (35 preceding siblings ...)
  2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs' Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
  36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
  To: 49025

[-- Attachment #1: Type: text/plain, Size: 263 bytes --]

* guix/utils.scm (target-x86-32?, target-x86-64?): New predicates.
* tests/utils.scm ("target-x86-32?", "target-x86-64?"): New tests.
---
 guix/utils.scm  | 20 ++++++++++++++++++++
 tests/utils.scm | 23 +++++++++++++++++++++++
 2 files changed, 43 insertions(+)


[-- Attachment #2: 0002-utils-Define-a-target-x86-32-and-target-x86-64-predi.patch --]
[-- Type: text/x-patch, Size: 2695 bytes --]

diff --git a/guix/utils.scm b/guix/utils.scm
index 4ff2602e23..2256ea2ca6 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -84,6 +84,8 @@
             package-name->name+version
             target-linux?
             target-mingw?
+            target-x86-32?
+            target-x86-64?
             target-arm32?
             target-aarch64?
             target-arm?
@@ -553,6 +555,24 @@ a character other than '@'."
   (and target
        (string-suffix? "-mingw32" target)))
 
+(define* (target-x86-32? #:optional (target (or (%current-target-system)
+                                                (%current-system))))
+  "Is the architecture of TARGET a variant of Intel's 32-bit architecture
+(IA32)?"
+  ;; Intel also has a 16-bit architecture in the iN86 series, i286
+  ;; (see, e.g. https://en.wikipedia.org/wiki/Intel/808286) so this
+  ;; procedure is not named target-x86?.
+  (or (string-prefix? "i386-" target)
+      (string-prefix? "i486-" target)
+      (string-prefix? "i586-" target)
+      (string-prefix? "i686-" target)))
+
+(define* (target-x86-64? #:optional (target (or (%current-target-system)
+                                                 (%current-system))))
+  "Is the architecture of TARGET a variant of Intel/AMD's 64-bit
+architecture (x86_64)?"
+  (string-prefix? "x86_64-" target))
+
 (define* (target-arm32? #:optional (target (or (%current-target-system)
                                                (%current-system))))
   (string-prefix? "arm" target))
diff --git a/tests/utils.scm b/tests/utils.scm
index 80a0e669a4..92439b5587 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -306,6 +306,29 @@ skip these tests."
        '("i686-linux-gnu" "i686-pc-gnu"
          "i686-w64-mingw32")))
 
+(test-equal "target-x86-32?"
+  '(#f #f #f #t #t #t #t #f)
+  ;; These are (according to Wikipedia) two RISC architectures
+  ;; by Intel and presumably not compatible with the x86-32 series.
+  (map target-x86-32?
+       '("i860-gnu" "i960-gnu"
+         ;; This is a 16-bit architecture
+         "i286-gnu"
+         ;; These are part of the x86-32 series.
+         "i386-gnu" "i486-gnu" "i586-gnu" "i686-gnu"
+         ;; Maybe this one will exist some day, but not yet.
+         "i786-gnu")))
+
+(test-equal "target-x86-64?"
+  '(#t #f #f #f)
+  (map target-x86-64?
+       `("x86_64-linux-gnu" "i386-linux-gnu"
+         ;; Just because it includes "64" doesn't make it 64-bit.
+         "aarch64-linux-gnu"
+         ;; Note that (expt 2 109) in decimal notation starts with 64.
+         ;; However, it isn't 32-bit.
+         ,(format #f "x86_~a-linux-gnu" (expt 2 109)))))
+
 (test-end)
 
 (false-if-exception (delete-file temp-file))

^ permalink raw reply related	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2021-06-14 16:09 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <cover.1623680697.git.maximedevos@telenet.be>
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input " Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts " Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3 Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs " Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs' Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate Maxime Devos

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.