forked from pdulvp/jellyfin-qnap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfetch-stable.sh
143 lines (123 loc) · 4.55 KB
/
fetch-stable.sh
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/bash
ARCH=amd64
SERVER_VERSION=$(wget https://repo.jellyfin.org/?path=/server/debian/latest-stable/$ARCH -q -O- | grep -o -P "([a-z0-9\-\.~]+)(?=\+deb.*_$ARCH.buildinfo)" | head -n 1)
echo "SERVER_VERSION=$SERVER_VERSION"
WEB_VERSION=$SERVER_VERSION
echo "WEB_VERSION=$WEB_VERSION"
FFMPEG_VERSION=$(wget https://repo.jellyfin.org/?path=/ffmpeg/debian/latest-7.x/$ARCH -q -O- | grep -o -P "([a-z0-9\-\.~]+)(?=-bullseye_$ARCH.buildinfo)" | head -n 1)
#FFMPEG_VERSION="4.4.1-4"
FFMPEG5_VERSION=$(wget https://repo.jellyfin.org/?path=/ffmpeg/debian/latest-5.x/$ARCH -q -O- | grep -o -P "([a-z0-9\-\.~]+)(?=-bullseye_$ARCH.deb)" | head -n 1)
echo "FFMPEG_VERSION=$FFMPEG_VERSION"
echo "FFMPEG5_VERSION=$FFMPEG5_VERSION"
CURRENT_VERSION=$(cat package.json | grep -o -P "(?<=\"version\"\: \")([^\"])+")
CURRENT_SHA=$(cat package.json | grep -o -P "(?<=\"sha\"\: \")([^\"])+")
echo "CURRENT_VERSION=$CURRENT_VERSION"
echo "CURRENT_SHA=$CURRENT_SHA"
PREFIX=""
NEXT_VERSION=$(echo $SERVER_VERSION @ $WEB_VERSION @ $FFMPEG_VERSION @ $FFMPEG5_VERSION | tr ".-" " " | tr "@" "." | tr "~" "-" | sed "s/ //g")
NEXT_SHA=$(echo $NEXT_VERSION | md5sum | cut -d" " -f 1)
echo "NEXT_VERSION=$NEXT_VERSION"
echo "NEXT_SHA=$NEXT_SHA"
SUFFIX=$(cat package.json | grep -o -P "(?<=\"suffix\"\: \")([^\"])+")
if [ $SUFFIX != "" ]; then
SUFFIX="-$SUFFIX"
fi
QPKG_VER=$SERVER_VERSION$SUFFIX
echo "QPKG_VER=$QPKG_VER"
if [ "$CURRENT_VERSION" == "$NEXT_VERSION" ] && [ "$CURRENT_SHA" == "$NEXT_SHA" ]; then
echo -e "\033[0;36mNo new release \033[0m"
exit;
fi
echo -e "\033[0;32mDownload new release \033[0m"
get() {
URL=$1
KEY=${URL##*/}
KEY=$(echo $KEY | sed "s/%2B/\+/g")
echo $KEY
if [ -f .cache/deb/$KEY ]; then
cp .cache/deb/$KEY .
echo -e "\033[0;32mGet from cache \033[0m"
else
wget -q $URL
mkdir -p .cache/deb;
cp $KEY .cache/deb
fi
}
proceed() {
ARCH=$1
FFMPEG=$2
echo "Procceed $ARCH $FFMPEG"
rm -f *.buildinfo
if [ "$FFMPEG" == "ffmpeg5" ]; then
FFMPEG_INFO=latest-6.x/$ARCH/jellyfin-ffmpeg_$FFMPEG_VERSION-bullseye_$ARCH.buildinfo
FFMPEG_DEB=latest-5.x/$ARCH/jellyfin-ffmpeg5_$FFMPEG5_VERSION-bullseye_$ARCH.deb
FFMPEG_TAG=$FFMPEG5_VERSION
elif [ "$FFMPEG" == "ffmpeg6" ]; then
FFMPEG_INFO=latest-6.x/$ARCH/jellyfin-ffmpeg_$FFMPEG_VERSION-bullseye_$ARCH.buildinfo
FFMPEG_DEB=latest-6.x/$ARCH/jellyfin-ffmpeg6_$FFMPEG_VERSION-bullseye_$ARCH.deb
FFMPEG_TAG=$FFMPEG5_VERSION
else
FFMPEG_INFO=latest-7.x/$ARCH/jellyfin-ffmpeg_$FFMPEG_VERSION-bullseye_$ARCH.buildinfo
FFMPEG_DEB=latest-7.x/$ARCH/jellyfin-ffmpeg7_$FFMPEG_VERSION-bullseye_$ARCH.deb
FFMPEG_TAG=$FFMPEG_VERSION
fi
SERVER_INFO=latest-stable/$ARCH/jellyfin_$SERVER_VERSION%2Bdeb11_$ARCH.buildinfo
SERVER_DEB=latest-stable/$ARCH/jellyfin-server_$SERVER_VERSION%2Bdeb11_$ARCH.deb
WEB_DEB=latest-stable/$ARCH/jellyfin-web_$SERVER_VERSION%2Bdeb11_all.deb
get "https://repo.jellyfin.org/files/ffmpeg/debian/$FFMPEG_INFO"
get "https://repo.jellyfin.org/files/server/debian/$SERVER_INFO"
rm -f jellyfin-server_*.deb*
rm -f jellyfin-web_*.deb*
rm -f jellyfin-ffmpeg*_*.deb*
get "https://repo.jellyfin.org/files/ffmpeg/debian/$FFMPEG_DEB"
get "https://repo.jellyfin.org/files/server/debian/$SERVER_DEB"
get "https://repo.jellyfin.org/files/server/debian/$WEB_DEB"
rm -rf .tmp
rm -rf output
mkdir output
cp -rf packaging/* output
if ! ./jellyfin-server.sh "$ARCH" "$SERVER_VERSION"; then
exit $?
fi
if ! ./jellyfin-ffmpeg.sh "$ARCH" "$FFMPEG_TAG" "$FFMPEG"; then
exit $?
fi
if ! ./unpack-lib.sh "$SERVER_VERSION-$FFMPEG_TAG-$ARCH"; then
exit $?
fi
# move all libs under bin as jellyfin doesn't support other folders.
mv .tmp/lib/lib/*-linux-*/* output/shared/jellyfin/bin/
mv .tmp/lib/usr/lib/*-linux-*/* output/shared/jellyfin/bin/
if ! ./jellyfin-web.sh; then
exit $?
fi
mkdir -p output/build
if ! ./package.sh $ARCH $FFMPEG $QPKG_VER; then
exit $?
fi
}
if ! proceed "amd64" "ffmpeg7"; then
exit $?
fi
if ! proceed "amd64" "ffmpeg5"; then
exit $?
fi
if ! proceed "arm64" "ffmpeg5"; then
exit $?
fi
if ! proceed "arm64" "ffmpeg7"; then
exit $?
fi
if ! proceed "armhf" "ffmpeg7"; then
exit $?
fi
if ! proceed "armhf" "ffmpeg5"; then
exit $?
fi
json=$(cat package.json | jq ".version = \"$NEXT_VERSION\"")
json=$(echo $json | jq ".sha = \"$NEXT_SHA\"")
json=$(echo $json | jq ".ffmpeg = \"$FFMPEG_VERSION\"")
json=$(echo $json | jq ".ffmpeg5 = \"$FFMPEG5_VERSION\"")
json=$(echo $json | jq ".server = \"$SERVER_VERSION\"")
json=$(echo $json | jq ".web = \"$WEB_VERSION\"")
printf '%s\n' "$json" > package.json