aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUruk <uruknarb20@gmail.com>2024-02-23 18:24:32 +0100
committerUruk <uruknarb20@gmail.com>2024-02-23 18:24:32 +0100
commit76a60266d1f05fc78a7607e3dbca68ca8615d8a3 (patch)
tree31bfa2b8bdd2af286c24a9e17c40b5ffad89e081
parentRefactor jellyfin-packaging (diff)
downloadjellyfin-packaging-76a60266d1f05fc78a7607e3dbca68ca8615d8a3.tar.gz
jellyfin-packaging-76a60266d1f05fc78a7607e3dbca68ca8615d8a3.tar.bz2
jellyfin-packaging-76a60266d1f05fc78a7607e3dbca68ca8615d8a3.zip
Apply suggestions
-rw-r--r--README.md12
-rw-r--r--debian/conf/jellyfin.init2
-rw-r--r--debian/docker/Dockerfile22
-rw-r--r--docker/Dockerfile28
-rw-r--r--portable/Dockerfile20
5 files changed, 65 insertions, 19 deletions
diff --git a/README.md b/README.md
index 9afaf65..f72fb76 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,7 @@ Inside this repository are 7 major components:
1. Submodules for the `jellyfin` (as `jellyfin-server`) and `jellyfin-web` repositories. These are dynamic submodules; the `checkout.py` script will check them out to the required `HEAD` on each build, and thus their actual committed value is irrelevant. Nonetheless, they should be bumped occasionally just to avoid excessive checkout times later.
-2. Debian/Ubuntu packaging configurations (under `debian`). These will build the 3 Jellyfin packages (`jellyfin` metapackage, `jellyfin-server` core server, and `jellyfin-web` web client) from a single Dockerfile and helper script (`build.sh`) under `debian/docker/`. Future packages (e.g. Vue) may be added here as well as if and when they are promoted to a production build alongside the others, following one consistent versioning scheme.
+2. Debian/Ubuntu packaging configurations (under `debian`). These will build the 3 Jellyfin packages (`jellyfin` metapackage, `jellyfin-server` core server, and `jellyfin-web` web client) from a single Dockerfile and helper script (`build.sh`) under `debian/docker/`. Future packages (e.g. Vue) may be added here as well if and when they are promoted to a production build alongside the others, following one consistent versioning scheme.
3. Fedora/CentOS packaging configurations (under `fedora`). These will build the same packages as Debian. This is still a TODO.
@@ -82,7 +82,7 @@ Inside this repository are 7 major components:
* Git Submodules to handle code (vs. cross-repo builds)
- This ensures that the code checked out is consistent to both repositories and allows for the unified builds described below without extra steps to combine.
+ This ensures that the code checked out is consistent to both repositories, and allows for the unified builds described below without extra steps to combine.
* Remote manual-only triggers: CI workers are triggered by a remote bot
@@ -90,7 +90,7 @@ Inside this repository are 7 major components:
### Debian/Ubuntu Packages
-* Unified packages build: this entire repo is the "source" and the source package is named "jellyfin".
+* Unified package build: this entire repo is the "source" and the source package is named "jellyfin".
This was chosen to simplify the source package system and simplify building. Now, there is only a single "jellyfin" source package rather than 2. There may be more in the future as other repos might be included (e.g. "jellyfin-ffmpeg", "jellyfin-vue", etc.)
@@ -112,7 +112,7 @@ TODO - these have not yet been implemented.
### Docker
-* Single unified Docker build: the entirety of our Docker images is built as one container from one Dockerfile.
+* Single unified Docker build: the entirety of our Docker images are built as one container from one Dockerfile.
This was chosen to keep our Docker builds as simple as possible without requiring 2 intervening images (as was the case with our previous CI).
@@ -132,11 +132,11 @@ TODO - these have not yet been implemented.
* Single unified build: the entirety of the output package is built in one container from one Dockerfile
- This was chosen to keep the portable builds as simple as possible without requiring complex archives combining (as was the case with our previous CI).
+ This was chosen to keep the portable builds as simple as possible without requiring complex archive combining (as was the case with our previous CI).
* Multiple archive type support (`.tar.gz` vs. `.zip`)
- The output archive type (`.tar.gz` or `.zip`) is chosen based on the build target, with Portable providing both for maximum compatibility, Windows providing `.zip`, Linux and MacOS provide `.tar.gz`. This can be changed later, for example to add more formats (e.g. `.tar.xz`) or change what produces what, without major complications.
+ The output archive type (`.tar.gz` or `.zip`) is chosen based on the build target, with Portable providing both for maximum compatibility, Windows providing `.zip, and Linux and MacOS providing `.tar.gz`. This can be changed later, for example to add more formats (e.g. `.tar.xz`) or change what produces what, without major complications.
* Full architecture support
diff --git a/debian/conf/jellyfin.init b/debian/conf/jellyfin.init
index 72cf2e2..92864a9 100644
--- a/debian/conf/jellyfin.init
+++ b/debian/conf/jellyfin.init
@@ -19,7 +19,7 @@ fi
. /lib/lsb/init-functions
-JELLYFIN_HOME="/var/lib/jellyfin/"
+JELLYFIN_HOME="/etc/default/jellyfin"
PIDFILE="/run/jellyfin.pid"
case "$1" in
diff --git a/debian/docker/Dockerfile b/debian/docker/Dockerfile
index 8766278..c93344d 100644
--- a/debian/docker/Dockerfile
+++ b/debian/docker/Dockerfile
@@ -31,9 +31,22 @@ ENV ARCH=${PACKAGE_ARCH}
RUN apt-get update -y \
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
apt-get install --no-install-recommends -y \
- wget debhelper gnupg devscripts build-essential mmv lsb-release \
- libssl*.* liblttng-ust* libfontconfig*-dev libcurl*openssl-dev \
- libfreetype*-dev libssl-dev
+ wget \
+ debhelper \
+ gnupg \
+ devscripts \
+ build-essential \
+ mmv \
+ lsb-release \
+ libssl*.* \
+ liblttng-ust* \
+ libfontconfig*-dev \
+ libcurl*openssl-dev \
+ libfreetype*-dev \
+ libssl-dev \
+ && apt-get clean autoclean -y \
+ && apt-get autoremove -y \
+ && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
# Prepare the cross-toolchain
RUN if test "${PACKAGE_ARCH}" != "$( dpkg --print-architecture )"; then \
@@ -64,6 +77,9 @@ RUN if test "${PACKAGE_ARCH}" != "$( dpkg --print-architecture )"; then \
libc6-dev:${PACKAGE_ARCH} linux-libc-dev:${PACKAGE_ARCH} libgcc1:${PACKAGE_ARCH} libstdc++-${GCC_VERSION}-dev:${PACKAGE_ARCH} \
libfontconfig*-dev:${PACKAGE_ARCH} libcurl*openssl-dev:${PACKAGE_ARCH} libfreetype*-dev:${PACKAGE_ARCH} libssl-dev:${PACKAGE_ARCH} \
libssl[13].*:${PACKAGE_ARCH} liblttng-ust*:${PACKAGE_ARCH} \
+ && apt-get clean autoclean -y \
+ && apt-get autoremove -y \
+ && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
; fi
# Prepare dotnet SDK
diff --git a/docker/Dockerfile b/docker/Dockerfile
index fa0054a..771ad18 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -38,9 +38,18 @@ ARG JELLYFIN_VERSION
ENV JELLYFIN_VERSION=${JELLYFIN_VERSION}
RUN apk add \
- autoconf g++ make libpng-dev \
- gifsicle alpine-sdk automake \
- libtool gcc musl-dev nasm python3
+ autoconf \
+ g++ \
+ make \
+ libpng-dev \
+ gifsicle \
+ alpine-sdk\
+ automake \
+ libtool \
+ gcc \
+ musl-dev \
+ nasm \
+ python3
WORKDIR ${SOURCE_DIR}
COPY jellyfin-web .
@@ -114,15 +123,22 @@ ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
# Install dependencies:
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests --yes \
- ca-certificates gnupg curl \
+ ca-certificates \
+ gnupg \
+ curl \
+ apt-transport-https \
&& curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key \
| gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \
&& echo "deb [arch=${PACKAGE_ARCH}] https://repo.jellyfin.org/debian ${OS_VERSION} main" > /etc/apt/sources.list.d/jellyfin.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests --yes \
- ${FFMPEG_PACKAGE} openssl locales libfontconfig1 libfreetype6 \
+ ${FFMPEG_PACKAGE} \
+ openssl \
+ locales \
+ libfontconfig1 \
+ libfreetype6 \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen \
- && apt-get remove gnupg --yes \
+ && apt-get remove gnupg apt-transport-https --yes \
&& apt-get clean autoclean --yes \
&& apt-get autoremove --yes \
&& rm -rf /var/cache/apt/archives* /var/lib/apt/lists/*
diff --git a/portable/Dockerfile b/portable/Dockerfile
index 73856f1..a2fd069 100644
--- a/portable/Dockerfile
+++ b/portable/Dockerfile
@@ -25,9 +25,23 @@ ENV ARCHIVE_TYPES=targz
RUN apt-get update -y \
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
apt-get install --no-install-recommends -y \
- wget debhelper gnupg devscripts build-essential mmv lsb-release zip \
- libssl*.* liblttng-ust* libssl-dev \
- libfontconfig*-dev libcurl*openssl-dev libfreetype*-dev
+ wget \
+ debhelper \
+ gnupg \
+ devscripts \
+ build-essential \
+ mmv \
+ lsb-release\
+ zip \
+ libssl*.* \
+ liblttng-ust*\
+ libssl-dev \
+ libfontconfig*-dev \
+ libcurl*openssl-dev \
+ libfreetype*-dev \
+ && apt-get clean autoclean -y \
+ && apt-get autoremove -y \
+ && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
# Prepare dotnet SDK
RUN wget https://packages.microsoft.com/config/${PACKAGE_TYPE}/${PACKAGE_VERSION}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
bgstack15