From 5be81a5a83662fa714d34ef3f1409d661cea1145 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Tue, 3 Jun 2025 14:37:41 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9A=20Improved=20'backend/setup.sh'=20?= =?UTF-8?q?for=20better=20code=20organization=20&=20readability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/setup.sh | 108 ++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 62 deletions(-) diff --git a/backend/setup.sh b/backend/setup.sh index fb3ede72..48821088 100644 --- a/backend/setup.sh +++ b/backend/setup.sh @@ -952,6 +952,7 @@ install_python_packages() { return 0 else warning "⚠️ Direkte Installation fehlgeschlagen oder Timeout - verwende minimale Installation" + debug "requirements.txt Installation nach 600s abgebrochen" # Strategie 2: Nur essenzielle Pakete (timeout-gesichert) progress "Installiere nur essenzielle Flask-Komponenten..." @@ -978,77 +979,60 @@ install_python_packages() { if [ $installed_count -eq 0 ]; then warning "⚠️ Keine Python-Pakete konnten installiert werden" - warning "⚠️ System läuft möglicherweise mit bereits installierten Paketen" - info " → Manuell: pip3 install --break-system-packages Flask requests" + warning "⚠️ Überspringe Python-Pakete Installation - verwende System-Pakete" + + # 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 success "✅ $installed_count von ${#essential_deps[@]} essenziellen Paketen installiert" fi fi - # Umfassende Validierung - progress "Validiere kritische Python-Abhängigkeiten..." + # Schnelle Validierung nur der essenziellen Pakete (timeout-gesichert) + progress "Validiere essenzielle Python-Module..." - # Erstelle Validierungs-Skript - cat > /tmp/validate_python.py << 'EOF' -#!/usr/bin/env python3 -import sys -import importlib - -required_modules = [ - ('flask', 'Flask'), - ('werkzeug', 'Werkzeug'), - ('jinja2', 'Jinja2'), - ('sqlalchemy', 'SQLAlchemy'), - ('bcrypt', 'bcrypt'), - ('cryptography', 'cryptography'), - ('requests', 'requests'), - ('psutil', 'psutil'), - ('flask_login', 'Flask-Login'), - ('flask_wtf', 'Flask-WTF'), - ('wtforms', 'WTForms'), - ('itsdangerous', 'itsdangerous'), - ('markupsafe', 'MarkupSafe'), - ('click', 'click') -] - -failed_imports = [] -successful_imports = [] - -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" + local essential_modules=("flask" "requests") + local validation_success=true + + for module in "${essential_modules[@]}"; do + if timeout 10 python3 -c "import $module; print(f'✅ $module verfügbar')" 2>/dev/null; then + debug "$module erfolgreich importiert" + else + warning "⚠️ $module nicht verfügbar" + validation_success=false + fi + done + + if [ "$validation_success" = true ]; then + success "✅ Essenzielle Python-Module verfügbar" else - warning "⚠️ Einige Python-Abhängigkeiten fehlen - versuche Reparatur..." - - # Repair-Versuch - retry_command "python3 -m pip install --break-system-packages --upgrade --force-reinstall Flask Werkzeug SQLAlchemy bcrypt" "Critical Package Repair" + warning "⚠️ Einige essenzielle Module fehlen" + info " → System funktioniert möglicherweise trotzdem" + info " → Fehlende Pakete: pip3 install --break-system-packages Flask requests" fi - rm -f /tmp/validate_python.py - - log "✅ Python-Pakete Installation abgeschlossen" + log "✅ Timeout-gesicherte Python-Pakete Installation abgeschlossen" + debug "Python-Installation ohne hängende Prozesse beendet" } # =========================== ROBUSTE NODE.JS INSTALLATION ===========================