From 6e4cad7ba0ccb70f82a4c412753959ab200a4022 Mon Sep 17 00:00:00 2001 From: "James Z.M. Gao" Date: Tue, 10 Jan 2023 17:51:18 +0800 Subject: [PATCH] improve platform detect --- dist/src/main/distro/bin/mvnd | 13 ++++++------- dist/src/main/distro/bin/mvnd.cmd | 6 +++++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/dist/src/main/distro/bin/mvnd b/dist/src/main/distro/bin/mvnd index 41b36957b..ffe719dfb 100755 --- a/dist/src/main/distro/bin/mvnd +++ b/dist/src/main/distro/bin/mvnd @@ -94,32 +94,31 @@ fi # force execute native image if [ "${MVND_ENTRY_FALLBACK:-true}" = false ]; then - MVND_CMD=$(echo "$MVND_HOME"/bin/mvnd-native-*) - [ ! -x "$MVND_CMD" ] || exec "$MVND_CMD" "$@" - echo "Cannot run native mvnd '${MVND_CMD-}'!" >&2 - exit 1 + exec -- "$(echo "$MVND_HOME"/bin/mvnd-native-*)" "$@" fi case "$(uname -a)" in -(CYGWIN*|MINGW*) os=windows arch=$(uname -m) ;; +(CYGWIN*|MINGW*) os=windows arch="${PROCESSOR_ARCHITEW6432:-"${PROCESSOR_ARCHITECTURE:-"$(uname -m)"}"}" ;; (Darwin*x86_64) os=darwin arch=amd64 ;; (Darwin*arm64) os=darwin arch=aarch64 ;; (Linux*) os=linux arch=$(uname -m) ;; (*) os=$(uname) arch=$(uname -m) ;; esac [ "${arch-}" != x86_64 ] || arch=amd64 +[ "${arch-}" != AMD64 ] || arch=amd64 [ "${arch-}" != arm64 ] || arch=aarch64 # try native image MVND_CMD="$MVND_HOME/bin/mvnd-native-$os-$arch" +[ "${os-}" != windows ] || MVND_CMD="$MVND_CMD.exe" if [ -x "$MVND_CMD" ]; then is_native=true if [ "$os" = linux ]; then - case "$(ldd "$MVND_CMD")" in + case "$(ldd "$MVND_CMD" 2>&1)" in (''|*"not found"*) is_native=false ;; esac fi - ! $is_native || exec "$MVND_CMD" "$@" + ! $is_native || exec -- "$MVND_CMD" "$@" fi # fallback to pure java version diff --git a/dist/src/main/distro/bin/mvnd.cmd b/dist/src/main/distro/bin/mvnd.cmd index b3c949425..ec443b899 100644 --- a/dist/src/main/distro/bin/mvnd.cmd +++ b/dist/src/main/distro/bin/mvnd.cmd @@ -47,7 +47,11 @@ if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* set ERROR_CODE=0 @REM try execute native image -set "MVND_CMD=%~dp0\mvnd-native-windows-%PROCESSOR_ARCHITECTURE:x64=amd64%.exe" +if not "%PROCESSOR_ARCHITEW6432%"=="" ( + set "MVND_CMD=%~dp0\mvnd-native-windows-%PROCESSOR_ARCHITEW6432:x64=amd64%.exe" +) else ( + set "MVND_CMD=%~dp0\mvnd-native-windows-%PROCESSOR_ARCHITECTURE:x64=amd64%.exe" +) if not exist "%MVND_CMD%" goto noNativeImage "%MVND_CMD%" %* if ERRORLEVEL 1 goto error