mirror of
https://github.com/jellyfin/jellyfin-packaging.git
synced 2026-09-03 03:29:58 +03:00
Fixes a build failure on Noble due to duplications in here, but should still work on older version as well since we write new versions and those just used sources.list (not the .d directory)
135 lines
4.7 KiB
Docker
135 lines
4.7 KiB
Docker
# Docker build arguments
|
|
ARG DOTNET_VERSION=8.0
|
|
ARG NODEJS_VERSION=20
|
|
# Default to 12, but set externally by the `build.py` script
|
|
ARG GCC_VERSION=12
|
|
|
|
ARG PACKAGE_TYPE
|
|
ARG PACKAGE_VERSION
|
|
ARG PACKAGE_ARCH
|
|
|
|
FROM ${PACKAGE_TYPE}:${PACKAGE_VERSION}
|
|
|
|
ARG SOURCE_DIR=/jellyfin
|
|
ARG ARTIFACT_DIR=/dist
|
|
ARG DOTNET_VERSION
|
|
ARG NODEJS_VERSION
|
|
ARG PACKAGE_TYPE
|
|
ARG PACKAGE_VERSION
|
|
ARG PACKAGE_ARCH
|
|
ARG GCC_VERSION
|
|
|
|
# Docker run environment
|
|
ENV SOURCE_DIR=/jellyfin
|
|
ENV ARTIFACT_DIR=/dist
|
|
ENV DEB_BUILD_OPTIONS=noddebs
|
|
ENV TYPE=${PACKAGE_TYPE}
|
|
ENV VERSION=${PACKAGE_VERSION}
|
|
ENV ARCH=${PACKAGE_ARCH}
|
|
|
|
# Prepare Debian build environment
|
|
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 \
|
|
&& 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 \
|
|
if grep -q -i ubuntu /etc/os-release; then \
|
|
rm /etc/apt/sources.list /etc/apt/sources.list.d/* \
|
|
&& 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=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
&& echo "deb [arch=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
&& echo "deb [arch=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
&& echo "deb [arch=${PACKAGE_ARCH}] http://ports.ubuntu.com/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/${PACKAGE_ARCH}.list \
|
|
; fi \
|
|
&& set -o xtrace \
|
|
&& dpkg --add-architecture ${PACKAGE_ARCH} \
|
|
&& apt-get update -y \
|
|
&& apt-get install --no-install-recommends -y cross-gcc-dev \
|
|
&& TARGET_LIST="${PACKAGE_ARCH}" cross-gcc-gensource ${GCC_VERSION} \
|
|
&& cd cross-gcc-packages-amd64/cross-gcc-${GCC_VERSION}-${PACKAGE_ARCH} \
|
|
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
|
|
apt-get -f install --no-install-recommends -o Dpkg::Options::="--force-overwrite" -y \
|
|
bison \
|
|
flex \
|
|
libtool \
|
|
gdb \
|
|
sharutils \
|
|
netbase \
|
|
libmpc-dev \
|
|
libmpfr-dev \
|
|
libgmp-dev \
|
|
systemtap-sdt-dev \
|
|
autogen \
|
|
expect \
|
|
chrpath \
|
|
zlib1g-dev \
|
|
zip \
|
|
binutils-aarch64-linux-gnu \
|
|
binutils-arm-linux-gnueabihf \
|
|
gcc-${GCC_VERSION}-source \
|
|
libstdc++-${GCC_VERSION}-dev-${PACKAGE_ARCH}-cross \
|
|
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
|
|
RUN wget https://packages.microsoft.com/config/${PACKAGE_TYPE}/${PACKAGE_VERSION}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
|
|
&& dpkg -i packages-microsoft-prod.deb \
|
|
&& apt-get -f install \
|
|
&& apt-get update \
|
|
&& apt-get install -y dotnet-sdk-${DOTNET_VERSION}
|
|
|
|
# Prepare nodejs
|
|
RUN wget https://deb.nodesource.com/setup_${NODEJS_VERSION}.x -O nodejs-install.sh \
|
|
&& chmod +x ./nodejs-install.sh \
|
|
&& ./nodejs-install.sh \
|
|
&& apt-get install -y \
|
|
nodejs
|
|
|
|
# Clean up dependencies
|
|
RUN apt-get remove wget -y \
|
|
&& apt-get clean autoclean -y \
|
|
&& apt-get autoremove -y \
|
|
&& rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
|
|
|
|
# Link to build script
|
|
RUN ln -sf ${SOURCE_DIR}/debian/docker/build.sh /build.sh
|
|
|
|
VOLUME ${SOURCE_DIR}/
|
|
|
|
VOLUME ${ARTIFACT_DIR}/
|
|
|
|
ENTRYPOINT ["/build.sh"]
|