mirror of
https://github.com/jellyfin/jellyfin-ffmpeg.git
synced 2026-09-03 05:09:58 +03:00
132 lines
2.8 KiB
Python
Executable File
132 lines
2.8 KiB
Python
Executable File
#!/usr/bin/env bash
|
|
|
|
usage() {
|
|
echo -e "Build Jellyfin FFMPEG packages"
|
|
echo -e " $0 <release> <arch>"
|
|
echo -e "Releases: Arches:"
|
|
echo -e " * stretch * amd64"
|
|
echo -e " * buster * armhf"
|
|
echo -e " * bullseye * arm64"
|
|
echo -e " * xenial"
|
|
echo -e " * bionic"
|
|
echo -e " * cosmic"
|
|
echo -e " * disco"
|
|
echo -e " * eoan"
|
|
echo -e " * focal"
|
|
echo -e " * groovy"
|
|
echo -e " * hirsute"
|
|
}
|
|
|
|
if [[ -z ${1} ]]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
cli_release="${1}"
|
|
case ${cli_release} in
|
|
'stretch')
|
|
release="debian:stretch"
|
|
gcc_version="6"
|
|
;;
|
|
'buster')
|
|
release="debian:buster"
|
|
gcc_version="8"
|
|
;;
|
|
'bullseye')
|
|
release="debian:bullseye"
|
|
gcc_version="9"
|
|
;;
|
|
'xenial')
|
|
release="ubuntu:xenial"
|
|
gcc_version="5"
|
|
;;
|
|
'bionic')
|
|
release="ubuntu:bionic"
|
|
gcc_version="7"
|
|
;;
|
|
'cosmic')
|
|
release="ubuntu:cosmic"
|
|
gcc_version="7"
|
|
;;
|
|
'disco')
|
|
release="ubuntu:disco"
|
|
gcc_version="7"
|
|
;;
|
|
'eoan')
|
|
release="ubuntu:eoan"
|
|
gcc_version="7"
|
|
;;
|
|
'focal')
|
|
release="ubuntu:focal"
|
|
gcc_version="9"
|
|
;;
|
|
'groovy')
|
|
release="ubuntu:groovy"
|
|
gcc_version="10"
|
|
;;
|
|
'hirsute')
|
|
release="ubuntu:hirsute"
|
|
gcc_version="10"
|
|
;;
|
|
*)
|
|
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} 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"
|