Update Cargo submodule

Bring in some fixes for `cargo fix` notably
This commit is contained in:
Alex Crichton
2018-07-31 14:16:55 -07:00
parent 40e4b6ee3d
commit 0e034d162a
11 changed files with 244 additions and 39 deletions

View 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",
]

View 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.

View 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