-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathversion-check.sh
More file actions
executable file
·112 lines (96 loc) · 2.71 KB
/
Copy pathversion-check.sh
File metadata and controls
executable file
·112 lines (96 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
# Host system verification for LFS arm64-r13.0-74
# Run on Debian 13 ARM64 before starting the build.
export LC_ALL=C
PASS=0
FAIL=0
check() {
local name="$1"
local cmd="$2"
local min="$3"
local actual
actual=$(eval "$cmd" 2>/dev/null | head -1)
if [ -z "$actual" ]; then
echo "MISSING $name"
((FAIL++))
else
echo "OK $name: $actual"
((PASS++))
fi
}
check_version() {
local name="$1"
local cmd="$2"
local min_major="$3"
local min_minor="$4"
local actual
actual=$(eval "$cmd" 2>/dev/null | head -1)
if [ -z "$actual" ]; then
echo "MISSING $name"
((FAIL++))
return
fi
local ver
ver=$(echo "$actual" | grep -oP '\d+\.\d+' | head -1)
local major minor
major=$(echo "$ver" | cut -d. -f1)
minor=$(echo "$ver" | cut -d. -f2)
if [ "${major:-0}" -gt "$min_major" ] || \
{ [ "${major:-0}" -eq "$min_major" ] && [ "${minor:-0}" -ge "$min_minor" ]; }; then
echo "OK $name: $actual"
((PASS++))
else
echo "TOO OLD $name: $actual (need >= ${min_major}.${min_minor})"
((FAIL++))
fi
}
echo "=== LFS arm64-r13.0-74 Host System Check ==="
echo ""
# Shell
echo "--- Shell ---"
check_version "Bash" "bash --version" 3 2
echo "/bin/sh -> $(readlink -f /bin/sh)"
if [ "$(readlink -f /bin/sh)" = "$(which bash)" ]; then
echo "OK /bin/sh points to bash"
else
echo "WARN /bin/sh does NOT point to bash (points to $(readlink -f /bin/sh))"
echo " Fix: sudo ln -sf bash /bin/sh"
((FAIL++))
fi
echo ""
echo "--- Compilers & Linker ---"
check_version "GCC" "gcc --version" 5 2
check_version "G++" "g++ --version" 5 2
check "Binutils (ld)" "ld --version"
check "Binutils (as)" "as --version"
echo ""
echo "--- Build tools ---"
check_version "Make" "make --version" 4 0
check "Bison" "bison --version"
check "Gawk" "gawk --version"
check "M4" "m4 --version"
check "Texinfo (makeinfo)" "makeinfo --version"
check "Perl" "perl --version"
check_version "Python3" "python3 --version" 3 4
echo ""
echo "--- Libraries ---"
check_version "Glibc" "ldd --version" 2 11
check "Zlib headers" "test -f /usr/include/zlib.h && echo 'zlib.h found'"
echo ""
echo "--- Utilities ---"
check "wget" "wget --version"
check "curl" "curl --version"
check "tar" "tar --version"
check "xz" "xz --version"
echo ""
echo "=== Results ==="
echo "Passed: $PASS"
echo "Failed/Missing: $FAIL"
echo ""
if [ "$FAIL" -eq 0 ]; then
echo "All checks passed. Host is ready for the LFS build."
else
echo "Fix the above issues before starting the LFS build."
echo "Install missing packages: sudo apt install build-essential bison gawk texinfo m4 wget curl"
exit 1
fi