From 809b0a90446ccae1a7d79165962f4e377f6342fe Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 17 Jan 2018 22:08:01 +0200 Subject: [PATCH] gnu: gcc@4.9: Fix building with glibc@2.26. * gnu/packages/gcc.scm (gcc@4.9)[source]: Add snippet to adjust linux-unwind.h to changes in glibc. * gnu/packages/commencement.scm (gcc-for-libstdc++): New variable. (libstdc++-boot0): Inherit from gcc-for-libstdc++, update note. --- gnu/packages/commencement.scm | 22 +++++++++++++++++++--- gnu/packages/gcc.scm | 15 +++++++++++++-- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index aeacade21c..e21d58e5c9 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014 Andreas Enge ;;; Copyright © 2012 Nikita Karetnikov ;;; Copyright © 2014, 2015, 2017 Mark H Weaver -;;; Copyright © 2017 Efraim Flashner +;;; Copyright © 2017, 2018 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -173,12 +173,28 @@ ,cf))))) (inputs %boot0-inputs)))) +;; gcc-4.9 was fixed late in the core-update cycle and so this GCC is only +;; needed to prevent a full world rebuild, and can be replaced with gcc-4.9. +(define gcc-for-libstdc++ + (package (inherit gcc-4.9) + (version "4.9.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.bz2")) + (sha256 + (base32 + "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc")) + (patches (search-patches "gcc-arm-bug-71399.patch" + "gcc-libvtv-runpath.patch" + "gcc-fix-texi2pod.patch")))))) + (define libstdc++-boot0 ;; GCC's libcc1 is always built as a shared library (the top-level ;; 'Makefile.def' forcefully adds --enable-shared) and thus needs to refer ;; to libstdc++.so. We cannot build libstdc++-5.3 because it relies on - ;; C++14 features missing in our bootstrap compiler. - (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9)))) + ;; C++14 features missing in some of our bootstrap compilers. + (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-for-libstdc++)))) (package (inherit lib) (name "libstdc++-boot0") diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 350a9bd3fb..302064f78a 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2014, 2015, 2016, 2017 Ricardo Wurmus ;;; Copyright © 2015 Andreas Enge -;;; Copyright © 2015, 2016, 2017 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2016 Carlos Sánchez de La Lama ;;; ;;; This file is part of GNU Guix. @@ -394,7 +394,18 @@ Go. It also includes runtime support libraries for these languages.") "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc")) (patches (search-patches "gcc-arm-bug-71399.patch" "gcc-libvtv-runpath.patch" - "gcc-fix-texi2pod.patch")))) + "gcc-fix-texi2pod.patch")) + (modules '((guix build utils))) + ;; This is required for building with glibc-2.26. + ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712 + (snippet + '(for-each + (lambda (dir) + (substitute* (string-append "libgcc/config/" + dir "/linux-unwind.h") + (("struct ucontext") "ucontext_t"))) + '("aarch64" "alpha" "bfin" "i386" "m68k" "nios2" + "pa" "sh" "tilepro" "xtensa"))))) ;; Override inherited texinfo-5 with latest version. (native-inputs `(("perl" ,perl) ;for manpages ("texinfo" ,texinfo)))))