Adaugă suport aarch64 - fix pentru config.guess și install.sh cu --build flag

This commit is contained in:
mihaiitdata 2026-02-13 00:18:25 +02:00
parent e06b27f138
commit 9c906a9da2
2 changed files with 162 additions and 0 deletions

129
fix-aarch64.sh Executable file
View File

@ -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"

View File

@ -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