From d126bef343ee046c2146688c1490025d3c86e555 Mon Sep 17 00:00:00 2001 From: Googol Lee Date: Tue, 1 Jul 2025 16:42:28 +0200 Subject: [PATCH] Ensure features are enabled with imagemagick. (#1233) --- dependencies/Dockerfile | 12 ++++++++---- dependencies/build_imagemagick.sh | 19 ++++++++++++++----- dependencies/build_libheif.sh | 12 ++++++------ dependencies/build_libraw.sh | 6 +++--- dependencies/download_jellyfin-ffmpeg.sh | 4 ++-- dependencies/prepare.sh | 5 +---- 6 files changed, 34 insertions(+), 24 deletions(-) diff --git a/dependencies/Dockerfile b/dependencies/Dockerfile index 2d7f55fb..dba671eb 100644 --- a/dependencies/Dockerfile +++ b/dependencies/Dockerfile @@ -16,7 +16,8 @@ RUN --mount=type=cache,target=${BUILD_CACHE_DIR},id=libraw-${TARGETARCH}-${LIBRA if [ -f /run/secrets/github_token ]; then \ export GITHUB_TOKEN=$(cat /run/secrets/github_token); \ fi \ - && export $(cat /env) && ./build_libraw.sh + && set -a && source /env && set +a \ + && ./build_libraw.sh FROM build-libraw AS build-libheif ARG LIBHEIF_VERSION @@ -29,7 +30,8 @@ RUN --mount=type=cache,target=${BUILD_CACHE_DIR},id=libheif-${TARGETARCH}-${LIBH if [ -f /run/secrets/github_token ]; then \ export GITHUB_TOKEN=$(cat /run/secrets/github_token); \ fi \ - && export $(cat /env) && ./build_libheif.sh + && set -a && source /env && set +a \ + && ./build_libheif.sh FROM build-libheif AS build-imagemagick ARG IMAGEMAGICK_VERSION @@ -42,7 +44,8 @@ RUN --mount=type=cache,target=${BUILD_CACHE_DIR},id=imagemagick-${TARGETARCH}-${ if [ -f /run/secrets/github_token ]; then \ export GITHUB_TOKEN=$(cat /run/secrets/github_token); \ fi \ - && export $(cat /env) && ./build_imagemagick.sh + && set -a && source /env && set +a \ + && ./build_imagemagick.sh FROM base-prep AS download-jellyfin-ffmpeg ARG JELLYFIN_FFMPEG_VERSION @@ -51,7 +54,8 @@ ENV BUILD_CACHE_DIR=/build-cache WORKDIR /tmp/download-ffmpeg COPY --chmod=0755 download_jellyfin-ffmpeg.sh . RUN --mount=type=cache,target=${BUILD_CACHE_DIR},id=ffmpeg-${TARGETARCH}-${JELLYFIN_FFMPEG_VERSION} \ - export $(cat /env) && ./download_jellyfin-ffmpeg.sh + set -a && source /env && set +a \ + && ./download_jellyfin-ffmpeg.sh FROM base-prep AS final-assembly COPY --from=build-libraw /output/ /output/ diff --git a/dependencies/build_imagemagick.sh b/dependencies/build_imagemagick.sh index 38602a92..2552598e 100755 --- a/dependencies/build_imagemagick.sh +++ b/dependencies/build_imagemagick.sh @@ -10,8 +10,8 @@ fi set -euo pipefail -: "${DEB_HOST_MULTIARCH:=$(uname -m)-linux-gnu}" : "${DEB_HOST_ARCH:=$(dpkg --print-architecture)}" +: "${DEB_HOST_GNU_TYPE:=$(dpkg-architecture -a "$DEB_HOST_ARCH" -qDEB_HOST_GNU_TYPE)}" CACHE_DIR="${BUILD_CACHE_DIR:-/build-cache}/ImageMagick-${IMAGEMAGICK_VERSION}" CACHE_MARKER="${CACHE_DIR}/ImageMagick-${IMAGEMAGICK_VERSION}-complete" @@ -25,7 +25,7 @@ fi echo "Building ImageMagick ${IMAGEMAGICK_VERSION} (cache miss)..." -echo Compiler: "${DEB_HOST_MULTIARCH}" Arch: "${DEB_HOST_ARCH}" +echo Compiler: "${DEB_HOST_GNU_TYPE}" Arch: "${DEB_HOST_ARCH}" apt-get install -y \ libjxl-dev:"${DEB_HOST_ARCH}" \ @@ -51,14 +51,23 @@ curl -fsSL --retry 2 --retry-delay 5 --retry-max-time 60 -o ./magick.tar.gz \ tar xfv ./magick.tar.gz cd ImageMagick-* + +FEATURES="--with-heic --with-jpeg --with-png --with-raw --with-tiff --with-webp" + ./configure \ --enable-64bit-channel-masks \ --enable-static --enable-shared --enable-delegate-build \ - --with-heic --with-jpeg --with-png \ - --with-raw --with-tiff --with-webp \ --without-x --without-magick-plus-plus \ --without-perl --disable-doc \ - --host="${DEB_HOST_MULTIARCH}" + --host="${DEB_HOST_GNU_TYPE}" \ + ${FEATURES} + +# Ensure that features are enabled +for feature in ${FEATURES} +do + grep -- ${feature}'.*yes$' config.log || (echo "Can't enable feature ${feature}"; false) +done + make make install cd .. diff --git a/dependencies/build_libheif.sh b/dependencies/build_libheif.sh index 57eaeab2..26b02add 100755 --- a/dependencies/build_libheif.sh +++ b/dependencies/build_libheif.sh @@ -10,8 +10,8 @@ fi set -euo pipefail -: "${DEB_HOST_MULTIARCH:=$(uname -m)-linux-gnu}" : "${DEB_HOST_ARCH:=$(dpkg --print-architecture)}" +: "${DEB_HOST_GNU_TYPE:=$(dpkg-architecture -a "$DEB_HOST_ARCH" -qDEB_HOST_GNU_TYPE)}" CACHE_DIR="${BUILD_CACHE_DIR:-/build-cache}/libheif-${LIBHEIF_VERSION}" CACHE_MARKER="${CACHE_DIR}/libheif-${LIBHEIF_VERSION}-complete" @@ -25,7 +25,7 @@ fi echo "Building libheif ${LIBHEIF_VERSION} (cache miss)..." -echo Compiler: "${DEB_HOST_MULTIARCH}" Arch: "${DEB_HOST_ARCH}" +echo Compiler: "${DEB_HOST_GNU_TYPE}" Arch: "${DEB_HOST_ARCH}" apt-get install -y \ libdav1d-dev:"${DEB_HOST_ARCH}" \ @@ -46,10 +46,10 @@ cd ./*-libheif-* cmake \ --preset=release \ -DCMAKE_SYSTEM_PROCESSOR="${DEB_HOST_ARCH}" \ - -DCMAKE_C_COMPILER="${DEB_HOST_MULTIARCH}"-gcc \ - -DCMAKE_CXX_COMPILER="${DEB_HOST_MULTIARCH}"-g++ \ - -DPKG_CONFIG_EXECUTABLE="${DEB_HOST_MULTIARCH}"-pkg-config \ - -DCMAKE_LIBRARY_ARCHITECTURE="${DEB_HOST_MULTIARCH}" \ + -DCMAKE_C_COMPILER="${DEB_HOST_GNU_TYPE}"-gcc \ + -DCMAKE_CXX_COMPILER="${DEB_HOST_GNU_TYPE}"-g++ \ + -DPKG_CONFIG_EXECUTABLE="${DEB_HOST_GNU_TYPE}"-pkg-config \ + -DCMAKE_LIBRARY_ARCHITECTURE="${DEB_HOST_GNU_TYPE}" \ -DENABLE_PLUGIN_LOADING=OFF \ -DWITH_GDK_PIXBUF=OFF . make diff --git a/dependencies/build_libraw.sh b/dependencies/build_libraw.sh index 345bbe6f..66f0fcda 100755 --- a/dependencies/build_libraw.sh +++ b/dependencies/build_libraw.sh @@ -10,8 +10,8 @@ fi set -euo pipefail -: "${DEB_HOST_MULTIARCH:=$(uname -m)-linux-gnu}" : "${DEB_HOST_ARCH:=$(dpkg --print-architecture)}" +: "${DEB_HOST_GNU_TYPE:=$(dpkg-architecture -a "$DEB_HOST_ARCH" -qDEB_HOST_GNU_TYPE)}" CACHE_DIR="${BUILD_CACHE_DIR:-/build-cache}/LibRaw-${LIBRAW_VERSION}" CACHE_MARKER="${CACHE_DIR}/LibRaw-${LIBRAW_VERSION}-complete" @@ -25,7 +25,7 @@ fi echo "Building LibRaw ${LIBRAW_VERSION} (cache miss)..." -echo Compiler: "${DEB_HOST_MULTIARCH}" Arch: "${DEB_HOST_ARCH}" +echo Compiler: "${DEB_HOST_GNU_TYPE}" Arch: "${DEB_HOST_ARCH}" apt-get install -y \ libjpeg62-turbo-dev:"${DEB_HOST_ARCH}" \ @@ -45,7 +45,7 @@ autoreconf --install --disable-silent-rules \ --disable-maintainer-mode \ --disable-dependency-tracking \ - --host="${DEB_HOST_MULTIARCH}" + --host="${DEB_HOST_GNU_TYPE}" make make install cd .. diff --git a/dependencies/download_jellyfin-ffmpeg.sh b/dependencies/download_jellyfin-ffmpeg.sh index d9d91d14..39a9fd57 100755 --- a/dependencies/download_jellyfin-ffmpeg.sh +++ b/dependencies/download_jellyfin-ffmpeg.sh @@ -10,8 +10,8 @@ fi set -euo pipefail -: "${DEB_HOST_MULTIARCH:=$(uname -m)-linux-gnu}" : "${DEB_HOST_ARCH:=$(dpkg --print-architecture)}" +: "${DEB_HOST_GNU_TYPE:=$(dpkg-architecture -a "$DEB_HOST_ARCH" -qDEB_HOST_GNU_TYPE)}" CACHE_DIR="${BUILD_CACHE_DIR:-/build-cache}/jellyfin-ffmpeg-${JELLYFIN_FFMPEG_VERSION}" CACHE_MARKER="${CACHE_DIR}/jellyfin-ffmpeg-${JELLYFIN_FFMPEG_VERSION}-complete" @@ -25,7 +25,7 @@ fi echo "Downloading jellyfin-ffmpeg ${JELLYFIN_FFMPEG_VERSION} (cache miss)..." -echo Compiler: "${DEB_HOST_MULTIARCH}" Arch: "${DEB_HOST_ARCH}" +echo Compiler: "${DEB_HOST_GNU_TYPE}" Arch: "${DEB_HOST_ARCH}" VER="${JELLYFIN_FFMPEG_VERSION#v}" MAJOR_VER=$(echo "${VER}" | cut -d. -f1) diff --git a/dependencies/prepare.sh b/dependencies/prepare.sh index 6fe55209..5d0cec18 100755 --- a/dependencies/prepare.sh +++ b/dependencies/prepare.sh @@ -2,7 +2,6 @@ set -euo pipefail : "${TARGETPLATFORM:=linux/$(dpkg --print-architecture)}" -: "${DEB_HOST_MULTIARCH:=$(uname -m)-linux-gnu}" TARGETARCH="$(echo "$TARGETPLATFORM" | cut -d"/" -f2)" @@ -27,7 +26,5 @@ apt-get install -y \ cmake dpkg-architecture -a "$DEBIAN_ARCH" >/env -echo "PKG_CONFIG_PATH=/usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig" >>/env -# shellcheck disable=SC2046 -export $(cat /env) +echo "PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/$(dpkg-architecture -a "$DEBIAN_ARCH" -qDEB_HOST_MULTIARCH)/pkgconfig" >>/env cat /env