Update Cargo submodule
Bring in some fixes for `cargo fix` notably
This commit is contained in:
44
src/tools/rustc-workspace-hack/Cargo.toml
Normal file
44
src/tools/rustc-workspace-hack/Cargo.toml
Normal file
@@ -0,0 +1,44 @@
|
||||
[package]
|
||||
name = "rustc-workspace-hack"
|
||||
version = "1.0.0"
|
||||
authors = ["Alex Crichton <alex@alexcrichton.com>"]
|
||||
license = 'MIT/Apache-2.0'
|
||||
description = """
|
||||
Hack for the compiler's own build system
|
||||
"""
|
||||
|
||||
[lib]
|
||||
path = "lib.rs"
|
||||
|
||||
# For documentation about what this is and why in the world these dependencies
|
||||
# are appearing, see `README.md`.
|
||||
|
||||
[build-dependencies]
|
||||
# Currently Cargo/RLS depend on `failure` which depends on `synstructure` which
|
||||
# enables this feature. Clippy, however, does not depend on anything that
|
||||
# enables this feature. Enable it unconditionally.
|
||||
syn = { version = "0.14", features = ['extra-traits'] }
|
||||
|
||||
[target.'cfg(windows)'.dependencies.winapi]
|
||||
version = "0.3"
|
||||
features = [
|
||||
"profileapi",
|
||||
"memoryapi",
|
||||
"minschannel",
|
||||
"securitybaseapi",
|
||||
"jobapi2",
|
||||
"schannel",
|
||||
"sysinfoapi",
|
||||
"jobapi",
|
||||
"synchapi",
|
||||
"wincrypt",
|
||||
"winbase",
|
||||
"minwinbase",
|
||||
"ntsecapi",
|
||||
"basetsd",
|
||||
"ntstatus",
|
||||
"psapi",
|
||||
"timezoneapi",
|
||||
"lmcons",
|
||||
"wincon",
|
||||
]
|
||||
25
src/tools/rustc-workspace-hack/README.md
Normal file
25
src/tools/rustc-workspace-hack/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# `rustc-workspace-hack`
|
||||
|
||||
This crate is a bit of a hack to make workspaces in rustc work a bit better.
|
||||
The rationale for this existence is a bit subtle, but the general idea is that
|
||||
we want commands like `./x.py build src/tools/{rls,clippy,cargo}` to share as
|
||||
many dependencies as possible.
|
||||
|
||||
Each invocation is a different invocation of Cargo, however. Each time Cargo
|
||||
runs a build it will re-resolve the dependency graph, notably selecting
|
||||
different features sometimes for each build.
|
||||
|
||||
For example, let's say there's a very deep dependency like `num-traits` in each
|
||||
of these builds. For Cargo the `num-traits`'s `default` feature is turned off.
|
||||
In RLS, however, the `default` feature is turned. This means that building Cargo
|
||||
and then the RLS will actually build Cargo twice (as a transitive dependency
|
||||
changed). This is bad!
|
||||
|
||||
The goal of this crate is to solve this problem and ensure that the resolved
|
||||
dependency graph for all of these tools is the same in the various subsets of
|
||||
each tool, notably enabling the same features of transitive dependencies.
|
||||
|
||||
All tools vendored here depend on the `rustc-workspace-hack` crate on crates.io.
|
||||
When on crates.io this crate is an empty crate that is just a noop. We override
|
||||
it, however, in this workspace to this crate here, which means we can control
|
||||
crates in the dependency graph for each of these tools.
|
||||
11
src/tools/rustc-workspace-hack/lib.rs
Normal file
11
src/tools/rustc-workspace-hack/lib.rs
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// intentionally left blank
|
||||
Reference in New Issue
Block a user