diff --git a/Dockerfile b/Dockerfile index f973d88e3..a17c521de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,10 +37,6 @@ RUN rm /etc/nginx/sites-available -r RUN rm /etc/nginx/sites-enabled/default RUN mkdir /etc/nginx/includes -RUN apt install -y wget -COPY imei.sh /opt/imei.sh -RUN bash /opt/imei.sh - EXPOSE 80/tcp CMD [ "/usr/bin/supervisord", "-c", "/rDrama/supervisord.conf" ] diff --git a/files/helpers/media.py b/files/helpers/media.py index 09c3fb8e3..f393e8eb9 100644 --- a/files/helpers/media.py +++ b/files/helpers/media.py @@ -195,7 +195,7 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in try: with Image.open(filename) as i: oldformat = i.format - params = ["magick"] + params = ["./magick"] if resize == 99: params.append(f"{filename}[0]") else: params.append(filename) params.extend(["-coalesce", "-quality", "88", "-strip", "-auto-orient"]) diff --git a/imei.sh b/imei.sh deleted file mode 100644 index 661f0e1c6..000000000 --- a/imei.sh +++ /dev/null @@ -1,958 +0,0 @@ -#!/usr/bin/env bash - -############################################################## -# Title : IMEI - ImageMagick Easy Install # -# Description : ImageMagick® for Debian/Ubuntu, # -# including advanced delegate support. # -# # -# Author : Sascha Greuel # -# 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 diff --git a/ubuntu_setup.sh b/ubuntu_setup.sh index ea07b929a..ccc3dbd0b 100644 --- a/ubuntu_setup.sh +++ b/ubuntu_setup.sh @@ -77,5 +77,3 @@ echo "y" | ufw enable curl https://rclone.org/install.sh | bash echo "psql -U postgres" > /p echo "cd /rDrama && git pull" > /g - -. imei.sh