瀏覽代碼

Build scripts and build system consolidation.

Squashed commit.
Erwin de Haan 6 年之前
父節點
當前提交
399a079dd4
共有 66 個文件被更改,包括 605 次插入217 次删除
  1. 3 0
      .dockerignore
  2. 1 1
      .drone.yml
  3. 21 13
      .gitignore
  4. 0 24
      build-deb.sh
  5. 0 37
      debian/bin/jellyfin-sudoers
  6. 0 18
      debian/bin/restart.sh
  7. 0 1
      debian/source/options
  8. 8 0
      deployment/README.md
  9. 23 0
      deployment/build.sh
  10. 21 0
      deployment/clean.sh
  11. 20 0
      deployment/collect_all.sh
  12. 108 0
      deployment/common.build.sh
  13. 7 6
      deployment/debian-package-x64/Dockerfile
  14. 7 0
      deployment/debian-package-x64/clean.sh
  15. 33 0
      deployment/debian-package-x64/package.sh
  16. 0 0
      deployment/debian-package-x64/pkg-src/changelog
  17. 0 0
      deployment/debian-package-x64/pkg-src/compat
  18. 0 0
      deployment/debian-package-x64/pkg-src/conf/jellyfin
  19. 0 0
      deployment/debian-package-x64/pkg-src/conf/jellyfin.service.conf
  20. 0 0
      deployment/debian-package-x64/pkg-src/conf/logging.json
  21. 0 0
      deployment/debian-package-x64/pkg-src/control
  22. 0 0
      deployment/debian-package-x64/pkg-src/copyright
  23. 1 1
      deployment/debian-package-x64/pkg-src/gbp.conf
  24. 0 0
      deployment/debian-package-x64/pkg-src/install
  25. 0 0
      deployment/debian-package-x64/pkg-src/jellyfin.init
  26. 0 0
      deployment/debian-package-x64/pkg-src/jellyfin.service
  27. 0 0
      deployment/debian-package-x64/pkg-src/jellyfin.upstart
  28. 0 0
      deployment/debian-package-x64/pkg-src/po/POTFILES.in
  29. 0 0
      deployment/debian-package-x64/pkg-src/po/templates.pot
  30. 0 0
      deployment/debian-package-x64/pkg-src/postinst
  31. 0 0
      deployment/debian-package-x64/pkg-src/postrm
  32. 0 0
      deployment/debian-package-x64/pkg-src/preinst
  33. 0 0
      deployment/debian-package-x64/pkg-src/prerm
  34. 3 3
      deployment/debian-package-x64/pkg-src/rules
  35. 0 0
      deployment/debian-package-x64/pkg-src/source.lintian-overrides
  36. 0 0
      deployment/debian-package-x64/pkg-src/source/format
  37. 11 0
      deployment/debian-package-x64/pkg-src/source/options
  38. 7 0
      deployment/debian-x64/build.sh
  39. 7 0
      deployment/debian-x64/clean.sh
  40. 7 0
      deployment/debian-x64/package.sh
  41. 2 2
      deployment/docker/Dockerfile
  42. 1 1
      deployment/docker/Dockerfile.aarch64
  43. 7 0
      deployment/docker/build.sh
  44. 8 0
      deployment/framework/build.sh
  45. 7 0
      deployment/framework/clean.sh
  46. 7 0
      deployment/framework/package.sh
  47. 7 0
      deployment/linux-x64/build.sh
  48. 7 0
      deployment/linux-x64/clean.sh
  49. 7 0
      deployment/linux-x64/package.sh
  50. 7 0
      deployment/osx-x64/build.sh
  51. 7 0
      deployment/osx-x64/clean.sh
  52. 7 0
      deployment/osx-x64/package.sh
  53. 7 0
      deployment/ubuntu-x64/build.sh
  54. 7 0
      deployment/ubuntu-x64/clean.sh
  55. 7 0
      deployment/ubuntu-x64/package.sh
  56. 15 0
      deployment/unraid/docker-templates/README.md
  57. 51 0
      deployment/unraid/docker-templates/jellyfin.xml
  58. 110 110
      deployment/win-generic/build-jellyfin.ps1
  59. 0 0
      deployment/win-generic/install-jellyfin.ps1
  60. 0 0
      deployment/win-generic/install.bat
  61. 7 0
      deployment/win-x64/build.sh
  62. 7 0
      deployment/win-x64/clean.sh
  63. 9 0
      deployment/win-x64/package.sh
  64. 7 0
      deployment/win-x86/build.sh
  65. 7 0
      deployment/win-x86/clean.sh
  66. 9 0
      deployment/win-x86/package.sh

+ 3 - 0
.dockerignore

@@ -3,3 +3,6 @@
 Dockerfile
 CONTRIBUTORS.md
 README.md
+deployment/*/dist
+deployment/*/pkg-dist
+deployment/collect-dist/

+ 1 - 1
.drone.yml

@@ -9,4 +9,4 @@ steps:
 - name: build
   image: microsoft/dotnet:2-sdk
   commands:
-    - dotnet publish --configuration release --output /release
+    - dotnet publish --configuration release --output /release Jellyfin.Server

+ 21 - 13
.gitignore

@@ -1,5 +1,3 @@
-!*
-
 .directory
 
 #################
