Skip to content

Commit

Permalink
Add support for arm64 Linux runner (#316)
Browse files Browse the repository at this point in the history
  • Loading branch information
messense authored Jan 22, 2025
1 parent e9b5cc0 commit a602831
Show file tree
Hide file tree
Showing 4 changed files with 344 additions and 184 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ jobs:
matrix:
os:
- ubuntu-24.04
- ubuntu-24.04-arm
- macos-13
- windows-latest
toolchain: [stable, nightly]
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -192,6 +195,8 @@ jobs:
matrix:
os:
- ubuntu-latest
# TOFIX: dbhi/qus/action does not support arm64
# - ubuntu-24.04-arm
platform: [
{
manylinux: '2014',
Expand Down Expand Up @@ -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',
Expand Down
241 changes: 159 additions & 82 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;
Expand Down
30 changes: 16 additions & 14 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit a602831

Please sign in to comment.