[arch-commits] Commit in lib32-mesa/trunk (3 files)

Laurent Carlier lcarlier at archlinux.org
Fri Sep 8 09:28:20 UTC 2017


    Date: Friday, September 8, 2017 @ 09:28:19
  Author: lcarlier
Revision: 256133

upgpkg: lib32-mesa 17.1.8-2

apply upstream fix for broken video caused by glibc 2.26 dropping xlocale.h; FS#55244

Added:
  lib32-mesa/trunk/glibc_dropped_xlocale.h.diff
Modified:
  lib32-mesa/trunk/PKGBUILD
Deleted:
  lib32-mesa/trunk/0001-Fix-linkage-against-shared-glapi.patch

---------------------------------------------+
 0001-Fix-linkage-against-shared-glapi.patch |   26 ----
 PKGBUILD                                    |   12 +-
 glibc_dropped_xlocale.h.diff                |  143 ++++++++++++++++++++++++++
 3 files changed, 152 insertions(+), 29 deletions(-)

Deleted: 0001-Fix-linkage-against-shared-glapi.patch
===================================================================
--- 0001-Fix-linkage-against-shared-glapi.patch	2017-09-08 07:34:41 UTC (rev 256132)
+++ 0001-Fix-linkage-against-shared-glapi.patch	2017-09-08 09:28:19 UTC (rev 256133)
@@ -1,26 +0,0 @@
-From 1b5a187c3c31513ae39cd2a917a3234c2c5f87fc Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax at redhat.com>
-Date: Wed, 12 Oct 2016 13:41:33 -0400
-Subject: [PATCH] Fix linkage against shared glapi
-
-Signed-off-by: Adam Jackson <ajax at redhat.com>
----
- src/gallium/targets/osmesa/Makefile.am | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/gallium/targets/osmesa/Makefile.am b/src/gallium/targets/osmesa/Makefile.am
-index 5d39486..04add87 100644
---- a/src/gallium/targets/osmesa/Makefile.am
-+++ b/src/gallium/targets/osmesa/Makefile.am
-@@ -63,7 +63,7 @@ lib at OSMESA_LIB@_la_LIBADD = \
- 	$(top_builddir)/src/gallium/drivers/trace/libtrace.la \
- 	$(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la \
- 	$(top_builddir)/src/gallium/state_trackers/osmesa/libosmesa.la \
--	$(top_builddir)/src/mapi/glapi/libglapi.la \
-+	$(top_builddir)/src/mapi/shared-glapi/libglapi.la \
- 	$(SHARED_GLAPI_LIB) \
- 	$(OSMESA_LIB_DEPS) \
- 	$(CLOCK_LIB)
--- 
-2.9.3
-

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2017-09-08 07:34:41 UTC (rev 256132)
+++ PKGBUILD	2017-09-08 09:28:19 UTC (rev 256133)
@@ -6,7 +6,7 @@
 pkgbase=lib32-mesa
 pkgname=('lib32-vulkan-intel' 'lib32-vulkan-radeon' 'lib32-libva-mesa-driver' 'lib32-mesa-vdpau' 'lib32-mesa')
 pkgver=17.1.8
-pkgrel=1
+pkgrel=2
 arch=('x86_64')
 makedepends=('python2-mako' 'lib32-libxml2' 'lib32-expat' 'lib32-libx11' 'glproto' 'lib32-libdrm' 'dri2proto' 'dri3proto' 'presentproto'
              'lib32-libxshmfence' 'lib32-libxxf86vm' 'lib32-libxdamage' 'gcc-multilib' 'lib32-libelf' 'lib32-llvm' 'lib32-libvdpau'
@@ -15,11 +15,13 @@
 license=('custom')
 source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
 	LICENSE
-        0002-glvnd-fix-gl-dot-pc.patch)
+        0002-glvnd-fix-gl-dot-pc.patch
+        glibc_dropped_xlocale.h.diff)
 sha256sums=('75ed2eaeae26ddd536150f294386468ae2e1a7717948c41cd14b7875be5269db'
             'SKIP'
             '7fdc119cf53c8ca65396ea73f6d10af641ba41ea1dd2bd44a824726e01c8b3f2'
-            '64a77944a28026b066c1682c7258d02289d257b24b6f173a9f7580c48beed966')
+            '64a77944a28026b066c1682c7258d02289d257b24b6f173a9f7580c48beed966'
+            '6de2adc3dde36d098bfe9977f5052c13e1b2e80a913e4c83d520b2e5349ddbd0')
 validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov <emil.l.velikov at gmail.com>
 validpgpkeys+=('946D09B5E4C9845E63075FF1D961C596A7203456') # "Andres Gomez <tanty at igalia.com>"
 validpgpkeys+=('E3E8F480C52ADD73B278EE78E1ECBE07D7D70895') # Juan Antonio Suárez Romero (Igalia, S.L.) <jasuarez at igalia.com>"
@@ -31,6 +33,10 @@
   # non-upstreamed ones
   patch -Np1 -i ../0002-glvnd-fix-gl-dot-pc.patch
 
