mirror of
https://git.vectorsigma.ru/public/photoview.git
synced 2026-08-03 19:39:19 +00:00
94 lines
3.3 KiB
Bash
Executable File
94 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Fallback to the latest version if IMAGEMAGICK_VERSION is not set
|
|
if [[ -z "${IMAGEMAGICK_VERSION}" ]]; then
|
|
echo "WARN: ImageMagick version is empty, most likely the script runs not on CI."
|
|
echo "Fetching the latest version from ImageMagick repo..."
|
|
IMAGEMAGICK_VERSION=$(curl -fsSL --retry 2 --retry-delay 5 --retry-max-time 60 \
|
|
"https://api.github.com/repos/ImageMagick/ImageMagick/releases/latest" | jq -r '.tag_name')
|
|
fi
|
|
|
|
set -euo pipefail
|
|
|
|
: "${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"
|
|
|
|
# Check if this specific version is already built and cached
|
|
if [[ -f "$CACHE_MARKER" ]] && [[ -d "${CACHE_DIR}/output" ]]; then
|
|
echo "ImageMagick ${IMAGEMAGICK_VERSION} found in cache, reusing..."
|
|
mkdir -p /output
|
|
cp -ra "${CACHE_DIR}/output/"* /output/
|
|
exit 0
|
|
fi
|
|
|
|
echo "Building ImageMagick ${IMAGEMAGICK_VERSION} (cache miss)..."
|
|
|
|
echo Compiler: "${DEB_HOST_GNU_TYPE}" Arch: "${DEB_HOST_ARCH}"
|
|
|
|
apt-get install -y \
|
|
libjxl-dev:"${DEB_HOST_ARCH}" \
|
|
liblcms2-dev:"${DEB_HOST_ARCH}" \
|
|
liblqr-1-0-dev:"${DEB_HOST_ARCH}" \
|
|
libdjvulibre-dev:"${DEB_HOST_ARCH}" \
|
|
libjpeg62-turbo-dev:"${DEB_HOST_ARCH}" \
|
|
libopenjp2-7-dev:"${DEB_HOST_ARCH}" \
|
|
libopenexr-dev:"${DEB_HOST_ARCH}" \
|
|
libpng-dev:"${DEB_HOST_ARCH}" \
|
|
libtiff-dev:"${DEB_HOST_ARCH}" \
|
|
libwebp-dev:"${DEB_HOST_ARCH}" \
|
|
libxml2-dev:"${DEB_HOST_ARCH}" \
|
|
libfftw3-dev:"${DEB_HOST_ARCH}" \
|
|
zlib1g-dev:"${DEB_HOST_ARCH}" \
|
|
liblzma-dev:"${DEB_HOST_ARCH}" \
|
|
libbz2-dev:"${DEB_HOST_ARCH}"
|
|
|
|
URL="https://api.github.com/repos/ImageMagick/ImageMagick/tarball/${IMAGEMAGICK_VERSION}"
|
|
echo download ImageMagick from "$URL"
|
|
curl -fsSL --retry 2 --retry-delay 5 --retry-max-time 60 -o ./magick.tar.gz \
|
|
${GITHUB_TOKEN:+-H "Authorization: Bearer ${GITHUB_TOKEN}"} "$URL"
|
|
|
|
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 \
|
|
--without-x --without-magick-plus-plus \
|
|
--without-perl --disable-doc \
|
|
--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 ..
|
|
|
|
mkdir -p /output/bin /output/etc /output/lib /output/include /output/pkgconfig
|
|
cp -a /usr/local/bin/magick /output/bin/
|
|
cp -a /usr/local/etc/ImageMagick-7 /output/etc/
|
|
cp -a /usr/local/lib/ImageMagick-* /output/lib/
|
|
cp -a /usr/local/lib/libMagickCore-* /output/lib/
|
|
cp -a /usr/local/lib/libMagickWand-* /output/lib/
|
|
cp -a /usr/local/include/ImageMagick-7 /output/include/
|
|
cp -a /usr/local/lib/pkgconfig/ImageMagick*.pc /output/pkgconfig/
|
|
cp -a /usr/local/lib/pkgconfig/MagickCore*.pc /output/pkgconfig/
|
|
cp -a /usr/local/lib/pkgconfig/MagickWand*.pc /output/pkgconfig/
|
|
file /output/bin/magick
|
|
|
|
# After successful build, cache the results
|
|
echo "Caching ImageMagick ${IMAGEMAGICK_VERSION} build results..."
|
|
mkdir -p "${CACHE_DIR}/output"
|
|
cp -ra /output/* "${CACHE_DIR}/output/"
|
|
touch "$CACHE_MARKER"
|
|
|
|
echo "ImageMagick ${IMAGEMAGICK_VERSION} build complete and cached"
|