use magick command
parent
bba1dbc10b
commit
3627889b60
|
@ -7,7 +7,6 @@ RUN apt -y upgrade
|
|||
RUN apt install -y supervisor
|
||||
RUN apt install -y python3-pip
|
||||
RUN apt install -y ffmpeg
|
||||
RUN apt install -y imagemagick
|
||||
RUN apt install -y postgresql
|
||||
RUN apt install -y libpq-dev
|
||||
RUN apt install -y nano
|
||||
|
@ -45,11 +44,7 @@ RUN rm /etc/nginx/sites-available -r
|
|||
RUN rm /etc/nginx/sites-enabled/default
|
||||
RUN mkdir /etc/nginx/includes
|
||||
|
||||
# Note: production uses ImageMagick 7.1, whereas 22.04 repos have 6.9.
|
||||
# TODO: imei.sh broken: "Signature verification failed!" Workaround pending fix.
|
||||
#COPY imei.sh /opt/imei.sh
|
||||
#RUN bash /opt/imei.sh
|
||||
RUN ln -s /usr/bin/convert /usr/local/bin/magick
|
||||
RUN bash /opt/imei.sh
|
||||
|
||||
EXPOSE 80/tcp
|
||||
|
||||
|
|
|
@ -140,7 +140,7 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in
|
|||
|
||||
try:
|
||||
with Image.open(filename) as i:
|
||||
params = ["convert", filename]
|
||||
params = ["magick", filename]
|
||||
params.extend(["-coalesce", "-quality", "88"])
|
||||
if trim and len(list(Iterator(i))) == 1:
|
||||
params.append("-trim")
|
||||
|
|
|
@ -0,0 +1,958 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################
|
||||
# Title : IMEI - ImageMagick Easy Install #
|
||||
# Description : ImageMagick® for Debian/Ubuntu, #
|
||||
# including advanced delegate support. #
|
||||
# #
|
||||
# Author : Sascha Greuel <hello@1-2.dev> #
|
||||
# Date : 2022-08-31 09:01 #
|
||||
# License : ISC #
|
||||
# Version : 6.6.4 #
|
||||
# #
|
||||
# Usage : bash ./imei.sh #
|
||||
##############################################################
|
||||
|
||||
######################
|
||||
# Check requirements #
|
||||
######################
|
||||
|
||||
# Check if user is root
|
||||
[ "$(id -u)" != "0" ] && {
|
||||
echo "Error: You must be root or use sudo to run this script"
|
||||
exit 1
|
||||
}
|
||||
|
||||
command_exists() {
|
||||
command -v "$@" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# Make sure, that we are on Debian or Ubuntu
|
||||
if ! command_exists apt-get; then
|
||||
echo "This script cannot run on any other system than Debian or Ubuntu"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Checking if lsb_release is installed or install it
|
||||
if ! command_exists lsb_release; then
|
||||
apt-get update && apt-get install -qq lsb-release > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
####################
|
||||
# Script arguments #
|
||||
####################
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case "$1" in
|
||||
--force)
|
||||
FORCE="yes"
|
||||
;;
|
||||
--force-imagemagick|--force-im)
|
||||
FORCE_IMAGEMAGICK=$2
|
||||
;;
|
||||
--imagemagick-version|--im-version)
|
||||
IMAGEMAGICK_VER=$2
|
||||
;;
|
||||
--imagemagick-quantum-depth|--im-q)
|
||||
QUANTUM_DEPTH=$2
|
||||
;;
|
||||
--skip-aom)
|
||||
SKIP_AOM="yes"
|
||||
;;
|
||||
--aom-version)
|
||||
AOM_VER=$2
|
||||
;;
|
||||
--skip-libheif|--skip-heif)
|
||||
SKIP_LIBHEIF="yes"
|
||||
;;
|
||||
--libheif-version|--heif-version)
|
||||
LIBHEIF_VER=$2
|
||||
;;
|
||||
--skip-jpeg-xl|--skip-jxl)
|
||||
SKIP_JXL="yes"
|
||||
;;
|
||||
--jpeg-xl-version|--jxl-version)
|
||||
JXL_VER=$2
|
||||
;;
|
||||
--skip-dependencies|--skip-deps)
|
||||
SKIP_DEPS="yes"
|
||||
;;
|
||||
--log-file)
|
||||
LOG_FILE=$2
|
||||
;;
|
||||
--work-dir)
|
||||
WORK_DIR=$2
|
||||
;;
|
||||
--build-dir)
|
||||
BUILD_DIR=$2
|
||||
;;
|
||||
--config-dir)
|
||||
CONFIG_DIR=$2
|
||||
;;
|
||||
--ci)
|
||||
CI_BUILD="yes"
|
||||
;;
|
||||
--no-sig-verify|--dev)
|
||||
VERIFY_SIGNATURE="${CYELLOW}disabled${CEND}"
|
||||
;;
|
||||
--use-checkinstall|--checkinstall)
|
||||
CHECKINSTALL="yes"
|
||||
;;
|
||||
--no-backports)
|
||||
BACKPORTS="${CYELLOW}disabled${CEND}"
|
||||
;;
|
||||
--build-cflags)
|
||||
BUILD_CFLAGS=$2
|
||||
;;
|
||||
--build-cxxflags)
|
||||
BUILD_CXXFLAGS=$2
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
#############
|
||||
# Variables #
|
||||
#############
|
||||
|
||||
if [ -z "$WORK_DIR" ]; then
|
||||
WORK_DIR=/usr/local/src/imei
|
||||
elif [ -d "$WORK_DIR" ] && [ "$(ls -A $WORK_DIR)" ]; then
|
||||
echo -e "${CRED}Work Dir $WORK_DIR is not empty!${CEND}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_DIR" ]; then
|
||||
BUILD_DIR=/usr/local
|
||||
fi
|
||||
|
||||
if [ -z "$CONFIG_DIR" ]; then
|
||||
CONFIG_DIR="$BUILD_DIR/etc"
|
||||
fi
|
||||
|
||||
if [ -z "$LOG_FILE" ]; then
|
||||
LOG_FILE=/var/log/imei.log
|
||||
fi
|
||||
|
||||
allowedQuantumDepth=(8 16 32)
|
||||
if [[ -z "$QUANTUM_DEPTH" || ! " ${allowedQuantumDepth[*]} " =~ $QUANTUM_DEPTH ]]; then
|
||||
QUANTUM_DEPTH=16
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_CFLAGS" ]; then
|
||||
BUILD_CFLAGS="-O3 -march=native"
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_CXXFLAGS" ]; then
|
||||
BUILD_CXXFLAGS="-O3 -march=native"
|
||||
fi
|
||||
|
||||
START=$(date +%s)
|
||||
OS_DISTRO="$(lsb_release -ds)"
|
||||
OS_SHORT_CODENAME="$(lsb_release -sc)"
|
||||
OS_ARCH="$(uname -m)"
|
||||
GH_FILE_BASE="https://codeload.github.com"
|
||||
SOURCE_LIST="/etc/apt/sources.list.d/imei.list"
|
||||
LIB_DIR="/usr/local"
|
||||
CMAKE_VERSION=""
|
||||
|
||||
# Colors
|
||||
CSI='\033['
|
||||
CRED="${CSI}1;31m"
|
||||
CGREEN="${CSI}1;32m"
|
||||
CYELLOW="${CSI}1;33m"
|
||||
CBLUE="${CSI}1;36m"
|
||||
CEND="${CSI}0m"
|
||||
|
||||
####################
|
||||
# Helper functions #
|
||||
####################
|
||||
|
||||
displaytime() {
|
||||
local T=$1
|
||||
local D=$((T / 60 / 60 / 24))
|
||||
local H=$((T / 60 / 60 % 24))
|
||||
local M=$((T / 60 % 60))
|
||||
local S=$((T % 60))
|
||||
|
||||
((D > 0)) && printf '%d days ' $D
|
||||
((H > 0)) && printf '%d hours ' $H
|
||||
((M > 0)) && printf '%d minutes ' $M
|
||||
((D > 0 || H > 0 || M > 0)) && printf 'and '
|
||||
|
||||
printf '%d seconds\n' $S
|
||||
}
|
||||
|
||||
str_repeat() {
|
||||
printf -v v "%-*s" "$1" ""
|
||||
echo "${v// /$2}"
|
||||
}
|
||||
|
||||
version() {
|
||||
echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
if [ -d "$WORK_DIR" ]; then
|
||||
rm -rf "$WORK_DIR"
|
||||
fi
|
||||
|
||||
if [ -f "$SOURCE_LIST" ]; then
|
||||
rm "$SOURCE_LIST"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
getClient() {
|
||||
if command -v curl &> /dev/null; then
|
||||
CLIENT="curl"
|
||||
elif command -v wget &> /dev/null; then
|
||||
CLIENT="wget"
|
||||
elif command -v http &> /dev/null; then
|
||||
CLIENT="httpie"
|
||||
else
|
||||
echo -e "${CRED}This tool requires either curl, wget or httpie to be installed.${CEND}" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
httpGet() {
|
||||
if [[ -n "${GITHUB_TOKEN}" ]]; then
|
||||
AUTHORIZATION='{"Authorization": "Bearer '"$GITHUB_TOKEN"'}"}'
|
||||
fi
|
||||
|
||||
case "$CLIENT" in
|
||||
curl) curl -A curl -s -H "$AUTHORIZATION" "$@" ;;
|
||||
wget) wget -qO- --header="$AUTHORIZATION" "$@" ;;
|
||||
httpie) http -b GET "$@" "$AUTHORIZATION" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
getImeiInfo() {
|
||||
local IMEI_INFO
|
||||
|
||||
if ! command_exists jq; then
|
||||
apt-get update && apt-get install -qq jq > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
IMEI_INFO=$(httpGet "https://api.github.com/repos/SoftCreatR/imei/tags")
|
||||
|
||||
IMEI_LATEST_VERSION_COMMIT=$(echo "$IMEI_INFO" | jq -r '.[0].commit.sha')
|
||||
IMEI_LATEST_VERSION_NAME=$(echo "$IMEI_INFO" | jq -r '.[0].name')
|
||||
}
|
||||
|
||||
########
|
||||
# Init #
|
||||
########
|
||||
|
||||
# Display execution time and clean up on exit
|
||||
trap cleanup 0 1 2 3 6 15
|
||||
|
||||
# Clean up on execution
|
||||
cleanup
|
||||
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
rm "$LOG_FILE"
|
||||
fi
|
||||
|
||||
# Create working directory
|
||||
[ ! -d "$WORK_DIR" ] && mkdir -p "$WORK_DIR"
|
||||
|
||||
# Check if working directory was created
|
||||
if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then
|
||||
echo -e "${CRED}Could not create temp directory $WORK_DIR${CEND}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$CLIENT" ]; then
|
||||
getClient || exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$IMEI_LATEST_VERSION_NAME" ]; then
|
||||
getImeiInfo || exit 1
|
||||
fi
|
||||
|
||||
###################
|
||||
# Integrity check #
|
||||
###################
|
||||
|
||||
if [ -z "$CI_BUILD" ] && [ -z "$VERIFY_SIGNATURE" ] && [ -f "$0" ]; then
|
||||
SIGNATURE_FILE="/tmp/imei.sh.sig"
|
||||
PUBLIC_KEY_FILE="/tmp/imei.sh.pem"
|
||||
|
||||
sigCleanup() {
|
||||
if [ -f "$SIGNATURE_FILE" ]; then
|
||||
rm "$SIGNATURE_FILE"
|
||||
fi
|
||||
|
||||
if [ -f "$PUBLIC_KEY_FILE" ]; then
|
||||
rm "$PUBLIC_KEY_FILE"
|
||||
fi
|
||||
}
|
||||
|
||||
# Install OpenSSL, if it's not already installed
|
||||
if ! command_exists openssl; then
|
||||
apt-get update && apt-get install -qq openssl > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
if {
|
||||
httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/$IMEI_LATEST_VERSION_COMMIT/imei.sh.sig" > "$SIGNATURE_FILE"
|
||||
|
||||
if [ ! -f "$PUBLIC_KEY_FILE" ]; then
|
||||
httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/$IMEI_LATEST_VERSION_COMMIT/imei.sh.pem" > "$PUBLIC_KEY_FILE"
|
||||
fi
|
||||
|
||||
openssl dgst -sha512 -verify "$PUBLIC_KEY_FILE" -signature "$SIGNATURE_FILE" "$0"
|
||||
} >> "$LOG_FILE" 2>&1; then
|
||||
sigCleanup
|
||||
|
||||
echo -ne "\ec"
|
||||
else
|
||||
sigCleanup
|
||||
|
||||
echo -ne "\ec"
|
||||
|
||||
echo -e " ${CRED}Signature verification failed!${CEND}"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
##################
|
||||
# Version checks #
|
||||
##################
|
||||
|
||||
if [ -f "$0" ]; then
|
||||
INSTALLER_VER=$(grep -oP 'Version\s+:\s+\K([\d\.]+)' "$0")
|
||||
INSTALLER_LATEST_VER="$IMEI_LATEST_VERSION_NAME"
|
||||
fi
|
||||
|
||||
if [ -z "$IMAGEMAGICK_VER" ]; then
|
||||
IMAGEMAGICK_VER=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/imagemagick.version")
|
||||
IMAGEMAGICK_HASH=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/imagemagick.hash")
|
||||
fi
|
||||
|
||||
if [ -z "$AOM_VER" ]; then
|
||||
AOM_VER=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/aom.version")
|
||||
AOM_HASH=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/aom.hash")
|
||||
fi
|
||||
|
||||
if [ -z "$LIBHEIF_VER" ]; then
|
||||
LIBHEIF_VER=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/libheif.version")
|
||||
LIBHEIF_HASH=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/libheif.hash")
|
||||
fi
|
||||
|
||||
if [ -z "$JXL_VER" ]; then
|
||||
JXL_VER=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/libjxl.version")
|
||||
JXL_HASH=$(httpGet "https://raw.githubusercontent.com/SoftCreatR/imei/main/versions/libjxl.hash")
|
||||
fi
|
||||
|
||||
# Make sure, that a version number for ImageMagick has been set
|
||||
if [ -z "$IMAGEMAGICK_VER" ]; then
|
||||
echo -e "${CRED}Unable to determine version number for ImageMagick${CEND}"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure, that a version number for aom has been set
|
||||
if [ -z "$AOM_VER" ]; then
|
||||
echo -e "${CRED}Unable to determine version number for aom${CEND}"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure, that a version number for libheif has been set
|
||||
if [ -z "$LIBHEIF_VER" ]; then
|
||||
echo -e "${CRED}Unable to determine version number for libheif${CEND}"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure, that a version number for JPEG XL has been set
|
||||
if [ -z "$JXL_VER" ]; then
|
||||
echo -e "${CRED}Unable to determine version number for JPEG XL${CEND}"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if command_exists magick; then
|
||||
INSTALLED_IMAGEMAGICK_VER=$(magick -version | grep -oP 'Version: ImageMagick \K([\d\.\-]+)')
|
||||
fi
|
||||
|
||||
if [ -L "$LIB_DIR/lib/libaom.so" ]; then
|
||||
INSTALLED_AOM_VER=$(readlink -f "$LIB_DIR/lib/libaom.so" | xargs basename | grep -oP 'libaom.so.\K([\d\.]+)')
|
||||
fi
|
||||
|
||||
if [ -L "$LIB_DIR/lib/libheif.so" ]; then
|
||||
INSTALLED_LIBHEIF_VER=$(readlink -f "$LIB_DIR/lib/libheif.so" | xargs basename | grep -oP 'libheif.so.\K([\d\.]+)')
|
||||
fi
|
||||
|
||||
if [ -L "$LIB_DIR/lib/libjxl.so" ]; then
|
||||
INSTALLED_JXL_VER=$(readlink -f "$LIB_DIR/lib/libjxl.so" | xargs basename | grep -oP 'libjxl.so.\K([\d\.]+)')
|
||||
fi
|
||||
|
||||
#######################
|
||||
# Installer functions #
|
||||
#######################
|
||||
|
||||
# Speed up the compilation process
|
||||
NUM_CORES=$(nproc || echo 1)
|
||||
export CC=gcc CXX=g++ MAKEFLAGS="-j$((NUM_CORES + 1)) -l${NUM_CORES}"
|
||||
|
||||
# Build dependencies
|
||||
install_deps() {
|
||||
echo -ne ' Installing dependencies [..]\r'
|
||||
|
||||
if [ -n "$SKIP_DEPS" ]; then
|
||||
echo -ne " Installing dependencies [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
if {
|
||||
if [ -f "$SOURCE_LIST" ]; then
|
||||
rm "$SOURCE_LIST"
|
||||
fi
|
||||
|
||||
# Allow installation of source files
|
||||
{
|
||||
if [[ "${OS_DISTRO,,}" == *"ubuntu"* ]]; then
|
||||
echo 'deb http://archive.ubuntu.com/ubuntu '"$OS_SHORT_CODENAME"' main restricted'
|
||||
echo 'deb-src http://archive.ubuntu.com/ubuntu '"$OS_SHORT_CODENAME"' main restricted universe multiverse'
|
||||
|
||||
if [ -z "$BACKPORTS" ]; then
|
||||
echo 'deb http://archive.ubuntu.com/ubuntu '"$OS_SHORT_CODENAME"'-backports main restricted universe multiverse'
|
||||
echo 'deb-src http://archive.ubuntu.com/ubuntu '"$OS_SHORT_CODENAME"'-backports main restricted universe multiverse'
|
||||
fi
|
||||
elif [[ "${OS_DISTRO,,}" == *"debian"* ]]; then
|
||||
echo 'deb http://deb.debian.org/debian '"$OS_SHORT_CODENAME"' main contrib non-free'
|
||||
echo 'deb-src http://deb.debian.org/debian '"$OS_SHORT_CODENAME"' main contrib non-free'
|
||||
|
||||
if [ -z "$BACKPORTS" ]; then
|
||||
echo 'deb http://deb.debian.org/debian '"$OS_SHORT_CODENAME"'-backports main contrib non-free'
|
||||
echo 'deb-src http://deb.debian.org/debian '"$OS_SHORT_CODENAME"'-backports main contrib non-free'
|
||||
fi
|
||||
elif [[ "${OS_DISTRO,,}" == *"raspbian"* ]]; then
|
||||
echo 'deb http://archive.raspbian.org/raspbian '"$OS_SHORT_CODENAME"' main contrib non-free'
|
||||
echo 'deb-src http://archive.raspbian.org/raspbian '"$OS_SHORT_CODENAME"' main contrib non-free'
|
||||
|
||||
if [ -z "$BACKPORTS" ]; then
|
||||
echo 'deb http://archive.raspbian.org/raspbian '"$OS_SHORT_CODENAME"'-backports main contrib non-free'
|
||||
echo 'deb-src http://archive.raspbian.org/raspbian '"$OS_SHORT_CODENAME"'-backports main contrib non-free'
|
||||
fi
|
||||
else
|
||||
SKIP_BUILD_DEP="yes"
|
||||
fi
|
||||
} >> "$SOURCE_LIST"
|
||||
|
||||
# Update package list and satisfy build dependencies for imagemagick
|
||||
if [ -n "$SKIP_BUILD_DEP" ]; then
|
||||
apt-get update -qq &&
|
||||
apt-get build-dep -qq imagemagick -y
|
||||
fi
|
||||
|
||||
# Install other build dependencies
|
||||
PKG_LIST=(git curl make cmake automake libtool yasm g++ pkg-config perl libde265-dev libx265-dev libltdl-dev libopenjp2-7-dev liblcms2-dev libbrotli-dev libzip-dev libbz2-dev liblqr-1-0-dev libzstd-dev libgif-dev libjpeg-dev libopenexr-dev libpng-dev libwebp-dev librsvg2-dev libwmf-dev libxml2-dev libtiff-dev libraw-dev ghostscript gsfonts ffmpeg libpango1.0-dev libdjvulibre-dev libfftw3-dev libgs-dev libgraphviz-dev)
|
||||
|
||||
if [[ "${OS_SHORT_CODENAME,,}" != *"stretch"* && "${OS_SHORT_CODENAME,,}" != *"xenial"* ]]; then
|
||||
PKG_LIST+=(libraqm-dev libraqm0)
|
||||
fi
|
||||
|
||||
if [ -n "$CHECKINSTALL" ]; then
|
||||
PKG_LIST+=(checkinstall)
|
||||
fi
|
||||
|
||||
apt-get install -y "${PKG_LIST[@]}"
|
||||
|
||||
CMAKE_VERSION=$(cmake --version | head -n1 | cut -d" " -f3)
|
||||
} >> "$LOG_FILE" 2>&1; then
|
||||
echo -ne " Installing dependencies [${CGREEN}OK${CEND}]\\r"
|
||||
echo ""
|
||||
else
|
||||
echo -ne " Installing dependencies [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Build aom
|
||||
install_aom() {
|
||||
cd "$WORK_DIR" || exit 1
|
||||
|
||||
if {
|
||||
echo -ne ' Building aom [..]\r'
|
||||
|
||||
if [ "$(version "$CMAKE_VERSION")" -lt "$(version 3.6)" ]; then
|
||||
echo -ne " Building aom [${CYELLOW}SKIPPED (CMAKE version not sufficient)${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -z "$SKIP_AOM" ]; then
|
||||
if [ -z "$FORCE" ] && [ -n "$INSTALLED_AOM_VER" ] && [ "$(version "$INSTALLED_AOM_VER")" -ge "$(version "$AOM_VER")" ]; then
|
||||
echo -ne " Building aom [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
else
|
||||
echo -ne " Building aom [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
{
|
||||
if [ -n "$AOM_VER" ]; then
|
||||
httpGet "$GH_FILE_BASE/jbeich/aom/tar.gz/v$AOM_VER" > "aom-$AOM_VER.tar.gz"
|
||||
|
||||
if [ -n "$AOM_HASH" ]; then
|
||||
if [ "$(sha1sum "aom-$AOM_VER.tar.gz" | cut -b-40)" != "$AOM_HASH" ]; then
|
||||
echo -ne " Building aom [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
# see https://github.com/SoftCreatR/imei/issues/9
|
||||
CMAKE_FLAGS=(-DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_TESTS=0 -DENABLE_CCACHE=1)
|
||||
|
||||
if [[ "${OS_DISTRO,,}" == *"raspbian"* ]]; then
|
||||
CMAKE_FLAGS+=(-DCMAKE_C_FLAGS="-mfloat-abi=hard -march=armv7-a -marm -mfpu=neon")
|
||||
fi
|
||||
|
||||
tar -xf "aom-$AOM_VER.tar.gz" &&
|
||||
mkdir "$WORK_DIR/build_aom" &&
|
||||
cd "$WORK_DIR/build_aom" &&
|
||||
cmake "../aom-$AOM_VER/" "${CMAKE_FLAGS[@]}" &&
|
||||
make
|
||||
|
||||
if [ -n "$CHECKINSTALL" ]; then
|
||||
echo "AV1 Video Codec Library (IMEI v$INSTALLER_VER)" >> description-pak &&
|
||||
checkinstall \
|
||||
--default \
|
||||
--nodoc \
|
||||
--pkgname="imei-libaom" \
|
||||
--pkglicense="BSD-2-Clause" \
|
||||
--pkgversion="$AOM_VER" \
|
||||
--pkgrelease="imei$INSTALLER_VER" \
|
||||
--pakdir="/usr/local/src" \
|
||||
--requires="git,cmake \(\>= 3.6\),perl,yasm"
|
||||
else
|
||||
make install
|
||||
fi
|
||||
|
||||
ldconfig
|
||||
fi
|
||||
} >> "$LOG_FILE" 2>&1
|
||||
}; then
|
||||
UPDATE_LIBHEIF="yes"
|
||||
|
||||
echo -ne " Building aom [${CGREEN}OK${CEND}]\\r"
|
||||
echo ""
|
||||
else
|
||||
echo -ne " Building aom [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Build libheif
|
||||
install_libheif() {
|
||||
cd "$WORK_DIR" || exit 1
|
||||
|
||||
if {
|
||||
echo -ne ' Building libheif [..]\r'
|
||||
|
||||
if [ -z "$SKIP_LIBHEIF" ]; then
|
||||
if [ -z "$FORCE" ] && [ -z "$UPDATE_LIBHEIF" ] && [ -n "$INSTALLED_LIBHEIF_VER" ] && [ "$(version "$INSTALLED_LIBHEIF_VER")" -ge "$(version "$LIBHEIF_VER")" ]; then
|
||||
echo -ne " Building libheif [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
else
|
||||
echo -ne " Building libheif [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
if [ ! -L "$LIB_DIR/lib/libaom.so" ]; then
|
||||
echo -ne " Building libheif [${CYELLOW}SKIPPED (aom is required but not installed)${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
{
|
||||
if [ -n "$LIBHEIF_VER" ]; then
|
||||
httpGet "$GH_FILE_BASE/strukturag/libheif/tar.gz/v$LIBHEIF_VER" > "libheif-$LIBHEIF_VER.tar.gz"
|
||||
|
||||
if [ -n "$LIBHEIF_HASH" ]; then
|
||||
if [ "$(sha1sum "libheif-$LIBHEIF_VER.tar.gz" | cut -b-40)" != "$LIBHEIF_HASH" ]; then
|
||||
echo -e " Building libheif [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
tar -xf "libheif-$LIBHEIF_VER.tar.gz" &&
|
||||
cd "libheif-$LIBHEIF_VER" &&
|
||||
./autogen.sh &&
|
||||
./configure &&
|
||||
make
|
||||
|
||||
if [ -n "$CHECKINSTALL" ]; then
|
||||
echo "ISO/IEC 23008-12:2017 HEIF file format decoder (IMEI v$INSTALLER_VER)" >> description-pak &&
|
||||
checkinstall \
|
||||
--default \
|
||||
--nodoc \
|
||||
--pkgname="imei-libheif" \
|
||||
--pkglicense="GPL-2.0-or-later" \
|
||||
--pkgversion="$LIBHEIF_VER" \
|
||||
--pkgrelease="imei$INSTALLER_VER" \
|
||||
--pakdir="/usr/local/src" \
|
||||
--requires="automake,make,pkg-config,libde265-dev,libx265-dev,libjpeg-dev,imei-libaom"
|
||||
else
|
||||
make install
|
||||
fi
|
||||
|
||||
ldconfig
|
||||
fi
|
||||
} >> "$LOG_FILE" 2>&1
|
||||
}; then
|
||||
UPDATE_IMAGEMAGICK="yes"
|
||||
|
||||
echo -ne " Building libheif [${CGREEN}OK${CEND}]\\r"
|
||||
echo ""
|
||||
else
|
||||
echo -e " Building libheif [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Build JPEG XL
|
||||
install_jxl() {
|
||||
cd "$WORK_DIR" || exit 1
|
||||
|
||||
if {
|
||||
echo -ne ' Building jpegxl [..]\r'
|
||||
|
||||
if [ "$(version "$CMAKE_VERSION")" -lt "$(version 3.10)" ]; then
|
||||
echo -ne " Building jpegxl [${CYELLOW}SKIPPED (CMAKE version not sufficient)${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -z "$SKIP_JXL" ]; then
|
||||
if [ -z "$FORCE" ] && [ -z "$UPDATE_LIBHEIF" ] && [ -n "$INSTALLED_JXL_VER" ] && [ "$(version "$INSTALLED_JXL_VER")" -ge "$(version "$JXL_VER")" ]; then
|
||||
echo -ne " Building jpegxl [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
else
|
||||
echo -ne " Building jpegxl [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
{
|
||||
if [ -n "$JXL_VER" ]; then
|
||||
httpGet "$GH_FILE_BASE/libjxl/libjxl/tar.gz/v$JXL_VER" > "libjxl-$JXL_VER.tar.gz"
|
||||
|
||||
if [ -n "$JXL_HASH" ]; then
|
||||
if [ "$(sha1sum "libjxl-$JXL_VER.tar.gz" | cut -b-40)" != "$JXL_HASH" ]; then
|
||||
echo -e " Building jpegxl [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
tar -xf "libjxl-$JXL_VER.tar.gz" &&
|
||||
cd "libjxl-$JXL_VER" &&
|
||||
./deps.sh &&
|
||||
mkdir "build" &&
|
||||
cd "build" &&
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF ..
|
||||
make
|
||||
|
||||
if [ -n "$CHECKINSTALL" ]; then
|
||||
echo "JPEG XL image format reference implementation (IMEI v$INSTALLER_VER)" >> description-pak &&
|
||||
checkinstall \
|
||||
--default \
|
||||
--nodoc \
|
||||
--pkgname="imei-libjxl" \
|
||||
--pkglicense="Apache-2.0" \
|
||||
--pkgversion="$JXL_VER" \
|
||||
--pkgrelease="imei$INSTALLER_VER" \
|
||||
--pakdir="/usr/local/src" \
|
||||
--requires="cmake \(\>= 3.10\),pkg-config,libbrotli-dev,libgif-dev,libjpeg-dev,libopenexr-dev,libpng-dev,libwebp-dev"
|
||||
else
|
||||
make install
|
||||
fi
|
||||
|
||||
ldconfig
|
||||
fi
|
||||
} >> "$LOG_FILE" 2>&1
|
||||
}; then
|
||||
UPDATE_IMAGEMAGICK="yes"
|
||||
|
||||
echo -ne " Building jpegxl [${CGREEN}OK${CEND}]\\r"
|
||||
echo ""
|
||||
else
|
||||
echo -e " Building jpegxl [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Build ImageMagick
|
||||
install_imagemagick() {
|
||||
cd "$WORK_DIR" || exit 1
|
||||
|
||||
if {
|
||||
if [ "$QUANTUM_DEPTH" -eq 8 ]; then
|
||||
echo -ne ' Building ImageMagick (Q'"$QUANTUM_DEPTH"') [..]\r'
|
||||
else
|
||||
echo -ne ' Building ImageMagick (Q'"$QUANTUM_DEPTH"') [..]\r'
|
||||
fi
|
||||
|
||||
if [ -z "$FORCE" ] && [ -z "$FORCE_IMAGEMAGICK" ] && [ -z "$UPDATE_IMAGEMAGICK" ] && [ -n "$INSTALLED_IMAGEMAGICK_VER" ] && [ "$(version "${INSTALLED_IMAGEMAGICK_VER//-/}")" -ge "$(version "${IMAGEMAGICK_VER//-/}")" ]; then
|
||||
if [ "$QUANTUM_DEPTH" -eq 8 ]; then
|
||||
echo -ne " Building ImageMagick (Q$QUANTUM_DEPTH) [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
else
|
||||
echo -ne " Building ImageMagick (Q$QUANTUM_DEPTH) [${CYELLOW}SKIPPED${CEND}]\\r"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
return
|
||||
fi
|
||||
|
||||
{
|
||||
if [ -n "$IMAGEMAGICK_VER" ]; then
|
||||
DIR_SUFFIX=""
|
||||
|
||||
if [ "$(echo "$IMAGEMAGICK_VER" | cut -b-1)" -eq 6 ]; then
|
||||
DIR_SUFFIX="6"
|
||||
|
||||
httpGet "$GH_FILE_BASE/ImageMagick/ImageMagick6/tar.gz/$IMAGEMAGICK_VER" > "ImageMagick-$IMAGEMAGICK_VER.tar.gz"
|
||||
else
|
||||
httpGet "$GH_FILE_BASE/ImageMagick/ImageMagick/tar.gz/$IMAGEMAGICK_VER" > "ImageMagick-$IMAGEMAGICK_VER.tar.gz"
|
||||
fi
|
||||
|
||||
if [ -n "$IMAGEMAGICK_HASH" ]; then
|
||||
if [ "$(sha1sum "ImageMagick-$IMAGEMAGICK_VER.tar.gz" | cut -b-40)" != "$IMAGEMAGICK_HASH" ]; then
|
||||
if [ "$QUANTUM_DEPTH" -eq 8 ]; then
|
||||
echo -e " Building ImageMagick (Q$QUANTUM_DEPTH) [${CRED}FAILURE${CEND}]\\r"
|
||||
else
|
||||
echo -e " Building ImageMagick (Q$QUANTUM_DEPTH) [${CRED}FAILURE${CEND}]\\r"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
tar -xf "ImageMagick-$IMAGEMAGICK_VER.tar.gz" &&
|
||||
cd "ImageMagick$DIR_SUFFIX-$IMAGEMAGICK_VER" &&
|
||||
./configure --prefix="$BUILD_DIR" --sysconfdir="$CONFIG_DIR" \
|
||||
CFLAGS="$BUILD_CFLAGS" \
|
||||
CXXFLAGS="$BUILD_CXXFLAGS" \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--enable-openmp \
|
||||
--enable-cipher \
|
||||
--enable-hdri \
|
||||
--enable-docs \
|
||||
--disable-opencl \
|
||||
--with-threads \
|
||||
--with-modules \
|
||||
--with-quantum-depth="$QUANTUM_DEPTH" \
|
||||
--with-magick-plus-plus \
|
||||
--with-perl \
|
||||
--without-jemalloc \
|
||||
--without-tcmalloc \
|
||||
--without-umem \
|
||||
--without-autotrace \
|
||||
--with-bzlib \
|
||||
--with-x \
|
||||
--with-zlib \
|
||||
--with-zstd \
|
||||
--without-dps \
|
||||
--with-fftw \
|
||||
--without-flif \
|
||||
--without-fpx \
|
||||
--with-djvu \
|
||||
--with-fontconfig \
|
||||
--with-freetype \
|
||||
--with-raqm \
|
||||
--with-gslib \
|
||||
--with-gvc \
|
||||
--with-heic \
|
||||
--with-jbig \
|
||||
--with-jpeg \
|
||||
--with-jxl=yes \
|
||||
--with-lcms \
|
||||
--with-openjp2 \
|
||||
--with-lqr \
|
||||
--with-lzma \
|
||||
--with-openexr \
|
||||
--with-pango \
|
||||
--with-png \
|
||||
--with-raw \
|
||||
--with-rsvg \
|
||||
--with-tiff \
|
||||
--with-webp \
|
||||
--with-wmf \
|
||||
--with-xml \
|
||||
--with-dejavu-font-dir='/usr/share/fonts/truetype/ttf-dejavu' \
|
||||
--with-gs-font-dir='/usr/share/fonts/type1/gsfonts' \
|
||||
--with-urw-base35-font-dir='/usr/share/fonts/type1/urw-base35' \
|
||||
--with-fontpath='/usr/share/fonts/type1' \
|
||||
PSDelegate='/usr/bin/gs' &&
|
||||
make
|
||||
|
||||
if [ -n "$CHECKINSTALL" ]; then
|
||||
echo "image manipulation programs (IMEI v$INSTALLER_VER)" >> description-pak &&
|
||||
checkinstall \
|
||||
--default \
|
||||
--nodoc \
|
||||
--pkgname=imei-imagemagick \
|
||||
--pkglicense="Apache-2.0" \
|
||||
--pkgversion="$IMAGEMAGICK_VER" \
|
||||
--pkgrelease="imei$INSTALLER_VER" \
|
||||
--pakdir="/usr/local/src" \
|
||||
--conflicts="imagemagick" \
|
||||
--requires="pkg-config"
|
||||
else
|
||||
make install
|
||||
fi
|
||||
|
||||
ldconfig
|
||||
fi
|
||||
} >> "$LOG_FILE" 2>&1
|
||||
}; then
|
||||
if [ "$QUANTUM_DEPTH" -eq 8 ]; then
|
||||
echo -ne " Building ImageMagick (Q$QUANTUM_DEPTH) [${CGREEN}OK${CEND}]\\r"
|
||||
else
|
||||
echo -ne " Building ImageMagick (Q$QUANTUM_DEPTH) [${CGREEN}OK${CEND}]\\r"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
else
|
||||
if [ "$QUANTUM_DEPTH" -eq 8 ]; then
|
||||
echo -e " Building ImageMagick (Q$QUANTUM_DEPTH) [${CRED}FAILURE${CEND}]\\r"
|
||||
else
|
||||
echo -e " Building ImageMagick (Q$QUANTUM_DEPTH) [${CRED}FAILURE${CEND}]\\r"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
finish_installation() {
|
||||
echo -ne ' Verifying installation [..]\r'
|
||||
|
||||
# Check if ImageMagick version matches
|
||||
{
|
||||
VERIFY_INSTALLATION=$("$BUILD_DIR/bin/identify" -version | grep -oP "$IMAGEMAGICK_VER")
|
||||
} >> "$LOG_FILE" 2>&1
|
||||
|
||||
if [ -n "$VERIFY_INSTALLATION" ]; then
|
||||
echo -ne " Verifying installation [${CGREEN}OK${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CGREEN}Process has been finished successfully after $(displaytime $(($(date +%s) - START)))!${CEND}"
|
||||
echo ""
|
||||
else
|
||||
echo -ne " Verifying installation [${CRED}FAILURE${CEND}]\\r"
|
||||
echo ""
|
||||
echo -e " ${CBLUE}Please check $LOG_FILE for details.${CEND}"
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
######################
|
||||
# Install everything #
|
||||
######################
|
||||
|
||||
echo -ne "\ec"
|
||||
|
||||
WELCOME_TXT="Welcome to IMEI - ImageMagick Easy Install ${INSTALLER_VER}"
|
||||
WELCOME_LEN=${#WELCOME_TXT}
|
||||
|
||||
echo ""
|
||||
echo " $(str_repeat "$WELCOME_LEN" "#")"
|
||||
echo " $WELCOME_TXT"
|
||||
echo " $(str_repeat "$WELCOME_LEN" "#")"
|
||||
echo ""
|
||||
|
||||
if [ -z "$CI_BUILD" ] && [ -n "$INSTALLER_VER" ] && [ "$(version "$INSTALLER_VER")" -lt "$(version "$INSTALLER_LATEST_VER")" ]; then
|
||||
echo -e " ${CYELLOW}A newer installer version ($INSTALLER_LATEST_VER) is available!${CEND}"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo " Detected OS : $OS_DISTRO"
|
||||
echo " Detected Arch : $OS_ARCH"
|
||||
echo " Detected Cores : $NUM_CORES"
|
||||
echo ""
|
||||
echo " Used web client : $CLIENT"
|
||||
echo ""
|
||||
echo " Work Dir : $WORK_DIR"
|
||||
echo " Build Dir : $BUILD_DIR"
|
||||
echo " Config Dir : $CONFIG_DIR"
|
||||
echo " Log File : $LOG_FILE"
|
||||
echo ""
|
||||
echo " Force Build All : ${FORCE:-"no"}"
|
||||
echo " Force Build IM : ${FORCE_IMAGEMAGICK:-"no"}"
|
||||
echo " Checkinstall : ${CHECKINSTALL:-"no"}"
|
||||
echo " CI Build : ${CI_BUILD:-"no"}"
|
||||
echo " Signature Check : ${VERIFY_SIGNATURE:-"yes"}"
|
||||
echo ""
|
||||
|
||||
echo " #####################"
|
||||
echo " Installation Process"
|
||||
echo " #####################"
|
||||
echo ""
|
||||
|
||||
# Run installer functions
|
||||
install_deps
|
||||
install_aom
|
||||
install_libheif
|
||||
install_jxl
|
||||
install_imagemagick
|
||||
finish_installation
|
||||
|
||||
exit 0
|
|
@ -1,6 +1,6 @@
|
|||
apt -y update
|
||||
apt -y upgrade
|
||||
apt -y install git redis-server python3-pip ffmpeg tmux nginx snapd ufw gpg-agent htop nano exiv2 imagemagick
|
||||
apt -y install git redis-server python3-pip ffmpeg tmux nginx snapd ufw gpg-agent htop nano exiv2
|
||||
|
||||
git config --global credential.helper store
|
||||
cd /rDrama
|
||||
|
|
Loading…
Reference in New Issue