mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-12-26 17:36:52 +00:00
Remove legacy build utilities (#11162)
This commit is contained in:
parent
4bcabbde7b
commit
78b53a60b4
87
Dockerfile
87
Dockerfile
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
114
build.sh
114
build.sh
|
@ -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 <BUILD_TYPE> -p/--platform <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
|
|
18
build.yaml
18
build.yaml
|
@ -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
|
|
129
bump_version
129
bump_version
|
@ -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 <new_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/<VersionPrefix>([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 <packaging@jellyfin.org> $( 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 <packaging@jellyfin.org>
|
|
||||||
- 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
|
|
89
debian/changelog
vendored
89
debian/changelog
vendored
|
@ -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 <packaging@jellyfin.org> Wed, 13 Jul 2022 20:58:08 -0600
|
|
||||||
|
|
||||||
jellyfin-server (10.8.0-1) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Forthcoming stable release
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> Fri, 04 Dec 2020 21:55:12 -0500
|
|
||||||
|
|
||||||
jellyfin-server (10.7.0-1) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Forthcoming stable release
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> Mon, 27 Jul 2020 19:09:45 -0400
|
|
||||||
|
|
||||||
jellyfin-server (10.6.0-2) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Fix upgrade bug
|
|
||||||
|
|
||||||
-- Joshua Boniface <joshua@boniface.me> Sun, 19 Jul 22:47:27 -0400
|
|
||||||
|
|
||||||
jellyfin-server (10.6.0-1) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Forthcoming stable release
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> 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 <packaging@jellyfin.org> Fri, 19 Apr 2019 14:24:29 -0400
|
|
1
debian/compat
vendored
1
debian/compat
vendored
|
@ -1 +0,0 @@
|
||||||
8
|
|
53
debian/conf/jellyfin
vendored
53
debian/conf/jellyfin
vendored
|
@ -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"
|
|
55
debian/conf/jellyfin.service.conf
vendored
55
debian/conf/jellyfin.service.conf
vendored
|
@ -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
|
|
30
debian/conf/logging.json
vendored
30
debian/conf/logging.json
vendored
|
@ -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}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
27
debian/control
vendored
27
debian/control
vendored
|
@ -1,27 +0,0 @@
|
||||||
Source: jellyfin-server
|
|
||||||
Section: misc
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Jellyfin Team <team@jellyfin.org>
|
|
||||||
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.
|
|
29
debian/copyright
vendored
29
debian/copyright
vendored
|
@ -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 <joshua@boniface.me>
|
|
||||||
Copyright: 2014 Carlos Hernandez <carlos@techbyte.ca>
|
|
||||||
License: GPL-2.0+
|
|
||||||
|
|
||||||
License: GPL-2.0+
|
|
||||||
This package is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; 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 <http://www.gnu.org/licenses/>
|
|
||||||
.
|
|
||||||
On Debian systems, the complete text of the GNU General
|
|
||||||
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
|
6
debian/gbp.conf
vendored
6
debian/gbp.conf
vendored
|
@ -1,6 +0,0 @@
|
||||||
[DEFAULT]
|
|
||||||
pristine-tar = False
|
|
||||||
cleaner = fakeroot debian/rules clean
|
|
||||||
|
|
||||||
[import-orig]
|
|
||||||
filter = [ ".git*", ".hg*", ".vs*", ".vscode*" ]
|
|
4
debian/install
vendored
4
debian/install
vendored
|
@ -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/
|
|
62
debian/jellyfin.init
vendored
62
debian/jellyfin.init
vendored
|
@ -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
|
|
17
debian/jellyfin.service
vendored
17
debian/jellyfin.service
vendored
|
@ -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
|
|
20
debian/jellyfin.upstart
vendored
20
debian/jellyfin.upstart
vendored
|
@ -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
|
|
13
debian/metapackage/jellyfin
vendored
13
debian/metapackage/jellyfin
vendored
|
@ -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 <packaging@jellyfin.org>
|
|
||||||
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.
|
|
||||||
|
|
1
debian/po/POTFILES.in
vendored
1
debian/po/POTFILES.in
vendored
|
@ -1 +0,0 @@
|
||||||
[type: gettext/rfc822deb] templates
|
|
57
debian/po/templates.pot
vendored
57
debian/po/templates.pot
vendored
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
|
102
debian/postinst
vendored
102
debian/postinst
vendored
|
@ -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
|
|
81
debian/postrm
vendored
81
debian/postrm
vendored
|
@ -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
|
|
78
debian/preinst
vendored
78
debian/preinst
vendored
|
@ -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
|
|
61
debian/prerm
vendored
61
debian/prerm
vendored
|
@ -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
|
|
55
debian/rules
vendored
55
debian/rules
vendored
|
@ -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
|
|
3
debian/source.lintian-overrides
vendored
3
debian/source.lintian-overrides
vendored
|
@ -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
|
|
1
debian/source/format
vendored
1
debian/source/format
vendored
|
@ -1 +0,0 @@
|
||||||
1.0
|
|
11
debian/source/options
vendored
11
debian/source/options
vendored
|
@ -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'
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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"]
|
|
|
@ -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 <<EOF >>jellyfin.spec
|
|
||||||
* $( LANG=C date '+%a %b %d %Y' ) Jellyfin Packaging Team <packaging@jellyfin.org>
|
|
||||||
- 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
|
|
|
@ -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 <<EOF >changelog
|
|
||||||
jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID}
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> $( 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
|
|
|
@ -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 <<EOF >changelog
|
|
||||||
jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID}
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> $( 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
|
|
|
@ -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 <<EOF >changelog
|
|
||||||
jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID}
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> $( 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
|
|
|
@ -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 <<EOF >>jellyfin.spec
|
|
||||||
* $( LANG=C date '+%a %b %d %Y' ) Jellyfin Packaging Team <packaging@jellyfin.org>
|
|
||||||
- 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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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 <<EOF >changelog
|
|
||||||
jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID}
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> $( 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
|
|
|
@ -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 <<EOF >changelog
|
|
||||||
jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID}
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> $( 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
|
|
|
@ -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 <<EOF >changelog
|
|
||||||
jellyfin-server (${BUILD_ID}-unstable) unstable; urgency=medium
|
|
||||||
|
|
||||||
* Jellyfin Server unstable build ${BUILD_ID} for merged PR #${PR_ID}
|
|
||||||
|
|
||||||
-- Jellyfin Packaging Team <packaging@jellyfin.org> $( 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
|
|
|
@ -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
|
|
3
fedora/.gitignore
vendored
3
fedora/.gitignore
vendored
|
@ -1,3 +0,0 @@
|
||||||
*.rpm
|
|
||||||
*.zip
|
|
||||||
*.tar.gz
|
|
|
@ -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) $<
|
|
|
@ -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
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<service>
|
|
||||||
<short>Jellyfin</short>
|
|
||||||
<description>The Free Software Media System.</description>
|
|
||||||
<port protocol="tcp" port="8096"/>
|
|
||||||
<port protocol="tcp" port="8920"/>
|
|
||||||
<port protocol="udp" port="1900"/>
|
|
||||||
<port protocol="udp" port="7359"/>
|
|
||||||
</service>
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
exec /usr/lib64/jellyfin/jellyfin "${@}"
|
|
|
@ -1,4 +0,0 @@
|
||||||
# This allows Jellyfin to bind to low ports such as 80 and/or 443
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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 <packaging@jellyfin.org>
|
|
||||||
- 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 <brian@interlinx.bc.ca>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- Forthcoming stable release
|
|
||||||
* Mon Jul 27 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
|
|
||||||
- Forthcoming stable release
|
|
||||||
* Mon Mar 23 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
|
|
||||||
- Forthcoming stable release
|
|
||||||
* Fri Oct 11 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- 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 <packaging@jellyfin.org>
|
|
||||||
- New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0
|
|
Loading…
Reference in a new issue