Update to webkitgtk4-2.36.0.

Survived a bulk.

with and ok robert@
This commit is contained in:
ajacoutot 2022-03-26 16:11:55 +00:00
parent 7815cda9ca
commit 3b35a42f71
20 changed files with 197 additions and 87 deletions

View File

@ -11,7 +11,7 @@ PORTROACH = limitw:1,even
COMMENT = GTK+ port of the WebKit rendering engine
V = 2.34.6
V = 2.36.0
DISTNAME = webkitgtk-${V}
PKGNAME = webkitgtk4-${V}
@ -20,8 +20,8 @@ API = 4.0
SUBST_VARS = API
DPB_PROPERTIES = parallel
SHARED_LIBS += javascriptcoregtk-${API} 3.5 # 18.13.3
SHARED_LIBS += webkit2gtk-${API} 3.5 # 37.37.2
SHARED_LIBS += javascriptcoregtk-${API} 3.6 # 18.13.3
SHARED_LIBS += webkit2gtk-${API} 3.6 # 37.37.2
CATEGORIES = www
@ -57,6 +57,7 @@ MODPY_ADJ_FILES = Tools/glib/generate-inspector-gresource-manifest.py
MODGNOME_TOOLS = gobject-introspection
# XXX set DEBUG=-g1 because libWebCoreGTK.a is too big (4.1G)
# https://bugs.webkit.org/show_bug.cgi?id=140384
# ld.lld: error: lib/libWebCoreGTK.a:
# could not get the member for symbol WebCore::WorkerThread::runEventLoop():
# truncated or malformed archive (terminator characters in archive member "ar" not the correct "`\n" values for the archive member header for 12__retguard_29)
@ -91,9 +92,12 @@ CONFIGURE_ARGS = -DPORT=GTK \
-DENABLE_MINIBROWSER=ON \
-DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \
-DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \
-DUSE_SYSTEMD=OFF \
-DENABLE_JOURNALD_LOG=OFF \
-DUSE_SOUP2=ON
# XXX broken at run time
#CONFIGURE_ARGS += -DUSE_SYSTEM_MALLOC=ON
# required for faking a better user-agent
.if ${MACHINE_ARCH} == "amd64"
CPUARCH = x86_64
@ -119,11 +123,11 @@ CONFIGURE_ARGS += -DENABLE_C_LOOP=ON
.endif
# we don't want an allocation of 1GB, it's above the default ulimit
.if ${MACHINE_ARCH} == "amd64"
# On amd64 we don't want an initial allocation of 1GB,
# it's above the default ulimit, so let's do 128M instead.
CXXFLAGS += -DFIXED_EXECUTABLE_MEMORY_POOL_SIZE_IN_MB=128
CXXFLAGS += -DFIXED_EXECUTABLE_MEMORY_POOL_SIZE_IN_MB=512
.endif
CXXFLAGS += -DSTRUCTURE_HEAP_ADDRESS_SIZE_IN_MB=256
# XXX fatal error: 'X11/Xlib.h' file not found
CXXFLAGS += -I${X11BASE}/include

View File

@ -1,2 +1,2 @@
SHA256 (webkitgtk-2.34.6.tar.xz) = a8j9A0qtBDKiRZzk/H7iWtZaSSTGGL+Nk7UrDBqEwfY=
SIZE (webkitgtk-2.34.6.tar.xz) = 24393340
SHA256 (webkitgtk-2.36.0.tar.xz) = uHfMofEFI19d1Xx6wrLCvjxraR/0RPk5JcclTPFWxk0=
SIZE (webkitgtk-2.36.0.tar.xz) = 26900828

View File

