📚 Improved 'backend/setup.sh' for better code organization & readability

This commit is contained in:
Till Tomczak 2025-06-03 14:37:41 +02:00
parent 7c30ca2188
commit 5be81a5a83

View File

@ -952,6 +952,7 @@ install_python_packages() {
return 0 return 0
else else
warning "⚠️ Direkte Installation fehlgeschlagen oder Timeout - verwende minimale Installation" warning "⚠️ Direkte Installation fehlgeschlagen oder Timeout - verwende minimale Installation"
debug "requirements.txt Installation nach 600s abgebrochen"
# Strategie 2: Nur essenzielle Pakete (timeout-gesichert) # Strategie 2: Nur essenzielle Pakete (timeout-gesichert)
progress "Installiere nur essenzielle Flask-Komponenten..." progress "Installiere nur essenzielle Flask-Komponenten..."
@ -978,77 +979,60 @@ install_python_packages() {
if [ $installed_count -eq 0 ]; then if [ $installed_count -eq 0 ]; then
warning "⚠️ Keine Python-Pakete konnten installiert werden" warning "⚠️ Keine Python-Pakete konnten installiert werden"
warning "⚠️ System läuft möglicherweise mit bereits installierten Paketen" warning "⚠️ Überspringe Python-Pakete Installation - verwende System-Pakete"
info " → Manuell: pip3 install --break-system-packages Flask requests"
# Strategie 3: Fallback auf System-Pakete (APT)
progress "Versuche System-Python-Pakete als Fallback..."
local system_packages=("python3-flask" "python3-requests")
local system_installed=0
for pkg in "${system_packages[@]}"; do
if timeout 60 apt-get install -y "$pkg" >/dev/null 2>&1; then
success "✅ System-Paket installiert: $pkg"
((system_installed++))
else
debug "System-Paket fehlgeschlagen: $pkg"
fi
done
if [ $system_installed -gt 0 ]; then
success "✅ Fallback auf System-Pakete erfolgreich ($system_installed installiert)"
else
warning "⚠️ Auch System-Pakete Installation fehlgeschlagen"
info " → System läuft mit vorhandenen Python-Paketen"
info " → Manuell: pip3 install --break-system-packages Flask requests"
info " → Oder: apt install python3-flask python3-requests"
fi
else else
success "$installed_count von ${#essential_deps[@]} essenziellen Paketen installiert" success "$installed_count von ${#essential_deps[@]} essenziellen Paketen installiert"
fi fi
fi fi
# Umfassende Validierung # Schnelle Validierung nur der essenziellen Pakete (timeout-gesichert)
progress "Validiere kritische Python-Abhängigkeiten..." progress "Validiere essenzielle Python-Module..."
# Erstelle Validierungs-Skript local essential_modules=("flask" "requests")
cat > /tmp/validate_python.py << 'EOF' local validation_success=true
#!/usr/bin/env python3
import sys
import importlib
required_modules = [ for module in "${essential_modules[@]}"; do
('flask', 'Flask'), if timeout 10 python3 -c "import $module; print(f'✅ $module verfügbar')" 2>/dev/null; then
('werkzeug', 'Werkzeug'), debug "$module erfolgreich importiert"
('jinja2', 'Jinja2'), else
('sqlalchemy', 'SQLAlchemy'), warning "⚠️ $module nicht verfügbar"
('bcrypt', 'bcrypt'), validation_success=false
('cryptography', 'cryptography'), fi
('requests', 'requests'), done
('psutil', 'psutil'),
('flask_login', 'Flask-Login'),
('flask_wtf', 'Flask-WTF'),
('wtforms', 'WTForms'),
('itsdangerous', 'itsdangerous'),
('markupsafe', 'MarkupSafe'),
('click', 'click')
]
failed_imports = [] if [ "$validation_success" = true ]; then
successful_imports = [] success "✅ Essenzielle Python-Module verfügbar"
for module_name, display_name in required_modules:
try:
module = importlib.import_module(module_name)
version = getattr(module, '__version__', 'Version unbekannt')
print(f"✅ {display_name}: {version}")
successful_imports.append(display_name)
except ImportError as e:
print(f"❌ {display_name}: Import fehlgeschlagen - {e}")
failed_imports.append(display_name)
except Exception as e:
print(f"⚠️ {display_name}: Unerwarteter Fehler - {e}")
failed_imports.append(display_name)
print(f"\nErgebnis: {len(successful_imports)} erfolgreich, {len(failed_imports)} fehlgeschlagen")
if failed_imports:
print("Fehlgeschlagene Module:", ", ".join(failed_imports))
sys.exit(1)
else:
print("Alle kritischen Module erfolgreich importiert!")
sys.exit(0)
EOF
if python3 /tmp/validate_python.py; then
success "✅ Alle kritischen Python-Abhängigkeiten erfolgreich validiert"
else else
warning "⚠️ Einige Python-Abhängigkeiten fehlen - versuche Reparatur..." warning "⚠️ Einige essenzielle Module fehlen"
info " → System funktioniert möglicherweise trotzdem"
# Repair-Versuch info " → Fehlende Pakete: pip3 install --break-system-packages Flask requests"
retry_command "python3 -m pip install --break-system-packages --upgrade --force-reinstall Flask Werkzeug SQLAlchemy bcrypt" "Critical Package Repair"
fi fi
rm -f /tmp/validate_python.py log "✅ Timeout-gesicherte Python-Pakete Installation abgeschlossen"
debug "Python-Installation ohne hängende Prozesse beendet"
log "✅ Python-Pakete Installation abgeschlossen"
} }
# =========================== ROBUSTE NODE.JS INSTALLATION =========================== # =========================== ROBUSTE NODE.JS INSTALLATION ===========================