Hi! [email protected] skribis:
> commit 6833403fb393a513c77aa3cb8fca7d57b87befe1 > Author: Jan (janneke) Nieuwenhuizen <[email protected]> > AuthorDate: Sat Apr 18 19:49:54 2020 +0200 > > gnu: autoconf: Support cross-build. > > Autoconf cannot be cross-built properly: it lacks the concept of > <tool>-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. Thanks for fixing it! Some comments: > + (inputs > + (if (%current-target-system) > + `(("perl" ,perl) > + ("m4" ,m4)) > + '())) > (native-inputs > - `(("perl" ,perl) > - ("m4" ,m4))) > + (if (%current-target-system) > + `(("perl-for-build" ,perl) > + ("m4-for-build" ,m4)) > + `(("perl" ,perl) > + ("m4" ,m4)))) You can remove the ‘if’ in both cases: we always need Perl/M4 both as a native input and as an input in both cases. However, that might trigger a rebuild, so perhaps you’ll have to leave the ifs, but with a TODO telling to remove it on the next rebuild or Marius will be mad at us. > + (arguments > + `(#:tests? #f Nope. :-) > + ,@(if (%current-target-system) > + `(#:phases > + (modify-phases %standard-phases > + ;; Autoconf cannot be cross-built properly: it lacks the > + ;; concept of <tool>-for-build. It even runs the host > + ;; `autom4te' (a perl script) during build. > + (add-after 'install 'fake-cross-build > + (lambda* (#:key build inputs outputs #:allow-other-keys) > + (let ((m4 (assoc-ref inputs "m4")) > + (perl (assoc-ref inputs "perl")) > + (out (assoc-ref outputs "out"))) > + (substitute* (find-files (string-append out "/bin")) > + (("/gnu/store/[^/]*-m4-[^/]*") m4) > + (("/gnu/store/[^/]*-perl-[^/]*") perl)) > + #t))))) Why is this needed? The ‘patch-shebangs’ phase normally takes the inputs, not the native inputs, when changing shebangs. (You previously found that something’s wrong there, but I forgot what…) Thanks, Ludo’.
