-
Notifications
You must be signed in to change notification settings - Fork 360
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of #3260 - saethlin:build-all-tier-2, r=RalfJung
Check if tier 2 targets build in the nightly cron job This PR adds a CI job that only runs nightly which will install Miri built from the latest commit, and try to build every Tier 2 without host tools target, as documented on https://doc.rust-lang.org/nightly/rustc/platform-support.html. I'm not really excited about the idea of scraping the tier 2 without host tools list, but also keeping the list up-to-date by hand seems prone to forgetting to update it. And that update seems like the sort of manual maintenance we should automate.
- Loading branch information
Showing
6 changed files
with
95 additions
and
4 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
name: Tier 2 sysroots | ||
|
||
on: push | ||
# schedule: | ||
# - cron: '44 4 * * *' # At 4:44 UTC every day. | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
|
||
jobs: | ||
sysroots: | ||
name: Build the sysroots | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Build the sysroots | ||
run: | | ||
cargo install -f rustup-toolchain-install-master | ||
./miri toolchain -c rust-docs # Docs are the only place targets are separated by tier | ||
./miri install | ||
python3 -m pip install beautifulsoup4 | ||
./ci/build-all-targets.sh | ||
sysroots-cron-fail-notify: | ||
name: sysroots cronjob failure notification | ||
runs-on: ubuntu-latest | ||
needs: [sysroots] | ||
if: failure() || cancelled() | ||
steps: | ||
# Send a Zulip notification | ||
- name: Install zulip-send | ||
run: pip3 install zulip | ||
- name: Send Zulip notification | ||
env: | ||
ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }} | ||
ZULIP_API_TOKEN: ${{ secrets.ZULIP_API_TOKEN }} | ||
run: | | ||
~/.local/bin/zulip-send --user $ZULIP_BOT_EMAIL --api-key $ZULIP_API_TOKEN --site https://rust-lang.zulipchat.com \ | ||
--stream miri --subject "Cron Job Failure (miri, $(date -u +%Y-%m))" \ | ||
--message 'Dear @*T-miri*, | ||
It would appear that the [Miri sysroots cron job build]('"https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"') failed. | ||
Would you mind investigating this issue? | ||
Thanks in advance! | ||
Sincerely, | ||
The Miri Cronjobs Bot' |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
#!/bin/bash | ||
|
||
set -eu | ||
set -o pipefail | ||
|
||
FAILS_DIR=failures | ||
|
||
rm -rf $FAILS_DIR | ||
mkdir $FAILS_DIR | ||
|
||
PLATFORM_SUPPORT_FILE=$(rustc +miri --print sysroot)/share/doc/rust/html/rustc/platform-support.html | ||
|
||
for target in $(python3 ci/scrape-targets.py $PLATFORM_SUPPORT_FILE); do | ||
# Wipe the cache before every build to minimize disk usage | ||
rm -rf ~/.cache/miri | ||
if cargo +miri miri setup --target $target 2>&1 | tee failures/$target; then | ||
# If the build succeeds, delete its output. If we have output, a build failed. | ||
rm $FAILS_DIR/$target | ||
fi | ||
done | ||
|
||
# If the sysroot for any target fails to build, we will have a file in FAILS_DIR. | ||
if [[ $(ls failures | wc -l) -ne 0 ]]; then | ||
echo "Sysroots for the following targets failed to build:" | ||
ls $FAILS_DIR | ||
exit 1 | ||
fi |
File renamed without changes.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
import sys | ||
from bs4 import BeautifulSoup | ||
|
||
html = open(sys.argv[1], 'r').read() | ||
soup = BeautifulSoup(html, features="html.parser") | ||
# The tables are: | ||
# Tier 1 <-- this is already checked by main CI, so we ignore it here | ||
# Tier 2 with host tools <-- we want this one | ||
# Tier 2 without host tools <-- and also this | ||
# Tier 3 | ||
for table in soup.find_all("table")[1:3]: | ||
for row in table.find_all('tr'): | ||
code = row.find('code') | ||
if code is not None: | ||
print(code.text) |