new blfs: media-video/ffmpeg-7.1.3
This commit is contained in:
326
media-video/ffmpeg-7.1.3.PKGBUILD
Normal file
326
media-video/ffmpeg-7.1.3.PKGBUILD
Normal file
@@ -0,0 +1,326 @@
|
|||||||
|
pkgname=ffmpeg
|
||||||
|
pkgver=7.1.3
|
||||||
|
_ver=${pkgver%.*}
|
||||||
|
pkgdesc='Complete solution to record, convert and stream audio and video'
|
||||||
|
arch=(x86_64)
|
||||||
|
homepage=https://ffmpeg.org
|
||||||
|
license=(GPL-3.0-only)
|
||||||
|
depends=(
|
||||||
|
bzip2
|
||||||
|
dav1d
|
||||||
|
fontconfig
|
||||||
|
freetype
|
||||||
|
glibc
|
||||||
|
harfbuzz
|
||||||
|
libass
|
||||||
|
libdrm
|
||||||
|
libgl
|
||||||
|
libpulse
|
||||||
|
libraw1394
|
||||||
|
libva
|
||||||
|
libwebp
|
||||||
|
libxml2
|
||||||
|
opus
|
||||||
|
x264
|
||||||
|
x265
|
||||||
|
xz
|
||||||
|
zlib
|
||||||
|
)
|
||||||
|
makedepends=(
|
||||||
|
mesa
|
||||||
|
nasm
|
||||||
|
vulkan-headers
|
||||||
|
)
|
||||||
|
sources=("${pkgname}-${pkgver}.tar.xz"
|
||||||
|
"${pkgname}-${_ver}-patchset-2.tar.xz" #from gentoo
|
||||||
|
)
|
||||||
|
urls=("https://ffmpeg.org/releases/ffmpeg-${pkgver}.tar.xz"
|
||||||
|
"https://dev.gentoo.org/~ionen/distfiles/${sources[1]}"
|
||||||
|
)
|
||||||
|
sha512sums=("1231cb6fe8305e040565d9c2a05228af6e90ded88b8548b24b1e7c46964ea25e43db44eb2b677837c0d68bc4e2a10ea5db101c2d2a24d2e3132cd20d599b0da0"
|
||||||
|
"bde2e07e2284f9c59bfc3dd448d46f34e14e3983d01baac6b89efac1093dd804318c4770cebe16d84830b34325dcd0aa88cf56136b3529bd36651bb32d73632b"
|
||||||
|
)
|
||||||
|
|
||||||
|
USE="bzip2 dav1d drm fontconfig gpl libass openssl opus postproc pulseaudio truetype vaapi vulkan webp x264 x265 xml zlib"
|
||||||
|
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
|
||||||
|
amf
|
||||||
|
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
|
||||||
|
dvd:libdvdnav,libdvdread
|
||||||
|
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
|
||||||
|
jpegxl:libjxl
|
||||||
|
kvazaar:libkvazaar
|
||||||
|
ladspa
|
||||||
|
lame:libmp3lame
|
||||||
|
lcms:lcms2
|
||||||
|
libaom
|
||||||
|
libaribb24:@v3 # reminder: req use on gpl unneeded if >=1.0.4 (not in tree)
|
||||||
|
+libass
|
||||||
|
libcaca
|
||||||
|
libilbc
|
||||||
|
liblc3
|
||||||
|
libplacebo
|
||||||
|
librtmp:librtmp
|
||||||
|
libsoxr
|
||||||
|
lv2
|
||||||
|
lzma
|
||||||
|
modplug:libmodplug
|
||||||
|
nvenc:cuvid,ffnvcodec,nvdec,nvenc
|
||||||
|
ocr:libtesseract
|
||||||
|
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
|
||||||
|
qrcode:libqrencode
|
||||||
|
qsv:libvpl
|
||||||
|
quirc:libquirc
|
||||||
|
rabbitmq:^librabbitmq # no multilib
|
||||||
|
rav1e:^librav1e # no multilib
|
||||||
|
rubberband:librubberband
|
||||||
|
samba:libsmbclient@v3 # GPL-3+ only
|
||||||
|
sdl:sdl2
|
||||||
|
shaderc:libshaderc
|
||||||
|
snappy:libsnappy
|
||||||
|
sndio
|
||||||
|
speex:libspeex
|
||||||
|
srt:libsrt
|
||||||
|
ssh:libssh
|
||||||
|
svg:librsvg
|
||||||
|
svt-av1:libsvtav1
|
||||||
|
theora:libtheora
|
||||||
|
+truetype:libfreetype,libharfbuzz
|
||||||
|
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
|
||||||
|
)
|
||||||
|
use() {
|
||||||
|
local f=" $1 "
|
||||||
|
[[ " ${USE} " == *"${f}"* ]]
|
||||||
|
}
|
||||||
|
use_enable() {
|
||||||
|
local flag="$1" opt="${2:-$1}"
|
||||||
|
if use "${flag}"; then
|
||||||
|
printf -- '--enable-%s' "${opt}"
|
||||||
|
else
|
||||||
|
printf -- '--disable-%s' "${opt}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
multilib_native_use_enable() {
|
||||||
|
local flag="$1" opt="${2:-$1}"
|
||||||
|
use_enable "${flag}" "${opt}"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
tar -xf ${distdir}/${sources[0]} --strip-components=1
|
||||||
|
tar -xf ${distdir}/${sources[1]}
|
||||||
|
for _patch in patches/*; do
|
||||||
|
patch -p1 -i ${_patch}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
ffmpeg_build_optmap() {
|
||||||
|
local -n _map_ref="$1" # nameref: FFMPEG_IUSE_MAP
|
||||||
|
local -n _out_ref="$2" # nameref: 输出数组 conf_opts
|
||||||
|
|
||||||
|
local v flag_raw flag license opt mod
|
||||||
|
local -A optmap=() licensemap=()
|
||||||
|
|
||||||
|
for v in "${_map_ref[@]}"; do
|
||||||
|
# ebuild: [[ ${v} =~ \+?([^:]+):?([^@]*)@?(.*) ]]
|
||||||
|
# 例:
|
||||||
|
# "+drm:libdrm"
|
||||||
|
# "openssl:openssl,!gnutls@v3ifgpl"
|
||||||
|
# "fdk:libfdk-aac@nonfree"
|
||||||
|
if [[ ! "${v}" =~ ^\+?([^:]+):?([^@]*)@?(.*)$ ]]; then
|
||||||
|
echo "bad map entry: ${v}" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
flag_raw="${BASH_REMATCH[1]}" # 不含前导 +
|
||||||
|
flag="${flag_raw}"
|
||||||
|
opt="${BASH_REMATCH[2]}"
|
||||||
|
license="${BASH_REMATCH[3]}"
|
||||||
|
|
||||||
|
# 省略 opt 列表则默认等于 flag
|
||||||
|
[[ -n "${opt}" ]] || opt="${flag}"
|
||||||
|
|
||||||
|
# 逗号分隔的 opt 列表
|
||||||
|
local optlist="${opt//,/ }"
|
||||||
|
for opt in ${optlist}; do
|
||||||
|
mod="${opt:0:1}"
|
||||||
|
# ebuild: v=${v#[\!\^]}
|
||||||
|
opt="${opt#!}"
|
||||||
|
opt="${opt#^}"
|
||||||
|
|
||||||
|
if [[ "${mod}" == "!" ]]; then
|
||||||
|
# override: 若 flag enabled,则强制 disable 该 opt
|
||||||
|
if use "${flag}"; then
|
||||||
|
optmap["${opt}"]="--disable-${opt}"
|
||||||
|
unset 'licensemap["'"${opt}"'"]' || true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# 若该 opt 尚未被写入,才生成(避免重复/被前面覆盖)
|
||||||
|
if [[ -z "${optmap["${opt}"]+x}" ]]; then
|
||||||
|
if [[ "${mod}" == "^" ]]; then
|
||||||
|
optmap["${opt}"]="$(multilib_native_use_enable "${flag}" "${opt}")"
|
||||||
|
else
|
||||||
|
optmap["${opt}"]="$(use_enable "${flag}" "${opt}")"
|
||||||
|
fi
|
||||||
|
if use "${flag}"; then
|
||||||
|
licensemap["${opt}"]="${license}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# 处理 license 聚合开关(ebuild:for license in "${licensemap[@]}")
|
||||||
|
local lic
|
||||||
|
for lic in "${licensemap[@]}"; do
|
||||||
|
case "${lic}" in
|
||||||
|
v3ifgpl)
|
||||||
|
use gpl || continue
|
||||||
|
;& # fallthrough(bash >=4)
|
||||||
|
v3)
|
||||||
|
optmap["v3"]="--enable-version3"
|
||||||
|
;;
|
||||||
|
nonfree)
|
||||||
|
use gpl && optmap["nonfree"]="--enable-nonfree"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# 输出:把 optmap 的值都塞进 _out_ref(顺序不保证;需要稳定顺序可再排序)
|
||||||
|
local k
|
||||||
|
for k in "${!optmap[@]}"; do
|
||||||
|
_out_ref+=( "${optmap[$k]}" )
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_build() {
|
||||||
|
sed -i '/cflags -fdiagnostics-color/d' configure
|
||||||
|
|
||||||
|
local prefix="/usr"
|
||||||
|
local conf_args=(
|
||||||
|
--prefix="${prefix}"
|
||||||
|
--libdir="${prefix}"/lib
|
||||||
|
--shlibdir="${prefix}"/lib
|
||||||
|
--mandir="${prefix}"/share/man
|
||||||
|
--docdir=/usr/share/doc/${pkgname}-${pkgver}/html
|
||||||
|
|
||||||
|
--disable-stripping
|
||||||
|
--disable-debug
|
||||||
|
--disable-optimizations
|
||||||
|
--optflags=' '
|
||||||
|
|
||||||
|
# basic defaults that should not really need a USE
|
||||||
|
--enable-iconv
|
||||||
|
--enable-pic
|
||||||
|
--enable-shared
|
||||||
|
--disable-static
|
||||||
|
--enable-manpages
|
||||||
|
--disable-podpages
|
||||||
|
--disable-txtpages
|
||||||
|
# disabled primarily due to being unpackaged
|
||||||
|
--disable-decklink
|
||||||
|
--disable-libaribcaption
|
||||||
|
--disable-libdavs2
|
||||||
|
--disable-libklvanc
|
||||||
|
--disable-liblcevc-dec
|
||||||
|
--disable-libmysofa
|
||||||
|
--disable-libopenvino
|
||||||
|
--disable-libshine
|
||||||
|
--disable-libtls
|
||||||
|
--disable-libuavs3d
|
||||||
|
--disable-libvvenc
|
||||||
|
--disable-libxavs
|
||||||
|
--disable-libxavs2
|
||||||
|
--disable-libxevd
|
||||||
|
--disable-libxeve
|
||||||
|
--disable-pocketsphinx
|
||||||
|
--disable-rkmpp
|
||||||
|
--disable-vapoursynth
|
||||||
|
|
||||||
|
# disabled for other or additional reasons
|
||||||
|
--disable-cuda-nvcc # prefer cuda-llvm for less issues
|
||||||
|
--disable-libcelt # obsolete (bug #664158)
|
||||||
|
--disable-libglslang # prefer USE=shaderc (bug #918989,#920283,#922333)
|
||||||
|
--disable-liblensfun # https://trac.ffmpeg.org/ticket/9112 (abandoned?)
|
||||||
|
--disable-libmfx # prefer libvpl for USE=qsv
|
||||||
|
--disable-libnpp # deprecated and not supported for cuda 13.0+
|
||||||
|
--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-libtorch # support may need special attention (bug #936127)
|
||||||
|
--disable-libvmaf # use ffmpeg-8+ instead, needs old vmaf (bug#968554)
|
||||||
|
--disable-mbedtls # messy with slots, tests underlinking issues
|
||||||
|
--disable-mmal # prefer USE=soc
|
||||||
|
--disable-omx # unsupported (bug #653386)
|
||||||
|
--disable-omx-rpi # ^
|
||||||
|
)
|
||||||
|
|
||||||
|
ffmpeg_build_optmap FFMPEG_IUSE_MAP conf_args
|
||||||
|
leaf_info "${conf_args[*]}"
|
||||||
|
|
||||||
|
./configure "${conf_args[@]}"
|
||||||
|
make V=1
|
||||||
|
}
|
||||||
|
|
||||||
|
src_check() {
|
||||||
|
local -x LD_LIBRARY_PATH=$(printf %s: "${srcdir}"/lib*)${LD_LIBRARY_PATH}
|
||||||
|
make V=1 -k fate
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
make DESTDIR="${pkgdir}" install
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim:ft=sh syn=sh et sw=2:
|
||||||
Reference in New Issue
Block a user