guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/48: gnu: automake: Support cross-build.


From: guix-commits
Subject: 03/48: gnu: automake: Support cross-build.
Date: Sun, 19 Apr 2020 10:22:06 -0400 (EDT)

janneke pushed a commit to branch wip-hurd-vm
in repository guix.

commit ec04ee6809979e7987058d366a9b00b81e984d37
Author: Jan (janneke) Nieuwenhuizen <address@hidden>
AuthorDate: Sat Apr 18 19:50:06 2020 +0200

    gnu: automake: Support cross-build.
    
    Automake cannot be cross-built properly: it lacks the concept of
    <tool>-for-build.  It runs the host `autoconf' during build.
    
    * gnu/packages/autotools.scm (automake)[inputs]: When cross-building, add
    autoconf and perl.
    [native-inputs]: when cross-building, use -for-build names.
    [arguments]: When cross-building, add `fake-cross-build' phase to substitute
    autoconf and perl.
---
 gnu/packages/autotools.scm | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index 91d2c8a..b57ab17 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -286,15 +286,23 @@ output is indexed in many ways to simplify browsing.")
              (patches
               (search-patches "automake-skip-amhello-tests.patch"))))
     (build-system gnu-build-system)
+    (inputs
+     (if (%current-target-system)
+         `(("autoconf" ,autoconf-wrapper)
+           ("perl" ,perl))
+         '()))
     (native-inputs
-     `(("autoconf" ,autoconf-wrapper)
-       ("perl" ,perl)))
+     (if (%current-target-system)
+         `(("autoconf-for-build" ,autoconf-wrapper)
+           ("perl-for-build" ,perl))
+         `(("autoconf" ,autoconf-wrapper)
+           ("perl" ,perl))))
     (native-search-paths
      (list (search-path-specification
             (variable "ACLOCAL_PATH")
             (files '("share/aclocal")))))
     (arguments
-     '(#:modules ((guix build gnu-build-system)
+     `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
                   (srfi srfi-1)
                   (srfi srfi-26)
@@ -323,6 +331,21 @@ output is indexed in many ways to simplify browsing.")
                   (string-append "exit 77\n" all "\n")))
                #t))
 
+           ,@(if (%current-target-system)
+                 ;; Automake cannot be cross-built properly; it lacks the
+                 ;; concept of tool-for-build: it uses a single $PERL during
+                 ;; build and for host
+                 `((add-after 'install 'fake-cross-build
+                     (lambda* (#:key build inputs outputs #:allow-other-keys)
+                       (let ((autoconf (assoc-ref inputs "autoconf"))
+                             (perl (assoc-ref inputs "perl"))
+                             (out  (assoc-ref outputs "out")))
+                         (substitute* (find-files (string-append out "/bin"))
+                           (("/gnu/store/[^/]*-autoconf-[^/]*") autoconf)
+                           (("/gnu/store/[^/]*-perl-[^/]*") perl))
+                         #t))))
+                 '())
+
          ;; Files like `install-sh', `mdate.sh', etc. must use
          ;; #!/bin/sh, otherwise users could leak erroneous shebangs
          ;; in the wild.  See <http://bugs.gnu.org/14201> for an



reply via email to

[Prev in Thread] Current Thread [Next in Thread]