@@ -49,6 +47,8 @@ ProgramData-UI*/
 ## Ignore Visual Studio temporary files, build results, and
 ## files generated by popular Visual Studio add-ons.
 
+.vs/
+
 # User-specific files
 *.suo
 *.user
@@ -204,7 +204,6 @@ $RECYCLE.BIN/
 # Mac crap
 .DS_Store
 
-
 #############
 ## Python
 #############
@@ -234,23 +233,32 @@ pip-log.txt
 
 #Mr Developer
 .mr.developer.cfg
-/.vs
 
 ##########
 # Rider
 ##########
 .idea/
 
+##########
+# Visual Studio Code
+##########
+.vscode/
+
 #########################
-# Debian build artifacts
+# Build artifacts
 #########################
 
-debian/.debhelper/
-debian/*.debhelper
-debian/debhelper-build-stamp
-debian/files
-debian/jellyfin.substvars
-debian/jellyfin/
-
+# Artifacts for debian-x64
+deployment/debian-x64/pkg-src/.debhelper/
+deployment/debian-x64/pkg-src/*.debhelper
+deployment/debian-x64/pkg-src/debhelper-build-stamp
+deployment/debian-x64/pkg-src/files
+deployment/debian-x64/pkg-src/jellyfin.substvars
+deployment/debian-x64/pkg-src/jellyfin/
 # Don't ignore the debian/bin folder
-!debian/bin/
+!deployment/debian-x64/pkg-src/bin/
+
+deployment/**/dist/
+deployment/**/pkg-dist/
+deployment/collect-dist/
+

+ 0 - 24
build-deb.sh

