commit: 9c30d3361b1a22f1e96cc0f473a328b6ef828155
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Sun May 18 18:05:45 2025 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Sun May 18 19:15:57 2025 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9c30d336
media-video/ffmpeg: add 4.4.6
For what it's worth anyway, we have no real reason to keep
4.4.x anymore beside at most for testing regressions, but
not planning to look at cleanups just yet.
Patchset mostly unchanged given only the binutils patch
was included in this release. Albeit did remove the glslang
patch given it's unneeded now that we removed USE=glslang.
Also added a new backport for gcc-15(?) only affecting
building tests, not looked too closely at what introduced
this. The offending code is gone entirely in ffmpeg-6+ so
it's only needed here.
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
media-video/ffmpeg/Manifest | 3 +
media-video/ffmpeg/ffmpeg-4.4.6.ebuild | 500 +++++++++++++++++++++++++++++++++
2 files changed, 503 insertions(+)
diff --git a/media-video/ffmpeg/Manifest b/media-video/ffmpeg/Manifest
index 96a6abbe430e..d4966a15c469 100644
--- a/media-video/ffmpeg/Manifest
+++ b/media-video/ffmpeg/Manifest
@@ -1,6 +1,9 @@
DIST ffmpeg-4.4-patchset-1.tar.xz 9916 BLAKE2B
9b41de6b048601f2af41864c3262b3348330f792eea71df4cfab5e740626ee6c633ac5569e6e91d953143f6ad0fac15c840ef0643925e91261f8b4a32e2d386c
SHA512
b11d9e182ddb0a48f50d63f5e0bd7fd99f4b8fa7dd17179a3bfbc9419dabb76401408a81ae2d5f118fbf67f28dcfdc3bfb5b7ac70f740259e3ebad8d1ba049bb
+DIST ffmpeg-4.4-patchset-2.tar.xz 9296 BLAKE2B
ebc86b4fa29c02e3a1b72d6ae0ad59d7b1b5f77352ef7680dc97218a053eff43fdbd8005172241bbef8c903d0598d01b1b954ab16c8c5e48e99b50c59883016a
SHA512
ec71e57eb620ae74d5602e7fc0dd9684b71c213cfa0544dd71193b486bbcbb7ff06d4e61c8dfadca5488e81cc328e3dbd8be3febac6efa5df363c5b51c43a293
DIST ffmpeg-4.4.5.tar.xz 9575596 BLAKE2B
546df09f7731d22e532a18d9ba9be184283f62b7a2e9470e745e536802bc2263a00f11ed6ab0aee8fc60c5f728826311cbf3542084ba3a64b65a61d76295cd64
SHA512
70df4e63ef507a7ec76da34438142499139769728fd5130d9cf48d56c110ec82c3d6a7e6d1622da03c70167fa861d901d016bbe52c21d2b284b8a0d9f30811dc
DIST ffmpeg-4.4.5.tar.xz.asc 520 BLAKE2B
505987208ed58b548f910299adb1324e6eba655cc37e6f03cac32c8623e16a4a884e822c745fb72b1934129a8c0a2706bb8bfb785715e6a68e43f737cb8ed365
SHA512
bcfee8986681dfbefd3add741fcbbc5e223bb06c9800797e68fde968c114055ac3fc02ce8731ed269bf30c92d6c990c7f636f82d42379920012e8a0ace8d527e
+DIST ffmpeg-4.4.6.tar.xz 9575932 BLAKE2B
c025f9b020b9881d5b00455a42aa9a591fa18c5b2010cf3ee4af6d5242ab0b28e18f05d43e0416ba280bbb1393cfeaf4aaadc0e7258bd0c9578720fd7a9052d9
SHA512
3805c5ff4661217cd2f85a7443a796b9dece67b6eba7686f5f348a1c6c4c678d26f97f9674bb9552b74cfa5bffaf8048885e57e765ad3e09a31274172c57725b
+DIST ffmpeg-4.4.6.tar.xz.asc 520 BLAKE2B
6b16c806af2df78452c17cc81d254ba96056a2aeee24f41d17030aa268cd0176b94e72845092eef2c78fc436d91c881fa076155eadd9925726e478fbb2fb271c
SHA512
dc07824da6ce364cc3010cfc90a3f79f60be3ede454d5844a8d06f0a6fa0f7c2881e32d71c54488c0ec8edb3191aedde9a0302e95cb233b96ac219833c48a094
DIST ffmpeg-6.1-patchset-1.tar.xz 11296 BLAKE2B
5227d0c7f52a4f217d5517da11c2327585375c9d860f31415e1079f4f1f9186637e07c7da0e168c732cc7abb953440f0ba952395db83074588eb31bee1d5bc9f
SHA512
20fe94536a5c3873d0126ff535a3bff595dedc7787162f160ecde6cbd357b9eb3749c9d7b7543aa39896ceb4e656494d31811bf26682776cdfc693fe030cd77b
DIST ffmpeg-6.1.2.tar.xz 10466152 BLAKE2B
ff1f2b2bb60ccc4c37b6ffda2a0e6a0be80c451dc99f6d4a99bd95a1bdc44c494d62377c53383ccfb5b818573a1971948d7db34119099dbc56d7258724831d3c
SHA512
3a009184d971fc3168e1322d1d724aae787ed0e9c152d8d1813ea0b9099bda3b35c41fcabbd7b140560e7a8fa9fa1ffd7f0938432d5d498c43829fc6cc3d9e08
DIST ffmpeg-6.1.2.tar.xz.asc 520 BLAKE2B
f26a2d6f5423f93090f2a448172e49f3858aeb5a00f326207d374bbb70fa8942c7ee1a7c55338b2db664b647c983cd5ab4fd8d71efe5c37af4c90385ca17d0ab
SHA512
a26dba1f4870b964080b45f8468f5ce3591eb6aa69be426bf4afbe5a60c3cbd0fe5056dc86ca7bb817c04ae30d39160cb7773772a9a2123ae7f095b18a6d7050
diff --git a/media-video/ffmpeg/ffmpeg-4.4.6.ebuild
b/media-video/ffmpeg/ffmpeg-4.4.6.ebuild
new file mode 100644
index 000000000000..a04419fe8271
--- /dev/null
+++ b/media-video/ffmpeg/ffmpeg-4.4.6.ebuild
@@ -0,0 +1,500 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic multilib-minimal toolchain-funcs
+
+FFMPEG_SUBSLOT=56.58.58 # avutil.avcodec.avformat SONAME
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI=(
+ https://git.ffmpeg.org/ffmpeg.git
+ https://github.com/FFmpeg/FFmpeg.git
+ )
+else
+ inherit verify-sig
+ SRC_URI="
+ https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz
+ verify-sig? (
https://ffmpeg.org/releases/ffmpeg-${PV}.tar.xz.asc )
+ https://dev.gentoo.org/~ionen/distfiles/ffmpeg-$(ver_cut
1-2)-patchset-2.tar.xz
+ "
+ S=${WORKDIR}/ffmpeg-${PV} # avoid ${P} for ffmpeg-compat
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64
~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~x64-macos"
+fi
+
+DESCRIPTION="Complete solution to record/convert/stream audio and video"
+HOMEPAGE="https://ffmpeg.org/"
+
+[[ ${PN} == *-compat ]] && FFMPEG_UNSLOTTED= || FFMPEG_UNSLOTTED=1
+
+FFMPEG_IUSE_MAP=(
+ # [+]flag[:[^][!]opt1,...][@<v3|nonfree>]], ^ = native-only, ! =
override
+ # remember to keep LICENSE, REQUIRED_USE, and RESTRICT in sync
+ X:libxcb,libxcb-shape,libxcb-shm,libxcb-xfixes,xlib
+ alsa
+ amrenc:libvo-amrwbenc@v3
+ amr:libopencore-amrnb,libopencore-amrwb@v3
+ appkit
+ bluray:libbluray
+ bs2b:libbs2b
+ bzip2:bzlib
+ cdio:libcdio
+ chromaprint
+ codec2:libcodec2
+ cuda:cuda-llvm
+ +dav1d:libdav1d
+ ${FFMPEG_UNSLOTTED:+doc:^htmlpages}
+ +drm:libdrm
+ fdk:libfdk-aac@nonfree
+ flite:libflite
+ +fontconfig:libfontconfig
+ frei0r
+ fribidi:libfribidi
+ gcrypt
+ gme:libgme
+ gmp:@v3
+ +gnutls # unused if USE=openssl, default for bug #905113,#917627
+ +gpl
+ gsm:libgsm
+ iec61883:libiec61883
+ ieee1394:libdc1394
+ jack:libjack
+ jpeg2k:libopenjpeg
+ kvazaar:libkvazaar
+ ladspa
+ lame:libmp3lame
+ libaom
+ libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in
tree)
+ +libass
+ libcaca
+ libilbc
+ librtmp:librtmp
+ libsoxr
+ libtesseract
+ lv2
+ lzma
+ modplug:libmodplug
+ nvenc:cuvid,ffnvcodec,nvdec,nvenc
+ openal
+ opencl
+ opengl
+ openh264:libopenh264
+ openmpt:libopenmpt
+ openssl:openssl,!gnutls@v3ifgpl # still LGPL2.1+ if USE=-gpl
+ opus:libopus
+ +postproc # exposed as a USE for clarity with the GPL requirement
+ pulseaudio:libpulse
+ rabbitmq:^librabbitmq # no multilib
+ rav1e:^librav1e # no multilib
+ rubberband:librubberband
+ samba:libsmbclient@v3 # GPL-3+ only
+ sdl:sdl2
+ snappy:libsnappy
+ sndio
+ speex:libspeex
+ srt:libsrt
+ ssh:libssh
+ svg:librsvg
+ svt-av1:libsvtav1
+ theora:libtheora
+ +truetype:libfreetype
+ twolame:libtwolame
+ v4l:libv4l2
+ vaapi
+ vdpau
+ vidstab:libvidstab
+ vorbis:libvorbis
+ vpx:libvpx
+ vulkan
+ webp:libwebp
+ x264:libx264
+ x265:libx265
+ +xml:libxml2
+ xvid:libxvid
+ zeromq:^libzmq # no multilib
+ zimg:libzimg
+ +zlib
+ zvbi:libzvbi
+)
+
+# all-rights is used to express the GPL incompatibility (RESTRICT=bindist)
+LICENSE="
+ gpl? (
+ GPL-2+
+ amr? ( GPL-3+ ) amrenc? ( GPL-3+ ) libaribb24? ( GPL-3+ )
+ gmp? ( GPL-3+ ) openssl? ( GPL-3+ )
+ fdk? ( all-rights-reserved )
+ )
+ !gpl? (
+ LGPL-2.1+
+ amr? ( LGPL-3+ ) amrenc? ( LGPL-3+ ) libaribb24? ( LGPL-3+ )
+ gmp? ( LGPL-3+ )
+ )
+ samba? ( GPL-3+ )
+"
+[[ ${FFMPEG_UNSLOTTED} ]] && : 0 || : "$(ver_cut 1)"
+SLOT="${_}/${FFMPEG_SUBSLOT}"
+IUSE="${FFMPEG_IUSE_MAP[*]%:*}"
+REQUIRED_USE="
+ fribidi? ( truetype )
+ gmp? ( !librtmp )
+ libaribb24? ( gpl ) cdio? ( gpl ) frei0r? ( gpl ) postproc? ( gpl )
+ rubberband? ( gpl ) samba? ( gpl ) vidstab? ( gpl ) x264? ( gpl )
+ x265? ( gpl ) xvid? ( gpl )
+"
+RESTRICT="gpl? ( fdk? ( bindist ) )"
+
+# dlopen: vulkan-loader
+RDEPEND="
+ virtual/libiconv[${MULTILIB_USEDEP}]
+ X? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libXext[${MULTILIB_USEDEP}]
+ x11-libs/libXv[${MULTILIB_USEDEP}]
+ x11-libs/libxcb:=[${MULTILIB_USEDEP}]
+ )
+ alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+ amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
+ amrenc? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
+ bluray? ( media-libs/libbluray:=[${MULTILIB_USEDEP}] )
+ bs2b? ( media-libs/libbs2b[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ cdio? ( dev-libs/libcdio-paranoia:=[${MULTILIB_USEDEP}] )
+ chromaprint? ( media-libs/chromaprint:=[${MULTILIB_USEDEP}] )
+ codec2? ( media-libs/codec2:=[${MULTILIB_USEDEP}] )
+ dav1d? ( media-libs/dav1d:=[${MULTILIB_USEDEP}] )
+ drm? ( x11-libs/libdrm[${MULTILIB_USEDEP}] )
+ fdk? ( media-libs/fdk-aac:=[${MULTILIB_USEDEP}] )
+ flite? ( app-accessibility/flite[${MULTILIB_USEDEP}] )
+ fontconfig? ( media-libs/fontconfig[${MULTILIB_USEDEP}] )
+ frei0r? ( media-plugins/frei0r-plugins[${MULTILIB_USEDEP}] )
+ fribidi? ( dev-libs/fribidi[${MULTILIB_USEDEP}] )
+ gcrypt? ( dev-libs/libgcrypt:=[${MULTILIB_USEDEP}] )
+ gme? ( media-libs/game-music-emu[${MULTILIB_USEDEP}] )
+ gmp? ( dev-libs/gmp:=[${MULTILIB_USEDEP}] )
+ gnutls? ( !openssl? (
+ net-libs/gnutls:=[${MULTILIB_USEDEP}]
+ ) )
+ gsm? ( media-sound/gsm[${MULTILIB_USEDEP}] )
+ iec61883? (
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:2=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ jack? ( virtual/jack[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ kvazaar? ( media-libs/kvazaar:=[${MULTILIB_USEDEP}] )
+ lame? ( media-sound/lame[${MULTILIB_USEDEP}] )
+ libaom? ( media-libs/libaom:=[${MULTILIB_USEDEP}] )
+ libaribb24? ( media-libs/aribb24[${MULTILIB_USEDEP}] )
+ libass? ( media-libs/libass:=[${MULTILIB_USEDEP}] )
+ libcaca? ( media-libs/libcaca[${MULTILIB_USEDEP}] )
+ libilbc? ( media-libs/libilbc:=[${MULTILIB_USEDEP}] )
+ librtmp? ( media-video/rtmpdump[${MULTILIB_USEDEP}] )
+ libsoxr? ( media-libs/soxr[${MULTILIB_USEDEP}] )
+ libtesseract? ( app-text/tesseract:=[${MULTILIB_USEDEP}] )
+ lv2? (
+ media-libs/lilv[${MULTILIB_USEDEP}]
+ media-libs/lv2[${MULTILIB_USEDEP}]
+ )
+ lzma? ( app-arch/xz-utils[${MULTILIB_USEDEP}] )
+ modplug? ( media-libs/libmodplug[${MULTILIB_USEDEP}] )
+ openal? ( media-libs/openal[${MULTILIB_USEDEP}] )
+ opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
+ opengl? ( media-libs/libglvnd[X,${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ openmpt? ( media-libs/libopenmpt[${MULTILIB_USEDEP}] )
+ openssl? ( >=dev-libs/openssl-3:=[${MULTILIB_USEDEP}] )
+ opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
+ pulseaudio? ( media-libs/libpulse[${MULTILIB_USEDEP}] )
+ rabbitmq? ( net-libs/rabbitmq-c:= )
+ rav1e? ( >=media-video/rav1e-0.4:=[capi] )
+ rubberband? ( media-libs/rubberband:=[${MULTILIB_USEDEP}] )
+ samba? ( net-fs/samba:=[client,${MULTILIB_USEDEP}] )
+ sdl? ( media-libs/libsdl2[sound(+),video(+),${MULTILIB_USEDEP}] )
+ snappy? ( app-arch/snappy:=[${MULTILIB_USEDEP}] )
+ sndio? ( media-sound/sndio:=[${MULTILIB_USEDEP}] )
+ speex? ( media-libs/speex[${MULTILIB_USEDEP}] )
+ srt? ( net-libs/srt:=[${MULTILIB_USEDEP}] )
+ ssh? ( net-libs/libssh:=[sftp,${MULTILIB_USEDEP}] )
+ svg? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ >=gnome-base/librsvg-2.52:2[${MULTILIB_USEDEP}]
+ x11-libs/cairo[${MULTILIB_USEDEP}]
+ )
+ svt-av1? ( >=media-libs/svt-av1-0.8.4:=[${MULTILIB_USEDEP}] )
+ theora? ( media-libs/libtheora[encode,${MULTILIB_USEDEP}] )
+ truetype? ( media-libs/freetype:2[${MULTILIB_USEDEP}] )
+ twolame? ( media-sound/twolame[${MULTILIB_USEDEP}] )
+ v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva:=[X?,${MULTILIB_USEDEP}] )
+ vdpau? (
+ x11-libs/libX11[${MULTILIB_USEDEP}]
+ x11-libs/libvdpau[${MULTILIB_USEDEP}]
+ )
+ vidstab? ( media-libs/vidstab[${MULTILIB_USEDEP}] )
+ vorbis? ( media-libs/libvorbis[${MULTILIB_USEDEP}] )
+ vpx? ( media-libs/libvpx:=[${MULTILIB_USEDEP}] )
+ vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ x264? ( media-libs/x264:=[${MULTILIB_USEDEP}] )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+ xml? ( dev-libs/libxml2:=[${MULTILIB_USEDEP}] )
+ xvid? ( media-libs/xvid[${MULTILIB_USEDEP}] )
+ zeromq? ( net-libs/zeromq:= )
+ zimg? ( media-libs/zimg[${MULTILIB_USEDEP}] )
+ zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
+ zvbi? ( media-libs/zvbi[${MULTILIB_USEDEP}] )
+"
+DEPEND="
+ ${RDEPEND}
+ X? ( x11-base/xorg-proto )
+ kernel_linux? ( >=sys-kernel/linux-headers-6 )
+ ladspa? ( media-libs/ladspa-sdk )
+ nvenc? ( media-libs/nv-codec-headers )
+ opencl? ( dev-util/opencl-headers )
+ vulkan? ( dev-util/vulkan-headers )
+"
+BDEPEND="
+ app-alternatives/awk
+ virtual/pkgconfig
+ amd64? (
+ || (
+ dev-lang/nasm
+ dev-lang/yasm
+ )
+ )
+ cuda? ( llvm-core/clang:*[llvm_targets_NVPTX] )
+ ${FFMPEG_UNSLOTTED:+"
+ dev-lang/perl
+ doc? ( sys-apps/texinfo )
+ "}
+"
+[[ ${PV} != 9999 ]] &&
+ BDEPEND+=" verify-sig? ( sec-keys/openpgp-keys-ffmpeg )"
+
+DOCS=( CREDITS Changelog README.md doc/APIchanges )
+[[ ${PV} != 9999 ]] && DOCS+=( RELEASE_NOTES )
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libavutil/avconfig.h
+)
+
+PATCHES=(
+ "${WORKDIR}"/patches
+)
+
+pkg_pretend() {
+ # TODO: drop this after a few months
+ if has_version "${CATEGORY}/${PN}[mp3]" && use !lame; then #952971
+ ewarn "${PN}'s 'mp3' USE was renamed to 'lame', please enable
it"
+ ewarn "if wish to keep the ability to encode using
media-sound/lame."
+ ewarn "This is *not* needed if only want mp3 playback."
+ fi
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] || return
+
+ if use chromaprint && has_version 'media-libs/chromaprint[tools]'; then
+ ewarn "media-libs/chromaprint is installed with USE=tools which
links to"
+ ewarn "ffmpeg, and USE=chromaprint is enabled on ffmpeg which
links to"
+ ewarn "chromaprint (circular). This may cause issues when
updating ffmpeg."
+ ewarn
+ ewarn "If get a build failure with 'ERROR: chromaprint not
found' or so,"
+ ewarn "first rebuild chromaprint with USE=-tools, then rebuild
ffmpeg, and"
+ ewarn "then finally rebuild chromaprint with USE=tools again
(bug #862996)."
+ fi
+
+ [[ ${EXTRA_FFMPEG_CONF} ]] && # drop this eventually
+ die "EXTRA_FFMPEG_CONF is set in the environment, please use
EXTRA_ECONF instead"
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ use verify-sig &&
+ verify-sig_verify_detached
"${DISTDIR}"/ffmpeg-${PV}.tar.xz{,.asc} \
+ "${BROOT}"/usr/share/openpgp-keys/ffmpeg.asc
+ default
+ fi
+}
+
+src_prepare() {
+ default
+
+ # respect user preferences
+ sed -i '/cflags -fdiagnostics-color/d' configure || die
+
+ # handle *FLAGS here to avoid repeating for each ABI below (bug #923491)
+ filter-lto
+ use elibc_musl && append-cppflags -D__musl__ #940733
+}
+
+multilib_src_configure() {
+ local conf=( "${S}"/configure ) # not autotools-based
+
+ local prefix=${EPREFIX}/usr
+ if [[ ! ${FFMPEG_UNSLOTTED} ]]; then
+ prefix+=/lib/ffmpeg${SLOT%/*}
+ # could get SONAME clashes, so prefer rpath over LDPATH
+ conf+=(
+ --enable-rpath
+ --disable-doc
+ )
+ fi
+
+ conf+=(
+ --prefix="${prefix}"
+ --libdir="${prefix}"/$(get_libdir)
+ --shlibdir="${prefix}"/$(get_libdir)
+ --mandir="${prefix}"/share/man
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}/html
+
+ --ar="$(tc-getAR)"
+ --cc="$(tc-getCC)"
+ --cxx="$(tc-getCXX)"
+ --nm="$(tc-getNM)"
+ --pkg-config="$(tc-getPKG_CONFIG)"
+ --ranlib="$(tc-getRANLIB)"
+ --disable-stripping
+
+ # overrides users' -g/-O, let *FLAGS handle these
+ --disable-debug
+ --disable-optimizations
+ --optflags=' '
+
+ # not worth supporting on this version, use ffmpeg-6+
+ --disable-lto
+
+ # basic defaults that should not really need a USE
+ --enable-iconv
+ --enable-pic
+ --enable-shared
+ --disable-static
+ $(multilib_native_enable manpages) # needs pod2man
+ --disable-podpages
+ --disable-txtpages
+
+ # disabled primarily due to being unpackaged
+ --disable-decklink
+ --disable-libdavs2
+ --disable-libklvanc
+ --disable-libmysofa
+ --disable-libopenvino
+ --disable-libshine
+ --disable-libtls
+ --disable-libuavs3d
+ --disable-libxavs
+ --disable-libxavs2
+ --disable-pocketsphinx
+ --disable-rkmpp
+ --disable-vapoursynth
+
+ # disabled for other or additional reasons
+ --disable-amf # may or may not be broken, use ffmpeg-6+ (bug
#910271)
+ --disable-cuda-nvcc # prefer cuda-llvm for less issues
+ --disable-libcelt # obsolete (bug #664158)
+ --disable-libglslang # use ffmpeg-6+ with USE=shaderc instead
+ --disable-liblensfun # https://trac.ffmpeg.org/ticket/9112
(abandoned?)
+ --disable-libmfx # use ffmpeg-6+ with USE=qsv instead
+ --disable-libnpp # use ffmpeg-6+, ebuild support was only added
there
+ --disable-libopencv # leaving for later due to circular
opencv[ffmpeg]
+ --disable-librist # librist itself needs attention first (bug
#822012)
+ --disable-libtensorflow # causes headaches, and is gone
+ --disable-libvmaf # use ffmpeg-6+ instead, needs old vmaf
library
+ --disable-mbedtls # messy with slots, tests underlinking issues
+ --disable-mmal # unsupported
+ --disable-omx # unsupported (bug #653386)
+ --disable-omx-rpi # ^
+
+ # to avoid obscure issues like bug #915384 and simplify the
ebuild,
+ # not passing the following (use EXTRA_ECONF if really must):
+ # --cpu: adds -march=<exact> after the user's more adapted
+ # =native, its logic also does not account for -mno-*
+ # --disable/enable-<cpufeature>: safer to detect at runtime
+ )
+
+ # broken on x32 (bug #427004), and not PIC safe on x86 (bug #916067)
+ [[ ${ABI} == @(x32|x86) ]] && conf+=( --disable-asm )
+
+ # disable due to asm-related failures on ppc (bug #951464, ppc64be)
+ # https://trac.ffmpeg.org/ticket/9604 (ppc64el)
+ # https://trac.ffmpeg.org/ticket/10955 (ppc64el)
+ # (review re-enabling if resolved, or if debian allows it again)
+ use ppc || use ppc64 && conf+=( --disable-asm )
+
+ if tc-is-cross-compiler; then
+ conf+=(
+ --enable-cross-compile
+ --arch="$(tc-arch-kernel)"
+ --cross-prefix="${CHOST}-"
+ --host-cc="$(tc-getBUILD_CC)"
+ )
+ case ${CHOST} in
+ *mingw32*) conf+=( --target-os=mingw32 );;
+ *linux*) conf+=( --target-os=linux );;
+ esac
+ fi
+
+ # import options from FFMPEG_IUSE_MAP
+ local flag license mod v
+ local -A optmap=() licensemap=()
+ for v in "${FFMPEG_IUSE_MAP[@]}"; do
+ [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]] || die "${v}"
+ flag=${BASH_REMATCH[1]}
+ license=${BASH_REMATCH[3]}
+ v=${BASH_REMATCH[2]:-${flag}}
+ for v in ${v//,/ }; do
+ mod=${v::1}
+ v=${v#[\!\^]}
+ if [[ ${mod} == '!' ]]; then
+ if use ${flag}; then
+ optmap[${v}]=--disable-${v}
+ unset licensemap[${v}]
+ fi
+ elif [[ ! -v optmap[${v}] ]]; then
+ if [[ ${mod} == '^' ]]; then
+
optmap[${v}]=$(multilib_native_use_enable ${flag} ${v})
+ else
+ optmap[${v}]=$(use_enable ${flag} ${v})
+ fi
+ use ${flag} && licensemap[${v}]=${license}
+ fi
+ done
+ done
+ for license in "${licensemap[@]}"; do
+ case ${license} in
+ v3ifgpl) use gpl || continue ;&
+ v3) optmap[v3]=--enable-version3 ;;
+ nonfree) use gpl && optmap[nonfree]=--enable-nonfree ;;
+ esac
+ done
+ conf+=(
+ "${optmap[@]}"
+ ${EXTRA_ECONF}
+ )
+
+ einfo "${conf[*]}"
+ "${conf[@]}" || die "configure failed, see
${BUILD_DIR}/ffbuild/config.log"
+}
+
+multilib_src_compile() {
+ emake V=1
+}
+
+multilib_src_test() {
+ local -x LD_LIBRARY_PATH=$(printf %s:
"${BUILD_DIR}"/lib*)${LD_LIBRARY_PATH}
+ emake V=1 -k fate
+}
+
+multilib_src_install() {
+ emake V=1 DESTDIR="${D}" install
+}