Browse Source

Add Debian packaging

Joshua M. Boniface 3 years ago
parent
commit
54f932a624

+ 1 - 0
.gitignore

@@ -20,3 +20,4 @@ web-client
 toolchain.cmake
 .sublime-settings
 .last_wc_version
+debian/jellyfin-media-player.debhelper.log

+ 5 - 0
debian/changelog

@@ -0,0 +1,5 @@
+jellyfin-media-player (1.3.0-1) unstable; urgency=medium
+
+  * Initial Debian packaging for 1.3.0
+
+ -- Joshua Boniface <joshua@boniface.me>  Sun, 11 Apr 2021 22:34:40 -0400

+ 1 - 0
debian/compat

@@ -0,0 +1 @@
+9

+ 48 - 0
debian/conf/jellyfin

@@ -0,0 +1,48 @@
+# Jellyfin default configuration options
+# This is a POSIX shell fragment
+
+# Use this file to override the default configurations; add additional
+# options with JELLYFIN_ADD_OPTS.
+
+# Under systemd, use
+#  /etc/systemd/system/jellyfin.service.d/jellyfin.service.conf
+# to override the user or this config file's location.
+
+#
+# General options
+#
+
+# Program directories
+JELLYFIN_DATA_DIR="/var/lib/jellyfin"
+JELLYFIN_CONFIG_DIR="/etc/jellyfin"
+JELLYFIN_LOG_DIR="/var/log/jellyfin"
+JELLYFIN_CACHE_DIR="/var/cache/jellyfin"
+
+# web client path, installed by the jellyfin-web package
+JELLYFIN_WEB_OPT="--webdir=/usr/share/jellyfin/web"
+
+# Restart script for in-app server control
+JELLYFIN_RESTART_OPT="--restartpath=/usr/lib/jellyfin/restart.sh"
+
+# ffmpeg binary paths, overriding the system values
+JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg"
+
+# [OPTIONAL] run Jellyfin as a headless service
+#JELLYFIN_SERVICE_OPT="--service"
+
+# [OPTIONAL] run Jellyfin without the web app
+#JELLYFIN_NOWEBAPP_OPT="--nowebclient"
+
+# [OPTIONAL] run Jellyfin with ASP.NET Server Garbage Collection (uses more RAM and less CPU than Workstation GC)
+# 0 = Workstation
+# 1 = Server
+#COMPlus_gcServer=1
+
+#
+# SysV init/Upstart options
+#
+
+# Application username
+JELLYFIN_USER="jellyfin"
+# Full application command
+JELLYFIN_ARGS="$JELLYFIN_WEB_OPT $JELLYFIN_RESTART_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_SERVICE_OPT $JELLYFIN_NOWEBAPP_OPT"

+ 37 - 0
debian/conf/jellyfin-sudoers

@@ -0,0 +1,37 @@
+#Allow jellyfin group to start, stop and restart itself
+Cmnd_Alias RESTARTSERVER_SYSV = /sbin/service jellyfin restart, /usr/sbin/service jellyfin restart
+Cmnd_Alias STARTSERVER_SYSV = /sbin/service jellyfin start, /usr/sbin/service jellyfin start
+Cmnd_Alias STOPSERVER_SYSV = /sbin/service jellyfin stop, /usr/sbin/service jellyfin stop
+Cmnd_Alias RESTARTSERVER_SYSTEMD = /usr/bin/systemctl restart jellyfin, /bin/systemctl restart jellyfin
+Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemctl start jellyfin, /bin/systemctl start jellyfin
+Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemctl stop jellyfin, /bin/systemctl stop jellyfin
+Cmnd_Alias RESTARTSERVER_INITD = /etc/init.d/jellyfin restart
+Cmnd_Alias STARTSERVER_INITD = /etc/init.d/jellyfin start
+Cmnd_Alias STOPSERVER_INITD = /etc/init.d/jellyfin stop
+
+
+jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSV
+jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSV
+jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSV
+jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD
+jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD
+jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD
+jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_INITD
+jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_INITD
+jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_INITD
+
+Defaults!RESTARTSERVER_SYSV !requiretty
+Defaults!STARTSERVER_SYSV !requiretty
+Defaults!STOPSERVER_SYSV !requiretty
+Defaults!RESTARTSERVER_SYSTEMD !requiretty
+Defaults!STARTSERVER_SYSTEMD !requiretty
+Defaults!STOPSERVER_SYSTEMD !requiretty
+Defaults!RESTARTSERVER_INITD !requiretty
+Defaults!STARTSERVER_INITD !requiretty
+Defaults!STOPSERVER_INITD !requiretty
+
+#Allow the server to mount iso images
+jellyfin ALL=(ALL) NOPASSWD: /bin/mount
+jellyfin ALL=(ALL) NOPASSWD: /bin/umount
+
+Defaults:jellyfin !requiretty