@@ -1,24 +0,0 @@
-#!/usr/bin/env sh
-
-# Build a Jellyfin .deb file with Docker on Linux
-# Places the output .deb file in the parent directory
-
-set -o errexit
-set -o xtrace
-set -o nounset
-
-package_temporary_dir="`mktemp -d`"
-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.debian_package
-docker run --rm -v "$package_temporary_dir:/temp" "$image_name" cp -r /dist /temp/
-sudo chown -R "$current_user" "$package_temporary_dir"
-mv "$package_temporary_dir"/dist/*.deb ../

+ 0 - 37
debian/bin/jellyfin-sudoers

@@ -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

+ 0 - 18
debian/bin/restart.sh

@@ -1,18 +0,0 @@
-#!/bin/bash
-
-NAME=jellyfin
-
-restart_cmds=("s6-svc -t /var/run/s6/services/${NAME}" \
-  "systemctl restart ${NAME}" \
-  "service ${NAME} restart" \
-  "/etc/init.d/${NAME} restart") 
-
-for restart_cmd in "${restart_cmds[@]}"; do
-  cmd=$(echo "$restart_cmd" | awk '{print $1}')
-  cmd_loc=$(command -v ${cmd})
-  if [[ -n "$cmd_loc" ]]; then
-    restart_cmd=$(echo "$restart_cmd" | sed -e "s%${cmd}%${cmd_loc}%")
-    echo "sleep 2; sudo $restart_cmd > /dev/null 2>&1" | at now > /dev/null 2>&1
-    exit 0
-  fi
-done

+ 0 - 1
debian/source/options

@@ -1 +0,0 @@
-tar-ignore = ".git*"

+ 8 - 0
deployment/README.md

@@ -0,0 +1,8 @@
+# Build scripts
+
+All `build.sh` and `package.sh` scripts are for *nix platforms (or WSL on Windows 10).
+
+After running both, check the `*/pkg-dist/` folders for the archives and packages.
+
+`build_all.sh` will invoke every build and package script.
+Use `collect_all.sh` to copy all artifact to one directory for easy uploading.

+ 23 - 0
deployment/build.sh

@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+# Execute all build.sh and package.sh and sign.sh scripts in every folder. In that order. Script should check for artifacts themselves.
+echo "Running for platforms '$@'."
+for directory in */ ; do
+    platform=`basename "${directory}"`
+    if [[ $@ == *"$platform"* || $@ = *"all"* ]]; then
+        echo "Processing ${platform}"
+        pushd "$platform"
+        if [ -f build.sh ]; then
+            echo ./build.sh 
+        fi  
+        if [ -f package.sh ]; then
+            echo ./package.sh
+        fi
+        if [ -f sign.sh ]; then
+            echo ./sign.sh
+        fi
+        popd
+    else
+        echo "Skipping $platform."
+    fi
+done

+ 21 - 0
deployment/clean.sh

@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+set -e
+
+# Execute every clean.sh scripts in every folder.
+echo "Running for platforms '$@'."
+for directory in */ ; do
+    platform=`basename "${directory}"`
+    if [[ $@ == *"$platform"* || $@ = *"all"* ]]; then
+        echo "Processing ${platform}"
+        pushd "$platform"
+        if [ -f clean.sh ]; then
+            echo ./clean.sh 
+        fi
+        popd
+    else
+        echo "Skipping $platform."
+    fi
+done
+
+rm -rf ./collect-dist

+ 20 - 0
deployment/collect_all.sh

@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+source common.build.sh
+
+VERSION=`get_version ..`
+
+COLLECT_DIR="./collect-dist"
+
+mkdir -p ./collect-dist
+
+DIRS=`find . -type d -name "pkg-dist"`
+
+while read directory
+do
+    echo "Collecting everything from '$directory'.."
+    PLATFORM=$(basename "$(dirname "$directory")")
+    # Copy all artifacts with extensions tar.gz, deb, exe, zip, rpm and add the platform name to resolve any duplicates.
+    find $directory \( -name "jellyfin*.tar.gz" -o -name "jellyfin*.deb" -o -name "jellyfin*.rpm" -o -name "jellyfin*.zip" -o -name "jellyfin*.exe" \) -exec sh -c 'cp "$1" "'${COLLECT_DIR}'/jellyfin_'${PLATFORM}'_${1#*jellyfin_}"' _ {} \;
+
+done <<< "${DIRS}"

+ 108 - 0
deployment/common.build.sh

@@ -0,0 +1,108 @@
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+CYAN='\033[0;36m'
+NC='\033[0m' # No Color
+
+DEFAULT_BUILD_CONTEXT="../.."
+DEFAULT_ROOT="."
+DEFAULT_DOTNETRUNTIME="framework"
+DEFAULT_CONFIG="Release"
+DEFAULT_OUTPUT_DIR="dist/jellyfin-git"
+DEFAULT_PKG_DIR="pkg-dist"
+DEFAULT_DOCKERFILE="Dockerfile"
+DEFAULT_IMAGE_TAG="jellyfin:"`git rev-parse --abbrev-ref HEAD`
+
+# Run a build
+build_jellyfin()
+(
+    ROOT=${1-$DEFAULT_ROOT}
+    CONFIG=${2-$DEFAULT_CONFIG}
+    DOTNETRUNTIME=${3-$DEFAULT_DOTNETRUNTIME}
+    OUTPUT_DIR=${4-$DEFAULT_OUTPUT_DIR}
+
+    echo -e "${CYAN}Building jellyfin in '${ROOT}' for ${DOTNETRUNTIME} with configuration ${CONFIG} and output directory '${OUTPUT_DIR}'.${NC}"
+    if [[ $DOTNETRUNTIME == 'framework' ]]; then
+        dotnet publish "${ROOT}" --configuration "${CONFIG}" --output="${OUTPUT_DIR}"
+    else
+        dotnet publish "${ROOT}" --configuration "${CONFIG}" --output="${OUTPUT_DIR}" --self-contained --runtime ${DOTNETRUNTIME}
+    fi    
+    EXIT_CODE=$?
+    if [ $EXIT_CODE -eq 0 ]; then
+        echo -e "${GREEN}[DONE] Build jellyfin in '${ROOT}' for ${DOTNETRUNTIME} with configuration ${CONFIG} and output directory '${OUTPUT_DIR}' complete.${NC}"
+    else
+        echo -e "${RED}[FAIL] Build jellyfin in '${ROOT}' for ${DOTNETRUNTIME} with configuration ${CONFIG} and output directory '${OUTPUT_DIR}' FAILED.${NC}"
+    fi    
+)
+
+# Run a docker
+build_jellyfin_docker()
+(
+    BUILD_CONTEXT=${1-$DEFAULT_BUILD_CONTEXT}
+    DOCKERFILE=${2-$DEFAULT_DOCKERFILE}
+    IMAGE_TAG=${3-$DEFAULT_IMAGE_TAG}
+
+    echo -e "${CYAN}Building jellyfin docker image in '${ROOT}' with Dockerfile ${CONFIG} and tag '${IMAGE_TAG}'.${NC}"
+    docker build -t ${IMAGE_TAG} -f ${DOCKERFILE} ${ROOT}
+    EXIT_CODE=$?
+    if [ $EXIT_CODE -eq 0 ]; then
+        echo -e "${GREEN}[DONE] Building jellyfin docker image in '${ROOT}' with Dockerfile ${CONFIG} and tag '${IMAGE_TAG}' complete.${NC}"
+    else
+        echo -e "${RED}[FAIL] Building jellyfin docker image in '${ROOT}' with Dockerfile ${CONFIG} and tag '${IMAGE_TAG}' FAILED.${NC}"
+    fi    
+)
+
+# Clean a build
+clean_jellyfin()
+(
+    local ROOT=${1-$DEFAULT_ROOT}
+    local CONFIG=${2-$DEFAULT_CONFIG}
+    local OUTPUT_DIR=${3-$DEFAULT_OUTPUT_DIR}
+    local PKG_DIR=${4-$DEFAULT_PKG_DIR}
+    echo -e "${CYAN}Cleaning jellyfin in '${ROOT}'' with configuration ${CONFIG} and output directory '${OUTPUT_DIR}'.${NC}"
+    echo -e "${CYAN}Deleting '${OUTPUT_DIR}'${NC}"
+    rm -rf "$OUTPUT_DIR"
+    echo -e "${CYAN}Deleting '${PKG_DIR}'${NC}"
+    rm -rf "$PKG_DIR"
+    dotnet clean "${ROOT}" -maxcpucount:1 --configuration ${CONFIG}
+    local EXIT_CODE=$?
+    if [ $EXIT_CODE -eq 0 ]; then
+        echo -e "${GREEN}[DONE] Clean jellyfin in '${ROOT}' with configuration ${CONFIG} and output directory '${OUTPUT_DIR}' complete.${NC}"
+    else
+        echo -e "${RED}[FAIL] Clean jellyfin in '${ROOT}' with configuration ${CONFIG} and output directory '${OUTPUT_DIR}' failed.${NC}"
+    fi
+)
+
+# Parse the version from the AssemblyVersion
+get_version()
+(
+    local ROOT=${1-$DEFAULT_ROOT}
+    grep "AssemblyVersion" ${ROOT}/SharedVersion.cs | sed -E 's/\[assembly: ?AssemblyVersion\("([0-9\.]+)"\)\]/\1/'  | sed -E 's/.0$//'
+)
+
+# Packages the output folder into an archive.
+package_portable()
+(
+    local ROOT=${1-$DEFAULT_ROOT}
+    local OUTPUT_DIR=${2-$DEFAULT_OUTPUT_DIR}
+    local PKG_DIR=${3-$DEFAULT_PKG_DIR}
+    # Package portable build result
+    if [ -d ${OUTPUT_DIR} ]; then        
+        echo -e "${CYAN}Packaging build in '${OUTPUT_DIR}' for `basename "${OUTPUT_DIR}"` to '${PKG_DIR}' with root '${ROOT}'.${NC}"
+        mkdir -p ${PKG_DIR}
+        tar -zcvf "${PKG_DIR}/`basename "${OUTPUT_DIR}"`.portable.tar.gz" -C "`dirname "${OUTPUT_DIR}"`" "`basename "${OUTPUT_DIR}"`"
+        local EXIT_CODE=$?
+        if [ $EXIT_CODE -eq 0 ]; then
+            echo -e "${GREEN}[DONE] Packaging build in '${OUTPUT_DIR}' for `basename "${OUTPUT_DIR}"` to '${PKG_DIR}' with root '${ROOT}' complete.${NC}"
+        else
+            echo -e "${RED}[FAIL] Packaging build in '${OUTPUT_DIR}' for `basename "${OUTPUT_DIR}"` to '${PKG_DIR}' with root '${ROOT}' FAILED.${NC}"
+        fi       
+    else
+        echo -e "${RED}[FAIL] Build artifacts do not exist for ${OUTPUT_DIR}. Run build.sh first.${NC}"
+    fi
+)
+

+ 7 - 6
Dockerfile.debian_package → deployment/debian-package-x64/Dockerfile

@@ -1,4 +1,6 @@
 FROM debian:9
+ARG SOURCEDIR=/repo 
+ENV DEB_BUILD_OPTIONS=noddebs
 
 # https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
 RUN apt-get update \
@@ -11,12 +13,11 @@ RUN apt-get update \
  && chown root:root /etc/apt/sources.list.d/microsoft-prod.list \
  && apt-get update
 
-WORKDIR /repo
+WORKDIR ${SOURCEDIR}
 COPY . .
+COPY ./deployment/debian-x64/pkg-src ./debian
 
-RUN yes|mk-build-deps -i \
- && dpkg-buildpackage -us -uc \
- && mkdir /dist \
- && mv /jellyfin*deb /dist
+RUN yes | mk-build-deps -i debian/control \
+    && dpkg-buildpackage -us -uc
 
-WORKDIR /dist
+WORKDIR /

+ 7 - 0
deployment/debian-package-x64/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 33 - 0
deployment/debian-package-x64/package.sh

@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+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"
+if [ $? -ne 0 ]; then
+	# Some platforms need this to chown the file properly. (Platforms with native docker, not just the client)
+    sudo chown -R "$current_user" "$package_temporary_dir"
+fi
+mv "$package_temporary_dir"/* "$output_dir"

+ 0 - 0
debian/changelog → deployment/debian-package-x64/pkg-src/changelog


+ 0 - 0
debian/compat → deployment/debian-package-x64/pkg-src/compat


+ 0 - 0
debian/conf/jellyfin → deployment/debian-package-x64/pkg-src/conf/jellyfin


+ 0 - 0
debian/conf/jellyfin.service.conf → deployment/debian-package-x64/pkg-src/conf/jellyfin.service.conf


+ 0 - 0
debian/conf/logging.json → deployment/debian-package-x64/pkg-src/conf/logging.json


+ 0 - 0
debian/control → deployment/debian-package-x64/pkg-src/control


+ 0 - 0
debian/copyright → deployment/debian-package-x64/pkg-src/copyright


+ 1 - 1
debian/gbp.conf → deployment/debian-package-x64/pkg-src/gbp.conf

@@ -3,4 +3,4 @@ pristine-tar = False
 cleaner = fakeroot debian/rules clean
 
 [import-orig]
-filter = [ ".git*", ".hg*" ]
+filter = [ ".git*", ".hg*", ".vs*", ".vscode*" ]

+ 0 - 0
debian/install → deployment/debian-package-x64/pkg-src/install


+ 0 - 0
debian/jellyfin.init → deployment/debian-package-x64/pkg-src/jellyfin.init


+ 0 - 0
debian/jellyfin.service → deployment/debian-package-x64/pkg-src/jellyfin.service


+ 0 - 0
debian/jellyfin.upstart → deployment/debian-package-x64/pkg-src/jellyfin.upstart


+ 0 - 0
debian/po/POTFILES.in → deployment/debian-package-x64/pkg-src/po/POTFILES.in


+ 0 - 0
debian/po/templates.pot → deployment/debian-package-x64/pkg-src/po/templates.pot


+ 0 - 0
debian/postinst → deployment/debian-package-x64/pkg-src/postinst


+ 0 - 0
debian/postrm → deployment/debian-package-x64/pkg-src/postrm


+ 0 - 0
debian/preinst → deployment/debian-package-x64/pkg-src/preinst


+ 0 - 0
debian/prerm → deployment/debian-package-x64/pkg-src/prerm


+ 3 - 3
debian/rules → deployment/debian-package-x64/pkg-src/rules

@@ -2,7 +2,7 @@
 CONFIG := Release
 TERM := xterm
 SHELL := /bin/bash
-DOTNETRUNTIME := linux-x64
+DOTNETRUNTIME := debian-x64
 export DH_VERBOSE=1
 export DOTNET_CLI_TELEMETRY_OPTOUT=1
 
@@ -16,8 +16,8 @@ override_dh_auto_test:
 override_dh_clistrip:
 
 override_dh_auto_build:
-	dotnet publish --configuration $(CONFIG) --output='$(CURDIR)/usr/lib/jellyfin/bin' --self-contained --runtime $(DOTNETRUNTIME)
+	dotnet publish --configuration $(CONFIG) --output='$(CURDIR)/usr/lib/jellyfin/bin' --self-contained --runtime $(DOTNETRUNTIME) Jellyfin.Server
 
 override_dh_auto_clean:
-	dotnet clean -maxcpucount:1 --configuration $(CONFIG) || true
+	dotnet clean -maxcpucount:1 --configuration $(CONFIG) Jellyfin.Server || true
 	rm -rf '$(CURDIR)/usr'

+ 0 - 0
debian/source.lintian-overrides → deployment/debian-package-x64/pkg-src/source.lintian-overrides


+ 0 - 0
debian/source/format → deployment/debian-package-x64/pkg-src/source/format


+ 11 - 0
deployment/debian-package-x64/pkg-src/source/options

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

+ 7 - 0
deployment/debian-x64/build.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+build_jellyfin ../../Jellyfin.Server Release debian-x64 `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/debian-x64/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/debian-x64/package.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+package_portable ../.. `pwd`/dist/jellyfin_${VERSION}

