webkit-gtk-2.26.0.ebuild (8739B)
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? ( sys-apps/bubblewrap )
100 "
101
102 # paxctl needed for bug #407085
103 # Need real bison, not yacc
104 DEPEND="${RDEPEND}
105 ${PYTHON_DEPS}
106 ${RUBY_DEPS}
107 dev-util/glib-utils
108 >=dev-util/gtk-doc-am-1.10
109 >=dev-util/gperf-3.0.1
110 >=sys-devel/bison-2.4.3
111 || ( >=sys-devel/gcc-6.0 >=sys-devel/clang-3.3 )
112 sys-devel/gettext
113 virtual/pkgconfig
114
115 >=dev-lang/perl-5.10
116 virtual/perl-Data-Dumper
117 virtual/perl-Carp
118 virtual/perl-JSON-PP
119
120 doc? ( >=dev-util/gtk-doc-1.10 )
121 geolocation? ( dev-util/gdbus-codegen )
122 sys-apps/paxctl
123 "
124 # test? (
125 # dev-python/pygobject:3[python_targets_python2_7]
126 # x11-themes/hicolor-icon-theme )
127
128 S="${WORKDIR}/${MY_P}"
129
130 CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
131
132 pkg_pretend() {
133 if [[ ${MERGE_TYPE} != "binary" ]] ; then
134 if is-flagq "-g*" && ! is-flagq "-g*0" ; then
135 einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
136 check-reqs_pkg_pretend
137 fi
138
139 if ! test-flag-CXX -std=c++11 ; then
140 die "You need at least GCC 4.9.x or Clang >= 3.3 for C++11-specific compiler flags"
141 fi
142
143 if tc-is-gcc && [[ $(gcc-version) < 4.9 ]] ; then
144 die 'The active compiler needs to be gcc 4.9 (or newer)'
145 fi
146 fi
147
148 if ! use opengl && ! use gles2; then
149 ewarn
150 ewarn "You are disabling OpenGL usage (USE=opengl or USE=gles) completely."
151 ewarn "This is an unsupported configuration meant for very specific embedded"
152 ewarn "use cases, where there truly is no GL possible (and even that use case"
153 ewarn "is very unlikely to come by). If you have GL (even software-only), you"
154 ewarn "really really should be enabling OpenGL!"
155 ewarn
156 fi
157 }
158
159 pkg_setup() {
160 if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
161 check-reqs_pkg_setup
162 fi
163
164 python-any-r1_pkg_setup
165 }
166
167 src_prepare() {
168 cmake-utils_src_prepare
169 gnome2_src_prepare
170 }
171
172 src_configure() {
173 # Respect CC, otherwise fails on prefix #395875
174 tc-export CC
175
176 # It does not compile on alpha without this in LDFLAGS
177 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
178 use alpha && append-ldflags "-Wl,--no-relax"
179
180 # ld segfaults on ia64 with LDFLAGS --as-needed, bug #555504
181 use ia64 && append-ldflags "-Wl,--no-as-needed"
182
183 # Sigbuses on SPARC with mcpu and co., bug #???
184 use sparc && filter-flags "-mvis"
185
186 # https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
187 use ppc64 && append-flags "-mminimal-toc"
188
189 # Try to use less memory, bug #469942 (see Fedora .spec for reference)
190 # --no-keep-memory doesn't work on ia64, bug #502492
191 if ! use ia64; then
192 append-ldflags "-Wl,--no-keep-memory"
193 fi
194
195 # We try to use gold when possible for this package
196 # if ! tc-ld-is-gold ; then
197 # append-ldflags "-Wl,--reduce-memory-overheads"
198 # fi
199
200 # Multiple rendering bugs on youtube, github, etc without this, bug #547224
201 append-flags $(test-flags -fno-strict-aliasing)
202
203 # Ruby situation is a bit complicated. See bug 513888
204 local rubyimpl
205 local ruby_interpreter=""
206 for rubyimpl in ${USE_RUBY}; do
207 if has_version "virtual/rubygems[ruby_targets_${rubyimpl}]"; then
208 ruby_interpreter="-DRUBY_EXECUTABLE=$(type -P ${rubyimpl})"
209 fi
210 done
211 # This will rarely occur. Only a couple of corner cases could lead us to
212 # that failure. See bug 513888
213 [[ -z $ruby_interpreter ]] && die "No suitable ruby interpreter found"
214
215 # TODO: Check Web Audio support
216 # should somehow let user select between them?
217 #
218 # FTL_JIT requires llvm
219 #
220 # opengl needs to be explicetly handled, bug #576634
221
222 local opengl_enabled
223 if use opengl || use gles2; then
224 opengl_enabled=ON
225 else
226 opengl_enabled=OFF
227 fi
228
229 local mycmakeargs=(
230 #-DENABLE_UNIFIED_BUILDS=$(usex jumbo-build) # broken in 2.24.1
231 -DUSE_SYSTEM_MALLOC=ON
232 -DENABLE_WEBDRIVER=OFF
233 -DENABLE_WEB_CRYPTO=OFF
234 -DENABLE_TOUCH_EVENTS=OFF
235 -DENABLE_DRAG_SUPPORT=OFF
236 -DSHOULD_INSTALL_JS_SHELL=ON
237 -DENABLE_EXPERIMENTAL_FEATURES=$(usex experimental)
238 -DENABLE_MINIBROWSER=$(usex examples)
239 -DENABLE_QUARTZ_TARGET=$(usex aqua)
240 -DENABLE_API_TESTS=$(usex test)
241 -DENABLE_GTKDOC=$(usex doc)
242 -DENABLE_GEOLOCATION=$(usex geolocation)
243 $(cmake-utils_use_find_package gles2 OpenGLES2)
244 -DENABLE_GLES2=$(usex gles2)
245 -DENABLE_VIDEO=$(usex gstreamer)
246 -DENABLE_WEB_AUDIO=$(usex gstreamer)
247 -DENABLE_INTROSPECTION=$(usex introspection)
248 -DUSE_LIBNOTIFY=$(usex libnotify)
249 -DUSE_LIBSECRET=$(usex gnome-keyring)
250 -DUSE_OPENJPEG=$(usex jpeg2k)
251 -DUSE_WOFF2=ON
252 -DENABLE_SPELLCHECK=$(usex spell)
253 -DENABLE_WAYLAND_TARGET=$(usex wayland)
254 -DENABLE_WEBGL=$(usex webgl)
255 $(cmake-utils_use_find_package egl EGL)
256 $(cmake-utils_use_find_package opengl OpenGL)
257 -DENABLE_X11_TARGET=$(usex X)
258 -DENABLE_OPENGL=${opengl_enabled}
259 -DUSE_WPE_RENDERER=$(usex wpe)
260 -DENABLE_BUBBLEWRAP_SANDBOX=$(usex sandbox)
261 -DENABLE_MEDIA_SOURCE=$(usex media-source)
262 -DCMAKE_BUILD_TYPE=Release
263 -DPORT=GTK
264 ${ruby_interpreter}
265 )
266
267 # Allow it to use GOLD when possible as it has all the magic to
268 # detect when to use it and using gold for this concrete package has
269 # multiple advantages and is also the upstream default, bug #585788
270 # if tc-ld-is-gold ; then
271 # mycmakeargs+=( -DUSE_LD_GOLD=ON )
272 # else
273 # mycmakeargs+=( -DUSE_LD_GOLD=OFF )
274 # fi
275
276 cmake-utils_src_configure
277 }
278
279 src_compile() {
280 cmake-utils_src_compile
281 }
282
283 src_test() {
284 # Prevents test failures on PaX systems
285 pax-mark m $(list-paxables Programs/*[Tt]ests/*) # Programs/unittests/.libs/test*
286
287 cmake-utils_src_test
288 }
289
290 src_install() {
291 cmake-utils_src_install
292
293 # Prevents crashes on PaX systems, bug #522808
294 pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/jsc" "${ED}usr/libexec/webkit2gtk-4.0/WebKitWebProcess"
295 pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/WebKitPluginProcess"
296 }