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
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
|
|
|