Pin Clippy to a nightly

This commit is contained in:
Eduardo Broto 2020-11-29 18:08:47 +01:00 committed by flip1995
parent 6c70133faa
commit 613333acd5
No known key found for this signature in database
GPG Key ID: 1CA0DF2AF59D68A5
6 changed files with 18 additions and 85 deletions

View File

@ -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: |

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1,3 @@
nightly [toolchain]
channel = "nightly-2020-11-29"
components = ["llvm-tools-preview", "rustc-dev", "rust-src", "rustfmt"]

View File

@ -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