+ 2 - 2
Dockerfile → deployment/docker/Dockerfile

@@ -15,7 +15,7 @@ WORKDIR /repo
 COPY . .
 RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \
  && dotnet clean \
- && dotnet publish --configuration release --output /jellyfin
+ && dotnet publish --configuration release --output /jellyfin Jellyfin.Server
 
 
 FROM microsoft/dotnet:${DOTNET_VERSION}-runtime
@@ -24,5 +24,5 @@ COPY --from=ffmpeg /ffmpeg-bin/* /usr/bin/
 EXPOSE 8096
 VOLUME /config /media
 RUN apt update \
- && apt install -y libfontconfig1  # needed for Skia
+ && apt install -y libfontconfig1 --no-install-recommends  # needed for Skia
 ENTRYPOINT dotnet /jellyfin/jellyfin.dll -programdata /config

+ 1 - 1
Dockerfile.aarch64 → deployment/docker/Dockerfile.aarch64

@@ -6,7 +6,7 @@ COPY . .
 RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \
  && find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \; \
  && dotnet clean \
- && dotnet publish --configuration release --output /jellyfin
+ && dotnet publish --configuration release --output /jellyfin Jellyfin.Server
 
 FROM microsoft/dotnet:${DOTNET_VERSION}-runtime
 COPY --from=builder /jellyfin /jellyfin

+ 7 - 0
deployment/docker/build.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+build_jellyfin_docker ../.. Dockerfile jellyfin:${VERSION}

+ 8 - 0
deployment/framework/build.sh

@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+#Magic word framework will create a non self contained build
+build_jellyfin ../../Jellyfin.Server Release framework `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/framework/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/framework/package.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+package_portable ../.. `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/linux-x64/build.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+build_jellyfin ../../Jellyfin.Server Release linux-x64 `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/linux-x64/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/linux-x64/package.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+package_portable ../.. `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/osx-x64/build.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+build_jellyfin ../../Jellyfin.Server Release osx-x64 `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/osx-x64/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/osx-x64/package.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+package_portable ../.. `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/ubuntu-x64/build.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+build_jellyfin ../../Jellyfin.Server Release ubuntu-x64 `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/ubuntu-x64/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/ubuntu-x64/package.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+package_portable ../.. `pwd`/dist/jellyfin_${VERSION}

+ 15 - 0
deployment/unraid/docker-templates/README.md

@@ -0,0 +1,15 @@
+# docker-templates
+
+### Installation:
+
+Open unRaid GUI (at least unRaid 6.5) 
+
+Click on the Docker tab 
+
+Add the following line under "Template Repositories" 
+
+https://github.com/jellyfin/jellyfin/blob/master/deployment/unraid/docker-templates
+
+Click save than click on Add Container and select jellyfin.
+
+Adjust to your paths to your liking and off you go!

+ 51 - 0
deployment/unraid/docker-templates/jellyfin.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Containers>
+  <TemplateURL>https://raw.githubusercontent.com/jellyfin/jellyfin/deployment/unraid/docker-templates/jellyfin.xml</TemplateURL>
+  <Beta>False</Beta>
+  <Category>MediaApp:Video MediaApp:Music MediaApp:Photos MediaServer:Video MediaServer:Music MediaServer:Photos</Category>
+  <Name>JellyFin</Name>
+  <Description>
+	JellyFin is The Free Software Media Browser	Converted By Community Applications	Always verify this template (and values) against the dockerhub support page for the container!![br][br]
+  You can add as many mount points as needed for recordings, movies ,etc. [br][br]
+  [b][span style='color: #E80000;']Directions:[/span][/b][br]
+  [b]/config[/b] : this is where Jellyfin will store it's databases and configuration.[br][br]
+  [b]Port[/b] : This is the default port for Jellyfin. (Will add ssl port later)[br][br]
+  [b]Media[/b] : This is the mounting point of your media. When you access it in Jellyfin it will be /media or whatever you chose for a mount point
+  [b]Tip:[/b] You can add more volume mappings if you wish Jellyfin has access to it.
+  </Description>
+  <Overview>
+    Jellyfin Server is a home media server built on top of other popular open source technologies such as Service Stack, jQuery, jQuery mobile, and Mono and will remain completely free!
+  </Overview>
+  <Support>https://www.reddit.com/r/jellyfin/</Support>
+  <Registry>https://hub.docker.com/r/jellyfin/jellyfin/</Registry>
+  <GitHub>https://github.com/jellyfin/jellyfin/></GitHub>
+  <Repository>jellyfin/jellyfin</Repository>
+  <Project>https://jellyfin.media/</Project>
+  <BindTime>true</BindTime>
+  <Privileged>false</Privileged>
+    <Networking>
+    <Mode>host</Mode>
+    <Publish>
+      <Port>
+        <HostPort>8096</HostPort>
+        <ContainerPort>8096</ContainerPort>
+        <Protocol>tcp</Protocol>
+      </Port>
+    </Publish>
+    </Networking>
+  <Data>
+    <Volume>
+      <HostDir>/mnt/cache/appdata/config</HostDir>
+      <ContainerDir>/config</ContainerDir>
+      <Mode>rw</Mode>
+    </Volume>
+    <Volume>
+      <HostDir>/mnt/user</HostDir>
+      <ContainerDir>/media</ContainerDir>
+      <Mode>rw</Mode>
+    </Volume>
+  </Data>
+  <WebUI>http://[IP]:[PORT:8096]/</WebUI>
+  <Icon>https://raw.githubusercontent.com/binhex/docker-templates/master/binhex/images/emby-icon.png</Icon>
+  <ExtraParams></ExtraParams>
+</Containers>

+ 110 - 110
build-jellyfin.ps1 → deployment/win-generic/build-jellyfin.ps1

@@ -1,110 +1,110 @@
-[CmdletBinding()]
-param(
-    [switch]$InstallFFMPEG,
-    [switch]$InstallNSSM,
-    [switch]$GenerateZip,
-    [string]$InstallLocation = "$Env:AppData/Jellyfin-Server/",
-    [ValidateSet('Debug','Release')][string]$BuildType = 'Release',
-    [ValidateSet('Quiet','Minimal', 'Normal')][string]$DotNetVerbosity = 'Minimal',
-    [ValidateSet('win','win7', 'win8','win81','win10')][string]$WindowsVersion = 'win',
-    [ValidateSet('x64','x86', 'arm', 'arm64')][string]$Architecture = 'x64'
-)
-
-#PowershellCore and *nix check to make determine which temp dir to use.
-if(($PSVersionTable.PSEdition -eq 'Core') -and (-not $IsWindows)){
-    $TempDir = mktemp -d
-}else{
-    $TempDir = $env:Temp
-}
-
-function Build-JellyFin {
-    if(($Architecture -eq 'arm64') -and ($WindowsVersion -ne 'win10')){
-            Write-Error "arm64 only supported with Windows10 Version"
-            exit
-        }
-    if(($Architecture -eq 'arm') -and ($WindowsVersion -notin @('win10','win81','win8'))){
-            Write-Error "arm only supported with Windows 8 or higher"
-            exit
-        }
-    dotnet publish -c $BuildType -r "$windowsversion-$Architecture" MediaBrowser.sln -o $InstallLocation -v $DotNetVerbosity
-}
-
-function Install-FFMPEG {
-    param(
-        [string]$InstallLocation,
-        [string]$Architecture
-    )
-    Write-Verbose "Checking Architecture"
-    if($Architecture -notin @('x86','x64')){
-        Write-Warning "No builds available for your selected architecture of $Architecture"
-        Write-Warning "FFMPEG will not be installed" 
-    }elseif($Architecture -eq 'x64'){
-         Write-Verbose "Downloading 64 bit FFMPEG"
-         Invoke-WebRequest -Uri https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-4.1-win64-static.zip -UseBasicParsing -OutFile "$tempdir/fmmpeg.zip" | Write-Verbose
-    }else{
-         Write-Verbose "Downloading 32 bit FFMPEG"
-         Invoke-WebRequest -Uri https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-4.1-win32-static.zip -UseBasicParsing -OutFile "$tempdir/fmmpeg.zip" | Write-Verbose
-    }
-   
-    Expand-Archive "$tempdir/fmmpeg.zip" -DestinationPath "$tempdir/ffmpeg/" | Write-Verbose
-    if($Architecture -eq 'x64'){
-        Write-Verbose "Copying Binaries to Jellyfin location"
-        Get-ChildItem "$tempdir/ffmpeg/ffmpeg-4.1-win64-static/bin" | ForEach-Object {
-            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
-        }
-    }else{
-        Write-Verbose "Copying Binaries to Jellyfin location"
-        Get-ChildItem "$tempdir/ffmpeg/ffmpeg-4.1-win32-static/bin" | ForEach-Object {
-            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
-        }
-    }
-    Remove-Item "$tempdir/ffmpeg/" -Recurse -Force -ErrorAction Continue | Write-Verbose
-    Remove-Item "$tempdir/fmmpeg.zip" -Force -ErrorAction Continue | Write-Verbose
-}
-
-function Install-NSSM {
-    param(
-        [string]$InstallLocation,
-        [string]$Architecture
-    )
-    Write-Verbose "Checking Architecture"
-    if($Architecture -notin @('x86','x64')){
-        Write-Warning "No builds available for your selected architecture of $Architecture"
-        Write-Warning "NSSM will not be installed" 
-    }else{
-         Write-Verbose "Downloading NSSM"
-         Invoke-WebRequest -Uri https://nssm.cc/ci/nssm-2.24-101-g897c7ad.zip -UseBasicParsing -OutFile "$tempdir/nssm.zip" | Write-Verbose
-    }
-   
-    Expand-Archive "$tempdir/nssm.zip" -DestinationPath "$tempdir/nssm/" | Write-Verbose
-    if($Architecture -eq 'x64'){
-        Write-Verbose "Copying Binaries to Jellyfin location"
-        Get-ChildItem "$tempdir/nssm/nssm-2.24-101-g897c7ad/win64" | ForEach-Object {
-            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
-        }
-    }else{
-        Write-Verbose "Copying Binaries to Jellyfin location"
-        Get-ChildItem "$tempdir/nssm/nssm-2.24-101-g897c7ad/win32" | ForEach-Object {
-            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
-        }
-    }
-    Remove-Item "$tempdir/nssm/" -Recurse -Force -ErrorAction Continue | Write-Verbose
-    Remove-Item "$tempdir/nssm.zip" -Force -ErrorAction Continue | Write-Verbose
-}
-
-Write-Verbose "Starting Build Process: Selected Environment is $WindowsVersion-$Architecture"
-Build-JellyFin
-if($InstallFFMPEG.IsPresent -or ($InstallFFMPEG -eq $true)){
-    Write-Verbose "Starting FFMPEG Install"
-    Install-FFMPEG $InstallLocation $Architecture
-}
-if($InstallNSSM.IsPresent -or ($InstallNSSM -eq $true)){
-    Write-Verbose "Starting NSSM Install"
-    Install-NSSM $InstallLocation $Architecture
-}
-Copy-Item .\install-jellyfin.ps1 $InstallLocation\install-jellyfin.ps1
-Copy-Item .\install.bat $InstallLocation\install.bat
-if($GenerateZip.IsPresent -or ($GenerateZip -eq $true)){
-    Compress-Archive -Path $InstallLocation -DestinationPath "$InstallLocation/jellyfin.zip" -Force
-}
-Write-Verbose "Finished"
+[CmdletBinding()]
+param(
+    [switch]$InstallFFMPEG,
+    [switch]$InstallNSSM,
+    [switch]$GenerateZip,
+    [string]$InstallLocation = "$Env:AppData/Jellyfin-Server/",
+    [ValidateSet('Debug','Release')][string]$BuildType = 'Release',
+    [ValidateSet('Quiet','Minimal', 'Normal')][string]$DotNetVerbosity = 'Minimal',
+    [ValidateSet('win','win7', 'win8','win81','win10')][string]$WindowsVersion = 'win',
+    [ValidateSet('x64','x86', 'arm', 'arm64')][string]$Architecture = 'x64'
+)
+
+#PowershellCore and *nix check to make determine which temp dir to use.
+if(($PSVersionTable.PSEdition -eq 'Core') -and (-not $IsWindows)){
+    $TempDir = mktemp -d
+}else{
+    $TempDir = $env:Temp
+}
+
+function Build-JellyFin {
+    if(($Architecture -eq 'arm64') -and ($WindowsVersion -ne 'win10')){
+            Write-Error "arm64 only supported with Windows10 Version"
+            exit
+        }
+    if(($Architecture -eq 'arm') -and ($WindowsVersion -notin @('win10','win81','win8'))){
+            Write-Error "arm only supported with Windows 8 or higher"
+            exit
+        }
+    dotnet publish -c $BuildType -r "$windowsversion-$Architecture" MediaBrowser.sln -o $InstallLocation -v $DotNetVerbosity
+}
+
+function Install-FFMPEG {
+    param(
+        [string]$InstallLocation,
+        [string]$Architecture
+    )
+    Write-Verbose "Checking Architecture"
+    if($Architecture -notin @('x86','x64')){
+        Write-Warning "No builds available for your selected architecture of $Architecture"
+        Write-Warning "FFMPEG will not be installed" 
+    }elseif($Architecture -eq 'x64'){
+         Write-Verbose "Downloading 64 bit FFMPEG"
+         Invoke-WebRequest -Uri https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-4.1-win64-static.zip -UseBasicParsing -OutFile "$tempdir/fmmpeg.zip" | Write-Verbose
+    }else{
+         Write-Verbose "Downloading 32 bit FFMPEG"
+         Invoke-WebRequest -Uri https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-4.1-win32-static.zip -UseBasicParsing -OutFile "$tempdir/fmmpeg.zip" | Write-Verbose
+    }
+   
+    Expand-Archive "$tempdir/fmmpeg.zip" -DestinationPath "$tempdir/ffmpeg/" | Write-Verbose
+    if($Architecture -eq 'x64'){
+        Write-Verbose "Copying Binaries to Jellyfin location"
+        Get-ChildItem "$tempdir/ffmpeg/ffmpeg-4.1-win64-static/bin" | ForEach-Object {
+            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
+        }
+    }else{
+        Write-Verbose "Copying Binaries to Jellyfin location"
+        Get-ChildItem "$tempdir/ffmpeg/ffmpeg-4.1-win32-static/bin" | ForEach-Object {
+            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
+        }
+    }
+    Remove-Item "$tempdir/ffmpeg/" -Recurse -Force -ErrorAction Continue | Write-Verbose
+    Remove-Item "$tempdir/fmmpeg.zip" -Force -ErrorAction Continue | Write-Verbose
+}
+
+function Install-NSSM {
+    param(
+        [string]$InstallLocation,
+        [string]$Architecture
+    )
+    Write-Verbose "Checking Architecture"
+    if($Architecture -notin @('x86','x64')){
+        Write-Warning "No builds available for your selected architecture of $Architecture"
+        Write-Warning "NSSM will not be installed" 
+    }else{
+         Write-Verbose "Downloading NSSM"
+         Invoke-WebRequest -Uri https://nssm.cc/ci/nssm-2.24-101-g897c7ad.zip -UseBasicParsing -OutFile "$tempdir/nssm.zip" | Write-Verbose
+    }
+   
+    Expand-Archive "$tempdir/nssm.zip" -DestinationPath "$tempdir/nssm/" | Write-Verbose
+    if($Architecture -eq 'x64'){
+        Write-Verbose "Copying Binaries to Jellyfin location"
+        Get-ChildItem "$tempdir/nssm/nssm-2.24-101-g897c7ad/win64" | ForEach-Object {
+            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
+        }
+    }else{
+        Write-Verbose "Copying Binaries to Jellyfin location"
+        Get-ChildItem "$tempdir/nssm/nssm-2.24-101-g897c7ad/win32" | ForEach-Object {
+            Copy-Item $_.FullName -Destination $installLocation | Write-Verbose
+        }
+    }
+    Remove-Item "$tempdir/nssm/" -Recurse -Force -ErrorAction Continue | Write-Verbose
+    Remove-Item "$tempdir/nssm.zip" -Force -ErrorAction Continue | Write-Verbose
+}
+
+Write-Verbose "Starting Build Process: Selected Environment is $WindowsVersion-$Architecture"
+Build-JellyFin
+if($InstallFFMPEG.IsPresent -or ($InstallFFMPEG -eq $true)){
+    Write-Verbose "Starting FFMPEG Install"
+    Install-FFMPEG $InstallLocation $Architecture
+}
+if($InstallNSSM.IsPresent -or ($InstallNSSM -eq $true)){
+    Write-Verbose "Starting NSSM Install"
+    Install-NSSM $InstallLocation $Architecture
+}
+Copy-Item .\install-jellyfin.ps1 $InstallLocation\install-jellyfin.ps1
+Copy-Item .\install.bat $InstallLocation\install.bat
+if($GenerateZip.IsPresent -or ($GenerateZip -eq $true)){
+    Compress-Archive -Path $InstallLocation -DestinationPath "$InstallLocation/jellyfin.zip" -Force
+}
+Write-Verbose "Finished"

+ 0 - 0
install-jellyfin.ps1 → deployment/win-generic/install-jellyfin.ps1


+ 0 - 0
install.bat → deployment/win-generic/install.bat


+ 7 - 0
deployment/win-x64/build.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+build_jellyfin ../../Jellyfin.Server Release win-x64 `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/win-x64/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 9 - 0
deployment/win-x64/package.sh

@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+package_portable ../.. `pwd`/dist/jellyfin_${VERSION}
+
+#TODO setup and maybe change above code to produce the Windows native zip format.

+ 7 - 0
deployment/win-x86/build.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+build_jellyfin ../../Jellyfin.Server Release win-x86 `pwd`/dist/jellyfin_${VERSION}

+ 7 - 0
deployment/win-x86/clean.sh

@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION}

+ 9 - 0
deployment/win-x86/package.sh

@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+package_portable ../.. `pwd`/dist/jellyfin_${VERSION}
+
+#TODO setup and maybe change above code to produce the Windows native zip format.