webkit-gtk-2.26.1.ebuild (8826B)
1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5 CMAKE_MAKEFILE_GENERATOR="ninja"
6 PYTHON_COMPAT=( python{2_7,3_5,3_6,3_7} )
7 USE_RUBY="ruby24 ruby25 ruby26"
8
9 inherit check-reqs cmake-utils flag-o-matic gnome2 pax-utils python-any-r1 ruby-single toolchain-funcs virtualx
10
11 MY_P="webkitgtk-${PV}"
12 DESCRIPTION="Open source web browser engine"
13 HOMEPAGE="https://www.webkitgtk.org"
14 SRC_URI="https://www.webkitgtk.org/releases/${MY_P}.tar.xz"
15
16 LICENSE="LGPL-2+ BSD"
17 SLOT="4/37" # soname version of libwebkit2gtk-4.0
18 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~amd64-linux ~x86-linux ~x86-macos"
19
20 IUSE="aqua coverage doc +egl examples experimental +geolocation gles2 gnome-keyring +gstreamer +introspection jpeg2k libnotify media-source +opengl sandbox spell wayland +wpe +webgl +X"
21
22 # webgl needs gstreamer, bug #560612
23 # gstreamer with opengl/gles2 needs egl
24 REQUIRED_USE="
25 geolocation? ( introspection )
26 gles2? ( egl !opengl )
27 gstreamer? ( opengl? ( egl ) )
28 webgl? ( gstreamer
29 || ( gles2 opengl ) )
30 wayland? ( egl )
31 wpe? ( opengl wayland )
32 media-source? ( gstreamer )
33 || ( aqua wayland X )
34 "
35
36 # Tests fail to link for inexplicable reasons
37 # https://bugs.webkit.org/show_bug.cgi?id=148210
38 RESTRICT="test"
39
40 # Aqua support in gtk3 is untested
41 # Dependencies found at Source/cmake/OptionsGTK.cmake
42 # Various compile-time optionals for gtk+-3.22.0 - ensure it
43 # Missing OpenWebRTC checks and conditionals, but ENABLE_MEDIA_STREAM/ENABLE_WEB_RTC is experimental upstream (PRIVATE OFF)
44 # >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
45 RDEPEND="
46 >=x11-libs/cairo-1.16.0:=[X?]
47 >=media-libs/fontconfig-2.13.0:1.0
48 >=media-libs/freetype-2.9.0:2
49 >=dev-libs/libgcrypt-1.7.0:0=
50 >=x11-libs/gtk+-3.22:3[aqua?,introspection?,wayland?,X?]
51 >=media-libs/harfbuzz-1.4.2:=[icu(+)]
52 >=dev-libs/icu-3.8.1-r1:=
53 virtual/jpeg:0=
54 >=net-libs/libsoup-2.54:2.4[introspection?]
55 >=dev-libs/libxml2-2.8.0:2
56 >=media-libs/libpng-1.4:0=
57 dev-db/sqlite:3=
58 sys-libs/zlib:0
59 >=dev-libs/atk-2.16.0
60 media-libs/libwebp:=
61
62 >=dev-libs/glib-2.40:2
63 >=dev-libs/libxslt-1.1.7
64 >=media-libs/woff2-1.0.2
65 gnome-keyring? ( app-crypt/libsecret )
66 geolocation? ( >=app-misc/geoclue-2.1.5:2.0 )
67 introspection? ( >=dev-libs/gobject-introspection-1.32.0:= )
68 dev-libs/libtasn1:=
69 spell? ( >=app-text/enchant-0.22:= )
70 gstreamer? (
71 >=media-libs/gstreamer-1.14:1.0
72 >=media-libs/gst-plugins-base-1.14:1.0[egl?,gles2?,opengl?]
73 >=media-plugins/gst-plugins-opus-1.14.4-r1:1.0
74 >=media-libs/gst-plugins-bad-1.14:1.0
75 )
76 media-source? ( >=media-libs/gstreamer-1.16:1.0 )
77
78 X? (
79 x11-libs/libX11
80 x11-libs/libXcomposite
81 x11-libs/libXdamage
82 x11-libs/libXrender
83 x11-libs/libXt )
84
85 libnotify? ( x11-libs/libnotify )
86 dev-libs/hyphen
87 jpeg2k? ( >=media-libs/openjpeg-2.2.0:2= )
88
89 egl? ( media-libs/mesa[egl] )
90 gles2? ( media-libs/mesa[gles2] )
91 opengl? ( virtual/opengl )
92 webgl? (
93 x11-libs/libXcomposite
94 x11-libs/libXdamage )
95 wpe? (
96 >=net-libs/libwpe-1.3.0:=
97 >=dev-libs/wpebackend-fdo-1.3.1:=
98 )
99 sandbox? (
100 sys-apps/bubblewrap
101 sys-apps/xdg-dbus-proxy
102 )
103 "
104
105 # paxctl needed for bug #407085
106 # Need real bison, not yacc
107 DEPEND="${RDEPEND}
108 ${PYTHON_DEPS}
109 ${RUBY_DEPS}
110 dev-util/glib-utils
111 >=dev-util/gtk-doc-am-1.10
112 >=dev-util/gperf-3.0.1
113 >=sys-devel/bison-2.4.3
114 || ( >=sys-devel/gcc-6.0 >=sys-devel/clang-3.3 )
115 sys-devel/gettext
116 virtual/pkgconfig
117
118 >=dev-lang/perl-5.10
119 virtual/perl-Data-Dumper
120 virtual/perl-Carp
121 virtual/perl-JSON-PP
122
123 doc? ( >=dev-util/gtk-doc-1.10 )
124 geolocation? ( dev-util/gdbus-codegen )
125 sys-apps/paxctl
126 "
127 # test? (
128 # dev-python/pygobject:3[python_targets_python2_7]
129 # x11-themes/hicolor-icon-theme )
130
131 S="${WORKDIR}/${MY_P}"
132
133 CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
134
135 PATCHES=( "${FILESDIR}/${P}-250818_webdriver_off.diff" )
136
137 pkg_pretend() {
138 if [[ ${MERGE_TYPE} != "binary" ]] ; then
139 if is-flagq "-g*" && ! is-flagq "-g*0" ; then
140 einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
141 check-reqs_pkg_pretend
142 fi
143
144 if ! test-flag-CXX -std=c++11 ; then
145 die "You need at least GCC 4.9.x or Clang >= 3.3 for C++11-specific compiler flags"
146 fi
147
148 if tc-is-gcc && [[ $(gcc-version) < 4.9 ]] ; then
149 die 'The active compiler needs to be gcc 4.9 (or newer)'
150 fi
151 fi
152
153 if ! use opengl && ! use gles2; then
154 ewarn
155 ewarn "You are disabling OpenGL usage (USE=opengl or USE=gles) completely."
156 ewarn "This is an unsupported configuration meant for very specific embedded"
157 ewarn "use cases, where there truly is no GL possible (and even that use case"
158 ewarn "is very unlikely to come by). If you have GL (even software-only), you"
159 ewarn "really really should be enabling OpenGL!"
160 ewarn
161 fi
162 }
163
164 pkg_setup() {
165 if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
166 check-reqs_pkg_setup
167 fi
168
169 python-any-r1_pkg_setup
170 }
171
172 src_prepare() {
173 cmake-utils_src_prepare
174 gnome2_src_prepare
175 }
176
177 src_configure() {
178 # Respect CC, otherwise fails on prefix #395875
179 tc-export CC
180
181 # It does not compile on alpha without this in LDFLAGS
182 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
183 use alpha && append-ldflags "-Wl,--no-relax"
184
185 # ld segfaults on ia64 with LDFLAGS --as-needed, bug #555504
186 use ia64 && append-ldflags "-Wl,--no-as-needed"
187
188 # Sigbuses on SPARC with mcpu and co., bug #???
189 use sparc && filter-flags "-mvis"
190
191 # https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
192 use ppc64 && append-flags "-mminimal-toc"
193
194 # Try to use less memory, bug #469942 (see Fedora .spec for reference)
195 # --no-keep-memory doesn't work on ia64, bug #502492
196 if ! use ia64; then
197 append-ldflags "-Wl,--no-keep-memory"
198 fi
199
200 # We try to use gold when possible for this package
201 # if ! tc-ld-is-gold ; then
202 # append-ldflags "-Wl,--reduce-memory-overheads"
203 # fi
204
205 # Multiple rendering bugs on youtube, github, etc without this, bug #547224
206 append-flags $(test-flags -fno-strict-aliasing)
207
208 # Ruby situation is a bit complicated. See bug 513888
209 local rubyimpl
210 local ruby_interpreter=""
211 for rubyimpl in ${USE_RUBY}; do
212 if has_version "virtual/rubygems[ruby_targets_${rubyimpl}]"; then
213 ruby_interpreter="-DRUBY_EXECUTABLE=$(type -P ${rubyimpl})"
214 fi
215 done
216 # This will rarely occur. Only a couple of corner cases could lead us to
217 # that failure. See bug 513888
218 [[ -z $ruby_interpreter ]] && die "No suitable ruby interpreter found"
219
220 # TODO: Check Web Audio support
221 # should somehow let user select between them?
222 #
223 # FTL_JIT requires llvm
224 #
225 # opengl needs to be explicetly handled, bug #576634
226
227 local opengl_enabled
228 if use opengl || use gles2; then
229 opengl_enabled=ON
230 else
231 opengl_enabled=OFF
232 fi
233
234 local mycmakeargs=(
235 #-DENABLE_UNIFIED_BUILDS=$(usex jumbo-build) # broken in 2.24.1
236 -DUSE_SYSTEM_MALLOC=ON
237 -DENABLE_WEBDRIVER=OFF
238 -DENABLE_WEB_CRYPTO=OFF
239 -DENABLE_TOUCH_EVENTS=OFF
240 -DENABLE_DRAG_SUPPORT=OFF
241 -DSHOULD_INSTALL_JS_SHELL=ON
242 -DENABLE_EXPERIMENTAL_FEATURES=$(usex experimental)
243 -DENABLE_MINIBROWSER=$(usex examples)
244 -DENABLE_QUARTZ_TARGET=$(usex aqua)
245 -DENABLE_API_TESTS=$(usex test)
246 -DENABLE_GTKDOC=$(usex doc)
247 -DENABLE_GEOLOCATION=$(usex geolocation)
248 $(cmake-utils_use_find_package gles2 OpenGLES2)
249 -DENABLE_GLES2=$(usex gles2)
250 -DENABLE_VIDEO=$(usex gstreamer)
251 -DENABLE_WEB_AUDIO=$(usex gstreamer)
252 -DENABLE_INTROSPECTION=$(usex introspection)
253 -DUSE_LIBNOTIFY=$(usex libnotify)
254 -DUSE_LIBSECRET=$(usex gnome-keyring)
255 -DUSE_OPENJPEG=$(usex jpeg2k)
256 -DUSE_WOFF2=ON
257 -DENABLE_SPELLCHECK=$(usex spell)
258 -DENABLE_WAYLAND_TARGET=$(usex wayland)
259 -DENABLE_WEBGL=$(usex webgl)
260 $(cmake-utils_use_find_package egl EGL)
261 $(cmake-utils_use_find_package opengl OpenGL)
262 -DENABLE_X11_TARGET=$(usex X)
263 -DENABLE_OPENGL=${opengl_enabled}
264 -DUSE_WPE_RENDERER=$(usex wpe)
265 -DENABLE_BUBBLEWRAP_SANDBOX=$(usex sandbox)
266 -DENABLE_MEDIA_SOURCE=$(usex media-source)
267 -DCMAKE_BUILD_TYPE=Release
268 -DPORT=GTK
269 ${ruby_interpreter}
270 )
271
272 # Allow it to use GOLD when possible as it has all the magic to
273 # detect when to use it and using gold for this concrete package has
274 # multiple advantages and is also the upstream default, bug #585788
275 # if tc-ld-is-gold ; then
276 # mycmakeargs+=( -DUSE_LD_GOLD=ON )
277 # else
278 # mycmakeargs+=( -DUSE_LD_GOLD=OFF )
279 # fi
280
281 cmake-utils_src_configure
282 }
283
284 src_compile() {
285 cmake-utils_src_compile
286 }
287
288 src_test() {
289 # Prevents test failures on PaX systems
290 pax-mark m $(list-paxables Programs/*[Tt]ests/*) # Programs/unittests/.libs/test*
291
292 cmake-utils_src_test
293 }
294
295 src_install() {
296 cmake-utils_src_install
297
298 # Prevents crashes on PaX systems, bug #522808
299 pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/jsc" "${ED}usr/libexec/webkit2gtk-4.0/WebKitWebProcess"
300 pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/WebKitPluginProcess"
301 }