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