Package: guix-patches;
Reported by: Morgan Smith <Morgan.J.Smith <at> outlook.com>
Date: Mon, 31 May 2021 23:24:01 UTC
Severity: normal
Tags: patch
Message #62 received at 48767 <at> debbugs.gnu.org (full text, mbox):
From: Morgan.J.Smith <at> outlook.com To: 48767 <at> debbugs.gnu.org, maximedevos <at> telenet.be Cc: Morgan Smith <Morgan.J.Smith <at> outlook.com> Subject: [PATCH] gnu: gcc-arm-none-eabi-7-2018-q2-update: Simplify build Date: Mon, 27 Sep 2021 17:59:11 -0400
From: Morgan Smith <Morgan.J.Smith <at> 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. --- 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 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. To test this patch I compiled gcc-arm-none-eabi-4.9, gcc-arm-none-eabi-6, and gcc-arm-none-eabi-7-2018-q2-update successfully. Than I installed arm-none-eabi-toolchain and made sure it could successfully compile the arm stuff I'm working on. Everything seems to work great. Morgan gnu/packages/embedded.scm | 144 +++++++++++++------------------------- 1 file changed, 48 insertions(+), 96 deletions(-) diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index f388c11c3d..809708187f 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -115,13 +115,17 @@ ":")) (format #t "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" - (getenv "CPLUS_INCLUDE_PATH")) - #t))) + (getenv "CPLUS_INCLUDE_PATH"))))) (add-after 'unpack 'fix-genmultilib (lambda _ (substitute* "gcc/genmultilib" - (("#!/bin/sh") (string-append "#!" (which "sh")))) - #t)))) + (("#!/bin/sh") (string-append "#!" (which "sh")))))) + (add-after 'unpack 'expand-version-string + (lambda _ + (make-file-writable "gcc/DEV-PHASE") + (with-output-to-file "gcc/DEV-PHASE" + (lambda () + (display ,(package-version this-package)))))))) ((#:configure-flags flags) ;; The configure flags are largely identical to the flags used by the ;; "GCC ARM embedded" project. @@ -166,6 +170,46 @@ (search-patches "gcc-6-cross-environment-variables.patch" "gcc-6-arm-none-eabi-multilib.patch"))))))) +;;; 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-" + 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))))))))))))) + (define-public newlib-arm-none-eabi (package (name "newlib") @@ -268,98 +312,6 @@ usable on embedded products.") (synopsis "Newlib variant for small systems with limited memory"))) -;;; 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 ((xgcc (cross-gcc "arm-none-eabi" - #:xgcc gcc-7 - #:xbinutils (cross-binutils "arm-none-eabi"))) - (revision "1") - (svn-revision 261907)) - (package (inherit xgcc) - (version (string-append "7-2018-q2-update-" - 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"))))) - (native-inputs - `(("flex" ,flex) - ("isl" ,isl-0.18) - ,@(alist-delete "isl" (package-native-inputs xgcc)))) - (arguments - (substitute-keyword-arguments (package-arguments xgcc) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'expand-version-string - (lambda _ - (make-file-writable "gcc/DEV-PHASE") - (with-output-to-file "gcc/DEV-PHASE" - (lambda () - (display "7-2018-q2-update"))) - #t)) - (add-after 'unpack 'fix-genmultilib - (lambda _ - (substitute* "gcc/genmultilib" - (("#!/bin/sh") (string-append "#!" (which "sh")))) - #t)) - (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH - (lambda* (#:key inputs #:allow-other-keys) - (let ((gcc (assoc-ref inputs "gcc"))) - ;; Remove the default compiler from CPLUS_INCLUDE_PATH to - ;; prevent header conflict with the GCC from native-inputs. - (setenv "CPLUS_INCLUDE_PATH" - (string-join - (delete (string-append gcc "/include/c++") - (string-split (getenv "CPLUS_INCLUDE_PATH") - #\:)) - ":")) - (format #t - "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" - (getenv "CPLUS_INCLUDE_PATH")) - #t))))) - ((#:configure-flags flags) - ;; The configure flags are largely identical to the flags used by the - ;; "GCC ARM embedded" project. - `(append (list "--enable-multilib" - "--with-newlib" - "--with-multilib-list=rmprofile" - "--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm" - "--enable-plugins" - "--disable-decimal-float" - "--disable-libffi" - "--disable-libgomp" - "--disable-libmudflap" - "--disable-libquadmath" - "--disable-libssp" - "--disable-libstdcxx-pch" - "--disable-nls" - "--disable-shared" - "--disable-threads" - "--disable-tls") - (delete "--disable-multilib" ,flags))))) - (native-search-paths - (list (search-path-specification - (variable "CROSS_C_INCLUDE_PATH") - (files '("arm-none-eabi/include"))) - (search-path-specification - (variable "CROSS_CPLUS_INCLUDE_PATH") - (files '("arm-none-eabi/include" - "arm-none-eabi/include/c++" - "arm-none-eabi/include/c++/arm-none-eabi"))) - (search-path-specification - (variable "CROSS_LIBRARY_PATH") - (files '("arm-none-eabi/lib")))))))) (define-public newlib-arm-none-eabi-7-2018-q2-update ;; This is the same commit as used for the 7-2018-q2-update release -- 2.33.0
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.