mirror of
https://github.com/pi-hole/pi-hole.git
synced 2024-12-27 07:12:27 +00:00
Drop support for ancient ARMv4 and ARMv5, the Debian binaries turn out to cause unresolvable SIGFPE on ARMv6 and lower. Fortunately, we can still use the Alpine binaries on all Raspberry Pi models (even the oldest ones)
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
parent
33a41391b5
commit
c571d8d37d
2 changed files with 10 additions and 170 deletions
|
@ -1870,9 +1870,9 @@ get_binary_name() {
|
||||||
printf "%b %b Detected AArch64 (64 Bit ARM) architecture\\n" "${OVER}" "${TICK}"
|
printf "%b %b Detected AArch64 (64 Bit ARM) architecture\\n" "${OVER}" "${TICK}"
|
||||||
# set the binary to be used
|
# set the binary to be used
|
||||||
l_binary="pihole-FTL-arm64"
|
l_binary="pihole-FTL-arm64"
|
||||||
elif [[ "${cpu_arch}" == "armv6KZ" ]]; then
|
elif [[ "${cpu_arch}" == "armv6"* ]]; then
|
||||||
printf "%b %b Detected ARMv6KZ architecture\\n" "${OVER}" "${TICK}"
|
printf "%b %b Detected ARMv6 architecture\\n" "${OVER}" "${TICK}"
|
||||||
# set the binary to be used
|
# set the binary to be used (e.g., BCM2835 as found in Raspberry Pi Zero and Model 1)
|
||||||
l_binary="pihole-FTL-armv6"
|
l_binary="pihole-FTL-armv6"
|
||||||
else
|
else
|
||||||
# If ARMv8 or higher is found (e.g., BCM2837 as found in Raspberry Pi Model 3B)
|
# If ARMv8 or higher is found (e.g., BCM2837 as found in Raspberry Pi Model 3B)
|
||||||
|
@ -1885,24 +1885,10 @@ get_binary_name() {
|
||||||
printf "%b %b Detected ARMv7 architecture (%s)\\n" "${OVER}" "${TICK}" "${cpu_arch}"
|
printf "%b %b Detected ARMv7 architecture (%s)\\n" "${OVER}" "${TICK}" "${cpu_arch}"
|
||||||
# set the binary to be used
|
# set the binary to be used
|
||||||
l_binary="pihole-FTL-armv6"
|
l_binary="pihole-FTL-armv6"
|
||||||
elif [[ "${cpu_arch}" == "v5TE" || "${rev}" -gt 5 ]]; then
|
|
||||||
# Check if the system is using GLIBC 2.29 or higher
|
|
||||||
if [[ -n "${l_glibc_version}" && "$(printf '%s\n' "2.29" "${l_glibc_version}" | sort -V | head -n1)" == "2.29" ]]; then
|
|
||||||
# If so, use the ARMv6 binary (e.g., BCM2835 as found in Raspberry Pi Zero and Model 1)
|
|
||||||
printf "%b %b Detected ARMv6 architecture (running GLIBC 2.29 or higher, %s)\\n" "${OVER}" "${TICK}" "${cpu_arch}"
|
|
||||||
# set the binary to be used
|
|
||||||
l_binary="pihole-FTL-armv5"
|
|
||||||
else
|
else
|
||||||
# Otherwise, use the ARMv5 binary (e.g., BCM2835 as found in Raspberry Pi Zero and Model 1)
|
# Otherwise, Pi-hole does not support this architecture
|
||||||
printf "%b %b Detected ARMv6 architecture (running GLIBC older than 2.29, %s)\\n" "${OVER}" "${TICK}" "${cpu_arch}"
|
printf "%b %b This processor architecture is not supported by Pi-hole (%s)\\n" "${OVER}" "${CROSS}" "${cpu_arch}"
|
||||||
# set the binary to be used
|
l_binary=""
|
||||||
l_binary="pihole-FTL-armv4"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# Otherwise, use the ARMv4 binary (e.g., BCM2835 as found in Raspberry Pi Zero and Model 1)
|
|
||||||
printf "%b %b Detected ARMv4 or ARMv5 architecture (%s)\\n" "${OVER}" "${TICK}" "${cpu_arch}"
|
|
||||||
# set the binary to be used
|
|
||||||
l_binary="pihole-FTL-armv4"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
elif [[ "${machine}" == "x86_64" ]]; then
|
elif [[ "${machine}" == "x86_64" ]]; then
|
||||||
|
|
|
@ -259,158 +259,12 @@ def test_FTL_detect_aarch64_no_errors(host):
|
||||||
assert expected_stdout in detectPlatform.stdout
|
assert expected_stdout in detectPlatform.stdout
|
||||||
|
|
||||||
|
|
||||||
def test_FTL_detect_armv4_no_errors(host):
|
def test_FTL_detect_armv6_no_errors(host):
|
||||||
"""
|
|
||||||
confirms only armv4 package is downloaded for FTL engine
|
|
||||||
"""
|
|
||||||
# mock uname to return armv4 platform
|
|
||||||
mock_command("uname", {"-m": ("armv4t", "0")}, host)
|
|
||||||
# mock readelf to respond with armv4 CPU architecture
|
|
||||||
mock_command_2(
|
|
||||||
"readelf",
|
|
||||||
{
|
|
||||||
"-A /bin/sh": ("Tag_CPU_arch: armv4t", "0"),
|
|
||||||
"-A /usr/bin/sh": ("Tag_CPU_arch: armv4t", "0"),
|
|
||||||
},
|
|
||||||
host,
|
|
||||||
)
|
|
||||||
detectPlatform = host.run(
|
|
||||||
"""
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
create_pihole_user
|
|
||||||
funcOutput=$(get_binary_name)
|
|
||||||
binary="pihole-FTL${funcOutput##*pihole-FTL}"
|
|
||||||
theRest="${funcOutput%pihole-FTL*}"
|
|
||||||
FTLdetect "${binary}" "${theRest}"
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
expected_stdout = info_box + " FTL Checks..."
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + " Detected ARMv4 or ARMv5 architecture (armv4t)"
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + " Downloading and Installing FTL"
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
|
|
||||||
|
|
||||||
def test_FTL_detect_armv5_no_errors(host):
|
|
||||||
"""
|
|
||||||
confirms only armv5 package is downloaded for FTL engine
|
|
||||||
"""
|
|
||||||
# mock uname to return armv5te platform
|
|
||||||
mock_command("uname", {"-m": ("armv5te", "0")}, host)
|
|
||||||
# mock readelf to respond with armv5 CPU architecture
|
|
||||||
mock_command_2(
|
|
||||||
"readelf",
|
|
||||||
{
|
|
||||||
"-A /bin/sh": ("Tag_CPU_arch: armv5te", "0"),
|
|
||||||
"-A /usr/bin/sh": ("Tag_CPU_arch: armv5te", "0"),
|
|
||||||
},
|
|
||||||
host,
|
|
||||||
)
|
|
||||||
detectPlatform = host.run(
|
|
||||||
"""
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
create_pihole_user
|
|
||||||
funcOutput=$(get_binary_name)
|
|
||||||
binary="pihole-FTL${funcOutput##*pihole-FTL}"
|
|
||||||
theRest="${funcOutput%pihole-FTL*}"
|
|
||||||
FTLdetect "${binary}" "${theRest}"
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
expected_stdout = info_box + " FTL Checks..."
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + " Detected ARMv4 or ARMv5 architecture (armv5te)"
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + " Downloading and Installing FTL"
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
|
|
||||||
|
|
||||||
def test_FTL_detect_armv6_old_no_errors(host):
|
|
||||||
"""
|
"""
|
||||||
confirms only armv6 package is downloaded for FTL engine
|
confirms only armv6 package is downloaded for FTL engine
|
||||||
"""
|
"""
|
||||||
# mock uname to return armv6l platform
|
# mock uname to return armv6 platform
|
||||||
mock_command("uname", {"-m": ("armv6l", "0")}, host)
|
mock_command("uname", {"-m": ("armv6", "0")}, host)
|
||||||
# mock readelf to respond with armv6l CPU architecture
|
|
||||||
mock_command_2(
|
|
||||||
"readelf",
|
|
||||||
{
|
|
||||||
"-A /bin/sh": ("Tag_CPU_arch: armv6l", "0"),
|
|
||||||
"-A /usr/bin/sh": ("Tag_CPU_arch: armv6l", "0"),
|
|
||||||
},
|
|
||||||
host,
|
|
||||||
)
|
|
||||||
# Mock old ldd GLIBC version
|
|
||||||
mock_command(
|
|
||||||
"ldd", {"--version": ("ldd (Debian GLIBC 2.13-38+deb7u8) 2.13", "0")}, host
|
|
||||||
)
|
|
||||||
|
|
||||||
detectPlatform = host.run(
|
|
||||||
"""
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
create_pihole_user
|
|
||||||
funcOutput=$(get_binary_name)
|
|
||||||
binary="pihole-FTL${funcOutput##*pihole-FTL}"
|
|
||||||
theRest="${funcOutput%pihole-FTL*}"
|
|
||||||
FTLdetect "${binary}" "${theRest}"
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
expected_stdout = info_box + " FTL Checks..."
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + (
|
|
||||||
" Detected ARMv6 architecture (running GLIBC older than 2.29, armv6l)"
|
|
||||||
)
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + " Downloading and Installing FTL"
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
|
|
||||||
|
|
||||||
def test_FTL_detect_armv6_recent_no_errors(host):
|
|
||||||
"""
|
|
||||||
confirms only armv6 package is downloaded for FTL engine
|
|
||||||
"""
|
|
||||||
# mock uname to return armv6l platform
|
|
||||||
mock_command("uname", {"-m": ("armv6l", "0")}, host)
|
|
||||||
# mock readelf to respond with armv6l CPU architecture
|
|
||||||
mock_command_2(
|
|
||||||
"readelf",
|
|
||||||
{
|
|
||||||
"-A /bin/sh": ("Tag_CPU_arch: armv6l", "0"),
|
|
||||||
"-A /usr/bin/sh": ("Tag_CPU_arch: armv6l", "0"),
|
|
||||||
},
|
|
||||||
host,
|
|
||||||
)
|
|
||||||
# Mock old ldd GLIBC version
|
|
||||||
mock_command(
|
|
||||||
"ldd", {"--version": ("'ldd (Debian GLIBC 2.35-38+deb7u8) 2.35'", "0")}, host
|
|
||||||
)
|
|
||||||
|
|
||||||
detectPlatform = host.run(
|
|
||||||
"""
|
|
||||||
source /opt/pihole/basic-install.sh
|
|
||||||
create_pihole_user
|
|
||||||
funcOutput=$(get_binary_name)
|
|
||||||
binary="pihole-FTL${funcOutput##*pihole-FTL}"
|
|
||||||
theRest="${funcOutput%pihole-FTL*}"
|
|
||||||
FTLdetect "${binary}" "${theRest}"
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
expected_stdout = info_box + " FTL Checks..."
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + (
|
|
||||||
" Detected ARMv6 architecture (running GLIBC 2.29 or higher, armv6l)"
|
|
||||||
)
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
expected_stdout = tick_box + " Downloading and Installing FTL"
|
|
||||||
assert expected_stdout in detectPlatform.stdout
|
|
||||||
|
|
||||||
|
|
||||||
def test_FTL_detect_armv6KZ_no_errors(host):
|
|
||||||
"""
|
|
||||||
confirms only armv6KZ package is downloaded for FTL engine
|
|
||||||
"""
|
|
||||||
# mock uname to return armv6KZ platform
|
|
||||||
mock_command("uname", {"-m": ("armv6KZ", "0")}, host)
|
|
||||||
# mock readelf to respond with armv6l CPU architecture
|
# mock readelf to respond with armv6l CPU architecture
|
||||||
mock_command_2(
|
mock_command_2(
|
||||||
"readelf",
|
"readelf",
|
||||||
|
@ -432,7 +286,7 @@ def test_FTL_detect_armv6KZ_no_errors(host):
|
||||||
)
|
)
|
||||||
expected_stdout = info_box + " FTL Checks..."
|
expected_stdout = info_box + " FTL Checks..."
|
||||||
assert expected_stdout in detectPlatform.stdout
|
assert expected_stdout in detectPlatform.stdout
|
||||||
expected_stdout = tick_box + " Detected ARMv6KZ architecture"
|
expected_stdout = tick_box + " Detected ARMv6 architecture"
|
||||||
assert expected_stdout in detectPlatform.stdout
|
assert expected_stdout in detectPlatform.stdout
|
||||||
expected_stdout = tick_box + " Downloading and Installing FTL"
|
expected_stdout = tick_box + " Downloading and Installing FTL"
|
||||||
assert expected_stdout in detectPlatform.stdout
|
assert expected_stdout in detectPlatform.stdout
|
||||||
|
|
Loading…
Reference in a new issue