Enable self-contained binary mode (#160)
* Build self-contained Debian linux-x64 binary * Update initscripts to use self-contained binary The binary is declared in the units intentionally rather than using the variable extrapolation from before, to avoid confusion since these can't really be moved reasonably. * With combined binary name, use pgrep instead * Remove dotnet-runtime dependency * Move the compiled scb to usr/bin * Update binary location for upstart/systemd * Move binary path; fix pidfile handling * Entirely remove the temporary usr/ dir * Don't move the compiled binary * Create /usr/bin symlink * Use the variable here * Update architecture to any * Add libcurl4-openssl build dependency * Update the build Dockerfile to install builddeps
This commit is contained in:
parent
72f7e7b954
commit
a73d255f51
|
@ -2,20 +2,20 @@ FROM debian:9
|
|||
|
||||
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y apt-transport-https debhelper gnupg wget \
|
||||
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts \
|
||||
&& wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg \
|
||||
&& mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ \
|
||||
&& wget -q https://packages.microsoft.com/config/debian/9/prod.list \
|
||||
&& mv prod.list /etc/apt/sources.list.d/microsoft-prod.list \
|
||||
&& chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg \
|
||||
&& chown root:root /etc/apt/sources.list.d/microsoft-prod.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y dotnet-sdk-2.2
|
||||
&& apt-get update
|
||||
|
||||
WORKDIR /repo
|
||||
COPY . .
|
||||
|
||||
RUN dpkg-buildpackage -us -uc \
|
||||
RUN yes|mk-build-deps -i \
|
||||
&& dpkg-buildpackage -us -uc \
|
||||
&& mkdir /dist \
|
||||
&& mv /jellyfin*deb /dist
|
||||
|
||||
|
|
6
debian/conf/jellyfin
vendored
6
debian/conf/jellyfin
vendored
|
@ -15,8 +15,6 @@
|
|||
# General options
|
||||
#
|
||||
|
||||
# Path to the jellyfin.dll executable
|
||||
JELLYFIN_EXE="/usr/lib/jellyfin/bin/jellyfin.dll"
|
||||
# Data directory
|
||||
JELLYFIN_DATA="/var/lib/jellyfin"
|
||||
# Restart script for in-app server control
|
||||
|
@ -30,7 +28,5 @@ JELLYFIN_ADD_OPTS=""
|
|||
|
||||
# Application username
|
||||
JELLYFIN_USER="jellyfin"
|
||||
# .NET Core runtime binary
|
||||
JELLYFIN_DOTNET="/usr/bin/dotnet"
|
||||
# Full application command
|
||||
JELLYFIN_COMMAND="$JELLYFIN_EXE -programdata $JELLYFIN_DATA -restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS"
|
||||
JELLYFIN_ARGS="-programdata $JELLYFIN_DATA -restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS"
|
||||
|
|
7
debian/control
vendored
7
debian/control
vendored
|
@ -4,14 +4,15 @@ Priority: optional
|
|||
Maintainer: Vasily <just.one.man@yandex.ru>
|
||||
Build-Depends: debhelper (>= 9),
|
||||
dotnet-sdk-2.2,
|
||||
libc6-dev
|
||||
libc6-dev,
|
||||
libcurl4-openssl-dev
|
||||
Standards-Version: 3.9.4
|
||||
|
||||
Package: jellyfin
|
||||
Replaces: mediabrowser, emby, emby-server-beta, jellyfin-dev, emby-server
|
||||
Breaks: mediabrowser, emby, emby-server-beta, jellyfin-dev, emby-server
|
||||
Conflicts: mediabrowser, emby, emby-server-beta, jellyfin-dev, emby-server
|
||||
Architecture: all
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, at, libsqlite3-0, dotnet-runtime-2.2, ffmpeg
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, at, libsqlite3-0, ffmpeg
|
||||
Description: Jellyfin is a home media server.
|
||||
It is built on top of other popular open source technologies such as Service Stack, jQuery, jQuery mobile, and Mono. It features a REST-based api with built-in documentation to facilitate client development. We also have client libraries for our api to enable rapid development.
|
||||
|
|
8
debian/jellyfin.init
vendored
8
debian/jellyfin.init
vendored
|
@ -9,14 +9,17 @@
|
|||
### END INIT INFO
|
||||
|
||||
# Carry out specific functions when asked to by the system
|
||||
pid=`ps -fA|grep dotnet|grep jellyfin|awk '{print $2}'| tr -d '\n'`
|
||||
|
||||
pidfile="/var/run/jellyfin.pid"
|
||||
pid=`cat $pidfile`
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
if [ "$pid" == "" ]; then
|
||||
echo "Starting Jellyfin..."
|
||||
. /etc/default/jellyfin
|
||||
nohup su -u $JELLYFIN_USER -c $JELLYFIN_DOTNET $JELLYFIN_COMMAND
|
||||
nohup su -u $JELLYFIN_USER -c /usr/bin/jellyfin $JELLYFIN_ARGS
|
||||
echo ?? > $pidfile
|
||||
else
|
||||
echo "Jellyfin already running"
|
||||
fi
|
||||
|
@ -26,6 +29,7 @@ case "$1" in
|
|||
echo "Stopping Jellyfin..."
|
||||
kill $pid
|
||||
sleep 2
|
||||
rm -f $pidfile
|
||||
else
|
||||
echo "Jellyfin not running"
|
||||
fi
|
||||
|
|
2
debian/jellyfin.service
vendored
2
debian/jellyfin.service
vendored
|
@ -6,7 +6,7 @@ After = network.target
|
|||
Type = simple
|
||||
EnvironmentFile = /etc/default/jellyfin
|
||||
User = jellyfin
|
||||
ExecStart = /usr/bin/dotnet ${JELLYFIN_EXE} -programdata ${JELLYFIN_DATA} -restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS}
|
||||
ExecStart = /usr/bin/jellyfin -programdata ${JELLYFIN_DATA} -restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS}
|
||||
Restart = on-abort
|
||||
TimeoutSec = 20
|
||||
|
||||
|
|
2
debian/jellyfin.upstart
vendored
2
debian/jellyfin.upstart
vendored
|
@ -16,5 +16,5 @@ script
|
|||
# Log file
|
||||
logger -t "$0" "DEBUG: `set`"
|
||||
. /etc/default/jellyfin
|
||||
exec su -u $JELLYFIN_USER -c $JELLYFIN_DOTNET $JELLYFIN_COMMAND
|
||||
exec su -u $JELLYFIN_USER -c /usr/bin/jellyfin $JELLYFIN_ARGS
|
||||
end script
|
||||
|
|
3
debian/postinst
vendored
3
debian/postinst
vendored
|
@ -37,6 +37,9 @@ case "$1" in
|
|||
|
||||
chmod +x ${JELLYFIN_DIR}/restart.sh > /dev/null 2>&1 || true
|
||||
|
||||
# Install jellyfin symlink into /usr/bin
|
||||
ln -sf /usr/lib/jellyfin/bin/jellyfin /usr/bin/jellyfin
|
||||
|
||||
;;
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
;;
|
||||
|
|
4
debian/rules
vendored
4
debian/rules
vendored
|
@ -15,8 +15,8 @@ override_dh_auto_test:
|
|||
override_dh_clistrip:
|
||||
|
||||
override_dh_auto_build:
|
||||
dotnet publish --configuration $(CONFIG) $(CURDIR)/MediaBrowser.sln --output='$(CURDIR)/usr/lib/jellyfin/bin'
|
||||
dotnet publish --configuration $(CONFIG) $(CURDIR)/MediaBrowser.sln --output='$(CURDIR)/usr/lib/jellyfin/bin' --self-contained --runtime linux-x64
|
||||
|
||||
override_dh_auto_clean:
|
||||
dotnet clean -maxcpucount:1 --configuration $(CONFIG) $(CURDIR)/MediaBrowser.sln || true
|
||||
rm -rf '$(CURDIR)/usr/lib/jellyfin'
|
||||
rm -rf '$(CURDIR)/usr'
|
||||
|
|
Loading…
Reference in New Issue
Block a user