diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 3a952b2b..5b4de066 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -28,7 +28,7 @@ on: jobs: linux: - name: Test Linux + name: Test Linux ( ${{ inputs.target_arch }}, ${{ inputs.c_compiler}} ${{ inputs.generator }}) runs-on: ubuntu-${{ inputs.ubuntu_version }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5a140ae8..772a2696 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -9,125 +9,6 @@ on: - 'stable/**' jobs: -# test: -# name: Test Corrosion -# runs-on: ${{ matrix.os }} -# continue-on-error: ${{ matrix.rust == 'nightly' }} -# strategy: -# fail-fast: false -# matrix: -# os: -# - windows-2022 -# - ubuntu-latest -# - macos-13 -# arch: -# - x86_64 -# - i686 -# - aarch64 -# - powerpc64le -# abi: -# - gnu -# - darwin -# - msvc -# cmake: -# - 3.22.6 -# rust: -# - "stable" -# generator: -# - default # This is just whatever the platform default is -# - ninja -# compiler: [default] -# include: -# - rust: nightly -# cmake: 3.22.6 -# generator: ninja -# arch: x86_64 -# abi: msvc -# os: windows-2022 -# - rust: nightly -# cmake: 3.22.6 -# generator: ninja -# arch: x86_64 -# abi: gnu -# os: ubuntu-latest -# - rust: nightly -# cmake: 3.22.6 -# generator: ninja -# arch: x86_64 -# abi: darwin -# os: macos-13 -# - rust: 1.54 -# cmake: 3.22.6 -# generator: ninja -# arch: x86_64 -# abi: msvc -# os: windows-2019 -# compiler: clang -# - os: ubuntu-latest -# arch: x86_64 -# abi: gnu -# cmake: 3.22.6 -# rust: 1.54 -# generator: ninja-multiconfig -# -# exclude: -# -# # We have a separate test Matrix for the Visual Studio Generator -# - os: windows-2022 -# generator: default # Default generator is Visual Studio -# -# # ARCH -# - os: windows-2022 -# arch: i686 -# abi: gnu -# - os: windows-2022 -# arch: aarch64 -# abi: gnu -# - os: windows-2022 -# arch: i686 -# generator: ninja -# - os: windows-2022 -# arch: aarch64 -# generator: ninja -# - os: windows-2022 -# arch: powerpc64le -# - os: macos-13 -# arch: i686 -# - os: macos-13 -# arch: aarch64 -# - os: macos-13 -# arch: powerpc64le -# -# # ABI -# - os: ubuntu-latest -# abi: msvc -# - os: ubuntu-latest -# abi: darwin -# - os: windows-2022 -# abi: darwin -# - os: macos-13 -# abi: msvc -# - os: macos-13 -# abi: gnu -# -# steps: -# - uses: actions/checkout@v4 -# - name: Setup Environment and Configure CMake -# uses: "./.github/actions/setup_test" -# with: -# target_arch: ${{matrix.arch}} -# abi: ${{matrix.abi}} -# cmake: ${{matrix.cmake}} -# rust: ${{matrix.rust}} -# generator: ${{matrix.generator}} -# build_dir: build -# compiler: ${{matrix.compiler}} -# - name: Run Tests -# id: run_tests -# working-directory: build -# run: ctest --output-on-failure --build-config Debug -j 3 - - visual_studio_base: name: Test Visual Studio (base) uses: ./.github/workflows/visual_studio.yaml @@ -166,6 +47,8 @@ jobs: windows_ninja_cl: name: Test Windows Ninja MSVC runs-on: ${{ matrix.os }} + needs: + - visual_studio_base strategy: fail-fast: false matrix: @@ -183,9 +66,6 @@ jobs: vs_version: vs-2022 cmake: 3.22.6 - rust: 1.54.0 - # Override rust version for x86_64 - - arch: x86_64 - rust: 1.46.0 # Add variable mapping for ilammy/msvc-dev-cmd action - arch: x86_64 msvc_dev_arch: amd64 @@ -271,8 +151,9 @@ jobs: c_compiler: "gcc" generator: "Ninja" - linux_stage_2: + linux_stage2: name: Test Linux + run-name: "Test Linux" needs: - linux_base uses: ./.github/workflows/linux.yaml @@ -346,105 +227,95 @@ jobs: run: ctest --output-on-failure --build-config Debug -j 3 -# test_cxxbridge: -# name: Test cxxbridge integration -# runs-on: ${{ matrix.os }} -# strategy: -# fail-fast: false -# matrix: -# os: -# - windows-2022 -# - ubuntu-latest -# - macos-13 -# include: -# - abi: default -# # - os: windows-2019 -# # abi: gnu -# steps: -# - uses: actions/checkout@v4 -# - uses: actions/cache@v3 -# id: cache_cxxbridge -# with: -# path: "~/.cargo/bin/cxxbridge*" -# key: ${{ runner.os }}-cxxbridge_1_0_86 -# - name: Install cxxbridge -# if: steps.cache_cxxbridge.outputs.cache-hit != 'true' -# run: cargo install cxxbridge-cmd@1.0.86 -# - name: Install lld -# run: sudo apt update && sudo apt install -y lld -# if: ${{ 'Linux' == runner.os }} -# - name: Setup Environment and Configure CMake -# uses: "./.github/actions/setup_test" -# with: -# target_arch: x86_64 -# cmake: 3.22.6 -# rust: stable minus 2 releases -# abi: ${{ matrix.abi }} -# generator: ninja -# build_dir: build -# configure_params: -DCORROSION_TESTS_CXXBRIDGE=ON -# - name: Run Tests -# working-directory: build -# run: ctest --output-on-failure --build-config Debug -j 3 -R "^cxxbridge" -# install: -# name: Test Corrosion as a Library -# runs-on: ${{ matrix.os }} -# strategy: -# fail-fast: false -# matrix: -# os: -# - windows-2019 -# - ubuntu-latest -# - macos-13 -# include: -# - rust: 1.46.0 -# - os: macos-13 -# rust: 1.54.0 # On MacOS-12 linking fails before Rust 1.54 -# steps: -# - uses: actions/checkout@v3 -# - name: Setup MSVC Development Environment -# uses: ilammy/msvc-dev-cmd@v1 -# if: runner.os == 'Windows' -# - name: Install CMake -# uses: corrosion-rs/install-cmake@v2 -# with: -# cmake: 3.22.6 -# ninja: 1.10.0 -# - name: Install Rust -# uses: dtolnay/rust-toolchain@master -# with: -# toolchain: ${{matrix.rust}} -# - name: CMake Version -# run: cmake --version -# - name: Rust Version -# run: rustc --version -# - name: Test Corrosion as subdirectory -# run: > -# cmake -# -S. -# -Bbuild -# -GNinja -# -DCORROSION_VERBOSE_OUTPUT=ON -# -DCORROSION_TESTS_INSTALL_CORROSION=OFF -# && -# cd build -# && -# ctest --output-on-failure -C Debug -j 3 -# - name: Test Corrosion as installed module -# run: > -# cmake -E remove_directory build -# && -# cmake -# -S. -# -Bbuild -# -GNinja -# -DCORROSION_VERBOSE_OUTPUT=ON -# -DCMAKE_BUILD_TYPE=Release -# -DCORROSION_TESTS_INSTALL_CORROSION=ON -# && -# cd build -# && -# ctest --output-on-failure -C Release -j 3 + test_cxxbridge: + name: Test cxxbridge integration + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2022 + - ubuntu-latest + - macos-13 + include: + - cxxbridge_version: "1.0.86" + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v3 + id: cache_cxxbridge + with: + path: "~/.cargo/bin/cxxbridge*" + key: ${{ runner.os }}-cxxbridge_1_0_86 + - name: Install cxxbridge + if: steps.cache_cxxbridge.outputs.cache-hit != 'true' + run: cargo install cxxbridge-cmd@1.0.86 + - name: Install lld + run: sudo apt update && sudo apt install -y lld + if: ${{ 'Linux' == runner.os }} + - name: Setup MSVC Development Environment + uses: ilammy/msvc-dev-cmd@v1 + if: runner.os == 'Windows' + - name: Install CMake + uses: corrosion-rs/install-cmake@v2 + with: + cmake: 3.22.6 + ninja: 1.10.0 + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable minus 2 releases + - name: Configure + run: > + cmake + -S. + -Bbuild + -GNinja + -DCORROSION_VERBOSE_OUTPUT=ON + -DCORROSION_TESTS_CXXBRIDGE=ON + - name: Run Tests + working-directory: build + run: ctest --output-on-failure --build-config Debug -j 3 -R "^cxxbridge" + + install: + name: Test Corrosion as a Library + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2022 + - ubuntu-latest + - macos-13 + include: + - rust: 1.54.0 + + steps: + - uses: actions/checkout@v4 + - name: Setup MSVC Development Environment + uses: ilammy/msvc-dev-cmd@v1 + if: runner.os == 'Windows' + - name: Install CMake + uses: corrosion-rs/install-cmake@v2 + with: + cmake: 3.22.6 + ninja: 1.10.0 + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{matrix.rust}} + - name: Test Corrosion as installed module + run: > + cmake + -S. + -Bbuild + -GNinja + -DCORROSION_VERBOSE_OUTPUT=ON + -DCMAKE_BUILD_TYPE=Release + -DCORROSION_TESTS_INSTALL_CORROSION=ON + && + cd build + && + ctest --output-on-failure -C Release -j 3 # We want an "accumulation" job here because it is easier to specify required # jobs here via needs, then in the github UI, since we use matrix jobs. @@ -452,10 +323,13 @@ jobs: name: bors-ci-status if: ${{ always() }} needs: - # - test - visual_studio_stage2 -# - test_cxxbridge -# - install + - windows_ninja_cl + - windows_gnu + - linux_stage2 + - darwin + - test_cxxbridge + - install runs-on: ubuntu-latest # Step copied from: https://github.com/cross-rs/cross/blob/80c9f9109a719ffb0f694060ddc6e371d5b3a540/.github/workflows/ci.yml#L361 steps: diff --git a/.github/workflows/visual_studio.yaml b/.github/workflows/visual_studio.yaml index 54a8c2c7..e3e04c5b 100644 --- a/.github/workflows/visual_studio.yaml +++ b/.github/workflows/visual_studio.yaml @@ -46,7 +46,7 @@ jobs: with: path: build key: ${{ inputs.os }}-${{ inputs.target_arch }}-${{ inputs.rust }}-msvc-${{ inputs.vs_version}}-build - - name: New configure + - name: Configure run: cmake -S. -Bbuild -DCORROSION_TESTS_KEEP_BUILDDIRS=ON "-DRust_TOOLCHAIN=${{steps.install_rust.outputs.name}}" --preset "vs-${{ inputs.vs_version }}-${{ inputs.target_arch }}" - name: Run Tests working-directory: build