+  # glibc 2.26 dropped xlocale.h leading to corrupted video
+  # https://bugs.archlinux.org/task/55244 / https://bugs.freedesktop.org/show_bug.cgi?id=102454
+  patch -Np1 -i ../glibc_dropped_xlocale.h.diff
+
   autoreconf -fiv
 }
 

Added: glibc_dropped_xlocale.h.diff
===================================================================
--- glibc_dropped_xlocale.h.diff	                        (rev 0)
+++ glibc_dropped_xlocale.h.diff	2017-09-08 09:28:19 UTC (rev 256133)
@@ -0,0 +1,143 @@
+From 49b428470e28ae6ab22083e43fa41abf622f3b0d Mon Sep 17 00:00:00 2001
+From: Eric Engestrom <eric.engestrom at imgtec.com>
+Date: Thu, 31 Aug 2017 16:55:56 +0000
+Subject: util: improve compiler guard
+
+Glibc 2.26 has dropped xlocale.h, but the functions needed (strtod_l()
+and strdof_l()) can be found in stdlib.h.
+Improve the detection method to allow newer builds to still make use of
+the locale-setting.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102454
+Cc: Laurent Carlier <lordheavym at gmail.com>
+Cc: Emil Velikov <emil.l.velikov at gmail.com>
+Cc: Rob Herring <robh at kernel.org>
+Signed-off-by: Eric Engestrom <eric.engestrom at imgtec.com>
+Reviewed-by: Laurent Carlier <lordheavym at gmail.com>
+Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
+
+diff --git a/configure.ac b/configure.ac
+index ac64a38..fb6037e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -795,6 +795,27 @@ AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
+ AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
+ AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
+ 
++AC_MSG_CHECKING([whether strtod has locale support])
++AC_LINK_IFELSE([AC_LANG_SOURCE([[
++    #define _GNU_SOURCE
++    #include <stdlib.h>
++    #include <locale.h>
++    #ifdef HAVE_XLOCALE_H
++    #include <xlocale.h>
++    #endif
++    int main() {
++       locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL);
++       const char *s = "1.0";
++       char *end;
++       double d = strtod_l(s, end, loc);
++       float f = strtof_l(s, end, loc);
++       freelocale(loc);
++       return 0;
++    }]])],
++  [DEFINES="$DEFINES -DHAVE_STRTOD_L"];
++   AC_MSG_RESULT([yes]),
++   AC_MSG_RESULT([no]))
++
+ dnl Check to see if dlopen is in default libraries (like Solaris, which
+ dnl has it in libc), or if libdl is needed to get it.
+ AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
+diff --git a/scons/gallium.py b/scons/gallium.py
+index c8e47a3..1e35ef4 100755
+--- a/scons/gallium.py
++++ b/scons/gallium.py
+@@ -157,6 +157,19 @@ def check_header(env, header):
+     env = conf.Finish()
+     return have_header
+ 
++def check_functions(env, functions):
++    '''Check if all of the functions exist'''
++
++    conf = SCons.Script.Configure(env)
++    have_functions = True
++
++    for function in functions:
++        if not conf.CheckFunc(function):
++            have_functions = False
++
++    env = conf.Finish()
++    return have_functions
++
+ def check_prog(env, prog):
+     """Check whether this program exists."""
+ 
+@@ -339,6 +352,9 @@ def generate(env):
+         if check_header(env, 'xlocale.h'):
+             cppdefines += ['HAVE_XLOCALE_H']
+ 
++        if check_functions(env, ['strtod_l', 'strtof_l']):
++            cppdefines += ['HAVE_STRTOD_L']
++
+     if platform == 'windows':
+         cppdefines += [
+             'WIN32',
+diff --git a/src/util/strtod.c b/src/util/strtod.c
+index ea7d395..de695d6 100644
+--- a/src/util/strtod.c
++++ b/src/util/strtod.c
+@@ -26,12 +26,12 @@
+ 
+ #include <stdlib.h>
+ 
+-#ifdef _GNU_SOURCE
++#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
+ #include <locale.h>
+ #ifdef HAVE_XLOCALE_H
+ #include <xlocale.h>
+-static locale_t loc;
+ #endif
++static locale_t loc;
+ #endif
+ 
+ #include "strtod.h"
+@@ -40,7 +40,7 @@ static locale_t loc;
+ void
+ _mesa_locale_init(void)
+ {
+-#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
++#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
+    loc = newlocale(LC_CTYPE_MASK, "C", NULL);
+ #endif
+ }
+@@ -48,7 +48,7 @@ _mesa_locale_init(void)
+ void
+ _mesa_locale_fini(void)
+ {
+-#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
++#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
+    freelocale(loc);
+ #endif
+ }
+@@ -60,7 +60,7 @@ _mesa_locale_fini(void)
+ double
+ _mesa_strtod(const char *s, char **end)
+ {
+-#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
++#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
+    return strtod_l(s, end, loc);
+ #else
+    return strtod(s, end);
+@@ -75,7 +75,7 @@ _mesa_strtod(const char *s, char **end)
+ float
+ _mesa_strtof(const char *s, char **end)
+ {
+-#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
++#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L)
+    return strtof_l(s, end, loc);
+ #elif defined(HAVE_STRTOF)
+    return strtof(s, end);
+-- 
+cgit v0.10.2
+
+



More information about the arch-commits mailing list