ircu2/fix-aarch64.sh

130 lines
3.6 KiB
Bash
Executable File

#!/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"