net-libs/webkit-gtk: security cleanup

Bug: https://bugs.gentoo.org/930116
Signed-off-by: Mart Raudsepp <leio@gentoo.org>
This commit is contained in:
Mart Raudsepp
2024-04-20 14:38:27 +03:00
parent 6d9fc4c6af
commit fceeef1e0b
7 changed files with 0 additions and 924 deletions

View File

@@ -1,2 +1 @@
DIST webkitgtk-2.42.5.tar.xz 34651836 BLAKE2B 4b772d91d3e2c3fc3a48455f43016d2cc1699b18fcc78253d1527eecabbfc1f47cd3bf3c512508fd683d29de68f980511d2057e4c65979bab38083a2da5cb516 SHA512 9b992b1156a87b503deec4640ee9383227c7341910f1b33b7cba03d32194b36aa61de6ae3e8a58c23adcab74e71b78d1c8d4124f32bffc4dd58d93931fb94ef0
DIST webkitgtk-2.44.1.tar.xz 36280696 BLAKE2B a5fff4c4fe90bcd0ea098930e51a36ea60152da47fd06e78abbc10f146437838aa19fed15cf58732b538046e1f42d8461cd5c0e0859096506932c9fae150cc16 SHA512 b1752303f9ee38ef98c1e5c0cad001d389eaedbbf07d13fed8699104e6e311cb47a9bed7089868cb92c53d2777aaff441147353da13123d5c8eee4adf8709169

View File

