media-video/libav: cleanup vulnerable wrt bug #626344

This commit is contained in:
Aaron Bauman
2018-01-24 18:45:26 -05:00
parent 56d45d2e21
commit db00746d6f
3 changed files with 0 additions and 719 deletions

View File

@@ -1,5 +1,4 @@
DIST 0001-x86-Put-COPY3_IF_LT-under-HAVE_6REGS.patch.gz 736 BLAKE2B 04e7b9f1b26e3df50e89e9af4663a2765ca6a71bf52b9f931b2d194366526642cdf15b96b1bba98167c1fe1304da71528b05a4504df6153d0cbf4e3b219c0bb7 SHA512 dbdfdf7fc1d42ebd93b0853e85ba0c07d816035c126a9303e6a5656bb9faeea16f16068d7e4aa67c7c4ade8ca09f64669e67f52d7d0a2a65518fa3897d586311
DIST 0001-xcb-Add-all-the-libraries-to-the-link-line-explicitl.patch 1017 BLAKE2B ec5947dc258c03a4077da898b0895693de3a35979f086d0551696616ab2f2df1e7e122ad53f93ff0fbf78782acfd0ef2a9f664a1a33f4a4d40d9072733638a1f SHA512 8cf8d1dd46a423381e70ab046e5843f13028c1d2ee14877e96339ea6a7d80d3ae5b2441b5b41ca23ba0104a5ff2d1b7e871f43680967bad0b7f242952d7b0be9
DIST fate-11.tar.xz 691009480 BLAKE2B 01e1e8125d34a623b5bd4bf1da0daee96d045e73fd069cf438f471970ad4cf71df8bd3235306b3493cb547fb5ac4bb8fce416e194fec9a7e9b9de68a5a15d572 SHA512 f9dc152964e3f19cf32d5d4cbc923a2bd05ba3b0f8f3880122df79d32852ee9d4795a0bfd66d7a2925299e9e9533888df6103e212ea3e5cbfe799d17ffa2b433
DIST fate-12-r1.tar.xz 763758260 BLAKE2B 299e1a2a773e49c7a51c1222ac34eaea24f77420570a1b0c0b18db5517736656f52ad0a7ca807f65f5e9f9597709265fcd950cf989ad995aa4289ba0e364950e SHA512 084f584c34d34b66c1f4d4742a11376ee2b90f6a07529b5aba6d50421dc8f863fded73dd57ad2c201aadfd529f0f923fa531ea9b41aaaa7b682846ef565a1018
DIST fate-12.tar.xz 755165356 BLAKE2B 031cef24bcfae6205cd6546f453cddb17387176ae837086dd38c8c7132ad9b8dee5367be5fb1b8c604b2203a1e2a55f0c3be2a62f825a95a7ace1aceb4593b70 SHA512 f6ffb3b673b01debd71d7c79cd5c3c4d6f6adb975ed0bdb7c791d674efd8a84ac98f7db3943dfbe3756a3f8819ceab2bdf4633c15fefddf0f8e10adfc805c1e1
@@ -9,8 +8,6 @@ DIST libav-11.4.tar.xz 4860264 BLAKE2B 3e56751b806cdf542bf078e790085bb0599696df0
DIST libav-11.6.tar.xz 4860268 BLAKE2B 52bd7cce7c1bbf7550d8ebfc00b735903bad1aefe0ecff6bfe80eb23deec6702974f63ec4b50d6956a6511f8dbeb9c6ee57b74786e6f8155b958c3c507391c8d SHA512 bff3e22de93e4ab357715ae20e25b6435df52d1868c5164426a693d14fe7f54e47a46c4c62a36fbf27bd204e12f6a29a6f58016c7deaa838915d424b5ce530bd
DIST libav-11.7.tar.xz 4861984 BLAKE2B 4191e47808b4e2827594398c33f4cd95c789379c0ec1256a18385d4570139054fbb0549c2ab45f3c20c41d2a5cb861ea439a7e76939ccfa856ea2101fc181f55 SHA512 23c6ffd0efdfa6b22c7863bf440d7469eba03a7990382fe33c8c4c7871edf250641ac536572516225679b0934e5c250ee0e2e91ea093c770a0c4c32b4776e3c5
DIST libav-11.8.tar.xz 4865796 BLAKE2B fb0e8f129edee0423252f334b12485d514f9fdfb3d916877d83141e0985ec4efb4de0f5b65d6e3e6d94b835f317a52116b849eec99d023ebb109bdbc2b7a8c5c SHA512 26f9a6bb7312acc08b6785c260220ada3ca2a8db0d0f2bd4621b47082c275fbdb7978457cb423693ba9a61dc4570b05d0dceb5861ff0bcce859c349a6a8f49be
DIST libav-12.1.tar.xz 5267292 BLAKE2B 4b8e5c9175aa34b2195238e16af4a21706ef18babb491c0c08d4432cb73ad576eaea55b5231af9033dc252a66b1fd51c5964b1d8ad80c85fe2600c27c332c3da SHA512 a0dd5fcc95cb62901b05b59a63ce4fcc6fb2943f0032a824ff6cfeeab2d13bd5edc65811aba1d06fe4d794119da049c52e5a9efbbc3599b445b61769992c9919
DIST libav-12.2.tar.xz 5268804 BLAKE2B e25b3dfe1026b9e69c89cbec2090070088a7004dc03e8cc23da2da03824a627c733c16c67e5fc65ec9f19942d93405d5ba6926de83cae04c497597f55220f004 SHA512 4b37cfb18a6cf6f12eddb5175b1751c093f3a495ae1d1b588884c60157cb260479b1d8fa3a6e3e08c00d7a26422b1e78a750eb35cf7bc763c01790f3567cba03
DIST libav-12.tar.xz 5265280 BLAKE2B 2fca534267537343ae51bf07ce226057ec0ecef81163c81559c7492a1591b611f393b2e8026733a733c715a890137b353140743a53227f030806a1c35418c910 SHA512 55f7dd171882d191c79c6ade10f02123b8b7d897cbbd13c77766c9af944c5ba4bfbc81487966bac1ee459bc61f7a2471ddd9a3ea29b412296e9044b98440c423
DIST libav-13_pre20171219.tar.xz 5427904 BLAKE2B 074dc5d071aeb656fc14a015c2e3c168aa81d25e2fb08d99e300dc47d7ea28f61500fcfab0b16fa136261a5af27631b7536eb3aefa0e1feb4d615af57f9f5a36 SHA512 0c9b59957f1fbbff8f5b95b02c11014a4efdddf4b7e1b158cd0fda3af8b89bd90d48263ed0239915adfb7abcd7a8b22c278cd5cf1d01822bd22df65cc7f69689
DIST libav-9.17.tar.xz 4080028 BLAKE2B 206e80835292af9f4c1c65539e69981b6993679c11e8a1feef1e37dc32174e47744ebce319b8709bcd60804f493fab1e524c781e174d60d9ebe35ad01f6fbc60 SHA512 20af83d4b6a23c159c2386b6592ba6a6acf3f2c54e8aeb16dd0c8a64d637fbde24f37b864698b1143c6802b64a7b5e8ddfe0e7601b35c35686a789e2b3232f5a

