Add WIP on musl C++ support #191
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Self-test | |
on: | |
push: | |
pull_request: | |
jobs: | |
test-pure-rust: | |
name: Test a pure Rust project | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- platform_name: FreeBSD-x86_64 | |
os: ubuntu-20.04 | |
target: x86_64-unknown-freebsd | |
cache-cross-binary: true | |
expect_file_re: "x86-64.+FreeBSD" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: false | |
- platform_name: Linux-x86_64 | |
os: ubuntu-20.04 | |
target: x86_64-unknown-linux-musl | |
cache-cross-binary: true | |
expect_file_re: "ELF.+x86-64" | |
expect_cross: "--no-expect-cross" | |
expect_stripped: "--expect-stripped" | |
can_test: true | |
- platform_name: Linux-aarch64 | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
cache-cross-binary: true | |
expect_file_re: "aarch64" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-aarch64 (no cache) | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
cache-cross-binary: false | |
expect_file_re: "aarch64" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-aarch64 with cross v0.2.3 | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
cross-version: "v0.2.3" | |
cache-cross-binary: true | |
expect_file_re: "aarch64" | |
expect_cross: "--expect-cross" | |
expect_cross_version: "0.2.3" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-aarch64 with cross v0.2.3 (no cache) | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
cross-version: "v0.2.3" | |
cache-cross-binary: false | |
expect_file_re: "aarch64" | |
expect_cross: "--expect-cross" | |
expect_cross_version: "0.2.3" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-aarch64 with cross 19be834 | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
cross-version: "19be834" | |
cache-cross-binary: true | |
expect_file_re: "aarch64" | |
expect_cross: "--expect-cross" | |
expect_cross_version: "19be834" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-aarch64 with cross 19be834 | |
os: ubuntu-20.04 | |
target: aarch64-unknown-linux-musl | |
cross-version: "19be834" | |
cache-cross-binary: false | |
expect_file_re: "aarch64" | |
expect_cross: "--expect-cross" | |
expect_cross_version: "19be834" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-arm | |
os: ubuntu-20.04 | |
target: arm-unknown-linux-musleabi | |
cache-cross-binary: true | |
expect_file_re: "32.+ARM" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-i586 | |
os: ubuntu-20.04 | |
target: i586-unknown-linux-musl | |
cache-cross-binary: true | |
expect_file_re: "ELF.+80386" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-i686 | |
os: ubuntu-20.04 | |
target: i686-unknown-linux-musl | |
cache-cross-binary: true | |
expect_file_re: "ELF.+80386" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-powerpc | |
os: ubuntu-20.04 | |
target: powerpc-unknown-linux-gnu | |
cache-cross-binary: true | |
expect_file_re: "32.+PowerPC" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-powerpc64 | |
os: ubuntu-20.04 | |
target: powerpc64-unknown-linux-gnu | |
cache-cross-binary: true | |
expect_file_re: "64.+PowerPC" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-powerpc64le | |
os: ubuntu-20.04 | |
target: powerpc64le-unknown-linux-gnu | |
cache-cross-binary: true | |
expect_file_re: "64.+PowerPC" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-riscv64 | |
os: ubuntu-20.04 | |
target: riscv64gc-unknown-linux-gnu | |
cache-cross-binary: true | |
expect_file_re: "64.+RISC-V" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: Linux-s390x | |
os: ubuntu-20.04 | |
target: s390x-unknown-linux-gnu | |
cache-cross-binary: true | |
expect_file_re: "64.+S/390" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: true | |
- platform_name: NetBSD-x86_64 | |
os: ubuntu-20.04 | |
target: x86_64-unknown-netbsd | |
cache-cross-binary: true | |
expect_file_re: "x86-64.+NetBSD" | |
expect_cross: "--expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: false | |
- platform_name: Windows-aarch64 | |
os: windows-latest | |
target: aarch64-pc-windows-msvc | |
cache-cross-binary: true | |
expect_file_re: "Aarch64.+Windows" | |
expect_cross: "--no-expect-cross" | |
expect_stripped: "--no-expect-stripped" | |
can_test: false | |
- platform_name: Windows-i686 | |
os: windows-latest | |
target: i686-pc-windows-msvc | |
cache-cross-binary: true | |
expect_file_re: "80386.+Windows" | |
expect_cross: "--no-expect-cross" | |
expect_stripped: "--expect-stripped" | |
can_test: true | |
- platform_name: Windows-x86_64 | |
os: windows-latest | |
target: x86_64-pc-windows-msvc | |
cache-cross-binary: true | |
expect_file_re: "x86-64.+Windows" | |
expect_stripped: "--expect-stripped" | |
can_test: true | |
- platform_name: macOS-x86_64 | |
os: macOS-latest | |
target: x86_64-apple-darwin | |
cache-cross-binary: true | |
expect_file_re: "Mach-O.+x86_64" | |
expect_cross: "--no-expect-cross" | |
expect_stripped: "--expect-stripped" | |
can_test: true | |
- platform_name: macOS-aarch64 | |
os: macOS-latest | |
target: aarch64-apple-darwin | |
cache-cross-binary: true | |
expect_file_re: "Mach-O.+arm64" | |
expect_cross: "--no-expect-cross" | |
expect_stripped: "--expect-stripped" | |
can_test: false | |
runs-on: ${{ matrix.platform.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Copy test project to root | |
shell: bash | |
run: | | |
cp -a test-projects/pure-rust/* . | |
rm -fr test-projects | |
- name: Run both commands | |
uses: ./ | |
with: | |
command: both | |
cross-version: ${{ matrix.platform.cross-version }} | |
cache-cross-binary: ${{ matrix.platform.cache-cross-binary }} | |
target: ${{ matrix.platform.target }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
if: ${{ matrix.platform.can_test }} | |
- name: Run test command | |
uses: ./ | |
with: | |
command: test | |
cross-version: ${{ matrix.platform.cross-version }} | |
cache-cross-binary: ${{ matrix.platform.cache-cross-binary }} | |
target: ${{ matrix.platform.target }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
if: ${{ matrix.platform.can_test }} | |
- name: Run build command | |
uses: ./ | |
with: | |
command: build | |
cross-version: ${{ matrix.platform.cross-version }} | |
cache-cross-binary: ${{ matrix.platform.cache-cross-binary }} | |
target: ${{ matrix.platform.target }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
strip: true | |
- name: Run build command for subdir | |
uses: ./ | |
with: | |
command: build | |
cross-version: ${{ matrix.platform.cross-version }} | |
cache-cross-binary: ${{ matrix.platform.cache-cross-binary }} | |
working-directory: subcrate | |
target: ${{ matrix.platform.target }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
strip: true | |
- name: Check binary and cross on ${{ matrix.platform.platform_name }} | |
shell: bash | |
run: | | |
tests/check-binary.pl \ | |
--target "${{ matrix.platform.target }}" \ | |
--expect-file-re "${{ matrix.platform.expect_file_re }}" \ | |
--expect-cross-version "${{ matrix.platform.expect_cross_version }}" \ | |
${{ matrix.platform.expect_cross }} \ | |
${{ matrix.platform.expect_stripped }} | |
test-cxx: | |
name: Test a project with C++ | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-20.04 | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Copy test project to root | |
shell: bash | |
run: | | |
cp -a test-projects/with-cxx/* . | |
rm -fr test-projects | |
- name: Run both commands | |
uses: ./ | |
with: | |
command: both | |
cache-cross-binary: true | |
target: x86_64-unknown-linux-musl | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run test command | |
uses: ./ | |
with: | |
command: test | |
cache-cross-binary: true | |
target: x86_64-unknown-linux-musl | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run build command | |
uses: ./ | |
with: | |
command: build | |
cache-cross-binary: true | |
target: x86_64-unknown-linux-musl | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
strip: true | |
- name: Run build command for subdir | |
uses: ./ | |
with: | |
command: build | |
cache-cross-binary: true | |
working-directory: subcrate | |
target: x86_64-unknown-linux-musl | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
strip: true | |
- name: Check binary and cross on ${{ matrix.os }} | |
shell: bash | |
run: | | |
tests/check-binary.pl \ | |
--target "x86_64-unknown-linux-musl" \ | |
--expect-file-re "ELF.+x86-64" \ | |
--no-expect-cross \ | |
--expect-stripped |