all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Maxime Devos <maximedevos@telenet.be>
To: Morgan.J.Smith@outlook.com, 48767@debbugs.gnu.org
Subject: [bug#48767] [PATCH] gnu: gcc-arm-none-eabi-7-2018-q2-update: Simplify build
Date: Fri, 01 Oct 2021 10:56:57 +0200	[thread overview]
Message-ID: <dbc48ef83474e4b22cc903e11b202df5824283d8.camel@telenet.be> (raw)
In-Reply-To: <SN6PR05MB4031A60A6B1D19CB3BCFF8CAC5A79@SN6PR05MB4031.namprd05.prod.outlook.com>

[-- Attachment #1: Type: text/plain, Size: 5233 bytes --]

Morgan.J.Smith@outlook.com schreef op ma 27-09-2021 om 17:59 [-0400]:
> From: Morgan Smith <Morgan.J.Smith@outlook.com>
> 
> * gnu/packages/embedded.scm
> (gcc-arm-none-eabi-4.9)[phases]: Add expand-version-string phase
> 
> (gcc-arm-none-eabi-7-2018-q2-update): Inherit from gcc-arm-none-eabi-4.9 and
> remove all the redundant bits.
> ---

I see you moved the definition of gcc-arm-none-eabi-7-2018-q2-update.  This patch
would be easier to review if it wasn't moved, as the diff would then be smaller.

> 
> Hello Maxime,
> 
> Thanks for the review!
> 
> Is this the appropriate time to tell you I also have a very eerily similar
> patch set read to go for a riscv cross compiler? Maybe trying to make this
> stuff reusable is a good thing to do. First step is to clean up the arm stuff I
> suppose.

I'm not really familiar with cross-compilation as done in (gnu packages embedded);
I'm more familiar with cross-compilation with "guix build PACKAGE --target=riscv64-...".
If you're doing the latter, you'll need to look at glibc-dynamic-linker in
(gnu packages bootstrap) and (gnu packages cross-base).

> I pretty sure this patch doesn't really change the packages at all in any
> meaningful way. Adding the DEV-PHASE version thing means that now when people
> type 'arm-none-eabi-gcc --version' they'll see in brackets the guix version
> number beside the actual version number.

> Also gcc-arm-none-eabi-7-2018-q2-update now has the 'with-multilib-list' configure
> flag set twice but it's pretty clear it just uses the latter value as it won't
> even compile with the inherited flag value.
> 
> There seems to be a weird glitch when you inherit a phase the uses
> `this-package' but you also specify arguments. I found a work around though.

Alternatively, you could use

  (receive (name version)
    (package-name->name+version (strip-store-file-name (assoc-ref outputs "out")))
    (write version to gcc/DEV-PHASE))

in the 'expand-version-string build phase of gcc-arm-none-eabi-4.9.
Or set the version in a snippet of the 'origin' records (gcc/DEV-PHASE is source
code, right?).  Possibly using (display ,version) instead of
(display ,(package-version this-package)) avoids the issue (not 100% sure though).

[...]

> +;;; The following definitions are for the "7-2018-q2-update" variant of the
> +;;; ARM cross toolchain as offered on https://developer.arm.com
> +(define-public gcc-arm-none-eabi-7-2018-q2-update
> +  (let ((revision "2")
> +        (svn-revision 261907))
> +    (package (inherit gcc-arm-none-eabi-6)
> +      (version (string-append "7-2018-q2-update-"

The version strings of GCC are things like "11.2.0" or "6.5.0",
not strings like "7.5.0".  As this is a SVN snapshot, and appears to be
based on the 7.?.? series, maybe something like "7.MINOR.PATCH-REVISION-SVNREVISION"
would be appropriate?

I'm wondering why a SVN revision revision is used, as presumably the embedded-7-branch
has been merged and would be available from an appropriately-configured gcc@8.6.0, gcc@9.4.0,
or gcc@10.3.0?

A comment next to gcc-arm-none-eabi-4.9 says

;; We must not use the released GCC sources here, because the cross-compiler
;; does not produce working binaries.  Instead we take the very same SVN
;; revision from the branch that is used for a release of the "GCC ARM
;; embedded" project on launchpad.
;; See https://launchpadlibrarian.net/218827644/release.txt

but maybe these bugs have been solved by now, or is using the branch still required?

> +                              revision "." (number->string svn-revision)))
> +      (source
> +       (origin
> +         (method svn-fetch)
> +         (uri (svn-reference
> +               (url "svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-7-branch/")
> +               (revision svn-revision)))
> +         (file-name (string-append "gcc-arm-embedded-" version "-checkout"))
> +         (sha256
> +          (base32
> +           "192ggs63bixf3irpijgfkjks73yx1r3a4i6grk1y0i0iny76pmx5"))
> +         (patches
> +          (append
> +           (origin-patches (package-source gcc-7))
> +           (search-patches "gcc-7-cross-environment-variables.patch")))))
> +      (arguments
> +       (substitute-keyword-arguments (package-arguments gcc-arm-none-eabi-4.9)
> +         ((#:configure-flags flags)
> +          ;; I add this flag on the end so it overrides the previously set value
> +          `(append ,flags (list "--with-multilib-list=rmprofile")))
> +         ((#:phases phases)
> +          `(modify-phases ,phases
> +             ;; XXX: I replicated this phase just so that the version is
> +             ;; correct.  This phase automatically gets the correct version if
> +             ;; I don't specify any arguments for a package for some reason
> +             ;; (see gcc-arm-none-eabi-6)
> +             (replace 'expand-version-string
> +               (lambda _
> +                 (make-file-writable "gcc/DEV-PHASE")
> +                 (with-output-to-file "gcc/DEV-PHASE"
> +                   (lambda ()
> +                     (display ,(package-version this-package)))))))))))))
> +

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

  reply	other threads:[~2021-10-01  8:58 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-31 23:08 [bug#48767] [PATCH 0/7] Add msp430 toolchain Morgan Smith
2021-06-01  3:09 ` [bug#48767] [PATCH 1/7] gnu: Add gcc-msp430-support-files Morgan.J.Smith
2021-09-26 14:51 ` [bug#48767] [PATCH 1/6] " Morgan.J.Smith
2021-09-27 21:59 ` [bug#48767] [PATCH] gnu: gcc-arm-none-eabi-7-2018-q2-update: Simplify build Morgan.J.Smith
2021-10-01  8:56   ` Maxime Devos [this message]
2022-08-16 15:34 ` [bug#48767] [PATCH 0/7] Add msp430 toolchain Jean Pierre De Jesus DIAZ via Guix-patches via

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dbc48ef83474e4b22cc903e11b202df5824283d8.camel@telenet.be \
    --to=maximedevos@telenet.be \
    --cc=48767@debbugs.gnu.org \
    --cc=Morgan.J.Smith@outlook.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.