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 }