From 3d776e0077d62000f20d23a1b42b32fef718a503 Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Sat, 18 Apr 2020 19:49:54 +0200 Subject: [PATCH] gnu: autoconf: Support cross-build. Autoconf cannot be cross-built properly: it lacks the concept of -for-build. It runs the host `autom4te' (a perl script) during build. * gnu/packages/autotools.scm (autoconf)[inputs]: When cross-building, add perl and m4. [native-inputs]: when cross-building, use -for-build names. [arguments]: When cross-building, add `fake-cross-build' phase to substitute m4 and perl. --- gnu/packages/autotools.scm | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index 99ca52730e..fa3ced182f 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -55,12 +55,38 @@ (base32 "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4")))) (build-system gnu-build-system) + (inputs + ;; TODO: remove `if' in the next rebuild cycle. + (if (%current-target-system) + `(("perl" ,perl) + ("m4" ,m4)) + '())) (native-inputs `(("perl" ,perl) ("m4" ,m4))) ;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It ;; should use our own "cpp" instead of "/lib/cpp". - (arguments `(#:tests? #f)) + (arguments + `(#:tests? #f + ,@(if (%current-target-system) + `(#:phases + (modify-phases %standard-phases + ;; `patch-shebangs' patches shebangs only, and the Perl + ;; scripts use a re-exec feature that references the build + ;; hosts' perl. Also, M4 store references hide in the + ;; scripts. + (add-after 'install 'patch-non-shebang-references + (lambda* (#:key build inputs outputs #:allow-other-keys) + (let ((m4 (assoc-ref inputs "m4")) + (perl (assoc-ref inputs "perl")) + (out (assoc-ref outputs "out")) + (store-directory (%store-directory))) + (substitute* (find-files (string-append out "/bin")) + (((string-append store-directory "/[^/]*-m4-[^/]*")) m4) + (((string-append store-directory "/[^/]*-perl-[^/]*")) + perl)) + #t))))) + '()))) (home-page "https://www.gnu.org/software/autoconf/") (synopsis "Create source code configuration scripts") (description -- 2.26.0