View File

@@ -1,358 +0,0 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs
if [[ ${PV} == *9999 ]] ; then
: ${EGIT_REPO_URI:="git://git.libav.org/libav.git"}
if [[ ${PV%9999} != "" ]] ; then
: ${EGIT_BRANCH:="release/${PV%.9999}"}
fi
inherit git-r3
fi
DESCRIPTION="Complete solution to record, convert and stream audio and video"
HOMEPAGE="https://libav.org/"
if [[ ${PV} == *9999 ]] ; then
SRC_URI=""
elif [[ ${PV%_p*} != ${PV} ]] ; then # Gentoo snapshot
SRC_URI="https://dev.gentoo.org/~lu_zero/libav/${P}.tar.xz"
SRC_URI+=" test? ( https://dev.gentoo.org/~lu_zero/libav/fate-${PV}.tar.xz )"
else # Official release
SRC_URI="https://libav.org/releases/${P}.tar.xz"
FATE_VER=${PV%%_*}
SRC_URI+=" test? ( https://dev.gentoo.org/~lu_zero/libav/fate-12-r1.tar.xz )"
fi
SRC_URI+=" https://dev.gentoo.org/~lu_zero/libav/0001-xcb-Add-all-the-libraries-to-the-link-line-explicitl.patch"
# 9999 does not have fate-*.tar.xz
LICENSE="LGPL-2.1 gpl? ( GPL-3 )"
SLOT="0/12"
[[ ${PV} == *9999 ]] || KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64
~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
~x64-solaris ~x86-solaris"
IUSE="aac alsa amr bs2b +bzip2 cdio cpudetection custom-cflags debug doc +encode faac fdk
frei0r fontconfig +gpl gsm +hardcoded-tables ieee1394 jack jpeg2k libressl mp3
+network nvidia openssl opus oss pic pulseaudio rtmp schroedinger sdl speex ssl
static-libs test theora threads tools truetype twolame v4l vaapi vdpau vorbis vpx X
wavpack webp x264 x265 xvid +zlib"
# String for CPU features in the useflag[:configure_option] form
# if :configure_option isn't set, it will use 'useflag' as configure option
CPU_FEATURES="altivec armv5te armv6 armv6t2 armvfp:vfp neon"
X86_CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext mmx mmxext sse sse2 sse3 ssse3 sse4_1:sse4 sse4_2:sse42 avx xop fma3 fma4 avx2"
for i in ${X86_CPU_FEATURES} ; do
CPU_FEATURES+=" cpu_flags_x86_${i%:*}:${i#*:}"
done
for i in ${CPU_FEATURES} ; do
IUSE+=" ${i%:*}"
done
RDEPEND="
!media-video/ffmpeg:0
alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
encode? (
aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
amr? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
theora? (
>=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
)
twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
vorbis? (
>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
)
webp? ( >=media-libs/libwebp-0.3.0[${MULTILIB_USEDEP}] )
wavpack? ( >=media-sound/wavpack-4.60.1-r1[${MULTILIB_USEDEP}] )
x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
x265? ( >=media-libs/x265-1.2:=[${MULTILIB_USEDEP}] )
xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
)
nvidia? ( media-video/nvidia-video-codec )
fdk? ( >=media-libs/fdk-aac-0.1.2[${MULTILIB_USEDEP}] )
frei0r? ( media-plugins/frei0r-plugins )
gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
ieee1394? (
>=media-libs/libdc1394-2.2.1[${MULTILIB_USEDEP}]
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
)
jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
rtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
ssl? (
openssl? (
!libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
)
!openssl? ( >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}] )
)
sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
fontconfig? ( >=media-libs/fontconfig-2.10[${MULTILIB_USEDEP}] )
vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
vpx? ( >=media-libs/libvpx-1.2.0_pre20130625[${MULTILIB_USEDEP}] )
X? ( >=x11-libs/libxcb-1.9.1[${MULTILIB_USEDEP}] )
zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
"
DEPEND="${RDEPEND}
>=sys-devel/make-3.81
doc? ( app-text/texi2html )
ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
cpu_flags_x86_mmx? ( dev-lang/yasm )
rtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
ssl? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
test? ( sys-devel/bc )
truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
v4l? ( sys-kernel/linux-headers )
"
RDEPEND="${RDEPEND}
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
# faac can't be binary distributed
# openssl support marked as nonfree
# faac and aac are concurent implementations
# amr and aac require at least lgpl3
# x264 requires gpl2
REQUIRED_USE="
rtmp? ( network )
amr? ( gpl ) aac? ( gpl ) x264? ( gpl ) cdio? ( gpl ) x265? ( gpl )
test? ( encode zlib )
fontconfig? ( truetype )
"
RESTRICT="faac? ( bindist ) fdk? ( bindist ) openssl? ( bindist ) nvidia? ( bindist )"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/libavutil/avconfig.h
)
src_unpack() {
[[ ${PV} == *9999 ]] && git-r3_src_unpack
# 9999 does not have fate-*.tar.xz
[[ ${PV%9999} != "" ]] && default_src_unpack
}
src_prepare() {
epatch_user
epatch "${DISTDIR}/0001-xcb-Add-all-the-libraries-to-the-link-line-explicitl.patch"
# if we have snapshot then we need to hardcode the version
if [[ ${PV%_p*} != ${PV} ]]; then
sed -i -e "s/UNKNOWN/DATE-${PV#*_pre}/" "${S}/version.sh" || die
fi
TOOLS=( aviocat graph2dot ismindex pktdumper qt-faststart trasher )
use zlib && TOOLS+=( cws2fws )
MAKEOPTS+=" V=1"
}
multilib_src_configure() {
local myconf=( ${EXTRA_LIBAV_CONF} )
local uses i
# 9999 does not have fate-*.tar.xz
[[ ${PV%9999} != "" ]] && use test && myconf+=( --samples="${WORKDIR}/fate" )
myconf+=(
$(use_enable gpl)
$(use_enable gpl version3)
--enable-avfilter
)
# enabled by default
uses="debug doc network zlib"
for i in ${uses}; do
use ${i} || myconf+=( --disable-${i} )
done
use bzip2 || myconf+=( --disable-bzlib )
use sdl || myconf+=( --disable-avplay )
if use ssl; then
use openssl && myconf+=( --enable-openssl --enable-nonfree ) \
|| myconf+=( --enable-gnutls )
fi
use custom-cflags && myconf+=( --disable-optimizations )
use cpudetection && myconf+=( --enable-runtime-cpudetect )
use vdpau || myconf+=( --disable-vdpau )
use vaapi && myconf+=( --enable-vaapi )
NVIDIA_INCLUDES="-I/opt/nvidia-video-codec/include -I/opt/cuda/include"
NVIDIA_LIBS="-L/opt/cuda/lib64"
use nvidia && myconf+=( --enable-nonfree --enable-cuda --enable-libnpp
--extra-cflags="$NVIDIA_INCLUDES" --extra-ldflags="$NVIDIA_LIBS" )
# Encoders
if use encode; then
use faac && myconf+=( --enable-nonfree )
use mp3 && myconf+=( --enable-libmp3lame )
use amr && myconf+=( --enable-libvo-amrwbenc )
use aac && myconf+=( --enable-libvo-aacenc )
use nvidia && myconf+=( --enable-nvenc )
uses="faac theora twolame vorbis wavpack webp x264 x265 xvid"
for i in ${uses}; do
use ${i} && myconf+=( --enable-lib${i} )
done
else
myconf+=( --disable-encoders )
fi
# libavdevice options
use cdio && myconf+=( --enable-libcdio )
use ieee1394 && myconf+=( --enable-libdc1394 )
use pulseaudio && myconf+=( --enable-libpulse )
# Indevs
# v4l1 is gone since linux-headers-2.6.38
myconf+=( --disable-indev=v4l )
use v4l || myconf+=( --disable-indev=v4l2 )
for i in alsa oss jack; do
use ${i} || myconf+=( --disable-indev=${i} )
done
use X && myconf+=( --enable-libxcb )
# Outdevs
for i in alsa oss ; do
use ${i} || myconf+=( --disable-outdev=${i} )
done
# libavfilter options
use bs2b && myconf+=( --enable-libbs2b )
multilib_is_native_abi && use frei0r && myconf+=( --enable-frei0r )
use truetype && myconf+=( --enable-libfreetype )
use fontconfig && myconf+=( --enable-libfontconfig )
# Threads; we only support pthread for now
use threads && myconf+=( --enable-pthreads )
# Decoders
use amr && myconf+=( --enable-libopencore-amrwb --enable-libopencore-amrnb )
use fdk && myconf+=( --enable-nonfree --enable-libfdk-aac )
uses="gsm opus rtmp schroedinger speex vpx"
for i in ${uses}; do
use ${i} && myconf+=( --enable-lib${i} )
done
use jpeg2k && myconf+=( --enable-libopenjpeg )
# CPU features
for i in ${CPU_FEATURES}; do
use ${i%:*} || myconf+=( --disable-${i#*:} )
done
# pass the right -mfpu as extra
use neon && use arm && append-cflags -mfpu=neon
# disable mmx accelerated code if PIC is required
# as the provided asm decidedly is not PIC for x86.
if use pic && [[ ${ABI} == x86 ]]; then
myconf+=( --disable-mmx --disable-mmxext )
fi
# Option to force building pic
use pic && myconf+=( --enable-pic )
# cross compile support
if tc-is-cross-compiler ; then
myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
case ${CHOST} in
*freebsd*)
myconf+=( --target-os=freebsd )
;;
mingw32*)
myconf+=( --target-os=mingw32 )
;;
*linux*)
myconf+=( --target-os=linux )
;;
esac
fi
# Misc stuff
use hardcoded-tables && myconf+=( --enable-hardcoded-tables )
# Forcing arm would make the compiler break left and right
if [[ ${ABI} == arm ]]; then
filter-flags -marm
fi
# Specific workarounds for too-few-registers arch...
if [[ ${ABI} == x86 ]]; then
local CFLAGS=${CFLAGS} CXXFLAGS=${CXXFLAGS}
filter-flags -fforce-addr -momit-leaf-frame-pointer
append-flags -fomit-frame-pointer
is-flag -O? || append-flags -O2
if use debug; then
# no need to warn about debug if not using debug flag
ewarn ""
ewarn "Debug information will be almost useless as the frame pointer is omitted."
ewarn "This makes debugging harder, so crashes that has no fixed behavior are"
ewarn "difficult to fix. Please have that in mind."
ewarn ""
fi
fi
set -- "${S}"/configure \
--prefix="${EPREFIX}"/usr \
--libdir="${EPREFIX}"/usr/$(get_libdir) \
--shlibdir="${EPREFIX}"/usr/$(get_libdir) \
--mandir="${EPREFIX}"/usr/share/man \
--enable-shared \
--cc="$(tc-getCC)" \
--ar="$(tc-getAR)" \
--optflags="${CFLAGS}" \
--extra-cflags="${CFLAGS}" \
$(use_enable static-libs static) \
"${myconf[@]}"
echo "${@}"
"${@}" || die
}
multilib_src_compile() {
emake
if use tools; then
tc-export CC
emake ${TOOLS[@]/#/tools/}
fi
}
multilib_src_install() {
emake DESTDIR="${D}" install install-man
use doc && dodoc doc/*.html
if use tools; then
dobin ${TOOLS[@]/#/tools/}
fi
}
multilib_src_install_all() {
dodoc Changelog README.md INSTALL
}
multilib_src_test() {
local _libs="$(for i in lib*/;do echo -n "${BUILD_DIR}/${i%/}:";done)"
einfo "LD_LIBRARY_PATH is set to \"${_libs}\""
LD_LIBRARY_PATH="${_libs}" make -j1 fate V=1
}

