[gnome-sdk-images] Add patch to hopefully unbreak WebKitGTK+



commit bdf257a205e8d2b764940e09d106c42c235c8511
Author: Michael Catanzaro <mcatanzaro igalia com>
Date:   Sat Jan 13 21:51:07 2018 -0600

    Add patch to hopefully unbreak WebKitGTK+
    
    This release cycle has been a pretty wild ride for WebKit. :(

 org.gnome.Sdk.json.in             |    4 +
 webkitgtk-fix-jsc-api-crash.patch |  219 +++++++++++++++++++++++++++++++++++++
 2 files changed, 223 insertions(+), 0 deletions(-)
---
diff --git a/org.gnome.Sdk.json.in b/org.gnome.Sdk.json.in
index 32c4f9e..6d492fa 100644
--- a/org.gnome.Sdk.json.in
+++ b/org.gnome.Sdk.json.in
@@ -800,6 +800,10 @@
                     "type": "archive",
                     "url": "https://webkitgtk.org/releases/webkitgtk-2.19.5.tar.xz";,
                     "sha256": "5dc3379079a2c12e356fa979adf799970eb9ff385ba75c4358728242b3c5a5e0"
+                },
+                {
+                    "type": "patch",
+                    "path": "webkitgtk-fix-jsc-api-crash.patch"
                 }
             ]
         },
