151 lines
3.7 KiB
Bash
151 lines
3.7 KiB
Bash
#!/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 "$@"
|