-
-
Notifications
You must be signed in to change notification settings - Fork 145
/
Copy pathbuild
executable file
·101 lines (93 loc) · 2.16 KB
/
build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/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 " * xenial * arm64"
echo -e " * bionic"
echo -e " * cosmic"
echo -e " * disco"
echo -e " * eoan"
}
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="7"
;;
'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"
;;
*)
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
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}"
# Move the APKs to the parent directory
mkdir ../bin &>/dev/null || true
mmv "${package_temporary_dir}/deb/*.deb" "../bin/#1.deb"
mmv "${package_temporary_dir}/deb/*_${arch}.*" "../bin/#1-${cli_release}_${arch}.#2"