@@ -1,38 +0,0 @@
From c5e664167ec74b24a9082506fe17dee1ea194185 Mon Sep 17 00:00:00 2001
From: Mart Raudsepp <leio@gentoo.org>
Date: Wed, 18 Oct 2023 13:08:30 +0300
Subject: [PATCH] [JSC] Fix Air OptimizePairedLoadStore missing header includes
Reviewed by NOBODY (OOPS!).
Fixes compile errors with non-unified build by adding missing include files for
single unit compilation.
Fixed compilation errors:
error: incomplete type 'JSC::CCallHelpers' named in nested name specifier
error: function 'JSC::B3::Air::Inst::forEachDefWithExtraClobberedRegs<JSC::B3::Air::Tmp, (lambda at ...)>' is used but not defined in this translation unit, and cannot be defined in any other translation unit because its type does not have linkage
* Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp
---
Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp | 2 ++
1 file changed, 2 insertions(+)
https://github.com/WebKit/WebKit/pull/19242
diff --git a/Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp b/Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp
index e6fc4d116d00..8321ba03822a 100644
--- a/Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp
+++ b/Source/JavaScriptCore/b3/air/AirOptimizePairedLoadStore.cpp
@@ -32,7 +32,9 @@
#include "AirArgInlines.h"
#include "AirCode.h"
#include "AirInst.h"
+#include "AirInstInlines.h"
#include "AirPhaseScope.h"
+#include "CCallHelpers.h"
#include <wtf/Range.h>
namespace JSC { namespace B3 { namespace Air {
--
2.42.0

View File

@@ -1,53 +0,0 @@
From 509b303bf5650710bee5e151decc1a723a54657f Mon Sep 17 00:00:00 2001
From: Conrad Kostecki <conikost@gentoo.org>
Date: Tue, 2 Jan 2024 12:25:20 -0800
Subject: [PATCH] Source/JavaScriptCore/wasm/generateWasm.py: return value in
int for memorybits
https://bugs.webkit.org/show_bug.cgi?id=266942
Reviewed by Justin Michaud.
The assert function currently checks, if power number raised to the
number fits memorybits. This seems not always work on every system,
as it happens, that the float numbers are not correctly rounded.
This patch adds an int, so its being rounded to a full number and works
on my system, where otherwise the rounding would fail. The return method
also returns the result as an int.
Example:
import math
2 ** 3
= 8
2.0 ** 3.0
= 7.999999999999999
int(2.0) ** int(3.0)
= 8
2 ** int(3.0)
= 8
Signed-off-by: Conrad Kostecki <conikost@gentoo.org>
Canonical link: https://commits.webkit.org/272577@main
---
Source/JavaScriptCore/wasm/generateWasm.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Source/JavaScriptCore/wasm/generateWasm.py b/Source/JavaScriptCore/wasm/generateWasm.py
index 434223d346a0..7a99210b60a2 100755
--- a/Source/JavaScriptCore/wasm/generateWasm.py
+++ b/Source/JavaScriptCore/wasm/generateWasm.py
@@ -136,5 +136,5 @@ def memoryLog2Alignment(op):
if not match:
print(op["name"])
memoryBits = int(match.group(2) if match.group(2) else match.group(1))
- assert 2 ** math.log(memoryBits, 2) == memoryBits
+ assert 2 ** int(math.log(memoryBits, 2)) == memoryBits
return str(int(math.log(memoryBits / 8, 2)))
--
2.43.0

View File

@@ -1,33 +0,0 @@
From 3d5373575695b293b8559155431d0079a6153aff Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Mon, 5 Feb 2024 11:00:49 -0600
Subject: [PATCH] =?UTF-8?q?[GTK]=20[2.42.5]=20LowLevelInterpreter.cpp:339:?=
=?UTF-8?q?21:=20error:=20=E2=80=98t6=E2=80=99=20was=20not=20declared=20in?=
=?UTF-8?q?=20this=20scope=20https://bugs.webkit.org/show=5Fbug.cgi=3Fid?=
=?UTF-8?q?=3D268739?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Unreviewed build fix. Seems a backport went badly, and we didn't notice
because the code is architecture-specific.
* Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:
(JSC::CLoop::execute):
---
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
index 5064ead6cd2e..9a2e2653b121 100644
--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
+++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
@@ -336,8 +336,6 @@ JSValue CLoop::execute(OpcodeID entryOpcodeID, void* executableAddress, VM* vm,
UNUSED_VARIABLE(t2);
UNUSED_VARIABLE(t3);
UNUSED_VARIABLE(t5);
- UNUSED_VARIABLE(t6);
- UNUSED_VARIABLE(t7);
struct StackPointerScope {
StackPointerScope(CLoopStack& stack)

View File

@@ -1,272 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_REQ_USE="xml(+)"
PYTHON_COMPAT=( python3_{10..12} )
USE_RUBY="ruby30 ruby31 ruby32 ruby33"
inherit check-reqs flag-o-matic gnome2 optfeature python-any-r1 ruby-single toolchain-funcs cmake
MY_P="webkitgtk-${PV}"
DESCRIPTION="Open source web browser engine"
HOMEPAGE="https://www.webkitgtk.org"
SRC_URI="https://www.webkitgtk.org/releases/${MY_P}.tar.xz"
LICENSE="LGPL-2+ BSD"
SLOT="4.1/0" # soname version of libwebkit2gtk-4.1
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="aqua avif examples gamepad keyring +gstreamer +introspection pdf +jpeg2k jpegxl +jumbo-build lcms seccomp spell systemd wayland X"
REQUIRED_USE="|| ( aqua wayland X )"
# Tests do not run when built from tarballs
# https://bugs.webkit.org/show_bug.cgi?id=215986
RESTRICT="test"
# Dependencies found at Source/cmake/OptionsGTK.cmake
# Missing WebRTC support, but ENABLE_MEDIA_STREAM/ENABLE_WEB_RTC is
# experimental upstream (PRIVATE OFF) and shouldn't be used yet in 2.30
# >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
# TODO: gst-plugins-base[X] is only needed when build configuration ends up
# with GLX set, but that's a bit automagic too to fix
# Softblocking webkit-gtk-2.38:4 as we going to use webkit-2.38:4.1's WebKitDriver binary
RDEPEND="
>=x11-libs/cairo-1.16.0[X?]
>=media-libs/fontconfig-2.13.0:1.0
>=media-libs/freetype-2.9.0:2
>=dev-libs/libgcrypt-1.7.0:0=
>=x11-libs/gtk+-3.22.0:3[aqua?,introspection?,wayland?,X?]
>=media-libs/harfbuzz-1.4.2:=[icu(+)]
>=dev-libs/icu-61.2:=
media-libs/libjpeg-turbo:0=
>=media-libs/libepoxy-1.4.0
>=net-libs/libsoup-3.0.8:3.0[introspection?]
>=dev-libs/libxml2-2.8.0:2
>=media-libs/libpng-1.4:0=
dev-db/sqlite:3
sys-libs/zlib:0
>=app-accessibility/at-spi2-core-2.46.0:2
media-libs/libwebp:=
>=dev-libs/glib-2.70.0:2
>=dev-libs/libxslt-1.1.7
media-libs/woff2
keyring? ( app-crypt/libsecret )
introspection? ( >=dev-libs/gobject-introspection-1.59.1:= )
dev-libs/libtasn1:=
spell? ( >=app-text/enchant-0.22:2 )
gstreamer? (
>=media-libs/gstreamer-1.20:1.0
>=media-libs/gst-plugins-base-1.20:1.0[egl,X?]
media-libs/gst-plugins-base:1.0[opengl]
>=media-plugins/gst-plugins-opus-1.20:1.0
>=media-libs/gst-plugins-bad-1.20:1.0
)
X? (
x11-libs/libX11
x11-libs/libXcomposite
x11-libs/libXdamage
x11-libs/libXrender
x11-libs/libXt
)
dev-libs/hyphen
jpeg2k? ( >=media-libs/openjpeg-2.2.0:2= )
jpegxl? ( >=media-libs/libjxl-0.7.0:= )
avif? ( >=media-libs/libavif-0.9.0:= )
lcms? ( media-libs/lcms:2 )
media-libs/mesa
media-libs/libglvnd
wayland? (
>=dev-libs/wayland-1.15
>=dev-libs/wayland-protocols-1.15
>=gui-libs/libwpe-1.5.0:1.0
>=gui-libs/wpebackend-fdo-1.7.0:1.0
)
seccomp? (
>=sys-apps/bubblewrap-0.3.1
sys-libs/libseccomp
sys-apps/xdg-dbus-proxy
)
systemd? ( sys-apps/systemd:= )
gamepad? ( >=dev-libs/libmanette-0.2.4 )
!<net-libs/webkit-gtk-2.38:4
"
DEPEND="${RDEPEND}"
# Need real bison, not yacc
BDEPEND="
${PYTHON_DEPS}
${RUBY_DEPS}
>=app-accessibility/at-spi2-core-2.5.3
dev-util/gdbus-codegen
dev-util/glib-utils
>=dev-util/gperf-3.0.1
dev-util/unifdef
>=sys-devel/bison-2.4.3
|| ( >=sys-devel/gcc-7.3 >=sys-devel/clang-5 )
sys-devel/gettext
virtual/pkgconfig
>=dev-lang/perl-5.10
virtual/perl-Data-Dumper
virtual/perl-Carp
virtual/perl-JSON-PP
wayland? ( dev-util/wayland-scanner )
"
S="${WORKDIR}/${MY_P}"
CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
# We cannot use PATCHES because src_prepare() calls cmake_src_prepare and
# gnome2_src_prepare, and both apply ${PATCHES[@]}
PATCHES=()
pkg_pretend() {
if [[ ${MERGE_TYPE} != "binary" ]] ; then
if is-flagq "-g*" && ! is-flagq "-g*0" ; then
einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
check-reqs_pkg_pretend
fi
if ! test-flag-CXX -std=c++17 ; then
die "You need at least GCC 7.3.x or Clang >= 5 for C++17-specific compiler flags"
fi
fi
}
pkg_setup() {
if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
check-reqs_pkg_setup
fi
python-any-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
gnome2_src_prepare
# Fix USE=-jumbo-build compilation on arm64
eapply "${FILESDIR}"/2.42.1-arm64-non-jumbo-fix.patch
eapply "${FILESDIR}"/2.42.3-arm64-non-jumbo-fix-925621.patch
# Fix assert failure on some machines, bug #920704
eapply "${FILESDIR}"/2.42.4-wasm-assert-fix.patch
# Fix compilation on x86, bug #924873
eapply "${FILESDIR}"/2.42.5-x86-build-fix.patch
}
src_configure() {
# Respect CC, otherwise fails on prefix #395875
tc-export CC
# ODR violations (bug #915230, https://bugs.webkit.org/show_bug.cgi?id=233007)
filter-lto
# It does not compile on alpha without this in LDFLAGS
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
use alpha && append-ldflags "-Wl,--no-relax"
# ld segfaults on ia64 with LDFLAGS --as-needed, bug #555504
use ia64 && append-ldflags "-Wl,--no-as-needed"
# Sigbuses on SPARC with mcpu and co., bug #???
use sparc && filter-flags "-mvis"
# https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
use ppc64 && append-flags "-mminimal-toc"
# Try to use less memory, bug #469942 (see Fedora .spec for reference)
# --no-keep-memory doesn't work on ia64, bug #502492
if ! use ia64; then
append-ldflags $(test-flags-CCLD "-Wl,--no-keep-memory")
fi
# Ruby situation is a bit complicated. See bug 513888
local rubyimpl
local ruby_interpreter=""
local RUBY
for rubyimpl in ${USE_RUBY}; do
if has_version -b "virtual/rubygems[ruby_targets_${rubyimpl}(-)]"; then
RUBY="$(type -P ${rubyimpl})"
ruby_interpreter="-DRUBY_EXECUTABLE=${RUBY}"
fi
done
# This will rarely occur. Only a couple of corner cases could lead us to
# that failure. See bug 513888
[[ -z ${ruby_interpreter} ]] && die "No suitable ruby interpreter found"
# JavaScriptCore/Scripts/postprocess-asm invokes another Ruby script directly
# so it doesn't respect RUBY_EXECUTABLE, bug #771744.
sed -i -e "s:#!/usr/bin/env ruby:#!${RUBY}:" $(grep -rl "/usr/bin/env ruby" Source/JavaScriptCore || die) || die
# TODO: Check Web Audio support
# should somehow let user select between them?
local mycmakeargs=(
-DPython_EXECUTABLE="${PYTHON}"
${ruby_interpreter}
# If bubblewrap[suid] then portage makes it go-r and cmake find_program fails with that
-DBWRAP_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/bwrap
-DDBUS_PROXY_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/xdg-dbus-proxy
-DPORT=GTK
# Source/cmake/WebKitFeatures.cmake
-DENABLE_API_TESTS=OFF
-DENABLE_BUBBLEWRAP_SANDBOX=$(usex seccomp)
-DENABLE_GAMEPAD=$(usex gamepad)
-DENABLE_MINIBROWSER=$(usex examples)
-DENABLE_PDFJS=$(usex pdf)
-DENABLE_GEOLOCATION=ON # Runtime optional (talks over dbus service)
-DENABLE_SPELLCHECK=$(usex spell)
-DENABLE_UNIFIED_BUILDS=$(usex jumbo-build)
-DENABLE_VIDEO=$(usex gstreamer)
-DUSE_GSTREAMER_WEBRTC=$(usex gstreamer)
-DUSE_GSTREAMER_TRANSCODER=$(usex gstreamer)
-DENABLE_WEBDRIVER=ON
-DENABLE_WEBGL=ON
-DENABLE_WEB_AUDIO=$(usex gstreamer)
-DUSE_AVIF=$(usex avif)
# Source/cmake/OptionsGTK.cmake
-DENABLE_DOCUMENTATION=OFF
-DENABLE_INTROSPECTION=$(usex introspection)
-DENABLE_JOURNALD_LOG=$(usex systemd)
-DENABLE_QUARTZ_TARGET=$(usex aqua)
-DENABLE_WAYLAND_TARGET=$(usex wayland)
-DENABLE_X11_TARGET=$(usex X)
-DUSE_GBM=ON
-DUSE_GTK4=OFF
-DUSE_JPEGXL=$(usex jpegxl)
-DUSE_LCMS=$(usex lcms)
-DUSE_LIBHYPHEN=ON
-DUSE_LIBSECRET=$(usex keyring)
-DUSE_OPENGL_OR_ES=ON
-DUSE_OPENJPEG=$(usex jpeg2k)
-DUSE_SOUP2=OFF
-DUSE_WOFF2=ON
)
# https://bugs.gentoo.org/761238
append-cppflags -DNDEBUG
WK_USE_CCACHE=NO cmake_src_configure
}
src_install() {
cmake_src_install
insinto /usr/share/gtk-doc/html
# This will install API docs specific to webkit2gtk-4.1
doins -r "${S}"/Documentation/{jsc-glib,webkit2gtk,webkit2gtk-web-extension}-${SLOT%/*}
}
pkg_postinst() {
optfeature "geolocation service (used at runtime if available)" "app-misc/geoclue"
optfeature "Common Multimedia codecs" "media-plugins/gst-plugins-meta"
optfeature "(MPEG-)DASH support" "media-plugins/gst-plugins-dash"
optfeature "HTTP-Live-Streaming support" "media-plugins/gst-plugins-hls"
}

View File

@@ -1,265 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_REQ_USE="xml(+)"
PYTHON_COMPAT=( python3_{10..12} )
USE_RUBY="ruby30 ruby31 ruby32 ruby33"
inherit check-reqs flag-o-matic gnome2 optfeature python-any-r1 ruby-single toolchain-funcs cmake
MY_P="webkitgtk-${PV}"
DESCRIPTION="Open source web browser engine"
HOMEPAGE="https://www.webkitgtk.org"
SRC_URI="https://www.webkitgtk.org/releases/${MY_P}.tar.xz"
LICENSE="LGPL-2+ BSD"
SLOT="6/0" # soname version of libwebkit2gtk-6.0
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="aqua avif examples gamepad keyring +gstreamer +introspection pdf +jpeg2k jpegxl +jumbo-build lcms seccomp spell systemd wayland X"
REQUIRED_USE="|| ( aqua wayland X )"
# Tests do not run when built from tarballs
# https://bugs.webkit.org/show_bug.cgi?id=215986
RESTRICT="test"
# Dependencies found at Source/cmake/OptionsGTK.cmake
# Missing WebRTC support, but ENABLE_MEDIA_STREAM/ENABLE_WEB_RTC is
# experimental upstream (PRIVATE OFF) and shouldn't be used yet in 2.30
# >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
# TODO: gst-plugins-base[X] is only needed when build configuration ends up
# with GLX set, but that's a bit automagic too to fix
# Softblocking webkit-gtk-2.38:4 as we going to use webkit-2.38:4.1's WebKitDriver binary
RDEPEND="
>=x11-libs/cairo-1.16.0[X?]
>=media-libs/fontconfig-2.13.0:1.0
>=media-libs/freetype-2.9.0:2
>=dev-libs/libgcrypt-1.7.0:0=
>=x11-libs/gtk+-3.22.0:3[aqua?,introspection?,wayland?,X?]
>=gui-libs/gtk-4.4.0:4[introspection?]
>=media-libs/harfbuzz-1.4.2:=[icu(+)]
>=dev-libs/icu-61.2:=
media-libs/libjpeg-turbo:0=
>=media-libs/libepoxy-1.4.0
>=net-libs/libsoup-3.0.8:3.0[introspection?]
>=dev-libs/libxml2-2.8.0:2
>=media-libs/libpng-1.4:0=
dev-db/sqlite:3
sys-libs/zlib:0
>=app-accessibility/at-spi2-core-2.46.0:2
media-libs/libwebp:=
>=dev-libs/glib-2.70.0:2
>=dev-libs/libxslt-1.1.7
media-libs/woff2
keyring? ( app-crypt/libsecret )
introspection? ( >=dev-libs/gobject-introspection-1.59.1:= )
dev-libs/libtasn1:=
spell? ( >=app-text/enchant-0.22:2 )
gstreamer? (
>=media-libs/gstreamer-1.20:1.0
>=media-libs/gst-plugins-base-1.20:1.0[egl,X?]
media-libs/gst-plugins-base:1.0[opengl]
>=media-plugins/gst-plugins-opus-1.20:1.0
>=media-libs/gst-plugins-bad-1.20:1.0
)
X? (
x11-libs/libX11
x11-libs/libXcomposite
x11-libs/libXdamage
x11-libs/libXrender
x11-libs/libXt
)
dev-libs/hyphen
jpeg2k? ( >=media-libs/openjpeg-2.2.0:2= )
jpegxl? ( >=media-libs/libjxl-0.7.0:= )
avif? ( >=media-libs/libavif-0.9.0:= )
lcms? ( media-libs/lcms:2 )
media-libs/mesa
media-libs/libglvnd
wayland? (
>=dev-libs/wayland-1.15
>=dev-libs/wayland-protocols-1.15
>=gui-libs/libwpe-1.5.0:1.0
>=gui-libs/wpebackend-fdo-1.7.0:1.0
)
seccomp? (
>=sys-apps/bubblewrap-0.3.1
sys-libs/libseccomp
sys-apps/xdg-dbus-proxy
)
systemd? ( sys-apps/systemd:= )
gamepad? ( >=dev-libs/libmanette-0.2.4 )
!<net-libs/webkit-gtk-2.38:4
"
DEPEND="${RDEPEND}"
# Need real bison, not yacc
BDEPEND="
${PYTHON_DEPS}
${RUBY_DEPS}
>=app-accessibility/at-spi2-core-2.5.3
dev-util/gdbus-codegen
dev-util/glib-utils
>=dev-util/gperf-3.0.1
dev-util/unifdef
>=sys-devel/bison-2.4.3
|| ( >=sys-devel/gcc-7.3 >=sys-devel/clang-5 )
sys-devel/gettext
virtual/pkgconfig
>=dev-lang/perl-5.10
virtual/perl-Data-Dumper
virtual/perl-Carp
virtual/perl-JSON-PP
wayland? ( dev-util/wayland-scanner )
"
S="${WORKDIR}/${MY_P}"
CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
# We cannot use PATCHES because src_prepare() calls cmake_src_prepare and
# gnome2_src_prepare, and both apply ${PATCHES[@]}
PATCHES=()
pkg_pretend() {
if [[ ${MERGE_TYPE} != "binary" ]] ; then
if is-flagq "-g*" && ! is-flagq "-g*0" ; then
einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
check-reqs_pkg_pretend
fi
if ! test-flag-CXX -std=c++17 ; then
die "You need at least GCC 7.3.x or Clang >= 5 for C++17-specific compiler flags"
fi
fi
}
pkg_setup() {
if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
check-reqs_pkg_setup
fi
python-any-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
gnome2_src_prepare
# Fix USE=-jumbo-build compilation on arm64
eapply "${FILESDIR}"/2.42.1-arm64-non-jumbo-fix.patch
eapply "${FILESDIR}"/2.42.3-arm64-non-jumbo-fix-925621.patch
# Fix assert failure on some machines, bug #920704
eapply "${FILESDIR}"/2.42.4-wasm-assert-fix.patch
# Fix compilation on x86, bug #924873
eapply "${FILESDIR}"/2.42.5-x86-build-fix.patch
}
src_configure() {
# Respect CC, otherwise fails on prefix #395875
tc-export CC
# ODR violations (bug #915230, https://bugs.webkit.org/show_bug.cgi?id=233007)
filter-lto
# It does not compile on alpha without this in LDFLAGS
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
use alpha && append-ldflags "-Wl,--no-relax"
# ld segfaults on ia64 with LDFLAGS --as-needed, bug #555504
use ia64 && append-ldflags "-Wl,--no-as-needed"
# Sigbuses on SPARC with mcpu and co., bug #???
use sparc && filter-flags "-mvis"
# https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
use ppc64 && append-flags "-mminimal-toc"
# Try to use less memory, bug #469942 (see Fedora .spec for reference)
# --no-keep-memory doesn't work on ia64, bug #502492
if ! use ia64; then
append-ldflags $(test-flags-CCLD "-Wl,--no-keep-memory")
fi
# Ruby situation is a bit complicated. See bug 513888
local rubyimpl
local ruby_interpreter=""
local RUBY
for rubyimpl in ${USE_RUBY}; do
if has_version -b "virtual/rubygems[ruby_targets_${rubyimpl}(-)]"; then
RUBY="$(type -P ${rubyimpl})"
ruby_interpreter="-DRUBY_EXECUTABLE=${RUBY}"
fi
done
# This will rarely occur. Only a couple of corner cases could lead us to
# that failure. See bug 513888
[[ -z ${ruby_interpreter} ]] && die "No suitable ruby interpreter found"
# JavaScriptCore/Scripts/postprocess-asm invokes another Ruby script directly
# so it doesn't respect RUBY_EXECUTABLE, bug #771744.
sed -i -e "s:#!/usr/bin/env ruby:#!${RUBY}:" $(grep -rl "/usr/bin/env ruby" Source/JavaScriptCore || die) || die
# TODO: Check Web Audio support
# should somehow let user select between them?
local mycmakeargs=(
-DPython_EXECUTABLE="${PYTHON}"
${ruby_interpreter}
# If bubblewrap[suid] then portage makes it go-r and cmake find_program fails with that
-DBWRAP_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/bwrap
-DDBUS_PROXY_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/xdg-dbus-proxy
-DPORT=GTK
# Source/cmake/WebKitFeatures.cmake
-DENABLE_API_TESTS=OFF
-DENABLE_BUBBLEWRAP_SANDBOX=$(usex seccomp)
-DENABLE_GAMEPAD=$(usex gamepad)
-DENABLE_MINIBROWSER=$(usex examples)
-DENABLE_PDFJS=$(usex pdf)
-DENABLE_GEOLOCATION=ON # Runtime optional (talks over dbus service)
-DENABLE_SPELLCHECK=$(usex spell)
-DENABLE_UNIFIED_BUILDS=$(usex jumbo-build)
-DENABLE_VIDEO=$(usex gstreamer)
-DUSE_GSTREAMER_WEBRTC=$(usex gstreamer)
-DUSE_GSTREAMER_TRANSCODER=$(usex gstreamer)
-DENABLE_WEBDRIVER=OFF # Disable WebDriver for webkit2gtk-5.0 and use the webkit2gtk-4.1
-DENABLE_WEBGL=ON
-DENABLE_WEB_AUDIO=$(usex gstreamer)
-DUSE_AVIF=$(usex avif)
# Source/cmake/OptionsGTK.cmake
-DENABLE_DOCUMENTATION=OFF
-DENABLE_INTROSPECTION=$(usex introspection)
-DENABLE_JOURNALD_LOG=$(usex systemd)
-DENABLE_QUARTZ_TARGET=$(usex aqua)
-DENABLE_WAYLAND_TARGET=$(usex wayland)
-DENABLE_X11_TARGET=$(usex X)
-DUSE_GBM=ON
-DUSE_GTK4=ON # webkit2gtk-6.0
-DUSE_JPEGXL=$(usex jpegxl)
-DUSE_LCMS=$(usex lcms)
-DUSE_LIBHYPHEN=ON
-DUSE_LIBSECRET=$(usex keyring)
-DUSE_OPENGL_OR_ES=ON
-DUSE_OPENJPEG=$(usex jpeg2k)
-DUSE_SOUP2=OFF
-DUSE_WOFF2=ON
)
# https://bugs.gentoo.org/761238
append-cppflags -DNDEBUG
WK_USE_CCACHE=NO cmake_src_configure
}
pkg_postinst() {
optfeature "geolocation service (used at runtime if available)" "app-misc/geoclue"
optfeature "Common Multimedia codecs" "media-plugins/gst-plugins-meta"
optfeature "(MPEG-)DASH support" "media-plugins/gst-plugins-dash"
optfeature "HTTP-Live-Streaming support" "media-plugins/gst-plugins-hls"
}

View File

@@ -1,262 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_REQ_USE="xml(+)"
PYTHON_COMPAT=( python3_{10..12} )
USE_RUBY="ruby30 ruby31 ruby32 ruby33"
inherit check-reqs flag-o-matic gnome2 optfeature python-any-r1 ruby-single toolchain-funcs cmake
MY_P="webkitgtk-${PV}"
DESCRIPTION="Open source web browser engine"
HOMEPAGE="https://www.webkitgtk.org"
SRC_URI="https://www.webkitgtk.org/releases/${MY_P}.tar.xz"
LICENSE="LGPL-2+ BSD"
SLOT="4/37" # soname version of libwebkit2gtk-4.0
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86"
IUSE="aqua avif examples gamepad keyring +gstreamer +introspection pdf +jpeg2k jpegxl +jumbo-build lcms seccomp spell systemd wayland X"
REQUIRED_USE="|| ( aqua wayland X )"
# Tests do not run when built from tarballs
# https://bugs.webkit.org/show_bug.cgi?id=215986
RESTRICT="test"
# Dependencies found at Source/cmake/OptionsGTK.cmake
# Missing WebRTC support, but ENABLE_MEDIA_STREAM/ENABLE_WEB_RTC is
# experimental upstream (PRIVATE OFF) and shouldn't be used yet in 2.30
# >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
# TODO: gst-plugins-base[X] is only needed when build configuration ends up
# with GLX set, but that's a bit automagic too to fix
RDEPEND="
>=x11-libs/cairo-1.16.0[X?]
>=media-libs/fontconfig-2.13.0:1.0
>=media-libs/freetype-2.9.0:2
>=dev-libs/libgcrypt-1.7.0:0=
>=x11-libs/gtk+-3.22.0:3[aqua?,introspection?,wayland?,X?]
>=media-libs/harfbuzz-1.4.2:=[icu(+)]
>=dev-libs/icu-61.2:=
media-libs/libjpeg-turbo:0=
>=media-libs/libepoxy-1.4.0
>=net-libs/libsoup-2.54:2.4[introspection?]
>=dev-libs/libxml2-2.8.0:2
>=media-libs/libpng-1.4:0=
dev-db/sqlite:3
sys-libs/zlib:0
>=app-accessibility/at-spi2-core-2.46.0:2
media-libs/libwebp:=
>=dev-libs/glib-2.70.0:2
>=dev-libs/libxslt-1.1.7
media-libs/woff2
keyring? ( app-crypt/libsecret )
introspection? ( >=dev-libs/gobject-introspection-1.59.1:= )
dev-libs/libtasn1:=
spell? ( >=app-text/enchant-0.22:2 )
gstreamer? (
>=media-libs/gstreamer-1.20:1.0
>=media-libs/gst-plugins-base-1.20:1.0[egl,X?]
media-libs/gst-plugins-base:1.0[opengl]
>=media-plugins/gst-plugins-opus-1.20:1.0
>=media-libs/gst-plugins-bad-1.20:1.0
)
X? (
x11-libs/libX11
x11-libs/libXcomposite
x11-libs/libXdamage
x11-libs/libXrender
x11-libs/libXt
)
dev-libs/hyphen
jpeg2k? ( >=media-libs/openjpeg-2.2.0:2= )
jpegxl? ( >=media-libs/libjxl-0.7.0:= )
avif? ( >=media-libs/libavif-0.9.0:= )
lcms? ( media-libs/lcms:2 )
media-libs/mesa
media-libs/libglvnd
wayland? (
>=dev-libs/wayland-1.15
>=dev-libs/wayland-protocols-1.15
>=gui-libs/libwpe-1.5.0:1.0
>=gui-libs/wpebackend-fdo-1.7.0:1.0
)
seccomp? (
>=sys-apps/bubblewrap-0.3.1
sys-libs/libseccomp
sys-apps/xdg-dbus-proxy
)
systemd? ( sys-apps/systemd:= )
gamepad? ( >=dev-libs/libmanette-0.2.4 )
"
DEPEND="${RDEPEND}"
# Need real bison, not yacc
BDEPEND="
${PYTHON_DEPS}
${RUBY_DEPS}
>=app-accessibility/at-spi2-core-2.5.3
dev-util/gdbus-codegen
dev-util/glib-utils
>=dev-util/gperf-3.0.1
dev-util/unifdef
>=sys-devel/bison-2.4.3
|| ( >=sys-devel/gcc-7.3 >=sys-devel/clang-5 )
sys-devel/gettext
virtual/pkgconfig
>=dev-lang/perl-5.10
virtual/perl-Data-Dumper
virtual/perl-Carp
virtual/perl-JSON-PP
wayland? ( dev-util/wayland-scanner )
"
S="${WORKDIR}/${MY_P}"
CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
# We cannot use PATCHES because src_prepare() calls cmake_src_prepare and
# gnome2_src_prepare, and both apply ${PATCHES[@]}
PATCHES=()
pkg_pretend() {
if [[ ${MERGE_TYPE} != "binary" ]] ; then
if is-flagq "-g*" && ! is-flagq "-g*0" ; then
einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
check-reqs_pkg_pretend
fi
if ! test-flag-CXX -std=c++17 ; then
die "You need at least GCC 7.3.x or Clang >= 5 for C++17-specific compiler flags"
fi
fi
}
pkg_setup() {
if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
check-reqs_pkg_setup
fi
python-any-r1_pkg_setup
}
src_prepare() {
cmake_src_prepare
gnome2_src_prepare
# Fix USE=-jumbo-build compilation on arm64
eapply "${FILESDIR}"/2.42.1-arm64-non-jumbo-fix.patch
eapply "${FILESDIR}"/2.42.3-arm64-non-jumbo-fix-925621.patch
# Fix assert failure on some machines, bug #920704
eapply "${FILESDIR}"/2.42.4-wasm-assert-fix.patch
# Fix compilation on x86, bug #924873
eapply "${FILESDIR}"/2.42.5-x86-build-fix.patch
}
src_configure() {
# Respect CC, otherwise fails on prefix #395875
tc-export CC
# ODR violations (bug #915230, https://bugs.webkit.org/show_bug.cgi?id=233007)
filter-lto
# It does not compile on alpha without this in LDFLAGS
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
use alpha && append-ldflags "-Wl,--no-relax"
# ld segfaults on ia64 with LDFLAGS --as-needed, bug #555504
use ia64 && append-ldflags "-Wl,--no-as-needed"
# Sigbuses on SPARC with mcpu and co., bug #???
use sparc && filter-flags "-mvis"
# https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
use ppc64 && append-flags "-mminimal-toc"
# Try to use less memory, bug #469942 (see Fedora .spec for reference)
# --no-keep-memory doesn't work on ia64, bug #502492
if ! use ia64; then
append-ldflags $(test-flags-CCLD "-Wl,--no-keep-memory")
fi
# Ruby situation is a bit complicated. See bug 513888
local rubyimpl
local ruby_interpreter=""
local RUBY
for rubyimpl in ${USE_RUBY}; do
if has_version -b "virtual/rubygems[ruby_targets_${rubyimpl}(-)]"; then
RUBY="$(type -P ${rubyimpl})"
ruby_interpreter="-DRUBY_EXECUTABLE=${RUBY}"
fi
done
# This will rarely occur. Only a couple of corner cases could lead us to
# that failure. See bug 513888
[[ -z ${ruby_interpreter} ]] && die "No suitable ruby interpreter found"
# JavaScriptCore/Scripts/postprocess-asm invokes another Ruby script directly
# so it doesn't respect RUBY_EXECUTABLE, bug #771744.
sed -i -e "s:#!/usr/bin/env ruby:#!${RUBY}:" $(grep -rl "/usr/bin/env ruby" Source/JavaScriptCore || die) || die
# TODO: Check Web Audio support
# should somehow let user select between them?
local mycmakeargs=(
-DPython_EXECUTABLE="${PYTHON}"
${ruby_interpreter}
# If bubblewrap[suid] then portage makes it go-r and cmake find_program fails with that
-DBWRAP_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/bwrap
-DDBUS_PROXY_EXECUTABLE:FILEPATH="${EPREFIX}"/usr/bin/xdg-dbus-proxy
-DPORT=GTK
# Source/cmake/WebKitFeatures.cmake
-DENABLE_API_TESTS=OFF
-DENABLE_BUBBLEWRAP_SANDBOX=$(usex seccomp)
-DENABLE_GAMEPAD=$(usex gamepad)
-DENABLE_MINIBROWSER=$(usex examples)
-DENABLE_PDFJS=$(usex pdf)
-DENABLE_GEOLOCATION=ON # Runtime optional (talks over dbus service)
-DENABLE_SPELLCHECK=$(usex spell)
-DENABLE_UNIFIED_BUILDS=$(usex jumbo-build)
-DENABLE_VIDEO=$(usex gstreamer)
-DUSE_GSTREAMER_WEBRTC=$(usex gstreamer)
-DUSE_GSTREAMER_TRANSCODER=$(usex gstreamer)
-DENABLE_WEBDRIVER=OFF # Disable WebDriver for webkit2gtk-4.0 and use the webkit2gtk-4.1
-DENABLE_WEBGL=ON
-DENABLE_WEB_AUDIO=$(usex gstreamer)
-DUSE_AVIF=$(usex avif)
# Source/cmake/OptionsGTK.cmake
-DENABLE_DOCUMENTATION=OFF
-DENABLE_INTROSPECTION=$(usex introspection)
-DENABLE_JOURNALD_LOG=$(usex systemd)
-DENABLE_QUARTZ_TARGET=$(usex aqua)
-DENABLE_WAYLAND_TARGET=$(usex wayland)
-DENABLE_X11_TARGET=$(usex X)
-DUSE_GBM=ON
-DUSE_GTK4=OFF
-DUSE_JPEGXL=$(usex jpegxl)
-DUSE_LCMS=$(usex lcms)
-DUSE_LIBHYPHEN=ON
-DUSE_LIBSECRET=$(usex keyring)
-DUSE_OPENGL_OR_ES=ON
-DUSE_OPENJPEG=$(usex jpeg2k)
-DUSE_SOUP2=ON
-DUSE_WOFF2=ON
)
# https://bugs.gentoo.org/761238
append-cppflags -DNDEBUG
WK_USE_CCACHE=NO cmake_src_configure
}
pkg_postinst() {
optfeature "geolocation service (used at runtime if available)" "app-misc/geoclue"
optfeature "Common Multimedia codecs" "media-plugins/gst-plugins-meta"
optfeature "(MPEG-)DASH support" "media-plugins/gst-plugins-dash"
optfeature "HTTP-Live-Streaming support" "media-plugins/gst-plugins-hls"
}