about summary refs log tree commit diff
path: root/library/rustc-std-workspace-core
diff options
context:
space:
mode:
Diffstat (limited to 'library/rustc-std-workspace-core')
-rw-r--r--library/rustc-std-workspace-core/Cargo.toml15
-rw-r--r--library/rustc-std-workspace-core/README.md29
-rw-r--r--library/rustc-std-workspace-core/lib.rs4
3 files changed, 48 insertions, 0 deletions
diff --git a/library/rustc-std-workspace-core/Cargo.toml b/library/rustc-std-workspace-core/Cargo.toml
new file mode 100644
index 00000000000..a386ec2b43a
--- /dev/null
+++ b/library/rustc-std-workspace-core/Cargo.toml
@@ -0,0 +1,15 @@
+[package]
+name = "rustc-std-workspace-core"
+version = "1.99.0"
+authors = ["Alex Crichton <alex@alexcrichton.com>"]
+license = 'MIT OR Apache-2.0'
+description = """
+Hack for the compiler's own build system
+"""
+edition = "2018"
+
+[lib]
+path = "lib.rs"
+
+[dependencies]
+core = { path = "../core" }
diff --git a/library/rustc-std-workspace-core/README.md b/library/rustc-std-workspace-core/README.md
new file mode 100644
index 00000000000..9c2b1fa91d3
--- /dev/null
+++ b/library/rustc-std-workspace-core/README.md
@@ -0,0 +1,29 @@
+# The `rustc-std-workspace-core` crate
+
+This crate is a shim and empty crate which simply depends on `libcore` and
+reexports all of its contents. The crate is the crux of empowering the standard
+library to depend on crates from crates.io
+
+Crates on crates.io that the standard library depend on the
+`rustc-std-workspace-core` crate from crates.io. On crates.io, however, this
+crate is empty. We use `[patch]` to override it to this crate in this
+repository. As a result, crates on crates.io will draw a dependency edge to
+`libcore`, the version defined in this repository. That should draw all the
+dependency edges to ensure Cargo builds crates successfully!
+
+Note that crates on crates.io need to depend on this crate with the name `core`
+for everything to work correctly. To do that they can use:
+
+```toml
+core = { version = "1.0.0", optional = true, package = 'rustc-std-workspace-core' }
+```
+
+Through the use of the `package` key the crate is renamed to `core`, meaning
+it'll look like
+
+```
+--extern core=.../librustc_std_workspace_core-XXXXXXX.rlib
+```
+
+when Cargo invokes the compiler, satisfying the implicit `extern crate core`
+directive injected by the compiler.
diff --git a/library/rustc-std-workspace-core/lib.rs b/library/rustc-std-workspace-core/lib.rs
new file mode 100644
index 00000000000..14327852561
--- /dev/null
+++ b/library/rustc-std-workspace-core/lib.rs
@@ -0,0 +1,4 @@
+#![feature(no_core)]
+#![no_core]
+
+pub use core::*;