diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/webkitgtk')
4 files changed, 349 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/webkitgtk/428774.patch b/nixpkgs/pkgs/development/libraries/webkitgtk/428774.patch new file mode 100644 index 000000000000..85da185dc4e4 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/webkitgtk/428774.patch @@ -0,0 +1,86 @@ +diff -aru a/Source/WebKit/NetworkProcess/ServiceWorker/WebSWOriginStore.cpp b/Source/WebKit/NetworkProcess/ServiceWorker/WebSWOriginStore.cpp +--- a/Source/WebKit/NetworkProcess/ServiceWorker/WebSWOriginStore.cpp 2021-02-26 04:57:15.000000000 -0500 ++++ b/Source/WebKit/NetworkProcess/ServiceWorker/WebSWOriginStore.cpp 2021-05-16 14:45:32.000000000 -0400 +@@ -87,7 +87,7 @@ + if (!m_store.createSharedMemoryHandle(handle)) + return; + +-#if OS(DARWIN) || OS(WINDOWS) ++#if (OS(DARWIN) || OS(WINDOWS)) && !USE(UNIX_DOMAIN_SOCKETS) + uint64_t dataSize = handle.size(); + #else + uint64_t dataSize = 0; +diff -aru a/Source/WebKit/Platform/IPC/IPCSemaphore.cpp b/Source/WebKit/Platform/IPC/IPCSemaphore.cpp +--- a/Source/WebKit/Platform/IPC/IPCSemaphore.cpp 2021-02-26 04:57:15.000000000 -0500 ++++ b/Source/WebKit/Platform/IPC/IPCSemaphore.cpp 2021-05-16 15:54:53.000000000 -0400 +@@ -26,8 +26,6 @@ + #include "config.h" + #include "IPCSemaphore.h" + +-#if !OS(DARWIN) +- + namespace IPC { + + Semaphore::Semaphore() = default; +@@ -46,5 +44,3 @@ + } + + } +- +-#endif +diff -aru a/Source/WebKit/Platform/IPC/IPCSemaphore.h b/Source/WebKit/Platform/IPC/IPCSemaphore.h +--- a/Source/WebKit/Platform/IPC/IPCSemaphore.h 2021-02-26 04:57:15.000000000 -0500 ++++ b/Source/WebKit/Platform/IPC/IPCSemaphore.h 2021-05-16 14:46:13.000000000 -0400 +@@ -29,7 +29,7 @@ + #include <wtf/Optional.h> + #include <wtf/Seconds.h> + +-#if OS(DARWIN) ++#if PLATFORM(COCOA) + #include <mach/semaphore.h> + #include <wtf/MachSendRight.h> + #endif +@@ -51,7 +51,7 @@ + void encode(Encoder&) const; + static Optional<Semaphore> decode(Decoder&); + +-#if OS(DARWIN) ++#if PLATFORM(COCOA) + explicit Semaphore(MachSendRight&&); + + void signal(); +@@ -64,7 +64,7 @@ + #endif + + private: +-#if OS(DARWIN) ++#if PLATFORM(COCOA) + void destroy(); + MachSendRight m_sendRight; + semaphore_t m_semaphore { SEMAPHORE_NULL }; +Only in b/Source/WebKit/Platform/IPC: IPCSemaphore.h.orig +diff -aru a/Source/WebKit/Platform/SharedMemory.h b/Source/WebKit/Platform/SharedMemory.h +--- a/Source/WebKit/Platform/SharedMemory.h 2021-02-26 04:57:15.000000000 -0500 ++++ b/Source/WebKit/Platform/SharedMemory.h 2021-05-16 14:45:32.000000000 -0400 +@@ -75,7 +75,7 @@ + + bool isNull() const; + +-#if OS(DARWIN) || OS(WINDOWS) ++#if (OS(DARWIN) || OS(WINDOWS)) && !USE(UNIX_DOMAIN_SOCKETS) + size_t size() const { return m_size; } + #endif + +diff -aru a/Source/WebKit/UIProcess/VisitedLinkStore.cpp b/Source/WebKit/UIProcess/VisitedLinkStore.cpp +--- a/Source/WebKit/UIProcess/VisitedLinkStore.cpp 2021-02-26 04:57:16.000000000 -0500 ++++ b/Source/WebKit/UIProcess/VisitedLinkStore.cpp 2021-05-16 14:45:32.000000000 -0400 +@@ -119,7 +119,7 @@ + return; + + // FIXME: Get the actual size of data being sent from m_linkHashStore and send it in the SharedMemory::IPCHandle object. +-#if OS(DARWIN) || OS(WINDOWS) ++#if (OS(DARWIN) || OS(WINDOWS)) && !USE(UNIX_DOMAIN_SOCKETS) + uint64_t dataSize = handle.size(); + #else + uint64_t dataSize = 0; +Only in b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics: DrawingAreaCoordinatedGraphics.cpp.orig diff --git a/nixpkgs/pkgs/development/libraries/webkitgtk/default.nix b/nixpkgs/pkgs/development/libraries/webkitgtk/default.nix new file mode 100644 index 000000000000..23307b0f36b7 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/webkitgtk/default.nix @@ -0,0 +1,235 @@ +{ lib, stdenv +, runCommand +, fetchurl +, fetchpatch +, perl +, python3 +, ruby +, bison +, gperf +, cmake +, ninja +, pkg-config +, gettext +, gobject-introspection +, libnotify +, gnutls +, libgcrypt +, libgpg-error +, gtk3 +, wayland +, libwebp +, enchant2 +, xorg +, libxkbcommon +, epoxy +, at-spi2-core +, libxml2 +, libsoup +, libsecret +, libxslt +, harfbuzz +, libpthreadstubs +, pcre +, nettle +, libtasn1 +, p11-kit +, libidn +, libedit +, readline +, apple_sdk +, libGL +, libGLU +, mesa +, libintl +, lcms2 +, libmanette +, openjpeg +, enableGeoLocation ? true +, geoclue2 +, sqlite +, enableGLES ? true +, gst-plugins-base +, gst-plugins-bad +, woff2 +, bubblewrap +, libseccomp +, systemd +, xdg-dbus-proxy +, substituteAll +, glib +, addOpenGLRunpath +}: + +assert enableGeoLocation -> geoclue2 != null; + +stdenv.mkDerivation rec { + pname = "webkitgtk"; + version = "2.34.0"; + + outputs = [ "out" "dev" ]; + + separateDebugInfo = stdenv.isLinux; + + src = fetchurl { + url = "https://webkitgtk.org/releases/${pname}-${version}.tar.xz"; + sha256 = "sha256-iAyO5ib2cBn2dVfKCeWaI+zyReYPYXMhXxqII8sJrzQ="; + }; + + patches = lib.optionals stdenv.isLinux [ + (substituteAll { + src = ./fix-bubblewrap-paths.patch; + inherit (builtins) storeDir; + inherit (addOpenGLRunpath) driverLink; + }) + ./libglvnd-headers.patch + ] ++ lib.optionals stdenv.isDarwin [ + # https://bugs.webkit.org/show_bug.cgi?id=225856 + (fetchpatch { + url = "https://bug-225856-attachments.webkit.org/attachment.cgi?id=428797"; + sha256 = "sha256-ffo5p2EyyjXe3DxdrvAcDKqxwnoqHtYBtWod+1fOjMU="; + excludes = [ "Source/WebCore/ChangeLog" ]; + }) + + # https://bugs.webkit.org/show_bug.cgi?id=225850 + ./428774.patch # https://bug-225850-attachments.webkit.org/attachment.cgi?id=428774 + (fetchpatch { + url = "https://bug-225850-attachments.webkit.org/attachment.cgi?id=428776"; + sha256 = "sha256-ryNRYMsk72SL0lNdh6eaAdDV3OT8KEqVq1H0j581jmQ="; + excludes = [ "Source/WTF/ChangeLog" ]; + }) + (fetchpatch { + url = "https://bug-225850-attachments.webkit.org/attachment.cgi?id=428778"; + sha256 = "sha256-78iP+T2vaIufO8TmIPO/tNDgmBgzlDzalklrOPrtUeo="; + excludes = [ "Source/WebKit/ChangeLog" ]; + }) + ]; + + preConfigure = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' + # Ignore gettext in cmake_prefix_path so that find_program doesn't + # pick up the wrong gettext. TODO: Find a better solution for + # this, maybe make cmake not look up executables in + # CMAKE_PREFIX_PATH. + cmakeFlags+=" -DCMAKE_IGNORE_PATH=${lib.getBin gettext}/bin" + ''; + + nativeBuildInputs = [ + bison + cmake + gettext + gobject-introspection + gperf + ninja + perl + perl.pkgs.FileCopyRecursive # used by copy-user-interface-resources.pl + pkg-config + python3 + ruby + glib # for gdbus-codegen + ] ++ lib.optionals stdenv.isLinux [ + wayland # for wayland-scanner + ]; + + buildInputs = [ + at-spi2-core + enchant2 + epoxy + gnutls + gst-plugins-bad + gst-plugins-base + harfbuzz + libGL + libGLU + mesa # for libEGL headers + libgcrypt + libgpg-error + libidn + libintl + lcms2 + ] ++ lib.optionals stdenv.isLinux [ + libmanette + ] ++ [ + libnotify + libpthreadstubs + libsecret + libtasn1 + libwebp + libxkbcommon + libxml2 + libxslt + nettle + openjpeg + p11-kit + pcre + sqlite + woff2 + ] ++ (with xorg; [ + libXdamage + libXdmcp + libXt + libXtst + ]) ++ lib.optionals stdenv.isDarwin [ + libedit + readline + ] ++ lib.optional (stdenv.isDarwin && !stdenv.isAarch64) ( + # Pull a header that contains a definition of proc_pid_rusage(). + # (We pick just that one because using the other headers from `sdk` is not + # compatible with our C++ standard library. This header is already in + # the standard library on aarch64) + runCommand "${pname}_headers" {} '' + install -Dm444 "${lib.getDev apple_sdk.sdk}"/include/libproc.h "$out"/include/libproc.h + '' + ) ++ lib.optionals stdenv.isLinux [ + bubblewrap + libseccomp + systemd + wayland + xdg-dbus-proxy + ] ++ lib.optional enableGeoLocation geoclue2; + + propagatedBuildInputs = [ + gtk3 + libsoup + ]; + + cmakeFlags = [ + "-DENABLE_INTROSPECTION=ON" + "-DPORT=GTK" + "-DUSE_LIBHYPHEN=OFF" + "-DUSE_WPE_RENDERER=OFF" + "-DUSE_SOUP2=${if lib.versions.major libsoup.version == "2" then "ON" else "OFF"}" + ] ++ lib.optionals stdenv.isDarwin [ + "-DENABLE_GAMEPAD=OFF" + "-DENABLE_GTKDOC=OFF" + "-DENABLE_MINIBROWSER=OFF" + "-DENABLE_QUARTZ_TARGET=ON" + "-DENABLE_VIDEO=ON" + "-DENABLE_WEBGL=OFF" + "-DENABLE_WEB_AUDIO=OFF" + "-DENABLE_X11_TARGET=OFF" + "-DUSE_APPLE_ICU=OFF" + "-DUSE_OPENGL_OR_ES=OFF" + "-DUSE_SYSTEM_MALLOC=ON" + ] ++ lib.optionals (!stdenv.isLinux) [ + "-DUSE_SYSTEMD=OFF" + ] ++ lib.optional (stdenv.isLinux && enableGLES) "-DENABLE_GLES2=ON"; + + postPatch = '' + patchShebangs . + '' + lib.optionalString stdenv.isDarwin '' + # It needs malloc_good_size. + sed 22i'#include <malloc/malloc.h>' -i Source/WTF/wtf/FastMalloc.h + # <CommonCrypto/CommonRandom.h> needs CCCryptorStatus. + sed 43i'#include <CommonCrypto/CommonCryptor.h>' -i Source/WTF/wtf/RandomDevice.cpp + ''; + + requiredSystemFeatures = [ "big-parallel" ]; + + meta = with lib; { + description = "Web content rendering engine, GTK port"; + homepage = "https://webkitgtk.org/"; + license = licenses.bsd2; + platforms = platforms.linux ++ platforms.darwin; + maintainers = teams.gnome.members; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/webkitgtk/fix-bubblewrap-paths.patch b/nixpkgs/pkgs/development/libraries/webkitgtk/fix-bubblewrap-paths.patch new file mode 100644 index 000000000000..d502958f4f1a --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/webkitgtk/fix-bubblewrap-paths.patch @@ -0,0 +1,16 @@ +diff -ru old/webkitgtk-2.26.0/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp webkitgtk-2.26.0/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp +--- old/webkitgtk-2.26.0/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp 2019-09-09 04:47:07.000000000 -0400 ++++ webkitgtk-2.26.0/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp 2019-09-20 21:14:10.537921173 -0400 +@@ -724,6 +724,12 @@ + "--ro-bind-try", "/usr/local/lib64", "/usr/local/lib64", + + "--ro-bind-try", PKGLIBEXECDIR, PKGLIBEXECDIR, ++ ++ // Nix Directories ++ "--ro-bind", "@storeDir@", "@storeDir@", ++ "--ro-bind", "/run/current-system", "/run/current-system", ++ "--ro-bind-try", "@driverLink@/lib", "@driverLink@/lib", ++ "--ro-bind-try", "@driverLink@/share", "@driverLink@/share", + }; + // We would have to parse ld config files for more info. + bindPathVar(sandboxArgs, "LD_LIBRARY_PATH"); diff --git a/nixpkgs/pkgs/development/libraries/webkitgtk/libglvnd-headers.patch b/nixpkgs/pkgs/development/libraries/webkitgtk/libglvnd-headers.patch new file mode 100644 index 000000000000..8d7f2477b55a --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/webkitgtk/libglvnd-headers.patch @@ -0,0 +1,12 @@ +diff --git a/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp b/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp +index 8d848ce4..46d42c11 100644 +--- a/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp ++++ b/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp +@@ -31,6 +31,7 @@ + #include "WebKitWaylandServerProtocol.h" + #include <EGL/egl.h> + #include <EGL/eglext.h> ++#include <EGL/eglmesaext.h> + #include <WebCore/GLContext.h> + #include <WebCore/PlatformDisplayWayland.h> + #include <WebCore/Region.h> |