0
0
mirror of https://github.com/termux/termux-packages.git synced 2025-07-17 09:24:44 +00:00
Files
Termux Github Actions f9ffc5518e bump(x11/audacity): 3.7.4
This commit has been automatically submitted by Github Actions.
2025-06-10 18:26:04 +00:00

204 lines
6.6 KiB
Bash

TERMUX_PKG_HOMEPAGE=https://www.audacityteam.org/
TERMUX_PKG_DESCRIPTION="An easy-to-use, multi-track audio editor and recorder"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="3.7.4"
_FFMPEG_VERSION=7.1.1
TERMUX_PKG_SRCURL=(https://github.com/audacity/audacity/archive/Audacity-${TERMUX_PKG_VERSION}.tar.gz
https://www.ffmpeg.org/releases/ffmpeg-${_FFMPEG_VERSION}.tar.xz)
TERMUX_PKG_SHA256=(
76d0867bb852bbaa3dff834804b0abf8208a763461187f0ae2a0d5a3ddf31df7
733984395e0dbbe5c046abda2dc49a5544e7e0e1e2366bba849222ae9e3a03b1
)
TERMUX_PKG_DEPENDS="gdk-pixbuf, glib, gtk3, libc++, libexpat, libflac, libid3tag, libogg, libopus, libsndfile, libsoundtouch, libsoxr, libuuid, libvorbis, libwavpack, mpg123, opusfile, portaudio, portmidi, wxwidgets"
TERMUX_PKG_BUILD_DEPENDS="libjpeg-turbo, libjpeg-turbo-static, libmp3lame, libpng, rapidjson, zlib"
# Support for FFmpeg 5.0 is not backported:
# https://github.com/audacity/audacity/issues/2445
TERMUX_PKG_SUGGESTS="audacity-ffmpeg"
TERMUX_PKG_HOSTBUILD=true
TERMUX_PKG_UPDATE_VERSION_REGEXP="\d+.\d+.\d+"
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-DCMAKE_STRIP=llvm-strip
-Daudacity_conan_enabled=off
-Daudacity_has_vst3=no
-Daudacity_has_tests=no
-Daudacity_has_networking=no
-Daudacity_has_crashreports=no
-Daudacity_has_sentry_reporting=no
-Daudacity_has_updates_check=no
-Daudacity_use_wxwidgets=system
-Daudacity_use_expat=system
-Daudacity_use_lame=system
-Daudacity_use_soxr=system
-Daudacity_use_portaudio=system
-Daudacity_use_ffmpeg=loaded
-Daudacity_use_nyquist=local
-Daudacity_use_vamp=off
-Daudacity_use_lv2=off
-Daudacity_use_midi=system
-Daudacity_use_portmixer=local
-Daudacity_use_portsmf=local
-Daudacity_use_sbsms=off
-Daudacity_use_soundtouch=system
-Daudacity_use_twolame=off
-DUSE_MIDI=OFF
"
TERMUX_PKG_RM_AFTER_INSTALL="
opt/audacity/include
opt/audacity/lib/pkgconfig
opt/audacity/share
"
# Function to obtain the .deb URL
obtain_deb_url() {
local url="https://packages.ubuntu.com/noble/amd64/$1/download"
local retries=5
local wait=5
local attempt
local deb_url
for ((attempt=1; attempt<=retries; attempt++)); do
local PAGE="$(curl -s "$url")"
>&2 echo page
>&2 echo "$PAGE"
if deb_url=$(echo "$PAGE" | grep -Eo 'http://.*\.deb' | head -n 1); then
if [[ -n "$deb_url" ]]; then
echo "$deb_url"
return 0
else
# deb_url is empty or server answered with `internal server error`, retry
>&2 echo "Attempt $attempt: Received empty URL or server answered with `Internal server error` page. Retrying in $wait seconds..."
fi
else
# The command failed, retry
>&2 echo "Attempt $attempt: Command failed. Retrying in $wait seconds..."
fi
sleep "$wait"
done
# Failed after retries, output error to stderr and exit with code 1
>&2 echo "Failed to obtain URL after $retries attempts."
exit 1
}
termux_step_host_build() {
termux_setup_cmake
termux_setup_ninja
( # Running build in a subshell to avoid variable mess
# We must build the `image-compiler` for building.
# See https://github.com/audacity/audacity/blob/Audacity-3.6.4/BUILDING.md#selecting-target-architecture-on-macos
_PREFIX="$TERMUX_PKG_HOSTBUILD_DIR/prefix"
# Building both gtk2.0 and alsa only for building host-side tool seems to be excessive.
# Let's download them from ubuntu repos.
# To avoid messing with `apt update` and `apt download` we will get download links directly from ubuntu servers.
mkdir "$_PREFIX"
for i in libgtk2.0-0t64 libgtk2.0-dev libasound2-dev; do
wget "$(obtain_deb_url $i)" -O "$TERMUX_PKG_HOSTBUILD_DIR/tmp.deb"
dpkg-deb -R "$TERMUX_PKG_HOSTBUILD_DIR/tmp.deb" "$TERMUX_PKG_HOSTBUILD_DIR/tmp"
cp -rf "$TERMUX_PKG_HOSTBUILD_DIR"/tmp/* "$_PREFIX"
rm -rf "$TERMUX_PKG_HOSTBUILD_DIR/tmp.deb" "$TERMUX_PKG_HOSTBUILD_DIR/tmp"
unset _URL
done
for i in "$_PREFIX"/usr/lib/x86_64-linux-gnu/pkgconfig/*.pc; do
# patch pkg-config files to match new prefix
sed -i '/^prefix=/c\prefix='"$_PREFIX/usr" "$i"
done
# Also we should import pkg-config configuration files from the packages we imported from ubuntu repos
export PKG_CONFIG_LIBDIR="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig"
PKG_CONFIG_LIBDIR+=":$_PREFIX/usr/lib/x86_64-linux-gnu/pkgconfig"
export CFLAGS="-I$_PREFIX/usr/include"
export LDFLAGS="-Wl,-rpath,$_PREFIX/usr/lib/x86_64-linux-gnu"
cmake -GNinja -B "$TERMUX_PKG_HOSTBUILD_DIR" -S "$TERMUX_PKG_SRCDIR" -DCMAKE_BUILD_TYPE=Release
ninja -C "$TERMUX_PKG_HOSTBUILD_DIR" image-compiler
)
}
termux_step_pre_configure() {
local _FFMPEG_PREFIX=${TERMUX_PREFIX}/opt/${TERMUX_PKG_NAME}
LDFLAGS="-Wl,-rpath=${_FFMPEG_PREFIX}/lib ${LDFLAGS}"
local _ARCH
case ${TERMUX_ARCH} in
arm ) _ARCH=armeabi-v7a ;;
i686 ) _ARCH=x86 ;;
* ) _ARCH=$TERMUX_ARCH ;;
esac
mkdir -p _ffmpeg-${_FFMPEG_VERSION}
pushd _ffmpeg-${_FFMPEG_VERSION}
$TERMUX_PKG_SRCDIR/ffmpeg-${_FFMPEG_VERSION}/configure \
--prefix=${_FFMPEG_PREFIX} \
--cc=${CC} \
--pkg-config=false \
--arch=${_ARCH} \
--cross-prefix=llvm- \
--enable-cross-compile \
--target-os=android \
--disable-version3 \
--disable-static \
--enable-shared \
--disable-all \
--disable-autodetect \
--disable-doc \
--enable-avcodec \
--enable-avformat \
--disable-asm
make -j ${TERMUX_PKG_MAKE_PROCESSES}
make install
popd
local lib
for lib in libavcodec libavformat libavutil; do
local pc=${TERMUX_PREFIX}/lib/pkgconfig/${lib}.pc
if [ -e ${pc} ]; then
mv ${pc}{,.tmp}
fi
done
export PKG_CONFIG_PATH=${_FFMPEG_PREFIX}/lib/pkgconfig
CPPFLAGS="-I${_FFMPEG_PREFIX}/include ${CPPFLAGS}"
CPPFLAGS+=" -Dushort=u_short -Dulong=u_long"
CXXFLAGS+=" -std=c++17"
# Adding `image-compiler` we built in host_build step
export PATH="$TERMUX_PKG_HOSTBUILD_DIR/Release/bin:$PATH"
LDFLAGS+=" -Wl,-rpath=$TERMUX_PREFIX/lib/audacity"
# For some reason `image-compiler` fails to find it's libraries in our custom prefix, let's help it.
export LD_LIBRARY_PATH="$TERMUX_PKG_HOSTBUILD_DIR/prefix/usr/lib/x86_64-linux-gnu"
}
termux_step_post_make_install() {
unset PKG_CONFIG_PATH
local lib
for lib in libavcodec libavformat libavutil; do
local pc=${TERMUX_PREFIX}/lib/pkgconfig/${lib}.pc
if [ -e ${pc}.tmp ] && [ ! -e ${pc} ]; then
mv ${pc}{.tmp,}
fi
done
local _FFMPEG_DOCDIR=$TERMUX_PREFIX/share/doc/audacity-ffmpeg
mkdir -p ${_FFMPEG_DOCDIR}
ln -sfr ${TERMUX_PREFIX}/share/LICENSES/LGPL-2.1.txt \
${_FFMPEG_DOCDIR}/LICENSE
}
termux_step_post_massage() {
rm -rf lib/pkgconfig
}
termux_step_create_debscripts() {
cat <<-EOF > ./postinst
#!$TERMUX_PREFIX/bin/sh
echo
echo "********"
echo "Audacity can not use microphone until you grant microphone access to Termux:API."
echo "********"
echo
EOF
}