From b77ff248ace17994d4b2a79e6e1f5a267089f9ba Mon Sep 17 00:00:00 2001 From: Meo597 <197331664+Meo597@users.noreply.github.com> Date: Sat, 12 Apr 2025 00:45:03 +0800 Subject: [PATCH] Alpine: refactor code related to architecture identification --- alpinelinux/install-release.sh | 115 ++++++++++++++++++--------------- 1 file changed, 63 insertions(+), 52 deletions(-) diff --git a/alpinelinux/install-release.sh b/alpinelinux/install-release.sh index 753f0a2..4c4c95e 100644 --- a/alpinelinux/install-release.sh +++ b/alpinelinux/install-release.sh @@ -2,58 +2,6 @@ set -euxo pipefail -# Identify architecture -case "$(arch -s)" in -'i386' | 'i686') - MACHINE='32' - ;; -'amd64' | 'x86_64') - MACHINE='64' - ;; -'armv5tel') - MACHINE='arm32-v5' - ;; -'armv6l') - MACHINE='arm32-v6' - grep Features /proc/cpuinfo | grep -qw 'vfp' || MACHINE='arm32-v5' - ;; -'armv7' | 'armv7l') - MACHINE='arm32-v7a' - grep Features /proc/cpuinfo | grep -qw 'vfp' || MACHINE='arm32-v5' - ;; -'armv8' | 'aarch64') - MACHINE='arm64-v8a' - ;; -'mips') - MACHINE='mips32' - ;; -'mipsle') - MACHINE='mips32le' - ;; -'mips64') - MACHINE='mips64' - ;; -'mips64le') - MACHINE='mips64le' - ;; -'ppc64') - MACHINE='ppc64' - ;; -'ppc64le') - MACHINE='ppc64le' - ;; -'riscv64') - MACHINE='riscv64' - ;; -'s390x') - MACHINE='s390x' - ;; -*) - echo "error: The architecture is not supported." - exit 1 - ;; -esac - TMP_DIRECTORY="$(mktemp -d)/" ZIP_FILE="${TMP_DIRECTORY}Xray-linux-$MACHINE.zip" DOWNLOAD_LINK="https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-$MACHINE.zip" @@ -76,6 +24,68 @@ check_if_running_as_root() { fi } +identify_architecture() { + if [ "$(uname)" != 'Linux' ]; then + echo "error: This operating system is not supported." + return 1 + fi + case "$(uname -m)" in + 'i386' | 'i686') + MACHINE='32' + ;; + 'amd64' | 'x86_64') + MACHINE='64' + ;; + 'armv5tel') + MACHINE='arm32-v5' + ;; + 'armv6l') + MACHINE='arm32-v6' + grep Features /proc/cpuinfo | grep -qw 'vfp' || MACHINE='arm32-v5' + ;; + 'armv7' | 'armv7l') + MACHINE='arm32-v7a' + grep Features /proc/cpuinfo | grep -qw 'vfp' || MACHINE='arm32-v5' + ;; + 'armv8' | 'aarch64') + MACHINE='arm64-v8a' + ;; + 'mips') + MACHINE='mips32' + ;; + 'mipsle') + MACHINE='mips32le' + ;; + 'mips64') + MACHINE='mips64' + lscpu | grep -q "Little Endian" && MACHINE='mips64le' + ;; + 'mips64le') + MACHINE='mips64le' + ;; + 'ppc64') + MACHINE='ppc64' + ;; + 'ppc64le') + MACHINE='ppc64le' + ;; + 'riscv64') + MACHINE='riscv64' + ;; + 's390x') + MACHINE='s390x' + ;; + *) + echo "error: The architecture is not supported." + return 1 + ;; + esac + if [ ! -f '/etc/os-release' ]; then + echo "error: Don't use outdated Linux distributions." + return 1 + fi +} + install_software() { if [[ -n "$(command -v curl)" ]]; then return @@ -203,6 +213,7 @@ information() { main() { check_alpine || return 1 check_if_running_as_root || return 1 + identify_architecture || return 1 install_software download_xray verification_xray