mirror of
https://github.com/jellyfin/jellyfin-packaging.git
synced 2026-09-03 03:29:58 +03:00
This seems to throw errors randomly when building locally. As these are purely build containers, the extra few kB due to wget doesn't matter.
131 lines
4.5 KiB
Docker
131 lines
4.5 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 \
|
|
git \
|
|
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/* || true \
|
|
&& 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 -O- https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel ${DOTNET_VERSION} --install-dir /usr/local/bin
|
|
|
|
# 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 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"]
|