From 7dd5793b75dfde70aec72322501a6eb0206f0a8c Mon Sep 17 00:00:00 2001
From: "Daryl W. Grunau" <DarylGrunau@gmail.com>
Date: Thu, 30 Jul 2020 21:04:24 -0600
Subject: [PATCH] backport Mesa MR#6053 to prevent multiply-defined symbols
 (#17720)

Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
---
 .../packages/mesa/multiple-symbols_hash.patch | 22 +++++++++++++++++++
 .../repos/builtin/packages/mesa/package.py    |  3 +++
 2 files changed, 25 insertions(+)
 create mode 100644 var/spack/repos/builtin/packages/mesa/multiple-symbols_hash.patch

diff --git a/var/spack/repos/builtin/packages/mesa/multiple-symbols_hash.patch b/var/spack/repos/builtin/packages/mesa/multiple-symbols_hash.patch
new file mode 100644
index 0000000000..7c92326f37
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mesa/multiple-symbols_hash.patch
@@ -0,0 +1,22 @@
+--- a/src/gallium/auxiliary/util/u_debug_stack.c	2019-11-07 17:57:36.000000000 -0700
++++ b/src/gallium/auxiliary/util/u_debug_stack.c	2020-07-23 15:30:46.033145497 -0600
+@@ -46,7 +46,7 @@
+ #include "os/os_thread.h"
+ #include "u_hash_table.h"
+ 
+-struct util_hash_table* symbols_hash;
++static struct util_hash_table* symbols_hash;
+ static mtx_t symbols_mutex = _MTX_INITIALIZER_NP;
+ 
+ static unsigned hash_ptr(void* p)
+--- a/src/gallium/auxiliary/util/u_debug_symbol.c	2019-11-07 17:58:53.000000000 -0700
++++ b/src/gallium/auxiliary/util/u_debug_symbol.c	2020-07-23 15:31:06.400146072 -0600
+@@ -270,7 +270,7 @@
+    debug_printf("\t%s\n", buf);
+ }
+ 
+-struct util_hash_table* symbols_hash;
++static struct util_hash_table* symbols_hash;
+ static mtx_t symbols_mutex = _MTX_INITIALIZER_NP;
+ 
+ static unsigned hash_ptr(void* p)
diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py
index b277a03d19..953e5b0034 100644
--- a/var/spack/repos/builtin/packages/mesa/package.py
+++ b/var/spack/repos/builtin/packages/mesa/package.py
@@ -79,6 +79,9 @@ class Mesa(AutotoolsPackage):
     # Prevent an unnecessary xcb-dri dependency
     patch('autotools-x11-nodri.patch')
 
+    # Backport Mesa MR#6053 to prevent multiply-defined symbols
+    patch('multiple-symbols_hash.patch', when='@:20.1.4%gcc@10:')
+
     def autoreconf(self, spec, prefix):
         which('autoreconf')('--force',  '--verbose', '--install')
 
-- 
GitLab