From cb222dd95881897798eb4d0e9f6de1b8625dddb2 Mon Sep 17 00:00:00 2001 From: Mart Raudsepp Date: Mon, 26 Nov 2018 01:13:44 +0200 Subject: media-plugins/gst-plugins-libav: add ffmpeg-4 compatibility patches, other tweaks * Pull a selective patchset from git master, that brings in ffmpeg-4 compatibility and some bug fixes; patchset tarball README has further details. * Add a debian-inspired patch to tell gstreamer registry that the libav plugin supported features may change, when the system ffmpeg library files change. This should hopefully ensure that gstreamer sees new codecs immediately after system-ffmpeg is recompiled to add them. Compared to Debian, we conditionalize it based on USE=libav, so it's only actually done if system-ffmpeg is used, as for us it's a choice, not always system-ffmpeg; this is achieved via #ifndef, thus no conditional patching. * Make bundled ffmpeg builds verbose for better build.log * Try harder to honor user choices for bundled ffmpeg builds with USE=libav by always disabling debug and passing CFLAGS as optflags; courtesy of Arfrever Frehtes Taifersar Arahesis Closes: https://bugs.gentoo.org/654628 Signed-off-by: Mart Raudsepp Package-Manager: Portage-2.3.52, Repoman-2.3.11 --- media-plugins/gst-plugins-libav/Manifest | 2 + .../files/external-ffmpeg4-dep.patch | 20 ++++ .../gst-plugins-libav-1.14.4.4.1_p20181115.ebuild | 102 +++++++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 media-plugins/gst-plugins-libav/files/external-ffmpeg4-dep.patch create mode 100644 media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1_p20181115.ebuild (limited to 'media-plugins') diff --git a/media-plugins/gst-plugins-libav/Manifest b/media-plugins/gst-plugins-libav/Manifest index 5582f7fc472b..cfb181650221 100644 --- a/media-plugins/gst-plugins-libav/Manifest +++ b/media-plugins/gst-plugins-libav/Manifest @@ -1,4 +1,6 @@ DIST ffmpeg-3.4.5.tar.bz2 10183082 BLAKE2B f72157baefcd6a0ca8f389309bbe947ad21996e0f2eb3c46c6bfc90f1ebbb14bfd007d001e46ea51efef5db5f9fcee24b1a90b6862136aeebecdc95bb61b23a5 SHA512 e12707d47404a9ce02790b77d2852fc1a1573c8108e980c7355fa48ba891d1649464d4fe4d08394ecd6d871f651ac4388486b7654cb54a7aaeedaf05c55513ec +DIST ffmpeg-4.1.tar.bz2 10687291 BLAKE2B 07293af1b13c6c6cad72e368207db21bdbc4b991931166c24ff40b00c3b3c8e1242be1876af8e3f154cc840fcd90d87b762fe77faccf06936dd096478d5d074b SHA512 ccf6d07268dc47e08ca619eb182a003face2a8ee73ec1a28157330dd7de1df88939def1fc1c7e6b6ac7b59752cdad84657d589b2fafb73e14e5ef03fb6e33417 DIST gst-libav-1.14.1.tar.xz 9031916 BLAKE2B 4f8426fd0c91ca9dd99d4d3820cee852610e957b4836b248f285a0d89b202af907f5f5f0ddb0cf2562eca6fb032a45ebe7fe3e6cbe5198f6d6852297cfd08091 SHA512 368d794d88b20fc879178c1984186a9dda7f8717e2e6bc17bd2dcd67be6d9dd55220da617f9872c40a63f5c9b3d11713ff96c8dbb0e4ffffb196f9464aae43d2 DIST gst-libav-1.14.2.tar.xz 9036096 BLAKE2B 68000c35a1c582c93ad1113941ce17e1c4212e79a5eae627a1c41fb22a9d8fe2d5bb5165abb3ee81e36938b8c0485e2b7ac5f4a4d59199e28cbe0b35d3d85ef3 SHA512 ce8e7eba57b14d522b90c94f933987659b7d6e58e66513b4b3f41a70354a3d0065bb6d077285ed56074aaddff65c3d1f1fa7fb17fb2f75e94fbe814dffa790de +DIST gst-libav-1.14.4-ffmpeg4-patchset.tar.xz 49428 BLAKE2B 74c3e0b25643bcfdf01d1d16514401fef4bb988ba3d1f306b647ba0cd6e89f0205cc33e6d144889d6b2f7fab9e4fae946e03821a85009fa95c68f3cedf25068a SHA512 1347424ed342f00c25ac4780670611a24eeaf708426b6efc6d9f6c6fa7bf91ef292302a5363afe9523c497265b8c0d7ad81374364cbecb2924b749e716819745 DIST gst-libav-1.14.4.tar.xz 9036732 BLAKE2B 1c2e257912f61dac71e1d890f4cb650e0cdbbf4472cbd8dc6b73e471d1914409b71699bd198c154069e15e68364530e91f76619afb52b91e373e58c9237ab7cb SHA512 4a0e9a91c23cba82e6a6b8eb65ff42b9d80389dd232b08c22b3431d3942fb93a6a7e64be97083d11cbceb2abe5d45dc5b37d230f7552e1a7fb193610d0530717 diff --git a/media-plugins/gst-plugins-libav/files/external-ffmpeg4-dep.patch b/media-plugins/gst-plugins-libav/files/external-ffmpeg4-dep.patch new file mode 100644 index 000000000000..c264507102f0 --- /dev/null +++ b/media-plugins/gst-plugins-libav/files/external-ffmpeg4-dep.patch @@ -0,0 +1,20 @@ +diff --git a/ext/libav/gstav.c b/ext/libav/gstav.c +index 2a88230..f6a6303 100644 +--- a/ext/libav/gstav.c ++++ b/ext/libav/gstav.c +@@ -155,6 +155,15 @@ plugin_init (GstPlugin * plugin) + /* build global ffmpeg param/property info */ + gst_ffmpeg_cfg_init (); + ++#ifndef HAVE_LIBAV_UNINSTALLED ++ /* Not using bundled ffmpeg - add a feature rescan dependency for system-ffmpeg */ ++ gst_plugin_add_dependency_simple (plugin, NULL, ++ GIO_LIBDIR, ++ "libavcodec.so.58," ++ "libavformat.so.58", ++ GST_PLUGIN_DEPENDENCY_FLAG_NONE); ++#endif ++ + gst_ffmpegaudenc_register (plugin); + gst_ffmpegvidenc_register (plugin); + gst_ffmpegauddec_register (plugin); diff --git a/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1_p20181115.ebuild b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1_p20181115.ebuild new file mode 100644 index 000000000000..8f541e0486a4 --- /dev/null +++ b/media-plugins/gst-plugins-libav/gst-plugins-libav-1.14.4.4.1_p20181115.ebuild @@ -0,0 +1,102 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools eapi7-ver multilib-minimal + +MY_PN="gst-libav" +MY_PV="$(ver_cut 1-3)" +MY_P="${MY_PN}-${MY_PV}" +FFMPEG_PV="$(ver_cut 4- ${PV%_*})" + +DESCRIPTION="FFmpeg based gstreamer plugin" +HOMEPAGE="https://gstreamer.freedesktop.org/modules/gst-libav.html" +SRC_URI="https://gstreamer.freedesktop.org/src/${MY_PN}/${MY_P}.tar.xz + https://dev.gentoo.org/~leio/distfiles/${MY_P}-ffmpeg4-patchset.tar.xz + libav? ( https://ffmpeg.org/releases/ffmpeg-${FFMPEG_PV}.tar.bz2 )" + +LICENSE="LGPL-2+" +SLOT="1.0" +KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~x86 ~x86-fbsd" +IUSE="libav +orc" + +RDEPEND=" + >=dev-libs/glib-2.40.0:2[${MULTILIB_USEDEP}] + >=media-libs/gstreamer-${MY_PV}:1.0[${MULTILIB_USEDEP}] + >=media-libs/gst-plugins-base-${MY_PV}:1.0[${MULTILIB_USEDEP}] + !libav? ( >=media-video/ffmpeg-4:0=[${MULTILIB_USEDEP}] ) + libav? ( + app-arch/bzip2[${MULTILIB_USEDEP}] + app-arch/xz-utils[${MULTILIB_USEDEP}] + ) + orc? ( >=dev-lang/orc-0.4.17[${MULTILIB_USEDEP}] ) +" +DEPEND="${RDEPEND} + >=dev-util/gtk-doc-am-1.12 + >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] +" + +S="${WORKDIR}/${MY_P}" + +PATCHES=( + "${WORKDIR}"/patches # ffmpeg-4 compat and more from git up to 20181115; requires eautoreconf + "${FILESDIR}"/external-ffmpeg4-dep.patch # Automatically rescan available elements for registry when system ffmpeg changes +) + +RESTRICT="test" # FIXME: tests seem to get stuck at one point; investigate properly + +src_unpack() { + default + + if use libav; then + # Use newer version of bundled FFmpeg. + rm -r "${S}/gst-libs/ext/libav" || die + ln -s ../../../ffmpeg-${FFMPEG_PV} "${S}/gst-libs/ext/libav" || die + fi +} + +src_prepare() { + default + eautoreconf # remove with a proper release without build system touching patchset +} + +multilib_src_configure() { + GST_PLUGINS_BUILD="" + # Upstream dropped support for system libav and won't work + # for preserving its compat anymore, forcing us to rely on internal + # ffmpeg copy if we don't want to cause unresolvable blockers for + # libav setups. + # https://bugzilla.gnome.org/show_bug.cgi?id=758183 + # Prefer system ffmpeg for -libav + local myconf=() + + if use libav; then + ewarn "Using bundled ffmpeg copy as upstream dropped" + ewarn "the support for compiling against system libav" + ewarn "https://bugzilla.gnome.org/show_bug.cgi?id=758183" + + myconf+=(--with-libav-extra-configure="--disable-debug --optflags=\\\"${CFLAGS}\\\"") + else + myconf+=("--with-system-libav") + fi + + ECONF_SOURCE=${S} \ + econf \ + --disable-maintainer-mode \ + --with-package-name="Gentoo GStreamer ebuild" \ + --with-package-origin="https://www.gentoo.org" \ + --disable-fatal-warnings \ + $(use_enable orc) \ + "${myconf[@]}" +} + +multilib_src_compile() { + # Don't build with -Werror; verbose build + emake ERROR_CFLAGS= V=1 +} + +multilib_src_install_all() { + einstalldocs + find "${ED}" -name '*.la' -delete || die +} -- cgit v1.2.3-18-g5258