Use self-building dependencies and update the code with imagemagick. (#1053)

This commit is contained in:
Googol Lee
2024-09-17 15:02:23 +02:00
committed by GitHub
parent 4b678f201d
commit 340c181442
17 changed files with 280 additions and 225 deletions

View File

@@ -1,42 +1,12 @@
#!/bin/bash
set -e
#!/bin/sh
set -eu
if [ "$TARGETPLATFORM" == "linux/arm64" ]; then
dpkg --add-architecture arm64
DEBIAN_ARCH='arm64'
elif [ "$TARGETPLATFORM" == "linux/arm/v6" ] || [ "$TARGETPLATFORM" == "linux/arm/v7" ]; then
dpkg --add-architecture armhf
DEBIAN_ARCH='armhf'
else
dpkg --add-architecture amd64
DEBIAN_ARCH='amd64'
fi
: ${DEB_HOST_ARCH=`dpkg --print-architecture`}
echo Arch: ${DEB_HOST_ARCH}
apt-get update
# Install G++/GCC cross compilers
if [ "$DEBIAN_ARCH" == "arm64" ]; then
apt-get install -y \
g++-aarch64-linux-gnu \
libc6-dev-arm64-cross
elif [ "$DEBIAN_ARCH" == "armhf" ]; then
apt-get install -y \
g++-arm-linux-gnueabihf \
libc6-dev-armhf-cross
else
apt-get install -y \
g++-x86-64-linux-gnu \
libc6-dev-amd64-cross
fi
# Install go-face dependencies and libheif for HEIF media decoding
# Install go-face dependencies
apt-get install -y \
libdlib-dev:${DEBIAN_ARCH} \
libblas-dev:${DEBIAN_ARCH} \
libatlas-base-dev:${DEBIAN_ARCH} \
liblapack-dev:${DEBIAN_ARCH} \
libjpeg-dev:${DEBIAN_ARCH} \
libheif-dev:${DEBIAN_ARCH}
libdlib-dev:${DEB_HOST_ARCH} libblas-dev:${DEB_HOST_ARCH} libatlas-base-dev:${DEB_HOST_ARCH} liblapack-dev:${DEB_HOST_ARCH} libjpeg-dev:${DEB_HOST_ARCH}
# Install tools for development
apt-get install -y reflex sqlite3

View File

@@ -1,22 +1,13 @@
#!/bin/bash
#!/bin/sh
set -eu
apt-get update
apt-get install -y curl libdlib19.1 ffmpeg exiftool libheif1
apt-get install -y curl exiftool
# Install Darktable if building for a supported architecture
if [ "${TARGETPLATFORM}" = "linux/amd64" ] || [ "${TARGETPLATFORM}" = "linux/arm64" ]; then
echo 'deb [trusted=true] https://download.opensuse.org/repositories/graphics:/darktable/Debian_12/ /' > /etc/apt/sources.list.d/darktable.list
# Release key is invalid, just trust the repo
curl -fsSL https://download.opensuse.org/repositories/graphics:/darktable/Debian_12/Release.key \
| gpg --dearmor -o /etc/apt/trusted.gpg.d/darktable.gpg
gpg --show-keys --with-fingerprint --dry-run /etc/apt/trusted.gpg.d/darktable.gpg
apt-get update
apt-get install -y darktable
fi
# Remove build dependencies and cleanup
apt-get purge -y ${BUILD_DEPENDS[@]}
apt-get autoremove -y
apt-get clean
rm -rf /var/lib/apt/lists/*
# libheif dependencies: no dependency
# libraw dependencies
apt-get install -y libjpeg62-turbo liblcms2-2
# ImageMagick dependencies
apt-get install -y libjbig0 libtiff6 libfreetype6 libjxl0.7 liblqr-1-0 libpng16-16 libdjvulibre21 libwebpmux3 libwebpdemux2 libwebp7 libopenexr-3-1-30 libopenjp2-7 libjpeg62-turbo liblcms2-2 libxml2 libx11-6 libgomp1
# go-face dependencies
apt-get install -y libdlib19.1 libblas3 liblapack3 libjpeg62-turbo

View File

@@ -1,84 +1,54 @@
#!/bin/sh
# Script to configure environment variables for Go compiler
# to allow cross compilation
: ${TARGETPLATFORM=}
: ${TARGETOS=}
: ${TARGETARCH=}
: ${TARGETVARIANT=}
CGO_ENABLED="$(go env CGO_ENABLED)"
GOARCH="$(go env GOARCH)"
GOOS="$(go env GOOS)"
GOARM="$(go env GOARM)"
GOBIN="$(go env GOBIN)"
set -eu
if [ ! -z "$TARGETPLATFORM" ]; then
TARGETOS="$(echo $TARGETPLATFORM | cut -d"/" -f1)"
TARGETARCH="$(echo $TARGETPLATFORM | cut -d"/" -f2)"
TARGETVARIANT="$(echo $TARGETPLATFORM | cut -d"/" -f3)"
fi
# Configure environment for cross-compiling.
if [ ! -z "$TARGETOS" ]; then
export GOOS="$TARGETOS"
fi
: ${TARGETPLATFORM=linux/`dpkg --print-architecture`}
if [ ! -z "$TARGETARCH" ]; then
export GOARCH="$TARGETARCH"
fi
TARGETOS="$(echo $TARGETPLATFORM | cut -d"/" -f1)"
TARGETARCH="$(echo $TARGETPLATFORM | cut -d"/" -f2)"
TARGETVARIANT="$(echo $TARGETPLATFORM | cut -d"/" -f3)"
if [ "$TARGETARCH" = "arm" ]; then
if [ ! -z "$TARGETVARIANT" ]; then
case "$TARGETVARIANT" in
"v5")
export GOARM="5"
;;
"v6")
export GOARM="6"
;;
*)
export GOARM="7"
;;
esac
else
export GOARM="7"
DEBIAN_ARCH=$TARGETARCH
if [ "$TARGETARCH" = "arm" ]
then
DEBIAN_ARCH=armel
if [ "$TARGETVARIANT" = "v7" ]
then
DEBIAN_ARCH=armhf
fi
fi
if [ "$CGO_ENABLED" = "1" ]; then
case "$GOARCH" in
"amd64")
export COMPILER_ARCH="x86_64-linux-gnu"
dpkg --add-architecture $DEBIAN_ARCH
apt-get update
apt-get install -y git curl crossbuild-essential-${DEBIAN_ARCH} libc-dev:${DEBIAN_ARCH} autoconf automake libtool m4 pkg-config cmake
dpkg-architecture -a $DEBIAN_ARCH >/env
export $(cat /env)
CGO_ENABLED="1"
GOOS="$TARGETOS"
GOARCH="$TARGETARCH"
GOARM="7"
if [ "$TARGETARCH" = "arm" && ! -z "$TARGETVARIANT" ]; then
case "$TARGETVARIANT" in
"v5")
export GOARM="5"
;;
"ppc64le")
export COMPILER_ARCH="powerpc64le-linux-gnu"
;;
"s390x")
export COMPILER_ARCH="s390x-linux-gnu"
;;
"arm64")
export COMPILER_ARCH="aarch64-linux-gnu"
;;
"arm")
case "$GOARM" in
"5")
export COMPILER_ARCH="arm-linux-gnueabi"
;;
*)
export COMPILER_ARCH="arm-linux-gnueabihf"
;;
esac
"v6")
export GOARM="6"
;;
esac
fi
export CC="${COMPILER_ARCH}-gcc"
export CXX="${COMPILER_ARCH}-g++"
export PKG_CONFIG_PATH="/usr/lib/${COMPILER_ARCH}/pkgconfig/"
echo CGO_ENABLED="${CGO_ENABLED}" >>/env
echo GOOS="${GOOS}" >>/env
echo GOARCH="${GOARCH}" >>/env
echo GOARM="${GOARM}" >>/env
echo AR="${DEB_HOST_MULTIARCH}-ar" >>/env
echo CC="${DEB_HOST_MULTIARCH}-gcc" >>/env
echo CXX="${DEB_HOST_MULTIARCH}-g++" >>/env
echo PKG_CONFIG_PATH="/usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/" >>/env
if [ -z "$GOBIN" ] && [ -n "$GOPATH" ] && [ -n "$GOARCH" ] && [ -n "$GOOS" ]; then
export PATH=${GOPATH}/bin/${GOOS}_${GOARCH}:${PATH}
fi
cat /env