[GTK] jhbuild is broken with GCC 10.0
authorchangseok@webkit.org <changseok@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2020 17:35:43 +0000 (17:35 +0000)
committerchangseok@webkit.org <changseok@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2020 17:35:43 +0000 (17:35 +0000)
https://bugs.webkit.org/show_bug.cgi?id=212256

Reviewed by Carlos Alberto Lopez Perez.

GCC 10.0 enables -fno-common as default, so many 'multiple definitions' failures occur
in building dependencies via jhbuild. This patch addresses them by back-porting patches
from corresponding source repositories.

* gstreamer/jhbuild.modules:
* gstreamer/patches/libsrtp-Fix-building-with-gcc-10.patch: Added.
* gstreamer/patches/orc-satisfy-fno-common-under-gcc10.patch: Added.
* gtk/jhbuild.modules:
* gtk/patches/at-spi2-atk-tests-Replace-common-variable-with-usual-external.patch: Added.
* gtk/patches/at-spi2-atk-tests-fix-child_pid-reference.patch: Added.
* gtk/patches/mesa-gallium-build-fix-to-make-gcc-10-happy.patch: Added.
* gtk/patches/xserver-Fix-building-with-fno-common.patch: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262063 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/gstreamer/jhbuild.modules
Tools/gstreamer/patches/libsrtp-Fix-building-with-gcc-10.patch [new file with mode: 0644]
Tools/gstreamer/patches/orc-satisfy-fno-common-under-gcc10.patch [new file with mode: 0644]
Tools/gtk/jhbuild.modules
Tools/gtk/patches/at-spi2-atk-tests-Replace-common-variable-with-usual-external.patch [new file with mode: 0644]
Tools/gtk/patches/at-spi2-atk-tests-fix-child_pid-reference.patch [new file with mode: 0644]
Tools/gtk/patches/mesa-gallium-build-fix-to-make-gcc-10-happy.patch [new file with mode: 0644]
Tools/gtk/patches/xserver-Fix-building-with-fno-common.patch [new file with mode: 0644]

index 8189957..4780fa4 100644 (file)
@@ -1,3 +1,23 @@
+2020-05-22  ChangSeok Oh  <changseok@webkit.org>
+
+        [GTK] jhbuild is broken with GCC 10.0
+        https://bugs.webkit.org/show_bug.cgi?id=212256
+
+        Reviewed by Carlos Alberto Lopez Perez.
+
+        GCC 10.0 enables -fno-common as default, so many 'multiple definitions' failures occur
+        in building dependencies via jhbuild. This patch addresses them by back-porting patches
+        from corresponding source repositories.
+
+        * gstreamer/jhbuild.modules:
+        * gstreamer/patches/libsrtp-Fix-building-with-gcc-10.patch: Added.
+        * gstreamer/patches/orc-satisfy-fno-common-under-gcc10.patch: Added.
+        * gtk/jhbuild.modules:
+        * gtk/patches/at-spi2-atk-tests-Replace-common-variable-with-usual-external.patch: Added.
+        * gtk/patches/at-spi2-atk-tests-fix-child_pid-reference.patch: Added.
+        * gtk/patches/mesa-gallium-build-fix-to-make-gcc-10-happy.patch: Added.
+        * gtk/patches/xserver-Fix-building-with-fno-common.patch: Added.
+
 2020-05-22  Philippe Normand  <pnormand@igalia.com>
 
         [Flatpak SDK] Add bubblewrap ... wrapper
index 92fd304..956f126 100644 (file)
@@ -28,7 +28,9 @@
   <meson id="orc" mesonargs="-Dgtk_doc=disabled">
     <branch module="orc/orc-${version}.tar.xz" version="0.4.30"
             repo="gstreamer"
-            hash="sha256:ba41b92146a5691cd102eb79c026757d39e9d3b81a65810d2946a1786a1c4972"/>
+            hash="sha256:ba41b92146a5691cd102eb79c026757d39e9d3b81a65810d2946a1786a1c4972">
+      <patch file="orc-satisfy-fno-common-under-gcc10.patch" strip="1"/>
+    </branch>
   </meson>
 
   <autotools id="openh264" supports-non-srcdir-builds="no" autogen-sh="pseudo-configure">
@@ -45,7 +47,9 @@
 
   <autotools id="libsrtp">
     <branch repo="github-tarball" module="cisco/libsrtp/archive/v${version}.tar.gz" version="2.2.0"
