mirror of
https://github.com/termux-pacman/termux-packages.git
synced 2026-01-06 10:53:21 +00:00
- The SOVERSION guard did not fail, so I believe that means recompiling reverse dependencies is not required (except for mpv) - All of the Debian patches have been upstreamed and are present as commits in the release except for the 15th one, which we do not really need but it was there as a result of `sync-debian-patches.sh`. I guess that `sync-debian-patches.sh` will become useful again when Debian begins making more patches and putting them into their Salsa (Debian GitLab) repository. - `audacity-ffmpeg` also bumped - revbump `mpv` and `mpv-x`: https://github.com/termux/termux-packages/pull/23628#issuecomment-2704881480
143 lines
4.5 KiB
Bash
143 lines
4.5 KiB
Bash
TERMUX_PKG_HOMEPAGE=https://ffmpeg.org
|
|
TERMUX_PKG_DESCRIPTION="Tools and libraries to manipulate a wide range of multimedia formats and protocols"
|
|
TERMUX_PKG_LICENSE="GPL-3.0"
|
|
TERMUX_PKG_MAINTAINER="@termux"
|
|
# Please align version with `ffplay` package.
|
|
TERMUX_PKG_VERSION="7.1.1"
|
|
TERMUX_PKG_SRCURL=https://www.ffmpeg.org/releases/ffmpeg-${TERMUX_PKG_VERSION}.tar.xz
|
|
TERMUX_PKG_SHA256=733984395e0dbbe5c046abda2dc49a5544e7e0e1e2366bba849222ae9e3a03b1
|
|
TERMUX_PKG_DEPENDS="fontconfig, freetype, fribidi, game-music-emu, harfbuzz, libaom, libandroid-glob, libass, libbluray, libbz2, libdav1d, libgnutls, libiconv, liblzma, libmp3lame, libopencore-amr, libopenmpt, libopus, librav1e, libsoxr, libsrt, libssh, libtheora, libv4l, libvidstab, libvmaf, libvo-amrwbenc, libvorbis, libvpx, libwebp, libx264, libx265, libxml2, libzimg, littlecms, ocl-icd, rubberband, svt-av1, xvidcore, zlib"
|
|
TERMUX_PKG_BUILD_DEPENDS="opencl-headers"
|
|
TERMUX_PKG_CONFLICTS="libav"
|
|
TERMUX_PKG_BREAKS="ffmpeg-dev"
|
|
TERMUX_PKG_REPLACES="ffmpeg-dev"
|
|
|
|
termux_step_pre_configure() {
|
|
# Do not forget to bump revision of reverse dependencies and rebuild them
|
|
# after SOVERSION is changed. (These variables are also used afterwards.)
|
|
_FFMPEG_SOVER_avutil=59
|
|
_FFMPEG_SOVER_avcodec=61
|
|
_FFMPEG_SOVER_avformat=61
|
|
|
|
local f
|
|
for f in util codec format; do
|
|
local v=$(sh ffbuild/libversion.sh av${f} \
|
|
libav${f}/version.h libav${f}/version_major.h \
|
|
| sed -En 's/^libav'"${f}"'_VERSION_MAJOR=([0-9]+)$/\1/p')
|
|
if [ ! "${v}" ] || [ "$(eval echo \$_FFMPEG_SOVER_av${f})" != "${v}" ]; then
|
|
termux_error_exit "SOVERSION guard check failed for libav${f}.so. expected ${v}"
|
|
fi
|
|
done
|
|
}
|
|
|
|
termux_step_configure() {
|
|
cd $TERMUX_PKG_BUILDDIR
|
|
|
|
local _EXTRA_CONFIGURE_FLAGS=""
|
|
if [ $TERMUX_ARCH = "arm" ]; then
|
|
_ARCH="armeabi-v7a"
|
|
_EXTRA_CONFIGURE_FLAGS="--enable-neon"
|
|
elif [ $TERMUX_ARCH = "i686" ]; then
|
|
_ARCH="x86"
|
|
# Specify --disable-asm to prevent text relocations on i686,
|
|
# see https://trac.ffmpeg.org/ticket/4928
|
|
_EXTRA_CONFIGURE_FLAGS="--disable-asm"
|
|
elif [ $TERMUX_ARCH = "x86_64" ]; then
|
|
_ARCH="x86_64"
|
|
elif [ $TERMUX_ARCH = "aarch64" ]; then
|
|
_ARCH=$TERMUX_ARCH
|
|
_EXTRA_CONFIGURE_FLAGS="--enable-neon"
|
|
else
|
|
termux_error_exit "Unsupported arch: $TERMUX_ARCH"
|
|
fi
|
|
|
|
$TERMUX_PKG_SRCDIR/configure \
|
|
--arch="${_ARCH}" \
|
|
--as="$AS" \
|
|
--cc="$CC" \
|
|
--cxx="$CXX" \
|
|
--nm="$NM" \
|
|
--ar="$AR" \
|
|
--ranlib="llvm-ranlib" \
|
|
--pkg-config="$PKG_CONFIG" \
|
|
--strip="$STRIP" \
|
|
--cross-prefix="${TERMUX_HOST_PLATFORM}-" \
|
|
--disable-indevs \
|
|
--disable-outdevs \
|
|
--enable-indev=lavfi \
|
|
--disable-static \
|
|
--disable-symver \
|
|
--enable-cross-compile \
|
|
--enable-gnutls \
|
|
--enable-gpl \
|
|
--enable-version3 \
|
|
--enable-jni \
|
|
--enable-lcms2 \
|
|
--enable-libaom \
|
|
--enable-libass \
|
|
--enable-libbluray \
|
|
--enable-libdav1d \
|
|
--enable-libfontconfig \
|
|
--enable-libfreetype \
|
|
--enable-libfribidi \
|
|
--enable-libgme \
|
|
--enable-libharfbuzz \
|
|
--enable-libmp3lame \
|
|
--enable-libopencore-amrnb \
|
|
--enable-libopencore-amrwb \
|
|
--enable-libopenmpt \
|
|
--enable-libopus \
|
|
--enable-librav1e \
|
|
--enable-librubberband \
|
|
--enable-libsoxr \
|
|
--enable-libsrt \
|
|
--enable-libssh \
|
|
--enable-libsvtav1 \
|
|
--enable-libtheora \
|
|
--enable-libv4l2 \
|
|
--enable-libvidstab \
|
|
--enable-libvmaf \
|
|
--enable-libvo-amrwbenc \
|
|
--enable-libvorbis \
|
|
--enable-libvpx \
|
|
--enable-libwebp \
|
|
--enable-libx264 \
|
|
--enable-libx265 \
|
|
--enable-libxml2 \
|
|
--enable-libxvid \
|
|
--enable-libzimg \
|
|
--enable-mediacodec \
|
|
--enable-opencl \
|
|
--enable-shared \
|
|
--prefix="$TERMUX_PREFIX" \
|
|
--target-os=android \
|
|
--extra-libs="-landroid-glob" \
|
|
--disable-vulkan \
|
|
$_EXTRA_CONFIGURE_FLAGS \
|
|
--disable-libfdk-aac
|
|
# GPLed FFmpeg binaries linked against fdk-aac are not redistributable.
|
|
}
|
|
|
|
termux_step_post_massage() {
|
|
cd ${TERMUX_PKG_MASSAGEDIR}/${TERMUX_PREFIX}/lib || exit 1
|
|
local f
|
|
for f in util codec format; do
|
|
local s=$(eval echo \$_FFMPEG_SOVER_av${f})
|
|
if [ ! "${s}" ]; then
|
|
termux_error_exit "Empty SOVERSION for libav${f}."
|
|
fi
|
|
# SOVERSION suffix is expected by some programs, e.g. Firefox.
|
|
if [ ! -e "./libav${f}.so.${s}" ]; then
|
|
ln -sf libav${f}.so libav${f}.so.${s}
|
|
fi
|
|
done
|
|
}
|
|
|
|
termux_step_create_debscripts() {
|
|
# See: https://github.com/termux/termux-packages/issues/23189#issuecomment-2663464359
|
|
# See also: https://github.com/termux/termux-packages/wiki/Termux-execution-environment#dynamic-library-linking-errors
|
|
sed -e "s|@TERMUX_PREFIX@|$TERMUX_PREFIX|g" \
|
|
"$TERMUX_PKG_BUILDER_DIR/postinst.sh.in" > ./postinst
|
|
chmod +x ./postinst
|
|
}
|