diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6408d37d..bd50ebbb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,9 @@ jobs: include: # NB: Sync list with https://github.com/taiki-e/checkout-action/blob/HEAD/.github/workflows/ci.yml - os: ubuntu-22.04 + - os: ubuntu-22.04-arm - os: ubuntu-24.04 + - os: ubuntu-24.04-arm - os: ubuntu-22.04 tool: major.minor.patch - os: ubuntu-22.04 diff --git a/main.sh b/main.sh index b80ea6cb..28487e4d 100755 --- a/main.sh +++ b/main.sh @@ -740,9 +740,9 @@ for tool in "${tools[@]}"; do read_manifest "${tool}" "${version}" if [[ "${download_info}" == "null" ]]; then if [[ "${rust_crate}" == "null" ]]; then - bail "${tool}@${version} for '${host_os}' is not supported" + bail "${tool}@${version} for '${host_arch}_${host_os}' is not supported" fi - warn "${tool}@${version} for '${host_os}' is not supported; fallback to cargo-binstall" + warn "${tool}@${version} for '${host_arch}_${host_os}' is not supported; fallback to cargo-binstall" case "${version}" in latest) unsupported_tools+=("${rust_crate}") ;; *) unsupported_tools+=("${rust_crate}@${version}") ;; diff --git a/tools/ci/tool-list.sh b/tools/ci/tool-list.sh index cd7fa2e1..d65b08d8 100755 --- a/tools/ci/tool-list.sh +++ b/tools/ci/tool-list.sh @@ -110,6 +110,12 @@ case "$(uname -s)" in ;; *) bail "unrecognized OS type '$(uname -s)'" ;; esac +# See main.sh +case "$(uname -m)" in + aarch64 | arm64) host_arch=aarch64 ;; + xscale | arm | armv*l) bail "32-bit Arm runner is not supported yet by this action; if you need support for this platform, please submit an issue at " ;; + *) host_arch=x86_64 ;; +esac tools=() for manifest in tools/codegen/base/*.json; do @@ -120,9 +126,13 @@ for manifest in tools/codegen/base/*.json; do continue fi case "${host_os}" in - linux*) ;; + linux*) + if [[ "${host_arch}" != "x86_64" ]] && [[ "$(jq -r ".platform.${host_arch}_${host_os}_gnu" "${manifest}")" == "null" ]] && [[ "$(jq -r ".platform.${host_arch}_${host_os}_musl" "${manifest}")" == "null" ]]; then + continue + fi + ;; *) - if [[ "$(jq -r ".platform.x86_64_${host_os}" "${manifest}")" == "null" ]]; then + if [[ "$(jq -r ".platform.x86_64_${host_os}" "${manifest}")" == "null" ]] && [[ "$(jq -r ".platform.${host_arch}_${host_os}" "${manifest}")" == "null" ]]; then continue fi ;;