Pin Clippy to a nightly
This commit is contained in:
parent
6c70133faa
commit
613333acd5
3
.github/workflows/clippy.yml
vendored
3
.github/workflows/clippy.yml
vendored
@ -56,9 +56,6 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-x86_64-unknown-linux-gnu
|
${{ runner.os }}-x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
- name: Master Toolchain Setup
|
|
||||||
run: bash setup-toolchain.sh
|
|
||||||
|
|
||||||
# Run
|
# Run
|
||||||
- name: Set LD_LIBRARY_PATH (Linux)
|
- name: Set LD_LIBRARY_PATH (Linux)
|
||||||
run: |
|
run: |
|
||||||
|
11
.github/workflows/clippy_bors.yml
vendored
11
.github/workflows/clippy_bors.yml
vendored
@ -105,11 +105,6 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-${{ matrix.host }}
|
${{ runner.os }}-${{ matrix.host }}
|
||||||
|
|
||||||
- name: Master Toolchain Setup
|
|
||||||
run: bash setup-toolchain.sh
|
|
||||||
env:
|
|
||||||
HOST_TOOLCHAIN: ${{ matrix.host }}
|
|
||||||
|
|
||||||
# Run
|
# Run
|
||||||
- name: Set LD_LIBRARY_PATH (Linux)
|
- name: Set LD_LIBRARY_PATH (Linux)
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
@ -192,9 +187,6 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-x86_64-unknown-linux-gnu
|
${{ runner.os }}-x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
- name: Master Toolchain Setup
|
|
||||||
run: bash setup-toolchain.sh
|
|
||||||
|
|
||||||
# Run
|
# Run
|
||||||
- name: Build Integration Test
|
- name: Build Integration Test
|
||||||
run: cargo test --test integration --features integration --no-run
|
run: cargo test --test integration --features integration --no-run
|
||||||
@ -273,9 +265,6 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-x86_64-unknown-linux-gnu
|
${{ runner.os }}-x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
- name: Master Toolchain Setup
|
|
||||||
run: bash setup-toolchain.sh
|
|
||||||
|
|
||||||
# Download
|
# Download
|
||||||
- name: Download target dir
|
- name: Download target dir
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
|
@ -182,18 +182,21 @@ That's why the `else_if_without_else` example uses the `register_early_pass` fun
|
|||||||
[early_lint_pass]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint/trait.EarlyLintPass.html
|
[early_lint_pass]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint/trait.EarlyLintPass.html
|
||||||
[late_lint_pass]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint/trait.LateLintPass.html
|
[late_lint_pass]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint/trait.LateLintPass.html
|
||||||
|
|
||||||
## Fixing build failures caused by Rust
|
## Syncing changes from [`rust-lang/rust`] to Clippy
|
||||||
|
|
||||||
Clippy currently gets built with `rustc` of the `rust-lang/rust` `master`
|
Clippy currently gets built with a pinned nightly version.
|
||||||
branch. Most of the times we have to adapt to the changes and only very rarely
|
|
||||||
there's an actual bug in Rust.
|
|
||||||
|
|
||||||
If you decide to make Clippy work again with a Rust commit that breaks it, you
|
In the `rust-lang/rust` repository, where rustc resides, there's a copy of Clippy
|
||||||
have to sync the `rust-lang/rust-clippy` repository with the `subtree` copy of
|
that compiler hackers modify from time to time to adapt to changes in the unstable
|
||||||
Clippy in the `rust-lang/rust` repository.
|
API of the compiler.
|
||||||
|
|
||||||
For general information about `subtree`s in the Rust repository see [Rust's
|
We need to sync these changes back to this repository periodically. If you want
|
||||||
`CONTRIBUTING.md`][subtree].
|
to help with that, you have to sync the `rust-lang/rust-clippy` repository with
|
||||||
|
the `subtree` copy of Clippy in the `rust-lang/rust` repository, and update
|
||||||
|
the `rustc-toolchain` file accordingly.
|
||||||
|
|
||||||
|
For general information about `subtree`s in the Rust repository
|
||||||
|
see [Rust's `CONTRIBUTING.md`][subtree].
|
||||||
|
|
||||||
### Patching git-subtree to work with big repos
|
### Patching git-subtree to work with big repos
|
||||||
|
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
# Basics for hacking on Clippy
|
# Basics for hacking on Clippy
|
||||||
|
|
||||||
This document explains the basics for hacking on Clippy. Besides others, this
|
This document explains the basics for hacking on Clippy. Besides others, this
|
||||||
includes how to set-up the development environment, how to build and how to test
|
includes how to build and test Clippy. For a more in depth description on
|
||||||
Clippy. For a more in depth description on the codebase take a look at [Adding
|
the codebase take a look at [Adding Lints] or [Common Tools].
|
||||||
Lints] or [Common Tools].
|
|
||||||
|
|
||||||
[Adding Lints]: https://github.com/rust-lang/rust-clippy/blob/master/doc/adding_lints.md
|
[Adding Lints]: https://github.com/rust-lang/rust-clippy/blob/master/doc/adding_lints.md
|
||||||
[Common Tools]: https://github.com/rust-lang/rust-clippy/blob/master/doc/common_tools_writing_lints.md
|
[Common Tools]: https://github.com/rust-lang/rust-clippy/blob/master/doc/common_tools_writing_lints.md
|
||||||
|
|
||||||
- [Basics for hacking on Clippy](#basics-for-hacking-on-clippy)
|
- [Basics for hacking on Clippy](#basics-for-hacking-on-clippy)
|
||||||
- [Get the code](#get-the-code)
|
- [Get the code](#get-the-code)
|
||||||
- [Setup](#setup)
|
|
||||||
- [Building and Testing](#building-and-testing)
|
- [Building and Testing](#building-and-testing)
|
||||||
- [`cargo dev`](#cargo-dev)
|
- [`cargo dev`](#cargo-dev)
|
||||||
- [PR](#pr)
|
- [PR](#pr)
|
||||||
@ -38,29 +36,9 @@ git rebase upstream/master
|
|||||||
git push
|
git push
|
||||||
```
|
```
|
||||||
|
|
||||||
## Setup
|
|
||||||
|
|
||||||
Next we need to setup the toolchain to compile Clippy. Since Clippy heavily
|
|
||||||
relies on compiler internals it is build with the latest rustc master. To get
|
|
||||||
this toolchain, you can just use the `setup-toolchain.sh` script or use
|
|
||||||
`rustup-toolchain-install-master`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
bash setup-toolchain.sh
|
|
||||||
# OR
|
|
||||||
cargo install rustup-toolchain-install-master
|
|
||||||
# For better IDE integration also add `-c rustfmt -c rust-src` (optional)
|
|
||||||
rustup-toolchain-install-master -f -n master -c rustc-dev -c llvm-tools
|
|
||||||
rustup override set master
|
|
||||||
```
|
|
||||||
|
|
||||||
_Note:_ Sometimes you may get compiler errors when building Clippy, even if you
|
|
||||||
didn't change anything. Normally those will be fixed by a maintainer in a few hours.
|
|
||||||
|
|
||||||
## Building and Testing
|
## Building and Testing
|
||||||
|
|
||||||
Once the `master` toolchain is installed, you can build and test Clippy like
|
You can build and test Clippy like every other Rust project:
|
||||||
every other Rust project:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo build # builds Clippy
|
cargo build # builds Clippy
|
||||||
|
@ -1 +1,3 @@
|
|||||||
nightly
|
[toolchain]
|
||||||
|
channel = "nightly-2020-11-29"
|
||||||
|
components = ["llvm-tools-preview", "rustc-dev", "rust-src", "rustfmt"]
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Set up the appropriate rustc toolchain
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
RTIM_PATH=$(command -v rustup-toolchain-install-master) || INSTALLED=false
|
|
||||||
CARGO_HOME=${CARGO_HOME:-$HOME/.cargo}
|
|
||||||
|
|
||||||
# Check if RTIM is not installed or installed in other locations not in ~/.cargo/bin
|
|
||||||
if [[ "$INSTALLED" == false || "$RTIM_PATH" == $CARGO_HOME/bin/rustup-toolchain-install-master ]]; then
|
|
||||||
cargo +nightly install rustup-toolchain-install-master
|
|
||||||
else
|
|
||||||
VERSION=$(rustup-toolchain-install-master -V | grep -o "[0-9.]*")
|
|
||||||
REMOTE=$(cargo +nightly search rustup-toolchain-install-master | grep -o "[0-9.]*")
|
|
||||||
echo "info: skipping updating rustup-toolchain-install-master at $RTIM_PATH"
|
|
||||||
echo " current version : $VERSION"
|
|
||||||
echo " remote version : $REMOTE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
RUST_COMMIT=$(git ls-remote https://github.com/rust-lang/rust master | awk '{print $1}')
|
|
||||||
|
|
||||||
if rustc +master -Vv 2>/dev/null | grep -q "$RUST_COMMIT"; then
|
|
||||||
echo "info: master toolchain is up-to-date"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "$HOST_TOOLCHAIN" ]]; then
|
|
||||||
TOOLCHAIN=('--host' "$HOST_TOOLCHAIN")
|
|
||||||
else
|
|
||||||
TOOLCHAIN=()
|
|
||||||
fi
|
|
||||||
|
|
||||||
rustup-toolchain-install-master -f -n master "${TOOLCHAIN[@]}" -c rustc-dev -c llvm-tools -- "$RUST_COMMIT"
|
|
||||||
rustup override set master
|
|
Loading…
Reference in New Issue
Block a user