@ -1,7 +1,7 @@
Index: Source/JavaScriptCore/assembler/ARM64Assembler.h
--- Source/JavaScriptCore/assembler/ARM64Assembler.h.orig
+++ Source/JavaScriptCore/assembler/ARM64Assembler.h
@@ -2950,6 +2950,8 @@ class ARM64Assembler { (public)
@@ -2945,6 +2945,8 @@ class ARM64Assembler { (public)
{
#if OS(DARWIN)
sys_cache_control(kCacheFunctionPrepareForExecution, code, size);

View File

@ -1,7 +1,7 @@
Index: Source/JavaScriptCore/assembler/ARMv7Assembler.h
--- Source/JavaScriptCore/assembler/ARMv7Assembler.h.orig
+++ Source/JavaScriptCore/assembler/ARMv7Assembler.h
@@ -2419,6 +2419,8 @@ class ARMv7Assembler { (public)
@@ -2507,6 +2507,8 @@ class ARMv7Assembler { (public)
linuxPageFlush(current, current + page);
linuxPageFlush(current, end);

View File

@ -1,7 +1,7 @@
Index: Source/JavaScriptCore/jsc.cpp
--- Source/JavaScriptCore/jsc.cpp.orig
+++ Source/JavaScriptCore/jsc.cpp
@@ -75,6 +75,7 @@
@@ -78,6 +78,7 @@
#include "WasmCapabilities.h"
#include "WasmFaultSignalHandler.h"
#include "WasmMemory.h"

View File

@ -1,7 +1,7 @@
Index: Source/JavaScriptCore/runtime/MachineContext.h
--- Source/JavaScriptCore/runtime/MachineContext.h.orig
+++ Source/JavaScriptCore/runtime/MachineContext.h
@@ -195,6 +195,22 @@ static inline void*& stackPointerImpl(mcontext_t& mach
@@ -176,6 +176,22 @@ static inline void*& stackPointerImpl(mcontext_t& mach
#error Unknown Architecture
#endif
@ -24,7 +24,7 @@ Index: Source/JavaScriptCore/runtime/MachineContext.h
#elif OS(FUCHSIA) || OS(LINUX)
#if CPU(X86)
@@ -346,6 +362,22 @@ static inline void*& framePointerImpl(mcontext_t& mach
@@ -305,6 +321,22 @@ static inline void*& framePointerImpl(mcontext_t& mach
#error Unknown Architecture
#endif
@ -47,7 +47,7 @@ Index: Source/JavaScriptCore/runtime/MachineContext.h
#elif OS(FUCHSIA) || OS(LINUX)
// The following sequence depends on glibc's sys/ucontext.h.
@@ -497,6 +529,22 @@ static inline void*& instructionPointerImpl(mcontext_t
@@ -447,6 +479,22 @@ static inline void*& instructionPointerImpl(mcontext_t
#error Unknown Architecture
#endif
@ -70,7 +70,7 @@ Index: Source/JavaScriptCore/runtime/MachineContext.h
#elif OS(FUCHSIA) || OS(LINUX)
// The following sequence depends on glibc's sys/ucontext.h.
@@ -655,6 +703,22 @@ inline void*& argumentPointer<1>(mcontext_t& machineCo
@@ -587,6 +635,22 @@ inline void*& argumentPointer<1>(mcontext_t& machineCo
#error Unknown Architecture
#endif
@ -93,7 +93,7 @@ Index: Source/JavaScriptCore/runtime/MachineContext.h
#elif OS(FUCHSIA) || OS(LINUX)
// The following sequence depends on glibc's sys/ucontext.h.
@@ -766,6 +830,22 @@ inline void*& llintInstructionPointer(mcontext_t& mach
@@ -700,6 +764,22 @@ inline void*& llintInstructionPointer(mcontext_t& mach
return reinterpret_cast<void*&>((uintptr_t&) machineContext.__gregs[_REG_R8]);
#elif CPU(ARM64)
return reinterpret_cast<void*&>((uintptr_t&) machineContext.mc_gpregs.gp_x[4]);

View File

@ -0,0 +1,20 @@
Index: Source/ThirdParty/ANGLE/src/common/platform.h
--- Source/ThirdParty/ANGLE/src/common/platform.h.orig
+++ Source/ThirdParty/ANGLE/src/common/platform.h
@@ -26,7 +26,15 @@
#elif defined(__linux__) || defined(EMSCRIPTEN)
# define ANGLE_PLATFORM_LINUX 1
# define ANGLE_PLATFORM_POSIX 1
-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
+#elif defined(__OpenBSD__)
+# define ANGLE_PLATFORM_OPENBSD 1
+# define ANGLE_PLATFORM_POSIX 1
+# define ANGLE_PLATFORM_BSD 1
+#elif defined(__FreeBSD__)
+# define ANGLE_PLATFORM_FREEBSD 1
+# define ANGLE_PLATFORM_POSIX 1
+# define ANGLE_PLATFORM_BSD 1
+#elif defined(__NetBSD__) || \
defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \
defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__)
# define ANGLE_PLATFORM_POSIX 1

View File

@ -0,0 +1,16 @@
Index: Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp
--- Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp.orig
+++ Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp
@@ -222,10 +222,12 @@ Library *OpenSharedLibraryWithExtensionAndGetError(con
}
int extraFlags = 0;
+#if !ANGLE_PLATFORM_OPENBSD
if (searchType == SearchType::AlreadyLoaded)
{
extraFlags = RTLD_NOLOAD;
}
+#endif
std::string fullPath = directory + libraryName;
#if ANGLE_PLATFORM_IOS

View File

@ -3,7 +3,7 @@ https://bugs.webkit.org/show_bug.cgi?id=129963
Index: Source/WTF/wtf/PlatformEnable.h
--- Source/WTF/wtf/PlatformEnable.h.orig
+++ Source/WTF/wtf/PlatformEnable.h
@@ -637,7 +637,7 @@
@@ -644,7 +644,7 @@
#if !defined(ENABLE_DFG_JIT) && ENABLE(JIT)
/* Enable the DFG JIT on X86 and X86_64. */

View File

@ -1,14 +0,0 @@
https://bugs.webkit.org/show_bug.cgi?id=129963
Index: Source/WTF/wtf/PlatformHave.h
--- Source/WTF/wtf/PlatformHave.h.orig
+++ Source/WTF/wtf/PlatformHave.h
@@ -222,7 +222,7 @@
#define HAVE_HOSTED_CORE_ANIMATION 1
#endif
-#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(LINUX)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
+#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(OPENBSD) || OS(LINUX)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
#define HAVE_MACHINE_CONTEXT 1
#endif

View File

@ -1,25 +0,0 @@
XXX no mcontext_t on OpenBSD
Index: Source/WTF/wtf/PlatformRegisters.h
--- Source/WTF/wtf/PlatformRegisters.h.orig
+++ Source/WTF/wtf/PlatformRegisters.h
@@ -34,6 +34,8 @@
#include <signal.h>
#elif OS(WINDOWS)
#include <windows.h>
+#elif OS(OPENBSD)
+typedef ucontext_t mcontext_t;
#else
#include <sys/ucontext.h>
#endif
@@ -75,7 +77,9 @@ struct PlatformRegisters {
inline PlatformRegisters& registersFromUContext(ucontext_t* ucontext)
{
-#if CPU(PPC)
+#if OS(OPENBSD)
+ return *bitwise_cast<PlatformRegisters*>(ucontext);
+#elif CPU(PPC)
return *bitwise_cast<PlatformRegisters*>(ucontext->uc_mcontext.uc_regs);
#else
return *bitwise_cast<PlatformRegisters*>(&ucontext->uc_mcontext);

View File

@ -1,8 +1,8 @@
Index: Source/WebCore/page/NavigatorBase.cpp
--- Source/WebCore/page/NavigatorBase.cpp.orig
+++ Source/WebCore/page/NavigatorBase.cpp
@@ -36,7 +36,7 @@
#include <wtf/NumberOfCores.h>
@@ -40,7 +40,7 @@
#include <wtf/UniqueRef.h>
#include <wtf/text/WTFString.h>
-#if OS(LINUX)
@ -10,7 +10,7 @@ Index: Source/WebCore/page/NavigatorBase.cpp
#include "sys/utsname.h"
#include <wtf/StdLibExtras.h>
#endif
@@ -84,7 +84,7 @@ String NavigatorBase::appVersion() const
@@ -88,7 +88,7 @@ String NavigatorBase::appVersion() const
String NavigatorBase::platform() const
{

View File

@ -0,0 +1,89 @@
Index: Source/bmalloc/bmalloc/AvailableMemory.cpp
--- Source/bmalloc/bmalloc/AvailableMemory.cpp.orig
+++ Source/bmalloc/bmalloc/AvailableMemory.cpp
@@ -44,11 +44,15 @@
#import <mach/mach_error.h>
#import <math.h>
#elif BOS(UNIX)
+#if BOS(OPENBSD)
+#include <kvm.h>
+#else
#include <sys/sysinfo.h>
+#endif
#if BOS(LINUX)
#include <algorithm>
#include <fcntl.h>
-#elif BOS(FREEBSD)
+#elif BOS(FREEBSD) || BOS(OPENBSD)
#include "VMAllocate.h"
#include <sys/sysctl.h>
#include <sys/types.h>
@@ -164,6 +168,24 @@ static size_t computeAvailableMemory()
if (!sysinfo(&info))
return info.totalram * info.mem_unit;
return availableMemoryGuess;
+#elif BOS(OPENBSD)
+ struct uvmexp uvmexp;
+ size_t length;
+ static int uvmexp_mib [] = { CTL_VM, VM_UVMEXP };
+ long pages;
+ long pageSize = sysconf(_SC_PAGE_SIZE);
+ if (pageSize == -1)
+ return availableMemoryGuess;
+ length = sizeof (uvmexp);
+ if (sysctl(uvmexp_mib, std::size(uvmexp_mib), &uvmexp, &length, NULL, 0) == 0)
+ return uvmexp.npages * pageSize;
+ else {
+ bzero(&uvmexp, sizeof(length));
+ pages = sysconf(_SC_PHYS_PAGES);
+ if (pages == -1)
+ return availableMemoryGuess;
+ return pages * pageSize;
+ }
#elif BOS(UNIX)
long pages = sysconf(_SC_PHYS_PAGES);
long pageSize = sysconf(_SC_PAGE_SIZE);
@@ -178,14 +200,19 @@ static size_t computeAvailableMemory()
size_t availableMemory()
{
static size_t availableMemory;
+#if BOS(OPENBSD)
+ // We always calculate the available memory because we take care...
+ availableMemory = computeAvailableMemory();
+#else
static std::once_flag onceFlag;
std::call_once(onceFlag, [] {
availableMemory = computeAvailableMemory();
});
+#endif
return availableMemory;
}
-#if BPLATFORM(IOS_FAMILY) || BOS(LINUX) || BOS(FREEBSD)
+#if BPLATFORM(IOS_FAMILY) || BOS(LINUX) || BOS(FREEBSD) || BOS(OPENBSD)
MemoryStatus memoryStatus()
{
#if BPLATFORM(IOS_FAMILY)
@@ -211,6 +238,22 @@ MemoryStatus memoryStatus()
size_t memoryFootprint = 0;
if (!sysctl(mib, 4, &info, &infolen, nullptr, 0))
memoryFootprint = static_cast<size_t>(info.ki_rssize) * vmPageSize();
+#elif BOS(OPENBSD)
+ size_t memoryFootprint = 0, length;
+ struct kinfo_proc *info;
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 0 };
+
+ if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) == 0) {
+ info = (struct kinfo_proc *)malloc(length);
+ mib[5] = (length / sizeof(struct kinfo_proc));
+ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) == 0) {
+ memoryFootprint = static_cast<size_t>(
+ info->p_vm_tsize +
+ info->p_vm_dsize +
+ info->p_vm_ssize) * vmPageSize();
+ }
+ free(info);
+ }
#endif
double percentInUse = static_cast<double>(memoryFootprint) / static_cast<double>(availableMemory());

View File

@ -0,0 +1,21 @@
Index: Source/bmalloc/bmalloc/AvailableMemory.h
--- Source/bmalloc/bmalloc/AvailableMemory.h.orig
+++ Source/bmalloc/bmalloc/AvailableMemory.h
@@ -32,7 +32,7 @@ namespace bmalloc {
BEXPORT size_t availableMemory();
-#if BPLATFORM(IOS_FAMILY) || BOS(LINUX) || BOS(FREEBSD)
+#if BPLATFORM(IOS_FAMILY) || BOS(LINUX) || BOS(FREEBSD) || BOS(OPENBSD)
struct MemoryStatus {
MemoryStatus(size_t memoryFootprint, double percentAvailableMemoryInUse)
: memoryFootprint(memoryFootprint)
@@ -61,7 +61,7 @@ inline double percentAvailableMemoryInUse()
inline bool isUnderMemoryPressure()
{
-#if BPLATFORM(IOS_FAMILY) || BOS(LINUX) || BOS(FREEBSD)
+#if BPLATFORM(IOS_FAMILY) || BOS(LINUX) || BOS(FREEBSD) || BOS(OPENBSD)
return percentAvailableMemoryInUse() > memoryPressureThreshold;
#else
return false;

View File

@ -0,0 +1,14 @@
Index: Source/bmalloc/bmalloc/BPlatform.h
--- Source/bmalloc/bmalloc/BPlatform.h.orig
+++ Source/bmalloc/bmalloc/BPlatform.h
@@ -52,6 +52,10 @@
#define BOS_FREEBSD 1
#endif
+#if defined(__OpenBSD__)
+#define BOS_OPENBSD 1
+#endif
+
#if defined(WIN32) || defined(_WIN32)
#define BOS_WINDOWS 1
#endif

View File

@ -1,32 +1,16 @@
Our ar(1) is too old and have not support for `T'.
Put the internal library path first so that we can
build with an older webkitgtk4 package installed.
Index: Source/cmake/OptionsCommon.cmake
--- Source/cmake/OptionsCommon.cmake.orig
+++ Source/cmake/OptionsCommon.cmake
@@ -14,10 +14,10 @@ if (USE_THIN_ARCHIVES)
elseif ("${AR_ERROR}")
message(WARNING "Error from `ar`: ${AR_ERROR}")
elseif ("${AR_VERSION}" MATCHES "^GNU ar")
- set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> crT <TARGET> <LINK_FLAGS> <OBJECTS>")
- set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> crT <TARGET> <LINK_FLAGS> <OBJECTS>")
- set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> rT <TARGET> <LINK_FLAGS> <OBJECTS>")
- set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> rT <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> r <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> r <TARGET> <LINK_FLAGS> <OBJECTS>")
endif ()
@@ -180,6 +180,9 @@ if (NOT PORT STREQUAL "GTK" AND NOT PORT STREQUAL "WPE
set(LIBEXEC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Absolute path to install executables executed by the library")
endif ()
@@ -161,6 +161,9 @@ check_type_size("__int128_t" INT128_VALUE)
if (HAVE_INT128_VALUE)
SET_AND_EXPOSE_TO_BUILD(HAVE_INT128_T INT128_VALUE)
endif ()
+
+# make sure that the internal library dir is the first in the path
+link_directories("${CMAKE_BINARY_DIR}/lib")
# Check which filesystem implementation is available if any
if (STD_FILESYSTEM_IS_AVAILABLE)
+
# Check whether features.h header exists.
# Including glibc's one defines __GLIBC__, that is used in Platform.h
WEBKIT_CHECK_HAVE_INCLUDE(HAVE_FEATURES_H features.h)

View File

@ -26,9 +26,9 @@ Index: Source/cmake/WebKitCommon.cmake
- find_package(Ruby 1.9)
- if (NOT RUBY_EXECUTABLE OR RUBY_VERSION VERSION_LESS 1.9)
- message(FATAL_ERROR "Ruby 1.9 or higher is required.")
+ find_package(Ruby ${MODRUBY_LIBREV})
+ if (NOT RUBY_EXECUTABLE OR RUBY_VERSION VERSION_LESS ${MODRUBY_LIBREV})
+ message(FATAL_ERROR "Ruby ${MODRUBY_LIBREV} or higher is required.")
+ find_package(Ruby 3.0)
+ if (NOT RUBY_EXECUTABLE OR RUBY_VERSION VERSION_LESS 3.0)
+ message(FATAL_ERROR "Ruby 3.0 or higher is required.")
endif ()
# -----------------------------------------------------------------------------

View File

@ -1,7 +1,7 @@
Index: Source/cmake/WebKitCompilerFlags.cmake
--- Source/cmake/WebKitCompilerFlags.cmake.orig
+++ Source/cmake/WebKitCompilerFlags.cmake
@@ -243,9 +243,9 @@ if (NOT MSVC)
@@ -260,9 +260,9 @@ if (NOT MSVC)
string(REGEX MATCHALL "-fsanitize=[^ ]*" ENABLED_COMPILER_SANITIZERS ${CMAKE_CXX_FLAGS})
endif ()

View File

@ -1,7 +1,7 @@
Index: Source/cmake/WebKitFeatures.cmake
--- Source/cmake/WebKitFeatures.cmake.orig
+++ Source/cmake/WebKitFeatures.cmake
@@ -402,7 +402,7 @@ macro(CREATE_CONFIGURATION_HEADER)
@@ -404,7 +404,7 @@ macro(CREATE_CONFIGURATION_HEADER)
endmacro()
macro(WEBKIT_CHECK_HAVE_INCLUDE _variable _header)

View File

@ -79,6 +79,7 @@ include/webkitgtk-${API}/webkit2/WebKitSettings.h
include/webkitgtk-${API}/webkit2/WebKitURIRequest.h
include/webkitgtk-${API}/webkit2/WebKitURIResponse.h
include/webkitgtk-${API}/webkit2/WebKitURISchemeRequest.h
include/webkitgtk-${API}/webkit2/WebKitURISchemeResponse.h
include/webkitgtk-${API}/webkit2/WebKitURIUtilities.h
include/webkitgtk-${API}/webkit2/WebKitUserContent.h
include/webkitgtk-${API}/webkit2/WebKitUserContentFilterStore.h