64
64
riscv64gc-unknown-linux-gnu
65
65
aarch64-unknown-linux-gnu
66
66
aarch64-unknown-linux-musl
67
+ powerpc64le-unknown-linux-gnu
67
68
armv5te-unknown-linux-gnueabi
68
69
- name : Install cross-compilation tools
69
70
run : |
86
87
- run : cargo check --workspace --release -vv --target=riscv64gc-unknown-linux-gnu
87
88
- run : cargo check --workspace --release -vv --target=aarch64-unknown-linux-gnu
88
89
- run : cargo check --workspace --release -vv --target=aarch64-unknown-linux-musl
90
+ - run : cargo check --workspace --release -vv --target=powerpc64le-unknown-linux-gnu
89
91
- run : cargo check --workspace --release -vv --target=armv5te-unknown-linux-gnueabi
90
92
91
93
check_no_default_features :
@@ -168,7 +170,7 @@ jobs:
168
170
runs-on : ${{ matrix.os }}
169
171
strategy :
170
172
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]
172
174
include :
173
175
- build : ubuntu
174
176
os : ubuntu-latest
@@ -191,6 +193,14 @@ jobs:
191
193
gcc : aarch64-linux-gnu-gcc
192
194
qemu : qemu-aarch64 -L /usr/aarch64-linux-gnu
193
195
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
194
204
- build : riscv64-linux
195
205
os : ubuntu-latest
196
206
rust : nightly
@@ -320,7 +330,7 @@ jobs:
320
330
runs-on : ${{ matrix.os }}
321
331
strategy :
322
332
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]
324
334
include :
325
335
- build : ubuntu
326
336
os : ubuntu-latest
@@ -340,6 +350,14 @@ jobs:
340
350
gcc : aarch64-linux-gnu-gcc
341
351
qemu : qemu-aarch64 -L /usr/aarch64-linux-gnu
342
352
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
343
361
- build : riscv64-linux
344
362
os : ubuntu-latest
345
363
rust : stable
@@ -363,6 +381,7 @@ jobs:
363
381
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
364
382
CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
365
383
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
384
+ CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
366
385
CARGO_TARGET_RISCV64_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
367
386
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNU_RUSTFLAGS : --cfg rustix_use_libc
368
387
steps :
@@ -418,3 +437,77 @@ jobs:
418
437
cargo test --verbose --features=all-impls,procfs --release --workspace -- --nocapture
419
438
env:
420
439
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