diff --git a/webkitgtk-fix-jsc-api-crash.patch b/webkitgtk-fix-jsc-api-crash.patch
new file mode 100644
index 0000000..f64706c
--- /dev/null
+++ b/webkitgtk-fix-jsc-api-crash.patch
@@ -0,0 +1,219 @@
+From 2e4016b5f4ac95a768bbc5493425e1ebe113075b Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro igalia com>
+Date: Sat, 13 Jan 2018 21:47:03 -0600
+Subject: [PATCH] Fix https://bugs.webkit.org/show_bug.cgi?id=181438
+
+---
+ Source/JavaScriptCore/API/JSBase.h                 |  2 +-
+ Source/JavaScriptCore/PlatformGTK.cmake            | 22 ++--------------------
+ .../inspector/remote/glib/RemoteInspectorServer.h  |  4 ++--
+ .../inspector/remote/glib/RemoteInspectorUtils.h   |  2 +-
+ .../JavaScriptCore/javascriptcoregtk-symbols.map   |  6 ------
+ Source/JavaScriptCore/runtime/JSExportMacros.h     | 15 ---------------
+ Source/WTF/wtf/ExportMacros.h                      | 19 ++-----------------
+ Source/WTF/wtf/Platform.h                          | 13 ++++---------
+ Source/cmake/OptionsGTK.cmake                      |  1 +
+ 9 files changed, 13 insertions(+), 71 deletions(-)
+ delete mode 100644 Source/JavaScriptCore/javascriptcoregtk-symbols.map
+
+diff --git a/Source/JavaScriptCore/API/JSBase.h b/Source/JavaScriptCore/API/JSBase.h
+index fe00a8d3577..61b5e8dddde 100644
+--- a/Source/JavaScriptCore/API/JSBase.h
++++ b/Source/JavaScriptCore/API/JSBase.h
+@@ -76,7 +76,7 @@ typedef struct OpaqueJSValue* JSObjectRef;
+ #endif
+ 
+ /* JavaScript symbol exports */
+-/* These rules should stay the same as in WebKit2/Shared/API/c/WKBase.h */
++/* These rules should stay the same as in WebKit/Shared/API/c/WKDeclarationSpecifiers.h */
+ 
+ #undef JS_EXPORT
+ #if defined(JS_NO_EXPORT)
+diff --git a/Source/JavaScriptCore/PlatformGTK.cmake b/Source/JavaScriptCore/PlatformGTK.cmake
+index 2ec177fa741..35b8a7c4969 100644
+--- a/Source/JavaScriptCore/PlatformGTK.cmake
++++ b/Source/JavaScriptCore/PlatformGTK.cmake
+@@ -1,3 +1,5 @@
++set(JavaScriptCore_OUTPUT_NAME javascriptcoregtk-${WEBKITGTK_API_VERSION})
++
+ list(APPEND JavaScriptCore_UNIFIED_SOURCE_LIST_FILES
+     "SourcesGTK.txt"
+ )
+@@ -50,23 +52,3 @@ list(APPEND JavaScriptCore_LIBRARIES
+ list(APPEND JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
+     ${GLIB_INCLUDE_DIRS}
+ )
+-
+-# Linking WebKit properly is extremely tricky. We need to build both a static library
+-# and a shared library for JSC. See https://bugs.webkit.org/show_bug.cgi?id=179914.
+-set(JavaScriptCoreGTK_LIBRARIES
+-    JavaScriptCore${DEBUG_SUFFIX}
+-)
+-ADD_WHOLE_ARCHIVE_TO_LIBRARIES(JavaScriptCoreGTK_LIBRARIES)
+-
+-add_library(JavaScriptCoreGTK SHARED "${CMAKE_BINARY_DIR}/cmakeconfig.h")
+-target_link_libraries(JavaScriptCoreGTK ${JavaScriptCoreGTK_LIBRARIES})
+-set_target_properties(JavaScriptCoreGTK PROPERTIES OUTPUT_NAME javascriptcoregtk-${WEBKITGTK_API_VERSION})
+-
+-WEBKIT_POPULATE_LIBRARY_VERSION(JAVASCRIPTCORE)
+-set_target_properties(JavaScriptCoreGTK PROPERTIES VERSION ${JAVASCRIPTCORE_VERSION} SOVERSION 
${JAVASCRIPTCORE_VERSION_MAJOR})
+-
+-if (NOT DEVELOPER_MODE AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-    WEBKIT_ADD_TARGET_PROPERTIES(JavaScriptCoreGTK LINK_FLAGS 
"-Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/javascriptcoregtk-symbols.map")
+-endif ()
+-
+-install(TARGETS JavaScriptCoreGTK DESTINATION "${LIB_INSTALL_DIR}")
+diff --git a/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.h 
b/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.h
+index 6d8848279ff..0097d5c79df 100644
+--- a/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.h
++++ b/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorServer.h
+@@ -43,10 +43,10 @@ namespace Inspector {
+ 
+ class RemoteInspectorServer {
+ public:
+-    static RemoteInspectorServer& singleton();
++    JS_EXPORT_PRIVATE static RemoteInspectorServer& singleton();
+     ~RemoteInspectorServer();
+ 
+-    bool start(const char* address, unsigned port);
++    JS_EXPORT_PRIVATE bool start(const char* address, unsigned port);
+     bool isRunning() const { return !!m_dbusServer; }
+ 
+ private:
+diff --git a/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorUtils.h 
b/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorUtils.h
+index 6f95ab5c52a..ea43307abdd 100644
+--- a/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorUtils.h
++++ b/Source/JavaScriptCore/inspector/remote/glib/RemoteInspectorUtils.h
+@@ -35,7 +35,7 @@ typedef struct _GBytes GBytes;
+ namespace Inspector {
+ 
+ GRefPtr<GBytes> backendCommands();
+-const CString& backendCommandsHash();
++JS_EXPORT_PRIVATE const CString& backendCommandsHash();
+ 
+ } // namespace Inspector
+ 
+diff --git a/Source/JavaScriptCore/javascriptcoregtk-symbols.map 
b/Source/JavaScriptCore/javascriptcoregtk-symbols.map
+deleted file mode 100644
+index 9b856ff01f1..00000000000
+--- a/Source/JavaScriptCore/javascriptcoregtk-symbols.map
++++ /dev/null
+@@ -1,6 +0,0 @@
+-{
+-global:
+-  JS*;
+-local:
+-  *;
+-};
+diff --git a/Source/JavaScriptCore/runtime/JSExportMacros.h b/Source/JavaScriptCore/runtime/JSExportMacros.h
+index ca313893ed4..3d17f30f6b8 100644
+--- a/Source/JavaScriptCore/runtime/JSExportMacros.h
++++ b/Source/JavaScriptCore/runtime/JSExportMacros.h
+@@ -46,23 +46,8 @@
+ 
+ #else // !USE(EXPORT_MACROS)
+ 
+-#if USE(DECLSPEC_ATTRIBUTE)
+-
+-#if defined(BUILDING_JavaScriptCore) || defined(STATICALLY_LINKED_WITH_JavaScriptCore)
+-#define JS_EXPORTDATA __declspec(dllexport)
+-#else
+-#define JS_EXPORTDATA __declspec(dllimport)
+-#endif
+-
+-#define JS_EXPORTCLASS JS_EXPORTDATA
+-
+-#else // !PLATFORM...
+-
+ #define JS_EXPORTDATA
+ #define JS_EXPORTCLASS
+-
+-#endif // !PLATFORM...
+-
+ #define JS_EXPORT_PRIVATE
+ #define JS_EXPORT_HIDDEN
+ 
+diff --git a/Source/WTF/wtf/ExportMacros.h b/Source/WTF/wtf/ExportMacros.h
+index 52ff18f3d55..6c93745a535 100644
+--- a/Source/WTF/wtf/ExportMacros.h
++++ b/Source/WTF/wtf/ExportMacros.h
+@@ -78,8 +78,7 @@
+ #define WTF_IMPORT WTF_IMPORT_DECLARATION
+ #define WTF_HIDDEN WTF_IMPORT_DECLARATION
+ 
+-// FIXME: When all ports are using the export macros, we should replace
+-// WTF_EXPORTDATA with WTF_EXPORT_PRIVATE macros.
++// FIXME: We should replace WTF_EXPORTDATA with WTF_EXPORT_PRIVATE macros.
+ #if defined(WTF_IS_LINKED_IN_SAME_BINARY)
+ #define WTF_EXPORTDATA WTF_EXPORT
+ #else
+@@ -88,18 +87,8 @@
+ 
+ #else // !USE(EXPORT_MACROS)
+ 
+-#if USE(DECLSPEC_ATTRIBUTE)
+-#if defined(BUILDING_WTF) || defined(STATICALLY_LINKED_WITH_WTF)
+-#define WTF_EXPORTDATA __declspec(dllexport)
+-#else
+-#define WTF_EXPORTDATA __declspec(dllimport)
+-#endif
+-#else // !OS(WINDOWS) || COMPILER(GCC_OR_CLANG)
+ #define WTF_EXPORTDATA
+-#endif
+-
+-#define WTF_EXPORTCLASS WTF_EXPORTDATA
+-
++#define WTF_EXPORTCLASS
+ #define WTF_EXPORT
+ #define WTF_IMPORT
+ #define WTF_HIDDEN
+@@ -113,7 +102,3 @@
+ #endif
+ 
+ #define WTF_EXPORT_STRING_API WTF_EXPORT_PRIVATE
+-
+-#define WTF_EXPORT_HIDDEN WTF_HIDDEN
+-
+-#define HIDDEN_INLINE WTF_EXPORT_HIDDEN inline
+diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
+index c315ee25fc0..475fad535ef 100644
+--- a/Source/WTF/wtf/Platform.h
++++ b/Source/WTF/wtf/Platform.h
+@@ -1067,18 +1067,13 @@
+ #include <wtf/glib/GTypedefs.h>
+ #endif
+ 
+-/* FIXME: This define won't be needed once #27551 is fully landed. However,
+-   since most ports try to support sub-project independence, adding new headers
+-   to WTF causes many ports to break, and so this way we can address the build
+-   breakages one port at a time. */
+-#if !defined(USE_EXPORT_MACROS) && (PLATFORM(COCOA) || OS(WINDOWS))
++/* Windows and Apple ports always need export macros enabled. Linux ports
++ * usually need them turned off, but GTK is weird due to its separate
++ * libjavascriptcoregtk. */
++#if !defined(USE_EXPORT_MACROS) && !PLATFORM(WPE)
+ #define USE_EXPORT_MACROS 1
+ #endif
+ 
+-#if !defined(USE_EXPORT_MACROS_FOR_TESTING) && (PLATFORM(GTK) || OS(WINDOWS))
+-#define USE_EXPORT_MACROS_FOR_TESTING 1
+-#endif
+-
+ #if PLATFORM(GTK) || PLATFORM(WPE)
+ #define USE_UNIX_DOMAIN_SOCKETS 1
+ #endif
+diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
+index b4d4e6bffa3..dd62e22c162 100644
+--- a/Source/cmake/OptionsGTK.cmake
++++ b/Source/cmake/OptionsGTK.cmake
+@@ -376,6 +376,7 @@ set(WebKit_PKGCONFIG_FILE ${CMAKE_BINARY_DIR}/Source/WebKitLegacy/gtk/webkitgtk-
+ set(WebKit2_PKGCONFIG_FILE ${CMAKE_BINARY_DIR}/Source/WebKit/webkit2gtk-${WEBKITGTK_API_VERSION}.pc)
+ set(WebKit2WebExtension_PKGCONFIG_FILE 
${CMAKE_BINARY_DIR}/Source/WebKit/webkit2gtk-web-extension-${WEBKITGTK_API_VERSION}.pc)
+ 
++set(JavaScriptCore_LIBRARY_TYPE SHARED)
+ set(SHOULD_INSTALL_JS_SHELL ON)
+ 
+ # Add a typelib file to the list of all typelib dependencies. This makes it easy to
+-- 
+2.14.3
+


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