From a602831b5c66c048f64ff6e3ed07fe022617c9d6 Mon Sep 17 00:00:00 2001 From: messense Date: Wed, 22 Jan 2025 19:41:35 +0800 Subject: [PATCH] Add support for arm64 Linux runner (#316) --- .github/workflows/test.yml | 10 +- dist/index.js | 241 ++++++++++++++++++++++++------------ package-lock.json | 30 ++--- src/index.ts | 247 ++++++++++++++++++++++++------------- 4 files changed, 344 insertions(+), 184 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 52faa16..915414e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,6 +37,7 @@ jobs: matrix: os: - ubuntu-24.04 + - ubuntu-24.04-arm - macos-13 - windows-latest toolchain: [stable, nightly] @@ -85,6 +86,8 @@ jobs: working-directory: maturin/test-crates/pyo3-mixed manylinux: 'auto' - name: maturin build manylinux2014 + # No llvm-toolset-7 in arm64 manylinux image + if: matrix.os != 'ubuntu-24.04-arm' uses: ./ with: args: -m maturin/test-crates/pyo3-mixed/Cargo.toml -i python3.10 --out dist @@ -192,6 +195,8 @@ jobs: matrix: os: - ubuntu-latest + # TOFIX: dbhi/qus/action does not support arm64 + # - ubuntu-24.04-arm platform: [ { manylinux: '2014', @@ -223,11 +228,6 @@ jobs: target: 'powerpc64le-unknown-linux-gnu', test-crate: 'maturin/test-crates/pyo3-mixed' }, - { - manylinux: 'manylinux_2_24', - target: 'powerpc64le-unknown-linux-gnu', - test-crate: 'maturin/test-crates/pyo3-mixed' - }, { manylinux: 'manylinux_2_28', target: 'aarch64-unknown-linux-gnu', diff --git a/dist/index.js b/dist/index.js index 499d98f..f391834 100644 --- a/dist/index.js +++ b/dist/index.js @@ -11377,88 +11377,164 @@ const DEFAULT_TARGET = { arm64: 'aarch64-unknown-linux-gnu' }; const DEFAULT_CONTAINERS = { - 'x86_64-unknown-linux-gnu': { - auto: 'quay.io/pypa/manylinux2014_x86_64:latest', - '2010': 'quay.io/pypa/manylinux2010_x86_64:latest', - '2_12': 'quay.io/pypa/manylinux2010_x86_64:latest', - '2014': 'quay.io/pypa/manylinux2014_x86_64:latest', - '2_17': 'quay.io/pypa/manylinux2014_x86_64:latest', - '2_24': 'quay.io/pypa/manylinux_2_24_x86_64:latest', - '2_28': 'quay.io/pypa/manylinux_2_28_x86_64:latest' - }, - 'x86_64-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl' - }, - 'i686-unknown-linux-gnu': { - auto: 'quay.io/pypa/manylinux2014_i686:latest', - '2010': 'quay.io/pypa/manylinux2010_i686:latest', - '2_12': 'quay.io/pypa/manylinux2010_i686:latest', - '2014': 'quay.io/pypa/manylinux2014_i686:latest', - '2_17': 'quay.io/pypa/manylinux2014_i686:latest', - '2_24': 'quay.io/pypa/manylinux_2_24_i686:latest' - }, - 'i686-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl' - }, - 'aarch64-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', - '2_24': 'messense/manylinux_2_24-cross:aarch64', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:aarch64' - }, - 'aarch64-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl' - }, - 'arm-unknown-linux-musleabihf': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf' - }, - 'armv7-unknown-linux-gnueabihf': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', - '2_24': 'messense/manylinux_2_24-cross:armv7', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7' - }, - 'armv7-unknown-linux-musleabihf': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf' - }, - 'powerpc64-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64' - }, - 'powerpc64le-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', - '2_24': 'messense/manylinux_2_24-cross:ppc64le', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le' - }, - 'powerpc64le-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl' + x64: { + 'x86_64-unknown-linux-gnu': { + auto: 'quay.io/pypa/manylinux2014_x86_64:latest', + '2010': 'quay.io/pypa/manylinux2010_x86_64:latest', + '2_12': 'quay.io/pypa/manylinux2010_x86_64:latest', + '2014': 'quay.io/pypa/manylinux2014_x86_64:latest', + '2_17': 'quay.io/pypa/manylinux2014_x86_64:latest', + '2_24': 'quay.io/pypa/manylinux_2_24_x86_64:latest', + '2_28': 'quay.io/pypa/manylinux_2_28_x86_64:latest', + '2_34': 'quay.io/pypa/manylinux_2_34_x86_64:latest' + }, + 'x86_64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl' + }, + 'i686-unknown-linux-gnu': { + auto: 'quay.io/pypa/manylinux2014_i686:latest', + '2010': 'quay.io/pypa/manylinux2010_i686:latest', + '2_12': 'quay.io/pypa/manylinux2010_i686:latest', + '2014': 'quay.io/pypa/manylinux2014_i686:latest', + '2_17': 'quay.io/pypa/manylinux2014_i686:latest', + '2_24': 'quay.io/pypa/manylinux_2_24_i686:latest' + }, + 'i686-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl' + }, + 'aarch64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', + '2_24': 'messense/manylinux_2_24-cross:aarch64', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:aarch64' + }, + 'aarch64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl' + }, + 'arm-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf' + }, + 'armv7-unknown-linux-gnueabihf': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_24': 'messense/manylinux_2_24-cross:armv7', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7' + }, + 'armv7-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf' + }, + 'powerpc64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64' + }, + 'powerpc64le-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_24': 'messense/manylinux_2_24-cross:ppc64le', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le' + }, + 'powerpc64le-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl' + }, + 's390x-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_24': 'messense/manylinux_2_24-cross:s390x', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x' + } }, - 's390x-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', - '2_24': 'messense/manylinux_2_24-cross:s390x', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x' + arm64: { + 'x86_64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:x86_64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:x86_64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:x86_64', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:x86_64' + }, + 'x86_64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl' + }, + 'i686-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:i686', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:i686', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:i686' + }, + 'i686-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl' + }, + 'aarch64-unknown-linux-gnu': { + auto: 'quay.io/pypa/manylinux2014_aarch64:latest', + '2014': 'quay.io/pypa/manylinux2014_aarch64:latest', + '2_17': 'quay.io/pypa/manylinux2014_aarch64:latest', + '2_28': 'quay.io/pypa/manylinux_2_28_aarch64:latest', + '2_34': 'quay.io/pypa/manylinux_2_34_aarch64:latest' + }, + 'aarch64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl' + }, + 'arm-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf' + }, + 'armv7-unknown-linux-gnueabihf': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7' + }, + 'armv7-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf' + }, + 'powerpc64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64' + }, + 'powerpc64le-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le' + }, + 'powerpc64le-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl' + }, + 's390x-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x' + } } }; -const DEFAULT_CONTAINER = DEFAULT_CONTAINERS[DEFAULT_TARGET[process.arch]]; +const DEFAULT_CONTAINER = DEFAULT_CONTAINERS[process.arch][DEFAULT_TARGET[process.arch]]; const TARGET_ALIASES = { darwin: { x64: 'x86_64-apple-darwin', @@ -11748,7 +11824,8 @@ async function getDockerContainer(target, manylinux, container) { container === 'auto' || container === 'true') { container = - ((_a = DEFAULT_CONTAINERS[target]) === null || _a === void 0 ? void 0 : _a[manylinux]) || DEFAULT_CONTAINER[manylinux]; + ((_a = DEFAULT_CONTAINERS[process.arch][target]) === null || _a === void 0 ? void 0 : _a[manylinux]) || + DEFAULT_CONTAINER[manylinux]; } return container; } @@ -11783,8 +11860,8 @@ async function dockerBuild(container, maturinRelease, hostHomeMount, args) { } } else if (!container.includes(':') && - ((_a = DEFAULT_CONTAINERS[targetOrHostTriple]) === null || _a === void 0 ? void 0 : _a[container])) { - image = DEFAULT_CONTAINERS[targetOrHostTriple][container]; + ((_a = DEFAULT_CONTAINERS[process.arch][targetOrHostTriple]) === null || _a === void 0 ? void 0 : _a[container])) { + image = DEFAULT_CONTAINERS[process.arch][targetOrHostTriple][container]; } else { image = container; diff --git a/package-lock.json b/package-lock.json index 8e6e045..0896e94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -793,10 +793,11 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2193,12 +2194,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -3548,9 +3550,9 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -4594,12 +4596,12 @@ "dev": true }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, diff --git a/src/index.ts b/src/index.ts index 429f002..d3caa3a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,90 +22,170 @@ const DEFAULT_TARGET: Record = { arm64: 'aarch64-unknown-linux-gnu' } -const DEFAULT_CONTAINERS: Record> = { - 'x86_64-unknown-linux-gnu': { - auto: 'quay.io/pypa/manylinux2014_x86_64:latest', - '2010': 'quay.io/pypa/manylinux2010_x86_64:latest', - '2_12': 'quay.io/pypa/manylinux2010_x86_64:latest', - '2014': 'quay.io/pypa/manylinux2014_x86_64:latest', - '2_17': 'quay.io/pypa/manylinux2014_x86_64:latest', - '2_24': 'quay.io/pypa/manylinux_2_24_x86_64:latest', - '2_28': 'quay.io/pypa/manylinux_2_28_x86_64:latest' - }, - 'x86_64-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl' - }, - 'i686-unknown-linux-gnu': { - auto: 'quay.io/pypa/manylinux2014_i686:latest', - '2010': 'quay.io/pypa/manylinux2010_i686:latest', - '2_12': 'quay.io/pypa/manylinux2010_i686:latest', - '2014': 'quay.io/pypa/manylinux2014_i686:latest', - '2_17': 'quay.io/pypa/manylinux2014_i686:latest', - '2_24': 'quay.io/pypa/manylinux_2_24_i686:latest' - }, - 'i686-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl' - }, - 'aarch64-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', - '2_24': 'messense/manylinux_2_24-cross:aarch64', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:aarch64' - }, - 'aarch64-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl' - }, - 'arm-unknown-linux-musleabihf': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf' - }, - 'armv7-unknown-linux-gnueabihf': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', - '2_24': 'messense/manylinux_2_24-cross:armv7', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7' - }, - 'armv7-unknown-linux-musleabihf': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf' - }, - 'powerpc64-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64' - }, - 'powerpc64le-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', - '2_24': 'messense/manylinux_2_24-cross:ppc64le', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le' - }, - 'powerpc64le-unknown-linux-musl': { - auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', - musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', - musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl' +const DEFAULT_CONTAINERS: Record< + string, + Record> +> = { + x64: { + 'x86_64-unknown-linux-gnu': { + auto: 'quay.io/pypa/manylinux2014_x86_64:latest', + '2010': 'quay.io/pypa/manylinux2010_x86_64:latest', + '2_12': 'quay.io/pypa/manylinux2010_x86_64:latest', + '2014': 'quay.io/pypa/manylinux2014_x86_64:latest', + '2_17': 'quay.io/pypa/manylinux2014_x86_64:latest', + '2_24': 'quay.io/pypa/manylinux_2_24_x86_64:latest', + '2_28': 'quay.io/pypa/manylinux_2_28_x86_64:latest', + '2_34': 'quay.io/pypa/manylinux_2_34_x86_64:latest' + }, + 'x86_64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl' + }, + 'i686-unknown-linux-gnu': { + auto: 'quay.io/pypa/manylinux2014_i686:latest', + '2010': 'quay.io/pypa/manylinux2010_i686:latest', + '2_12': 'quay.io/pypa/manylinux2010_i686:latest', + '2014': 'quay.io/pypa/manylinux2014_i686:latest', + '2_17': 'quay.io/pypa/manylinux2014_i686:latest', + '2_24': 'quay.io/pypa/manylinux_2_24_i686:latest' + }, + 'i686-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl' + }, + 'aarch64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:aarch64', + '2_24': 'messense/manylinux_2_24-cross:aarch64', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:aarch64' + }, + 'aarch64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl' + }, + 'arm-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf' + }, + 'armv7-unknown-linux-gnueabihf': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_24': 'messense/manylinux_2_24-cross:armv7', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7' + }, + 'armv7-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf' + }, + 'powerpc64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64' + }, + 'powerpc64le-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_24': 'messense/manylinux_2_24-cross:ppc64le', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le' + }, + 'powerpc64le-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl' + }, + 's390x-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_24': 'messense/manylinux_2_24-cross:s390x', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x' + } }, - 's390x-unknown-linux-gnu': { - auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x', - '2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', - '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', - '2_24': 'messense/manylinux_2_24-cross:s390x', - '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x' + arm64: { + 'x86_64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:x86_64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:x86_64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:x86_64', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:x86_64' + }, + 'x86_64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:x86_64-musl' + }, + 'i686-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:i686', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:i686', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:i686' + }, + 'i686-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:i686-musl' + }, + 'aarch64-unknown-linux-gnu': { + auto: 'quay.io/pypa/manylinux2014_aarch64:latest', + '2014': 'quay.io/pypa/manylinux2014_aarch64:latest', + '2_17': 'quay.io/pypa/manylinux2014_aarch64:latest', + '2_28': 'quay.io/pypa/manylinux_2_28_aarch64:latest', + '2_34': 'quay.io/pypa/manylinux_2_34_aarch64:latest' + }, + 'aarch64-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:aarch64-musl' + }, + 'arm-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:arm-musleabihf' + }, + 'armv7-unknown-linux-gnueabihf': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:armv7', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:armv7' + }, + 'armv7-unknown-linux-musleabihf': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:armv7-musleabihf' + }, + 'powerpc64-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64' + }, + 'powerpc64le-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:ppc64le', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le' + }, + 'powerpc64le-unknown-linux-musl': { + auto: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_1: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl', + musllinux_1_2: 'ghcr.io/rust-cross/rust-musl-cross:powerpc64le-musl' + }, + 's390x-unknown-linux-gnu': { + auto: 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2014': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_17': 'ghcr.io/rust-cross/manylinux2014-cross:s390x', + '2_28': 'ghcr.io/rust-cross/manylinux_2_28-cross:s390x' + } } } -const DEFAULT_CONTAINER = DEFAULT_CONTAINERS[DEFAULT_TARGET[process.arch]] +const DEFAULT_CONTAINER = + DEFAULT_CONTAINERS[process.arch][DEFAULT_TARGET[process.arch]] /** * Rust target aliases by platform @@ -465,7 +545,8 @@ async function getDockerContainer( ) { // Get default Docker container with fallback container = - DEFAULT_CONTAINERS[target]?.[manylinux] || DEFAULT_CONTAINER[manylinux] + DEFAULT_CONTAINERS[process.arch][target]?.[manylinux] || + DEFAULT_CONTAINER[manylinux] } return container } @@ -516,10 +597,10 @@ async function dockerBuild( } } else if ( !container.includes(':') && - DEFAULT_CONTAINERS[targetOrHostTriple]?.[container] + DEFAULT_CONTAINERS[process.arch][targetOrHostTriple]?.[container] ) { // Use default container for example when `container: 2_27` - image = DEFAULT_CONTAINERS[targetOrHostTriple][container] + image = DEFAULT_CONTAINERS[process.arch][targetOrHostTriple][container] } else { image = container }