diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/webkitgtk')
3 files changed, 219 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/webkitgtk/default.nix b/nixpkgs/pkgs/development/libraries/webkitgtk/default.nix new file mode 100644 index 000000000000..84ffd2cd8130 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/webkitgtk/default.nix @@ -0,0 +1,184 @@ +{ stdenv +, fetchurl +, perl +, python3 +, ruby +, bison +, gperf +, cmake +, ninja +, pkgconfig +, gettext +, gobject-introspection +, libnotify +, gnutls +, libgcrypt +, gtk3 +, wayland +, libwebp +, enchant2 +, xorg +, libxkbcommon +, epoxy +, at-spi2-core +, libxml2 +, libsoup +, libsecret +, libxslt +, harfbuzz +, libpthreadstubs +, pcre +, nettle +, libtasn1 +, p11-kit +, libidn +, libedit +, readline +, libGL +, libGLU +, libintl +, openjpeg +, enableGeoLocation ? true +, geoclue2 +, sqlite +, enableGtk2Plugins ? false +, gtk2 ? null +, gst-plugins-base +, gst-plugins-bad +, woff2 +, bubblewrap +, libseccomp +, xdg-dbus-proxy +, substituteAll +, glib +}: + +assert enableGeoLocation -> geoclue2 != null; +assert enableGtk2Plugins -> gtk2 != null; +assert stdenv.isDarwin -> !enableGtk2Plugins; + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "webkitgtk"; + version = "2.28.2"; + + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "https://webkitgtk.org/releases/${pname}-${version}.tar.xz"; + sha256 = "udI1Jc/Y0iw3tdlkqf6ajOdYMEKi+NOSLnHmu8aMML0="; + }; + + patches = optionals stdenv.isLinux [ + (substituteAll { + src = ./fix-bubblewrap-paths.patch; + inherit (builtins) storeDir; + }) + ./libglvnd-headers.patch + ]; + + preConfigure = stdenv.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=${getBin gettext}/bin" + ''; + + nativeBuildInputs = [ + bison + cmake + gettext + gobject-introspection + gperf + ninja + perl + pkgconfig + python3 + ruby + glib # for gdbus-codegen + wayland # for wayland-scanner + ]; + + buildInputs = [ + at-spi2-core + enchant2 + epoxy + gnutls + gst-plugins-bad + gst-plugins-base + harfbuzz + libGL + libGLU + libgcrypt + libidn + libintl + libnotify + libpthreadstubs + libsecret + libtasn1 + libwebp + libxkbcommon + libxml2 + libxslt + nettle + openjpeg + p11-kit + pcre + sqlite + woff2 + ] ++ (with xorg; [ + libXdamage + libXdmcp + libXt + libXtst + ]) ++ optionals stdenv.isDarwin [ + libedit + readline + ] ++ optionals stdenv.isLinux [ + bubblewrap + libseccomp + wayland + xdg-dbus-proxy + ] ++ optional enableGeoLocation geoclue2 + ++ optional enableGtk2Plugins gtk2; + + propagatedBuildInputs = [ + gtk3 + libsoup + ]; + + cmakeFlags = [ + "-DENABLE_INTROSPECTION=ON" + "-DPORT=GTK" + "-DUSE_LIBHYPHEN=OFF" + "-DUSE_WPE_RENDERER=OFF" + ] ++ optionals stdenv.isDarwin [ + "-DENABLE_GRAPHICS_CONTEXT_3D=OFF" + "-DENABLE_GTKDOC=OFF" + "-DENABLE_MINIBROWSER=OFF" + "-DENABLE_OPENGL=OFF" + "-DENABLE_QUARTZ_TARGET=ON" + "-DENABLE_VIDEO=ON" + "-DENABLE_WEBGL=OFF" + "-DENABLE_WEB_AUDIO=OFF" + "-DENABLE_X11_TARGET=OFF" + "-DUSE_ACCELERATE=0" + "-DUSE_SYSTEM_MALLOC=ON" + ] ++ optional (!enableGtk2Plugins) "-DENABLE_PLUGIN_PROCESS_GTK2=OFF" + ++ optional stdenv.isLinux "-DENABLE_GLES2=ON"; + + postPatch = '' + patchShebangs . + ''; + + meta = { + description = "Web content rendering engine, GTK port"; + homepage = "https://webkitgtk.org/"; + license = licenses.bsd2; + platforms = platforms.linux; + hydraPlatforms = []; + 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..6485ba0f261f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/webkitgtk/fix-bubblewrap-paths.patch @@ -0,0 +1,23 @@ +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 +@@ -585,7 +585,7 @@ + { SCMP_SYS(keyctl), nullptr }, + { SCMP_SYS(request_key), nullptr }, + +- // Scary VM/NUMA ops ++ // Scary VM/NUMA ops + { SCMP_SYS(move_pages), nullptr }, + { SCMP_SYS(mbind), nullptr }, + { SCMP_SYS(get_mempolicy), nullptr }, +@@ -724,6 +724,10 @@ + "--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", + }; + // 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> |