#!/bin/bash # Script per creare il pacchetto RPM di ComfyUI Launcher set -e # Colori per output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Funzione per stampare messaggi colorati print_message() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Verifica prerequisiti check_prerequisites() { print_message "Verifica prerequisiti per la creazione del pacchetto RPM..." # Lista dei pacchetti necessari local packages=( "rpm-build" "rpm-devel" "rpmlint" "rpmdevtools" "python3-devel" "python3-setuptools" "desktop-file-utils" "libappstream-glib" ) local missing_packages=() for package in "${packages[@]}"; do if ! rpm -q "$package" &>/dev/null; then missing_packages+=("$package") fi done if [ ${#missing_packages[@]} -gt 0 ]; then print_error "I seguenti pacchetti sono mancanti:" printf '%s\n' "${missing_packages[@]}" print_message "Installa i pacchetti mancanti con:" # Rileva la distribuzione if command -v dnf &> /dev/null; then echo "sudo dnf install ${missing_packages[*]}" elif command -v yum &> /dev/null; then echo "sudo yum install ${missing_packages[*]}" else echo "sudo install ${missing_packages[*]}" fi exit 1 fi print_success "Tutti i prerequisiti sono soddisfatti" } # Setup dell'ambiente RPM setup_rpm_environment() { print_message "Setup dell'ambiente RPM..." # Crea la struttura di directory RPM rpmdev-setuptree print_success "Ambiente RPM configurato in ~/rpmbuild/" } # Crea l'archivio sorgente create_source_archive() { print_message "Creazione dell'archivio sorgente..." local project_name="comfyui-launcher" local version="1.0.0" local archive_name="${project_name}-${version}" # Crea directory temporanea local temp_dir=$(mktemp -d) local project_dir="$temp_dir/$archive_name" # Copia i file del progetto mkdir -p "$project_dir" # File principali cp main.py "$project_dir/" cp style.css "$project_dir/" cp LICENSE "$project_dir/" cp README.md "$project_dir/" cp README_EN.md "$project_dir/" cp CHANGELOG.md "$project_dir/" cp pyproject.toml "$project_dir/" cp requirements.txt "$project_dir/" cp config.example.json "$project_dir/" # Escludi file non necessari per l'RPM # (non copiamo .git, .venv, ecc.) # Crea l'archivio tar.gz local archive_path="$HOME/rpmbuild/SOURCES/${archive_name}.tar.gz" (cd "$temp_dir" && tar -czf "$archive_path" "$archive_name") # Pulisci rm -rf "$temp_dir" print_success "Archivio sorgente creato: $archive_path" } # Copia il file spec copy_spec_file() { print_message "Copia del file spec..." cp comfyui-launcher.spec "$HOME/rpmbuild/SPECS/" print_success "File spec copiato in ~/rpmbuild/SPECS/" } # Verifica del file spec check_spec_file() { print_message "Verifica del file spec con rpmlint..." cd "$HOME/rpmbuild/SPECS" if rpmlint comfyui-launcher.spec; then print_success "File spec valido" else print_warning "Il file spec ha alcuni warning, ma procediamo comunque" fi } # Costruzione del pacchetto sorgente (SRPM) build_source_rpm() { print_message "Costruzione del pacchetto sorgente (SRPM)..." cd "$HOME/rpmbuild/SPECS" if rpmbuild -bs comfyui-launcher.spec; then print_success "SRPM creato con successo" ls -la "$HOME/rpmbuild/SRPMS/"comfyui-launcher-*.src.rpm else print_error "Errore nella creazione dell'SRPM" exit 1 fi } # Costruzione del pacchetto binario (RPM) build_binary_rpm() { print_message "Costruzione del pacchetto binario (RPM)..." cd "$HOME/rpmbuild/SPECS" if rpmbuild -bb comfyui-launcher.spec; then print_success "RPM creato con successo" ls -la "$HOME/rpmbuild/RPMS/"*/comfyui-launcher-*.rpm else print_error "Errore nella creazione dell'RPM" exit 1 fi } # Verifica del pacchetto finale verify_package() { print_message "Verifica del pacchetto finale..." local rpm_file=$(find "$HOME/rpmbuild/RPMS" -name "comfyui-launcher-*.rpm" -type f | head -1) if [ -n "$rpm_file" ]; then print_message "Verifica con rpmlint..." rpmlint "$rpm_file" || print_warning "Alcuni warning trovati, ma il pacchetto è utilizzabile" print_message "Informazioni sul pacchetto:" rpm -qip "$rpm_file" print_message "Lista dei file nel pacchetto:" rpm -qlp "$rpm_file" print_success "Pacchetto RPM verificato: $rpm_file" else print_error "Pacchetto RPM non trovato" exit 1 fi } # Funzione di installazione del pacchetto install_package() { local rpm_file=$(find "$HOME/rpmbuild/RPMS" -name "comfyui-launcher-*.rpm" -type f | head -1) if [ -n "$rpm_file" ]; then print_message "Per installare il pacchetto, esegui:" echo "sudo rpm -ivh '$rpm_file'" echo "oppure:" echo "sudo dnf install '$rpm_file'" read -p "Vuoi installare il pacchetto ora? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then if command -v dnf &> /dev/null; then sudo dnf install "$rpm_file" else sudo rpm -ivh "$rpm_file" fi print_success "Pacchetto installato con successo" fi fi } # Funzione principale main() { print_message "=== Script di creazione pacchetto RPM per ComfyUI Launcher ===" print_message "Questo script creerà un pacchetto RPM per ComfyUI Launcher" echo # Esegui tutti i passi check_prerequisites setup_rpm_environment create_source_archive copy_spec_file check_spec_file build_source_rpm build_binary_rpm verify_package echo print_success "=== Pacchetto RPM creato con successo! ===" echo # Mostra il riepilogo print_message "File creati:" echo " - SRPM: $(ls $HOME/rpmbuild/SRPMS/comfyui-launcher-*.src.rpm 2>/dev/null || echo 'Non trovato')" echo " - RPM: $(ls $HOME/rpmbuild/RPMS/*/comfyui-launcher-*.rpm 2>/dev/null || echo 'Non trovato')" echo install_package } # Esegui lo script if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then main "$@" fi