Subject: Re: [bug#48767] [PATCH 3/6] gnu: Add newlib-msp430.

From: Maxime Devos <[email-masked]>
Date: Sun, 26 Sep 2021 18:04:45 +0200

[email-masked] schreef op zo 26-09-2021 om 10:51 [-0400]:
> From: Morgan Smith <[email-masked]>
> 
> * gnu/packages/embedded.scm (newlib-msp430): New variable.
> ---
>  gnu/packages/embedded.scm | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
> 
> diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
> index 7073168b57..49f3eda5fb 100644
> --- a/gnu/packages/embedded.scm
> +++ b/gnu/packages/embedded.scm
> @@ -563,6 +563,41 @@ languages are C and C++.")
>                (variable "CROSS_LIBRARY_PATH")
>                (files '("msp430-elf/lib"))))))))
>  
> +(define-public newlib-msp430
> +  (package
> +    (name "newlib")
> +    (version "2.4.0")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "ftp://sourceware.org/pub/newlib/newlib-"
> +                                  version ".tar.gz"))
> +              (sha256
> +               (base32
> +                "01i7qllwicf05vsvh39qj7qp5fdifpvvky0x95hjq39mbqiksnsl"))))
> +    (build-system gnu-build-system)

There already is a newlib package: newlib-arm-none-eabi.
Could you use (package (inherit "newlib-msp430") ...) to reduce duplication?
Also, could you
  
   (a) change the name to, say, "newlib-msp430"
or (b) instead of defining a new "newlib" package, keep a single newlib package
and make the architecture-dependent tweaks depend on (%current-target-system)?

such that "[email-masked]" is an unambigious specification (or, at least, not
more ambigious than it was before), usable for "specification->package"?

> +    (arguments
> +     `(#:out-of-source? #t
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'fix-references-to-/bin/sh
> +           (lambda _
> +             (substitute* '("libgloss/msp430/Makefile.in"
> +                            "libgloss/libnosys/Makefile.in"
> +                            "libgloss/Makefile.in")
> +               (("/bin/sh") (which "sh"))))))

This duplication can be removed by inheriting from 'newlib-arm-none-eabi'.

> +       #:configure-flags '("--target=msp430-elf")))

I'd suggest adding #:target "msp430-elf" to 'arguments' instead
of setting #:configure-flags directly.  That way, guix knows we are
cross-compiling and won't try to run tests and won't try to
run 'ldconfig'.

Greetings,
Maxime.