ART déménage

Encore une modification du script build-art… La vérification d’une nouvelle version sur la base du checksum SHA-256 de l’archive ne fonctionne pas, car les mises à jour ne remplacent pas les anciennes versions, mais sont rajoutées en plus des anciennes !

Finalement, le script est modifié pour qu’il détecte le numéro de version. S’il change, la compilation s’exécute. De plus, les dossiers créés lors de la compilation sont supprimés à la fin de celle-ci, afin de nettoyer un peu !

#!/usr/bin/env bash
# Adapté pour le dépôt compressé de ART
# Version 2024-12-20
# Ce script télécharge et compile automatiquement la dernière version stable d'ART.

# Nom du programme
prog="art"

# Nom de l'exécutable compilé
exe="ART"

# Sous-dossier relatif au chemin d'installation de l'exécutable
exeRelativePath=""

# URL de base pour les fichiers compressés des versions
repoBase="https://github.com/artpixls/ART/archive/refs/tags"

# Dossier de téléchargement et de compilation
sourceDir="$HOME/programs/code-${prog}"
buildDir="$sourceDir/build"
installDir="$HOME/programs/${prog}"
archiveVersionFile="$HOME/${prog}_version.txt"

# Fonction pour afficher les messages
echo_info() {
  echo -e "\033[1;32m$1\033[0m"
}

# Récupérer la dernière version stable disponible
echo_info "Récupération de la dernière version stable..."
latestVersion=$(wget -qO- "https://github.com/artpixls/ART/releases" |
                grep '/artpixls/ART/releases/tag/' |
                grep -v 'nightly' |
                head -n 1 |
                sed -E 's|.*tag/([^"\>]+).*|\1|')

if [[ -z "$latestVersion" ]]; then
  echo_info "Impossible de déterminer la dernière version stable."
  exit 1
fi

repo="$repoBase/$latestVersion.tar.gz"

# Vérification de la version actuelle
echo_info "Vérification des mises à jour de la version..."
previousVersion=$(cat "$archiveVersionFile" 2>/dev/null || echo "")

if [[ "$latestVersion" == "$previousVersion" ]]; then
  echo_info "Aucune mise à jour détectée. Version actuelle : $latestVersion."
  exit 0
else
  echo "$latestVersion" > "$archiveVersionFile"
  echo_info "Nouvelle version détectée : $latestVersion. Téléchargement et recompilation nécessaires."
fi

# Vérifier et créer les dossiers nécessaires
if [[ -d "$sourceDir" ]]; then
  echo_info "Suppression de l'ancien dossier source..."
  rm -rf "$sourceDir"
fi
mkdir -p "$sourceDir" "$buildDir" "$installDir"

# Télécharger et extraire les sources
echo_info "Téléchargement de l'archive source..."
wget "$repo" -O "$HOME/${prog}.tar.gz" || exit 1
echo_info "Extraction des fichiers..."
tar -xzf "$HOME/${prog}.tar.gz" -C "$sourceDir" --strip-components=1 || exit 1
rm "$HOME/${prog}.tar.gz"

# Détecter le nombre de cœurs CPU
cpuCount="$(nproc --all)"
if [[ ! ( $cpuCount -ge 1 && $cpuCount -le 64 ) ]]; then
  cpuCount=1
fi

# Compiler le programme
echo_info "Configuration de la compilation avec CMake..."
cmake \
    -DCMAKE_BUILD_TYPE="Release" \
    -DPROC_TARGET_NUMBER="2" \
    -DBUILD_BUNDLE="ON" \
    -DBUNDLE_BASE_INSTALL_DIR="$installDir" \
    -DOPTION_OMP="ON" \
    -DWITH_LTO="OFF" \
    -DWITH_PROF="OFF" \
    -DWITH_SAN="OFF" \
    -DWITH_SYSTEM_KLT="OFF" \
    -DWITH_BENCHMARK="OFF" \
    -DENABLE_LIBRAW="ON" \
    -DENABLE_OCIO="ON" \
    -DENABLE_CTL="ON" \
    "$sourceDir" || exit 1

make --jobs="$cpuCount" install || exit 1

# Supprimer les dossiers indésirables dans le répertoire personnel
echo_info "Nettoyage des dossiers CMakeFiles, rtgui, rtengine et rtdata..."
rm -rf "$HOME/CMakeFiles" "$HOME/rtgui" "$HOME/rtengine" "$HOME/rtdata"

# Finalisation
echo_info "Compilation terminée. Pour exécuter ${prog}, utilisez :"
echo "$installDir/${exePath}"

3 « J'aime »