[gnome-sdk-images] Add patch to hopefully unbreak WebKitGTK+
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-sdk-images] Add patch to hopefully unbreak WebKitGTK+
- Date: Sun, 14 Jan 2018 03:52:26 +0000 (UTC)
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]