PREXAIGPUARC 2/3

Words
413
Reading
2 min
Listen
Play
9M

#!/bin/bash
#=============================================================================

PREXAIGPUARC.SH

Dieses Bash-Shell-Skript bereitet die notwendige Umgebung (Abhängigkeiten,

OneAPI-Toolkit) unter Arch/Garuda Linux vor und startet den Build-Prozess.

FÜR DIE AUSFÜHRUNG: Speichern Sie dieses Skript als PREXAIGPUARC.sh

und führen Sie es im Terminal aus:

bash PREXAIGPUARC.sh [Optionale Argumente für XAIGPUARC.sh]

#=============================================================================

Exit bei Fehlern, Pipe-Fehler abfangen, IFS setzen

set -euo pipefail
IFS=$'\n\t'

--- Hilfsfunktionen für Konsistente Ausgabe ---

log() { echo -e "🔷 $"; }
success() { echo -e "✅ $
"; }
error() { echo -e "❌ $"; }
warning() { echo -e "⚠️ $
"; }

--- Funktionen ---

install_dependencies() {
log "Installiere Basis-Abhängigkeiten (git, cmake, ccache, base-devel, onednn) via pacman..."

# 'command -v' prüft, ob der Befehl existiert.
if ! command -v sudo &> /dev/null; then
    error "'sudo' Befehl nicht gefunden. Stellen Sie sicher, dass Sie mit Admin-Rechten arbeiten."
    return 1
fi

# Installiere die erforderlichen Pakete (Best-Practice für Arch/Garuda)
# '-Syu' aktualisiert zuerst, '--needed' vermeidet Neuinstallationen
sudo pacman -Syu --needed git cmake ccache base-devel onednn

# Prüft den Exit-Code des letzten Befehls
if [ $? -ne 0 ]; then
    error "Fehler beim Installieren der Pakete mit pacman."
    return 1
fi

success "Basis-Abhängigkeiten installiert."

}

install_intel_oneapi_toolkit() {
log "Überprüfung der Intel oneAPI Toolkit Installation..."

# Pfad zum setvars.sh Skript (Standardpfad)
local SETVARS_PATH="/opt/intel/oneapi/setvars.sh"

# Prüft, ob die Datei existiert
if [ ! -f "$SETVARS_PATH" ]; then
    warning "Die Intel oneAPI Installation ('$SETVARS_PATH') wurde NICHT gefunden."
    log "Bitte installieren Sie das Intel oneAPI Base Toolkit und HPC Toolkit."
    return 1
fi

success "Intel oneAPI Toolkit gefunden ($SETVARS_PATH)."

}

--- Hauptablauf ---

main_flow() {
log "=== STARTE: XAIGPUARC Build-Vorbereitung (Bash) ==="

# [1] Abhängigkeiten installieren
if install_dependencies; then

    # [2] OneAPI Installation prüfen
    if install_intel_oneapi_toolkit; then

        echo ""
        echo "✨ VORBEREITUNG ABGESCHLOSSEN! Abhängigkeiten und oneAPI sind vorhanden. ✨"
        echo ""
        echo "--- NÄCHSTER SCHRITT ---"

        # [3] Prüfe und starte das Haupt-Build-Skript (XAIGPUARC.sh)
        if [ -f "./XAIGPUARC.sh" ]; then
            log "🚀 STARTE XAIGPUARC.sh (Das Haupt-Build-Skript) direkt..."

            # Führe XAIGPUARC.sh mit allen Argumenten der PREP-Datei aus
            # Das Hauptskript lädt die oneAPI-Umgebung (setvars.sh) selbst.
            bash "./XAIGPUARC.sh" "$@"

            if [ $? -ne 0 ]; then
                error "Das Haupt-Build-Skript (XAIGPUARC.sh) ist mit einem Fehler beendet."
            else
                success "XAIGPUARC.sh wurde erfolgreich ausgeführt."
            fi
        else
            warning "KONVENTION: Bitte speichern Sie das Haupt-Build-Skript als **XAIGPUARC.sh**"
            warning "   und starten Sie es manuell: bash ./XAIGPUARC.sh [args]"
        fi
    else
        error "Kritischer Fehler bei der oneAPI-Überprüfung."
    fi
else
    error "Kritischer Fehler bei der Installation der Abhängigkeiten."
fi

log "=== ENDE: XAIGPUARC Build-Vorbereitung ==="

}

Starte den Hauptablauf mit allen übergebenen Argumenten

main_flow "$@"