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