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

From: Kei Kebreau <[email-masked]>
Date: Wed, 12 Jul 2017 19:31:31 -0400

[email-masked] (Ludovic Courtès) writes:

> Kei Kebreau <[email-masked]> skribis:
>
>> +               ;; Ensure that Maxima will have access to GCC and its required
>> +               ;; components at runtime.
>
> In fact, if it’s an optional feature, it would be better to take GCC &
> co. from $PATH, because GCC is a huge dependency.  (Same for the gcl
> change.)
>
> Thoughts?
>

I started on this patchset because Guix's Maxima cannot graph functions.
This feature relies on GCL's 'compile' function. The 'compile' function
seems to be a Common Lisp standard since at least the publication of the
CLtL2 standard. Maxima assumes (correctly) that this function is present
and relies on it for various base functionalities (compiling Maxima math
functions to compiled Lisp functions, graphing, etc.).

I turns out that fixing the underlying issue with GCL removes the need
for GCC's presence at runtime, but binutils is still necessary due to
Maxima using the 'compile' function from GCL directly. This stems from
the GCC package not finding the binutils at runtime, i.e.

    guix environment --pure --ad-hoc gcc -- gcc hello-world.c

returns

    gcc: error trying to exec 'as': execvp: No such file or directory

but

    guix environment --pure --ad-hoc gcc -- gcc -S hello-world.c

compiles hello-world.c to its assembly language equivalent. Whether or
not this is intended is unclear to me. FWIW, if the GCC package itself
has access to the binutils at runtime, wrapping GCL and Maxima is unnecessary.

> Ludo’.