logo

overlay

My (experimental) gentoo overlay

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 }