Treat thread-local statics on main thread as static roots for leakage analysis #6084
Workflow file for this run
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: CI | |
on: | |
push: | |
# Run in PRs and for bors, but not on master. | |
branches: | |
- 'auto' | |
- 'try' | |
pull_request: | |
branches: | |
- 'master' | |
schedule: | |
- cron: '6 6 * * *' # At 6:06 UTC every day. | |
env: | |
CARGO_UNSTABLE_SPARSE_REGISTRY: 'true' | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
env: | |
RUST_BACKTRACE: 1 | |
HOST_TARGET: ${{ matrix.host_target }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
host_target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
host_target: x86_64-apple-darwin | |
- os: windows-latest | |
host_target: i686-pc-windows-msvc | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set the tag GC interval to 1 on linux | |
if: runner.os == 'Linux' | |
run: echo "MIRIFLAGS=-Zmiri-tag-gc=1" >> $GITHUB_ENV | |
# Cache the global cargo directory, but NOT the local `target` directory which | |
# we cannot reuse anyway when the nightly changes (and it grows quite large | |
# over time). | |
- name: Add cache for cargo | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
# Taken from <https://doc.rust-lang.org/nightly/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci>. | |
~/.cargo/bin | |
~/.cargo/registry/index | |
~/.cargo/registry/cache | |
~/.cargo/git/db | |
# contains package information of crates installed via `cargo install`. | |
~/.cargo/.crates.toml | |
~/.cargo/.crates2.json | |
key: ${{ runner.os }}-cargo-reset20230315-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-reset20230315 | |
- name: Install rustup-toolchain-install-master | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
shell: bash | |
run: | | |
cargo install -f rustup-toolchain-install-master | |
- name: Install "master" toolchain | |
shell: bash | |
run: | | |
if [[ ${{ github.event_name }} == 'schedule' ]]; then | |
echo "Building against latest rustc git version" | |
git ls-remote https://github.com/rust-lang/rust/ HEAD | cut -f 1 > rust-version | |
fi | |
./miri toolchain --host ${{ matrix.host_target }} | |
- name: Show Rust version | |
run: | | |
rustup show | |
rustc -Vv | |
cargo -V | |
- name: Test | |
run: bash ./ci.sh | |
style: | |
name: style checks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# This is exactly duplicated from above. GHA is pretty terrible when it comes | |
# to avoiding code duplication. | |
# Cache the global cargo directory, but NOT the local `target` directory which | |
# we cannot reuse anyway when the nightly changes (and it grows quite large | |
# over time). | |
- name: Add cache for cargo | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
# Taken from <https://doc.rust-lang.org/nightly/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci>. | |
~/.cargo/bin | |
~/.cargo/registry/index | |
~/.cargo/registry/cache | |
~/.cargo/git/db | |
# contains package information of crates installed via `cargo install`. | |
~/.cargo/.crates.toml | |
~/.cargo/.crates2.json | |
key: ${{ runner.os }}-cargo-reset20230315-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo-reset20230315 | |
- name: Install rustup-toolchain-install-master | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
shell: bash | |
run: | | |
cargo install -f rustup-toolchain-install-master | |
- name: Install "master" toolchain | |
shell: bash | |
run: | | |
./miri toolchain | |
- name: Show Rust version | |
run: | | |
rustup show | |
rustc -Vv | |
cargo -V | |
- name: rustfmt | |
run: ./miri fmt --check | |
- name: clippy | |
run: ./miri clippy -- -D warnings | |
- name: rustdoc | |
run: RUSTDOCFLAGS="-Dwarnings" cargo doc --document-private-items | |
# These jobs doesn't actually test anything, but they're only used to tell | |
# bors the build completed, as there is no practical way to detect when a | |
# workflow is successful listening to webhooks only. | |
# | |
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB! | |
# (`fmt` is deliberately not listed, we want bors to ignore it.) | |
end-success: | |
name: bors build finished | |
runs-on: ubuntu-latest | |
needs: [build, style] | |
if: github.event.pusher.name == 'bors' && success() | |
steps: | |
- name: mark the job as a success | |
run: exit 0 | |
end-failure: | |
name: bors build finished | |
runs-on: ubuntu-latest | |
needs: [build, style] | |
if: github.event.pusher.name == 'bors' && (failure() || cancelled()) | |
steps: | |
- name: mark the job as a failure | |
run: exit 1 | |
# Send a Zulip notification when a cron job fails | |
cron-fail-notify: | |
name: cronjob failure notification | |
runs-on: ubuntu-latest | |
needs: [build, style] | |
if: github.event_name == 'schedule' && (failure() || cancelled()) | |
steps: | |
- name: Install zulip-send | |
run: pip3 install zulip | |
- name: Send Zulip notification | |
shell: bash | |
env: | |
ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }} | |
ZULIP_API_TOKEN: ${{ secrets.ZULIP_API_TOKEN }} | |
run: | | |
~/.local/bin/zulip-send --stream miri --subject "Cron Job Failure (miri, $(date -u +%Y-%m))" \ | |
--message 'Dear @*T-miri*, | |
It would appear that the [Miri cron job build]('"https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"') failed. | |
This likely means that rustc changed the miri directory and | |
we now need to do a [`./miri rustc-pull`](https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md#importing-changes-from-the-rustc-repo). | |
Would you mind investigating this issue? | |
Thanks in advance! | |
Sincerely, | |
The Miri Cronjobs Bot' \ | |
--user $ZULIP_BOT_EMAIL --api-key $ZULIP_API_TOKEN --site https://rust-lang.zulipchat.com |