commit: 5df9f766204246b0ff96862bd9629d565d3ec0bc Author: Gilles Dartiguelongue <eva <AT> gentoo <DOT> org> AuthorDate: Thu Jun 7 22:13:23 2018 +0000 Commit: Gilles Dartiguelongue <eva <AT> gentoo <DOT> org> CommitDate: Thu Jun 7 22:20:57 2018 +0000 URL: https://gitweb.gentoo.org/proj/gnome.git/commit/?id=5df9f766
media-video/totem: 3.24.0 → 3.26.0 Switch to meson build system. Remove unused totem-audio-preview. Package-Manager: Portage-2.3.40, Repoman-2.3.9 Manifest-Sign-Key: 0x5A56C8CD0C13248A media-video/totem/files/3.26-control-plugins.patch | 207 +++++++++++++++++++++ .../totem/files/3.26-gst-inspect-sandbox.patch | 42 +++++ media-video/totem/files/3.26-meson-fixes.patch | 40 ++++ .../totem/files/3.26-skip-pylint-check.patch | 37 ++++ media-video/totem/totem-3.26.0.ebuild | 139 ++++++++++++++ 5 files changed, 465 insertions(+) diff --git a/media-video/totem/files/3.26-control-plugins.patch b/media-video/totem/files/3.26-control-plugins.patch new file mode 100644 index 00000000..1a467603 --- /dev/null +++ b/media-video/totem/files/3.26-control-plugins.patch @@ -0,0 +1,207 @@ +From e2dd2508e0b356159e00ba90afdfef0b6b623b27 Mon Sep 17 00:00:00 2001 +From: Gilles Dartiguelongue <[email protected]> +Date: Thu, 7 Jun 2018 22:52:21 +0200 +Subject: [PATCH 2/5] Allow full control over which plugins are built + +--- + meson.build | 2 +- + meson_options.txt | 28 +++++++++++++++++- + src/plugins/meson.build | 65 ++++++++++++++++++++++++++++++----------- + 3 files changed, 76 insertions(+), 19 deletions(-) + +diff --git a/meson.build b/meson.build +index 9c4797dd..aa91ae10 100644 +--- a/meson.build ++++ b/meson.build +@@ -7,7 +7,7 @@ project( + 'c_std=gnu99', + 'warning_level=1' + ], +- meson_version: '>= 0.41.0' ++ meson_version: '>= 0.44.0' + ) + + totem_version = meson.project_version() +diff --git a/meson_options.txt b/meson_options.txt +index 3b6ff67b..6e056952 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,7 +1,33 @@ + option('enable-easy-codec-installation', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto', description: 'Whether to enable easy codec installation support for GStreamer') + option('enable-python', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto', description: 'Enable python support') + option('enable-vala', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto', description: 'whether Vala plugin support is requested') +-option('with-plugins', type: 'combo', choices: ['all', 'none', 'auto'], value: 'auto', description: 'Which Totem plugins to compile (default: auto; "all", "none" and "auto" are valid)') ++option('with-plugins', type: 'array', choices: [ ++ 'all', ++ 'auto', ++ 'apple-trailers', ++ 'autoload-subtitles', ++ 'brasero-disc-recorder', ++ 'dbusservice', ++ 'gromit', ++ 'im-status', ++ 'lirc', ++ 'media-player-keys', ++ 'ontop', ++ 'opensubtitles', ++ 'properties', ++ 'pythonconsole', ++ 'recent', ++ 'rotation', ++ 'sample-vala', ++ 'samplepython', ++ 'save-file', ++ 'screensaver', ++ 'screenshot', ++ 'skipto', ++ 'variable-rate', ++ 'vimeo', ++ 'zeitgeist-dp' ++], value: ['auto'], description: 'Which Totem plugins to compile (default: auto; "all", "none" and "auto" are valid)') + option('enable-nautilus', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto', description: 'compile the nautilus plugin') + option('with-nautilusdir', type: 'string', value: '', description: 'Installation path for Nautilus extension') + option('enable-gtk-doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation') +diff --git a/src/plugins/meson.build b/src/plugins/meson.build +index 95af6485..20134952 100644 +--- a/src/plugins/meson.build ++++ b/src/plugins/meson.build +@@ -41,8 +41,8 @@ allowed_plugins = [ + plugins = [] + + plugins_option = get_option('with-plugins') +-if plugins_option != 'none' +- plugins += [ ++if plugins_option.length() > 0 ++ foreach plugin: [ + 'apple-trailers', + 'autoload-subtitles', + 'im-status', +@@ -56,61 +56,83 @@ if plugins_option != 'none' + 'variable-rate', + 'vimeo' + ] ++ if plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains(plugin) ++ plugins += plugin ++ endif ++ endforeach + +- plugin_error = (plugins_option == 'all') ++ if plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains('gromit') ++ gdk_targets = gtk_dep.get_pkgconfig_variable('targets') ++ else ++ gdk_targets = [] ++ endif + +- gdk_targets = gtk_dep.get_pkgconfig_variable('targets') + if gdk_targets.contains('x11') + plugins += 'gromit' + else + str = 'the gromit plugin is not supported on non-X11 targets' +- if plugin_error ++ if plugins_option.contains('all') or plugins_option.contains('gromit') + error(str) + endif + message(str) + endif + +- lirc_dep = dependency('lirc', required: false) ++ if plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains('lirc') ++ lirc_dep = dependency('lirc', required: false) ++ else ++ lirc_dep = disabler() ++ endif ++ + if lirc_dep.found() and cc.has_function('lirc_init', dependencies: lirc_dep) and cc.has_header('lirc/lirc_client.h') + plugins += 'lirc' + else + str = 'you need lirc_client installed for the lirc plugin' +- if plugin_error ++ if plugins_option.contains('all') or plugins_option.contains('lirc') + error(str) + endif + message(str) + endif + +- libxml_req_version = '>= 2.6.0' +- libxml_dep = dependency('libxml-2.0', version: libxml_req_version, required: false) +- gtk_x11_dep = dependency('gtk+-x11-3.0', version: gtk_req_version, required: false) ++ if plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains('brasero-disc-recorder') ++ libxml_req_version = '>= 2.6.0' ++ libxml_dep = dependency('libxml-2.0', version: libxml_req_version, required: false) ++ gtk_x11_dep = dependency('gtk+-x11-3.0', version: gtk_req_version, required: false) ++ else ++ libxml_dep = disabler() ++ gtk_x11_dep = disabler() ++ endif ++ + if libxml_dep.found() and gtk_x11_dep.found() + plugins += 'brasero-disc-recorder' + else + str = 'you need libxml-2.0 ' + libxml_req_version + ' and gtk+-x11-3.0 to use the brasero-disc-recorder plugin' +- if plugin_error ++ if plugins_option.contains('all') or plugins_option.contains('brasero-disc-recorder') + error(str) + endif + message(str) + endif + +- if have_nautilus ++ if have_nautilus and (plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains('save-file')) + plugins += 'save-file' + else + str = 'you need libnautilus-extension to use the save-file plugin' +- if plugin_error ++ if plugins_option.contains('all') or plugins_option.contains('save-file') + error(str) + endif + message(str) + endif + + if have_python +- plugins += [ ++ foreach plugin: [ + 'dbusservice', + 'opensubtitles', + 'pythonconsole', + 'samplepython' + ] ++ if plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains(plugin) ++ plugins += plugin ++ endif ++ endforeach + endif + + if have_vala +@@ -129,17 +151,26 @@ if plugins_option != 'none' + '--pkg=@0@-@1@'.format(totem_gir_ns, totem_api_version) + ] + +- plugins += [ ++ foreach plugin: [ + 'rotation', + 'sample-vala' + ] ++ if plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains(plugin) ++ plugins += plugin ++ endif ++ endforeach ++ ++ if plugins_option.contains('all') or plugins_option.contains('auto') or plugins_option.contains('zeitgeist-dp') ++ zeitgeist_dep = dependency('zeitgeist-2.0', version: '>= 0.9.12', required: false) ++ else ++ zeitgeist_dep = disabler() ++ endif + +- zeitgeist_dep = dependency('zeitgeist-2.0', version: '>= 0.9.12', required: false) + if zeitgeist_dep.found() + plugins += 'zeitgeist-dp' + else + str = 'you need zeitgeist-2.0 >= 0.9.12 to use the zeitgeist-dp plugin' +- if plugin_error ++ if plugins_option.contains('all') or plugins_option.contains('zeitgeist-dp') + error(str) + endif + message(str) +-- +2.17.0 + diff --git a/media-video/totem/files/3.26-gst-inspect-sandbox.patch b/media-video/totem/files/3.26-gst-inspect-sandbox.patch new file mode 100644 index 00000000..016368a6 --- /dev/null +++ b/media-video/totem/files/3.26-gst-inspect-sandbox.patch @@ -0,0 +1,42 @@ +From 742b64b7a74eabd67344ef1cc260427dc402588f Mon Sep 17 00:00:00 2001 +From: Gilles Dartiguelongue <[email protected]> +Date: Thu, 7 Jun 2018 23:47:48 +0200 +Subject: [PATCH 5/5] Make gst-inspect calls optional at build-time + +Crashes on Gentoo due to plugins trying to access dri nodes which are sandboxed +--- + meson_options.txt | 1 + + src/backend/meson.build | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/meson_options.txt b/meson_options.txt +index 6e056952..631b8cca 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -32,3 +32,4 @@ option('enable-nautilus', type: 'combo', choices: ['yes', 'no', 'auto'], value: + option('with-nautilusdir', type: 'string', value: '', description: 'Installation path for Nautilus extension') + option('enable-gtk-doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation') + option('enable-introspection', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto', description: 'Enable GObject Introspection (depends on GObject)') ++option('gst-inspect', type: 'boolean', value: true, description: 'build-time test of available gstreamer plugins') +diff --git a/src/backend/meson.build b/src/backend/meson.build +index 28c8e123..55037a6a 100644 +--- a/src/backend/meson.build ++++ b/src/backend/meson.build +@@ -1,5 +1,6 @@ + backend_inc = include_directories('.') + ++if get_option('gst-inspect') + gst_inspect = find_program( + 'gst-inspect-1.0', + join_paths(gst_dep.get_pkgconfig_variable('toolsdir'), 'gst-inspect-1.0'), +@@ -31,6 +32,7 @@ foreach plugin: gst_good_plugins + assert(r.returncode() == 0, + 'Cannot find required GStreamer-1.0 plugin "' + plugin + '". It should be part of gst-plugins-good. Please install it.') + endforeach ++endif + + sources = files( + 'bacon-time-label.c', +-- +2.17.0 + diff --git a/media-video/totem/files/3.26-meson-fixes.patch b/media-video/totem/files/3.26-meson-fixes.patch new file mode 100644 index 00000000..924d91c5 --- /dev/null +++ b/media-video/totem/files/3.26-meson-fixes.patch @@ -0,0 +1,40 @@ +From b66ceb0e2fe72591132576a6ca3469eff905cd8d Mon Sep 17 00:00:00 2001 +From: Gilles Dartiguelongue <[email protected]> +Date: Thu, 7 Jun 2018 22:52:04 +0200 +Subject: [PATCH 1/4] meson.build: Fix typos in vala handling + +--- + meson.build | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index 8a87b8b9..9c4797dd 100644 +--- a/meson.build ++++ b/meson.build +@@ -238,13 +238,13 @@ if python_option != 'no' + endif + + # vala support ++vala_req_version = '>= 0.14.1' + have_vala = false + + vala_option = get_option('enable-vala') + if vala_option != 'no' + if have_gir + if add_languages('vala', required: false) +- vala_req_version = '>= 0.14.1' + if meson.get_compiler('vala').version().version_compare(vala_req_version) + have_vala = true + endif +@@ -258,7 +258,7 @@ if vala_option != 'no' + endif + + if not have_vala +- if vala_options == 'yes' or introspection_option == 'yes' ++ if vala_option == 'yes' or introspection_option == 'yes' + error(str) + endif + message(str) +-- +2.17.0 + diff --git a/media-video/totem/files/3.26-skip-pylint-check.patch b/media-video/totem/files/3.26-skip-pylint-check.patch new file mode 100644 index 00000000..326cffbc --- /dev/null +++ b/media-video/totem/files/3.26-skip-pylint-check.patch @@ -0,0 +1,37 @@ +From 008df868818b821cdbed8d124d1a86f0747ad3fc Mon Sep 17 00:00:00 2001 +From: Gilles Dartiguelongue <[email protected]> +Date: Thu, 7 Jun 2018 22:55:56 +0200 +Subject: [PATCH 3/4] Drop requirement for pylint at build-time + +This is a development QA tool anyway. +--- + meson.build | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index aa91ae10..f8f306e4 100644 +--- a/meson.build ++++ b/meson.build +@@ -219,9 +219,8 @@ if python_option != 'no' + python_version = r.stdout().split(' ')[1] + + pygobject_dep = dependency('pygobject-3.0', version: '>= 2.90.3', required: false) +- pylint = find_program('pylint-3', 'pylint3', 'pylint', required: false) + +- if python_version.version_compare(python_req_version) and pygobject_dep.found() and pylint.found() ++ if python_version.version_compare(python_req_version) and pygobject_dep.found() + have_python = true + python_deps += pygobject_dep + meson.add_install_script('meson_compile_python.py') +@@ -229,7 +228,7 @@ if python_option != 'no' + endif + + if not have_python +- str = 'python ' + python_req_version + ', pygobject or pylint not found' ++ str = 'python ' + python_req_version + ' or pygobject not found' + if python_option == 'yes' + error(str) + endif +-- +2.17.0 + diff --git a/media-video/totem/totem-3.26.0.ebuild b/media-video/totem/totem-3.26.0.ebuild new file mode 100644 index 00000000..8ab39a4f --- /dev/null +++ b/media-video/totem/totem-3.26.0.ebuild @@ -0,0 +1,139 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +PYTHON_COMPAT=( python{3_4,3_5,3_6} ) +PYTHON_REQ_USE="threads" + +inherit gnome-meson python-single-r1 vala + +DESCRIPTION="Media player for GNOME" +HOMEPAGE="https://wiki.gnome.org/Apps/Videos" + +LICENSE="GPL-2+ LGPL-2+" +SLOT="0" +IUSE="cdr +introspection lirc nautilus +python test vala" +# see bug #359379 +REQUIRED_USE=" + python? ( introspection ${PYTHON_REQUIRED_USE} ) +" + +KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86 ~x86-fbsd" + +# FIXME: +# Runtime dependency on gnome-session-2.91 +COMMON_DEPEND=" + >=dev-libs/glib-2.43.4:2[dbus] + >=dev-libs/libpeas-1.1[gtk] + >=dev-libs/totem-pl-parser-3.10.1:0=[introspection?] + >=media-libs/clutter-1.17.3:1.0[gtk] + >=media-libs/clutter-gst-2.99.2:3.0 + >=media-libs/clutter-gtk-1.8.1:1.0 + >=x11-libs/cairo-1.14 + >=x11-libs/gdk-pixbuf-2.23.0:2 + >=x11-libs/gtk+-3.19.4:3[introspection?] + + >=media-libs/grilo-0.3.0:0.3[playlist] + >=media-libs/gstreamer-1.6.0:1.0 + >=media-libs/gst-plugins-base-1.6.0:1.0[X,introspection?,pango] + media-libs/gst-plugins-good:1.0 + + x11-libs/libX11 + + gnome-base/gnome-desktop:3= + gnome-base/gsettings-desktop-schemas + + cdr? ( + >=dev-libs/libxml2-2.6:2 + >=x11-libs/gtk+-3.19.4:3[X] + ) + introspection? ( >=dev-libs/gobject-introspection-0.6.7:= ) + lirc? ( app-misc/lirc ) + nautilus? ( >=gnome-base/nautilus-2.91.3 ) + python? ( + ${PYTHON_DEPS} + >=dev-python/pygobject-2.90.3:3[${PYTHON_USEDEP}] ) +" +RDEPEND="${COMMON_DEPEND} + media-plugins/grilo-plugins:0.3 + media-plugins/gst-plugins-meta:1.0 + media-plugins/gst-plugins-taglib:1.0 + x11-themes/adwaita-icon-theme + python? ( + >=dev-libs/libpeas-1.1.0[python,${PYTHON_USEDEP}] + dev-python/pyxdg[${PYTHON_USEDEP}] + dev-python/dbus-python[${PYTHON_USEDEP}] + >=x11-libs/gtk+-3.5.2:3[introspection] ) +" +# libxml2+gdk-pixbuf required for glib-compile-resources +DEPEND="${COMMON_DEPEND} + app-text/docbook-xml-dtd:4.5 + app-text/yelp-tools + >=dev-libs/libxml2-2.6:2 + >=dev-util/meson-0.44 + >=sys-devel/gettext-0.19.8 + virtual/pkgconfig + x11-base/xorg-proto + vala? ( $(vala_depend) ) +" +# docbook-xml-dtd is needed for user doc +# Prevent dev-python/pylint dep, bug #482538 + +PATCHES=( + # Fix some typos in meson.build files + "${FILESDIR}"/3.26-meson-fixes.patch + # Do not force all plugins + "${FILESDIR}"/3.26-control-plugins.patch + # Do not force pylint with USE=python + "${FILESDIR}"/3.26-skip-pylint-check.patch + # Allow disabling calls to gst-inspect (sandbox issue) + "${FILESDIR}"/3.26-gst-inspect-sandbox.patch +) + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + vala_src_prepare + gnome-meson_src_prepare +} + +src_configure() { + # Disabled: sample-python, sample-vala, zeitgeist-dp + # brasero-disc-recorder and gromit depend on GTK+ X11 backend and could be made optional + # if totem itself didn't depend on it + local plugins="apple-trailers,autoload-subtitles" + plugins+=",im-status,media-player-keys,ontop" + plugins+=",properties,recent,screensaver,screenshot" + plugins+=",skipto,variable-rate,vimeo" + use cdr && plugins+=",brasero-disc-recorder" + use lirc && plugins+=",lirc" + use nautilus && plugins+=",save-file" + use python && plugins+=",dbusservice,pythonconsole,opensubtitles" + use vala && plugins+=",rotation" + plugins+=",gromit" + + # pylint is checked unconditionally, but is only used for make check + # appstream-util overriding necessary until upstream fixes their macro + # to respect configure switch + gnome-meson_src_configure \ + -Denable-easy-codec-installation=yes \ + -Denable-gtk-doc=false \ + -Denable-introspection=$(usex introspection yes no) \ + -Denable-nautilus=$(usex nautilus yes no) \ + -Denable-python=$(usex python yes no) \ + -Denable-vala=$(usex vala yes no) \ + -Dgst-inspect=false \ + -Dwith-plugins=${plugins} +} + +src_install() { + gnome-meson_src_install + if use python ; then + local plugin + for plugin in dbusservice pythonconsole opensubtitles ; do + python_optimize "${ED}"usr/$(get_libdir)/totem/plugins/${plugin} + done + fi +}
