196 lines
8.3 KiB
Diff
196 lines
8.3 KiB
Diff
From f89f1b496c0c3b96aa8e41bef882131008dac6c3 Mon Sep 17 00:00:00 2001
|
|
From: Josh Stone <jistone@redhat.com>
|
|
Date: Fri, 13 Apr 2018 16:52:54 -0700
|
|
Subject: [PATCH 1/3] rustbuild: allow building tools with debuginfo
|
|
|
|
Debugging information for the extended tools is currently disabled for
|
|
concerns about the size. This patch adds `--enable-debuginfo-tools` to
|
|
let one opt into having that debuginfo.
|
|
|
|
This is useful for debugging the tools in distro packages. We always
|
|
strip debuginfo into separate packages anyway, so the extra size is not
|
|
a concern in regular use.
|
|
---
|
|
CONTRIBUTING.md | 1 +
|
|
config.toml.example | 4 ++++
|
|
src/bootstrap/builder.rs | 12 ++++++++----
|
|
src/bootstrap/config.rs | 5 +++++
|
|
src/bootstrap/configure.py | 1 +
|
|
5 files changed, 19 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
|
|
index 70376c120f..fcd995b703 100644
|
|
--- a/CONTRIBUTING.md
|
|
+++ b/CONTRIBUTING.md
|
|
@@ -121,6 +121,7 @@ configuration used in the build process. Some options to note:
|
|
#### `[rust]`:
|
|
- `debuginfo = true` - Build a compiler with debuginfo. Makes building rustc slower, but then you can use a debugger to debug `rustc`.
|
|
- `debuginfo-lines = true` - An alternative to `debuginfo = true` that doesn't let you use a debugger, but doesn't make building rustc slower and still gives you line numbers in backtraces.
|
|
+- `debuginfo-tools = true` - Build the extended tools with debuginfo.
|
|
- `debug-assertions = true` - Makes the log output of `debug!` work.
|
|
- `optimize = false` - Disable optimizations to speed up compilation of stage1 rust, but makes the stage1 compiler x100 slower.
|
|
|
|
diff --git a/config.toml.example b/config.toml.example
|
|
index f153562a53..64e2f1b424 100644
|
|
--- a/config.toml.example
|
|
+++ b/config.toml.example
|
|
@@ -259,6 +259,10 @@
|
|
# standard library.
|
|
#debuginfo-only-std = false
|
|
|
|
+# Enable debuginfo for the extended tools: cargo, rls, rustfmt
|
|
+# Adding debuginfo increases their sizes by a factor of 3-4.
|
|
+#debuginfo-tools = false
|
|
+
|
|
# Whether or not jemalloc is built and enabled
|
|
#use-jemalloc = true
|
|
|
|
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
|
|
index fcb78c479f..584c0cbe75 100644
|
|
--- a/src/bootstrap/builder.rs
|
|
+++ b/src/bootstrap/builder.rs
|
|
@@ -603,10 +603,14 @@ impl<'a> Builder<'a> {
|
|
cargo.env("RUSTDOC_LIBDIR", self.rustc_libdir(self.compiler(2, self.build.build)));
|
|
}
|
|
|
|
- if mode != Mode::Tool {
|
|
- // Tools don't get debuginfo right now, e.g. cargo and rls don't
|
|
- // get compiled with debuginfo.
|
|
- // Adding debuginfo increases their sizes by a factor of 3-4.
|
|
+ if mode == Mode::Tool {
|
|
+ // Tools like cargo and rls don't get debuginfo by default right now, but this can be
|
|
+ // enabled in the config. Adding debuginfo increases their sizes by a factor of 3-4.
|
|
+ if self.config.rust_debuginfo_tools {
|
|
+ cargo.env("RUSTC_DEBUGINFO", self.config.rust_debuginfo.to_string());
|
|
+ cargo.env("RUSTC_DEBUGINFO_LINES", self.config.rust_debuginfo_lines.to_string());
|
|
+ }
|
|
+ } else {
|
|
cargo.env("RUSTC_DEBUGINFO", self.config.rust_debuginfo.to_string());
|
|
cargo.env("RUSTC_DEBUGINFO_LINES", self.config.rust_debuginfo_lines.to_string());
|
|
cargo.env("RUSTC_FORCE_UNSTABLE", "1");
|
|
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
|
|
index f3810ac869..ac64e6e8e3 100644
|
|
--- a/src/bootstrap/config.rs
|
|
+++ b/src/bootstrap/config.rs
|
|
@@ -88,6 +88,7 @@ pub struct Config {
|
|
pub rust_debuginfo: bool,
|
|
pub rust_debuginfo_lines: bool,
|
|
pub rust_debuginfo_only_std: bool,
|
|
+ pub rust_debuginfo_tools: bool,
|
|
pub rust_rpath: bool,
|
|
pub rustc_parallel_queries: bool,
|
|
pub rustc_default_linker: Option<String>,
|
|
@@ -271,6 +272,7 @@ struct Rust {
|
|
debuginfo: Option<bool>,
|
|
debuginfo_lines: Option<bool>,
|
|
debuginfo_only_std: Option<bool>,
|
|
+ debuginfo_tools: Option<bool>,
|
|
experimental_parallel_queries: Option<bool>,
|
|
debug_jemalloc: Option<bool>,
|
|
use_jemalloc: Option<bool>,
|
|
@@ -425,6 +427,7 @@ impl Config {
|
|
let mut llvm_assertions = None;
|
|
let mut debuginfo_lines = None;
|
|
let mut debuginfo_only_std = None;
|
|
+ let mut debuginfo_tools = None;
|
|
let mut debug = None;
|
|
let mut debug_jemalloc = None;
|
|
let mut debuginfo = None;
|
|
@@ -462,6 +465,7 @@ impl Config {
|
|
debuginfo = rust.debuginfo;
|
|
debuginfo_lines = rust.debuginfo_lines;
|
|
debuginfo_only_std = rust.debuginfo_only_std;
|
|
+ debuginfo_tools = rust.debuginfo_tools;
|
|
optimize = rust.optimize;
|
|
ignore_git = rust.ignore_git;
|
|
debug_jemalloc = rust.debug_jemalloc;
|
|
@@ -553,6 +557,7 @@ impl Config {
|
|
config.rust_thinlto = thinlto.unwrap_or(true);
|
|
config.rust_debuginfo_lines = debuginfo_lines.unwrap_or(default);
|
|
config.rust_debuginfo_only_std = debuginfo_only_std.unwrap_or(default);
|
|
+ config.rust_debuginfo_tools = debuginfo_tools.unwrap_or(default);
|
|
|
|
let default = debug == Some(true);
|
|
config.debug_jemalloc = debug_jemalloc.unwrap_or(default);
|
|
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
|
|
index 99a3ee4e4c..689dd905fb 100755
|
|
--- a/src/bootstrap/configure.py
|
|
+++ b/src/bootstrap/configure.py
|
|
@@ -78,6 +78,7 @@ def v(*args):
|
|
o("debuginfo", "rust.debuginfo", "build with debugger metadata")
|
|
o("debuginfo-lines", "rust.debuginfo-lines", "build with line number debugger metadata")
|
|
o("debuginfo-only-std", "rust.debuginfo-only-std", "build only libstd with debugging information")
|
|
+o("debuginfo-tools", "rust.debuginfo-tools", "build extended tools with debugging information")
|
|
o("debug-jemalloc", "rust.debug-jemalloc", "build jemalloc with --enable-debug --enable-fill")
|
|
v("save-toolstates", "rust.save-toolstates", "save build and test status of external tools into this file")
|
|
|
|
--
|
|
2.14.3
|
|
|
|
|
|
From f0a43d3a9a4c28ea45d6bed430b1d9d561944e16 Mon Sep 17 00:00:00 2001
|
|
From: Josh Stone <jistone@redhat.com>
|
|
Date: Fri, 13 Apr 2018 21:57:53 -0700
|
|
Subject: [PATCH 2/3] Avoid specific claims about debuginfo size
|
|
|
|
---
|
|
config.toml.example | 2 +-
|
|
src/bootstrap/builder.rs | 2 +-
|
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/config.toml.example b/config.toml.example
|
|
index 64e2f1b424..46be1ecab7 100644
|
|
--- a/config.toml.example
|
|
+++ b/config.toml.example
|
|
@@ -260,7 +260,7 @@
|
|
#debuginfo-only-std = false
|
|
|
|
# Enable debuginfo for the extended tools: cargo, rls, rustfmt
|
|
-# Adding debuginfo increases their sizes by a factor of 3-4.
|
|
+# Adding debuginfo makes them several times larger.
|
|
#debuginfo-tools = false
|
|
|
|
# Whether or not jemalloc is built and enabled
|
|
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
|
|
index 584c0cbe75..627a695884 100644
|
|
--- a/src/bootstrap/builder.rs
|
|
+++ b/src/bootstrap/builder.rs
|
|
@@ -605,7 +605,7 @@ impl<'a> Builder<'a> {
|
|
|
|
if mode == Mode::Tool {
|
|
// Tools like cargo and rls don't get debuginfo by default right now, but this can be
|
|
- // enabled in the config. Adding debuginfo increases their sizes by a factor of 3-4.
|
|
+ // enabled in the config. Adding debuginfo makes them several times larger.
|
|
if self.config.rust_debuginfo_tools {
|
|
cargo.env("RUSTC_DEBUGINFO", self.config.rust_debuginfo.to_string());
|
|
cargo.env("RUSTC_DEBUGINFO_LINES", self.config.rust_debuginfo_lines.to_string());
|
|
--
|
|
2.14.3
|
|
|
|
|
|
From 7ddb573a2ea41ad3c35f927b7b90fd545a6ab9da Mon Sep 17 00:00:00 2001
|
|
From: Josh Stone <jistone@redhat.com>
|
|
Date: Fri, 13 Apr 2018 21:58:21 -0700
|
|
Subject: [PATCH 3/3] Make debuginfo-tools always default false
|
|
|
|
---
|
|
src/bootstrap/config.rs | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
|
|
index ac64e6e8e3..06443ae6cd 100644
|
|
--- a/src/bootstrap/config.rs
|
|
+++ b/src/bootstrap/config.rs
|
|
@@ -557,7 +557,7 @@ impl Config {
|
|
config.rust_thinlto = thinlto.unwrap_or(true);
|
|
config.rust_debuginfo_lines = debuginfo_lines.unwrap_or(default);
|
|
config.rust_debuginfo_only_std = debuginfo_only_std.unwrap_or(default);
|
|
- config.rust_debuginfo_tools = debuginfo_tools.unwrap_or(default);
|
|
+ config.rust_debuginfo_tools = debuginfo_tools.unwrap_or(false);
|
|
|
|
let default = debug == Some(true);
|
|
config.debug_jemalloc = debug_jemalloc.unwrap_or(default);
|
|
--
|
|
2.14.3
|
|
|