logo

overlay

My (experimental) gentoo overlay

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 }