mirror of
https://github.com/jellyfin/jellyfin-ffmpeg.git
synced 2024-11-23 13:59:45 +00:00
112 lines
2.5 KiB
Bash
Executable File
112 lines
2.5 KiB
Bash
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 " * bullseye * amd64"
|
|
echo -e " * bookworm * armhf"
|
|
echo -e " * focal * arm64"
|
|
echo -e " * jammy"
|
|
echo -e " * noble"
|
|
}
|
|
|
|
if [[ -z ${1} ]]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
cli_release="${1}"
|
|
case ${cli_release} in
|
|
'bullseye')
|
|
release="debian:bullseye"
|
|
gcc_version="10"
|
|
llvm_version="16"
|
|
;;
|
|
'bookworm')
|
|
release="debian:bookworm"
|
|
gcc_version="12"
|
|
llvm_version="16"
|
|
;;
|
|
'focal')
|
|
release="ubuntu:focal"
|
|
gcc_version="9"
|
|
llvm_version="12"
|
|
;;
|
|
'jammy')
|
|
release="ubuntu:jammy"
|
|
gcc_version="11"
|
|
llvm_version="15"
|
|
;;
|
|
'noble')
|
|
release="ubuntu:noble"
|
|
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
|
|
if ! command -v "docker" &>/dev/null && command -v "podman" &>/dev/null; then
|
|
container_cmd=podman
|
|
else
|
|
container_cmd=docker
|
|
fi
|
|
|
|
for dep in ${container_cmd} 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 )"
|
|
|
|
# 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
|
|
${container_cmd} build . -t "${image_name}"
|
|
# Build the APKs and copy out to ${package_temporary_dir}
|
|
${container_cmd} 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"
|