+ 7 - 0
debian/conf/jellyfin.service.conf

@@ -0,0 +1,7 @@
+# Jellyfin systemd configuration options
+
+# Use this file to override the user or environment file location.
+
+[Service]
+#User = jellyfin
+#EnvironmentFile = /etc/default/jellyfin

+ 30 - 0
debian/conf/logging.json

@@ -0,0 +1,30 @@
+{
+    "Serilog": {
+        "MinimumLevel": "Information",
+        "WriteTo": [
+            {
+                "Name": "Console",
+                "Args": {
+                    "outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
+                }
+            },
+            {
+                "Name": "Async",
+                "Args": {
+                    "configure": [
+                        {
+                            "Name": "File",
+                            "Args": {
+                                "path": "%JELLYFIN_LOG_DIR%//jellyfin.log",
+                                "fileSizeLimitBytes": 10485700,
+                                "rollOnFileSizeLimit": true,
+                                "retainedFileCountLimit": 10,
+                                "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}"
+                            }
+                        }
+                    ]
+                }
+            }
+        ]
+    }
+}

+ 52 - 0
debian/control

@@ -0,0 +1,52 @@
+Source: jellyfin-media-player
+Section: video
+Priority: optional
+Maintainer:  Ian Walton <ian@iwalton.com>, Joshua Boniface <joshua@boniface.me>
+Build-Depends: debhelper (>= 9),
+               autoconf,
+               automake,
+               libtool,
+               libharfbuzz-dev,
+               libfreetype6-dev,
+               libfontconfig1-dev,
+               libx11-dev,
+               libxrandr-dev,
+               libvdpau-dev,
+               libva-dev,
+               mesa-common-dev,
+               libegl1-mesa-dev,
+               yasm,
+               libasound2-dev,
+               libpulse-dev,
+               libuchardet-dev,
+               zlib1g-dev,
+               libfribidi-dev,
+               git,
+               libgnutls28-dev,
+               libgl1-mesa-dev,
+               libsdl2-dev,
+               cmake,
+               wget,
+               python,
+               g++,
+               qtwebengine5-dev,
+               qtquickcontrols2-5-dev,
+               libqt5x11extras5-dev,
+               libcec-dev,
+               qml-module-qtwebengine,
+               qml-module-qtwebchannel,
+               libmpv-dev,
+               wget,
+               unzip
+Standards-Version: 3.9.4
+Homepage: https://jellyfin.org/
+Vcs-Git: https://github.org/jellyfin/jellyfin-media-player.git
+Vcs-Browser: https://github.org/jellyfin/jellyfin-media-player
+
+Package: jellyfin-media-player
+Architecture: any
+Depends: libmpv1,
+         libqt5webengine5,
+         libcec4 | libcec6
+Description: Jellyfin is the Free Software Media System.
+ This package provides the Jellyfin desktop media player.

+ 28 - 0
debian/copyright

@@ -0,0 +1,28 @@
+Format: http://dep.debian.net/deps/dep5
+Upstream-Name: jellyfin
+Source: https://github.com/jellyfin/jellyfin-media-player
+
+Files: *
+Copyright: 2018 Ian Walton
+License: GPL-2.0
+
+Files: debian/*
+Copyright: 2021 Joshua Boniface <joshua@boniface.me>
+Copyright: 2014 Carlos Hernandez <carlos@techbyte.ca>
+License: GPL-2.0
+
+License: GPL-2.0
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

+ 0 - 0
debian/install


+ 1 - 0
debian/jellyfin-media-player.debhelper.log

@@ -0,0 +1 @@
+dh_update_autotools_config

+ 15 - 0
debian/rules

@@ -0,0 +1,15 @@
+#! /usr/bin/make -f
+
+JWC_RELEASE := 1.7.1
+
+%:
+	dh $@
+
+override_dh_auto_build:
+	dh_auto_build $@
+	wget https://github.com/iwalton3/jellyfin-web-jmp/releases/download/jwc-$(JWC_RELEASE)/dist.zip
+	unzip dist.zip -d obj-x86_64-linux-gnu/
+
+override_dh_auto_clean:
+	dh_auto_clean $@
+	rm dist.zip

+ 1 - 0
debian/source/format

@@ -0,0 +1 @@
+1.0

+ 8 - 0
debian/source/options

@@ -0,0 +1,8 @@
+tar-ignore='.git*'
+tar-ignore='**/.git'
+tar-ignore='**/.hg'
+tar-ignore='**/.vs'
+tar-ignore='**/.vscode'
+tar-ignore='deployment'
+tar-ignore='*.deb'
+tar-ignore='ThirdParty'