#!/bin/bash # build.sh - Ein Skript zur Automatisierung des Build- und Installationsprozesses für Nolambocoin Miner # Funktionen zur Anzeige von Nachrichten function echo_info { echo -e "\e[34m[INFO]\e[0m $1" } function echo_success { echo -e "\e[32m[SUCCESS]\e[0m $1" } function echo_error { echo -e "\e[31m[ERROR]\e[0m $1" } # Überprüfen der Abhängigkeiten function check_dependencies { echo_info "Überprüfe erforderliche Abhängigkeiten..." local dependencies=("autoconf" "automake" "libcurl4-openssl-dev" "libjansson-dev" "build-essential" "pkg-config") for dep in "${dependencies[@]}"; do if ! dpkg -s "$dep" &> /dev/null; then echo_error "Abhängigkeit fehlt: $dep" echo_info "Bitte installieren Sie fehlende Abhängigkeiten mit folgendem Befehl:" echo_info "sudo apt-get install ${dependencies[@]}" exit 1 fi done echo_success "Alle erforderlichen Abhängigkeiten sind installiert." } # Initialisieren der Autotools function initialize_autotools { echo_info "Initialisiere Autotools..." if ! autoreconf -i; then echo_error "Fehler beim Ausführen von autoreconf." exit 1 fi echo_success "Autotools erfolgreich initialisiert." } # Konfigurieren des Projekts function configure_project { echo_info "Konfiguriere das Projekt..." if ! ./configure; then echo_error "Fehler beim Ausführen von ./configure." exit 1 fi echo_success "Projekt erfolgreich konfiguriert." } # Kompilieren des Projekts function compile_project { echo_info "Kompiliere das Projekt..." if ! make -j$(nproc); then echo_error "Fehler beim Ausführen von make." exit 1 fi echo_success "Projekt erfolgreich kompiliert." } # Installieren des Projekts function install_project { echo_info "Installiere das Projekt..." if [ "$EUID" -ne 0 ]; then echo_error "Installation erfordert Root-Rechte. Bitte führen Sie das Skript mit sudo aus." exit 1 fi if ! make install; then echo_error "Fehler beim Ausführen von make install." exit 1 fi echo_success "Projekt erfolgreich installiert." } # Bereinigung des Build-Verzeichnisses function clean_project { echo_info "Bereinige das Projekt..." if ! make clean; then echo_error "Fehler beim Ausführen von make clean." exit 1 fi echo_success "Projekt erfolgreich bereinigt." } # Anzeige der Nutzung des Skripts function show_help { echo "Usage: ./build.sh [options]" echo "" echo "Options:" echo " --build Konfiguriert und kompiliert das Projekt." echo " --install Installiert das Projekt nach dem Kompilieren." echo " --clean Bereinigt die Build-Dateien." echo " --help Zeigt diese Hilfe an." echo "" echo "Beispiele:" echo " ./build.sh --build" echo " sudo ./build.sh --install" echo " ./build.sh --clean" exit 0 } # Hauptfunktion zur Verarbeitung der Skript-Argumente function main { if [ $# -eq 0 ]; then show_help fi for arg in "$@"; do case $arg in --build) check_dependencies initialize_autotools configure_project compile_project ;; --install) install_project ;; --clean) clean_project ;; --help) show_help ;; *) echo_error "Unbekannte Option: $arg" show_help ;; esac done } # Aufruf der Hauptfunktion mit allen übergebenen Argumenten main "$@"