diff --git a/fix-aarch64.sh b/fix-aarch64.sh new file mode 100755 index 0000000..db94af1 --- /dev/null +++ b/fix-aarch64.sh @@ -0,0 +1,129 @@ +#!/bin/bash +# +# Script pentru fixare config.guess & config.sub pentru aarch64 +# Limba: Română +# + +# Culori +VERDE='\033[0;32m' +GALBEN='\033[1;33m' +ALBASTRU='\033[0;34m' +ROSU='\033[0;31m' +NC='\033[0m' + +log_info() { + echo -e "${ALBASTRU}[INFO]${NC} $1" +} + +log_success() { + echo -e "${VERDE}[SUCCES]${NC} $1" +} + +log_error() { + echo -e "${ROSU}[EROARE]${NC} $1" +} + +log_warn() { + echo -e "${GALBEN}[AVERTIZARE]${NC} $1" +} + +echo -e "${ALBASTRU}" +echo "═══════════════════════════════════════" +echo " Fix config.guess pentru aarch64" +echo "═══════════════════════════════════════" +echo -e "${NC}" + +# Detectează platformă +MACHINE=$(uname -m) +SYSTEM=$(uname -s) + +log_info "Sistem detectat: $SYSTEM $MACHINE" + +# Verifică dacă config.guess există +if [ ! -f "config.guess" ]; then + log_error "config.guess nu găsit în directorul curent!" + exit 1 +fi + +# Backup original +cp config.guess config.guess.bak +cp config.sub config.sub.bak +log_success "Backup creat: config.guess.bak, config.sub.bak" + +# Fixare pentru aarch64 +if [ "$MACHINE" = "aarch64" ] || [ "$MACHINE" = "arm64" ]; then + log_info "Detectat aarch64/arm64, aplicare fix..." + + # Metoda 1: Patch direct în config.guess pentru case aarch64 + if grep -q "case \"\$machine\" in" config.guess; then + # Găsește linia și adaugă case pentru aarch64 + line_num=$(grep -n 'case "$machine" in' config.guess | head -1 | cut -d: -f1) + if [ -n "$line_num" ]; then + # Creează temp file cu patch + head -n "$line_num" config.guess > config.guess.tmp + + # Adaugă case pentru aarch64 + cat >> config.guess.tmp << 'EOF' + aarch64*|arm64*) + echo aarch64-unknown-linux-gnu + exit 0 + ;; +EOF + + # Adaugă restul fișierului + tail -n +$((line_num + 1)) config.guess >> config.guess.tmp + + mv config.guess.tmp config.guess + chmod +x config.guess + log_success "config.guess patched pentru aarch64" + fi + fi +fi + +# Verifică config.sub pentru aarch64 +if [ "$MACHINE" = "aarch64" ] || [ "$MACHINE" = "arm64" ]; then + log_info "Verificare config.sub..." + + if ! grep -q "aarch64" config.sub; then + log_warn "config.sub nu are suport aarch64, aplicare patch..." + + # Adaugă suport aarch64 în config.sub + if grep -q "case \$cpu in" config.sub; then + # Găsește linia și adaugă case pentru aarch64 + sed -i '/case $cpu in/a\ +\t\taarch64 | arm64)\ +\t\t\tcpu=aarch64\ +\t\t\t;;' config.sub + + log_success "config.sub patched pentru aarch64" + fi + else + log_success "config.sub are deja suport aarch64" + fi +fi + +# Test +log_info "Test config.guess..." +RESULT=$(./config.guess 2>&1) +if [ $? -eq 0 ]; then + log_success "config.guess funcționează!" + echo -e "${VERDE}Output: $RESULT${NC}" +else + log_error "config.guess tot nu merge!" + echo -e "${ROSU}Output: $RESULT${NC}" + log_warn "Revert la backup..." + cp config.guess.bak config.guess + cp config.sub.bak config.sub + exit 1 +fi + +# Cleanup +rm -f config.guess.bak config.sub.bak + +echo "" +echo -e "${VERDE}═══════════════════════════════════════${NC}" +echo -e "${VERDE}Fix aplicat cu succes!${NC}" +echo -e "${VERDE}═══════════════════════════════════════${NC}" +echo "" +echo "Acum poți rula: ./configure" + diff --git a/install.sh b/install.sh index 5a4251f..ab86013 100755 --- a/install.sh +++ b/install.sh @@ -104,10 +104,37 @@ check_dependencies() { return 0 } +# Funcția pentru fixare config.guess pentru aarch64 +fix_config_guess() { + log_info "Verificare support aarch64 în config.guess..." + + # Verifică dacă config.guess e vechi și nu suportă aarch64 + if [ -f "./config.guess" ] && ! grep -q "aarch64" ./config.guess; then + log_warn "config.guess e vechi, adaugă suport aarch64..." + + # Patch pentru aarch64 + if grep -q "case \"\$machine\" in" ./config.guess; then + # Adaugă case pentru aarch64 înainte de default + sed -i '/case "$machine" in/a\ +\t\taarch64*|arm64*)\ +\t\t\techo aarch64-unknown-linux-gnu\ +\t\t\texit 0\ +\t\t\t;;' ./config.guess + log_success "Support aarch64 adăugat la config.guess" + fi + fi + + # Dacă config.guess tot nu merge, folosește --build flag + return 0 +} + # Funcția de configurare configure_ircd() { log_info "Configurare Nefarious IRCd..." + # Fixează config.guess pentru aarch64 + fix_config_guess + local config_args="--prefix=$PREFIX" config_args="$config_args --with-maxcon=$MAXCON" @@ -119,6 +146,12 @@ configure_ircd() { config_args="$config_args --disable-ssl" fi + # Adaugă --build flag pentru sisteme care nu pot detecta + if [ "$(uname -m)" = "aarch64" ]; then + config_args="$config_args --build=aarch64-unknown-linux-gnu" + log_info "Detectat aarch64, adaugă --build=aarch64-unknown-linux-gnu" + fi + log_info "Parametri configure: $config_args" if [ ! -f "./configure" ]; then