commit:     1cf828923e730d232df90a3a057777230bc7092c
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Jul  9 20:28:52 2024 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Tue Jul 16 09:15:36 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1cf82892

go-env.eclass: Rewrite the go-env_goarch() logic

The previous logic was flawed, incomplete, and needlessly made use of
USE flags. We can rely on the tuple instead. Tested against all the
tuples we have in our profiles.

Closes: https://bugs.gentoo.org/935414
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 eclass/go-env.eclass | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/eclass/go-env.eclass b/eclass/go-env.eclass
index c34c634bb600..c839c41be0d7 100644
--- a/eclass/go-env.eclass
+++ b/eclass/go-env.eclass
@@ -53,21 +53,23 @@ go-env_set_compile_environment() {
 # @DESCRIPTION:
 # Returns the appropriate GOARCH setting for the target architecture.
 go-env_goarch() {
-       # By chance most portage arch names match Go
-       local tc_arch=$(tc-arch $@)
-       case "${tc_arch}" in
-               x86)    echo 386;;
-               x64-*)  echo amd64;;
-               loong)  echo loong64;;
-               mips) if use abi_mips_o32; then
-                               [[ $(tc-endian $@) = big ]] && echo mips || 
echo mipsle
-                       elif use abi_mips_n64; then
-                               [[ $(tc-endian $@) = big ]] && echo mips64 || 
echo mips64le
-                       fi ;;
-               ppc64) [[ $(tc-endian $@) = big ]] && echo ppc64 || echo 
ppc64le ;;
-               riscv) echo riscv64 ;;
-               s390) echo s390x ;;
-               *)              echo "${tc_arch}";;
+       local target=${1:-${CHOST}}
+       # Some Portage arch names match Go.
+       local arch=$(tc-arch "${target}") cpu=${target%%-*}
+       case "${arch}" in
+               x86)    echo 386 ;;
+               loong)  echo loong64 ;;
+               *)              case "${cpu}" in
+                                       aarch64*be) echo arm64be ;;
+                                       arm64) echo arm64 ;;
+                                       arm*b*) echo armbe ;;
+                                       mips64*l*) echo mips64le ;;
+                                       mips*l*) echo mipsle ;;
+                                       powerpc64le*) echo ppc64le ;;
+                                       arm64|s390x) echo "${cpu}" ;;
+                                       mips64*|riscv64*|sparc64*) echo 
"${arch}64" ;;
+                                       *) echo "${arch}" ;;
+                               esac ;;
        esac
 }
 

Reply via email to