[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/05: gnu: automake: Support cross-build.
From: |
guix-commits |
Subject: |
05/05: gnu: automake: Support cross-build. |
Date: |
Sun, 19 Apr 2020 05:05:24 -0400 (EDT) |
janneke pushed a commit to branch wip-hurd-vm
in repository guix.
commit b21678a191ebd95a6016b439ef3a25aba4a1e71a
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