From be89d53a9e16e16f434c35e22814f1d9fe3fc16d Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sun, 3 Feb 2019 20:15:23 -0500 Subject: Handle new option parser properly --- deployment/debian-package-x64/pkg-src/conf/jellyfin | 16 ++++++++++------ .../debian-package-x64/pkg-src/jellyfin.service | 2 +- deployment/fedora-package-x64/pkg-src/jellyfin.env | 19 +++++++++++++------ .../fedora-package-x64/pkg-src/jellyfin.service | 2 +- 4 files changed, 25 insertions(+), 14 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin b/deployment/debian-package-x64/pkg-src/conf/jellyfin index c237e2d69..b052b2ec6 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin @@ -19,13 +19,17 @@ JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" JELLYFIN_CACHE_DIRECTORY="/var/cache/jellyfin" # Restart script for in-app server control -JELLYFIN_RESTART_OPT="--restartpath /usr/lib/jellyfin/restart.sh" +JELLYFIN_RESTART_OPT="--restartpath=/usr/lib/jellyfin/restart.sh" -# [OPTIONAL] ffmpeg binary paths -#JELLYFIN_FFMPEG_OPTS="--ffmpeg /usr/bin/ffmpeg --ffprobe /usr/bin/ffprobe" +# [OPTIONAL] ffmpeg binary paths, overriding the UI-configured values +#JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/bin/ffmpeg" +#JELLYFIN_FFPROBE_OPT="--ffprobe=/usr/bin/ffprobe" -# [OPTIONAL] Additional user-defined options for the binary -#JELLYFIN_ADD_OPTS="" +# [OPTIONAL] run Jellyfin as a headless service +#JELLYFIN_SERVICE_OPT="--service" + +# [OPTIONAL] run Jellyfin without the web app +#JELLYFIN_NOWEBAPP_OPT="--noautorunwebapp" # # SysV init/Upstart options @@ -34,4 +38,4 @@ JELLYFIN_RESTART_OPT="--restartpath /usr/lib/jellyfin/restart.sh" # Application username JELLYFIN_USER="jellyfin" # Full application command -JELLYFIN_ARGS="--datadir $JELLYFIN_DATA_DIRECTORY --configdir $JELLYFIN_CONFIG_DIRECTORY --logdir $JELLYFIN_LOG_DIRECTORY --cachedir $JELLYFIN_CACHE_DIRECTORY $JELLYFIN_RESTART_OPT $JELLYFIN_FFMPEG_OPTS $JELLYFIN_ADD_OPTS" +JELLYFIN_ARGS="--datadir=$JELLYFIN_DATA_DIRECTORY --configdir=$JELLYFIN_CONFIG_DIRECTORY --logdir=$JELLYFIN_LOG_DIRECTORY --cachedir=$JELLYFIN_CACHE_DIRECTORY $JELLYFIN_RESTART_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_FFPROBE_OPT $JELLYFIN_SERVICE_OPT $JELLFIN_NOWEBAPP_OPT" diff --git a/deployment/debian-package-x64/pkg-src/jellyfin.service b/deployment/debian-package-x64/pkg-src/jellyfin.service index ee89d7d4b..9c6c6667f 100644 --- a/deployment/debian-package-x64/pkg-src/jellyfin.service +++ b/deployment/debian-package-x64/pkg-src/jellyfin.service @@ -6,7 +6,7 @@ After = network.target Type = simple EnvironmentFile = /etc/default/jellyfin User = jellyfin -ExecStart = /usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPTS} ${JELLYFIN_ADD_OPTS} +ExecStart = /usr/bin/jellyfin --datadir=${JELLYFIN_DATA_DIRECTORY} --configdir=${JELLYFIN_CONFIG_DIRECTORY} --logdir=${JELLYFIN_LOG_DIRECTORY} --cachedir=${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPT} ${JELLYFIN_FFPROBE_OPT} ${JELLYFIN_SERVICE_OPT} ${JELLYFIN_NOWEBAPP_OPT} Restart = on-failure TimeoutSec = 15 diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.env b/deployment/fedora-package-x64/pkg-src/jellyfin.env index f7f041f75..11d5b0ab0 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.env +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.env @@ -14,15 +14,22 @@ # General options # -# Tell jellyfin wich ffmpeg/ffprobe to use -# JELLYFIN_FFMPEG="--ffmpeg /usr/bin/ffmpeg --ffprobe /usr/bin/ffprobe" - # Program directories JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" JELLYFIN_CONFIG_DIRECTORY="/etc/jellyfin" JELLYFIN_LOG_DIRECTORY="/var/log/jellyfin" JELLYFIN_CACHE_DIRECTORY="/var/log/jellyfin" + # In-App service control -JELLYFIN_RESTART_OPT="--restartpath /usr/libexec/jellyfin/restart.sh" -# Additional options for the binary -JELLYFIN_ADD_OPTS="" +JELLYFIN_RESTART_OPT="--restartpath=/usr/libexec/jellyfin/restart.sh" + +# [OPTIONAL] ffmpeg binary paths, overriding the UI-configured values +#JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/bin/ffmpeg" +#JELLYFIN_FFPROBE_OPT="--ffprobe=/usr/bin/ffprobe" + +# [OPTIONAL] run Jellyfin as a headless service +#JELLYFIN_SERVICE_OPT="--service" + +# [OPTIONAL] run Jellyfin without the web app +#JELLYFIN_NOWEBAPP_OPT="--noautorunwebapp" + diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.service b/deployment/fedora-package-x64/pkg-src/jellyfin.service index 56703a98a..d58df9d94 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.service +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.service @@ -5,7 +5,7 @@ Description=Jellyfin is a free software media system that puts you in control of [Service] EnvironmentFile=/etc/sysconfig/jellyfin WorkingDirectory=/var/lib/jellyfin -ExecStart=/usr/bin/jellyfin --datadir ${JELLYFIN_DATA_DIRECTORY} --configdir ${JELLYFIN_CONFIG_DIRECTORY} --logdir ${JELLYFIN_LOG_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_ADD_OPTS} ${JELLYFIN_FFMPEG} +ExecStart=/usr/bin/jellyfin --datadir=${JELLYFIN_DATA_DIRECTORY} --configdir=${JELLYFIN_CONFIG_DIRECTORY} --logdir=${JELLYFIN_LOG_DIRECTORY} --cachedir=${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPT} ${JELLYFIN_FFPROBE_OPT} ${JELLYFIN_SERVICE_OPT} ${JELLYFIN_NOWEBAPP_OPT} TimeoutSec=15 Restart=on-failure User=jellyfin -- cgit v1.2.3 From d351fa0c1e06862fd0cc7c68c0944ee0b8835809 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sun, 3 Feb 2019 22:57:39 -0500 Subject: Make Fedora package.sh script use bash --- deployment/fedora-package-x64/package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/package.sh b/deployment/fedora-package-x64/package.sh index d459cdb24..1d1329b03 100755 --- a/deployment/fedora-package-x64/package.sh +++ b/deployment/fedora-package-x64/package.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash source ../common.build.sh -- cgit v1.2.3 From f0e74c2c6b3fa8c94f0da222cde20a6b173db0b0 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Mon, 4 Feb 2019 00:26:23 -0500 Subject: Fix restart script for Debian --- .../debian-package-x64/pkg-src/bin/restart.sh | 10 +++++---- .../pkg-src/conf/jellyfin-sudoers | 24 +++++++++++----------- 2 files changed, 18 insertions(+), 16 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/pkg-src/bin/restart.sh b/deployment/debian-package-x64/pkg-src/bin/restart.sh index a6f4632ba..738f86727 100644 --- a/deployment/debian-package-x64/pkg-src/bin/restart.sh +++ b/deployment/debian-package-x64/pkg-src/bin/restart.sh @@ -2,10 +2,12 @@ NAME=jellyfin -restart_cmds=("s6-svc -t /var/run/s6/services/${NAME}" \ - "systemctl restart ${NAME}" \ - "service ${NAME} restart" \ - "/etc/init.d/${NAME} restart") +restart_cmds=( + "systemctl restart ${NAME}" + "service ${NAME} restart" + "/etc/init.d/${NAME} restart" + "s6-svc -t /var/run/s6/services/${NAME}" +) for restart_cmd in "${restart_cmds[@]}"; do cmd=$(echo "$restart_cmd" | awk '{print $1}') diff --git a/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers b/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers index 4eb91366b..b481ba4ad 100644 --- a/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers +++ b/deployment/debian-package-x64/pkg-src/conf/jellyfin-sudoers @@ -10,15 +10,15 @@ Cmnd_Alias STARTSERVER_INITD = /etc/init.d/jellyfin start Cmnd_Alias STOPSERVER_INITD = /etc/init.d/jellyfin stop -%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSV -%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSV -%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSV -%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD -%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD -%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD -%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_INITD -%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_INITD -%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_INITD +jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSV +jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSV +jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSV +jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_INITD +jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_INITD +jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_INITD Defaults!RESTARTSERVER_SYSV !requiretty Defaults!STARTSERVER_SYSV !requiretty @@ -31,7 +31,7 @@ Defaults!STARTSERVER_INITD !requiretty Defaults!STOPSERVER_INITD !requiretty #Allow the server to mount iso images -%jellyfin ALL=(ALL) NOPASSWD: /bin/mount -%jellyfin ALL=(ALL) NOPASSWD: /bin/umount +jellyfin ALL=(ALL) NOPASSWD: /bin/mount +jellyfin ALL=(ALL) NOPASSWD: /bin/umount -Defaults:%jellyfin !requiretty +Defaults:jellyfin !requiretty -- cgit v1.2.3 From 72beadc74d524a5878feddb1769faab9296d38f7 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Mon, 4 Feb 2019 00:27:00 -0500 Subject: Fix restart script for Fedora/CentOS --- deployment/fedora-package-x64/pkg-src/jellyfin.sudoers | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers index b31d52f7e..ddd890ce1 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers @@ -4,16 +4,16 @@ Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemctl start jellyfin, /bin/systemc Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemctl stop jellyfin, /bin/systemctl stop jellyfin -%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD -%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD -%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD +jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD Defaults!RESTARTSERVER_SYSTEMD !requiretty Defaults!STARTSERVER_SYSTEMD !requiretty Defaults!STOPSERVER_SYSTEMD !requiretty # Uncomment to allow the server to mount iso images -# %jellyfin ALL=(ALL) NOPASSWD: /bin/mount -# %jellyfin ALL=(ALL) NOPASSWD: /bin/umount +# jellyfin ALL=(ALL) NOPASSWD: /bin/mount +# jellyfin ALL=(ALL) NOPASSWD: /bin/umount -Defaults:%jellyfin !requiretty +Defaults:jellyfin !requiretty -- cgit v1.2.3 From 546f4cd46f21561d9f39ee695fdfa6809e0d9c29 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 18:40:31 -0500 Subject: Add prerequisite keep_artifacts var --- build | 23 +++++++++++++++++------ deployment/README.md | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) (limited to 'deployment') diff --git a/build b/build index 7d49db72a..7413b60e3 100755 --- a/build +++ b/build @@ -23,7 +23,7 @@ usage() { echo -e "Usage:" echo -e " $ build --list-platforms" echo -e " $ build --list-actions " - echo -e " $ build [-b/--web-branch ] " + echo -e " $ build [-k/--keep-artifacts] [-b/--web-branch ] " echo -e "" echo -e "The web_branch defaults to the same branch name as the current main branch." echo -e "To build all platforms, use 'all'." @@ -67,6 +67,14 @@ if [[ $1 == '--list-actions' ]]; then exit 0 fi +# Parse keep-artifacts option +if [[ $1 == '-k' || $1 == '--keep-artifacts' ]]; then + keep_artifacts="y" + shift 1 +else + keep_artifacts="n" +fi + # Parse branch option if [[ $1 == '-b' || $1 == '--web-branch' ]]; then web_branch="$2" @@ -193,6 +201,13 @@ for target_platform in ${platform[@]}; do echo -e "> Processing platform ${target_platform}" date_start=$( date +%s ) pushd ${target_platform} + cleanup() { + echo -e ">> Processing action clean" + if [[ -f clean.sh && -x clean.sh ]]; then + ./clean.sh ${keep_artifacts} + fi + } + trap cleanup EXIT INT for target_action in ${action[@]}; do echo -e ">> Processing action ${target_action}" if [[ -f ${target_action}.sh && -x ${target_action}.sh ]]; then @@ -204,12 +219,8 @@ for target_platform in ${platform[@]}; do target_dir="../../../jellyfin-build/${target_platform}" mkdir -p ${target_dir} mv pkg-dist/* ${target_dir}/ - - echo -e ">> Processing action clean" - if [[ -f clean.sh && -x clean.sh ]]; then - ./clean.sh - fi fi + cleanup date_end=$( date +%s ) echo -e "> Completed platform ${target_platform} in $( expr ${date_end} - ${date_start} ) seconds." popd diff --git a/deployment/README.md b/deployment/README.md index 05b4ed51e..608d80e58 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -55,6 +55,8 @@ These builds are not necessarily run from the `build` script, but are present fo * The `clean` action should always `exit 0` even if no work is done or it fails. +* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories. + ### Output Files * Upon completion of the defined actions, at least one output file must be created in the `/pkg-dist` directory. -- cgit v1.2.3 From c846da4f9e7833252f209b2698c3b6359b20069d Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 18:40:50 -0500 Subject: Update Debian package build --- deployment/debian-package-x64/Dockerfile | 39 +++++++++++++------ deployment/debian-package-x64/clean.sh | 27 ++++++++++++- deployment/debian-package-x64/docker-build.sh | 16 ++++++++ deployment/debian-package-x64/package.sh | 55 ++++++++++++++------------- 4 files changed, 97 insertions(+), 40 deletions(-) create mode 100755 deployment/debian-package-x64/docker-build.sh (limited to 'deployment') diff --git a/deployment/debian-package-x64/Dockerfile b/deployment/debian-package-x64/Dockerfile index 2afe6c1d3..787f1d182 100644 --- a/deployment/debian-package-x64/Dockerfile +++ b/deployment/debian-package-x64/Dockerfile @@ -1,23 +1,40 @@ FROM debian:9 -ARG SOURCEDIR=/repo +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist ENV DEB_BUILD_OPTIONS=noddebs -# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current +# Prepare Debian build environment RUN apt-get update \ - && apt-get install -y apt-transport-https debhelper gnupg wget devscripts \ - && wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg \ + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev + +# Install dotnet repository +# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current +RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg \ && mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ \ && wget -q https://packages.microsoft.com/config/debian/9/prod.list \ && mv prod.list /etc/apt/sources.list.d/microsoft-prod.list \ && chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg \ && chown root:root /etc/apt/sources.list.d/microsoft-prod.list \ - && apt-get update + && apt-get update \ + && apt-get install -y dotnet-sdk-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to Debian source dir; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian -WORKDIR ${SOURCEDIR} -COPY . . -COPY ./deployment/debian-package-x64/pkg-src ./debian +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ -RUN yes | mk-build-deps -i debian/control \ - && dpkg-buildpackage -us -uc +# Copy repository +COPY . ${SOURCE_DIR}/ -WORKDIR / +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/debian-package-x64/clean.sh b/deployment/debian-package-x64/clean.sh index 3df2d7796..101ba1fb6 100755 --- a/deployment/debian-package-x64/clean.sh +++ b/deployment/debian-package-x64/clean.sh @@ -2,6 +2,29 @@ source ../common.build.sh -VERSION=`get_version ../..` +keep_artifacts="${1}" -clean_jellyfin ../.. Release `pwd`/dist/jellyfin_${VERSION} +WORKDIR="$( pwd )" +VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-debian-build" + +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/debian-package-x64/docker-build.sh b/deployment/debian-package-x64/docker-build.sh new file mode 100755 index 000000000..83654b8ce --- /dev/null +++ b/deployment/debian-package-x64/docker-build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Builds the DEB inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +# Build DEB +dpkg-buildpackage -us -uc + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/deb +mv /jellyfin_* ${ARTIFACT_DIR}/deb/ diff --git a/deployment/debian-package-x64/package.sh b/deployment/debian-package-x64/package.sh index dec953961..11da66aaa 100755 --- a/deployment/debian-package-x64/package.sh +++ b/deployment/debian-package-x64/package.sh @@ -2,30 +2,31 @@ source ../common.build.sh -VERSION=`get_version ../..` - -# TODO get the version in the package automatically. And using the changelog to decide the debian package suffix version. - -# Build a Jellyfin .deb file with Docker on Linux -# Places the output .deb file in the parent directory - -package_temporary_dir="`pwd`/pkg-dist-tmp" -output_dir="`pwd`/pkg-dist" -current_user="`whoami`" -image_name="jellyfin-debuild" - -cleanup() { - set +o errexit - docker image rm $image_name --force - rm -rf "$package_temporary_dir" -} -trap cleanup EXIT INT - -docker build ../.. -t "$image_name" -f ./Dockerfile --build-arg SOURCEDIR="/jellyfin-${VERSION}" -mkdir -p "$package_temporary_dir" -mkdir -p "$output_dir" -docker run --rm -v "$package_temporary_dir:/temp" "$image_name" sh -c 'find / -maxdepth 1 -type f -name "jellyfin*" -exec mv {} /temp \;' -chown -R "$current_user" "$package_temporary_dir" \ -|| sudo chown -R "$current_user" "$package_temporary_dir" - -mv "$package_temporary_dir"/* "$output_dir" +WORKDIR="$( pwd )" +VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-debian-build" + +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" +fi + +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the DEBs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the DEBs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null +# Move the DEBs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/deb/* "${output_dir}" -- cgit v1.2.3 From 88038d96448d57601e619572ed77d8c2f0fa4db9 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 18:41:02 -0500 Subject: Update Fedora package build --- deployment/fedora-package-x64/Dockerfile | 49 +++++++++++++----- deployment/fedora-package-x64/clean.sh | 42 ++++++++++----- deployment/fedora-package-x64/docker-build.sh | 20 ++++++++ deployment/fedora-package-x64/package.sh | 74 ++++++++++++--------------- 4 files changed, 118 insertions(+), 67 deletions(-) create mode 100755 deployment/fedora-package-x64/docker-build.sh (limited to 'deployment') diff --git a/deployment/fedora-package-x64/Dockerfile b/deployment/fedora-package-x64/Dockerfile index e5deac29f..7decba2e9 100644 --- a/deployment/fedora-package-x64/Dockerfile +++ b/deployment/fedora-package-x64/Dockerfile @@ -1,15 +1,36 @@ FROM fedora:29 -ARG HOME=/build -RUN mkdir /build && \ - dnf install -y @buildsys-build rpmdevtools dnf-plugins-core && \ - dnf copr enable -y @dotnet-sig/dotnet && \ - rpmdev-setuptree - -WORKDIR /build/rpmbuild -COPY ./deployment/fedora-package-x64/pkg-src/jellyfin.spec SPECS -COPY ./deployment/fedora-package-x64/pkg-src/ SOURCES - -RUN spectool -g -R SPECS/jellyfin.spec && \ - rpmbuild -bs SPECS/jellyfin.spec && \ - dnf build-dep -y SRPMS/jellyfin-*.src.rpm && \ - rpmbuild -bb SPECS/jellyfin.spec; \ No newline at end of file +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/fedora-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist + +# Prepare Fedora build environment +RUN dnf update -y \ + && dnf install -y @buildsys-build rpmdevtools dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ + && dnf copr enable -y @dotnet-sig/dotnet \ + && rpmdev-setuptree \ + && dnf install -y dotnet-sdk-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to RPM spec; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec + +# Link to RPM sources; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES + +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ + +# Copy repository +COPY . ${SOURCE_DIR}/ + +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/fedora-package-x64/clean.sh b/deployment/fedora-package-x64/clean.sh index d7233208f..fbd4d276d 100755 --- a/deployment/fedora-package-x64/clean.sh +++ b/deployment/fedora-package-x64/clean.sh @@ -2,17 +2,33 @@ source ../common.build.sh -VERSION=`get_version ../..` - -package_temporary_dir="`pwd`/pkg-dist-tmp" -pkg_src_dir="`pwd`/pkg-src" -image_name="jellyfin-rpmbuild" -docker_sudo="" -if ! $(id -Gn | grep -q 'docker') && [ ! ${EUID:-1000} -eq 0 ] && \ - [ ! $USER == "root" ] && ! $(echo "$OSTYPE" | grep -q "darwin"); then - docker_sudo=sudo -fi +keep_artifacts="${1}" + +WORKDIR="$( pwd )" +VERSION="$( grep -A1 '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +package_source_dir="${WORKDIR}/pkg-src" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-rpm-build" + +rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \ + || sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null -$docker_sudo docker image rm $image_name --force -rm -rf "$package_temporary_dir" -rm -rf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/fedora-package-x64/docker-build.sh b/deployment/fedora-package-x64/docker-build.sh new file mode 100755 index 000000000..3acf1ec0d --- /dev/null +++ b/deployment/fedora-package-x64/docker-build.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Builds the RPM inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +ls -al SOURCES/pkg-src/ + +# Build RPM +spectool -g -R SPECS/jellyfin.spec +rpmbuild -bs SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" +rpmbuild -bb SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/rpm +mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/ diff --git a/deployment/fedora-package-x64/package.sh b/deployment/fedora-package-x64/package.sh index 1d1329b03..088a41a35 100755 --- a/deployment/fedora-package-x64/package.sh +++ b/deployment/fedora-package-x64/package.sh @@ -2,37 +2,28 @@ source ../common.build.sh -VERSION=`get_version ../..` +WORKDIR="$( pwd )" +VERSION="$( grep '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" -# TODO get the version in the package automatically. And using the changelog to decide the debian package suffix version. +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +pkg_src_dir="${WORKDIR}/pkg-src" +current_user="$( whoami )" +image_name="jellyfin-rpm-build" -# Build a Jellyfin .rpm file with Docker on Linux -# Places the output .rpm file in the parent directory - -set -o errexit -set -o xtrace -set -o nounset - -package_temporary_dir="`pwd`/pkg-dist-tmp" -output_dir="`pwd`/pkg-dist" -pkg_src_dir="`pwd`/pkg-src" -current_user="`whoami`" -image_name="jellyfin-rpmbuild" -docker_sudo="" -if ! $(id -Gn | grep -q 'docker') && [ ! ${EUID:-1000} -eq 0 ] && \ - [ ! $USER == "root" ] && ! $(echo "$OSTYPE" | grep -q "darwin"); then - docker_sudo=sudo +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" fi -cleanup() { - set +o errexit - $docker_sudo docker image rm $image_name --force - rm -rf "$package_temporary_dir" - rm -rf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" -} -trap cleanup EXIT INT +# Create RPM source archive GNU_TAR=1 -mkdir -p "$package_temporary_dir" +mkdir -p "${package_temporary_dir}" echo "Bundling all sources for RPM build." tar \ --transform "s,^\.,jellyfin-${VERSION}," \ @@ -47,12 +38,12 @@ tar \ --exclude='**/.nuget' \ --exclude='*.deb' \ --exclude='*.rpm' \ --zcf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" \ +-czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" \ -C "../.." ./ || GNU_TAR=0 if [ $GNU_TAR -eq 0 ]; then echo "The installed tar binary did not support --transform. Using workaround." - mkdir -p "$package_temporary_dir/jellyfin-${VERSION}" + mkdir -p "${package_temporary_dir}/jellyfin" # Not GNU tar tar \ --exclude='.git*' \ @@ -67,20 +58,23 @@ if [ $GNU_TAR -eq 0 ]; then --exclude='*.deb' \ --exclude='*.rpm' \ -zcf \ - "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" \ - -C "../.." \ - ./ + "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" \ + -C "../.." ./ echo "Extracting filtered package." - tar -xzf "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" -C "$package_temporary_dir/jellyfin-${VERSION}" + tar -xzf "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}/jellyfin-${VERSION}" echo "Removing filtered package." - rm "$package_temporary_dir/jellyfin-${VERSION}/jellyfin.tar.gz" + rm -f "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" echo "Repackaging package into final tarball." - tar -zcf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" -C "$package_temporary_dir" "jellyfin-${VERSION}" + tar -czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}" "jellyfin-${VERSION}" fi -$docker_sudo docker build ../.. -t "$image_name" -f ./Dockerfile -mkdir -p "$output_dir" -$docker_sudo docker run --rm -v "$package_temporary_dir:/temp" "$image_name" sh -c 'find /build/rpmbuild -maxdepth 3 -type f -name "jellyfin*.rpm" -exec mv {} /temp \;' -chown -R "$current_user" "$package_temporary_dir" \ -|| sudo chown -R "$current_user" "$package_temporary_dir" -mv "$package_temporary_dir"/*.rpm "$output_dir" +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the RPMs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the RPMs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" +# Move the RPMs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/rpm/* "${output_dir}" -- cgit v1.2.3 From 8413c56392eb331bc319cddf135b671ec0a80123 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 19:04:20 -0500 Subject: Update CentOS package build --- deployment/centos-package-x64/Dockerfile | 49 ++++++++++++++++++-------- deployment/centos-package-x64/dependencies.txt | 1 + deployment/centos-package-x64/docker-build.sh | 1 + 3 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 deployment/centos-package-x64/dependencies.txt create mode 120000 deployment/centos-package-x64/docker-build.sh (limited to 'deployment') diff --git a/deployment/centos-package-x64/Dockerfile b/deployment/centos-package-x64/Dockerfile index bbe5ffd27..89799bca2 100644 --- a/deployment/centos-package-x64/Dockerfile +++ b/deployment/centos-package-x64/Dockerfile @@ -1,15 +1,36 @@ FROM centos:7 -ARG HOME=/build -RUN mkdir /build && \ - yum install -y @buildsys-build rpmdevtools yum-plugins-core && \ - rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm && \ - rpmdev-setuptree - -WORKDIR /build/rpmbuild -COPY ./deployment/centos-package-x64/pkg-src/jellyfin.spec SPECS -COPY ./deployment/centos-package-x64/pkg-src/ SOURCES - -RUN spectool -g -R SPECS/jellyfin.spec && \ - rpmbuild -bs SPECS/jellyfin.spec && \ - yum-builddep -y SRPMS/jellyfin-*.src.rpm && \ - rpmbuild -bb SPECS/jellyfin.spec; \ No newline at end of file +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/centos-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist + +# Prepare CentOS build environment +RUN yum update -y \ + && yum install -y @buildsys-build rpmdevtools yum-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ + && rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm \ + && rpmdev-setuptree \ + && yum install -y dotnet-sdk-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to RPM spec; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec + +# Link to RPM sources; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES + +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ + +# Copy repository +COPY . ${SOURCE_DIR}/ + +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/centos-package-x64/dependencies.txt b/deployment/centos-package-x64/dependencies.txt new file mode 100644 index 000000000..bdb967096 --- /dev/null +++ b/deployment/centos-package-x64/dependencies.txt @@ -0,0 +1 @@ +docker diff --git a/deployment/centos-package-x64/docker-build.sh b/deployment/centos-package-x64/docker-build.sh new file mode 120000 index 000000000..7adc32954 --- /dev/null +++ b/deployment/centos-package-x64/docker-build.sh @@ -0,0 +1 @@ +../fedora-package-x64/docker-build.sh \ No newline at end of file -- cgit v1.2.3 From e1d523ee458d19ad412795b71d9dfb1c4fc7b688 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Tue, 5 Feb 2019 21:37:56 -0500 Subject: Improve description of keep_artifacts flag --- deployment/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'deployment') diff --git a/deployment/README.md b/deployment/README.md index 608d80e58..a00cd3e6c 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -55,7 +55,7 @@ These builds are not necessarily run from the `build` script, but are present fo * The `clean` action should always `exit 0` even if no work is done or it fails. -* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories. +* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`, containing either the value `y` or `n`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories. ### Output Files -- cgit v1.2.3 From b8b650540d604dce7f9066cae6765488f4138198 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Wed, 6 Feb 2019 09:33:14 -0500 Subject: Allow Fedora/CentOS mounting by default --- deployment/fedora-package-x64/pkg-src/jellyfin.sudoers | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers index ddd890ce1..dd245af4b 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.sudoers @@ -12,8 +12,8 @@ Defaults!RESTARTSERVER_SYSTEMD !requiretty Defaults!STARTSERVER_SYSTEMD !requiretty Defaults!STOPSERVER_SYSTEMD !requiretty -# Uncomment to allow the server to mount iso images -# jellyfin ALL=(ALL) NOPASSWD: /bin/mount -# jellyfin ALL=(ALL) NOPASSWD: /bin/umount +# Allow the server to mount iso images +jellyfin ALL=(ALL) NOPASSWD: /bin/mount +jellyfin ALL=(ALL) NOPASSWD: /bin/umount Defaults:jellyfin !requiretty -- cgit v1.2.3 From da860e6e54bb938741d264c58569f809129b3792 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 20:35:50 -0500 Subject: Remove superfluous VERSION variables --- deployment/debian-package-x64/clean.sh | 1 - deployment/debian-package-x64/package.sh | 1 - 2 files changed, 2 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/clean.sh b/deployment/debian-package-x64/clean.sh index 101ba1fb6..b2960fcb3 100755 --- a/deployment/debian-package-x64/clean.sh +++ b/deployment/debian-package-x64/clean.sh @@ -5,7 +5,6 @@ source ../common.build.sh keep_artifacts="${1}" WORKDIR="$( pwd )" -VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" package_temporary_dir="${WORKDIR}/pkg-dist-tmp" output_dir="${WORKDIR}/pkg-dist" diff --git a/deployment/debian-package-x64/package.sh b/deployment/debian-package-x64/package.sh index 11da66aaa..d7c3f5809 100755 --- a/deployment/debian-package-x64/package.sh +++ b/deployment/debian-package-x64/package.sh @@ -3,7 +3,6 @@ source ../common.build.sh WORKDIR="$( pwd )" -VERSION="$( grep '^jellyfin' ${WORKDIR}/pkg-src/changelog | head -1 | awk -F '[()]' '{ print $2 }' )" package_temporary_dir="${WORKDIR}/pkg-dist-tmp" output_dir="${WORKDIR}/pkg-dist" -- cgit v1.2.3 From 139e3c19ee1216ea68d9c1d79c2cb890faeb7f53 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 20:42:30 -0500 Subject: Replace symlinks with copies and update image name --- deployment/centos-package-x64/clean.sh | 35 +++++++++++- deployment/centos-package-x64/docker-build.sh | 21 ++++++- deployment/centos-package-x64/package.sh | 81 ++++++++++++++++++++++++++- 3 files changed, 134 insertions(+), 3 deletions(-) mode change 120000 => 100755 deployment/centos-package-x64/clean.sh mode change 120000 => 100755 deployment/centos-package-x64/docker-build.sh mode change 120000 => 100755 deployment/centos-package-x64/package.sh (limited to 'deployment') diff --git a/deployment/centos-package-x64/clean.sh b/deployment/centos-package-x64/clean.sh deleted file mode 120000 index d6d2d1c09..000000000 --- a/deployment/centos-package-x64/clean.sh +++ /dev/null @@ -1 +0,0 @@ -../fedora-package-x64/clean.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/clean.sh b/deployment/centos-package-x64/clean.sh new file mode 100755 index 000000000..7278372e1 --- /dev/null +++ b/deployment/centos-package-x64/clean.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +keep_artifacts="${1}" + +WORKDIR="$( pwd )" +VERSION="$( grep -A1 '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +package_source_dir="${WORKDIR}/pkg-src" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-centos-build" + +rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \ + || sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null + +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/centos-package-x64/docker-build.sh b/deployment/centos-package-x64/docker-build.sh deleted file mode 120000 index 7adc32954..000000000 --- a/deployment/centos-package-x64/docker-build.sh +++ /dev/null @@ -1 +0,0 @@ -../fedora-package-x64/docker-build.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/docker-build.sh b/deployment/centos-package-x64/docker-build.sh new file mode 100755 index 000000000..3acf1ec0d --- /dev/null +++ b/deployment/centos-package-x64/docker-build.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Builds the RPM inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +ls -al SOURCES/pkg-src/ + +# Build RPM +spectool -g -R SPECS/jellyfin.spec +rpmbuild -bs SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" +rpmbuild -bb SPECS/jellyfin.spec --define "_sourcedir ${SOURCE_DIR}/SOURCES/pkg-src/" + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/rpm +mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/ diff --git a/deployment/centos-package-x64/package.sh b/deployment/centos-package-x64/package.sh deleted file mode 120000 index a79de21eb..000000000 --- a/deployment/centos-package-x64/package.sh +++ /dev/null @@ -1 +0,0 @@ -../fedora-package-x64/package.sh \ No newline at end of file diff --git a/deployment/centos-package-x64/package.sh b/deployment/centos-package-x64/package.sh new file mode 100755 index 000000000..27d686e46 --- /dev/null +++ b/deployment/centos-package-x64/package.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +WORKDIR="$( pwd )" +VERSION="$( grep '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +pkg_src_dir="${WORKDIR}/pkg-src" +current_user="$( whoami )" +image_name="jellyfin-centos-build" + +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" +fi + +# Create RPM source archive +GNU_TAR=1 +mkdir -p "${package_temporary_dir}" +echo "Bundling all sources for RPM build." +tar \ +--transform "s,^\.,jellyfin-${VERSION}," \ +--exclude='.git*' \ +--exclude='**/.git' \ +--exclude='**/.hg' \ +--exclude='**/.vs' \ +--exclude='**/.vscode' \ +--exclude='deployment' \ +--exclude='**/bin' \ +--exclude='**/obj' \ +--exclude='**/.nuget' \ +--exclude='*.deb' \ +--exclude='*.rpm' \ +-czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" \ +-C "../.." ./ || GNU_TAR=0 + +if [ $GNU_TAR -eq 0 ]; then + echo "The installed tar binary did not support --transform. Using workaround." + mkdir -p "${package_temporary_dir}/jellyfin" + # Not GNU tar + tar \ + --exclude='.git*' \ + --exclude='**/.git' \ + --exclude='**/.hg' \ + --exclude='**/.vs' \ + --exclude='**/.vscode' \ + --exclude='deployment' \ + --exclude='**/bin' \ + --exclude='**/obj' \ + --exclude='**/.nuget' \ + --exclude='*.deb' \ + --exclude='*.rpm' \ + -zcf \ + "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" \ + -C "../.." ./ + echo "Extracting filtered package." + tar -xzf "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}/jellyfin-${VERSION}" + echo "Removing filtered package." + rm -f "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" + echo "Repackaging package into final tarball." + tar -czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}" "jellyfin-${VERSION}" +fi + +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the RPMs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the RPMs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" +# Move the RPMs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/rpm/* "${output_dir}" -- cgit v1.2.3 From 37985c2e260a56c1512a56726afc136f264d8bbc Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 20:44:41 -0500 Subject: Update image name --- deployment/fedora-package-x64/clean.sh | 2 +- deployment/fedora-package-x64/package.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'deployment') diff --git a/deployment/fedora-package-x64/clean.sh b/deployment/fedora-package-x64/clean.sh index fbd4d276d..408167e49 100755 --- a/deployment/fedora-package-x64/clean.sh +++ b/deployment/fedora-package-x64/clean.sh @@ -11,7 +11,7 @@ package_temporary_dir="${WORKDIR}/pkg-dist-tmp" package_source_dir="${WORKDIR}/pkg-src" output_dir="${WORKDIR}/pkg-dist" current_user="$( whoami )" -image_name="jellyfin-rpm-build" +image_name="jellyfin-fedora-build" rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \ || sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null diff --git a/deployment/fedora-package-x64/package.sh b/deployment/fedora-package-x64/package.sh index 088a41a35..74586417d 100755 --- a/deployment/fedora-package-x64/package.sh +++ b/deployment/fedora-package-x64/package.sh @@ -9,7 +9,7 @@ package_temporary_dir="${WORKDIR}/pkg-dist-tmp" output_dir="${WORKDIR}/pkg-dist" pkg_src_dir="${WORKDIR}/pkg-src" current_user="$( whoami )" -image_name="jellyfin-rpm-build" +image_name="jellyfin-fedora-build" # Determine if sudo should be used for Docker if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ -- cgit v1.2.3 From 3014866f65eb1573e189867b42f8892fc54a2019 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Fri, 8 Feb 2019 21:08:34 -0500 Subject: Add similar Ubuntu build package --- deployment/ubuntu-package-x64/Dockerfile | 40 ++++++++++++++++++++++++++ deployment/ubuntu-package-x64/clean.sh | 29 +++++++++++++++++++ deployment/ubuntu-package-x64/dependencies.txt | 1 + deployment/ubuntu-package-x64/docker-build.sh | 16 +++++++++++ deployment/ubuntu-package-x64/package.sh | 31 ++++++++++++++++++++ deployment/ubuntu-package-x64/pkg-src | 1 + 6 files changed, 118 insertions(+) create mode 100644 deployment/ubuntu-package-x64/Dockerfile create mode 100755 deployment/ubuntu-package-x64/clean.sh create mode 100644 deployment/ubuntu-package-x64/dependencies.txt create mode 100755 deployment/ubuntu-package-x64/docker-build.sh create mode 100755 deployment/ubuntu-package-x64/package.sh create mode 120000 deployment/ubuntu-package-x64/pkg-src (limited to 'deployment') diff --git a/deployment/ubuntu-package-x64/Dockerfile b/deployment/ubuntu-package-x64/Dockerfile new file mode 100644 index 000000000..471f50c27 --- /dev/null +++ b/deployment/ubuntu-package-x64/Dockerfile @@ -0,0 +1,40 @@ +FROM ubuntu:18.04 +# Docker build arguments +ARG SOURCE_DIR=/jellyfin +ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-x64 +ARG ARTIFACT_DIR=/dist +ARG SDK_VERSION=2.2 +# Docker run environment +ENV SOURCE_DIR=/jellyfin +ENV ARTIFACT_DIR=/dist +ENV DEB_BUILD_OPTIONS=noddebs + +# Prepare Debian build environment +RUN apt-get update \ + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev + +# Install dotnet repository +# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current +RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg \ + && mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ \ + && wget -q https://packages.microsoft.com/config/ubuntu/18.04/prod.list \ + && mv prod.list /etc/apt/sources.list.d/microsoft-prod.list \ + && chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg \ + && chown root:root /etc/apt/sources.list.d/microsoft-prod.list \ + && apt-get update \ + && apt-get install -y dotnet-sdk-${SDK_VERSION} + +# Link to docker-build script +RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh + +# Link to Debian source dir; mkdir needed or it fails, can't force dest +RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian + +# Prepare artifact volume +VOLUME ${ARTIFACT_DIR}/ + +# Copy repository +COPY . ${SOURCE_DIR}/ + +# Set docker-build entrypoint +ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/ubuntu-package-x64/clean.sh b/deployment/ubuntu-package-x64/clean.sh new file mode 100755 index 000000000..c92c7fdec --- /dev/null +++ b/deployment/ubuntu-package-x64/clean.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +keep_artifacts="${1}" + +WORKDIR="$( pwd )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-ubuntu-build" + +rm -rf "${package_temporary_dir}" &>/dev/null \ + || sudo rm -rf "${package_temporary_dir}" &>/dev/null + +rm -rf "${output_dir}" &>/dev/null \ + || sudo rm -rf "${output_dir}" &>/dev/null + +if [[ ${keep_artifacts} == 'n' ]]; then + docker_sudo="" + if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo=sudo + fi + ${docker_sudo} docker image rm ${image_name} --force +fi diff --git a/deployment/ubuntu-package-x64/dependencies.txt b/deployment/ubuntu-package-x64/dependencies.txt new file mode 100644 index 000000000..bdb967096 --- /dev/null +++ b/deployment/ubuntu-package-x64/dependencies.txt @@ -0,0 +1 @@ +docker diff --git a/deployment/ubuntu-package-x64/docker-build.sh b/deployment/ubuntu-package-x64/docker-build.sh new file mode 100755 index 000000000..83654b8ce --- /dev/null +++ b/deployment/ubuntu-package-x64/docker-build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Builds the DEB inside the Docker container + +set -o errexit +set -o xtrace + +# Move to source directory +pushd ${SOURCE_DIR} + +# Build DEB +dpkg-buildpackage -us -uc + +# Move the artifacts out +mkdir -p ${ARTIFACT_DIR}/deb +mv /jellyfin_* ${ARTIFACT_DIR}/deb/ diff --git a/deployment/ubuntu-package-x64/package.sh b/deployment/ubuntu-package-x64/package.sh new file mode 100755 index 000000000..6d4625a19 --- /dev/null +++ b/deployment/ubuntu-package-x64/package.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +source ../common.build.sh + +WORKDIR="$( pwd )" + +package_temporary_dir="${WORKDIR}/pkg-dist-tmp" +output_dir="${WORKDIR}/pkg-dist" +current_user="$( whoami )" +image_name="jellyfin-ubuntu-build" + +# Determine if sudo should be used for Docker +if [[ ! -z $(id -Gn | grep -q 'docker') ]] \ + && [[ ! ${EUID:-1000} -eq 0 ]] \ + && [[ ! ${USER} == "root" ]] \ + && [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then + docker_sudo="sudo" +else + docker_sudo="" +fi + +# Set up the build environment Docker image +${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile +# Build the DEBs and copy out to ${package_temporary_dir} +${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" +# Correct ownership on the DEBs (as current user, then as root if that fails) +chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null \ + || sudo chown -R "${current_user}" "${package_temporary_dir}" &>/dev/null +# Move the DEBs to the output directory +mkdir -p "${output_dir}" +mv "${package_temporary_dir}"/deb/* "${output_dir}" diff --git a/deployment/ubuntu-package-x64/pkg-src b/deployment/ubuntu-package-x64/pkg-src new file mode 120000 index 000000000..4c695fea1 --- /dev/null +++ b/deployment/ubuntu-package-x64/pkg-src @@ -0,0 +1 @@ +../debian-package-x64/pkg-src \ No newline at end of file -- cgit v1.2.3 From 7be4a8500c29d58dff9af5a3bf85edeb5d6b73b6 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:02:27 -0500 Subject: Use Microsoft dotnet Docker images --- deployment/debian-package-x64/Dockerfile | 24 ++++-------------------- deployment/ubuntu-package-x64/Dockerfile | 26 +++++--------------------- 2 files changed, 9 insertions(+), 41 deletions(-) (limited to 'deployment') diff --git a/deployment/debian-package-x64/Dockerfile b/deployment/debian-package-x64/Dockerfile index 787f1d182..da66c9f94 100644 --- a/deployment/debian-package-x64/Dockerfile +++ b/deployment/debian-package-x64/Dockerfile @@ -1,9 +1,8 @@ -FROM debian:9 +FROM microsoft/dotnet:2.2-sdk-stretch # Docker build arguments ARG SOURCE_DIR=/jellyfin ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-x64 ARG ARTIFACT_DIR=/dist -ARG SDK_VERSION=2.2 # Docker run environment ENV SOURCE_DIR=/jellyfin ENV ARTIFACT_DIR=/dist @@ -11,24 +10,9 @@ ENV DEB_BUILD_OPTIONS=noddebs # Prepare Debian build environment RUN apt-get update \ - && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev - -# Install dotnet repository -# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current -RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg \ - && mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ \ - && wget -q https://packages.microsoft.com/config/debian/9/prod.list \ - && mv prod.list /etc/apt/sources.list.d/microsoft-prod.list \ - && chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg \ - && chown root:root /etc/apt/sources.list.d/microsoft-prod.list \ - && apt-get update \ - && apt-get install -y dotnet-sdk-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to Debian source dir; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian # Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ diff --git a/deployment/ubuntu-package-x64/Dockerfile b/deployment/ubuntu-package-x64/Dockerfile index 471f50c27..047d6a7a2 100644 --- a/deployment/ubuntu-package-x64/Dockerfile +++ b/deployment/ubuntu-package-x64/Dockerfile @@ -1,34 +1,18 @@ -FROM ubuntu:18.04 +FROM microsoft/dotnet:2.2-sdk-bionic # Docker build arguments ARG SOURCE_DIR=/jellyfin ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-x64 ARG ARTIFACT_DIR=/dist -ARG SDK_VERSION=2.2 # Docker run environment ENV SOURCE_DIR=/jellyfin ENV ARTIFACT_DIR=/dist ENV DEB_BUILD_OPTIONS=noddebs -# Prepare Debian build environment +# Prepare Ubuntu build environment RUN apt-get update \ - && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev - -# Install dotnet repository -# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current -RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg \ - && mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ \ - && wget -q https://packages.microsoft.com/config/ubuntu/18.04/prod.list \ - && mv prod.list /etc/apt/sources.list.d/microsoft-prod.list \ - && chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg \ - && chown root:root /etc/apt/sources.list.d/microsoft-prod.list \ - && apt-get update \ - && apt-get install -y dotnet-sdk-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to Debian source dir; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian + && apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian # Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -- cgit v1.2.3 From 57cefb432a052eb3d10019cf219a0eb8a5dfe088 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:06:27 -0500 Subject: Combine various RUNs in Fedora/CentOS --- deployment/centos-package-x64/Dockerfile | 16 +++++----------- deployment/fedora-package-x64/Dockerfile | 16 +++++----------- 2 files changed, 10 insertions(+), 22 deletions(-) (limited to 'deployment') diff --git a/deployment/centos-package-x64/Dockerfile b/deployment/centos-package-x64/Dockerfile index 89799bca2..4cb288c84 100644 --- a/deployment/centos-package-x64/Dockerfile +++ b/deployment/centos-package-x64/Dockerfile @@ -13,17 +13,11 @@ RUN yum update -y \ && yum install -y @buildsys-build rpmdevtools yum-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ && rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm \ && rpmdev-setuptree \ - && yum install -y dotnet-sdk-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to RPM spec; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SPECS \ - && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec - -# Link to RPM sources; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && yum install -y dotnet-sdk-${SDK_VERSION} \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \ + && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES # Prepare artifact volume diff --git a/deployment/fedora-package-x64/Dockerfile b/deployment/fedora-package-x64/Dockerfile index 7decba2e9..944f489b5 100644 --- a/deployment/fedora-package-x64/Dockerfile +++ b/deployment/fedora-package-x64/Dockerfile @@ -13,17 +13,11 @@ RUN dnf update -y \ && dnf install -y @buildsys-build rpmdevtools dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel \ && dnf copr enable -y @dotnet-sig/dotnet \ && rpmdev-setuptree \ - && dnf install -y dotnet-sdk-${SDK_VERSION} - -# Link to docker-build script -RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh - -# Link to RPM spec; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SPECS \ - && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec - -# Link to RPM sources; mkdir needed or it fails, can't force dest -RUN mkdir -p ${SOURCE_DIR}/SOURCES \ + && dnf install -y dotnet-sdk-${SDK_VERSION} \ + && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ + && mkdir -p ${SOURCE_DIR}/SPECS \ + && ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \ + && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES # Prepare artifact volume -- cgit v1.2.3 From 00234a5ece42126ec5039aa243d4a679589be33e Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:12:55 -0500 Subject: Remove superfluous comments --- deployment/centos-package-x64/Dockerfile | 3 --- deployment/debian-package-x64/Dockerfile | 3 --- deployment/fedora-package-x64/Dockerfile | 3 --- deployment/ubuntu-package-x64/Dockerfile | 3 --- 4 files changed, 12 deletions(-) (limited to 'deployment') diff --git a/deployment/centos-package-x64/Dockerfile b/deployment/centos-package-x64/Dockerfile index 4cb288c84..38853f173 100644 --- a/deployment/centos-package-x64/Dockerfile +++ b/deployment/centos-package-x64/Dockerfile @@ -20,11 +20,8 @@ RUN yum update -y \ && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/debian-package-x64/Dockerfile b/deployment/debian-package-x64/Dockerfile index da66c9f94..9819cc20d 100644 --- a/deployment/debian-package-x64/Dockerfile +++ b/deployment/debian-package-x64/Dockerfile @@ -14,11 +14,8 @@ RUN apt-get update \ && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/fedora-package-x64/Dockerfile b/deployment/fedora-package-x64/Dockerfile index 944f489b5..8bb1d527d 100644 --- a/deployment/fedora-package-x64/Dockerfile +++ b/deployment/fedora-package-x64/Dockerfile @@ -20,11 +20,8 @@ RUN dnf update -y \ && mkdir -p ${SOURCE_DIR}/SOURCES \ && ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] diff --git a/deployment/ubuntu-package-x64/Dockerfile b/deployment/ubuntu-package-x64/Dockerfile index 047d6a7a2..485b6c42c 100644 --- a/deployment/ubuntu-package-x64/Dockerfile +++ b/deployment/ubuntu-package-x64/Dockerfile @@ -14,11 +14,8 @@ RUN apt-get update \ && ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \ && mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian -# Prepare artifact volume VOLUME ${ARTIFACT_DIR}/ -# Copy repository COPY . ${SOURCE_DIR}/ -# Set docker-build entrypoint ENTRYPOINT ["/docker-build.sh"] -- cgit v1.2.3 From fb256b7aa0cf500c54fd1a1fa8295a0dac9520b1 Mon Sep 17 00:00:00 2001 From: Joshua Boniface Date: Sat, 9 Feb 2019 19:32:06 -0500 Subject: Fix control file for Microsoft Docker setup --- deployment/debian-package-x64/docker-build.sh | 3 +++ deployment/ubuntu-package-x64/docker-build.sh | 3 +++ 2 files changed, 6 insertions(+) (limited to 'deployment') diff --git a/deployment/debian-package-x64/docker-build.sh b/deployment/debian-package-x64/docker-build.sh index 83654b8ce..0590be097 100755 --- a/deployment/debian-package-x64/docker-build.sh +++ b/deployment/debian-package-x64/docker-build.sh @@ -8,6 +8,9 @@ set -o xtrace # Move to source directory pushd ${SOURCE_DIR} +# Remove build-dep for dotnet-sdk-2.2, since it's not a package in this image +sed -i '/dotnet-sdk-2.2,/d' debian/control + # Build DEB dpkg-buildpackage -us -uc diff --git a/deployment/ubuntu-package-x64/docker-build.sh b/deployment/ubuntu-package-x64/docker-build.sh index 83654b8ce..0590be097 100755 --- a/deployment/ubuntu-package-x64/docker-build.sh +++ b/deployment/ubuntu-package-x64/docker-build.sh @@ -8,6 +8,9 @@ set -o xtrace # Move to source directory pushd ${SOURCE_DIR} +# Remove build-dep for dotnet-sdk-2.2, since it's not a package in this image +sed -i '/dotnet-sdk-2.2,/d' debian/control + # Build DEB dpkg-buildpackage -us -uc -- cgit v1.2.3