You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

253 lines
6.7 KiB

#!/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 <package-manager> 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