6464 riscv64gc-unknown-linux-gnu
6565 aarch64-unknown-linux-gnu
6666 aarch64-unknown-linux-musl
67+ powerpc64le-unknown-linux-gnu
6768 armv5te-unknown-linux-gnueabi
6869 - name : Install cross-compilation tools
6970 run : |
8687 - run : cargo check --workspace --release -vv --target=riscv64gc-unknown-linux-gnu
8788 - run : cargo check --workspace --release -vv --target=aarch64-unknown-linux-gnu
8889 - run : cargo check --workspace --release -vv --target=aarch64-unknown-linux-musl
90+ - run : cargo check --workspace --release -vv --target=powerpc64le-unknown-linux-gnu
8991 - run : cargo check --workspace --release -vv --target=armv5te-unknown-linux-gnueabi
9092
9193 check_no_default_features :
@@ -168,7 +170,7 @@ jobs:
168170 runs-on : ${{ matrix.os }}
169171 strategy :
170172 matrix :
171- build : [ubuntu, ubuntu-18.04, i686-linux, aarch64-linux, riscv64-linux, arm-linux, ubuntu-stable, i686-linux-stable, aarch64-linux-stable, riscv64-linux-stable, arm-linux-stable, macos, macos-11, windows, windows-2016, windows-2022]
173+ build : [ubuntu, ubuntu-18.04, i686-linux, aarch64-linux, powerpc64le-linux, riscv64-linux, arm-linux, ubuntu-stable, i686-linux-stable, aarch64-linux-stable, riscv64-linux-stable, arm-linux-stable, macos, macos-11, windows, windows-2016, windows-2022]
172174 include :
173175 - build : ubuntu
174176 os : ubuntu-latest
@@ -191,6 +193,14 @@ jobs:
191193 gcc : aarch64-linux-gnu-gcc
192194 qemu : qemu-aarch64 -L /usr/aarch64-linux-gnu
193195 qemu_target : aarch64-linux-user
196+ - build : powerpc64le-linux
197+ os : ubuntu-latest
198+ rust : nightly
199+ target : powerpc64le-unknown-linux-gnu
200+ gcc_package : gcc-powerpc64le-linux-gnu
201+ gcc : powerpc64le-linux-gnu-gcc
202+ qemu : qemu-ppc64le -L /usr/powerpc64le-linux-gnu
203+ qemu_target : ppc64le-linux-user
194204 - build : riscv64-linux
195205 os : ubuntu-latest
196206 rust : nightly
@@ -320,7 +330,7 @@ jobs:
320330 runs-on : ${{ matrix.os }}
321331 strategy :
322332 matrix :
323- build : [ubuntu, i686-linux, aarch64-linux, riscv64-linux, arm-linux]
333+ build : [ubuntu, i686-linux, aarch64-linux, powerpc64le-linux, riscv64-linux, arm-linux]
324334 include :
325335 - build : ubuntu
326336 os : ubuntu-latest
@@ -340,6 +350,14 @@ jobs:
340350 gcc : aarch64-linux-gnu-gcc
341351 qemu : qemu-aarch64 -L /usr/aarch64-linux-gnu
342352 qemu_target : aarch64-linux-user
353+ - build : powerpc64le-linux
354+ os : ubuntu-latest
355+ rust : stable
356+ target : powerpc64le-unknown-linux-gnu
357+ gcc_package : gcc-powerpc64le-linux-gnu
358+ gcc : powerpc64le-linux-gnu-gcc
359+ qemu : qemu-ppc64le -L /usr/powerpc64le-linux-gnu
360+ qemu_target : ppc64le-linux-user
343361 - build : riscv64-linux
344362 os : ubuntu-latest
345363 rust : stable
@@ -363,6 +381,7 @@ jobs:
363381 CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
364382 CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
365383 CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
384+ CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
366385 CARGO_TARGET_RISCV64_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
367386 CARGO_TARGET_ARM_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
368387 steps :
@@ -418,3 +437,77 @@ jobs:
418437 cargo test --verbose --features=all-impls,procfs --release --workspace -- --nocapture
419438 env:
420439 RUST_BACKTRACE: 1
440+
441+ test_rustix_use_experimental_asm :
442+ name : Test rustix_use_experimental_asm
443+ runs-on : ${{ matrix.os }}
444+ strategy :
445+ matrix :
446+ build : [powerpc64le-linux]
447+ include :
448+ - build : powerpc64le-linux
449+ os : ubuntu-latest
450+ rust : nightly
451+ target : powerpc64le-unknown-linux-gnu
452+ gcc_package : gcc-powerpc64le-linux-gnu
453+ gcc : powerpc64le-linux-gnu-gcc
454+ qemu : qemu-ppc64le -L /usr/powerpc64le-linux-gnu
455+ qemu_target : ppc64le-linux-user
456+ env :
457+ # -D warnings is commented out in our install-rust action; re-add it here.
458+ RUSTFLAGS : --cfg rustix_use_experimental_asm -D warnings
459+ RUSTDOCFLAGS : --cfg rustix_use_experimental_asm
460+ CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_experimental_asm
461+ steps :
462+ - uses : actions/checkout@v2
463+ with :
464+ submodules : true
465+ - uses : ./.github/actions/install-rust
466+ with :
467+ toolchain : ${{ matrix.rust }}
468+
469+ - name : Configure Cargo target
470+ run : |
471+ echo CARGO_BUILD_TARGET=${{ matrix.target }} >> $GITHUB_ENV
472+ rustup target add ${{ matrix.target }}
473+ if : matrix.target != ''
474+
475+ - name : Install cross-compilation tools
476+ run : |
477+ set -ex
478+ sudo apt-get update
479+ sudo apt-get install -y ${{ matrix.gcc_package }} ninja-build
480+ upcase=$(echo ${{ matrix.target }} | awk '{ print toupper($0) }' | sed 's/-/_/g')
481+ echo CARGO_TARGET_${upcase}_LINKER=${{ matrix.gcc }} >> $GITHUB_ENV
482+ if : matrix.gcc_package != '' && matrix.os == 'ubuntu-latest'
483+
484+ - name : Install cross-compilation libraries
485+ run : |
486+ set -ex
487+ sudo apt-get update
488+ sudo apt-get install -y ${{ matrix.libc_package }}
489+ if : matrix.libc_package != '' && matrix.os == 'ubuntu-latest'
490+
491+ - name : Install qemu
492+ run : |
493+ set -ex
494+ # Download and build qemu from source since the most recent release is
495+ # way faster at arm emulation than the current version github actions'
496+ # ubuntu image uses. Disable as much as we can to get it to build
497+ # quickly.
498+ cd
499+ curl https://download.qemu.org/qemu-6.1.0.tar.xz | tar xJf -
500+ cd qemu-6.1.0
501+ ./configure --target-list=${{ matrix.qemu_target }} --prefix=$HOME/qemu --disable-tools --disable-slirp --disable-fdt --disable-capstone --disable-docs
502+ make -j$(nproc) install
503+
504+ # Configure Cargo for cross compilation and tell it how it can run
505+ # cross executables
506+ upcase=$(echo ${{ matrix.target }} | awk '{ print toupper($0) }' | sed 's/-/_/g')
507+ echo CARGO_TARGET_${upcase}_RUNNER=$HOME/qemu/bin/${{ matrix.qemu }} >> $GITHUB_ENV
508+ if : matrix.qemu != '' && matrix.os == 'ubuntu-latest'
509+
510+ - run : |
511+ cargo test --verbose --features=all-impls,procfs --release --workspace -- --nocapture
512+ env:
513+ RUST_BACKTRACE: 1
0 commit comments