From b982d7c239bc88f32dc2545e4f2b843e9124a3e6 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Thu, 31 Jan 2019 21:50:50 -0500 Subject: Update to long opts and add cache dirs --- deployment/debian-package-x64/pkg-src/conf/jellyfin | 3 ++- deployment/debian-package-x64/pkg-src/jellyfin.service | 2 +- deployment/fedora-package-x64/pkg-src/jellyfin.env | 3 ++- deployment/fedora-package-x64/pkg-src/jellyfin.service | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin b/deployment/debian-package-x64/pkg-src/conf/jellyfin index 861865aae..92bc0bab2 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin @@ -19,6 +19,7 @@ JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" JELLYFIN_CONFIG_DIRECTORY="/etc/jellyfin" JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" +JELLYFIN_CACHE_DIRECTORY="/var/cache/jellyfin" # Restart script for in-app server control JELLYFIN_RESTART_SCRIPT="/usr/lib/jellyfin/restart.sh" # Additional options for the binary @@ -31,4 +32,4 @@ JELLYFIN_ADD_OPTS="" # Application username JELLYFIN_USER="jellyfin" # Full application command -JELLYFIN_ARGS="-programdata $JELLYFIN_DATA_DIRECTORY -configdir $JELLYFIN_CONFIG_DIRECTORY -logdir $JELLYFIN_LOG_DIRECTORY -restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS" +JELLYFIN_ARGS="--programdata $JELLYFIN_DATA_DIRECTORY --configdir $JELLYFIN_CONFIG_DIRECTORY --logdir $JELLYFIN_LOG_DIRECTORY --cachedir $JELLYFIN_CACHE_DIRECTORY --restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS" diff --git a/deployment/debian-package-x64/pkg-src/jellyfin.service b/deployment/debian-package-x64/pkg-src/jellyfin.service index c17422029..bb77571f7 100644 --- a/deployment/debian-package-x64/pkg-src/jellyfin.service +++ b/deployment/debian-package-x64/pkg-src/jellyfin.service @@ -6,7 +6,7 @@ After = network.target Type = simple EnvironmentFile = /etc/default/jellyfin User = jellyfin -ExecStart = /usr/bin/jellyfin -programdata ${JELLYFIN_DATA_DIRECTORY} -configdir ${JELLYFIN_CONFIG_DIRECTORY} -logdir ${JELLYFIN_LOG_DIRECTORY} -restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS} +ExecStart = /usr/bin/jellyfin --programdata ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} --restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS} Restart = on-failure TimeoutSec = 15 diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.env b/deployment/fedora-package-x64/pkg-src/jellyfin.env index 827a33f46..49e565006 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.env +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.env @@ -21,7 +21,8 @@ JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" JELLYFIN_CONFIG_DIRECTORY="/etc/jellyfin" JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" +JELLYFIN_CACHE_DIRECTORY="/var/log/jellyfin" # In-App service control JELLYFIN_RESTART_OPT="-restartpath /usr/libexec/jellyfin/restart.sh" # Additional options for the binary -JELLYFIN_ADD_OPTS="" \ No newline at end of file +JELLYFIN_ADD_OPTS="" diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.service b/deployment/fedora-package-x64/pkg-src/jellyfin.service index 0ece5b57f..0c0867967 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.service +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.service @@ -5,7 +5,7 @@ Description=Jellyfin is a free software media system that puts you in control of [Service] EnvironmentFile=/etc/sysconfig/jellyfin WorkingDirectory=/var/lib/jellyfin -ExecStart=/usr/bin/jellyfin -programdata ${JELLYFIN_DATA_DIRECTORY} -configdir ${JELLYFIN_CONFIG_DIRECTORY} -logdir ${JELLYFIN_LOG_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_ADD_OPTS} ${JELLYFIN_FFMPEG} +ExecStart=/usr/bin/jellyfin --programdata ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_ADD_OPTS} ${JELLYFIN_FFMPEG} TimeoutSec=15 Restart=on-failure User=jellyfin -- cgit v1.2.3 From ae24d644db16071a4926b9b50a135a90926ce0e7 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Thu, 31 Jan 2019 21:52:26 -0500 Subject: Use double-dash args in install-jellyfn.ps1 --- deployment/win-generic/install-jellyfin.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'deployment') diff --git a/deployment/win-generic/install-jellyfin.ps1 b/deployment/win-generic/install-jellyfin.ps1 index 56c098462..3888f5255 100644 --- a/deployment/win-generic/install-jellyfin.ps1 +++ b/deployment/win-generic/install-jellyfin.ps1 @@ -93,12 +93,12 @@ if($Quiet.IsPresent -or $Quiet -eq $true){ Copy-Item -Path $PSScriptRoot/* -DestinationPath "$Script:DefaultJellyfinInstallDirectory/" -Force -Recurse if($Script:InstallAsService){ if($Script:InstallServiceAsUser){ - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" -programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 500 &sc.exe config Jellyfin obj=".\$($Script:UserCredentials.UserName)" password="$($Script:UserCredentials.GetNetworkCredential().Password)" &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin Start SERVICE_DELAYED_AUTO_START }else{ - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" -programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 500 #&"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin ObjectName $Script:UserCredentials.UserName $Script:UserCredentials.GetNetworkCredential().Password #Set-Service -Name Jellyfin -Credential $Script:UserCredentials @@ -171,13 +171,13 @@ function InstallJellyfin { if($Script:InstallAsService){ if($Script:InstallServiceAsUser){ Write-Host "Installing Service as user $($Script:UserCredentials.UserName)" - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" -programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 2000 &sc.exe config Jellyfin obj=".\$($Script:UserCredentials.UserName)" password="$($Script:UserCredentials.GetNetworkCredential().Password)" &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin Start SERVICE_DELAYED_AUTO_START }else{ Write-Host "Installing Service as LocalSystem" - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" -programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 2000 &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin Start SERVICE_DELAYED_AUTO_START } @@ -457,4 +457,4 @@ $StartProgramCheck.Add_CheckedChanged({StartJellyFinBoxCheckChanged}) #endregion GUI } -[void]$InstallForm.ShowDialog() \ No newline at end of file +[void]$InstallForm.ShowDialog() -- cgit v1.2.3 From f6227e99ccde84914cf596fb6cf08023c7e8b862 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Thu, 31 Jan 2019 21:57:25 -0500 Subject: Add cachedir to deployment scripts; fix bad logdir --- deployment/debian-package-x64/pkg-src/postinst | 6 ++++++ deployment/debian-package-x64/pkg-src/postrm | 8 +++++++- deployment/debian-package-x64/pkg-src/preinst | 8 ++++++-- deployment/debian-package-x64/pkg-src/prerm | 3 ++- 4 files changed, 21 insertions(+), 4 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/postinst b/deployment/debian-package-x64/pkg-src/postinst index 3690d20ba..44d944ccb 100644 --- a/deployment/debian-package-x64/pkg-src/postinst +++ b/deployment/debian-package-x64/pkg-src/postinst @@ -13,6 +13,7 @@ fi PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME} CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME} LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME} +CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME} case "$1" in configure) @@ -37,10 +38,15 @@ case "$1" in if [[ ! -d $LOGDATA ]]; then mkdir $LOGDATA fi + # ensure $CACHEDATA exists + if [[ ! -d $CACHEDATA ]]; then + mkdir $CACHEDATA + fi # Ensure permissions are correct on all config directories chown -R jellyfin:jellyfin $PROGRAMDATA chown -R jellyfin:jellyfin $CONFIGDATA chown -R jellyfin:jellyfin $LOGDATA + chown -R jellyfin:jellyfin $CACHEDATA chmod +x /usr/lib/jellyfin/restart.sh > /dev/null 2>&1 || true diff --git a/deployment/debian-package-x64/pkg-src/postrm b/deployment/debian-package-x64/pkg-src/postrm index 690f5d587..1d00a984e 100644 --- a/deployment/debian-package-x64/pkg-src/postrm +++ b/deployment/debian-package-x64/pkg-src/postrm @@ -12,7 +12,8 @@ fi # Data directories for program data (cache, db), configs, and logs PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME} CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME} -LOGDATA=${JELLYFIN_DATA_DIRECTORY-/var/log/$NAME} +LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME} +CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME} # In case this system is running systemd, we make systemd reload the unit files # to pick up changes. @@ -44,6 +45,10 @@ case "$1" in if [[ -d $LOGDATA ]]; then rm -rf $LOGDATA fi + # Remove cache dir + if [[ -d $CACHEDATA ]]; then + rm -rf $CACHEDATA + fi # Remove program data dir if [[ -d $PROGRAMDATA ]]; then rm -rf $PROGRAMDATA @@ -55,6 +60,7 @@ case "$1" in # Remove anything at the default locations; catches situations where the user moved the defaults [[ -e /etc/jellyfin ]] && rm -rf /etc/jellyfin [[ -e /var/log/jellyfin ]] && rm -rf /var/log/jellyfin + [[ -e /var/cache/jellyfin ]] && rm -rf /var/cache/jellyfin [[ -e /var/lib/jellyfin ]] && rm -rf /var/lib/jellyfin ;; remove) diff --git a/deployment/debian-package-x64/pkg-src/preinst b/deployment/debian-package-x64/pkg-src/preinst index 0063e0e63..2713fb9b8 100644 --- a/deployment/debian-package-x64/pkg-src/preinst +++ b/deployment/debian-package-x64/pkg-src/preinst @@ -12,7 +12,8 @@ fi # Data directories for program data (cache, db), configs, and logs PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME} CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME} -LOGDATA=${JELLYFIN_DATA_DIRECTORY-/var/log/$NAME} +LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME} +CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME} # In case this system is running systemd, we make systemd reload the unit files # to pick up changes. @@ -53,13 +54,16 @@ case "$1" in # Clean up old Emby cruft that can break the user's system [[ -f /etc/sudoers.d/emby ]] && rm -f /etc/sudoers.d/emby - # If we have existing config or log dirs in /var/lib/jellyfin, move them into the right place + # If we have existing config, log, or cache dirs in /var/lib/jellyfin, move them into the right place if [[ -d $PROGRAMDATA/config ]]; then mv $PROGRAMDATA/config $CONFIGDATA fi if [[ -d $PROGRAMDATA/logs ]]; then mv $PROGRAMDATA/logs $LOGDATA fi + if [[ -d $PROGRAMDATA/logs ]]; then + mv $PROGRAMDATA/cache $CACHEDATA + fi ;; abort-upgrade) diff --git a/deployment/debian-package-x64/pkg-src/prerm b/deployment/debian-package-x64/pkg-src/prerm index 4770c03c4..e965cb7d7 100644 --- a/deployment/debian-package-x64/pkg-src/prerm +++ b/deployment/debian-package-x64/pkg-src/prerm @@ -12,7 +12,8 @@ fi # Data directories for program data (cache, db), configs, and logs PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME} CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME} -LOGDATA=${JELLYFIN_DATA_DIRECTORY-/var/log/$NAME} +LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME} +CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME} case "$1" in remove|upgrade|deconfigure) -- cgit v1.2.3 From 5e4697802f813d1c2c35c8cc4d57fcd89d39b745 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Thu, 31 Jan 2019 22:03:55 -0500 Subject: Replace programdata with datadir everywhere --- deployment/debian-package-x64/pkg-src/conf/jellyfin | 2 +- deployment/debian-package-x64/pkg-src/jellyfin.service | 2 +- deployment/fedora-package-x64/pkg-src/jellyfin.service | 2 +- deployment/win-generic/install-jellyfin.ps1 | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin b/deployment/debian-package-x64/pkg-src/conf/jellyfin index 92bc0bab2..7626328c2 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin @@ -32,4 +32,4 @@ JELLYFIN_ADD_OPTS="" # Application username JELLYFIN_USER="jellyfin" # Full application command -JELLYFIN_ARGS="--programdata $JELLYFIN_DATA_DIRECTORY --configdir $JELLYFIN_CONFIG_DIRECTORY --logdir $JELLYFIN_LOG_DIRECTORY --cachedir $JELLYFIN_CACHE_DIRECTORY --restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS" +JELLYFIN_ARGS="--datadir $JELLYFIN_DATA_DIRECTORY --configdir $JELLYFIN_CONFIG_DIRECTORY --logdir $JELLYFIN_LOG_DIRECTORY --cachedir $JELLYFIN_CACHE_DIRECTORY --restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS" diff --git a/deployment/debian-package-x64/pkg-src/jellyfin.service b/deployment/debian-package-x64/pkg-src/jellyfin.service index bb77571f7..b7ee4e193 100644 --- a/deployment/debian-package-x64/pkg-src/jellyfin.service +++ b/deployment/debian-package-x64/pkg-src/jellyfin.service @@ -6,7 +6,7 @@ After = network.target Type = simple EnvironmentFile = /etc/default/jellyfin User = jellyfin -ExecStart = /usr/bin/jellyfin --programdata ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} --restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS} +ExecStart = /usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} --restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS} Restart = on-failure TimeoutSec = 15 diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.service b/deployment/fedora-package-x64/pkg-src/jellyfin.service index 0c0867967..56703a98a 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.service +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.service @@ -5,7 +5,7 @@ Description=Jellyfin is a free software media system that puts you in control of [Service] EnvironmentFile=/etc/sysconfig/jellyfin WorkingDirectory=/var/lib/jellyfin -ExecStart=/usr/bin/jellyfin --programdata ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_ADD_OPTS} ${JELLYFIN_FFMPEG} +ExecStart=/usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_ADD_OPTS} ${JELLYFIN_FFMPEG} TimeoutSec=15 Restart=on-failure User=jellyfin diff --git a/deployment/win-generic/install-jellyfin.ps1 b/deployment/win-generic/install-jellyfin.ps1 index 3888f5255..b6e00e056 100644 --- a/deployment/win-generic/install-jellyfin.ps1 +++ b/deployment/win-generic/install-jellyfin.ps1 @@ -93,12 +93,12 @@ if($Quiet.IsPresent -or $Quiet -eq $true){ Copy-Item -Path $PSScriptRoot/* -DestinationPath "$Script:DefaultJellyfinInstallDirectory/" -Force -Recurse if($Script:InstallAsService){ if($Script:InstallServiceAsUser){ - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --datadir `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 500 &sc.exe config Jellyfin obj=".\$($Script:UserCredentials.UserName)" password="$($Script:UserCredentials.GetNetworkCredential().Password)" &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin Start SERVICE_DELAYED_AUTO_START }else{ - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --datadir `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 500 #&"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin ObjectName $Script:UserCredentials.UserName $Script:UserCredentials.GetNetworkCredential().Password #Set-Service -Name Jellyfin -Credential $Script:UserCredentials @@ -171,13 +171,13 @@ function InstallJellyfin { if($Script:InstallAsService){ if($Script:InstallServiceAsUser){ Write-Host "Installing Service as user $($Script:UserCredentials.UserName)" - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --datadir `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 2000 &sc.exe config Jellyfin obj=".\$($Script:UserCredentials.UserName)" password="$($Script:UserCredentials.GetNetworkCredential().Password)" &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin Start SERVICE_DELAYED_AUTO_START }else{ Write-Host "Installing Service as LocalSystem" - &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --programdata `"$Script:JellyfinDataDir`" + &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" install Jellyfin `"$Script:DefaultJellyfinInstallDirectory\jellyfin.exe`" --datadir `"$Script:JellyfinDataDir`" Start-Sleep -Milliseconds 2000 &"$Script:DefaultJellyfinInstallDirectory\nssm.exe" set Jellyfin Start SERVICE_DELAYED_AUTO_START } -- cgit v1.2.3 From 45d8ace9bb05ec290bb2642d4e5b279f2eb3f65a Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Thu, 31 Jan 2019 22:06:03 -0500 Subject: Use good ideas from Fedora systemd in Debian --- deployment/debian-package-x64/pkg-src/conf/jellyfin | 18 ++++++++++-------- deployment/debian-package-x64/pkg-src/jellyfin.service | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin b/deployment/debian-package-x64/pkg-src/conf/jellyfin index 7626328c2..ebc11ca5c 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin @@ -1,4 +1,5 @@ # 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. @@ -7,10 +8,6 @@ # /etc/systemd/system/jellyfin.service.d/jellyfin.service.conf # to override the user or this config file's location. -# -# This is a POSIX shell fragment -# - # # General options # @@ -20,10 +17,15 @@ JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" JELLYFIN_CONFIG_DIRECTORY="/etc/jellyfin" JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" JELLYFIN_CACHE_DIRECTORY="/var/cache/jellyfin" + # Restart script for in-app server control -JELLYFIN_RESTART_SCRIPT="/usr/lib/jellyfin/restart.sh" -# Additional options for the binary -JELLYFIN_ADD_OPTS="" +JELLYFIN_RESTART_OPT="--restartpath /usr/lib/jellyfin/restart.sh" + +# [OPTIONAL] ffmpeg binary paths +#JELLYFIN_FFMPEG_OPTS="-ffmpeg /usr/bin/ffmpeg -ffprobe /usr/bin/ffprobe" + +# [OPTIONAL] Additional user-defined options for the binary +#JELLYFIN_ADD_OPTS="" # # SysV init/Upstart options @@ -32,4 +34,4 @@ JELLYFIN_ADD_OPTS="" # Application username JELLYFIN_USER="jellyfin" # Full application command -JELLYFIN_ARGS="--datadir $JELLYFIN_DATA_DIRECTORY --configdir $JELLYFIN_CONFIG_DIRECTORY --logdir $JELLYFIN_LOG_DIRECTORY --cachedir $JELLYFIN_CACHE_DIRECTORY --restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS" +JELLYFIN_ARGS="--datadir $JELLYFIN_DATA_DIRECTORY --configdir $JELLYFIN_CONFIG_DIRECTORY --logdir $JELLYFIN_LOG_DIRECTORY --cachedir $JELLYFIN_CACHE_DIRECTORY $JELLYFIN_RESTART_OPT $JELLYFIN_FFMPEG_OPTS $JELLYFIN_ADD_OPTS" diff --git a/deployment/debian-package-x64/pkg-src/jellyfin.service b/deployment/debian-package-x64/pkg-src/jellyfin.service index b7ee4e193..ee89d7d4b 100644 --- a/deployment/debian-package-x64/pkg-src/jellyfin.service +++ b/deployment/debian-package-x64/pkg-src/jellyfin.service @@ -6,7 +6,7 @@ After = network.target Type = simple EnvironmentFile = /etc/default/jellyfin User = jellyfin -ExecStart = /usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} --restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS} +ExecStart = /usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPTS} ${JELLYFIN_ADD_OPTS} Restart = on-failure TimeoutSec = 15 -- cgit v1.2.3 From aad34e62ca32c822b69e81488729b8a1d3794fda Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Thu, 31 Jan 2019 22:28:12 -0500 Subject: Move jellyfin-sudoers to conf dir --- .../pkg-src/bin/jellyfin-sudoers | 37 ---------------------- .../pkg-src/conf/jellyfin-sudoers | 37 ++++++++++++++++++++++ deployment/debian-package-x64/pkg-src/install | 2 +- 3 files changed, 38 insertions(+), 38 deletions(-) delete mode 100644 deployment/debian-package-x64/pkg-src/bin/jellyfin-sudoers create mode 100644 deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/bin/jellyfin-sudoers b/deployment/debian-package-x64/pkg-src/bin/jellyfin-sudoers deleted file mode 100644 index 4eb91366b..000000000 --- a/deployment/debian-package-x64/pkg-src/bin/jellyfin-sudoers +++ /dev/null @@ -1,37 +0,0 @@ -#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 diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers b/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers new file mode 100644 index 000000000..4eb91366b --- /dev/null +++ b/deployment/debian-package-x64/pkg-src/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 diff --git a/deployment/debian-package-x64/pkg-src/install b/deployment/debian-package-x64/pkg-src/install index adaff7b26..994322d14 100644 --- a/deployment/debian-package-x64/pkg-src/install +++ b/deployment/debian-package-x64/pkg-src/install @@ -2,5 +2,5 @@ usr/lib/jellyfin usr/lib/ debian/conf/jellyfin etc/default/ debian/conf/logging.json etc/jellyfin/ debian/conf/jellyfin.service.conf etc/systemd/system/jellyfin.service.d/ -debian/bin/jellyfin-sudoers etc/sudoers.d/ +debian/conf/jellyfin-sudoers etc/sudoers.d/ debian/bin/restart.sh usr/lib/jellyfin/ -- cgit v1.2.3 From 7774977cdd3a8032e699be94badd1ed07265ba75 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 1 Feb 2019 19:12:12 -0500 Subject: Implement review feedback --- deployment/debian-package-x64/pkg-src/conf/jellyfin | 2 +- deployment/debian-package-x64/pkg-src/postinst | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin b/deployment/debian-package-x64/pkg-src/conf/jellyfin index ebc11ca5c..c237e2d69 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin @@ -22,7 +22,7 @@ JELLYFIN_CACHE_DIRECTORY="/var/cache/jellyfin" JELLYFIN_RESTART_OPT="--restartpath /usr/lib/jellyfin/restart.sh" # [OPTIONAL] ffmpeg binary paths -#JELLYFIN_FFMPEG_OPTS="-ffmpeg /usr/bin/ffmpeg -ffprobe /usr/bin/ffprobe" +#JELLYFIN_FFMPEG_OPTS="--ffmpeg /usr/bin/ffmpeg --ffprobe /usr/bin/ffprobe" # [OPTIONAL] Additional user-defined options for the binary #JELLYFIN_ADD_OPTS="" diff --git a/deployment/debian-package-x64/pkg-src/postinst b/deployment/debian-package-x64/pkg-src/postinst index 44d944ccb..a784028eb 100644 --- a/deployment/debian-package-x64/pkg-src/postinst +++ b/deployment/debian-package-x64/pkg-src/postinst @@ -43,10 +43,8 @@ case "$1" in mkdir $CACHEDATA fi # Ensure permissions are correct on all config directories - chown -R jellyfin:jellyfin $PROGRAMDATA - chown -R jellyfin:jellyfin $CONFIGDATA - chown -R jellyfin:jellyfin $LOGDATA - chown -R jellyfin:jellyfin $CACHEDATA + chown -R jellyfin:jellyfin $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA + chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA chmod +x /usr/lib/jellyfin/restart.sh > /dev/null 2>&1 || true -- cgit v1.2.3 From b630e9de82587d3e336813cdc8a82ef316813f3e Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 1 Feb 2019 19:13:50 -0500 Subject: Allow adm group to view Jellyfin resources This is pretty arbitrary and personal, but I detest services that lock out global access (which is good), but don't simultaneously make it easy for administrators to enter the directories. The adm group should only have actual system administrators as members, so this lets them view the secure directories. --- deployment/debian-package-x64/pkg-src/postinst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/postinst b/deployment/debian-package-x64/pkg-src/postinst index a784028eb..860222e05 100644 --- a/deployment/debian-package-x64/pkg-src/postinst +++ b/deployment/debian-package-x64/pkg-src/postinst @@ -43,7 +43,8 @@ case "$1" in mkdir $CACHEDATA fi # Ensure permissions are correct on all config directories - chown -R jellyfin:jellyfin $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA + chown -R jellyfin $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA + chgrp adm $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA chmod +x /usr/lib/jellyfin/restart.sh > /dev/null 2>&1 || true -- cgit v1.2.3 From 6772ac56038af12e9b8c4c5f30cb349bd052f43d Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 1 Feb 2019 20:03:04 -0500 Subject: Fix double-dashes in Fedora environment file --- deployment/fedora-package-x64/pkg-src/jellyfin.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.env b/deployment/fedora-package-x64/pkg-src/jellyfin.env index 49e565006..f7f041f75 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.env +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.env @@ -15,7 +15,7 @@ # # Tell jellyfin wich ffmpeg/ffprobe to use -# JELLYFIN_FFMPEG="-ffmpeg /usr/bin/ffmpeg -ffprobe /usr/bin/ffprobe" +# JELLYFIN_FFMPEG="--ffmpeg /usr/bin/ffmpeg --ffprobe /usr/bin/ffprobe" # Program directories JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" @@ -23,6 +23,6 @@ JELLYFIN_CONFIG_DIRECTORY="/etc/jellyfin" JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" JELLYFIN_CACHE_DIRECTORY="/var/log/jellyfin" # In-App service control -JELLYFIN_RESTART_OPT="-restartpath /usr/libexec/jellyfin/restart.sh" +JELLYFIN_RESTART_OPT="--restartpath /usr/libexec/jellyfin/restart.sh" # Additional options for the binary JELLYFIN_ADD_OPTS="" -- cgit v1.2.3 From 4d335d8f1394e186ca761c10237f93c85657adf2 Mon Sep 17 00:00:00 2001 From: Thomas Büttner Date: Sat, 2 Feb 2019 18:20:04 +0100 Subject: Add CentOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Thomas Büttner --- deployment/centos-package-x64/Dockerfile | 15 +++++++++++++++ deployment/centos-package-x64/clean.sh | 1 + deployment/centos-package-x64/package.sh | 1 + deployment/centos-package-x64/pkg-src | 1 + deployment/fedora-package-x64/pkg-src/jellyfin.spec | 13 +++++++------ 5 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 deployment/centos-package-x64/Dockerfile create mode 120000 deployment/centos-package-x64/clean.sh create mode 120000 deployment/centos-package-x64/package.sh create mode 120000 deployment/centos-package-x64/pkg-src (limited to 'deployment') diff --git a/deployment/centos-package-x64/Dockerfile b/deployment/centos-package-x64/Dockerfile new file mode 100644 index 000000000..bbe5ffd27 --- /dev/null +++ b/deployment/centos-package-x64/Dockerfile @@ -0,0 +1,15 @@ +FROM centos:7 +ARG HOME=/build +RUN mkdir /build && \ + yum install -y @buildsys-build rpmdevtools yum-plugins-core && \ + rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm && \ + rpmdev-setuptree + +WORKDIR /build/rpmbuild +COPY ./deployment/centos-package-x64/pkg-src/jellyfin.spec SPECS +COPY ./deployment/centos-package-x64/pkg-src/ SOURCES + +RUN spectool -g -R SPECS/jellyfin.spec && \ + rpmbuild -bs SPECS/jellyfin.spec && \ + yum-builddep -y SRPMS/jellyfin-*.src.rpm && \ + rpmbuild -bb SPECS/jellyfin.spec; \ No newline at end of file diff --git a/deployment/centos-package-x64/clean.sh b/deployment/centos-package-x64/clean.sh new file mode 120000 index 000000000..d6d2d1c09 --- /dev/null +++ b/deployment/centos-package-x64/clean.sh @@ -0,0 +1 @@ +../fedora-package-x64/clean.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/package.sh b/deployment/centos-package-x64/package.sh new file mode 120000 index 000000000..a79de21eb --- /dev/null +++ b/deployment/centos-package-x64/package.sh @@ -0,0 +1 @@ +../fedora-package-x64/package.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/pkg-src b/deployment/centos-package-x64/pkg-src new file mode 120000 index 000000000..dfd6497cf --- /dev/null +++ b/deployment/centos-package-x64/pkg-src @@ -0,0 +1 @@ +../fedora-package-x64/pkg-src \ No newline at end of file diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.spec b/deployment/fedora-package-x64/pkg-src/jellyfin.spec index 6a4a5870b..2cf10ef0c 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.spec +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.spec @@ -1,9 +1,10 @@ %global debug_package %{nil} -# jellyfin tag to package -%global gittag v10.1.0 -# Taglib-sharp commit of the submodule since github archive doesn't include submodules -%global taglib_commit ee5ab21742b71fd1b87ee24895582327e9e04776 -%global taglib_shortcommit %(c=%{taglib_commit}; echo ${c:0:7}) +# Set the dotnet runtime +%if 0%{?fedora} +%global dotnet_runtime fedora-x64 +%else +%global dotnet_runtime centos-x64 +%endif AutoReq: no Name: jellyfin @@ -51,7 +52,7 @@ Jellyfin is a free software media system that puts you in control of managing an %install export DOTNET_CLI_TELEMETRY_OPTOUT=1 export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 -dotnet publish --configuration Release --output='%{buildroot}%{_libdir}/jellyfin' --self-contained --runtime fedora-x64 Jellyfin.Server +dotnet publish --configuration Release --output='%{buildroot}%{_libdir}/jellyfin' --self-contained --runtime %{dotnet_runtime} Jellyfin.Server %{__install} -D -m 0644 LICENSE %{buildroot}%{_datadir}/licenses/%{name}/LICENSE %{__install} -D -m 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/systemd/system/%{name}.service.d/override.conf %{__install} -D -m 0644 Jellyfin.Server/Resources/Configuration/logging.json %{buildroot}%{_sysconfdir}/%{name}/logging.json -- cgit v1.2.3 From 1ce59393625b7af05f4995bade42c6e63ef7288e Mon Sep 17 00:00:00 2001 From: Thomas Büttner Date: Sat, 2 Feb 2019 19:05:49 +0100 Subject: optimize rpm dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Thomas Büttner --- deployment/fedora-package-x64/pkg-src/jellyfin.spec | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.spec b/deployment/fedora-package-x64/pkg-src/jellyfin.spec index 2cf10ef0c..80b0f5fa4 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.spec +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.spec @@ -6,7 +6,6 @@ %global dotnet_runtime centos-x64 %endif -AutoReq: no Name: jellyfin Version: 10.1.0 Release: 1%{?dist} @@ -32,13 +31,11 @@ BuildRequires: dotnet-sdk-2.2 # RPMfusion free Requires: ffmpeg -# For the update-db-paths.sh script to fix emby paths to jellyfin -%{?fedora:Recommends: sqlite} - # Fedora has openssl1.1 which is incompatible with dotnet %{?fedora:Requires: compat-openssl10} -# Disable Automatic Dependency Processing for Centos -%{?el7:AutoReqProv: no} + +# Disable Automatic Dependency Processing +AutoReqProv: no %description Jellyfin is a free software media system that puts you in control of managing and streaming your media. -- cgit v1.2.3 From d573f2d67164803a1870dc85893ec3b81ea56525 Mon Sep 17 00:00:00 2001 From: Thomas Büttner Date: Sat, 2 Feb 2019 20:01:29 +0100 Subject: use cachedir option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Thomas Büttner --- deployment/fedora-package-x64/pkg-src/jellyfin.env | 2 +- deployment/fedora-package-x64/pkg-src/jellyfin.spec | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.env b/deployment/fedora-package-x64/pkg-src/jellyfin.env index f7f041f75..c23bfd470 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.env +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.env @@ -21,7 +21,7 @@ JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" JELLYFIN_CONFIG_DIRECTORY="/etc/jellyfin" JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" -JELLYFIN_CACHE_DIRECTORY="/var/log/jellyfin" +JELLYFIN_CACHE_DIRECTORY="/var/cache/jellyfin" # In-App service control JELLYFIN_RESTART_OPT="--restartpath /usr/libexec/jellyfin/restart.sh" # Additional options for the binary diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.spec b/deployment/fedora-package-x64/pkg-src/jellyfin.spec index 80b0f5fa4..851c40044 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.spec +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.spec @@ -61,6 +61,7 @@ EOF %{__mkdir} -p %{buildroot}%{_sharedstatedir}/jellyfin %{__mkdir} -p %{buildroot}%{_sysconfdir}/%{name} %{__mkdir} -p %{buildroot}%{_var}/log/jellyfin +%{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin %{__install} -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service %{__install} -D -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/%{name} @@ -88,8 +89,9 @@ EOF %config(noreplace) %attr(600,root,root) %{_sysconfdir}/sudoers.d/%{name}-sudoers %config(noreplace) %{_sysconfdir}/systemd/system/%{name}.service.d/override.conf %config(noreplace) %attr(644,jellyfin,jellyfin) %{_sysconfdir}/%{name}/logging.json -%attr(-,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin +%attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin %attr(-,jellyfin,jellyfin) %dir %{_var}/log/jellyfin +%attr(750,jellyfin,jellyfin) %dir %{_var}/cache/jellyfin %if 0%{?fedora} %license LICENSE %else @@ -104,7 +106,7 @@ getent passwd jellyfin >/dev/null || \ exit 0 %post -# Move existing configuration to /etc/jellyfin and symlink config to /etc/jellyfin +# Move existing configuration cache and logs to their new locations and symlink them. if [ $1 -gt 1 ] ; then service_state=$(systemctl is-active jellyfin.service) if [ "${service_state}" = "active" ]; then @@ -120,6 +122,11 @@ if [ $1 -gt 1 ] ; then rmdir %{_sharedstatedir}/%{name}/logs ln -sf %{_var}/log/jellyfin %{_sharedstatedir}/%{name}/logs fi + if [ ! -L %{_sharedstatedir}/%{name}/cache ]; then + mv %{_sharedstatedir}/%{name}/cache/* %{_var}/cache/jellyfin + rmdir %{_sharedstatedir}/%{name}/cache + ln -sf %{_var}/cache/jellyfin %{_sharedstatedir}/%{name}/cache + fi if [ "${service_state}" = "active" ]; then systemctl start jellyfin.service fi -- cgit v1.2.3 From be89d53a9e16e16f434c35e22814f1d9fe3fc16d Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sun, 3 Feb 2019 20:15:23 -0500 Subject: Handle new option parser properly --- deployment/debian-package-x64/pkg-src/conf/jellyfin | 16 ++++++++++------ .../debian-package-x64/pkg-src/jellyfin.service | 2 +- deployment/fedora-package-x64/pkg-src/jellyfin.env | 19 +++++++++++++------ .../fedora-package-x64/pkg-src/jellyfin.service | 2 +- 4 files changed, 25 insertions(+), 14 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin b/deployment/debian-package-x64/pkg-src/conf/jellyfin index c237e2d69..b052b2ec6 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin @@ -19,13 +19,17 @@ JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" JELLYFIN_CACHE_DIRECTORY="/var/cache/jellyfin" # Restart script for in-app server control -JELLYFIN_RESTART_OPT="--restartpath /usr/lib/jellyfin/restart.sh" +JELLYFIN_RESTART_OPT="--restartpath=/usr/lib/jellyfin/restart.sh" -# [OPTIONAL] ffmpeg binary paths -#JELLYFIN_FFMPEG_OPTS="--ffmpeg /usr/bin/ffmpeg --ffprobe /usr/bin/ffprobe" +# [OPTIONAL] ffmpeg binary paths, overriding the UI-configured values +#JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/bin/ffmpeg" +#JELLYFIN_FFPROBE_OPT="--ffprobe=/usr/bin/ffprobe" -# [OPTIONAL] Additional user-defined options for the binary -#JELLYFIN_ADD_OPTS="" +# [OPTIONAL] run Jellyfin as a headless service +#JELLYFIN_SERVICE_OPT="--service" + +# [OPTIONAL] run Jellyfin without the web app +#JELLYFIN_NOWEBAPP_OPT="--noautorunwebapp" # # SysV init/Upstart options @@ -34,4 +38,4 @@ JELLYFIN_RESTART_OPT="--restartpath /usr/lib/jellyfin/restart.sh" # Application username JELLYFIN_USER="jellyfin" # Full application command -JELLYFIN_ARGS="--datadir $JELLYFIN_DATA_DIRECTORY --configdir $JELLYFIN_CONFIG_DIRECTORY --logdir $JELLYFIN_LOG_DIRECTORY --cachedir $JELLYFIN_CACHE_DIRECTORY $JELLYFIN_RESTART_OPT $JELLYFIN_FFMPEG_OPTS $JELLYFIN_ADD_OPTS" +JELLYFIN_ARGS="--datadir=$JELLYFIN_DATA_DIRECTORY --configdir=$JELLYFIN_CONFIG_DIRECTORY --logdir=$JELLYFIN_LOG_DIRECTORY --cachedir=$JELLYFIN_CACHE_DIRECTORY $JELLYFIN_RESTART_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_FFPROBE_OPT $JELLYFIN_SERVICE_OPT $JELLFIN_NOWEBAPP_OPT" diff --git a/deployment/debian-package-x64/pkg-src/jellyfin.service b/deployment/debian-package-x64/pkg-src/jellyfin.service index ee89d7d4b..9c6c6667f 100644 --- a/deployment/debian-package-x64/pkg-src/jellyfin.service +++ b/deployment/debian-package-x64/pkg-src/jellyfin.service @@ -6,7 +6,7 @@ After = network.target Type = simple EnvironmentFile = /etc/default/jellyfin User = jellyfin -ExecStart = /usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPTS} ${JELLYFIN_ADD_OPTS} +ExecStart = /usr/bin/jellyfin --datadir=${JELLYFIN_DATA_DIRECTORY} --configdir=${JELLYFIN_CONFIG_DIRECTORY} --logdir=${JELLYFIN_LOG_DIRECTORY} --cachedir=${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPT} ${JELLYFIN_FFPROBE_OPT} ${JELLYFIN_SERVICE_OPT} ${JELLYFIN_NOWEBAPP_OPT} Restart = on-failure TimeoutSec = 15 diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.env b/deployment/fedora-package-x64/pkg-src/jellyfin.env index f7f041f75..11d5b0ab0 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.env +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.env @@ -14,15 +14,22 @@ # General options # -# Tell jellyfin wich ffmpeg/ffprobe to use -# JELLYFIN_FFMPEG="--ffmpeg /usr/bin/ffmpeg --ffprobe /usr/bin/ffprobe" - # Program directories JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" JELLYFIN_CONFIG_DIRECTORY="/etc/jellyfin" JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" JELLYFIN_CACHE_DIRECTORY="/var/log/jellyfin" + # In-App service control -JELLYFIN_RESTART_OPT="--restartpath /usr/libexec/jellyfin/restart.sh" -# Additional options for the binary -JELLYFIN_ADD_OPTS="" +JELLYFIN_RESTART_OPT="--restartpath=/usr/libexec/jellyfin/restart.sh" + +# [OPTIONAL] ffmpeg binary paths, overriding the UI-configured values +#JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/bin/ffmpeg" +#JELLYFIN_FFPROBE_OPT="--ffprobe=/usr/bin/ffprobe" + +# [OPTIONAL] run Jellyfin as a headless service +#JELLYFIN_SERVICE_OPT="--service" + +# [OPTIONAL] run Jellyfin without the web app +#JELLYFIN_NOWEBAPP_OPT="--noautorunwebapp" + diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.service b/deployment/fedora-package-x64/pkg-src/jellyfin.service index 56703a98a..d58df9d94 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.service +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.service @@ -5,7 +5,7 @@ Description=Jellyfin is a free software media system that puts you in control of [Service] EnvironmentFile=/etc/sysconfig/jellyfin WorkingDirectory=/var/lib/jellyfin -ExecStart=/usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_ADD_OPTS} ${JELLYFIN_FFMPEG} +ExecStart=/usr/bin/jellyfin --datadir=${JELLYFIN_DATA_DIRECTORY} --configdir=${JELLYFIN_CONFIG_DIRECTORY} --logdir=${JELLYFIN_LOG_DIRECTORY} --cachedir=${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPT} ${JELLYFIN_FFPROBE_OPT} ${JELLYFIN_SERVICE_OPT} ${JELLYFIN_NOWEBAPP_OPT} TimeoutSec=15 Restart=on-failure User=jellyfin -- cgit v1.2.3 From d351fa0c1e06862fd0cc7c68c0944ee0b8835809 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sun, 3 Feb 2019 22:57:39 -0500 Subject: Make Fedora package.sh script use bash --- deployment/fedora-package-x64/package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/package.sh b/deployment/fedora-package-x64/package.sh index d459cdb24..1d1329b03 100755 --- a/deployment/fedora-package-x64/package.sh +++ b/deployment/fedora-package-x64/package.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash source ../common.build.sh -- cgit v1.2.3 From f0e74c2c6b3fa8c94f0da222cde20a6b173db0b0 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Mon, 4 Feb 2019 00:26:23 -0500 Subject: Fix restart script for Debian --- .../debian-package-x64/pkg-src/bin/restart.sh | 10 +++++---- .../pkg-src/conf/jellyfin-sudoers | 24 +++++++++++----------- 2 files changed, 18 insertions(+), 16 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/bin/restart.sh b/deployment/debian-package-x64/pkg-src/bin/restart.sh index a6f4632ba..738f86727 100644 --- a/deployment/debian-package-x64/pkg-src/bin/restart.sh +++ b/deployment/debian-package-x64/pkg-src/bin/restart.sh @@ -2,10 +2,12 @@ NAME=jellyfin -restart_cmds=("s6-svc -t /var/run/s6/services/${NAME}" \ - "systemctl restart ${NAME}" \ - "service ${NAME} restart" \ - "/etc/init.d/${NAME} restart") +restart_cmds=( + "systemctl restart ${NAME}" + "service ${NAME} restart" + "/etc/init.d/${NAME} restart" + "s6-svc -t /var/run/s6/services/${NAME}" +) for restart_cmd in "${restart_cmds[@]}"; do cmd=$(echo "$restart_cmd" | awk '{print $1}') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers b/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers index 4eb91366b..b481ba4ad 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers @@ -10,15 +10,15 @@ 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 +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 @@ -31,7 +31,7 @@ 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 +jellyfin ALL=(ALL) NOPASSWD: /bin/mount +jellyfin ALL=(ALL) NOPASSWD: /bin/umount -Defaults:%jellyfin !requiretty +Defaults:jellyfin !requiretty -- cgit v1.2.3 From 72beadc74d524a5878feddb1769faab9296d38f7 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Mon, 4 Feb 2019 00:27:00 -0500 Subject: Fix restart script for Fedora/CentOS --- deployment/fedora-package-x64/pkg-src/jellyfin.sudoers | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers index b31d52f7e..ddd890ce1 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers @@ -4,16 +4,16 @@ Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemctl start jellyfin, /bin/systemc Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemctl stop jellyfin, /bin/systemctl stop jellyfin -%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD -%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD -%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD Defaults!RESTARTSERVER_SYSTEMD !requiretty Defaults!STARTSERVER_SYSTEMD !requiretty Defaults!STOPSERVER_SYSTEMD !requiretty # Uncomment to allow the server to mount iso images -# %jellyfin ALL=(ALL) NOPASSWD: /bin/mount -# %jellyfin ALL=(ALL) NOPASSWD: /bin/umount +# jellyfin ALL=(ALL) NOPASSWD: /bin/mount +# jellyfin ALL=(ALL) NOPASSWD: /bin/umount -Defaults:%jellyfin !requiretty +Defaults:jellyfin !requiretty -- cgit v1.2.3 From 546f4cd46f21561d9f39ee695fdfa6809e0d9c29 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 18:40:31 -0500 Subject: Add prerequisite keep_artifacts var --- build | 23 +++++++++++++++++------ deployment/README.md | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) (limited to 'deployment') diff --git a/build b/build index 7d49db72a..7413b60e3 100755 --- a/build +++ b/build @@ -23,7 +23,7 @@ usage() { echo -e "Usage:" echo -e " $ build --list-platforms" echo -e " $ build --list-actions " - echo -e " $ build [-b/--web-branch ] " + echo -e " $ build [-k/--keep-artifacts] [-b/--web-branch ] " echo -e "" echo -e "The web_branch defaults to the same branch name as the current main branch." echo -e "To build all platforms, use 'all'." @@ -67,6 +67,14 @@ if [[ $1 == '--list-actions' ]]; then exit 0 fi +# Parse keep-artifacts option +if [[ $1 == '-k' || $1 == '--keep-artifacts' ]]; then + keep_artifacts="y" + shift 1 +else + keep_artifacts="n" +fi + # Parse branch option if [[ $1 == '-b' || $1 == '--web-branch' ]]; then web_branch="$2" @@ -193,6 +201,13 @@ for target_platform in ${platform[@]}; do echo -e "> Processing platform ${target_platform}" date_start=$( date +%s ) pushd ${target_platform} + cleanup() { + echo -e ">> Processing action clean" + if [[ -f clean.sh && -x clean.sh ]]; then + ./clean.sh ${keep_artifacts} + fi + } + trap cleanup EXIT INT for target_action in ${action[@]}; do echo -e ">> Processing action ${target_action}" if [[ -f ${target_action}.sh && -x ${target_action}.sh ]]; then @@ -204,12 +219,8 @@ for target_platform in ${platform[@]}; do target_dir="../../../jellyfin-build/${target_platform}" mkdir -p ${target_dir} mv pkg-dist/* ${target_dir}/ - - echo -e ">> Processing action clean" - if [[ -f clean.sh && -x clean.sh ]]; then - ./clean.sh - fi fi + cleanup date_end=$( date +%s ) echo -e "> Completed platform ${target_platform} in $( expr ${date_end} - ${date_start} ) seconds." popd diff --git a/deployment/README.md b/deployment/README.md index 05b4ed51e..608d80e58 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -55,6 +55,8 @@ These builds are not necessarily run from the `build` script, but are present fo * The `clean` action should always `exit 0` even if no work is done or it fails. +* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories. + ### Output Files * Upon completion of the defined actions, at least one output file must be created in the `/pkg-dist` directory. -- cgit v1.2.3 From c846da4f9e7833252f209b2698c3b6359b20069d Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 18:40:50 -0500 Subject: Update Debian package build --- deployment/debian-package-x64/Dockerfile | 39 +++++++++++++------ deployment/debian-package-x64/clean.sh | 27 ++++++++++++- deployment/debian-package-x64/docker-build.sh | 16 ++++++++ deployment/debian-package-x64/package.sh | 55 ++++++++++++++------------- 4 files changed, 97 insertions(+), 40 deletions(-) create mode 100755 deployment/debian-package-x64/docker-build.sh (limited to 'deployment') diff --git a/deployment/debian-package-x64/Dockerfile b/deployment/debian-package-x64/Dockerfile index 2afe6c1d3..787f1d182 100644 --- a/deployment/debian-package-x64/Dockerfile +++ b/deployment/debian-package-x64/Dockerfile @@ -1,23 +1,40 @@ FROM debian:9 -ARG SOURCEDIR=/repo +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist ENV DEB_BUILD_OPTIONS=noddebs -# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current +# Prepare Debian build environment RUN apt-get update \ - && 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 \ + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev + +# Install dotnet repository +# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current +RUN 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 update \ + && apt-get install -y dotnet-sdk-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to Debian source dir; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian -WORKDIR ${SOURCEDIR} -COPY . . -COPY ./deployment/debian-package-x64/pkg-src ./debian +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ -RUN yes | mk-build-deps -i debian/control \ - && dpkg-buildpackage -us -uc +# Copy repository +COPY . ${SOURCE_DIR}/ -WORKDIR / +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/debian-package-x64/clean.sh b/deployment/debian-package-x64/clean.sh index 3df2d7796..101ba1fb6 100755 --- a/deployment/debian-package-x64/clean.sh +++ b/deployment/debian-package-x64/clean.sh @@ -2,6 +2,29 @@ source ../common.build.sh -VERSION=`get_version ../..` +keep_artifacts="${1}" -clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION} +WORKDIR="$( pwd )" +VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-debian-build" + +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/debian-package-x64/docker-build.sh b/deployment/debian-package-x64/docker-build.sh new file mode 100755 index 000000000..83654b8ce --- /dev/null +++ b/deployment/debian-package-x64/docker-build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Builds the DEB inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +# Build DEB +dpkg-buildpackage -us -uc + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/deb +mv /jellyfin_* ${ARTIFACT_DIR}/deb/ diff --git a/deployment/debian-package-x64/package.sh b/deployment/debian-package-x64/package.sh index dec953961..11da66aaa 100755 --- a/deployment/debian-package-x64/package.sh +++ b/deployment/debian-package-x64/package.sh @@ -2,30 +2,31 @@ source ../common.build.sh -VERSION=`get_version ../..` - -# TODO get the version in the package automatically. And using the changelog to decide the debian package suffix version. - -# Build a Jellyfin .deb file with Docker on Linux -# Places the output .deb file in the parent directory - -package_temporary_dir="`pwd`/pkg-dist-tmp" -output_dir="`pwd`/pkg-dist" -current_user="`whoami`" -image_name="jellyfin-debuild" - -cleanup() { - set +o errexit - docker image rm $image_name --force - rm -rf "$package_temporary_dir" -} -trap cleanup EXIT INT - -docker build ../.. -t "$image_name" -f ./Dockerfile --build-arg SOURCEDIR="/jellyfin-${VERSION}" -mkdir -p "$package_temporary_dir" -mkdir -p "$output_dir" -docker run --rm -v "$package_temporary_dir:/temp" "$image_name" sh -c 'find / -maxdepth 1 -type f -name "jellyfin*" -exec mv {} /temp \;' -chown -R "$current_user" "$package_temporary_dir" \ -|| sudo chown -R "$current_user" "$package_temporary_dir" - -mv "$package_temporary_dir"/* "$output_dir" +WORKDIR="$( pwd )" +VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-debian-build" + +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" +fi + +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the DEBs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the DEBs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null +# Move the DEBs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/deb/* "${output_dir}" -- cgit v1.2.3 From 88038d96448d57601e619572ed77d8c2f0fa4db9 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 18:41:02 -0500 Subject: Update Fedora package build --- deployment/fedora-package-x64/Dockerfile | 49 +++++++++++++----- deployment/fedora-package-x64/clean.sh | 42 ++++++++++----- deployment/fedora-package-x64/docker-build.sh | 20 ++++++++ deployment/fedora-package-x64/package.sh | 74 ++++++++++++--------------- 4 files changed, 118 insertions(+), 67 deletions(-) create mode 100755 deployment/fedora-package-x64/docker-build.sh (limited to 'deployment') diff --git a/deployment/fedora-package-x64/Dockerfile b/deployment/fedora-package-x64/Dockerfile index e5deac29f..7decba2e9 100644 --- a/deployment/fedora-package-x64/Dockerfile +++ b/deployment/fedora-package-x64/Dockerfile @@ -1,15 +1,36 @@ FROM fedora:29 -ARG HOME=/build -RUN mkdir /build && \ - dnf install -y @buildsys-build rpmdevtools dnf-plugins-core && \ - dnf copr enable -y @dotnet-sig/dotnet && \ - rpmdev-setuptree - -WORKDIR /build/rpmbuild -COPY ./deployment/fedora-package-x64/pkg-src/jellyfin.spec SPECS -COPY ./deployment/fedora-package-x64/pkg-src/ SOURCES - -RUN spectool -g -R SPECS/jellyfin.spec && \ - rpmbuild -bs SPECS/jellyfin.spec && \ - dnf build-dep -y SRPMS/jellyfin-*.src.rpm && \ - rpmbuild -bb SPECS/jellyfin.spec; \ No newline at end of file +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/fedora-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist + +# Prepare Fedora build environment +RUN dnf update -y \ + && dnf install -y @buildsys-build rpmdevtools dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ + && dnf copr enable -y @dotnet-sig/dotnet \ + && rpmdev-setuptree \ + && dnf install -y dotnet-sdk-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to RPM spec; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec + +# Link to RPM sources; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES + +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ + +# Copy repository +COPY . ${SOURCE_DIR}/ + +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/fedora-package-x64/clean.sh b/deployment/fedora-package-x64/clean.sh index d7233208f..fbd4d276d 100755 --- a/deployment/fedora-package-x64/clean.sh +++ b/deployment/fedora-package-x64/clean.sh @@ -2,17 +2,33 @@ source ../common.build.sh -VERSION=`get_version ../..` - -package_temporary_dir="`pwd`/pkg-dist-tmp" -pkg_src_dir="`pwd`/pkg-src" -image_name="jellyfin-rpmbuild" -docker_sudo="" -if ! $(id -Gn | grep -q 'docker') && [ ! ${EUID:-1000} -eq 0 ] && \ - [ ! $USER == "root" ] && ! $(echo "$OSTYPE" | grep -q "darwin"); then - docker_sudo=sudo -fi +keep_artifacts="${1}" + +WORKDIR="$( pwd )" +VERSION="$( grep -A1 '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +package_source_dir="${WORKDIR}/pkg-src" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-rpm-build" + +rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \ + || sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null -$docker_sudo docker image rm $image_name --force -rm -rf "$package_temporary_dir" -rm -rf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/fedora-package-x64/docker-build.sh b/deployment/fedora-package-x64/docker-build.sh new file mode 100755 index 000000000..3acf1ec0d --- /dev/null +++ b/deployment/fedora-package-x64/docker-build.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Builds the RPM inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +ls -al SOURCES/pkg-src/ + +# Build RPM +spectool -g -R SPECS/jellyfin.spec +rpmbuild -bs SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" +rpmbuild -bb SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/rpm +mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/ diff --git a/deployment/fedora-package-x64/package.sh b/deployment/fedora-package-x64/package.sh index 1d1329b03..088a41a35 100755 --- a/deployment/fedora-package-x64/package.sh +++ b/deployment/fedora-package-x64/package.sh @@ -2,37 +2,28 @@ source ../common.build.sh -VERSION=`get_version ../..` +WORKDIR="$( pwd )" +VERSION="$( grep '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" -# TODO get the version in the package automatically. And using the changelog to decide the debian package suffix version. +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +pkg_src_dir="${WORKDIR}/pkg-src" +current_user="$( whoami )" +image_name="jellyfin-rpm-build" -# Build a Jellyfin .rpm file with Docker on Linux -# Places the output .rpm file in the parent directory - -set -o errexit -set -o xtrace -set -o nounset - -package_temporary_dir="`pwd`/pkg-dist-tmp" -output_dir="`pwd`/pkg-dist" -pkg_src_dir="`pwd`/pkg-src" -current_user="`whoami`" -image_name="jellyfin-rpmbuild" -docker_sudo="" -if ! $(id -Gn | grep -q 'docker') && [ ! ${EUID:-1000} -eq 0 ] && \ - [ ! $USER == "root" ] && ! $(echo "$OSTYPE" | grep -q "darwin"); then - docker_sudo=sudo +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" fi -cleanup() { - set +o errexit - $docker_sudo docker image rm $image_name --force - rm -rf "$package_temporary_dir" - rm -rf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" -} -trap cleanup EXIT INT +# Create RPM source archive GNU_TAR=1 -mkdir -p "$package_temporary_dir" +mkdir -p "${package_temporary_dir}" echo "Bundling all sources for RPM build." tar \ --transform "s,^\.,jellyfin-${VERSION}," \ @@ -47,12 +38,12 @@ tar \ --exclude='**/.nuget' \ --exclude='*.deb' \ --exclude='*.rpm' \ --zcf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" \ +-czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" \ -C "../.." ./ || GNU_TAR=0 if [ $GNU_TAR -eq 0 ]; then echo "The installed tar binary did not support --transform. Using workaround." - mkdir -p "$package_temporary_dir/jellyfin-${VERSION}" + mkdir -p "${package_temporary_dir}/jellyfin" # Not GNU tar tar \ --exclude='.git*' \ @@ -67,20 +58,23 @@ if [ $GNU_TAR -eq 0 ]; then --exclude='*.deb' \ --exclude='*.rpm' \ -zcf \ - "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" \ - -C "../.." \ - ./ + "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" \ + -C "../.." ./ echo "Extracting filtered package." - tar -xzf "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" -C "$package_temporary_dir/jellyfin-${VERSION}" + tar -xzf "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}/jellyfin-${VERSION}" echo "Removing filtered package." - rm "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" + rm -f "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" echo "Repackaging package into final tarball." - tar -zcf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" -C "$package_temporary_dir" "jellyfin-${VERSION}" + tar -czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}" "jellyfin-${VERSION}" fi -$docker_sudo docker build ../.. -t "$image_name" -f ./Dockerfile -mkdir -p "$output_dir" -$docker_sudo docker run --rm -v "$package_temporary_dir:/temp" "$image_name" sh -c 'find /build/rpmbuild -maxdepth 3 -type f -name "jellyfin*.rpm" -exec mv {} /temp \;' -chown -R "$current_user" "$package_temporary_dir" \ -|| sudo chown -R "$current_user" "$package_temporary_dir" -mv "$package_temporary_dir"/*.rpm "$output_dir" +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the RPMs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the RPMs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" +# Move the RPMs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/rpm/* "${output_dir}" -- cgit v1.2.3 From 8413c56392eb331bc319cddf135b671ec0a80123 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 19:04:20 -0500 Subject: Update CentOS package build --- deployment/centos-package-x64/Dockerfile | 49 ++++++++++++++++++-------- deployment/centos-package-x64/dependencies.txt | 1 + deployment/centos-package-x64/docker-build.sh | 1 + 3 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 deployment/centos-package-x64/dependencies.txt create mode 120000 deployment/centos-package-x64/docker-build.sh (limited to 'deployment') diff --git a/deployment/centos-package-x64/Dockerfile b/deployment/centos-package-x64/Dockerfile index bbe5ffd27..89799bca2 100644 --- a/deployment/centos-package-x64/Dockerfile +++ b/deployment/centos-package-x64/Dockerfile @@ -1,15 +1,36 @@ FROM centos:7 -ARG HOME=/build -RUN mkdir /build && \ - yum install -y @buildsys-build rpmdevtools yum-plugins-core && \ - rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm && \ - rpmdev-setuptree - -WORKDIR /build/rpmbuild -COPY ./deployment/centos-package-x64/pkg-src/jellyfin.spec SPECS -COPY ./deployment/centos-package-x64/pkg-src/ SOURCES - -RUN spectool -g -R SPECS/jellyfin.spec && \ - rpmbuild -bs SPECS/jellyfin.spec && \ - yum-builddep -y SRPMS/jellyfin-*.src.rpm && \ - rpmbuild -bb SPECS/jellyfin.spec; \ No newline at end of file +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/centos-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist + +# Prepare CentOS build environment +RUN yum update -y \ + && yum install -y @buildsys-build rpmdevtools yum-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ + && rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm \ + && rpmdev-setuptree \ + && yum install -y dotnet-sdk-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to RPM spec; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec + +# Link to RPM sources; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES + +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ + +# Copy repository +COPY . ${SOURCE_DIR}/ + +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/centos-package-x64/dependencies.txt b/deployment/centos-package-x64/dependencies.txt new file mode 100644 index 000000000..bdb967096 --- /dev/null +++ b/deployment/centos-package-x64/dependencies.txt @@ -0,0 +1 @@ +docker diff --git a/deployment/centos-package-x64/docker-build.sh b/deployment/centos-package-x64/docker-build.sh new file mode 120000 index 000000000..7adc32954 --- /dev/null +++ b/deployment/centos-package-x64/docker-build.sh @@ -0,0 +1 @@ +../fedora-package-x64/docker-build.sh \ No newline at end of file -- cgit v1.2.3 From e1d523ee458d19ad412795b71d9dfb1c4fc7b688 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 21:37:56 -0500 Subject: Improve description of keep_artifacts flag --- deployment/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'deployment') diff --git a/deployment/README.md b/deployment/README.md index 608d80e58..a00cd3e6c 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -55,7 +55,7 @@ These builds are not necessarily run from the `build` script, but are present fo * The `clean` action should always `exit 0` even if no work is done or it fails. -* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories. +* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`, containing either the value `y` or `n`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories. ### Output Files -- cgit v1.2.3 From b8b650540d604dce7f9066cae6765488f4138198 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Wed, 6 Feb 2019 09:33:14 -0500 Subject: Allow Fedora/CentOS mounting by default --- deployment/fedora-package-x64/pkg-src/jellyfin.sudoers | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers index ddd890ce1..dd245af4b 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers @@ -12,8 +12,8 @@ Defaults!RESTARTSERVER_SYSTEMD !requiretty Defaults!STARTSERVER_SYSTEMD !requiretty Defaults!STOPSERVER_SYSTEMD !requiretty -# Uncomment to allow the server to mount iso images -# jellyfin ALL=(ALL) NOPASSWD: /bin/mount -# jellyfin ALL=(ALL) NOPASSWD: /bin/umount +# Allow the server to mount iso images +jellyfin ALL=(ALL) NOPASSWD: /bin/mount +jellyfin ALL=(ALL) NOPASSWD: /bin/umount Defaults:jellyfin !requiretty -- cgit v1.2.3 From da860e6e54bb938741d264c58569f809129b3792 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 20:35:50 -0500 Subject: Remove superfluous VERSION variables --- deployment/debian-package-x64/clean.sh | 1 - deployment/debian-package-x64/package.sh | 1 - 2 files changed, 2 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/clean.sh b/deployment/debian-package-x64/clean.sh index 101ba1fb6..b2960fcb3 100755 --- a/deployment/debian-package-x64/clean.sh +++ b/deployment/debian-package-x64/clean.sh @@ -5,7 +5,6 @@ source ../common.build.sh keep_artifacts="${1}" WORKDIR="$( pwd )" -VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" package_temporary_dir="${WORKDIR}/pkg-dist-tmp" output_dir="${WORKDIR}/pkg-dist" diff --git a/deployment/debian-package-x64/package.sh b/deployment/debian-package-x64/package.sh index 11da66aaa..d7c3f5809 100755 --- a/deployment/debian-package-x64/package.sh +++ b/deployment/debian-package-x64/package.sh @@ -3,7 +3,6 @@ source ../common.build.sh WORKDIR="$( pwd )" -VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" package_temporary_dir="${WORKDIR}/pkg-dist-tmp" output_dir="${WORKDIR}/pkg-dist" -- cgit v1.2.3 From 139e3c19ee1216ea68d9c1d79c2cb890faeb7f53 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 20:42:30 -0500 Subject: Replace symlinks with copies and update image name --- deployment/centos-package-x64/clean.sh | 35 +++++++++++- deployment/centos-package-x64/docker-build.sh | 21 ++++++- deployment/centos-package-x64/package.sh | 81 ++++++++++++++++++++++++++- 3 files changed, 134 insertions(+), 3 deletions(-) mode change 120000 => 100755 deployment/centos-package-x64/clean.sh mode change 120000 => 100755 deployment/centos-package-x64/docker-build.sh mode change 120000 => 100755 deployment/centos-package-x64/package.sh (limited to 'deployment') diff --git a/deployment/centos-package-x64/clean.sh b/deployment/centos-package-x64/clean.sh deleted file mode 120000 index d6d2d1c09..000000000 --- a/deployment/centos-package-x64/clean.sh +++ /dev/null @@ -1 +0,0 @@ -../fedora-package-x64/clean.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/clean.sh b/deployment/centos-package-x64/clean.sh new file mode 100755 index 000000000..7278372e1 --- /dev/null +++ b/deployment/centos-package-x64/clean.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +keep_artifacts="${1}" + +WORKDIR="$( pwd )" +VERSION="$( grep -A1 '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +package_source_dir="${WORKDIR}/pkg-src" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-centos-build" + +rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \ + || sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null + +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/centos-package-x64/docker-build.sh b/deployment/centos-package-x64/docker-build.sh deleted file mode 120000 index 7adc32954..000000000 --- a/deployment/centos-package-x64/docker-build.sh +++ /dev/null @@ -1 +0,0 @@ -../fedora-package-x64/docker-build.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/docker-build.sh b/deployment/centos-package-x64/docker-build.sh new file mode 100755 index 000000000..3acf1ec0d --- /dev/null +++ b/deployment/centos-package-x64/docker-build.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Builds the RPM inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +ls -al SOURCES/pkg-src/ + +# Build RPM +spectool -g -R SPECS/jellyfin.spec +rpmbuild -bs SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" +rpmbuild -bb SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/rpm +mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/ diff --git a/deployment/centos-package-x64/package.sh b/deployment/centos-package-x64/package.sh deleted file mode 120000 index a79de21eb..000000000 --- a/deployment/centos-package-x64/package.sh +++ /dev/null @@ -1 +0,0 @@ -../fedora-package-x64/package.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/package.sh b/deployment/centos-package-x64/package.sh new file mode 100755 index 000000000..27d686e46 --- /dev/null +++ b/deployment/centos-package-x64/package.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +WORKDIR="$( pwd )" +VERSION="$( grep '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +pkg_src_dir="${WORKDIR}/pkg-src" +current_user="$( whoami )" +image_name="jellyfin-centos-build" + +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" +fi + +# Create RPM source archive +GNU_TAR=1 +mkdir -p "${package_temporary_dir}" +echo "Bundling all sources for RPM build." +tar \ +--transform "s,^\.,jellyfin-${VERSION}," \ +--exclude='.git*' \ +--exclude='**/.git' \ +--exclude='**/.hg' \ +--exclude='**/.vs' \ +--exclude='**/.vscode' \ +--exclude='deployment' \ +--exclude='**/bin' \ +--exclude='**/obj' \ +--exclude='**/.nuget' \ +--exclude='*.deb' \ +--exclude='*.rpm' \ +-czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" \ +-C "../.." ./ || GNU_TAR=0 + +if [ $GNU_TAR -eq 0 ]; then + echo "The installed tar binary did not support --transform. Using workaround." + mkdir -p "${package_temporary_dir}/jellyfin" + # Not GNU tar + tar \ + --exclude='.git*' \ + --exclude='**/.git' \ + --exclude='**/.hg' \ + --exclude='**/.vs' \ + --exclude='**/.vscode' \ + --exclude='deployment' \ + --exclude='**/bin' \ + --exclude='**/obj' \ + --exclude='**/.nuget' \ + --exclude='*.deb' \ + --exclude='*.rpm' \ + -zcf \ + "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" \ + -C "../.." ./ + echo "Extracting filtered package." + tar -xzf "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}/jellyfin-${VERSION}" + echo "Removing filtered package." + rm -f "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" + echo "Repackaging package into final tarball." + tar -czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}" "jellyfin-${VERSION}" +fi + +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the RPMs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the RPMs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" +# Move the RPMs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/rpm/* "${output_dir}" -- cgit v1.2.3 From 37985c2e260a56c1512a56726afc136f264d8bbc Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 20:44:41 -0500 Subject: Update image name --- deployment/fedora-package-x64/clean.sh | 2 +- deployment/fedora-package-x64/package.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/clean.sh b/deployment/fedora-package-x64/clean.sh index fbd4d276d..408167e49 100755 --- a/deployment/fedora-package-x64/clean.sh +++ b/deployment/fedora-package-x64/clean.sh @@ -11,7 +11,7 @@ package_temporary_dir="${WORKDIR}/pkg-dist-tmp" package_source_dir="${WORKDIR}/pkg-src" output_dir="${WORKDIR}/pkg-dist" current_user="$( whoami )" -image_name="jellyfin-rpm-build" +image_name="jellyfin-fedora-build" rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \ || sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null diff --git a/deployment/fedora-package-x64/package.sh b/deployment/fedora-package-x64/package.sh index 088a41a35..74586417d 100755 --- a/deployment/fedora-package-x64/package.sh +++ b/deployment/fedora-package-x64/package.sh @@ -9,7 +9,7 @@ package_temporary_dir="${WORKDIR}/pkg-dist-tmp" output_dir="${WORKDIR}/pkg-dist" pkg_src_dir="${WORKDIR}/pkg-src" current_user="$( whoami )" -image_name="jellyfin-rpm-build" +image_name="jellyfin-fedora-build" # Determine if sudo should be used for Docker if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ -- cgit v1.2.3 From 3014866f65eb1573e189867b42f8892fc54a2019 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 21:08:34 -0500 Subject: Add similar Ubuntu build package --- deployment/ubuntu-package-x64/Dockerfile | 40 ++++++++++++++++++++++++++ deployment/ubuntu-package-x64/clean.sh | 29 +++++++++++++++++++ deployment/ubuntu-package-x64/dependencies.txt | 1 + deployment/ubuntu-package-x64/docker-build.sh | 16 +++++++++++ deployment/ubuntu-package-x64/package.sh | 31 ++++++++++++++++++++ deployment/ubuntu-package-x64/pkg-src | 1 + 6 files changed, 118 insertions(+) create mode 100644 deployment/ubuntu-package-x64/Dockerfile create mode 100755 deployment/ubuntu-package-x64/clean.sh create mode 100644 deployment/ubuntu-package-x64/dependencies.txt create mode 100755 deployment/ubuntu-package-x64/docker-build.sh create mode 100755 deployment/ubuntu-package-x64/package.sh create mode 120000 deployment/ubuntu-package-x64/pkg-src (limited to 'deployment') diff --git a/deployment/ubuntu-package-x64/Dockerfile b/deployment/ubuntu-package-x64/Dockerfile new file mode 100644 index 000000000..471f50c27 --- /dev/null +++ b/deployment/ubuntu-package-x64/Dockerfile @@ -0,0 +1,40 @@ +FROM ubuntu:18.04 +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist +ENV DEB_BUILD_OPTIONS=noddebs + +# Prepare Debian build environment +RUN apt-get update \ + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev + +# Install dotnet repository +# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current +RUN 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/ubuntu/18.04/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-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to Debian source dir; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian + +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ + +# Copy repository +COPY . ${SOURCE_DIR}/ + +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/ubuntu-package-x64/clean.sh b/deployment/ubuntu-package-x64/clean.sh new file mode 100755 index 000000000..c92c7fdec --- /dev/null +++ b/deployment/ubuntu-package-x64/clean.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +keep_artifacts="${1}" + +WORKDIR="$( pwd )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-ubuntu-build" + +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/ubuntu-package-x64/dependencies.txt b/deployment/ubuntu-package-x64/dependencies.txt new file mode 100644 index 000000000..bdb967096 --- /dev/null +++ b/deployment/ubuntu-package-x64/dependencies.txt @@ -0,0 +1 @@ +docker diff --git a/deployment/ubuntu-package-x64/docker-build.sh b/deployment/ubuntu-package-x64/docker-build.sh new file mode 100755 index 000000000..83654b8ce --- /dev/null +++ b/deployment/ubuntu-package-x64/docker-build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Builds the DEB inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +# Build DEB +dpkg-buildpackage -us -uc + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/deb +mv /jellyfin_* ${ARTIFACT_DIR}/deb/ diff --git a/deployment/ubuntu-package-x64/package.sh b/deployment/ubuntu-package-x64/package.sh new file mode 100755 index 000000000..6d4625a19 --- /dev/null +++ b/deployment/ubuntu-package-x64/package.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +WORKDIR="$( pwd )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-ubuntu-build" + +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" +fi + +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the DEBs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the DEBs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null +# Move the DEBs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/deb/* "${output_dir}" diff --git a/deployment/ubuntu-package-x64/pkg-src b/deployment/ubuntu-package-x64/pkg-src new file mode 120000 index 000000000..4c695fea1 --- /dev/null +++ b/deployment/ubuntu-package-x64/pkg-src @@ -0,0 +1 @@ +../debian-package-x64/pkg-src \ No newline at end of file -- cgit v1.2.3 From 7be4a8500c29d58dff9af5a3bf85edeb5d6b73b6 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:02:27 -0500 Subject: Use Microsoft dotnet Docker images --- deployment/debian-package-x64/Dockerfile | 24 ++++-------------------- deployment/ubuntu-package-x64/Dockerfile | 26 +++++--------------------- 2 files changed, 9 insertions(+), 41 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/Dockerfile b/deployment/debian-package-x64/Dockerfile index 787f1d182..da66c9f94 100644 --- a/deployment/debian-package-x64/Dockerfile +++ b/deployment/debian-package-x64/Dockerfile @@ -1,9 +1,8 @@ -FROM debian:9 +FROM microsoft/dotnet:2.2-sdk-stretch # Docker build arguments ARG SOURCE_DIR=/jellyfin ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-x64 ARG ARTIFACT_DIR=/dist -ARG SDK_VERSION=2.2 # Docker run environment ENV SOURCE_DIR=/jellyfin ENV ARTIFACT_DIR=/dist @@ -11,24 +10,9 @@ ENV DEB_BUILD_OPTIONS=noddebs # Prepare Debian build environment RUN apt-get update \ - && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev - -# Install dotnet repository -# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current -RUN 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-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to Debian source dir; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian # Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ diff --git a/deployment/ubuntu-package-x64/Dockerfile b/deployment/ubuntu-package-x64/Dockerfile index 471f50c27..047d6a7a2 100644 --- a/deployment/ubuntu-package-x64/Dockerfile +++ b/deployment/ubuntu-package-x64/Dockerfile @@ -1,34 +1,18 @@ -FROM ubuntu:18.04 +FROM microsoft/dotnet:2.2-sdk-bionic # Docker build arguments ARG SOURCE_DIR=/jellyfin ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-x64 ARG ARTIFACT_DIR=/dist -ARG SDK_VERSION=2.2 # Docker run environment ENV SOURCE_DIR=/jellyfin ENV ARTIFACT_DIR=/dist ENV DEB_BUILD_OPTIONS=noddebs -# Prepare Debian build environment +# Prepare Ubuntu build environment RUN apt-get update \ - && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev - -# Install dotnet repository -# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current -RUN 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/ubuntu/18.04/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-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to Debian source dir; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian # Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -- cgit v1.2.3 From 57cefb432a052eb3d10019cf219a0eb8a5dfe088 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:06:27 -0500 Subject: Combine various RUNs in Fedora/CentOS --- deployment/centos-package-x64/Dockerfile | 16 +++++----------- deployment/fedora-package-x64/Dockerfile | 16 +++++----------- 2 files changed, 10 insertions(+), 22 deletions(-) (limited to 'deployment') diff --git a/deployment/centos-package-x64/Dockerfile b/deployment/centos-package-x64/Dockerfile index 89799bca2..4cb288c84 100644 --- a/deployment/centos-package-x64/Dockerfile +++ b/deployment/centos-package-x64/Dockerfile @@ -13,17 +13,11 @@ RUN yum update -y \ && yum install -y @buildsys-build rpmdevtools yum-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ && rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm \ && rpmdev-setuptree \ - && yum install -y dotnet-sdk-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to RPM spec; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SPECS \ - && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec - -# Link to RPM sources; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && yum install -y dotnet-sdk-${SDK_VERSION} \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \ + && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES # Prepare artifact volume diff --git a/deployment/fedora-package-x64/Dockerfile b/deployment/fedora-package-x64/Dockerfile index 7decba2e9..944f489b5 100644 --- a/deployment/fedora-package-x64/Dockerfile +++ b/deployment/fedora-package-x64/Dockerfile @@ -13,17 +13,11 @@ RUN dnf update -y \ && dnf install -y @buildsys-build rpmdevtools dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ && dnf copr enable -y @dotnet-sig/dotnet \ && rpmdev-setuptree \ - && dnf install -y dotnet-sdk-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to RPM spec; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SPECS \ - && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec - -# Link to RPM sources; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && dnf install -y dotnet-sdk-${SDK_VERSION} \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \ + && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES # Prepare artifact volume -- cgit v1.2.3 From 00234a5ece42126ec5039aa243d4a679589be33e Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:12:55 -0500 Subject: Remove superfluous comments --- deployment/centos-package-x64/Dockerfile | 3 --- deployment/debian-package-x64/Dockerfile | 3 --- deployment/fedora-package-x64/Dockerfile | 3 --- deployment/ubuntu-package-x64/Dockerfile | 3 --- 4 files changed, 12 deletions(-) (limited to 'deployment') diff --git a/deployment/centos-package-x64/Dockerfile b/deployment/centos-package-x64/Dockerfile index 4cb288c84..38853f173 100644 --- a/deployment/centos-package-x64/Dockerfile +++ b/deployment/centos-package-x64/Dockerfile @@ -20,11 +20,8 @@ RUN yum update -y \ && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/debian-package-x64/Dockerfile b/deployment/debian-package-x64/Dockerfile index da66c9f94..9819cc20d 100644 --- a/deployment/debian-package-x64/Dockerfile +++ b/deployment/debian-package-x64/Dockerfile @@ -14,11 +14,8 @@ RUN apt-get update \ && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/fedora-package-x64/Dockerfile b/deployment/fedora-package-x64/Dockerfile index 944f489b5..8bb1d527d 100644 --- a/deployment/fedora-package-x64/Dockerfile +++ b/deployment/fedora-package-x64/Dockerfile @@ -20,11 +20,8 @@ RUN dnf update -y \ && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/ubuntu-package-x64/Dockerfile b/deployment/ubuntu-package-x64/Dockerfile index 047d6a7a2..485b6c42c 100644 --- a/deployment/ubuntu-package-x64/Dockerfile +++ b/deployment/ubuntu-package-x64/Dockerfile @@ -14,11 +14,8 @@ RUN apt-get update \ && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] -- cgit v1.2.3 From fb256b7aa0cf500c54fd1a1fa8295a0dac9520b1 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:32:06 -0500 Subject: Fix control file for Microsoft Docker setup --- deployment/debian-package-x64/docker-build.sh | 3 +++ deployment/ubuntu-package-x64/docker-build.sh | 3 +++ 2 files changed, 6 insertions(+) (limited to 'deployment') diff --git a/deployment/debian-package-x64/docker-build.sh b/deployment/debian-package-x64/docker-build.sh index 83654b8ce..0590be097 100755 --- a/deployment/debian-package-x64/docker-build.sh +++ b/deployment/debian-package-x64/docker-build.sh @@ -8,6 +8,9 @@ set -o xtrace # Move to source directory pushd ${SOURCE_DIR} +# Remove build-dep for dotnet-sdk-2.2, since it's not a package in this image +sed -i '/dotnet-sdk-2.2,/d' debian/control + # Build DEB dpkg-buildpackage -us -uc diff --git a/deployment/ubuntu-package-x64/docker-build.sh b/deployment/ubuntu-package-x64/docker-build.sh index 83654b8ce..0590be097 100755 --- a/deployment/ubuntu-package-x64/docker-build.sh +++ b/deployment/ubuntu-package-x64/docker-build.sh @@ -8,6 +8,9 @@ set -o xtrace # Move to source directory pushd ${SOURCE_DIR} +# Remove build-dep for dotnet-sdk-2.2, since it's not a package in this image +sed -i '/dotnet-sdk-2.2,/d' debian/control + # Build DEB dpkg-buildpackage -us -uc -- cgit v1.2.3