Skip to content

Commit c613bce

Browse files
committed
Restrict sysroot crate imports to those defined in this repo.
It's common to import dependencies from the sysroot via `extern crate` rather than use an explicit cargo dependency, when it's necessary to use the same dependency version as used by rustc itself. However, this is dangerous for crates.io crates, since rustc may not pull in the dependency on some targets, or may pull in multiple versions. In both cases, the `extern crate` fails to resolve. To address this, re-export all such dependencies from the appropriate `rustc_*` crates, and use this alias from crates which would otherwise need to use `extern crate`.
1 parent de031bb commit c613bce

File tree

50 files changed

+97
-150
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+97
-150
lines changed

compiler/rustc_codegen_cranelift/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,12 @@ extern crate rustc_fs_util;
2626
extern crate rustc_hir;
2727
extern crate rustc_incremental;
2828
extern crate rustc_index;
29+
extern crate rustc_log;
2930
extern crate rustc_metadata;
3031
extern crate rustc_session;
3132
extern crate rustc_span;
3233
extern crate rustc_symbol_mangling;
3334
extern crate rustc_target;
34-
#[macro_use]
35-
extern crate tracing;
3635

3736
// This prevents duplicating functions and statics that are already part of the host rustc process.
3837
#[allow(unused_extern_crates)]
@@ -46,6 +45,7 @@ use cranelift_codegen::isa::TargetIsa;
4645
use cranelift_codegen::settings::{self, Configurable};
4746
use rustc_codegen_ssa::traits::CodegenBackend;
4847
use rustc_codegen_ssa::{CodegenResults, TargetConfig};
48+
use rustc_log::tracing::info;
4949
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
5050
use rustc_session::Session;
5151
use rustc_session::config::OutputFilenames;

compiler/rustc_codegen_gcc/src/back/lto.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, looks_like_rust_object_file};
3232
use rustc_data_structures::memmap::Mmap;
3333
use rustc_errors::{DiagCtxtHandle, FatalError};
3434
use rustc_hir::def_id::LOCAL_CRATE;
35+
use rustc_log::tracing::info;
3536
use rustc_middle::bug;
3637
use rustc_middle::dep_graph::WorkProduct;
3738
use rustc_middle::middle::exported_symbols::{SymbolExportInfo, SymbolExportLevel};

compiler/rustc_codegen_gcc/src/back/write.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use rustc_codegen_ssa::back::write::{BitcodeSection, CodegenContext, EmitObj, Mo
66
use rustc_codegen_ssa::{CompiledModule, ModuleCodegen};
77
use rustc_errors::DiagCtxtHandle;
88
use rustc_fs_util::link_or_copy;
9+
use rustc_log::tracing::debug;
910
use rustc_session::config::OutputType;
1011
use rustc_span::fatal_error::FatalError;
1112
use rustc_target::spec::SplitDebuginfo;

compiler/rustc_codegen_gcc/src/consts.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use rustc_codegen_ssa::traits::{
66
BaseTypeCodegenMethods, ConstCodegenMethods, StaticCodegenMethods,
77
};
88
use rustc_hir::def::DefKind;
9+
use rustc_log::tracing::trace;
910
use rustc_middle::middle::codegen_fn_attrs::{CodegenFnAttrFlags, CodegenFnAttrs};
1011
use rustc_middle::mir::interpret::{
1112
self, ConstAllocation, ErrorHandled, Scalar as InterpScalar, read_target_uint,

compiler/rustc_codegen_gcc/src/gcc_util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#[cfg(feature = "master")]
22
use gccjit::Context;
33
use rustc_codegen_ssa::target_features;
4+
use rustc_data_structures::smallvec::{SmallVec, smallvec};
45
use rustc_session::Session;
5-
use smallvec::{SmallVec, smallvec};
66

77
fn gcc_features_by_flags(sess: &Session, features: &mut Vec<String>) {
88
target_features::retpoline_features_by_flags(sess, features);

compiler/rustc_codegen_gcc/src/lib.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@
2626
#![deny(clippy::pattern_type_mismatch)]
2727
#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
2828

29-
// These crates are pulled from the sysroot because they are part of
30-
// rustc's public API, so we need to ensure version compatibility.
31-
extern crate smallvec;
32-
#[macro_use]
33-
extern crate tracing;
34-
3529
// The rustc crates we need
3630
extern crate rustc_abi;
3731
extern crate rustc_apfloat;
@@ -46,6 +40,7 @@ extern crate rustc_hir;
4640
extern crate rustc_index;
4741
#[cfg(feature = "master")]
4842
extern crate rustc_interface;
43+
extern crate rustc_log;
4944
extern crate rustc_macros;
5045
extern crate rustc_middle;
5146
extern crate rustc_session;

compiler/rustc_data_structures/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ use std::fmt;
4343
pub use atomic_ref::AtomicRef;
4444
pub use ena::{snapshot_vec, undo_log, unify};
4545
pub use rustc_index::static_assert_size;
46+
pub use {either, indexmap, smallvec, thin_vec};
4647

4748
pub mod aligned;
4849
pub mod base_n;

compiler/rustc_log/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ use tracing_subscriber::fmt::FmtContext;
4444
use tracing_subscriber::fmt::format::{self, FormatEvent, FormatFields};
4545
use tracing_subscriber::layer::SubscriberExt;
4646
use tracing_subscriber::{Layer, Registry};
47+
// Re-export tracing
48+
pub use {tracing, tracing_subscriber};
4749

4850
/// The values of all the environment variables that matter for configuring a logger.
4951
/// Errors are explicitly preserved so that we can share error handling.

compiler/rustc_resolve/src/rustdoc.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ use std::mem;
22
use std::ops::Range;
33

44
use itertools::Itertools;
5+
/// Re-export the markdown parser used by rustdoc.
6+
pub use pulldown_cmark;
57
use pulldown_cmark::{
68
BrokenLink, BrokenLinkCallback, CowStr, Event, LinkType, Options, Parser, Tag,
79
};

src/librustdoc/clean/auto_trait.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use rustc_data_structures::fx::{FxIndexMap, FxIndexSet, IndexEntry};
2+
use rustc_data_structures::thin_vec::ThinVec;
23
use rustc_hir as hir;
34
use rustc_infer::infer::region_constraints::{Constraint, RegionConstraintData};
45
use rustc_middle::bug;
56
use rustc_middle::ty::{self, Region, Ty, fold_regions};
67
use rustc_span::def_id::DefId;
78
use rustc_span::symbol::{Symbol, kw};
89
use rustc_trait_selection::traits::auto_trait::{self, RegionTarget};
9-
use thin_vec::ThinVec;
1010
use tracing::{debug, instrument};
1111

1212
use crate::clean::{

0 commit comments

Comments
 (0)