Subject: Re: [bug#27628] [PATCH 1/3] gnu: gcl: Ensure gcc and binutils are available at runtime.

From: [email-masked] (Ludovic Courtès)
Date: Wed, 12 Jul 2017 14:04:35 +0200

Kei Kebreau <[email-masked]> skribis:

> * gnu/packages/lisp.scm (gcl)[arguments]: Add -fgnu89-inline to CFLAGS.
> Add GCC path to make-flags. Modify 'pre-conf' phase. Add 'wrap' phase.
> ---
>  gnu/packages/lisp.scm | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
>
> diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
> index e92ae2ebf..6bd9e94a7 100644
> --- a/gnu/packages/lisp.scm
> +++ b/gnu/packages/lisp.scm
> @@ -88,6 +88,10 @@
>       `(#:parallel-build? #f  ; The build system seems not to be thread safe.
>         #:tests? #f  ; There does not seem to be make check or anything similar.
>         #:configure-flags '("--enable-ansi") ; required for use by the maxima package
> +       #:make-flags (list
> +                     "CFLAGS=-fgnu89-inline" ; removes inline function warnings
> +                     (string-append "GCC=" (assoc-ref %build-inputs "gcc")
> +                                    "/bin/gcc"))
>         #:phases (modify-phases %standard-phases
>                    (add-before 'configure 'pre-conf
>                      (lambda _
> @@ -104,6 +108,24 @@
>                           (string-append "SHELL=" (which "bash")))
>                          (("SHELL=/bin/sh")
>                           (string-append "SHELL=" (which "sh"))))
> +                      (substitute* "h/linux.defs"
> +                        (("#CC") "CC")
> +                        (("-fwritable-strings") "")
> +                        (("-Werror") ""))
> +                      #t))
> +                  (add-after 'install 'wrap
> +                    (lambda* (#:key inputs outputs #:allow-other-keys)
> +                      (let* ((gcl (assoc-ref outputs "out"))
> +                             (input-path (lambda (lib path)
> +                                           (string-append
> +                                            (assoc-ref inputs lib) path)))
> +                             (binaries  '("gcc" "ld-wrapper" "binutils")))
> +
> +                        (wrap-program (string-append gcl "/bin/gcl")
> +                          `("PATH" prefix
> +                            ,(map (lambda (binary)
> +                                    (input-path binary "/bin"))
> +                                  binaries))))

Please add comments explaining why GCC and Binutils need to be available
at run time (and also libc and ld-wrapper?).  In the absence of an
explanation, my natural reaction would be to think this is a bug.  :-)

OK with this change, thanks!

Ludo’.