From f88111cbf184cab8e6841b7f665d02dd3d13ed4d Mon Sep 17 00:00:00 2001 From: Janneke Nieuwenhuizen Date: Thu, 12 Dec 2024 12:34:03 +0100 Subject: [PATCH] gnu: gcc-4.7: Add gcc-wrapper from gcc-final. * gnu/packages/commencement.scm (gcc-boot0)[arguments]: Remove CC_FOR_BUILD strictness relaxing from #:make-flags. (gcc-final)[arguments]: Move stage "create-stage-wrapper" and related settings in #:configure-flags and #:make-flags to... * gnu/packages/gcc.scm (gcc-4.7)[arguments]: ...new "relax-gcc-14s-strictness stage here. Change-Id: I0c372a4f372281b54e44dd446b6e5ddac5841c5a --- gnu/packages/commencement.scm | 39 +++++------------------------------ gnu/packages/gcc.scm | 27 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 34 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 3d35fa04d1..e1c7082753 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -2399,13 +2399,7 @@ (define gcc-boot0 ,(glibc-dynamic-linker (match (%current-system) ("x86_64-linux" "i686-linux") - (_ (%current-system)))))) - (if (target-hurd64?) - ;;Convince gmp's configure that gcc works - (list (string-append - "CC_FOR_BUILD=gcc" - " -Wno-implicit-function-declaration")) - '()))))) + (_ (%current-system)))))))))) ((#:phases phases) #~(modify-phases #$phases (add-after 'unpack 'unpack-gmp&co @@ -3275,24 +3269,14 @@ (define gcc-final "/lib -L" zlib "/lib -Wl,-rpath=" zlib "/lib") flag)) - #$(if (or (target-hurd64?) - (and (target-x86?) (target-linux?))) - `(cons - (string-append - ;;Convince gmp's configure that gcc works - "STAGE_CC_WRAPPER=" (getcwd) "/build/gcc.sh") - ,flags) - flags)))) + #$flags))) ((#:configure-flags flags) + ;; XXX FIXME: Does this need to stay separate? (if (or (target-hurd64?) (and (target-x86?) (target-linux?))) #~(append #$flags - (list #$(string-append - ;;Convince gmp's configure that gcc works - "CC=gcc" - " -Wno-implicit-function-declaration") - "--disable-plugin")) + (list "--disable-plugin")) flags)) ;; Build again GMP & co. within GCC's build process, because it's hard ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus @@ -3338,20 +3322,7 @@ (define gcc-final (getenv "CPLUS_INCLUDE_PATH") #\:)) ":") - "\nAM_CXXFLAGS = ")))))) - #$@(if (or (target-hurd64?) - (and (target-x86?) (target-linux?))) - #~((add-after 'configure 'create-stage-wrapper - (lambda _ - (with-output-to-file "gcc.sh" - (lambda _ - (format #t "#! ~a/bin/bash -exec \"$@\" \ - -Wno-error \ - -Wno-implicit-function-declaration" - #$static-bash-for-glibc))) - (chmod "gcc.sh" #o555)))) - #~())))))) + "\nAM_CXXFLAGS = "))))))))))) ;; This time we want Texinfo, so we get the manual. Add ;; STATIC-BASH-FOR-GLIBC so that it's used in the final shebangs of diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index f50856aca1..1b794771ad 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -238,6 +238,33 @@ (define-public gcc-4.7 #:phases (modify-phases %standard-phases + (add-before 'configure 'relax-gcc-14s-strictness + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash")) + (wrapper (string-append (getcwd) "/gcc.sh")) + (stage-wrapper (string-append (getcwd) "/stage-gcc.sh"))) + (with-output-to-file wrapper + (lambda _ + (format #t "#! ~a/bin/bash +exec gcc \"$@\" \ + -Wno-error=implicit-function-declaration" + bash))) + (chmod wrapper #o555) + (with-output-to-file stage-wrapper + (lambda _ + (format #t "#! ~a/bin/bash +exec \"$@\" \ + -Wno-error=implicit-function-declaration" + bash))) + (chmod stage-wrapper #o555) + ;; Rather than adding CC to #:configure-flags and + ;; STAGE_CC_WRAPPER to #:make-flags, we add them to the + ;; environment in this easily removable stage. + (cond (,(%current-target-system) ;cross-build? + (setenv "CC_FOR_BUILD" wrapper)) + (else + (setenv "CC" wrapper) + (setenv "STAGE_CC_WRAPPER" stage-wrapper)))))) (add-before 'configure 'pre-configure (lambda* (#:key inputs outputs #:allow-other-keys) (let ((libdir ,(libdir))