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 }