mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-26 06:18:07 -05:00
gnu: webkitgtk: Update to 2.36.0 and enable extra features.
* gnu/packages/webkit.scm (webkitgtk): Update to 2.36.0. [source]: Remove the webkitgtk-bind-all-fonts.patch and webkitgtk-canonicalize-paths.patch patches. [arguments]: Use gexp. [tests?]: Update comment. [build-type]: Add explanatory comment. [configure-flags]: Enable gamepad support, remove nonexistent USE_SYSTEMD option and enable mini-browser. [phases]{do-not-disable-new-dtags}: New phase. {help-cmake-find-elogind}: Likewise. {patch-gtk-doc-scan}: Simplify to avoid for-each. Locate docbookx.dtd via search-input-file. {embed-absolute-wpebackend-reference}: Use search-input-file. [native-inputs]: Use new style. [inputs]: Likewise. Add elogind and libmanette. [description]: Adjust indentation. (webkitgtk-with-libsoup2): Re-format comment, fixing spacing. [configure-flags]: Use gexp. [propagated-inputs]: Use modify-inputs to replace libsoup with libsoup-minimal-2. * gnu/packages/patches/webkitgtk-bind-all-fonts.patch: Delete file. * gnu/packages/patches/webkitgtk-canonicalize-paths.patch: Likewise. * gnu/local.mk: De-register them.
This commit is contained in:
parent
322e23e600
commit
4ec7aac483
4 changed files with 132 additions and 202 deletions
|
@ -1931,9 +1931,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
|
||||
%D%/packages/patches/vtk-fix-freetypetools-build-failure.patch \
|
||||
%D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \
|
||||
%D%/packages/patches/webkitgtk-bind-all-fonts.patch \
|
||||
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \
|
||||
%D%/packages/patches/webkitgtk-canonicalize-paths.patch \
|
||||
%D%/packages/patches/webrtc-audio-processing-big-endian.patch \
|
||||
%D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch \
|
||||
%D%/packages/patches/wicd-bitrate-none-fix.patch \
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
Upstream commit: https://github.com/WebKit/WebKit/commit/31ac354cbeecf866f9a38f7b2f8f59f7975d3f6a
|
||||
|
||||
diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
|
||||
index ecc804663784..8de174be3c0e 100644
|
||||
--- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
|
||||
+++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
|
||||
@@ -288,6 +288,7 @@ static void bindFonts(Vector<CString>& args)
|
||||
const char* homeDir = g_get_home_dir();
|
||||
const char* dataDir = g_get_user_data_dir();
|
||||
const char* cacheDir = g_get_user_cache_dir();
|
||||
+ const char* const * dataDirs = g_get_system_data_dirs();
|
||||
|
||||
// Configs can include custom dirs but then we have to parse them...
|
||||
GUniquePtr<char> fontConfig(g_build_filename(configDir, "fontconfig", nullptr));
|
||||
@@ -304,6 +305,10 @@ static void bindFonts(Vector<CString>& args)
|
||||
bindIfExists(args, fontHomeConfigDir.get());
|
||||
bindIfExists(args, fontData.get());
|
||||
bindIfExists(args, fontHomeData.get());
|
||||
+ for (auto* dataDir = dataDirs; dataDir && *dataDir; dataDir++) {
|
||||
+ GUniquePtr<char> fontDataDir(g_build_filename(*dataDir, "fonts", nullptr));
|
||||
+ bindIfExists(args, fontDataDir.get());
|
||||
+ }
|
||||
bindIfExists(args, "/var/cache/fontconfig"); // Used by Debian.
|
||||
}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
Upstream commit: https://github.com/WebKit/WebKit/commit/6a87eb254ef57a986a1a6ce9a3a4b66928afeb65
|
||||
|
||||
diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
|
||||
index ecc804663784..a2a1c9d7a4dd 100644
|
||||
--- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
|
||||
+++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp
|
||||
@@ -27,7 +27,6 @@
|
||||
#include <seccomp.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
-#include <unistd.h>
|
||||
#include <wtf/FileSystem.h>
|
||||
#include <wtf/UniStdExtras.h>
|
||||
#include <wtf/glib/GRefPtr.h>
|
||||
@@ -165,6 +164,15 @@ enum class BindFlags {
|
||||
Device,
|
||||
};
|
||||
|
||||
+static void bindSymlinksRealPath(Vector<CString>& args, const char* path, const char* bindOption = "--ro-bind")
|
||||
+{
|
||||
+ WTF::String realPath = FileSystem::realPath(path);
|
||||
+ if (path != realPath) {
|
||||
+ CString rpath = realPath.utf8();
|
||||
+ args.appendVector(Vector<CString>({ bindOption, rpath.data(), rpath.data() }));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void bindIfExists(Vector<CString>& args, const char* path, BindFlags bindFlags = BindFlags::ReadOnly)
|
||||
{
|
||||
if (!path || path[0] == '\0')
|
||||
@@ -177,7 +185,16 @@ static void bindIfExists(Vector<CString>& args, const char* path, BindFlags bind
|
||||
bindType = "--ro-bind-try";
|
||||
else
|
||||
bindType = "--bind-try";
|
||||
- args.appendVector(Vector<CString>({ bindType, path, path }));
|
||||
+
|
||||
+ // Canonicalize the source path, otherwise a symbolic link could
|
||||
+ // point to a location outside of the namespace.
|
||||
+ bindSymlinksRealPath(args, path, bindType);
|
||||
+
|
||||
+ // As /etc is exposed wholesale, do not layer extraneous bind
|
||||
+ // directives on top, which could fail in the presence of symbolic
|
||||
+ // links.
|
||||
+ if (!g_str_has_prefix(path, "/etc/"))
|
||||
+ args.appendVector(Vector<CString>({ bindType, path, path }));
|
||||
}
|
||||
|
||||
static void bindDBusSession(Vector<CString>& args, bool allowPortals)
|
||||
@@ -410,17 +427,6 @@ static void bindV4l(Vector<CString>& args)
|
||||
}));
|
||||
}
|
||||
|
||||
-static void bindSymlinksRealPath(Vector<CString>& args, const char* path)
|
||||
-{
|
||||
- char realPath[PATH_MAX];
|
||||
-
|
||||
- if (realpath(path, realPath) && strcmp(path, realPath)) {
|
||||
- args.appendVector(Vector<CString>({
|
||||
- "--ro-bind", realPath, realPath,
|
||||
- }));
|
||||
- }
|
||||
-}
|
||||
-
|
||||
// Translate a libseccomp error code into an error message. libseccomp
|
||||
// mostly returns negative errno values such as -ENOMEM, but some
|
||||
// standard errno values are used for non-standard purposes where their
|
|
@ -6,7 +6,7 @@
|
|||
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -27,6 +27,7 @@ (define-module (gnu packages webkit)
|
|||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix build-system cmake)
|
||||
|
@ -41,6 +42,7 @@ (define-module (gnu packages webkit)
|
|||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages games)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
|
@ -239,121 +241,142 @@ (define-public wpewebkit
|
|||
(define-public webkitgtk
|
||||
(package
|
||||
(name "webkitgtk")
|
||||
(version "2.34.6")
|
||||
(version "2.36.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.webkitgtk.org/releases/"
|
||||
"webkitgtk-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1xn1hhd0qaxmjf6vy6664i4mmmjsw9zgrr4w8ni3415d981zvj3b"))
|
||||
(patches (search-patches "webkitgtk-bind-all-fonts.patch"
|
||||
"webkitgtk-adjust-bubblewrap-paths.patch"
|
||||
"webkitgtk-canonicalize-paths.patch"))))
|
||||
"0kf6avqlq9f74lwzji7l3xlnng5yqarc4ykwsmfmy8q5y6hwqxxq"))
|
||||
(patches (search-patches
|
||||
"webkitgtk-adjust-bubblewrap-paths.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(outputs '("out" "doc" "debug"))
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests
|
||||
#:build-type "Release" ; turn off debugging symbols to save space
|
||||
#:configure-flags (list
|
||||
"-DPORT=GTK"
|
||||
"-DENABLE_GTKDOC=ON" ; No doc by default
|
||||
;; Requires libmanette, new dependency added in 2.32.0.
|
||||
;; TODO Decide if we should enable this
|
||||
"-DENABLE_GAMEPAD=OFF"
|
||||
"-DUSE_SYSTEMD=OFF"
|
||||
(string-append ; uses lib64 by default
|
||||
"-DLIB_INSTALL_DIR="
|
||||
(assoc-ref %outputs "out") "/lib"))
|
||||
#:make-flags
|
||||
;; Never build with unsupported -j1: https://issues.guix.gnu.org/47964#5
|
||||
(list "-j" (number->string (max 2 (parallel-job-count))))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'configure-bubblewrap-store-directory
|
||||
(lambda _
|
||||
;; This phase is a corollary to 'webkitgtk-share-store.patch' to
|
||||
;; avoid hard coding /gnu/store, for users with other prefixes.
|
||||
(let ((store-directory (%store-directory)))
|
||||
(substitute*
|
||||
"Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp"
|
||||
(("@storedir@") store-directory)))))
|
||||
(add-after 'unpack 'patch-gtk-doc-scan
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(for-each (lambda (file)
|
||||
(substitute* file
|
||||
(("http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd")
|
||||
(string-append (assoc-ref inputs "docbook-xml")
|
||||
"/xml/dtd/docbook/docbookx.dtd"))))
|
||||
(find-files "Source" "\\.sgml$"))))
|
||||
(add-after 'unpack 'embed-absolute-wpebackend-reference
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((wpebackend-fdo (assoc-ref inputs "wpebackend-fdo")))
|
||||
(substitute* "Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp"
|
||||
(("libWPEBackend-fdo-([\\.0-9]+)\\.so" all version)
|
||||
(string-append wpebackend-fdo "/lib/" all))))))
|
||||
,@(if (target-x86-64?)
|
||||
'()
|
||||
'((add-after 'unpack 'disable-sse2
|
||||
(lambda _
|
||||
(substitute* "Source/cmake/WebKitCompilerFlags.cmake"
|
||||
(("WTF_CPU_X86 AND NOT CMAKE_CROSSCOMPILING")
|
||||
"FALSE"))))))
|
||||
(add-after 'install 'move-doc-files
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(doc (assoc-ref outputs "doc")))
|
||||
(mkdir-p (string-append doc "/share"))
|
||||
(rename-file (string-append out "/share/gtk-doc")
|
||||
(string-append doc "/share/gtk-doc"))))))))
|
||||
(list
|
||||
;; The release archive doesn't include the resources/sources needed to
|
||||
;; run the various regression tests.
|
||||
#:tests? #f
|
||||
;; When building using the default RelWithDebInfo build type, the final
|
||||
;; binaries require 20 GiB of memory to link (even with ld.gold or lld)
|
||||
;; and produce 4.6 GiB of debug symbols.
|
||||
#:build-type "Release"
|
||||
#:configure-flags #~(list
|
||||
"-DPORT=GTK"
|
||||
;; GTKDOC will be removed upstream soon in favor of
|
||||
;; gi-docgen; it is normally disabled because the
|
||||
;; doc is rather expensive to build.
|
||||
"-DENABLE_GTKDOC=ON"
|
||||
;; The minibrowser, not built by default, is a good
|
||||
;; tool to validate the good operation of
|
||||
;; webkitgtk.
|
||||
"-DENABLE_MINIBROWSER=ON"
|
||||
;; The default lib installation prefix is lib64.
|
||||
(string-append "-DLIB_INSTALL_DIR=" #$output "/lib"))
|
||||
;; The build may fail with -j1 (see:
|
||||
;; https://bugs.webkit.org/show_bug.cgi?id=195251).
|
||||
#:make-flags #~(list "-j" (number->string (max 2 (parallel-job-count))))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'configure-bubblewrap-store-directory
|
||||
(lambda _
|
||||
;; This phase works in tandem with
|
||||
;; webkitgtk-adjust-bubblewrap-paths.patch and avoids hard
|
||||
;; coding /gnu/store, for users with other prefixes.
|
||||
(let ((store-directory (%store-directory)))
|
||||
(substitute*
|
||||
"Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp"
|
||||
(("@storedir@") store-directory)))))
|
||||
(add-after 'unpack 'do-not-disable-new-dtags
|
||||
;; Ensure the linker uses new dynamic tags as this is what Guix
|
||||
;; uses and validates in the validate-runpath phase.
|
||||
(lambda _
|
||||
(substitute* "Source/cmake/OptionsCommon.cmake"
|
||||
(("if \\(LD_SUPPORTS_DISABLE_NEW_DTAGS\\)")
|
||||
"if (FALSE)"))))
|
||||
(add-after 'unpack 'help-cmake-find-elogind
|
||||
(lambda _
|
||||
(substitute* "Source/cmake/FindJournald.cmake"
|
||||
;; Otherwise, CMake would throw an error because it relies on
|
||||
;; the pkg-config search to locate headers.
|
||||
(("pkg_check_modules\\(PC_SYSTEMD QUIET libsystemd")
|
||||
"pkg_check_modules(PC_SYSTEMD QUIET libelogind"))))
|
||||
(add-after 'unpack 'patch-gtk-doc-scan
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(substitute* (find-files "Source" "\\.sgml$")
|
||||
(("http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd")
|
||||
(search-input-file (or native-inputs inputs)
|
||||
"xml/dtd/docbook/docbookx.dtd")))))
|
||||
(add-after 'unpack 'embed-absolute-wpebackend-reference
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((wpebackend-fdo (assoc-ref inputs "wpebackend-fdo")))
|
||||
(substitute* "Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp"
|
||||
(("libWPEBackend-fdo-[\\.0-9]+\\.so" all)
|
||||
(search-input-file inputs (string-append "lib/" all)))))))
|
||||
#$@(if (target-x86-64?)
|
||||
'()
|
||||
'((add-after 'unpack 'disable-sse2
|
||||
(lambda _
|
||||
(substitute* "Source/cmake/WebKitCompilerFlags.cmake"
|
||||
(("WTF_CPU_X86 AND NOT CMAKE_CROSSCOMPILING")
|
||||
"FALSE"))))))
|
||||
(add-after 'install 'move-doc-files
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((doc (assoc-ref outputs "doc")))
|
||||
(mkdir-p (string-append doc "/share"))
|
||||
(rename-file (string-append #$output "/share/gtk-doc")
|
||||
(string-append doc "/share/gtk-doc"))))))))
|
||||
(native-inputs
|
||||
`(("bison" ,bison)
|
||||
("gettext" ,gettext-minimal)
|
||||
("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("gperf" ,gperf)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python-wrapper)
|
||||
("gtk-doc" ,gtk-doc/stable) ; For documentation generation
|
||||
("docbook-xml" ,docbook-xml) ; For documentation generation
|
||||
("ruby" ,ruby)))
|
||||
(list bison
|
||||
gettext-minimal
|
||||
`(,glib "bin") ;for glib-mkenums, etc.
|
||||
gobject-introspection
|
||||
gperf
|
||||
perl
|
||||
pkg-config
|
||||
python-wrapper
|
||||
;; These are required to build the documentation.
|
||||
gtk-doc/stable
|
||||
docbook-xml
|
||||
ruby))
|
||||
(propagated-inputs
|
||||
(list gtk+ libsoup))
|
||||
(inputs
|
||||
`(("at-spi2-core" ,at-spi2-core)
|
||||
("bubblewrap" ,bubblewrap)
|
||||
("enchant" ,enchant)
|
||||
("geoclue" ,geoclue)
|
||||
("gst-plugins-base" ,gst-plugins-base)
|
||||
("gtk+-2" ,gtk+-2)
|
||||
("harfbuzz" ,harfbuzz)
|
||||
("hyphen" ,hyphen)
|
||||
("icu4c" ,icu4c)
|
||||
("lcms" ,lcms)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
("libjpeg" ,libjpeg-turbo)
|
||||
("libnotify" ,libnotify)
|
||||
("libpng" ,libpng)
|
||||
("libseccomp" ,libseccomp)
|
||||
("libsecret" ,libsecret)
|
||||
("libtasn1" ,libtasn1)
|
||||
("libwebp" ,libwebp)
|
||||
("libwpe" ,libwpe)
|
||||
("libxcomposite" ,libxcomposite)
|
||||
("libxml2" ,libxml2)
|
||||
("libxslt" ,libxslt)
|
||||
("libxt" ,libxt)
|
||||
("mesa" ,mesa)
|
||||
("openjpeg" ,openjpeg)
|
||||
("sqlite" ,sqlite)
|
||||
("woff2" ,woff2)
|
||||
("wpebackend-fdo" ,wpebackend-fdo)
|
||||
("xdg-dbus-proxy" ,xdg-dbus-proxy)))
|
||||
(list at-spi2-core
|
||||
bubblewrap
|
||||
elogind
|
||||
enchant
|
||||
geoclue
|
||||
gst-plugins-base
|
||||
gtk+-2
|
||||
harfbuzz
|
||||
hyphen
|
||||
icu4c
|
||||
lcms
|
||||
libgcrypt
|
||||
libjpeg-turbo
|
||||
libmanette
|
||||
libnotify
|
||||
libpng
|
||||
libseccomp
|
||||
libsecret
|
||||
libtasn1
|
||||
libwebp
|
||||
libwpe
|
||||
libxcomposite
|
||||
libxml2
|
||||
libxslt
|
||||
libxt
|
||||
mesa
|
||||
openjpeg
|
||||
sqlite
|
||||
woff2
|
||||
wpebackend-fdo
|
||||
xdg-dbus-proxy))
|
||||
(home-page "https://www.webkitgtk.org/")
|
||||
(synopsis "Web content engine for GTK+")
|
||||
(description
|
||||
"WebKitGTK+ is a full-featured port of the WebKit rendering engine,
|
||||
(description "WebKitGTK+ is a full-featured port of the WebKit rendering engine,
|
||||
suitable for projects requiring any kind of web integration, from hybrid
|
||||
HTML/CSS applications to full-fledged web browsers. WebKitGTK+ video playing
|
||||
capabilities can be extended through the use of GStreamer plugins (not
|
||||
|
@ -366,17 +389,17 @@ (define-public webkitgtk
|
|||
license:bsd-2
|
||||
license:bsd-3))))
|
||||
|
||||
;;; Required by gnome-online-accounts; as webkitgtk 2.34 propagates libsoup 3,
|
||||
;;; which causes the build to fail.
|
||||
;;; Also required by e.g. emacs-next-pgtk, emacs-xwidgets, and some other
|
||||
;;; Gnome packages for webkit2gtk-4.0. See also the upstream tracker for
|
||||
;;; libsoup 3: https://gitlab.gnome.org/GNOME/libsoup/-/issues/218
|
||||
;;; Required by gnome-online-accounts as webkitgtk propagates libsoup 3, which
|
||||
;;; causes the build to fail. Also required by e.g. emacs-next-pgtk,
|
||||
;;; emacs-xwidgets, and some other GNOME packages for webkit2gtk-4.0. See
|
||||
;;; also the upstream tracker for libsoup 3:
|
||||
;;; https://gitlab.gnome.org/GNOME/libsoup/-/issues/218
|
||||
(define-public webkitgtk-with-libsoup2
|
||||
(package/inherit webkitgtk
|
||||
(name "webkitgtk-with-libsoup2")
|
||||
(arguments (substitute-keyword-arguments (package-arguments webkitgtk)
|
||||
((#:configure-flags flags)
|
||||
`(cons "-DUSE_SOUP2=ON" ,flags))))
|
||||
#~(cons "-DUSE_SOUP2=ON" #$flags))))
|
||||
(propagated-inputs
|
||||
(alist-replace "libsoup" (list libsoup-minimal-2)
|
||||
(package-propagated-inputs webkitgtk)))))
|
||||
(modify-inputs (package-propagated-inputs webkitgtk)
|
||||
(replace "libsoup" libsoup-minimal-2)))))
|
||||
|
|
Loading…
Reference in a new issue