logo

overlay

My (experimental) gentoo overlay

webkit-gtk-2.26.0.ebuild (8739B)


      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 media-source +opengl sandbox spell wayland +wpe +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 	webgl? ( gstreamer
     29 		|| ( gles2 opengl ) )
     30 	wayland? ( egl )
     31 	wpe? ( opengl wayland )
     32 	media-source? ( gstreamer )
     33 	|| ( aqua wayland X )
     34 "
     35 
     36 # Tests fail to link for inexplicable reasons
     37 # https://bugs.webkit.org/show_bug.cgi?id=148210
     38 RESTRICT="test"
     39 
     40 # Aqua support in gtk3 is untested
     41 # Dependencies found at Source/cmake/OptionsGTK.cmake
     42 # Various compile-time optionals for gtk+-3.22.0 - ensure it
     43 # Missing OpenWebRTC checks and conditionals, but ENABLE_MEDIA_STREAM/ENABLE_WEB_RTC is experimental upstream (PRIVATE OFF)
     44 # >=gst-plugins-opus-1.14.4-r1 for opusparse (required by MSE)
     45 RDEPEND="
     46 	>=x11-libs/cairo-1.16.0:=[X?]
     47 	>=media-libs/fontconfig-2.13.0:1.0
     48 	>=media-libs/freetype-2.9.0:2
     49 	>=dev-libs/libgcrypt-1.7.0:0=
     50 	>=x11-libs/gtk+-3.22:3[aqua?,introspection?,wayland?,X?]
     51 	>=media-libs/harfbuzz-1.4.2:=[icu(+)]
     52 	>=dev-libs/icu-3.8.1-r1:=
     53 	virtual/jpeg:0=
     54 	>=net-libs/libsoup-2.54:2.4[introspection?]
     55 	>=dev-libs/libxml2-2.8.0:2
     56 	>=media-libs/libpng-1.4:0=
     57 	dev-db/sqlite:3=
     58 	sys-libs/zlib:0
     59 	>=dev-libs/atk-2.16.0
     60 	media-libs/libwebp:=
     61 
     62 	>=dev-libs/glib-2.40:2
     63 	>=dev-libs/libxslt-1.1.7
     64 	>=media-libs/woff2-1.0.2
     65 	gnome-keyring? ( app-crypt/libsecret )
     66 	geolocation? ( >=app-misc/geoclue-2.1.5:2.0 )
     67 	introspection? ( >=dev-libs/gobject-introspection-1.32.0:= )
     68 	dev-libs/libtasn1:=
     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 	media-source? ( >=media-libs/gstreamer-1.16:1.0 )
     77 
     78 	X? (
     79 		x11-libs/libX11
     80 		x11-libs/libXcomposite
     81 		x11-libs/libXdamage
     82 		x11-libs/libXrender
     83 		x11-libs/libXt )
     84 
     85 	libnotify? ( x11-libs/libnotify )
     86 	dev-libs/hyphen
     87 	jpeg2k? ( >=media-libs/openjpeg-2.2.0:2= )
     88 
     89 	egl? ( media-libs/mesa[egl] )
     90 	gles2? ( media-libs/mesa[gles2] )
     91 	opengl? ( virtual/opengl )
     92 	webgl? (
     93 		x11-libs/libXcomposite
     94 		x11-libs/libXdamage )
     95 	wpe? (
     96 		>=net-libs/libwpe-1.3.0:=
     97 		>=dev-libs/wpebackend-fdo-1.3.1:=
     98 	)
     99 	sandbox? ( sys-apps/bubblewrap )
    100 "
    101 
    102 # paxctl needed for bug #407085
    103 # Need real bison, not yacc
    104 DEPEND="${RDEPEND}
    105 	${PYTHON_DEPS}
    106 	${RUBY_DEPS}
    107 	dev-util/glib-utils
    108 	>=dev-util/gtk-doc-am-1.10
    109 	>=dev-util/gperf-3.0.1
    110 	>=sys-devel/bison-2.4.3
    111 	|| ( >=sys-devel/gcc-6.0 >=sys-devel/clang-3.3 )
    112 	sys-devel/gettext
    113 	virtual/pkgconfig
    114 
    115 	>=dev-lang/perl-5.10
    116 	virtual/perl-Data-Dumper
    117 	virtual/perl-Carp
    118 	virtual/perl-JSON-PP
    119 
    120 	doc? ( >=dev-util/gtk-doc-1.10 )
    121 	geolocation? ( dev-util/gdbus-codegen )
    122 	sys-apps/paxctl
    123 "
    124 #	test? (
    125 #		dev-python/pygobject:3[python_targets_python2_7]
    126 #		x11-themes/hicolor-icon-theme )
    127 
    128 S="${WORKDIR}/${MY_P}"
    129 
    130 CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
    131 
    132 pkg_pretend() {
    133 	if [[ ${MERGE_TYPE} != "binary" ]] ; then
    134 		if is-flagq "-g*" && ! is-flagq "-g*0" ; then
    135 			einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
    136 			check-reqs_pkg_pretend
    137 		fi
    138 
    139 		if ! test-flag-CXX -std=c++11 ; then
    140 			die "You need at least GCC 4.9.x or Clang >= 3.3 for C++11-specific compiler flags"
    141 		fi
    142 
    143 		if tc-is-gcc && [[ $(gcc-version) < 4.9 ]] ; then
    144 			die 'The active compiler needs to be gcc 4.9 (or newer)'
    145 		fi
    146 	fi
    147 
    148 	if ! use opengl && ! use gles2; then
    149 		ewarn
    150 		ewarn "You are disabling OpenGL usage (USE=opengl or USE=gles) completely."
    151 		ewarn "This is an unsupported configuration meant for very specific embedded"
    152 		ewarn "use cases, where there truly is no GL possible (and even that use case"
    153 		ewarn "is very unlikely to come by). If you have GL (even software-only), you"
    154 		ewarn "really really should be enabling OpenGL!"
    155 		ewarn
    156 	fi
    157 }
    158 
    159 pkg_setup() {
    160 	if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
    161 		check-reqs_pkg_setup
    162 	fi
    163 
    164 	python-any-r1_pkg_setup
    165 }
    166 
    167 src_prepare() {
    168 	cmake-utils_src_prepare
    169 	gnome2_src_prepare
    170 }
    171 
    172 src_configure() {
    173 	# Respect CC, otherwise fails on prefix #395875
    174 	tc-export CC
    175 
    176 	# It does not compile on alpha without this in LDFLAGS
    177 	# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
    178 	use alpha && append-ldflags "-Wl,--no-relax"
    179 
    180 	# ld segfaults on ia64 with LDFLAGS --as-needed, bug #555504
    181 	use ia64 && append-ldflags "-Wl,--no-as-needed"
    182 
    183 	# Sigbuses on SPARC with mcpu and co., bug #???
    184 	use sparc && filter-flags "-mvis"
    185 
    186 	# https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
    187 	use ppc64 && append-flags "-mminimal-toc"
    188 
    189 	# Try to use less memory, bug #469942 (see Fedora .spec for reference)
    190 	# --no-keep-memory doesn't work on ia64, bug #502492
    191 	if ! use ia64; then
    192 		append-ldflags "-Wl,--no-keep-memory"
    193 	fi
    194 
    195 	# We try to use gold when possible for this package
    196 #	if ! tc-ld-is-gold ; then
    197 #		append-ldflags "-Wl,--reduce-memory-overheads"
    198 #	fi
    199 
    200 	# Multiple rendering bugs on youtube, github, etc without this, bug #547224
    201 	append-flags $(test-flags -fno-strict-aliasing)
    202 
    203 	# Ruby situation is a bit complicated. See bug 513888
    204 	local rubyimpl
    205 	local ruby_interpreter=""
    206 	for rubyimpl in ${USE_RUBY}; do
    207 		if has_version "virtual/rubygems[ruby_targets_${rubyimpl}]"; then
    208 			ruby_interpreter="-DRUBY_EXECUTABLE=$(type -P ${rubyimpl})"
    209 		fi
    210 	done
    211 	# This will rarely occur. Only a couple of corner cases could lead us to
    212 	# that failure. See bug 513888
    213 	[[ -z $ruby_interpreter ]] && die "No suitable ruby interpreter found"
    214 
    215 	# TODO: Check Web Audio support
    216 	# should somehow let user select between them?
    217 	#
    218 	# FTL_JIT requires llvm
    219 	#
    220 	# opengl needs to be explicetly handled, bug #576634
    221 
    222 	local opengl_enabled
    223 	if use opengl || use gles2; then
    224 		opengl_enabled=ON
    225 	else
    226 		opengl_enabled=OFF
    227 	fi
    228 
    229 	local mycmakeargs=(
    230 		#-DENABLE_UNIFIED_BUILDS=$(usex jumbo-build) # broken in 2.24.1
    231 		-DUSE_SYSTEM_MALLOC=ON
    232 		-DENABLE_WEBDRIVER=OFF
    233 		-DENABLE_WEB_CRYPTO=OFF
    234 		-DENABLE_TOUCH_EVENTS=OFF
    235 		-DENABLE_DRAG_SUPPORT=OFF
    236 		-DSHOULD_INSTALL_JS_SHELL=ON
    237 		-DENABLE_EXPERIMENTAL_FEATURES=$(usex experimental)
    238 		-DENABLE_MINIBROWSER=$(usex examples)
    239 		-DENABLE_QUARTZ_TARGET=$(usex aqua)
    240 		-DENABLE_API_TESTS=$(usex test)
    241 		-DENABLE_GTKDOC=$(usex doc)
    242 		-DENABLE_GEOLOCATION=$(usex geolocation)
    243 		$(cmake-utils_use_find_package gles2 OpenGLES2)
    244 		-DENABLE_GLES2=$(usex gles2)
    245 		-DENABLE_VIDEO=$(usex gstreamer)
    246 		-DENABLE_WEB_AUDIO=$(usex gstreamer)
    247 		-DENABLE_INTROSPECTION=$(usex introspection)
    248 		-DUSE_LIBNOTIFY=$(usex libnotify)
    249 		-DUSE_LIBSECRET=$(usex gnome-keyring)
    250 		-DUSE_OPENJPEG=$(usex jpeg2k)
    251 		-DUSE_WOFF2=ON
    252 		-DENABLE_SPELLCHECK=$(usex spell)
    253 		-DENABLE_WAYLAND_TARGET=$(usex wayland)
    254 		-DENABLE_WEBGL=$(usex webgl)
    255 		$(cmake-utils_use_find_package egl EGL)
    256 		$(cmake-utils_use_find_package opengl OpenGL)
    257 		-DENABLE_X11_TARGET=$(usex X)
    258 		-DENABLE_OPENGL=${opengl_enabled}
    259 		-DUSE_WPE_RENDERER=$(usex wpe)
    260 		-DENABLE_BUBBLEWRAP_SANDBOX=$(usex sandbox)
    261 		-DENABLE_MEDIA_SOURCE=$(usex media-source)
    262 		-DCMAKE_BUILD_TYPE=Release
    263 		-DPORT=GTK
    264 		${ruby_interpreter}
    265 	)
    266 
    267 	# Allow it to use GOLD when possible as it has all the magic to
    268 	# detect when to use it and using gold for this concrete package has
    269 	# multiple advantages and is also the upstream default, bug #585788
    270 #	if tc-ld-is-gold ; then
    271 #		mycmakeargs+=( -DUSE_LD_GOLD=ON )
    272 #	else
    273 #		mycmakeargs+=( -DUSE_LD_GOLD=OFF )
    274 #	fi
    275 
    276 	cmake-utils_src_configure
    277 }
    278 
    279 src_compile() {
    280 	cmake-utils_src_compile
    281 }
    282 
    283 src_test() {
    284 	# Prevents test failures on PaX systems
    285 	pax-mark m $(list-paxables Programs/*[Tt]ests/*) # Programs/unittests/.libs/test*
    286 
    287 	cmake-utils_src_test
    288 }
    289 
    290 src_install() {
    291 	cmake-utils_src_install
    292 
    293 	# Prevents crashes on PaX systems, bug #522808
    294 	pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/jsc" "${ED}usr/libexec/webkit2gtk-4.0/WebKitWebProcess"
    295 	pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/WebKitPluginProcess"
    296 }