-            checkoutdir="libsrtp-${version}"/>
+            checkoutdir="libsrtp-${version}">
+      <patch file="libsrtp-Fix-building-with-gcc-10.patch" strip="1"/>
+    </branch>
   </autotools>
 
   <meson id="gstreamer" mesonargs="-Dgtk_doc=disabled -Dintrospection=disabled -Dexamples=disabled -Dtests=disabled">
diff --git a/Tools/gstreamer/patches/libsrtp-Fix-building-with-gcc-10.patch b/Tools/gstreamer/patches/libsrtp-Fix-building-with-gcc-10.patch
new file mode 100644 (file)
index 0000000..ff7b6e4
--- /dev/null
@@ -0,0 +1,41 @@
+From e1c6f5e39acf1022ddfc8e52e020f0bf7db7e8a0 Mon Sep 17 00:00:00 2001
+From: ChangSeok Oh <changseok@gatech.edu>
+Date: Fri, 22 May 2020 03:18:27 -0400
+Subject: [PATCH] Fix building with gcc-10
+
+gcc-10 defaults to -fno-common which reveals a symbol conflict with
+bit_string. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678
+---
+ crypto/math/datatypes.c | 2 +-
+ test/util.c             | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/crypto/math/datatypes.c b/crypto/math/datatypes.c
+index c0dfece..ec2fe6d 100644
+--- a/crypto/math/datatypes.c
++++ b/crypto/math/datatypes.c
+@@ -79,7 +79,7 @@ int octet_get_weight(uint8_t octet)
+ /* the value MAX_PRINT_STRING_LEN is defined in datatypes.h */
+-char bit_string[MAX_PRINT_STRING_LEN];
++static char bit_string[MAX_PRINT_STRING_LEN];
+ uint8_t srtp_nibble_to_hex_char(uint8_t nibble)
+ {
+diff --git a/test/util.c b/test/util.c
+index eb203f4..04e149c 100644
+--- a/test/util.c
++++ b/test/util.c
+@@ -47,7 +47,7 @@
+ #include <string.h>
+ #include <stdint.h>
+-char bit_string[MAX_PRINT_STRING_LEN];
++static char bit_string[MAX_PRINT_STRING_LEN];
+ static inline int hex_char_to_nibble(uint8_t c)
+ {
+-- 
+2.26.2
+
diff --git a/Tools/gstreamer/patches/orc-satisfy-fno-common-under-gcc10.patch b/Tools/gstreamer/patches/orc-satisfy-fno-common-under-gcc10.patch
new file mode 100644 (file)
index 0000000..4b58b11
--- /dev/null
@@ -0,0 +1,25 @@
+From 72240650eea4e4e8b9e67e8b4b2d9e72c89168ed Mon Sep 17 00:00:00 2001
+From: ChangSeok Oh <changseok@gatech.edu>
+Date: Fri, 22 May 2020 02:44:00 -0400
+Subject: [PATCH] satisfy -fno-common under gcc10.
+
+---
+ orc/orctarget.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/orc/orctarget.h b/orc/orctarget.h
+index 642bfe3..f465744 100644
+--- a/orc/orctarget.h
++++ b/orc/orctarget.h
+@@ -25,7 +25,7 @@ enum {
+   ORC_TARGET_POWERPC_ALTIVEC = (1<<2),
+   ORC_TARGET_POWERPC_VSX = (1<<3),
+   ORC_TARGET_POWERPC_V207 = (1<<4)
+-} OrcTargetPowerPCFlags;
++};
+ enum {
+   ORC_TARGET_NEON_CLEAN_COMPILE = (1<<0),
+-- 
+2.26.2
+
index f4995e0..fc70777 100644 (file)
     <branch module="pub/GNOME/sources/at-spi2-atk/2.33/at-spi2-atk-2.33.2.tar.xz" version="2.33.2"
             repo="ftp.gnome.org"
             hash="sha256:64d4351b245d717ec6f4f81fd40fe67481ff8e62d3893d465f01e71d9a3db3d3">
+      <patch file="at-spi2-atk-tests-Replace-common-variable-with-usual-external.patch" strip="1"/>
+      <patch file="at-spi2-atk-tests-fix-child_pid-reference.patch" strip="1"/>
     </branch>
     <dependencies>
       <dep package="glib"/>
       <patch file="xserver-remove-bogus-dependencies.patch" strip="1"/>
       <patch file="xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch" strip="1"/>
       <patch file="xserver-gl-version.patch" strip="1"/> <!-- This patch does not include the meson build fix -->
+      <patch file="xserver-Fix-building-with-fno-common.patch" strip="1"/>
     </branch>
   </autotools>
 
             module="/archive/mesa-${version}.tar.xz"
             repo="mesa.freedesktop.org"
             hash="sha256:099d9667327a76a61741a533f95067d76ea71a656e66b91507b3c0caf1d49e30">
+      <patch file="mesa-gallium-build-fix-to-make-gcc-10-happy.patch" strip="1"/>
     </branch>
     <dependencies>
       <dep package="llvm"/>
diff --git a/Tools/gtk/patches/at-spi2-atk-tests-Replace-common-variable-with-usual-external.patch b/Tools/gtk/patches/at-spi2-atk-tests-Replace-common-variable-with-usual-external.patch
new file mode 100644 (file)
index 0000000..1a2585e
--- /dev/null
@@ -0,0 +1,25 @@
+From 180f91479e27eed40c4d7ed6fe1fc82468d4982f Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Sun, 25 Aug 2019 22:28:07 +0200
+Subject: [PATCH] tests: Replace common variable with usual external variable
+
+---
+ tests/atk_test_util.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/atk_test_util.h b/tests/atk_test_util.h
+index b2376d5..a81bedd 100644
+--- a/tests/atk_test_util.h
++++ b/tests/atk_test_util.h
+@@ -36,7 +36,7 @@
+ #include <locale.h>
+ #include "atk_suite.h"
+-pid_t child_pid;
++extern pid_t child_pid;
+ void run_app (const char *file_name);
+ AtspiAccessible *get_root_obj (const char *file_name);
+-- 
+2.26.2
+
diff --git a/Tools/gtk/patches/at-spi2-atk-tests-fix-child_pid-reference.patch b/Tools/gtk/patches/at-spi2-atk-tests-fix-child_pid-reference.patch
new file mode 100644 (file)
index 0000000..e7239fc
--- /dev/null
@@ -0,0 +1,28 @@
+From f200f2f37cf732d96d3b7e5de537840c570516fa Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Tue, 27 Aug 2019 13:07:26 +0200
+Subject: [PATCH] tests: fix child_pid reference
+
+180f91479e27 ("tests: Replace common variable with usual external
+variable") fixed the variable declaration, but there was no definition
+either. This adds it.
+---
+ tests/atk_test_util.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tests/atk_test_util.c b/tests/atk_test_util.c
+index c932df8..7a73c2b 100644
+--- a/tests/atk_test_util.c
++++ b/tests/atk_test_util.c
+@@ -23,6 +23,8 @@
+ #include <signal.h>
+ #include "atk_test_util.h"
++pid_t child_pid;
++
+ static void assert_clean_exit (int sig)
+ {
+   kill (child_pid, SIGTERM);
+-- 
+2.26.2
+
diff --git a/Tools/gtk/patches/mesa-gallium-build-fix-to-make-gcc-10-happy.patch b/Tools/gtk/patches/mesa-gallium-build-fix-to-make-gcc-10-happy.patch
new file mode 100644 (file)
index 0000000..a010ddc
--- /dev/null
@@ -0,0 +1,39 @@
+From b60090fcd490bd3b13b09f6609d30e08256cc06d Mon Sep 17 00:00:00 2001
+From: ChangSeok Oh <changseok@gatech.edu>
+Date: Fri, 22 May 2020 04:06:49 -0400
+Subject: [PATCH] build fix to make gcc 10 happy.
+
+---
+ src/gallium/auxiliary/util/u_debug_stack.c  | 2 +-
+ src/gallium/auxiliary/util/u_debug_symbol.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gallium/auxiliary/util/u_debug_stack.c b/src/gallium/auxiliary/util/u_debug_stack.c
+index 6ddacdb362f..6a66628fd55 100644
+--- a/src/gallium/auxiliary/util/u_debug_stack.c
++++ b/src/gallium/auxiliary/util/u_debug_stack.c
+@@ -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)
+diff --git a/src/gallium/auxiliary/util/u_debug_symbol.c b/src/gallium/auxiliary/util/u_debug_symbol.c
+index 84760430489..c38401c5bdd 100644
+--- a/src/gallium/auxiliary/util/u_debug_symbol.c
++++ b/src/gallium/auxiliary/util/u_debug_symbol.c
+@@ -270,7 +270,7 @@ debug_symbol_print(const void *addr)
+    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)
+-- 
+2.26.2
+
diff --git a/Tools/gtk/patches/xserver-Fix-building-with-fno-common.patch b/Tools/gtk/patches/xserver-Fix-building-with-fno-common.patch
new file mode 100644 (file)
index 0000000..f4f0098
--- /dev/null
@@ -0,0 +1,97 @@
+From fb8e8533a6175757deec1696c9d1c4a87a4c9eb3 Mon Sep 17 00:00:00 2001
+From: ChangSeok Oh <changseok@gatech.edu>
+Date: Fri, 22 May 2020 04:43:43 -0400
+Subject: [PATCH] Fix building with `-fno-common`
+
+* GCC 10 will switch the default to `-fno-common`.
+  https://gcc.gnu.org/PR85678
+---
+ hw/dmx/config/dmxconfig.c  | 2 +-
+ hw/dmx/config/xdmxconfig.c | 2 +-
+ hw/xwayland/xwayland.c     | 2 +-
+ test/misc.c                | 2 +-
+ test/xi2/protocol-common.c | 2 ++
+ test/xi2/protocol-common.h | 2 +-
+ 6 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/hw/dmx/config/dmxconfig.c b/hw/dmx/config/dmxconfig.c
+index c1a9e1cf3..85bc0dbe4 100644
+--- a/hw/dmx/config/dmxconfig.c
++++ b/hw/dmx/config/dmxconfig.c
+@@ -72,7 +72,7 @@ typedef struct DMXConfigCmdStruct {
+     DMXConfigList *xinputs;
+ } DMXConfigCmd, *DMXConfigCmdPtr;
+-DMXConfigEntryPtr dmxConfigEntry;
++extern DMXConfigEntryPtr dmxConfigEntry;
+ static DMXConfigCmd dmxConfigCmd;
+ static int dmxDisplaysFromCommandLine;
+diff --git a/hw/dmx/config/xdmxconfig.c b/hw/dmx/config/xdmxconfig.c
+index 49e4b5459..05d839688 100644
+--- a/hw/dmx/config/xdmxconfig.c
++++ b/hw/dmx/config/xdmxconfig.c
+@@ -65,7 +65,7 @@ extern FILE *yyin;
+ #define DMX_CANVAS_WIDTH  400
+ #define DMX_CANVAS_HEIGHT 500
+-DMXConfigEntryPtr dmxConfigEntry;
++extern DMXConfigEntryPtr dmxConfigEntry;
+ static DMXConfigVirtualPtr dmxConfigCurrent, dmxConfigNewVirtual;
+ static DMXConfigDisplayPtr dmxConfigCurrentDisplay, dmxConfigNewDisplay;
+ static int dmxConfigGrabbed, dmxConfigGrabbedFine;
+diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
+index 939f3392c..a15b27b96 100644
+--- a/hw/xwayland/xwayland.c
++++ b/hw/xwayland/xwayland.c
+@@ -37,7 +37,7 @@
+ #ifdef XF86VIDMODE
+ #include <X11/extensions/xf86vmproto.h>
+-_X_EXPORT Bool noXFree86VidModeExtension;
++extern _X_EXPORT Bool noXFree86VidModeExtension;
+ #endif
+ void
+diff --git a/test/misc.c b/test/misc.c
+index 66330a140..069aac902 100644
+--- a/test/misc.c
++++ b/test/misc.c
+@@ -31,7 +31,7 @@
+ #include "dix.h"
+ #include "dixstruct.h"
+-ScreenInfo screenInfo;
++extern ScreenInfo screenInfo;
+ static void
+ dix_version_compare(void)
+diff --git a/test/xi2/protocol-common.c b/test/xi2/protocol-common.c
+index 9265ba390..33483e73f 100644
+--- a/test/xi2/protocol-common.c
++++ b/test/xi2/protocol-common.c
+@@ -44,6 +44,8 @@ static ClientRec server_client;
+ void *global_userdata;
++void (*reply_handler) (ClientPtr client, int len, char *data, void *userdata);
++
+ static void
+ fake_init_sprite(DeviceIntPtr dev)
+ {
+diff --git a/test/xi2/protocol-common.h b/test/xi2/protocol-common.h
+index f8504787f..d4ccb4e0a 100644
+--- a/test/xi2/protocol-common.h
++++ b/test/xi2/protocol-common.h
+@@ -97,7 +97,7 @@ extern void *global_userdata;
+  * The reply handler called from WriteToClient. Set this handler if you need
+  * to check the reply values.
+  */
+-void (*reply_handler) (ClientPtr client, int len, char *data, void *userdata);
++extern void (*reply_handler) (ClientPtr client, int len, char *data, void *userdata);
+ /**
+  * The default screen used for the windows. Initialized by init_simple().
+-- 
+2.26.2
+