View File

@@ -1,358 +0,0 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs
if [[ ${PV} == *9999 ]] ; then
: ${EGIT_REPO_URI:="git://git.libav.org/libav.git"}
if [[ ${PV%9999} != "" ]] ; then
: ${EGIT_BRANCH:="release/${PV%.9999}"}
fi
inherit git-r3
fi
DESCRIPTION="Complete solution to record, convert and stream audio and video"
HOMEPAGE="https://libav.org/"
if [[ ${PV} == *9999 ]] ; then
SRC_URI=""
elif [[ ${PV%_p*} != ${PV} ]] ; then # Gentoo snapshot
SRC_URI="https://dev.gentoo.org/~lu_zero/libav/${P}.tar.xz"
SRC_URI+=" test? ( https://dev.gentoo.org/~lu_zero/libav/fate-${PV}.tar.xz )"
else # Official release
SRC_URI="https://libav.org/releases/${P}.tar.xz"
FATE_VER=${PV%%_*}
SRC_URI+=" test? ( https://dev.gentoo.org/~lu_zero/libav/fate-12-r1.tar.xz )"
fi
SRC_URI+=" https://dev.gentoo.org/~lu_zero/libav/0001-xcb-Add-all-the-libraries-to-the-link-line-explicitl.patch"
# 9999 does not have fate-*.tar.xz
LICENSE="LGPL-2.1 gpl? ( GPL-3 )"
SLOT="0/12"
[[ ${PV} == *9999 ]] || KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64
~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
~x64-solaris ~x86-solaris"
IUSE="aac alsa amr bs2b +bzip2 cdio cpudetection custom-cflags debug doc +encode faac fdk
frei0r fontconfig +gpl gsm +hardcoded-tables ieee1394 jack jpeg2k libressl mp3
+network nvidia openssl opus oss pic pulseaudio rtmp schroedinger sdl speex ssl
static-libs test theora threads tools truetype twolame v4l vaapi vdpau vorbis vpx X
wavpack webp x264 x265 xvid +zlib"
# String for CPU features in the useflag[:configure_option] form
# if :configure_option isn't set, it will use 'useflag' as configure option
CPU_FEATURES="altivec armv5te armv6 armv6t2 armvfp:vfp neon"
X86_CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext mmx mmxext sse sse2 sse3 ssse3 sse4_1:sse4 sse4_2:sse42 avx xop fma3 fma4 avx2"
for i in ${X86_CPU_FEATURES} ; do
CPU_FEATURES+=" cpu_flags_x86_${i%:*}:${i#*:}"
done
for i in ${CPU_FEATURES} ; do
IUSE+=" ${i%:*}"
done
RDEPEND="
!media-video/ffmpeg:0
alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
encode? (
aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
amr? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
theora? (
>=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
)
twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
vorbis? (
>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
)
webp? ( >=media-libs/libwebp-0.3.0[${MULTILIB_USEDEP}] )
wavpack? ( >=media-sound/wavpack-4.60.1-r1[${MULTILIB_USEDEP}] )
x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
x265? ( >=media-libs/x265-1.2:=[${MULTILIB_USEDEP}] )
xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
)
nvidia? ( media-video/nvidia-video-codec )
fdk? ( >=media-libs/fdk-aac-0.1.2[${MULTILIB_USEDEP}] )
frei0r? ( media-plugins/frei0r-plugins )
gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
ieee1394? (
>=media-libs/libdc1394-2.2.1[${MULTILIB_USEDEP}]
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
)
jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
rtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
ssl? (
openssl? (
!libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] )
libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
)
!openssl? ( >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}] )
)
sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
fontconfig? ( >=media-libs/fontconfig-2.10[${MULTILIB_USEDEP}] )
vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
vpx? ( >=media-libs/libvpx-1.2.0_pre20130625[${MULTILIB_USEDEP}] )
X? ( >=x11-libs/libxcb-1.9.1[${MULTILIB_USEDEP}] )
zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
"
DEPEND="${RDEPEND}
>=sys-devel/make-3.81
doc? ( app-text/texi2html )
ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
cpu_flags_x86_mmx? ( dev-lang/yasm )
rtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
ssl? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
test? ( sys-devel/bc )
truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
v4l? ( sys-kernel/linux-headers )
"
RDEPEND="${RDEPEND}
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
# faac can't be binary distributed
# openssl support marked as nonfree
# faac and aac are concurent implementations
# amr and aac require at least lgpl3
# x264 requires gpl2
REQUIRED_USE="
rtmp? ( network )
amr? ( gpl ) aac? ( gpl ) x264? ( gpl ) cdio? ( gpl ) x265? ( gpl )
test? ( encode zlib )
fontconfig? ( truetype )
"
RESTRICT="faac? ( bindist ) fdk? ( bindist ) openssl? ( bindist ) nvidia? ( bindist )"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/libavutil/avconfig.h
)
src_unpack() {
[[ ${PV} == *9999 ]] && git-r3_src_unpack
# 9999 does not have fate-*.tar.xz
[[ ${PV%9999} != "" ]] && default_src_unpack
}
src_prepare() {
epatch_user
epatch "${DISTDIR}/0001-xcb-Add-all-the-libraries-to-the-link-line-explicitl.patch"
# if we have snapshot then we need to hardcode the version
if [[ ${PV%_p*} != ${PV} ]]; then
sed -i -e "s/UNKNOWN/DATE-${PV#*_pre}/" "${S}/version.sh" || die
fi
TOOLS=( aviocat graph2dot ismindex pktdumper qt-faststart trasher )
use zlib && TOOLS+=( cws2fws )
MAKEOPTS+=" V=1"
}
multilib_src_configure() {
local myconf=( ${EXTRA_LIBAV_CONF} )
local uses i
# 9999 does not have fate-*.tar.xz
[[ ${PV%9999} != "" ]] && use test && myconf+=( --samples="${WORKDIR}/fate" )
myconf+=(
$(use_enable gpl)
$(use_enable gpl version3)
--enable-avfilter
)
# enabled by default
uses="debug doc network zlib"
for i in ${uses}; do
use ${i} || myconf+=( --disable-${i} )
done
use bzip2 || myconf+=( --disable-bzlib )
use sdl || myconf+=( --disable-avplay )
if use ssl; then
use openssl && myconf+=( --enable-openssl --enable-nonfree ) \
|| myconf+=( --enable-gnutls )
fi
use custom-cflags && myconf+=( --disable-optimizations )
use cpudetection && myconf+=( --enable-runtime-cpudetect )
use vdpau || myconf+=( --disable-vdpau )
use vaapi && myconf+=( --enable-vaapi )
NVIDIA_INCLUDES="-I/opt/nvidia-video-codec/include -I/opt/cuda/include"
NVIDIA_LIBS="-L/opt/cuda/lib64"
use nvidia && myconf+=( --enable-nonfree --enable-cuda --enable-libnpp
--extra-cflags="$NVIDIA_INCLUDES" --extra-ldflags="$NVIDIA_LIBS" )
# Encoders
if use encode; then
use faac && myconf+=( --enable-nonfree )
use mp3 && myconf+=( --enable-libmp3lame )
use amr && myconf+=( --enable-libvo-amrwbenc )
use aac && myconf+=( --enable-libvo-aacenc )
use nvidia && myconf+=( --enable-nvenc )
uses="faac theora twolame vorbis wavpack webp x264 x265 xvid"
for i in ${uses}; do
use ${i} && myconf+=( --enable-lib${i} )
done
else
myconf+=( --disable-encoders )
fi
# libavdevice options
use cdio && myconf+=( --enable-libcdio )
use ieee1394 && myconf+=( --enable-libdc1394 )
use pulseaudio && myconf+=( --enable-libpulse )
# Indevs
# v4l1 is gone since linux-headers-2.6.38
myconf+=( --disable-indev=v4l )
use v4l || myconf+=( --disable-indev=v4l2 )
for i in alsa oss jack; do
use ${i} || myconf+=( --disable-indev=${i} )
done
use X && myconf+=( --enable-libxcb )
# Outdevs
for i in alsa oss ; do
use ${i} || myconf+=( --disable-outdev=${i} )
done
# libavfilter options
use bs2b && myconf+=( --enable-libbs2b )
multilib_is_native_abi && use frei0r && myconf+=( --enable-frei0r )
use truetype && myconf+=( --enable-libfreetype )
use fontconfig && myconf+=( --enable-libfontconfig )
# Threads; we only support pthread for now
use threads && myconf+=( --enable-pthreads )
# Decoders
use amr && myconf+=( --enable-libopencore-amrwb --enable-libopencore-amrnb )
use fdk && myconf+=( --enable-nonfree --enable-libfdk-aac )
uses="gsm opus rtmp schroedinger speex vpx"
for i in ${uses}; do
use ${i} && myconf+=( --enable-lib${i} )
done
use jpeg2k && myconf+=( --enable-libopenjpeg )
# CPU features
for i in ${CPU_FEATURES}; do
use ${i%:*} || myconf+=( --disable-${i#*:} )
done
# pass the right -mfpu as extra
use neon && append-cflags -mfpu=neon
# disable mmx accelerated code if PIC is required
# as the provided asm decidedly is not PIC for x86.
if use pic && [[ ${ABI} == x86 ]]; then
myconf+=( --disable-mmx --disable-mmxext )
fi
# Option to force building pic
use pic && myconf+=( --enable-pic )
# cross compile support
if tc-is-cross-compiler ; then
myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
case ${CHOST} in
*freebsd*)
myconf+=( --target-os=freebsd )
;;
mingw32*)
myconf+=( --target-os=mingw32 )
;;
*linux*)
myconf+=( --target-os=linux )
;;
esac
fi
# Misc stuff
use hardcoded-tables && myconf+=( --enable-hardcoded-tables )
# Forcing arm would make the compiler break left and right
if [[ ${ABI} == arm ]]; then
filter-flags -marm
fi
# Specific workarounds for too-few-registers arch...
if [[ ${ABI} == x86 ]]; then
local CFLAGS=${CFLAGS} CXXFLAGS=${CXXFLAGS}
filter-flags -fforce-addr -momit-leaf-frame-pointer
append-flags -fomit-frame-pointer
is-flag -O? || append-flags -O2
if use debug; then
# no need to warn about debug if not using debug flag
ewarn ""
ewarn "Debug information will be almost useless as the frame pointer is omitted."
ewarn "This makes debugging harder, so crashes that has no fixed behavior are"
ewarn "difficult to fix. Please have that in mind."
ewarn ""
fi
fi
set -- "${S}"/configure \
--prefix="${EPREFIX}"/usr \
--libdir="${EPREFIX}"/usr/$(get_libdir) \
--shlibdir="${EPREFIX}"/usr/$(get_libdir) \
--mandir="${EPREFIX}"/usr/share/man \
--enable-shared \
--cc="$(tc-getCC)" \
--ar="$(tc-getAR)" \
--optflags="${CFLAGS}" \
--extra-cflags="${CFLAGS}" \
$(use_enable static-libs static) \
"${myconf[@]}"
echo "${@}"
"${@}" || die
}
multilib_src_compile() {
emake
if use tools; then
tc-export CC
emake ${TOOLS[@]/#/tools/}
fi
}
multilib_src_install() {
emake DESTDIR="${D}" install install-man
use doc && dodoc doc/*.html
if use tools; then
dobin ${TOOLS[@]/#/tools/}
fi
}
multilib_src_install_all() {
dodoc Changelog README.md INSTALL
}
multilib_src_test() {
local _libs="$(for i in lib*/;do echo -n "${BUILD_DIR}/${i%/}:";done)"
einfo "LD_LIBRARY_PATH is set to \"${_libs}\""
LD_LIBRARY_PATH="${_libs}" make -j1 fate V=1
}