Files
jellyfin-ffmpeg/build
T
2023-10-16 19:46:27 +08:00

119 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env bash
usage() {
echo -e "Build Jellyfin FFMPEG deb packages"
echo -e " $0 <release> <arch>"
echo -e "Releases: Arches:"
echo -e " * buster * amd64"
echo -e " * bullseye * armhf"
echo -e " * bookworm * arm64"
echo -e " * focal"
echo -e " * jammy"
echo -e " * lunar"
echo -e " * mantic"
}
if [[ -z ${1} ]]; then
usage
exit 1
fi
cli_release="${1}"
case ${cli_release} in
'buster')
release="debian:buster"
gcc_version="8"
llvm_version="13"
;;
'bullseye')
release="debian:bullseye"
gcc_version="10"
llvm_version="13"
;;
'bookworm')
release="debian:bookworm"
gcc_version="12"
llvm_version="15"
;;
'focal')
release="ubuntu:focal"
gcc_version="9"
llvm_version="12"
;;
'jammy')
release="ubuntu:jammy"
gcc_version="11"
llvm_version="15"
;;
'lunar')
release="ubuntu:lunar"
gcc_version="12"
llvm_version="15"
;;
'mantic')
release="ubuntu:mantic"
gcc_version="13"
llvm_version="17"
;;
*)
echo "Invalid release."
usage
exit 1
;;
esac
cli_arch="${2}"
case ${cli_arch} in
'amd64')
arch="amd64"
;;
'armhf')
arch="armhf"
;;
'arm64')
arch="arm64"
;;
*)
echo "Invalid architecture."
usage
exit 1
;;
esac
set -o xtrace
set -o errexit
# Check for dependencies
for dep in docker make mmv; do
command -v ${dep} &>/dev/null || { echo "The command '${dep}' is required."; exit 1; }
done
image_name="jellyfin-ffmpeg-build-${cli_release}"
package_temporary_dir="$( mktemp -d )"
current_user="$( whoami )"
# Trap cleanup for latter sections
cleanup() {
# Clean up the Dockerfile
make -f Dockerfile.make clean
# Remove tempdir
rm -rf "${package_temporary_dir}"
}
trap cleanup EXIT INT
# Generate Dockerfile
make -f Dockerfile.make DISTRO=${release} GCC_VER=${gcc_version} LLVM_VER=${llvm_version} ARCH=${arch}
# Set up the build environment docker image
docker build . -t "${image_name}"
# Build the APKs and copy out to ${package_temporary_dir}
docker run --rm -e "RELEASE=${release}" -v "${package_temporary_dir}:/dist" "${image_name}"
# If no 3rd parameter was specified, move APKs to parent directory
if [[ -z ${3} ]]; then
path="../bin"
else
path="${3}"
fi
mkdir ${path} &>/dev/null || true
mmv "${package_temporary_dir}/deb/*.deb" "${path}/#1.deb"
mmv "${package_temporary_dir}/deb/*_${arch}.*" "${path}/#1-${cli_release}_${arch}.#2"