diff --git a/.github/workflows/rustc.yml b/.github/workflows/rustc.yml new file mode 100644 index 0000000000000..a0da0590c5529 --- /dev/null +++ b/.github/workflows/rustc.yml @@ -0,0 +1,66 @@ +# Copyright Kani Contributors +# SPDX-License-Identifier: Apache-2.0 OR MIT + +# This workflow is responsible for building the standard library using the bootstrap script +# and executing the Rust regression. + +name: Check Rust bootstrap +on: + workflow_dispatch: + pull_request: + paths: + - 'library/**' + - 'rust-toolchain.toml' + - '.github/workflows/rustc.yml' + push: + paths: + - 'library/**' + - 'rust-toolchain.toml' + - '.github/workflows/rustc.yml' + +defaults: + run: + shell: bash + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + # Note windows-latest is currently failing. + os: [ubuntu-latest, macos-latest] + steps: + - name: Checkout Library + uses: actions/checkout@v4 + with: + path: head + + - name: Checkout `upstream/master` + uses: actions/checkout@v4 + with: + repository: rust-lang/rust + path: upstream + fetch-depth: 0 + submodules: true + + # Run rustc twice in case the toolchain needs to be installed. + # Retrieve the commit id from the `rustc --version`. Output looks like: + # `rustc 1.80.0-nightly (84b40fc90 2024-05-27)` + - name: Checkout matching commit + run: | + cd head + rustc --version + COMMIT_ID=$(rustc --version | sed -e "s/.*(\(.*\) .*/\1/") + cd ../upstream + git checkout ${COMMIT_ID} + + - name: Copy Library + run: | + rm -rf upstream/library + cp -r head/library upstream + + - name: Run tests + working-directory: upstream + run: | + ./configure --set=llvm.download-ci-llvm=true + ./x test --stage 0 library/std diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000000000..31b1f7dd8e678 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,9 @@ +# Copyright Kani Contributors +# SPDX-License-Identifier: Apache-2.0 OR MIT + +# This version should be updated whenever we update the version of the Rust +# standard library we currently track. + +[toolchain] +channel = "nightly-2024-05-23" +components = ["llvm-tools-preview", "rustc-dev", "rust-src", "rustfmt"]