guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/04: gnu: address@hidden: Fix FTBFS with Glibc >= 2.28.


From: Marius Bakke
Subject: 02/04: gnu: address@hidden: Fix FTBFS with Glibc >= 2.28.
Date: Sat, 1 Sep 2018 07:04:43 -0400 (EDT)

mbakke pushed a commit to branch core-updates
in repository guix.

commit 3469a5ea47ba7481bda9b2ff144bc13efd943c87
Author: Marius Bakke <address@hidden>
Date:   Fri Aug 31 17:40:40 2018 +0200

    gnu: address@hidden: Fix FTBFS with Glibc >= 2.28.
    
    * gnu/packages/commencement.scm (gcc-for-libstdc++): New variable.
    (libstdc++-boot0): Inherit from GCC-FOR-LIBSTDC++ instead of GCC-4.9.
    * gnu/packages/gcc.scm (gcc-4.9)[source](patches): Add
    "gcc-4.9-libsanitizer-ustat.patch".
    * gnu/packages/patches/gcc-4.9-libsanitizer-ustat.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/commencement.scm                      | 15 ++++++++-
 gnu/packages/gcc.scm                               |  1 +
 .../patches/gcc-4.9-libsanitizer-ustat.patch       | 37 ++++++++++++++++++++++
 4 files changed, 53 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 3309186..29c6050 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -700,6 +700,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/gcc-fix-texi2pod.patch                  \
   %D%/packages/patches/gcc-4.8-libsanitizer-fix.patch          \
   %D%/packages/patches/gcc-4.9-libsanitizer-fix.patch          \
+  %D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch                \
   %D%/packages/patches/gcc-libsanitizer-fix.patch              \
   %D%/packages/patches/gcc-libsanitizer-ustat.patch            \
   %D%/packages/patches/gcc-libvtv-runpath.patch                        \
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 30a0ffc..0aa65fe 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -186,12 +186,25 @@
                     ,cf)))))
      (inputs %boot0-inputs))))
 
+;; Use a "fixed" package source for this early libstdc++ variant so we can
+;; update GCC 4.9 without triggering a full rebuild.
+(define gcc-for-libstdc++
+  (package
+    (inherit gcc-4.9)
+    (source (origin
+              (inherit (package-source gcc-4.9))
+              (patches (search-patches "gcc-4.9-libsanitizer-fix.patch"
+                                       "gcc-arm-bug-71399.patch"
+                                       "gcc-asan-missing-include.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 some of our bootstrap compilers.
-  (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9))))
+  (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 e5b1433..520f5cb 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -398,6 +398,7 @@ Go.  It also includes runtime support libraries for these 
languages.")
                (base32
                 "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc"))
               (patches (search-patches "gcc-4.9-libsanitizer-fix.patch"
+                                       "gcc-4.9-libsanitizer-ustat.patch"
                                        "gcc-arm-bug-71399.patch"
                                        "gcc-asan-missing-include.patch"
                                        "gcc-libvtv-runpath.patch"
diff --git a/gnu/packages/patches/gcc-4.9-libsanitizer-ustat.patch 
b/gnu/packages/patches/gcc-4.9-libsanitizer-ustat.patch
new file mode 100644
index 0000000..795881a
--- /dev/null
+++ b/gnu/packages/patches/gcc-4.9-libsanitizer-ustat.patch
@@ -0,0 +1,37 @@
+Remove use of deprecated ustat interface in glibc 2.28:
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85835
+
+Adapted to GCC 4 series from this upstream patch:
+https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=260684
+
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -81,7 +81,6 @@
+ #include <sys/statvfs.h>
+ #include <sys/timex.h>
+ #include <sys/user.h>
+-#include <sys/ustat.h>
+ #include <linux/cyclades.h>
+ #include <linux/if_eql.h>
+ #include <linux/if_plip.h>
+@@ -163,7 +162,19 @@
+   unsigned struct_old_utsname_sz = sizeof(struct old_utsname);
+   unsigned struct_oldold_utsname_sz = sizeof(struct oldold_utsname);
+   unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
+-  unsigned struct_ustat_sz = sizeof(struct ustat);
++  // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
++  // has been removed from glibc 2.28.
++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
++  || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
++  || defined(__x86_64__)
++#define SIZEOF_STRUCT_USTAT 32
++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
++  || defined(__powerpc__) || defined(__s390__)
++#define SIZEOF_STRUCT_USTAT 20
++#else
++#error Unknown size of struct ustat
++#endif
++  unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
+ #endif // SANITIZER_LINUX
+ 
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID



reply via email to

[Prev in Thread] Current Thread [Next in Thread]