From 78b53a60b4018b25c64a2477408c10144a750252 Mon Sep 17 00:00:00 2001 From: Cody Robibero Date: Mon, 18 Mar 2024 08:42:07 -0600 Subject: [PATCH] Remove legacy build utilities (#11162) --- .copr | 1 - Dockerfile | 87 -------- Dockerfile.arm | 74 ------- Dockerfile.arm64 | 74 ------- build | 1 - build.sh | 114 ----------- build.yaml | 18 -- bump_version | 129 ------------ debian/changelog | 89 --------- debian/compat | 1 - debian/conf/jellyfin | 53 ----- debian/conf/jellyfin.service.conf | 55 ------ debian/conf/logging.json | 30 --- debian/control | 27 --- debian/copyright | 29 --- debian/gbp.conf | 6 - debian/install | 4 - debian/jellyfin.init | 62 ------ debian/jellyfin.service | 17 -- debian/jellyfin.upstart | 20 -- debian/metapackage/jellyfin | 13 -- debian/po/POTFILES.in | 1 - debian/po/templates.pot | 57 ------ debian/postinst | 102 ---------- debian/postrm | 81 -------- debian/preinst | 78 -------- debian/prerm | 61 ------ debian/rules | 55 ------ debian/source.lintian-overrides | 3 - debian/source/format | 1 - debian/source/options | 11 -- deployment/Dockerfile.centos.amd64 | 39 ---- deployment/Dockerfile.debian.amd64 | 33 ---- deployment/Dockerfile.debian.arm64 | 46 ----- deployment/Dockerfile.debian.armhf | 47 ----- deployment/Dockerfile.docker.amd64 | 12 -- deployment/Dockerfile.docker.arm64 | 12 -- deployment/Dockerfile.docker.armhf | 12 -- deployment/Dockerfile.fedora.amd64 | 39 ---- deployment/Dockerfile.linux.amd64 | 33 ---- deployment/Dockerfile.linux.amd64-musl | 33 ---- deployment/Dockerfile.linux.arm64 | 33 ---- deployment/Dockerfile.linux.armhf | 33 ---- deployment/Dockerfile.linux.musl-linux-arm64 | 33 ---- deployment/Dockerfile.macos.amd64 | 33 ---- deployment/Dockerfile.macos.arm64 | 33 ---- deployment/Dockerfile.portable | 32 --- deployment/Dockerfile.ubuntu.amd64 | 33 ---- deployment/Dockerfile.ubuntu.arm64 | 56 ------ deployment/Dockerfile.ubuntu.armhf | 56 ------ deployment/Dockerfile.windows.amd64 | 32 --- deployment/build.centos.amd64 | 59 ------ deployment/build.debian.amd64 | 37 ---- deployment/build.debian.arm64 | 38 ---- deployment/build.debian.armhf | 38 ---- deployment/build.fedora.amd64 | 59 ------ deployment/build.linux.amd64 | 31 --- deployment/build.linux.amd64-musl | 31 --- deployment/build.linux.arm64 | 31 --- deployment/build.linux.armhf | 31 --- deployment/build.linux.musl-linux-arm64 | 31 --- deployment/build.macos.amd64 | 31 --- deployment/build.macos.arm64 | 31 --- deployment/build.portable | 31 --- deployment/build.ubuntu.amd64 | 37 ---- deployment/build.ubuntu.arm64 | 38 ---- deployment/build.ubuntu.armhf | 38 ---- deployment/build.windows.amd64 | 52 ----- fedora/.gitignore | 3 - fedora/Makefile | 52 ----- fedora/README.md | 39 ---- fedora/jellyfin-firewalld.xml | 9 - fedora/jellyfin-selinux-launcher.sh | 3 - fedora/jellyfin-server-lowports.conf | 4 - fedora/jellyfin.env | 44 ----- fedora/jellyfin.override.conf | 53 ----- fedora/jellyfin.service | 17 -- fedora/jellyfin.spec | 197 ------------------- 78 files changed, 3099 deletions(-) delete mode 120000 .copr delete mode 100644 Dockerfile delete mode 100644 Dockerfile.arm delete mode 100644 Dockerfile.arm64 delete mode 120000 build delete mode 100755 build.sh delete mode 100644 build.yaml delete mode 100755 bump_version delete mode 100644 debian/changelog delete mode 100644 debian/compat delete mode 100644 debian/conf/jellyfin delete mode 100644 debian/conf/jellyfin.service.conf delete mode 100644 debian/conf/logging.json delete mode 100644 debian/control delete mode 100644 debian/copyright delete mode 100644 debian/gbp.conf delete mode 100644 debian/install delete mode 100644 debian/jellyfin.init delete mode 100644 debian/jellyfin.service delete mode 100644 debian/jellyfin.upstart delete mode 100644 debian/metapackage/jellyfin delete mode 100644 debian/po/POTFILES.in delete mode 100644 debian/po/templates.pot delete mode 100644 debian/postinst delete mode 100644 debian/postrm delete mode 100644 debian/preinst delete mode 100644 debian/prerm delete mode 100755 debian/rules delete mode 100644 debian/source.lintian-overrides delete mode 100644 debian/source/format delete mode 100644 debian/source/options delete mode 100644 deployment/Dockerfile.centos.amd64 delete mode 100644 deployment/Dockerfile.debian.amd64 delete mode 100644 deployment/Dockerfile.debian.arm64 delete mode 100644 deployment/Dockerfile.debian.armhf delete mode 100644 deployment/Dockerfile.docker.amd64 delete mode 100644 deployment/Dockerfile.docker.arm64 delete mode 100644 deployment/Dockerfile.docker.armhf delete mode 100644 deployment/Dockerfile.fedora.amd64 delete mode 100644 deployment/Dockerfile.linux.amd64 delete mode 100644 deployment/Dockerfile.linux.amd64-musl delete mode 100644 deployment/Dockerfile.linux.arm64 delete mode 100644 deployment/Dockerfile.linux.armhf delete mode 100644 deployment/Dockerfile.linux.musl-linux-arm64 delete mode 100644 deployment/Dockerfile.macos.amd64 delete mode 100644 deployment/Dockerfile.macos.arm64 delete mode 100644 deployment/Dockerfile.portable delete mode 100644 deployment/Dockerfile.ubuntu.amd64 delete mode 100644 deployment/Dockerfile.ubuntu.arm64 delete mode 100644 deployment/Dockerfile.ubuntu.armhf delete mode 100644 deployment/Dockerfile.windows.amd64 delete mode 100755 deployment/build.centos.amd64 delete mode 100755 deployment/build.debian.amd64 delete mode 100755 deployment/build.debian.arm64 delete mode 100755 deployment/build.debian.armhf delete mode 100755 deployment/build.fedora.amd64 delete mode 100755 deployment/build.linux.amd64 delete mode 100755 deployment/build.linux.amd64-musl delete mode 100755 deployment/build.linux.arm64 delete mode 100755 deployment/build.linux.armhf delete mode 100755 deployment/build.linux.musl-linux-arm64 delete mode 100755 deployment/build.macos.amd64 delete mode 100755 deployment/build.macos.arm64 delete mode 100755 deployment/build.portable delete mode 100755 deployment/build.ubuntu.amd64 delete mode 100755 deployment/build.ubuntu.arm64 delete mode 100755 deployment/build.ubuntu.armhf delete mode 100755 deployment/build.windows.amd64 delete mode 100644 fedora/.gitignore delete mode 100644 fedora/Makefile delete mode 100644 fedora/README.md delete mode 100644 fedora/jellyfin-firewalld.xml delete mode 100644 fedora/jellyfin-selinux-launcher.sh delete mode 100644 fedora/jellyfin-server-lowports.conf delete mode 100644 fedora/jellyfin.env delete mode 100644 fedora/jellyfin.override.conf delete mode 100644 fedora/jellyfin.service delete mode 100644 fedora/jellyfin.spec diff --git a/.copr b/.copr deleted file mode 120000 index 100fe0cd7b..0000000000 --- a/.copr +++ /dev/null @@ -1 +0,0 @@ -fedora \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 550c3203d7..0000000000 --- a/Dockerfile +++ /dev/null @@ -1,87 +0,0 @@ -# DESIGNED FOR BUILDING ON AMD64 ONLY -##################################### -# Requires binfm_misc registration -# https://github.com/multiarch/qemu-user-static#binfmt_misc-register -ARG DOTNET_VERSION=8.0 - -FROM node:20-alpine as web-builder -ARG JELLYFIN_WEB_VERSION=master -RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python3 \ - && curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \ - && apk del curl \ - && cd jellyfin-web-* \ - && npm ci --no-audit --unsafe-perm \ - && npm run build:production \ - && mv dist /dist - -FROM debian:bookworm-slim as app - -# https://askubuntu.com/questions/972516/debian-frontend-environment-variable -ARG DEBIAN_FRONTEND="noninteractive" -# http://stackoverflow.com/questions/48162574/ddg#49462622 -ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn -# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support) -ENV NVIDIA_VISIBLE_DEVICES="all" -ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" - -ENV JELLYFIN_DATA_DIR=/config -ENV JELLYFIN_CACHE_DIR=/cache - -# https://github.com/intel/compute-runtime/releases -ARG GMMLIB_VERSION=22.3.11.ci17757293 -ARG IGC_VERSION=1.0.15136.22 -ARG NEO_VERSION=23.39.27427.23 -ARG LEVEL_ZERO_VERSION=1.3.27427.23 - -RUN apt-get update \ - && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl \ - && curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \ - && echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | tee /etc/apt/sources.list.d/jellyfin.list \ - && apt-get update \ - && apt-get install --no-install-recommends --no-install-suggests -y mesa-va-drivers jellyfin-ffmpeg6 openssl locales \ -# Intel VAAPI Tone mapping dependencies: -# Prefer NEO to Beignet since the latter one doesn't support Comet Lake or newer for now. -# Do not use the intel-opencl-icd package from repo since they will not build with RELEASE_WITH_REGKEYS enabled. - && mkdir intel-compute-runtime \ - && cd intel-compute-runtime \ - && curl -LO https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-core_${IGC_VERSION}_amd64.deb \ - -LO https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-opencl_${IGC_VERSION}_amd64.deb \ - -LO https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-level-zero-gpu_${LEVEL_ZERO_VERSION}_amd64.deb \ - -LO https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-opencl-icd_${NEO_VERSION}_amd64.deb \ - -LO https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/libigdgmm12_${GMMLIB_VERSION}_amd64.deb \ - && dpkg -i *.deb \ - && cd .. \ - && rm -rf intel-compute-runtime \ - && apt-get remove gnupg -y \ - && apt-get clean autoclean -y \ - && apt-get autoremove -y \ - && rm -rf /var/lib/apt/lists/* \ - && mkdir -p ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \ - && chmod 777 ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \ - && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen - -ENV LC_ALL=en_US.UTF-8 -ENV LANG=en_US.UTF-8 -ENV LANGUAGE=en_US:en - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} as builder -WORKDIR /repo -COPY . . -ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 - -RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-x64 -p:DebugSymbols=false -p:DebugType=none - -FROM app - -ENV HEALTHCHECK_URL=http://localhost:8096/health - -COPY --from=builder /jellyfin /jellyfin -COPY --from=web-builder /dist /jellyfin/jellyfin-web - -EXPOSE 8096 -VOLUME ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} -ENTRYPOINT [ "./jellyfin/jellyfin", \ - "--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg" ] - -HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \ - CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1 diff --git a/Dockerfile.arm b/Dockerfile.arm deleted file mode 100644 index 07039e43b5..0000000000 --- a/Dockerfile.arm +++ /dev/null @@ -1,74 +0,0 @@ -# DESIGNED FOR BUILDING ON ARM ONLY -##################################### -# Requires binfm_misc registration -# https://github.com/multiarch/qemu-user-static#binfmt_misc-register -ARG DOTNET_VERSION=8.0 - -FROM node:20-alpine as web-builder -ARG JELLYFIN_WEB_VERSION=master -RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python3 \ - && curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \ - && apk del curl \ - && cd jellyfin-web-* \ - && npm ci --no-audit --unsafe-perm \ - && npm run build:production \ - && mv dist /dist - -FROM multiarch/qemu-user-static:x86_64-arm as qemu -FROM arm32v7/debian:bookworm-slim as app - -# https://askubuntu.com/questions/972516/debian-frontend-environment-variable -ARG DEBIAN_FRONTEND="noninteractive" -# http://stackoverflow.com/questions/48162574/ddg#49462622 -ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn -# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support) -ENV NVIDIA_VISIBLE_DEVICES="all" -ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" - -ENV JELLYFIN_DATA_DIR=/config -ENV JELLYFIN_CACHE_DIR=/cache - -COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin - -RUN apt-get update \ - && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl \ - && curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \ - && curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | gpg --dearmor -o /etc/apt/trusted.gpg.d/ubuntu-jellyfin.gpg \ - && echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | tee /etc/apt/sources.list.d/jellyfin.list \ - && apt-get update \ - && apt-get install --no-install-recommends --no-install-suggests -y \ - jellyfin-ffmpeg6 libssl-dev libfontconfig1 \ - libfreetype6 vainfo libva2 locales \ - && apt-get remove gnupg -y \ - && apt-get clean autoclean -y \ - && apt-get autoremove -y \ - && rm -rf /var/lib/apt/lists/* \ - && mkdir -p ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \ - && chmod 777 ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \ - && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen - -ENV LC_ALL=en_US.UTF-8 -ENV LANG=en_US.UTF-8 -ENV LANGUAGE=en_US:en - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} as builder -WORKDIR /repo -COPY . . -ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 - -RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-arm -p:DebugSymbols=false -p:DebugType=none - -FROM app - -ENV HEALTHCHECK_URL=http://localhost:8096/health - -COPY --from=builder /jellyfin /jellyfin -COPY --from=web-builder /dist /jellyfin/jellyfin-web - -EXPOSE 8096 -VOLUME ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} -ENTRYPOINT [ "/jellyfin/jellyfin", \ - "--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg" ] - -HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \ - CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1 diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 deleted file mode 100644 index 54023794fc..0000000000 --- a/Dockerfile.arm64 +++ /dev/null @@ -1,74 +0,0 @@ -# DESIGNED FOR BUILDING ON ARM64 ONLY -##################################### -# Requires binfm_misc registration -# https://github.com/multiarch/qemu-user-static#binfmt_misc-register -ARG DOTNET_VERSION=8.0 - -FROM node:20-alpine as web-builder -ARG JELLYFIN_WEB_VERSION=master -RUN apk add curl git zlib zlib-dev autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python3 \ - && curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \ - && apk del curl \ - && cd jellyfin-web-* \ - && npm ci --no-audit --unsafe-perm \ - && npm run build:production \ - && mv dist /dist - -FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu -FROM arm64v8/debian:bookworm-slim as app - -# https://askubuntu.com/questions/972516/debian-frontend-environment-variable -ARG DEBIAN_FRONTEND="noninteractive" -# http://stackoverflow.com/questions/48162574/ddg#49462622 -ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn -# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support) -ENV NVIDIA_VISIBLE_DEVICES="all" -ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" - -ENV JELLYFIN_DATA_DIR=/config -ENV JELLYFIN_CACHE_DIR=/cache - -COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin - -RUN apt-get update \ - && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl \ - && curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \ - && curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | gpg --dearmor -o /etc/apt/trusted.gpg.d/ubuntu-jellyfin.gpg \ - && echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | tee /etc/apt/sources.list.d/jellyfin.list \ - && apt-get update \ - && apt-get install --no-install-recommends --no-install-suggests -y \ - jellyfin-ffmpeg6 locales libssl-dev libfontconfig1 \ - libfreetype6 libomxil-bellagio0 libomxil-bellagio-bin \ - && apt-get remove gnupg -y \ - && apt-get clean autoclean -y \ - && apt-get autoremove -y \ - && rm -rf /var/lib/apt/lists/* \ - && mkdir -p ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \ - && chmod 777 ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \ - && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen - -ENV LC_ALL=en_US.UTF-8 -ENV LANG=en_US.UTF-8 -ENV LANGUAGE=en_US:en - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} as builder -WORKDIR /repo -COPY . . -ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 - -RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-arm64 -p:DebugSymbols=false -p:DebugType=none - -FROM app - -ENV HEALTHCHECK_URL=http://localhost:8096/health - -COPY --from=builder /jellyfin /jellyfin -COPY --from=web-builder /dist /jellyfin/jellyfin-web - -EXPOSE 8096 -VOLUME ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} -ENTRYPOINT [ "/jellyfin/jellyfin", \ - "--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg" ] - -HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \ - CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1 diff --git a/build b/build deleted file mode 120000 index c07a74de4f..0000000000 --- a/build +++ /dev/null @@ -1 +0,0 @@ -build.sh \ No newline at end of file diff --git a/build.sh b/build.sh deleted file mode 100755 index 1db02af983..0000000000 --- a/build.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env bash - -# build.sh - Build Jellyfin binary packages -# Part of the Jellyfin Project - -set -o errexit -set -o pipefail - -usage() { - echo -e "build.sh - Build Jellyfin binary packages" - echo -e "Usage:" - echo -e " $0 -t/--type -p/--platform [-k/--keep-artifacts] [-l/--list-platforms]" - echo -e "Notes:" - echo -e " * BUILD_TYPE can be one of: [native, docker] and must be specified" - echo -e " * native: Build using the build script in the host OS" - echo -e " * docker: Build using the build script in a standardized Docker container" - echo -e " * PLATFORM can be any platform shown by -l/--list-platforms and must be specified" - echo -e " * If -k/--keep-artifacts is specified, transient artifacts (e.g. Docker containers) will be" - echo -e " retained after the build is finished; the source directory will still be cleaned" - echo -e " * If -l/--list-platforms is specified, all other arguments are ignored; the script will print" - echo -e " the list of supported platforms and exit" -} - -list_platforms() { - declare -a platforms - platforms=( - $( find deployment -maxdepth 1 -mindepth 1 -name "build.*" | awk -F'.' '{ $1=""; printf $2; if ($3 != ""){ printf "." $3; }; if ($4 != ""){ printf "." $4; }; print ""; }' | sort ) - ) - echo -e "Valid platforms:" - echo - for platform in ${platforms[@]}; do - echo -e "* ${platform} : $( grep '^#=' deployment/build.${platform} | sed 's/^#= //' )" - done -} - -do_build_native() { - if [[ ! -f $( which dpkg ) || $( dpkg --print-architecture | head -1 ) != "${PLATFORM##*.}" ]]; then - echo "Cross-building is not supported for native builds, use 'docker' builds on amd64 for cross-building." - exit 1 - fi - export IS_DOCKER=NO - deployment/build.${PLATFORM} -} - -do_build_docker() { - if [[ -f $( which dpkg ) && $( dpkg --print-architecture | head -1 ) != "amd64" ]]; then - echo "Docker-based builds only support amd64-based cross-building; use a 'native' build instead." - exit 1 - fi - if [[ ! -f deployment/Dockerfile.${PLATFORM} ]]; then - echo "Missing Dockerfile for platform ${PLATFORM}" - exit 1 - fi - if [[ ${KEEP_ARTIFACTS} == YES ]]; then - docker_args="" - else - docker_args="--rm" - fi - - docker build . -t "jellyfin-builder.${PLATFORM}" -f deployment/Dockerfile.${PLATFORM} - mkdir -p ${ARTIFACT_DIR} - docker run $docker_args -v "${SOURCE_DIR}:/jellyfin" -v "${ARTIFACT_DIR}:/dist" "jellyfin-builder.${PLATFORM}" -} - -while [[ $# -gt 0 ]]; do - key="$1" - case $key in - -t|--type) - BUILD_TYPE="$2" - shift # past argument - shift # past value - ;; - -p|--platform) - PLATFORM="$2" - shift # past argument - shift # past value - ;; - -k|--keep-artifacts) - KEEP_ARTIFACTS=YES - shift # past argument - ;; - -l|--list-platforms) - list_platforms - exit 0 - ;; - -h|--help) - usage - exit 0 - ;; - *) # unknown option - echo "Unknown option $1" - usage - exit 1 - ;; - esac -done - -if [[ -z ${BUILD_TYPE} || -z ${PLATFORM} ]]; then - usage - exit 1 -fi - -export SOURCE_DIR="$( pwd )" -export ARTIFACT_DIR="${SOURCE_DIR}/../bin/${PLATFORM}" - -# Determine build type -case ${BUILD_TYPE} in - native) - do_build_native - ;; - docker) - do_build_docker - ;; -esac diff --git a/build.yaml b/build.yaml deleted file mode 100644 index 464caf3288..0000000000 --- a/build.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -# We just wrap `build` so this is really it -name: "jellyfin" -version: "10.9.0" -packages: - - debian.amd64 - - debian.arm64 - - debian.armhf - - ubuntu.amd64 - - ubuntu.arm64 - - ubuntu.armhf - - fedora.amd64 - - centos.amd64 - - linux.amd64 - - windows.amd64 - - macos.amd64 - - macos.arm64 - - portable diff --git a/bump_version b/bump_version deleted file mode 100755 index dd55e62c79..0000000000 --- a/bump_version +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/env bash - -# bump_version - increase the shared version and generate changelogs - -set -o errexit -set -o pipefail -set -o xtrace - -usage() { - echo -e "bump_version - increase the shared version and generate changelogs" - echo -e "" - echo -e "Usage:" - echo -e " $ bump_version " -} - -if [[ -z $1 ]]; then - usage - exit 1 -fi - -shared_version_file="./SharedVersion.cs" -build_file="./build.yaml" -# csproj files for nuget packages -jellyfin_subprojects=( - MediaBrowser.Common/MediaBrowser.Common.csproj - Jellyfin.Data/Jellyfin.Data.csproj - MediaBrowser.Controller/MediaBrowser.Controller.csproj - MediaBrowser.Model/MediaBrowser.Model.csproj - Emby.Naming/Emby.Naming.csproj - src/Jellyfin.Extensions/Jellyfin.Extensions.csproj -) - -new_version="$1" - -# Parse the version from the AssemblyVersion -old_version="$( - grep "AssemblyVersion" ${shared_version_file} \ - | sed -E 's/\[assembly: ?AssemblyVersion\("([0-9\.]+)"\)\]/\1/' -)" -echo $old_version - -# Set the shared version to the specified new_version -old_version_sed="$( sed 's/\./\\./g' <<<"${old_version}" )" # Escape the '.' chars -new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )" -sed -i "s/${old_version_sed}/${new_version_sed}/g" ${shared_version_file} - -old_version="$( - grep "version:" ${build_file} \ - | sed -E 's/version: "([0-9\.]+[-a-z0-9]*)"/\1/' -)" -echo $old_version - -# Set the build.yaml version to the specified new_version -old_version_sed="$( sed 's/\./\\./g' <<<"${old_version}" )" # Escape the '.' chars -new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )" -sed -i "s/${old_version_sed}/${new_version_sed}/g" ${build_file} - -# update nuget package version -for subproject in ${jellyfin_subprojects[@]}; do - echo ${subproject} - # Parse the version from the *.csproj file - old_version="$( - grep "VersionPrefix" ${subproject} \ - | awk '{$1=$1};1' \ - | sed -E 's/([0-9\.]+[-a-z0-9]*)<\/VersionPrefix>/\1/' - )" - echo old nuget version: $old_version - new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )" - - # Set the nuget version to the specified new_version - sed -i "s|${old_version}|${new_version_sed}|g" ${subproject} -done - -if [[ ${new_version} == *"-"* ]]; then - new_version_pkg="$( sed 's/-/~/g' <<<"${new_version}" )" - new_version_deb_sup="" -else - new_version_pkg="${new_version}" - new_version_deb_sup="-1" -fi - -# Update the metapackage equivs file -debian_equivs_file="debian/metapackage/jellyfin" -sed -i "s/${old_version_sed}/${new_version_pkg}/g" ${debian_equivs_file} - -# Write out a temporary Debian changelog with our new stuff appended and some templated formatting -debian_changelog_file="debian/changelog" -debian_changelog_temp="$( mktemp )" -# Create new temp file with our changelog -echo -e "jellyfin-server (${new_version_pkg}${new_version_deb_sup}) unstable; urgency=medium - - * New upstream version ${new_version}; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v${new_version} - - -- Jellyfin Packaging Team $( date --rfc-2822 ) -" >> ${debian_changelog_temp} -cat ${debian_changelog_file} >> ${debian_changelog_temp} -# Move into place -mv ${debian_changelog_temp} ${debian_changelog_file} - -# Write out a temporary Dnf changelog with our new stuff prepended and some templated formatting -fedora_spec_file="fedora/jellyfin.spec" -fedora_changelog_temp="$( mktemp )" -fedora_spec_temp_dir="$( mktemp -d )" -fedora_spec_temp="${fedora_spec_temp_dir}/jellyfin.spec.tmp" -# Make a copy of our spec file for hacking -cp ${fedora_spec_file} ${fedora_spec_temp_dir}/ -pushd ${fedora_spec_temp_dir} -# Split out the stuff before and after changelog -csplit jellyfin.spec "/^%changelog/" # produces xx00 xx01 -# Update the version in xx00 -sed -i "s/${old_version_sed}/${new_version_pkg}/g" xx00 -# Remove the header from xx01 -sed -i '/^%changelog/d' xx01 -# Create new temp file with our changelog -echo -e "%changelog -* $( LANG=C date '+%a %b %d %Y' ) Jellyfin Packaging Team -- New upstream version ${new_version}; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v${new_version}" >> ${fedora_changelog_temp} -cat xx01 >> ${fedora_changelog_temp} -# Reassembble -cat xx00 ${fedora_changelog_temp} > ${fedora_spec_temp} -popd -# Move into place -mv ${fedora_spec_temp} ${fedora_spec_file} -# Clean up -rm -rf ${fedora_spec_temp_dir} - -# Stage the changed files for commit -git add . -git status -v diff --git a/debian/changelog b/debian/changelog deleted file mode 100644 index 0d744c02a3..0000000000 --- a/debian/changelog +++ /dev/null @@ -1,89 +0,0 @@ -jellyfin-server (10.9.0-1) unstable; urgency=medium - - * New upstream version 10.9.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.9.0 - - -- Jellyfin Packaging Team Wed, 13 Jul 2022 20:58:08 -0600 - -jellyfin-server (10.8.0-1) unstable; urgency=medium - - * Forthcoming stable release - - -- Jellyfin Packaging Team Fri, 04 Dec 2020 21:55:12 -0500 - -jellyfin-server (10.7.0-1) unstable; urgency=medium - - * Forthcoming stable release - - -- Jellyfin Packaging Team Mon, 27 Jul 2020 19:09:45 -0400 - -jellyfin-server (10.6.0-2) unstable; urgency=medium - - * Fix upgrade bug - - -- Joshua Boniface Sun, 19 Jul 22:47:27 -0400 - -jellyfin-server (10.6.0-1) unstable; urgency=medium - - * Forthcoming stable release - - -- Jellyfin Packaging Team Mon, 23 Mar 2020 14:46:05 -0400 - -jellyfin (10.5.0-1) unstable; urgency=medium - - * New upstream version 10.5.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.5.0 - - -- Jellyfin Packaging Team Fri, 11 Oct 2019 20:12:38 -0400 - -jellyfin (10.4.0-1) unstable; urgency=medium - - * New upstream version 10.4.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.4.0 - - -- Jellyfin Packaging Team Sat, 31 Aug 2019 21:38:56 -0400 - -jellyfin (10.3.7-1) unstable; urgency=medium - - * New upstream version 10.3.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.7 - - -- Jellyfin Packaging Team Wed, 24 Jul 2019 10:48:28 -0400 - -jellyfin (10.3.6-1) unstable; urgency=medium - - * New upstream version 10.3.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.6 - - -- Jellyfin Packaging Team Sat, 06 Jul 2019 13:34:19 -0400 - -jellyfin (10.3.5-1) unstable; urgency=medium - - * New upstream version 10.3.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.5 - - -- Jellyfin Packaging Team Sun, 09 Jun 2019 21:47:35 -0400 - -jellyfin (10.3.4-1) unstable; urgency=medium - - * New upstream version 10.3.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.4 - - -- Jellyfin Packaging Team Thu, 06 Jun 2019 22:45:31 -0400 - -jellyfin (10.3.3-1) unstable; urgency=medium - - * New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3 - - -- Jellyfin Packaging Team Fri, 17 May 2019 23:12:08 -0400 - -jellyfin (10.3.2-1) unstable; urgency=medium - - * New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2 - - -- Jellyfin Packaging Team Tue, 30 Apr 2019 20:18:44 -0400 - -jellyfin (10.3.1-1) unstable; urgency=medium - - * New upstream version 10.3.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.1 - - -- Jellyfin Packaging Team Sat, 20 Apr 2019 14:24:07 -0400 - -jellyfin (10.3.0-1) unstable; urgency=medium - - * New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0 - - -- Jellyfin Packaging Team Fri, 19 Apr 2019 14:24:29 -0400 diff --git a/debian/compat b/debian/compat deleted file mode 100644 index 45a4fb75db..0000000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/debian/conf/jellyfin b/debian/conf/jellyfin deleted file mode 100644 index af460fedcf..0000000000 --- a/debian/conf/jellyfin +++ /dev/null @@ -1,53 +0,0 @@ -# Jellyfin default configuration options -# This is a POSIX shell fragment - -# Use this file to override the default configurations; add additional -# options with JELLYFIN_ADD_OPTS. - -# Under systemd, use -# /etc/systemd/system/jellyfin.service.d/jellyfin.service.conf -# to override the user or this config file's location. - -# -# General options -# - -# Program directories -JELLYFIN_DATA_DIR="/var/lib/jellyfin" -JELLYFIN_CONFIG_DIR="/etc/jellyfin" -JELLYFIN_LOG_DIR="/var/log/jellyfin" -JELLYFIN_CACHE_DIR="/var/cache/jellyfin" - -# web client path, installed by the jellyfin-web package -JELLYFIN_WEB_OPT="--webdir=/usr/share/jellyfin/web" - -# ffmpeg binary paths, overriding the system values -JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg" - -# Disable glibc dynamic heap adjustment -MALLOC_TRIM_THRESHOLD_=131072 - -# [OPTIONAL] run Jellyfin as a headless service -#JELLYFIN_SERVICE_OPT="--service" - -# [OPTIONAL] run Jellyfin without the web app -#JELLYFIN_NOWEBAPP_OPT="--nowebclient" - -# Space to add additional command line options to jellyfin (for help see ~$ jellyfin --help) -JELLYFIN_ADDITIONAL_OPTS="" - -# [OPTIONAL] run Jellyfin with ASP.NET Server Garbage Collection (uses more RAM and less CPU than Workstation GC) -# 0 = Workstation -# 1 = Server -#COMPlus_gcServer=1 - -# -# SysV init/Upstart options -# -# Note: These options are ignored by systemd; use /etc/systemd/system/jellyfin.d overrides instead. -# - -# Application username -JELLYFIN_USER="jellyfin" -# Full application command -JELLYFIN_ARGS="$JELLYFIN_WEB_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_SERVICE_OPT $JELLYFIN_NOWEBAPP_OPT $JELLFIN_ADDITIONAL_OPTS --datadir $JELLYFIN_DATA_DIR --configdir $JELLYFIN_CONFIG_DIR --logdir $JELLYFIN_LOG_DIR --cachedir $JELLYFIN_CACHE_DIR" diff --git a/debian/conf/jellyfin.service.conf b/debian/conf/jellyfin.service.conf deleted file mode 100644 index 1f92d7d94e..0000000000 --- a/debian/conf/jellyfin.service.conf +++ /dev/null @@ -1,55 +0,0 @@ -# Jellyfin systemd configuration options - -# Use this file to override the user or environment file location. - -[Service] -# Alter the user that Jellyfin runs as -#User = jellyfin - -# Alter where environment variables are sourced from -#EnvironmentFile = /etc/default/jellyfin - -# Service hardening options -# These were added in PR #6953 to solve issue #6952, but some combination of -# them causes "restart.sh" functionality to break with the following error: -# sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the -# 'nosuid' option set or an NFS file system without root privileges? -# See issue #7503 for details on the troubleshooting that went into this. -# Since these were added for NixOS specifically and are above and beyond -# what 99% of systemd units do, they have been moved here as optional -# additional flags to set for maximum system security and can be enabled at -# the administrator's or package maintainer's discretion. -# Uncomment these only if you know what you're doing, and doing so may cause -# bugs with in-server Restart and potentially other functionality as well. -#NoNewPrivileges=true -#SystemCallArchitectures=native -#RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK -#RestrictNamespaces=false -#RestrictRealtime=true -#RestrictSUIDSGID=true -#ProtectControlGroups=false -#ProtectHostname=true -#ProtectKernelLogs=false -#ProtectKernelModules=false -#ProtectKernelTunables=false -#LockPersonality=true -#PrivateTmp=false -#PrivateDevices=false -#PrivateUsers=true -#RemoveIPC=true -#SystemCallFilter=~@clock -#SystemCallFilter=~@aio -#SystemCallFilter=~@chown -#SystemCallFilter=~@cpu-emulation -#SystemCallFilter=~@debug -#SystemCallFilter=~@keyring -#SystemCallFilter=~@memlock -#SystemCallFilter=~@module -#SystemCallFilter=~@mount -#SystemCallFilter=~@obsolete -#SystemCallFilter=~@privileged -#SystemCallFilter=~@raw-io -#SystemCallFilter=~@reboot -#SystemCallFilter=~@setuid -#SystemCallFilter=~@swap -#SystemCallErrorNumber=EPERM diff --git a/debian/conf/logging.json b/debian/conf/logging.json deleted file mode 100644 index f32b2089eb..0000000000 --- a/debian/conf/logging.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "Serilog": { - "MinimumLevel": "Information", - "WriteTo": [ - { - "Name": "Console", - "Args": { - "outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message:lj}{NewLine}{Exception}" - } - }, - { - "Name": "Async", - "Args": { - "configure": [ - { - "Name": "File", - "Args": { - "path": "%JELLYFIN_LOG_DIR%//jellyfin.log", - "fileSizeLimitBytes": 10485700, - "rollOnFileSizeLimit": true, - "retainedFileCountLimit": 10, - "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}" - } - } - ] - } - } - ] - } -} diff --git a/debian/control b/debian/control deleted file mode 100644 index 5e0460de9e..0000000000 --- a/debian/control +++ /dev/null @@ -1,27 +0,0 @@ -Source: jellyfin-server -Section: misc -Priority: optional -Maintainer: Jellyfin Team -Build-Depends: debhelper (>= 9), - dotnet-sdk-8.0, - libc6-dev, - libcurl4-openssl-dev, - libfontconfig1-dev, - libfreetype6-dev, - libssl-dev -Standards-Version: 3.9.4 -Homepage: https://jellyfin.org/ -Vcs-Git: https://github.org/jellyfin/jellyfin.git -Vcs-Browser: https://github.org/jellyfin/jellyfin - -Package: jellyfin-server -Replaces: jellyfin (<<10.6.0) -Breaks: jellyfin (<<10.6.0) -Architecture: any -Depends: libsqlite3-0, - libfontconfig1, - libfreetype6, - libssl1.1 | libssl3 -Recommends: jellyfin-web -Description: Jellyfin is the Free Software Media System. - This package provides the Jellyfin server backend and API. diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index 0d7a2a6007..0000000000 --- a/debian/copyright +++ /dev/null @@ -1,29 +0,0 @@ -Format: http://dep.debian.net/deps/dep5 -Upstream-Name: jellyfin -Source: https://github.com/jellyfin/jellyfin - -Files: * -Copyright: 2018 Jellyfin Team -License: GPL-2.0+ - -Files: debian/* -Copyright: 2018 Joshua Boniface -Copyright: 2014 Carlos Hernandez -License: GPL-2.0+ - -License: GPL-2.0+ - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - . - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - . - You should have received a copy of the GNU General Public License - along with this program. If not, see - . - On Debian systems, the complete text of the GNU General - Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". diff --git a/debian/gbp.conf b/debian/gbp.conf deleted file mode 100644 index 60b3d28723..0000000000 --- a/debian/gbp.conf +++ /dev/null @@ -1,6 +0,0 @@ -[DEFAULT] -pristine-tar = False -cleaner = fakeroot debian/rules clean - -[import-orig] -filter = [ ".git*", ".hg*", ".vs*", ".vscode*" ] diff --git a/debian/install b/debian/install deleted file mode 100644 index 0b48dd7a25..0000000000 --- a/debian/install +++ /dev/null @@ -1,4 +0,0 @@ -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/ diff --git a/debian/jellyfin.init b/debian/jellyfin.init deleted file mode 100644 index 784536d874..0000000000 --- a/debian/jellyfin.init +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh -### BEGIN INIT INFO -# Provides: Jellyfin Media Server -# Required-Start: $local_fs $network -# Required-Stop: $local_fs -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Jellyfin Media Server -# Description: Runs Jellyfin Server -### END INIT INFO - -set -e - -# Carry out specific functions when asked to by the system - -if test -f /etc/default/jellyfin; then - . /etc/default/jellyfin -fi - -. /lib/lsb/init-functions - -PIDFILE="/run/jellyfin.pid" - -case "$1" in - start) - log_daemon_msg "Starting Jellyfin Media Server" "jellyfin" || true - - if start-stop-daemon --start --quiet --oknodo --background --pidfile $PIDFILE --make-pidfile --user $JELLYFIN_USER --chuid $JELLYFIN_USER --exec /usr/bin/jellyfin -- $JELLYFIN_ARGS; then - log_end_msg 0 || true - else - log_end_msg 1 || true - fi - ;; - - stop) - log_daemon_msg "Stopping Jellyfin Media Server" "jellyfin" || true - if start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --remove-pidfile; then - log_end_msg 0 || true - else - log_end_msg 1 || true - fi - ;; - - restart) - log_daemon_msg "Restarting Jellyfin Media Server" "jellyfin" || true - start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE --remove-pidfile - if start-stop-daemon --start --quiet --oknodo --background --pidfile $PIDFILE --make-pidfile --user $JELLYFIN_USER --chuid $JELLYFIN_USER --exec /usr/bin/jellyfin -- $JELLYFIN_ARGS; then - log_end_msg 0 || true - else - log_end_msg 1 || true - fi - ;; - - status) - status_of_proc -p $PIDFILE /usr/bin/jellyfin jellyfin && exit 0 || exit $? - ;; - - *) - echo "Usage: $0 {start|stop|restart|status}" - exit 1 - ;; -esac diff --git a/debian/jellyfin.service b/debian/jellyfin.service deleted file mode 100644 index 2cc49f7c4a..0000000000 --- a/debian/jellyfin.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description = Jellyfin Media Server -After = network-online.target - -[Service] -Type = simple -EnvironmentFile = /etc/default/jellyfin -User = jellyfin -Group = jellyfin -WorkingDirectory = /var/lib/jellyfin -ExecStart = /usr/bin/jellyfin $JELLYFIN_WEB_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_SERVICE_OPT $JELLYFIN_NOWEBAPP_OPT $JELLYFIN_ADDITIONAL_OPTS -Restart = on-failure -TimeoutSec = 15 -SuccessExitStatus=0 143 - -[Install] -WantedBy = multi-user.target diff --git a/debian/jellyfin.upstart b/debian/jellyfin.upstart deleted file mode 100644 index ef5bc9bcaf..0000000000 --- a/debian/jellyfin.upstart +++ /dev/null @@ -1,20 +0,0 @@ -description "jellyfin daemon" - -start on (local-filesystems and net-device-up IFACE!=lo) -stop on runlevel [!2345] - -console log -respawn -respawn limit 10 5 - -kill timeout 20 - -script - set -x - echo "Starting $UPSTART_JOB" - - # Log file - logger -t "$0" "DEBUG: `set`" - . /etc/default/jellyfin - exec su -u $JELLYFIN_USER -c /usr/bin/jellyfin $JELLYFIN_ARGS -end script diff --git a/debian/metapackage/jellyfin b/debian/metapackage/jellyfin deleted file mode 100644 index 8787c3a496..0000000000 --- a/debian/metapackage/jellyfin +++ /dev/null @@ -1,13 +0,0 @@ -Source: jellyfin -Section: misc -Priority: optional -Homepage: https://jellyfin.org -Standards-Version: 3.9.2 - -Package: jellyfin -Version: 10.9.0 -Maintainer: Jellyfin Packaging Team -Depends: jellyfin-server, jellyfin-web -Description: Provides the Jellyfin Free Software Media System - Provides the full Jellyfin experience, including both the server and web interface. - diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in deleted file mode 100644 index cef83a3407..0000000000 --- a/debian/po/POTFILES.in +++ /dev/null @@ -1 +0,0 @@ -[type: gettext/rfc822deb] templates diff --git a/debian/po/templates.pot b/debian/po/templates.pot deleted file mode 100644 index 2cdcae4173..0000000000 --- a/debian/po/templates.pot +++ /dev/null @@ -1,57 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: jellyfin-server\n" -"Report-Msgid-Bugs-To: jellyfin-server@packages.debian.org\n" -"POT-Creation-Date: 2015-06-12 20:51-0600\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Type: note -#. Description -#: ../templates:1001 -msgid "Jellyfin permission info:" -msgstr "" - -#. Type: note -#. Description -#: ../templates:1001 -msgid "" -"Jellyfin by default runs under a user named \"jellyfin\". Please ensure that the " -"user jellyfin has read and write access to any folders you wish to add to your " -"library. Otherwise please run jellyfin under a different user." -msgstr "" - -#. Type: string -#. Description -#: ../templates:2001 -msgid "Username to run Jellyfin as:" -msgstr "" - -#. Type: string -#. Description -#: ../templates:2001 -msgid "The user that jellyfin will run as." -msgstr "" - -#. Type: note -#. Description -#: ../templates:3001 -msgid "Jellyfin still running" -msgstr "" - -#. Type: note -#. Description -#: ../templates:3001 -msgid "Jellyfin is currently running. Please close it and try again." -msgstr "" diff --git a/debian/postinst b/debian/postinst deleted file mode 100644 index 947959aa7a..0000000000 --- a/debian/postinst +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash -set -e - -NAME=jellyfin -DEFAULT_FILE=/etc/default/${NAME} - -# Source Jellyfin default configuration -if [[ -f $DEFAULT_FILE ]]; then - . $DEFAULT_FILE -fi - -JELLYFIN_USER=${JELLYFIN_USER:-jellyfin} -RENDER_GROUP=${RENDER_GROUP:-render} -VIDEO_GROUP=${VIDEO_GROUP:-video} - -# 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_LOG_DIRECTORY-/var/log/$NAME} -CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME} - -case "$1" in - configure) - # create jellyfin group if it does not exist - if [[ -z "$(getent group ${JELLYFIN_USER})" ]]; then - addgroup --quiet --system ${JELLYFIN_USER} > /dev/null 2>&1 - fi - # create jellyfin user if it does not exist - if [[ -z "$(getent passwd ${JELLYFIN_USER})" ]]; then - adduser --system --ingroup ${JELLYFIN_USER} --shell /bin/false ${JELLYFIN_USER} --no-create-home --home ${PROGRAMDATA} \ - --gecos "Jellyfin default user" > /dev/null 2>&1 - fi - # add jellyfin to the render group for hwa - if [[ ! -z "$(getent group ${RENDER_GROUP})" ]]; then - usermod -aG ${RENDER_GROUP} ${JELLYFIN_USER} > /dev/null 2>&1 - fi - # add jellyfin to the video group for hwa - if [[ ! -z "$(getent group ${VIDEO_GROUP})" ]]; then - usermod -aG ${VIDEO_GROUP} ${JELLYFIN_USER} > /dev/null 2>&1 - fi - # ensure $PROGRAMDATA exists - if [[ ! -d $PROGRAMDATA ]]; then - mkdir $PROGRAMDATA - fi - # ensure $CONFIGDATA exists - if [[ ! -d $CONFIGDATA ]]; then - mkdir $CONFIGDATA - fi - # ensure $LOGDATA exists - 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_USER} $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA - chgrp adm $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA - chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA - - # Install jellyfin symlink into /usr/bin - ln -sf /usr/lib/jellyfin/bin/jellyfin /usr/bin/jellyfin - - ;; - abort-upgrade|abort-remove|abort-deconfigure) - ;; - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER - -if [[ -x "/usr/bin/deb-systemd-helper" ]]; then - # Manual init script handling - deb-systemd-helper unmask jellyfin.service >/dev/null || true - # was-enabled defaults to true, so new installations run enable. - if deb-systemd-helper --quiet was-enabled jellyfin.service; then - # Enables the unit on first installation, creates new - # symlinks on upgrades if the unit file has changed. - deb-systemd-helper enable jellyfin.service >/dev/null || true - else - # Update the statefile to add new symlinks (if any), which need to be - # cleaned up on purge. Also remove old symlinks. - deb-systemd-helper update-state jellyfin.service >/dev/null || true - fi -fi - -# End automatically added section -# Automatically added by dh_installinit -if [[ "$1" == "configure" ]] || [[ "$1" == "abort-upgrade" ]]; then - if [[ -d "/run/systemd/system" ]]; then - systemctl --system daemon-reload >/dev/null || true - deb-systemd-invoke start jellyfin >/dev/null || true - elif [[ -x "/etc/init.d/jellyfin" ]] || [[ -e "/etc/init/jellyfin.conf" ]]; then - update-rc.d jellyfin defaults >/dev/null - invoke-rc.d jellyfin start || exit $? - fi -fi -exit 0 diff --git a/debian/postrm b/debian/postrm deleted file mode 100644 index 3d56a5f1e8..0000000000 --- a/debian/postrm +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash -set -e - -NAME=jellyfin -DEFAULT_FILE=/etc/default/${NAME} - -# Source Jellyfin default configuration -if [[ -f $DEFAULT_FILE ]]; then - . $DEFAULT_FILE -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_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. -if [[ -d /run/systemd/system ]] ; then - systemctl --system daemon-reload >/dev/null || true -fi - -case "$1" in - purge) - echo PURGE | debconf-communicate $NAME > /dev/null 2>&1 || true - - if [[ -x "/etc/init.d/jellyfin" ]] || [[ -e "/etc/init/jellyfin.conf" ]]; then - update-rc.d jellyfin remove >/dev/null 2>&1 || true - fi - - if [[ -x "/usr/bin/deb-systemd-helper" ]]; then - deb-systemd-helper purge jellyfin.service >/dev/null - deb-systemd-helper unmask jellyfin.service >/dev/null - fi - - # Remove user and group - userdel jellyfin > /dev/null 2>&1 || true - delgroup --quiet jellyfin > /dev/null 2>&1 || true - # Remove config dir - if [[ -d $CONFIGDATA ]]; then - rm -rf $CONFIGDATA - fi - # Remove log dir - 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 - fi - # Remove binary symlink - rm -f /usr/bin/jellyfin - # Remove sudoers config - [[ -f /etc/sudoers.d/jellyfin-sudoers ]] && rm /etc/sudoers.d/jellyfin-sudoers - # 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) - if [[ -x "/usr/bin/deb-systemd-helper" ]]; then - deb-systemd-helper mask jellyfin.service >/dev/null - fi - ;; - upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - ;; - *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - -exit 0 diff --git a/debian/preinst b/debian/preinst deleted file mode 100644 index 2713fb9b80..0000000000 --- a/debian/preinst +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -set -e - -NAME=jellyfin -DEFAULT_FILE=/etc/default/${NAME} - -# Source Jellyfin default configuration -if [[ -f $DEFAULT_FILE ]]; then - . $DEFAULT_FILE -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_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. -if [[ -d /run/systemd/system ]] ; then - systemctl --system daemon-reload >/dev/null || true -fi - -case "$1" in - install|upgrade) - # try graceful termination; - if [[ -d /run/systemd/system ]]; then - deb-systemd-invoke stop ${NAME}.service > /dev/null 2>&1 || true - elif [ -x "/etc/init.d/${NAME}" ] || [ -e "/etc/init/${NAME}.conf" ]; then - invoke-rc.d ${NAME} stop > /dev/null 2>&1 || true - fi - # try and figure out if jellyfin is running - PIDFILE=$(find /var/run/ -maxdepth 1 -mindepth 1 -name "jellyfin*.pid" -print -quit) - [[ -n "$PIDFILE" ]] && [[ -s "$PIDFILE" ]] && JELLYFIN_PID=$(cat ${PIDFILE}) - # if its running, let's stop it - if [[ -n "$JELLYFIN_PID" ]]; then - echo "Stopping Jellyfin!" - # if jellyfin is still running, kill it - if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then - CPIDS=$(pgrep -P $JELLYFIN_PID) - sleep 2 && kill -KILL $CPIDS - kill -TERM $CPIDS > /dev/null 2>&1 - fi - sleep 1 - # if it's still running, show error - if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then - echo "Could not successfully stop JellyfinServer, please do so before uninstalling." - exit 1 - else - [[ -f $PIDFILE ]] && rm $PIDFILE - fi - fi - - # 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, 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) - ;; - *) - echo "preinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac -#DEBHELPER# - -exit 0 diff --git a/debian/prerm b/debian/prerm deleted file mode 100644 index e965cb7d71..0000000000 --- a/debian/prerm +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -set -e - -NAME=jellyfin -DEFAULT_FILE=/etc/default/${NAME} - -# Source Jellyfin default configuration -if [[ -f $DEFAULT_FILE ]]; then - . $DEFAULT_FILE -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_LOG_DIRECTORY-/var/log/$NAME} -CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME} - -case "$1" in - remove|upgrade|deconfigure) - echo "Stopping Jellyfin!" - # try graceful termination; - if [[ -d /run/systemd/system ]]; then - deb-systemd-invoke stop ${NAME}.service > /dev/null 2>&1 || true - elif [ -x "/etc/init.d/${NAME}" ] || [ -e "/etc/init/${NAME}.conf" ]; then - invoke-rc.d ${NAME} stop > /dev/null 2>&1 || true - fi - # Ensure that it is shutdown - PIDFILE=$(find /var/run/ -maxdepth 1 -mindepth 1 -name "jellyfin*.pid" -print -quit) - [[ -n "$PIDFILE" ]] && [[ -s "$PIDFILE" ]] && JELLYFIN_PID=$(cat ${PIDFILE}) - # if its running, let's stop it - if [[ -n "$JELLYFIN_PID" ]]; then - # if jellyfin is still running, kill it - if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then - CPIDS=$(pgrep -P $JELLYFIN_PID) - sleep 2 && kill -KILL $CPIDS - kill -TERM $CPIDS > /dev/null 2>&1 - fi - sleep 1 - # if it's still running, show error - if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then - echo "Could not successfully stop Jellyfin, please do so before uninstalling." - exit 1 - else - [[ -f $PIDFILE ]] && rm $PIDFILE - fi - fi - if [[ -f /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe.so ]]; then - rm /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe.so - fi - ;; - failed-upgrade) - ;; - *) - echo "prerm called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - -exit 0 diff --git a/debian/rules b/debian/rules deleted file mode 100755 index 79cd55a15d..0000000000 --- a/debian/rules +++ /dev/null @@ -1,55 +0,0 @@ -#! /usr/bin/make -f -CONFIG := Release -TERM := xterm -SHELL := /bin/bash - -HOST_ARCH := $(shell arch) -BUILD_ARCH := ${DEB_HOST_MULTIARCH} -ifeq ($(HOST_ARCH),x86_64) - # Building AMD64 - DOTNETRUNTIME := linux-x64 - ifeq ($(BUILD_ARCH),arm-linux-gnueabihf) - # Cross-building ARM on AMD64 - DOTNETRUNTIME := linux-arm - endif - ifeq ($(BUILD_ARCH),aarch64-linux-gnu) - # Cross-building ARM on AMD64 - DOTNETRUNTIME := linux-arm64 - endif -endif -ifeq ($(HOST_ARCH),armv7l) - # Building ARM - DOTNETRUNTIME := linux-arm -endif -ifeq ($(HOST_ARCH),arm64) - # Building ARM - DOTNETRUNTIME := linux-arm64 -endif -ifeq ($(HOST_ARCH),aarch64) - # Building ARM - DOTNETRUNTIME := linux-arm64 -endif - -export DH_VERBOSE=1 -export DOTNET_CLI_TELEMETRY_OPTOUT=1 - -%: - dh $@ - -# disable "make check" -override_dh_auto_test: - -# disable stripping debugging symbols -override_dh_clistrip: - -override_dh_auto_build: - dotnet publish -maxcpucount:1 --configuration $(CONFIG) --output='$(CURDIR)/usr/lib/jellyfin/bin' --self-contained --runtime $(DOTNETRUNTIME) \ - -p:DebugSymbols=false -p:DebugType=none Jellyfin.Server - -override_dh_auto_clean: - dotnet clean -maxcpucount:1 --configuration $(CONFIG) Jellyfin.Server || true - rm -rf '$(CURDIR)/usr' - -# Force the service name to jellyfin even if we're building jellyfin-nightly -override_dh_installinit: - dh_installinit --name=jellyfin diff --git a/debian/source.lintian-overrides b/debian/source.lintian-overrides deleted file mode 100644 index aeb332f13a..0000000000 --- a/debian/source.lintian-overrides +++ /dev/null @@ -1,3 +0,0 @@ -# This is an override for the following lintian errors: -jellyfin source: license-problem-md5sum-non-free-file Emby.Drawing/ImageMagick/fonts/webdings.ttf* -jellyfin source: source-is-missing diff --git a/debian/source/format b/debian/source/format deleted file mode 100644 index d3827e75a5..0000000000 --- a/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -1.0 diff --git a/debian/source/options b/debian/source/options deleted file mode 100644 index 17b5373d5e..0000000000 --- a/debian/source/options +++ /dev/null @@ -1,11 +0,0 @@ -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' diff --git a/deployment/Dockerfile.centos.amd64 b/deployment/Dockerfile.centos.amd64 deleted file mode 100644 index 6bd7d312c3..0000000000 --- a/deployment/Dockerfile.centos.amd64 +++ /dev/null @@ -1,39 +0,0 @@ -FROM quay.io/centos/centos:stream9 - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV IS_DOCKER=YES - -# Prepare CentOS environment -RUN dnf update -yq \ - && dnf install -yq \ - @buildsys-build rpmdevtools git \ - dnf-plugins-core libcurl-devel fontconfig-devel \ - freetype-devel openssl-devel glibc-devel \ - libicu-devel systemd wget make \ - && dnf clean all \ - && rm -rf /var/cache/dnf - -# Install DotNET SDK -RUN wget -q https://download.visualstudio.microsoft.com/download/pr/85bcc525-4e9c-471e-9c1d-96259aa1a315/930833ef34f66fe9ee2643b0ba21621a/dotnet-sdk-8.0.201-linux-x64.tar.gz -O dotnet-sdk.tar.gz \ - && mkdir -p dotnet-sdk \ - && tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \ - && ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet - -# Create symlinks and directories -RUN ln -sf ${SOURCE_DIR}/deployment/build.centos.amd64 /build.sh \ - && mkdir -p ${SOURCE_DIR}/SPECS \ - && ln -s ${SOURCE_DIR}/fedora/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \ - && mkdir -p ${SOURCE_DIR}/SOURCES \ - && ln -s ${SOURCE_DIR}/fedora ${SOURCE_DIR}/SOURCES - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.debian.amd64 b/deployment/Dockerfile.debian.amd64 deleted file mode 100644 index da0c9dabd3..0000000000 --- a/deployment/Dockerfile.debian.amd64 +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yq \ - && apt-get install --no-install-recommends -yq \ - debhelper gnupg devscripts build-essential mmv \ - libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev \ - libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yq \ - && apt-get autoremove -yq \ - && rm -rf /var/lib/apt/lists/* - -# Link to build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.debian.amd64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.debian.arm64 b/deployment/Dockerfile.debian.arm64 deleted file mode 100644 index 6c4cb816f5..0000000000 --- a/deployment/Dockerfile.debian.arm64 +++ /dev/null @@ -1,46 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts build-essential mmv - -# Prepare the cross-toolchain -RUN dpkg --add-architecture arm64 \ - && apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq cross-gcc-dev \ - && TARGET_LIST="arm64" cross-gcc-gensource 12 \ - && cd cross-gcc-packages-amd64/cross-gcc-12-arm64 \ - && apt-get install --no-install-recommends -yqq \ - gcc-12-source libstdc++-12-dev-arm64-cross \ - binutils-aarch64-linux-gnu bison flex libtool \ - gdb sharutils netbase libmpc-dev libmpfr-dev libgmp-dev \ - systemtap-sdt-dev autogen expect chrpath zlib1g-dev zip \ - libc6-dev:arm64 linux-libc-dev:arm64 libgcc1:arm64 \ - libcurl4-openssl-dev:arm64 libfontconfig1-dev:arm64 \ - libfreetype6-dev:arm64 libssl-dev:arm64 liblttng-ust1:arm64 libstdc++-12-dev:arm64 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.debian.arm64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.debian.armhf b/deployment/Dockerfile.debian.armhf deleted file mode 100644 index b1fa6cee52..0000000000 --- a/deployment/Dockerfile.debian.armhf +++ /dev/null @@ -1,47 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts build-essential mmv - -# Prepare the cross-toolchain -RUN dpkg --add-architecture armhf \ - && apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq cross-gcc-dev \ - && TARGET_LIST="armhf" cross-gcc-gensource 12 \ - && cd cross-gcc-packages-amd64/cross-gcc-12-armhf \ - && apt-get install --no-install-recommends -yqq \ - gcc-12-source libstdc++-12-dev-armhf-cross \ - binutils-aarch64-linux-gnu bison flex libtool gdb \ - sharutils netbase libmpc-dev libmpfr-dev libgmp-dev \ - systemtap-sdt-dev autogen expect chrpath zlib1g-dev \ - zip binutils-arm-linux-gnueabihf libc6-dev:armhf \ - linux-libc-dev:armhf libgcc1:armhf libcurl4-openssl-dev:armhf \ - libfontconfig1-dev:armhf libfreetype6-dev:armhf libssl-dev:armhf \ - liblttng-ust1:armhf libstdc++-12-dev:armhf \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.debian.armhf /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.docker.amd64 b/deployment/Dockerfile.docker.amd64 deleted file mode 100644 index ca16a08fbc..0000000000 --- a/deployment/Dockerfile.docker.amd64 +++ /dev/null @@ -1,12 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -ARG SOURCE_DIR=/src -ARG ARTIFACT_DIR=/jellyfin - -WORKDIR ${SOURCE_DIR} -COPY . . -ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 - -RUN dotnet publish Jellyfin.Server --configuration Release --output="${ARTIFACT_DIR}" --self-contained --runtime linux-x64 -p:DebugSymbols=false -p:DebugType=none diff --git a/deployment/Dockerfile.docker.arm64 b/deployment/Dockerfile.docker.arm64 deleted file mode 100644 index 6e0f7d18e9..0000000000 --- a/deployment/Dockerfile.docker.arm64 +++ /dev/null @@ -1,12 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -ARG SOURCE_DIR=/src -ARG ARTIFACT_DIR=/jellyfin - -WORKDIR ${SOURCE_DIR} -COPY . . -ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 - -RUN dotnet publish Jellyfin.Server --configuration Release --output="${ARTIFACT_DIR}" --self-contained --runtime linux-arm64 -p:DebugSymbols=false -p:DebugType=none diff --git a/deployment/Dockerfile.docker.armhf b/deployment/Dockerfile.docker.armhf deleted file mode 100644 index 44fb705e6d..0000000000 --- a/deployment/Dockerfile.docker.armhf +++ /dev/null @@ -1,12 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -ARG SOURCE_DIR=/src -ARG ARTIFACT_DIR=/jellyfin - -WORKDIR ${SOURCE_DIR} -COPY . . -ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 - -RUN dotnet publish Jellyfin.Server --configuration Release --output="${ARTIFACT_DIR}" --self-contained --runtime linux-arm -p:DebugSymbols=false -p:DebugType=none diff --git a/deployment/Dockerfile.fedora.amd64 b/deployment/Dockerfile.fedora.amd64 deleted file mode 100644 index f1dc492de0..0000000000 --- a/deployment/Dockerfile.fedora.amd64 +++ /dev/null @@ -1,39 +0,0 @@ -FROM fedora:39 - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV IS_DOCKER=YES - -# Prepare Fedora environment -RUN dnf update -yq \ - && dnf install -yq \ - @buildsys-build rpmdevtools git \ - dnf-plugins-core libcurl-devel fontconfig-devel \ - freetype-devel openssl-devel glibc-devel \ - libicu-devel systemd wget make \ - && dnf clean all \ - && rm -rf /var/cache/dnf - -# Install DotNET SDK -RUN wget -q https://download.visualstudio.microsoft.com/download/pr/85bcc525-4e9c-471e-9c1d-96259aa1a315/930833ef34f66fe9ee2643b0ba21621a/dotnet-sdk-8.0.201-linux-x64.tar.gz -O dotnet-sdk.tar.gz \ - && mkdir -p dotnet-sdk \ - && tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \ - && ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet - -# Create symlinks and directories -RUN ln -sf ${SOURCE_DIR}/deployment/build.fedora.amd64 /build.sh \ - && mkdir -p ${SOURCE_DIR}/SPECS \ - && ln -s ${SOURCE_DIR}/fedora/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \ - && mkdir -p ${SOURCE_DIR}/SOURCES \ - && ln -s ${SOURCE_DIR}/fedora ${SOURCE_DIR}/SOURCES - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.linux.amd64 b/deployment/Dockerfile.linux.amd64 deleted file mode 100644 index 6b8de3773f..0000000000 --- a/deployment/Dockerfile.linux.amd64 +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts unzip \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.linux.amd64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.linux.amd64-musl b/deployment/Dockerfile.linux.amd64-musl deleted file mode 100644 index 49d98da2ac..0000000000 --- a/deployment/Dockerfile.linux.amd64-musl +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts unzip \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.linux.amd64-musl /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.linux.arm64 b/deployment/Dockerfile.linux.arm64 deleted file mode 100644 index aba33c8b23..0000000000 --- a/deployment/Dockerfile.linux.arm64 +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=arm64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts unzip \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.linux.arm64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.linux.armhf b/deployment/Dockerfile.linux.armhf deleted file mode 100644 index 247f756150..0000000000 --- a/deployment/Dockerfile.linux.armhf +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=armhf -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts unzip \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.linux.armhf /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.linux.musl-linux-arm64 b/deployment/Dockerfile.linux.musl-linux-arm64 deleted file mode 100644 index a6e1ba217e..0000000000 --- a/deployment/Dockerfile.linux.musl-linux-arm64 +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=arm64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts unzip \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.linux.musl-linux-arm64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.macos.amd64 b/deployment/Dockerfile.macos.amd64 deleted file mode 100644 index 45980c363e..0000000000 --- a/deployment/Dockerfile.macos.amd64 +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.macos.amd64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.macos.arm64 b/deployment/Dockerfile.macos.arm64 deleted file mode 100644 index ee3a813dde..0000000000 --- a/deployment/Dockerfile.macos.arm64 +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.macos.arm64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.portable b/deployment/Dockerfile.portable deleted file mode 100644 index 0ab1b19147..0000000000 --- a/deployment/Dockerfile.portable +++ /dev/null @@ -1,32 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.portable /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.ubuntu.amd64 b/deployment/Dockerfile.ubuntu.amd64 deleted file mode 100644 index 2326d3e852..0000000000 --- a/deployment/Dockerfile.ubuntu.amd64 +++ /dev/null @@ -1,33 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-jammy - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg wget ca-certificates devscripts \ - mmv build-essential libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.ubuntu.amd64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.ubuntu.arm64 b/deployment/Dockerfile.ubuntu.arm64 deleted file mode 100644 index 461a287a18..0000000000 --- a/deployment/Dockerfile.ubuntu.arm64 +++ /dev/null @@ -1,56 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-jammy - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg wget ca-certificates devscripts \ - mmv build-essential lsb-release - -# Prepare the cross-toolchain -RUN rm /etc/apt/sources.list \ - && export CODENAME="$( lsb_release -c -s )" \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \ - && echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \ - && echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \ - && echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \ - && dpkg --add-architecture arm64 \ - && apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq cross-gcc-dev \ - && TARGET_LIST="arm64" cross-gcc-gensource 12 \ - && cd cross-gcc-packages-amd64/cross-gcc-12-arm64 \ - && ln -fs /usr/share/zoneinfo/America/Toronto /etc/localtime \ - && apt-get install --no-install-recommends -yqq \ - gcc-12-source libstdc++6-arm64-cross binutils-aarch64-linux-gnu \ - bison flex libtool gdb sharutils netbase libmpc-dev \ - libmpfr-dev libgmp-dev systemtap-sdt-dev autogen expect chrpath zlib1g-dev \ - zip libc6-dev:arm64 linux-libc-dev:arm64 libgcc1:arm64 libcurl4-openssl-dev:arm64 \ - libfontconfig1-dev:arm64 libfreetype6-dev:arm64 liblttng-ust1:arm64 libstdc++6:arm64 libssl-dev:arm64 \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.ubuntu.arm64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.ubuntu.armhf b/deployment/Dockerfile.ubuntu.armhf deleted file mode 100644 index 83fe32acf8..0000000000 --- a/deployment/Dockerfile.ubuntu.armhf +++ /dev/null @@ -1,56 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-jammy - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV ARCH=amd64 -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg wget ca-certificates devscripts \ - mmv build-essential lsb-release - -# Prepare the cross-toolchain -RUN rm /etc/apt/sources.list \ - && export CODENAME="$( lsb_release -c -s )" \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \ - && echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \ - && echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \ - && echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \ - && echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \ - && dpkg --add-architecture armhf \ - && apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq cross-gcc-dev \ - && TARGET_LIST="armhf" cross-gcc-gensource 12 \ - && cd cross-gcc-packages-amd64/cross-gcc-12-armhf \ - && ln -fs /usr/share/zoneinfo/America/Toronto /etc/localtime \ - && apt-get install --no-install-recommends -yqq \ - gcc-12-source libstdc++6-armhf-cross binutils-arm-linux-gnueabihf \ - bison flex libtool gdb sharutils netbase libmpc-dev \ - libmpfr-dev libgmp-dev systemtap-sdt-dev autogen expect chrpath zlib1g-dev \ - zip libc6-dev:armhf linux-libc-dev:armhf libgcc1:armhf libcurl4-openssl-dev:armhf \ - libfontconfig1-dev:armhf libfreetype6-dev:armhf liblttng-ust1:armhf libstdc++6:armhf libssl-dev:armhf \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.debian.armhf /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/Dockerfile.windows.amd64 b/deployment/Dockerfile.windows.amd64 deleted file mode 100644 index 358fb620ac..0000000000 --- a/deployment/Dockerfile.windows.amd64 +++ /dev/null @@ -1,32 +0,0 @@ -ARG DOTNET_VERSION=8.0 - -FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}-bookworm-slim - -# Docker build arguments -ARG SOURCE_DIR=/jellyfin -ARG ARTIFACT_DIR=/dist - -# Docker run environment -ENV SOURCE_DIR=/jellyfin -ENV ARTIFACT_DIR=/dist -ENV DEB_BUILD_OPTIONS=noddebs -ENV IS_DOCKER=YES - -# Prepare Debian build environment -RUN apt-get update -yqq \ - && apt-get install --no-install-recommends -yqq \ - debhelper gnupg devscripts unzip \ - mmv libcurl4-openssl-dev libfontconfig1-dev \ - libfreetype6-dev libssl-dev libssl3 liblttng-ust1 zip \ - && apt-get clean autoclean -yqq \ - && apt-get autoremove -yqq \ - && rm -rf /var/lib/apt/lists/* - -# Link to docker-build script -RUN ln -sf ${SOURCE_DIR}/deployment/build.windows.amd64 /build.sh - -VOLUME ${SOURCE_DIR}/ - -VOLUME ${ARTIFACT_DIR}/ - -ENTRYPOINT ["/build.sh"] diff --git a/deployment/build.centos.amd64 b/deployment/build.centos.amd64 deleted file mode 100755 index 26be377f10..0000000000 --- a/deployment/build.centos.amd64 +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -#= CentOS/RHEL 9+ amd64 .rpm - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -if [[ ${IS_DOCKER} == YES ]]; then - # Remove BuildRequires for dotnet, since it's installed manually - pushd centos - - cp -a jellyfin.spec /tmp/spec.orig - sed -i 's/BuildRequires: dotnet/# BuildRequires: dotnet/' jellyfin.spec - - popd -fi - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd centos - - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - sed -i "s/Version:.*/Version: ${BUILD_ID}/" jellyfin.spec - sed -i "/%changelog/q" jellyfin.spec - - cat <>jellyfin.spec -* $( LANG=C date '+%a %b %d %Y' ) Jellyfin Packaging Team -- Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} -EOF - popd -fi - -# Build RPM -make -f centos/Makefile srpm outdir=/root/rpmbuild/SRPMS -rpmbuild --rebuild -bb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm - -# Move the artifacts out -mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -rm -f centos/jellyfin*.tar.gz - -if [[ ${IS_DOCKER} == YES ]]; then - pushd centos - - cp -a /tmp/spec.orig jellyfin.spec - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" - - popd -fi - -popd diff --git a/deployment/build.debian.amd64 b/deployment/build.debian.amd64 deleted file mode 100755 index 350b22a854..0000000000 --- a/deployment/build.debian.amd64 +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -#= Debian 12+ amd64 .deb - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd debian - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - cat <changelog -jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium - - * Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} - - -- Jellyfin Packaging Team $( date --rfc-2822 ) -EOF - popd -fi - -# Build DEB -dpkg-buildpackage -us -uc --pre-clean --post-clean - -mkdir -p "${ARTIFACT_DIR}/" -mv ../jellyfin*.{deb,dsc,tar.gz,buildinfo,changes} "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - cp -a /tmp/control.orig debian/control - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.debian.arm64 b/deployment/build.debian.arm64 deleted file mode 100755 index 0dfca0ab49..0000000000 --- a/deployment/build.debian.arm64 +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -#= Debian 12+ arm64 .deb - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd debian - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - cat <changelog -jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium - - * Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} - - -- Jellyfin Packaging Team $( date --rfc-2822 ) -EOF - popd -fi - -# Build DEB -export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH} -dpkg-buildpackage -us -uc -a arm64 --pre-clean --post-clean - -mkdir -p "${ARTIFACT_DIR}/" -mv ../jellyfin*.{deb,dsc,tar.gz,buildinfo,changes} "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - cp -a /tmp/control.orig debian/control - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.debian.armhf b/deployment/build.debian.armhf deleted file mode 100755 index 0ab9e2f9a4..0000000000 --- a/deployment/build.debian.armhf +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -#= Debian 12+ arm64 .deb - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd debian - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - cat <changelog -jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium - - * Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} - - -- Jellyfin Packaging Team $( date --rfc-2822 ) -EOF - popd -fi - -# Build DEB -export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH} -dpkg-buildpackage -us -uc -a armhf --pre-clean --post-clean - -mkdir -p "${ARTIFACT_DIR}/" -mv ../jellyfin*.{deb,dsc,tar.gz,buildinfo,changes} "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - cp -a /tmp/control.orig debian/control - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.fedora.amd64 b/deployment/build.fedora.amd64 deleted file mode 100755 index 2b4ec2a9c5..0000000000 --- a/deployment/build.fedora.amd64 +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -#= Fedora 39+ amd64 .rpm - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -if [[ ${IS_DOCKER} == YES ]]; then - # Remove BuildRequires for dotnet, since it's installed manually - pushd fedora - - cp -a jellyfin.spec /tmp/spec.orig - sed -i 's/BuildRequires: dotnet/# BuildRequires: dotnet/' jellyfin.spec - - popd -fi - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd fedora - - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - sed -i "s/Version:.*/Version: ${BUILD_ID}/" jellyfin.spec - sed -i "/%changelog/q" jellyfin.spec - - cat <>jellyfin.spec -* $( LANG=C date '+%a %b %d %Y' ) Jellyfin Packaging Team -- Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} -EOF - popd -fi - -# Build RPM -make -f fedora/Makefile srpm outdir=/root/rpmbuild/SRPMS -rpmbuild -rb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm - -# Move the artifacts out -mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -rm -f fedora/jellyfin*.tar.gz - -if [[ ${IS_DOCKER} == YES ]]; then - pushd fedora - - cp -a /tmp/spec.orig jellyfin.spec - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" - - popd -fi - -popd diff --git a/deployment/build.linux.amd64 b/deployment/build.linux.amd64 deleted file mode 100755 index 2998d2f9e3..0000000000 --- a/deployment/build.linux.amd64 +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= Generic Linux amd64 .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime linux-x64 --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true -tar -czf jellyfin-server_"${version}"_linux-amd64.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.linux.amd64-musl b/deployment/build.linux.amd64-musl deleted file mode 100755 index 0fa1764650..0000000000 --- a/deployment/build.linux.amd64-musl +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= Generic Linux amd64-musl .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime linux-musl-x64 --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true -tar -czf jellyfin-server_"${version}"_linux-amd64-musl.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.linux.arm64 b/deployment/build.linux.arm64 deleted file mode 100755 index dc44ca330d..0000000000 --- a/deployment/build.linux.arm64 +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= Generic Linux arm64 .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime linux-arm64 --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true -tar -czf jellyfin-server_"${version}"_linux-arm64.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.linux.armhf b/deployment/build.linux.armhf deleted file mode 100755 index f9de9ff0a3..0000000000 --- a/deployment/build.linux.armhf +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= Generic Linux armhf .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime linux-arm --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true -tar -czf jellyfin-server_"${version}"_linux-armhf.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.linux.musl-linux-arm64 b/deployment/build.linux.musl-linux-arm64 deleted file mode 100755 index ae9ab010f5..0000000000 --- a/deployment/build.linux.musl-linux-arm64 +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= Generic Linux musl-linux-arm64 .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime linux-musl-arm64 --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true -tar -czf jellyfin-server_"${version}"_linux-arm64-musl.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.macos.amd64 b/deployment/build.macos.amd64 deleted file mode 100755 index 81e0f43f62..0000000000 --- a/deployment/build.macos.amd64 +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= macOS 10.13+ amd64 .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime osx-x64 --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true -tar -czf jellyfin-server_"${version}"_macos-amd64.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.macos.arm64 b/deployment/build.macos.arm64 deleted file mode 100755 index 0a6f37edea..0000000000 --- a/deployment/build.macos.arm64 +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= macOS 11.0+ arm64 .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime osx-arm64 --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true -tar -czf jellyfin-server_"${version}"_macos-arm64.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.portable b/deployment/build.portable deleted file mode 100755 index fad14fccfc..0000000000 --- a/deployment/build.portable +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -#= Portable .NET DLL .tar.gz - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -# Build archives -dotnet publish Jellyfin.Server --configuration Release --output dist/jellyfin-server_"${version}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=false -tar -czf jellyfin-server_"${version}"_portable.tar.gz -C dist jellyfin-server_"${version}" -rm -rf dist/jellyfin-server_"${version}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv jellyfin[-_]*.tar.gz "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.ubuntu.amd64 b/deployment/build.ubuntu.amd64 deleted file mode 100755 index 6fd87a3aec..0000000000 --- a/deployment/build.ubuntu.amd64 +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -#= Ubuntu 22.04+ amd64 .deb - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd debian - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - cat <changelog -jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium - - * Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} - - -- Jellyfin Packaging Team $( date --rfc-2822 ) -EOF - popd -fi - -# Build DEB -dpkg-buildpackage -us -uc --pre-clean --post-clean - -mkdir -p "${ARTIFACT_DIR}/" -mv ../jellyfin*.{deb,dsc,tar.gz,buildinfo,changes} "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - cp -a /tmp/control.orig debian/control - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.ubuntu.arm64 b/deployment/build.ubuntu.arm64 deleted file mode 100755 index f783941c73..0000000000 --- a/deployment/build.ubuntu.arm64 +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -#= Ubuntu 22.04+ arm64 .deb - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd debian - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - cat <changelog -jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium - - * Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} - - -- Jellyfin Packaging Team $( date --rfc-2822 ) -EOF - popd -fi - -# Build DEB -export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH} -dpkg-buildpackage -us -uc -a arm64 --pre-clean --post-clean - -mkdir -p "${ARTIFACT_DIR}/" -mv ../jellyfin*.{deb,dsc,tar.gz,buildinfo,changes} "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - cp -a /tmp/control.orig debian/control - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.ubuntu.armhf b/deployment/build.ubuntu.armhf deleted file mode 100755 index cde6708c5b..0000000000 --- a/deployment/build.ubuntu.armhf +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -#= Ubuntu 22.04+ arm64 .deb - -set -o errexit -set -o xtrace - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Modify changelog to unstable configuration if IS_UNSTABLE -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - pushd debian - PR_ID=$( git log --grep 'Merge pull request' --oneline --single-worktree --first-parent | head -1 | grep --color=none -Eo '#[0-9]+' | tr -d '#' ) - - cat <changelog -jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium - - * Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID} - - -- Jellyfin Packaging Team $( date --rfc-2822 ) -EOF - popd -fi - -# Build DEB -export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH} -dpkg-buildpackage -us -uc -a armhf --pre-clean --post-clean - -mkdir -p "${ARTIFACT_DIR}/" -mv ../jellyfin*.{deb,dsc,tar.gz,buildinfo,changes} "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - cp -a /tmp/control.orig debian/control - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/deployment/build.windows.amd64 b/deployment/build.windows.amd64 deleted file mode 100755 index cd07f4e0b2..0000000000 --- a/deployment/build.windows.amd64 +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -#= Windows 7+ amd64 (x64) .zip - -set -o errexit -set -o xtrace - -# Version variables -NSSM_VERSION="nssm-2.24-101-g897c7ad" -NSSM_URL="http://files.evilt.win/nssm/${NSSM_VERSION}.zip" -FFMPEG_URL="https://repo.jellyfin.org/releases/server/windows/ffmpeg/jellyfin-ffmpeg-portable_win64.zip"; - -# Move to source directory -pushd "${SOURCE_DIR}" - -# Get version -if [[ ${IS_UNSTABLE} == 'yes' ]]; then - version="${BUILD_ID}" -else - version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )" -fi - -output_dir="dist/jellyfin-server_${version}" - -# Build binary -dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime win-x64 --output "${output_dir}"/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=true - -# Prepare addins -addin_build_dir="$( mktemp -d )" -wget ${NSSM_URL} -O "${addin_build_dir}"/nssm.zip -wget ${FFMPEG_URL} -O "${addin_build_dir}"/jellyfin-ffmpeg.zip -unzip "${addin_build_dir}"/nssm.zip -d "${addin_build_dir}" -cp "${addin_build_dir}"/${NSSM_VERSION}/win64/nssm.exe "${output_dir}"/nssm.exe -unzip "${addin_build_dir}"/jellyfin-ffmpeg.zip -d "${addin_build_dir}"/jellyfin-ffmpeg -cp "${addin_build_dir}"/jellyfin-ffmpeg/* "${output_dir}" -rm -rf "${addin_build_dir}" - -# Create zip package -pushd dist -zip -qr jellyfin-server_"${version}".portable.zip jellyfin-server_"${version}" -popd -rm -rf "${output_dir}" - -# Move the artifacts out -mkdir -p "${ARTIFACT_DIR}/" -mv dist/jellyfin[-_]*.zip "${ARTIFACT_DIR}/" - -if [[ ${IS_DOCKER} == YES ]]; then - chown -Rc "$(stat -c %u:%g "${ARTIFACT_DIR}")" "${ARTIFACT_DIR}" -fi - -popd diff --git a/fedora/.gitignore b/fedora/.gitignore deleted file mode 100644 index 6019b98c22..0000000000 --- a/fedora/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.rpm -*.zip -*.tar.gz \ No newline at end of file diff --git a/fedora/Makefile b/fedora/Makefile deleted file mode 100644 index 3188cf6039..0000000000 --- a/fedora/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -DIR := $(dir $(lastword $(MAKEFILE_LIST))) -INSTGIT := $(shell if [ "$$(id -u)" = "0" ]; then dnf -y install git; fi) -NAME := jellyfin-server -VERSION := $(shell sed -ne '/^Version:/s/.* *//p' $(DIR)/jellyfin.spec) -RELEASE := $(shell sed -ne '/^Release:/s/.* *\(.*\)%{.*}.*/\1/p' $(DIR)/jellyfin.spec) -SRPM := jellyfin-$(subst -,~,$(VERSION))-$(RELEASE)$(shell rpm --eval %dist).src.rpm -TARBALL :=$(NAME)-$(subst -,~,$(VERSION)).tar.gz - -epel-7-x86_64_repos := https://packages.microsoft.com/rhel/7/prod/ - -fed_ver := $(shell rpm -E %fedora) -# fallback when not running on Fedora -fed_ver ?= 36 -TARGET ?= fedora-$(fed_ver)-x86_64 - -outdir ?= $(PWD)/$(DIR)/ - -srpm: $(DIR)/$(SRPM) -tarball: $(DIR)/$(TARBALL) - -$(DIR)/$(TARBALL): - cd $(DIR)/; \ - SOURCE_DIR=.. \ - WORKDIR="$${PWD}"; \ - version=$(VERSION); \ - tar \ - --transform "s,^\.,$(NAME)-$(subst -,~,$(VERSION))," \ - --exclude='.git*' \ - --exclude='**/.git' \ - --exclude='**/.hg' \ - --exclude='**/.vs' \ - --exclude='**/.vscode' \ - --exclude=deployment \ - --exclude='**/bin' \ - --exclude='**/obj' \ - --exclude='**/.nuget' \ - --exclude='*.deb' \ - --exclude='*.rpm' \ - --exclude=$(notdir $@) \ - -czf $(notdir $@) \ - -C $${SOURCE_DIR} ./ - -$(DIR)/$(SRPM): $(DIR)/$(TARBALL) $(DIR)/jellyfin.spec - cd $(DIR)/; \ - rpmbuild -bs jellyfin.spec \ - --define "_sourcedir $$PWD/" \ - --define "_srcrpmdir $(outdir)" - -rpms: $(DIR)/$(SRPM) - mock $(addprefix --addrepo=, $($(TARGET)_repos)) \ - --enable-network \ - -r $(TARGET) $< diff --git a/fedora/README.md b/fedora/README.md deleted file mode 100644 index 6ea87740f2..0000000000 --- a/fedora/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Jellyfin RPM - -## Build Fedora Package with docker - -Change into this directory `cd rpm-package` -Run the build script `./build-fedora-rpm.sh`. -Resulting RPM and src.rpm will be in `../../jellyfin-*.rpm` - -## ffmpeg - -The RPM package for Fedora/CentOS requires some additional repositories as ffmpeg is not in the main repositories. - -```shell -# ffmpeg from RPMfusion free -# Fedora -$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm -# CentOS 8 -$ sudo dnf localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm -# CentOS 9 -$ sudo dnf localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-9.noarch.rpm -``` - -## Building with dotnet - -Jellyfin is build with `--self-contained` so no dotnet required for runtime. - -```shell -# dotnet required for building the RPM -# Fedora -$ sudo dnf copr enable @dotnet-sig/dotnet -# CentOS 8 -$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm -# CentOS 9 -$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm -``` - -## TODO - -- [ ] OpenSUSE diff --git a/fedora/jellyfin-firewalld.xml b/fedora/jellyfin-firewalld.xml deleted file mode 100644 index 538c5d65f8..0000000000 --- a/fedora/jellyfin-firewalld.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - Jellyfin - The Free Software Media System. - - - - - diff --git a/fedora/jellyfin-selinux-launcher.sh b/fedora/jellyfin-selinux-launcher.sh deleted file mode 100644 index e07a351d9a..0000000000 --- a/fedora/jellyfin-selinux-launcher.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exec /usr/lib64/jellyfin/jellyfin "${@}" diff --git a/fedora/jellyfin-server-lowports.conf b/fedora/jellyfin-server-lowports.conf deleted file mode 100644 index eeb48a4e4b..0000000000 --- a/fedora/jellyfin-server-lowports.conf +++ /dev/null @@ -1,4 +0,0 @@ -# This allows Jellyfin to bind to low ports such as 80 and/or 443 - -[Service] -AmbientCapabilities=CAP_NET_BIND_SERVICE \ No newline at end of file diff --git a/fedora/jellyfin.env b/fedora/jellyfin.env deleted file mode 100644 index cee8f68544..0000000000 --- a/fedora/jellyfin.env +++ /dev/null @@ -1,44 +0,0 @@ -# Jellyfin default configuration options - -# Use this file to override the default configurations; add additional -# options with JELLYFIN_ADD_OPTS. - -# To override the user or this config file's location, use -# /etc/systemd/system/jellyfin.service.d/override.conf - -# -# This is a POSIX shell fragment -# - -# -# General options -# - -# Program directories -JELLYFIN_DATA_DIR="/var/lib/jellyfin" -JELLYFIN_CONFIG_DIR="/etc/jellyfin" -JELLYFIN_LOG_DIR="/var/log/jellyfin" -JELLYFIN_CACHE_DIR="/var/cache/jellyfin" - -# web client path, installed by the jellyfin-web package -# JELLYFIN_WEB_OPT="--webdir=/usr/share/jellyfin-web" - -# In-App service control -JELLYFIN_RESTART_OPT="--restartpath=/usr/libexec/jellyfin/restart.sh" - -# Disable glibc dynamic heap adjustment -MALLOC_TRIM_THRESHOLD_=131072 - -# [OPTIONAL] ffmpeg binary paths, overriding the UI-configured values -#JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/bin/ffmpeg" - -# [OPTIONAL] run Jellyfin as a headless service -#JELLYFIN_SERVICE_OPT="--service" - -# [OPTIONAL] run Jellyfin without the web app -#JELLYFIN_NOWEBAPP_OPT="--nowebclient" - -# [OPTIONAL] run Jellyfin with ASP.NET Server Garbage Collection (uses more RAM and less CPU than Workstation GC) -# 0 = Workstation -# 1 = Server -#COMPlus_gcServer=1 diff --git a/fedora/jellyfin.override.conf b/fedora/jellyfin.override.conf deleted file mode 100644 index 48b4de1e9a..0000000000 --- a/fedora/jellyfin.override.conf +++ /dev/null @@ -1,53 +0,0 @@ -# Jellyfin systemd configuration options - -# Use this file to override the user or environment file location. - -[Service] -#User = jellyfin -#EnvironmentFile = /etc/sysconfig/jellyfin - -# Service hardening options -# These were added in PR #6953 to solve issue #6952, but some combination of -# them causes "restart.sh" functionality to break with the following error: -# sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the -# 'nosuid' option set or an NFS file system without root privileges? -# See issue #7503 for details on the troubleshooting that went into this. -# Since these were added for NixOS specifically and are above and beyond -# what 99% of systemd units do, they have been moved here as optional -# additional flags to set for maximum system security and can be enabled at -# the administrator's or package maintainer's discretion. -# Uncomment these only if you know what you're doing, and doing so may cause -# bugs with in-server Restart and potentially other functionality as well. -#NoNewPrivileges=true -#SystemCallArchitectures=native -#RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK -#RestrictNamespaces=false -#RestrictRealtime=true -#RestrictSUIDSGID=true -#ProtectClock=true -#ProtectControlGroups=false -#ProtectHostname=true -#ProtectKernelLogs=false -#ProtectKernelModules=false -#ProtectKernelTunables=false -#LockPersonality=true -#PrivateTmp=false -#PrivateDevices=false -#PrivateUsers=true -#RemoveIPC=true -#SystemCallFilter=~@clock -#SystemCallFilter=~@aio -#SystemCallFilter=~@chown -#SystemCallFilter=~@cpu-emulation -#SystemCallFilter=~@debug -#SystemCallFilter=~@keyring -#SystemCallFilter=~@memlock -#SystemCallFilter=~@module -#SystemCallFilter=~@mount -#SystemCallFilter=~@obsolete -#SystemCallFilter=~@privileged -#SystemCallFilter=~@raw-io -#SystemCallFilter=~@reboot -#SystemCallFilter=~@setuid -#SystemCallFilter=~@swap -#SystemCallErrorNumber=EPERM diff --git a/fedora/jellyfin.service b/fedora/jellyfin.service deleted file mode 100644 index 01accdc0c9..0000000000 --- a/fedora/jellyfin.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description = Jellyfin Media Server -After = network-online.target - -[Service] -Type = simple -EnvironmentFile = /etc/sysconfig/jellyfin -User = jellyfin -Group = jellyfin -WorkingDirectory = /var/lib/jellyfin -ExecStart = /usr/bin/jellyfin $JELLYFIN_WEB_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_SERVICE_OPT $JELLYFIN_NOWEBAPP_OPT $JELLYFIN_ADDITIONAL_OPTS -Restart = on-failure -TimeoutSec = 15 -SuccessExitStatus=0 143 - -[Install] -WantedBy = multi-user.target diff --git a/fedora/jellyfin.spec b/fedora/jellyfin.spec deleted file mode 100644 index 5327495ad3..0000000000 --- a/fedora/jellyfin.spec +++ /dev/null @@ -1,197 +0,0 @@ -%global debug_package %{nil} - -Name: jellyfin -Version: 10.9.0 -Release: 1%{?dist} -Summary: The Free Software Media System -License: GPLv2 -URL: https://jellyfin.org -# Jellyfin Server tarball created by `make -f .copr/Makefile srpm`, real URL ends with `v%%{version}.tar.gz` -Source0: jellyfin-server-%{version}.tar.gz -Source10: jellyfin-selinux-launcher.sh -Source11: jellyfin.service -Source12: jellyfin.env -Source13: jellyfin.override.conf -Source14: jellyfin-firewalld.xml -Source15: jellyfin-server-lowports.conf - -%{?systemd_requires} -BuildRequires: systemd -BuildRequires: libcurl-devel, fontconfig-devel, freetype-devel, openssl-devel, glibc-devel, libicu-devel -# Requirements not packaged in RHEL 7 main repos, added via Makefile -# https://packages.microsoft.com/rhel/7/prod/ -BuildRequires: dotnet-runtime-8.0, dotnet-sdk-8.0 -Requires: %{name}-server = %{version}-%{release}, %{name}-web = %{version}-%{release} - -%description -Jellyfin is a free software media system that puts you in control of managing and streaming your media. - -%package server -# RPMfusion free -Summary: The Free Software Media System Server backend -Requires(pre): shadow-utils -Requires: ffmpeg -Requires: libcurl, fontconfig, freetype, openssl, glibc, libicu - -%description server -The Jellyfin media server backend. - -%package server-lowports -# RPMfusion free -Summary: The Free Software Media System Server backend. Low-port binding. -Requires: jellyfin-server - -%description server-lowports -The Jellyfin media server backend low port binding package. This package -enables binding to ports < 1024. You would install this if you want -the Jellyfin server to bind to ports 80 and/or 443 for example. - -%prep -%autosetup -n jellyfin-server-%{version} -b 0 - - -%build -export DOTNET_CLI_TELEMETRY_OPTOUT=1 -export PATH=$PATH:/usr/local/bin -# cannot use --output due to https://github.com/dotnet/sdk/issues/22220 -dotnet publish --configuration Release --self-contained --runtime linux-x64 \ - -p:DebugSymbols=false -p:DebugType=none Jellyfin.Server - - -%install -# Jellyfin files -%{__mkdir} -p %{buildroot}%{_libdir}/jellyfin %{buildroot}%{_bindir} -%{__cp} -r Jellyfin.Server/bin/Release/net8.0/linux-x64/publish/* %{buildroot}%{_libdir}/jellyfin -%{__install} -D %{SOURCE10} %{buildroot}%{_bindir}/jellyfin -sed -i -e 's|/usr/lib64|%{_libdir}|g' %{buildroot}%{_bindir}/jellyfin - -# Jellyfin config -%{__install} -D Jellyfin.Server/Resources/Configuration/logging.json %{buildroot}%{_sysconfdir}/jellyfin/logging.json -%{__install} -D %{SOURCE12} %{buildroot}%{_sysconfdir}/sysconfig/jellyfin - -# system config -%{__install} -D %{SOURCE14} %{buildroot}%{_prefix}/lib/firewalld/services/jellyfin.xml -%{__install} -D %{SOURCE13} %{buildroot}%{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf -%{__install} -D %{SOURCE11} %{buildroot}%{_unitdir}/jellyfin.service - -# empty directories -%{__mkdir} -p %{buildroot}%{_sharedstatedir}/jellyfin -%{__mkdir} -p %{buildroot}%{_sysconfdir}/jellyfin -%{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin -%{__mkdir} -p %{buildroot}%{_var}/log/jellyfin - -# jellyfin-server-lowports subpackage -%{__install} -D -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf - - -%files -# empty as this is just a meta-package - -%files server -%defattr(644,root,root,755) - -# Jellyfin files -%{_bindir}/jellyfin -# Needs 755 else only root can run it since binary build by dotnet is 722 -%attr(755,root,root) %{_libdir}/jellyfin/createdump -%attr(755,root,root) %{_libdir}/jellyfin/jellyfin -%{_libdir}/jellyfin/* -%attr(755,root,root) %{_bindir}/jellyfin - -# Jellyfin config -%config(noreplace) %attr(644,jellyfin,jellyfin) %{_sysconfdir}/jellyfin/logging.json -%config %{_sysconfdir}/sysconfig/jellyfin - -# system config -%{_prefix}/lib/firewalld/services/jellyfin.xml -%{_unitdir}/jellyfin.service -%config(noreplace) %{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf - -# empty directories -%attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin -%attr(755,jellyfin,jellyfin) %dir %{_sysconfdir}/jellyfin -%attr(750,jellyfin,jellyfin) %dir %{_var}/cache/jellyfin -%attr(-, jellyfin,jellyfin) %dir %{_var}/log/jellyfin - -%license LICENSE - - -%files server-lowports -%{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf - -%pre server -getent group jellyfin >/dev/null || groupadd -r jellyfin -getent passwd jellyfin >/dev/null || \ - useradd -r -g jellyfin -d %{_sharedstatedir}/jellyfin -s /sbin/nologin \ - -c "Jellyfin default user" jellyfin -# Add jellyfin to the render and video groups for hwa. -[ ! -z "$(getent group render)" ] && usermod -aG render jellyfin >/dev/null 2>&1 -[ ! -z "$(getent group video)" ] && usermod -aG video jellyfin >/dev/null 2>&1 -exit 0 - -%post server -# 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 - systemctl stop jellyfin.service - fi - if [ ! -L %{_sharedstatedir}/jellyfin/config ]; then - mv %{_sharedstatedir}/jellyfin/config/* %{_sysconfdir}/jellyfin/ - rmdir %{_sharedstatedir}/jellyfin/config - ln -sf %{_sysconfdir}/jellyfin %{_sharedstatedir}/jellyfin/config - fi - if [ ! -L %{_sharedstatedir}/jellyfin/logs ]; then - mv %{_sharedstatedir}/jellyfin/logs/* %{_var}/log/jellyfin - rmdir %{_sharedstatedir}/jellyfin/logs - ln -sf %{_var}/log/jellyfin %{_sharedstatedir}/jellyfin/logs - fi - if [ ! -L %{_sharedstatedir}/jellyfin/cache ]; then - mv %{_sharedstatedir}/jellyfin/cache/* %{_var}/cache/jellyfin - rmdir %{_sharedstatedir}/jellyfin/cache - ln -sf %{_var}/cache/jellyfin %{_sharedstatedir}/jellyfin/cache - fi - if [ "${service_state}" = "active" ]; then - systemctl start jellyfin.service - fi -fi -%systemd_post jellyfin.service - -%preun server -%systemd_preun jellyfin.service - -%postun server -%systemd_postun_with_restart jellyfin.service - -%changelog -* Wed Jul 13 2022 Jellyfin Packaging Team -- New upstream version 10.9.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.9.0 -* Mon Nov 29 2021 Brian J. Murrell -- Add jellyfin-server-lowports.service drop-in in a server-lowports - subpackage to allow binding to low ports -* Fri Dec 04 2020 Jellyfin Packaging Team -- Forthcoming stable release -* Mon Jul 27 2020 Jellyfin Packaging Team -- Forthcoming stable release -* Mon Mar 23 2020 Jellyfin Packaging Team -- Forthcoming stable release -* Fri Oct 11 2019 Jellyfin Packaging Team -- New upstream version 10.5.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.5.0 -* Sat Aug 31 2019 Jellyfin Packaging Team -- New upstream version 10.4.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.4.0 -* Wed Jul 24 2019 Jellyfin Packaging Team -- New upstream version 10.3.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.7 -* Sat Jul 06 2019 Jellyfin Packaging Team -- New upstream version 10.3.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.6 -* Sun Jun 09 2019 Jellyfin Packaging Team -- New upstream version 10.3.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.5 -* Thu Jun 06 2019 Jellyfin Packaging Team -- New upstream version 10.3.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.4 -* Fri May 17 2019 Jellyfin Packaging Team -- New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3 -* Tue Apr 30 2019 Jellyfin Packaging Team -- New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2 -* Sat Apr 20 2019 Jellyfin Packaging Team -- New upstream version 10.3.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.1 -* Fri Apr 19 2019 Jellyfin Packaging Team -- New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0