commit:     cb222dd95881897798eb4d0e9f6de1b8625dddb2
Author:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 25 23:13:44 2018 +0000
Commit:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Sun Nov 25 23:23:13 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cb222dd9

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 <leio <AT> gentoo.org>
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(+)

diff --git a/media-plugins/gst-plugins-libav/Manifest 
b/media-plugins/gst-plugins-libav/Manifest
index 5582f7fc472..cfb18165022 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 00000000000..c264507102f
--- /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 00000000000..8f541e0486a
--- /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
+}

Reply via email to