rust: regenerate patches for 1.12.1

This commit is contained in:
Cody P Schafer
2016-09-29 23:12:43 -04:00
committed by Doug Goldstein
parent 972fbd4582
commit ba428c19bf
9 changed files with 430 additions and 0 deletions
@@ -0,0 +1,107 @@
From bb2d8649b2b344e0bb4b1cf94135378831735557 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 01:40:21 -0500
Subject: [PATCH 01/10] Target: add default target.json path:
$libdir/rust/targets
---
src/librustc/session/config.rs | 6 +++---
src/librustc/session/mod.rs | 8 ++++++--
src/librustc_back/target/mod.rs | 13 +++++++++++--
3 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index e988ddc..563f3ac 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -42,7 +42,7 @@ use std::env;
use std::fmt;
use std::hash::{Hasher, SipHasher};
use std::iter::FromIterator;
-use std::path::PathBuf;
+use std::path::{Path, PathBuf};
pub struct Config {
pub target: Target,
@@ -1011,8 +1011,8 @@ pub fn build_configuration(sess: &Session,
v
}
-pub fn build_target_config(opts: &Options, sp: &Handler) -> Config {
- let target = match Target::search(&opts.target_triple) {
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &Handler) -> Config {
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
Ok(t) => t,
Err(e) => {
sp.struct_fatal(&format!("Error loading target specification: {}", e))
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
index c71253a..13b4e05 100644
--- a/src/librustc/session/mod.rs
+++ b/src/librustc/session/mod.rs
@@ -395,13 +395,17 @@ pub fn build_session_(sopts: config::Options,
codemap: Rc<codemap::CodeMap>,
cstore: Rc<for<'a> CrateStore<'a>>)
-> Session {
- let host = match Target::search(config::host_triple()) {
+ let sysroot = match sopts.maybe_sysroot {
+ Some(ref x) => PathBuf::from(x),
+ None => filesearch::get_or_default_sysroot()
+ };
+ let host = match Target::search(&sysroot, config::host_triple()) {
Ok(t) => t,
Err(e) => {
panic!(span_diagnostic.fatal(&format!("Error loading host specification: {}", e)));
}
};
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
let p_s = parse::ParseSess::with_span_handler(span_diagnostic, codemap);
let default_sysroot = match sopts.maybe_sysroot {
Some(_) => None,
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
index 18686e3..d439b59 100644
--- a/src/librustc_back/target/mod.rs
+++ b/src/librustc_back/target/mod.rs
@@ -49,6 +49,8 @@ use std::collections::BTreeMap;
use std::default::Default;
use std::io::prelude::*;
use syntax::abi::Abi;
+use std::borrow::ToOwned;
+use std::path::Path;
mod android_base;
mod apple_base;
@@ -541,12 +543,13 @@ impl Target {
///
/// The error string could come from any of the APIs called, including
/// filesystem access and JSON decoding.
- pub fn search(target: &str) -> Result<Target, String> {
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
use std::env;
use std::ffi::OsString;
use std::fs::File;
use std::path::{Path, PathBuf};
use serialize::json;
+ use std::iter::IntoIterator;
fn load_file(path: &Path) -> Result<Target, String> {
let mut f = File::open(path).map_err(|e| e.to_string())?;
@@ -577,8 +580,14 @@ impl Target {
.unwrap_or(OsString::new());
// FIXME 16351: add a sane default search path?
+ let mut default_path = sysroot.to_owned();
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
+ default_path.push("rustlib");
- for dir in env::split_paths(&target_path) {
+ let paths = env::split_paths(&target_path)
+ .chain(Some(default_path).into_iter());
+
+ for dir in paths {
let p = dir.join(&path);
if p.is_file() {
return load_file(&p);
--
2.10.0
@@ -0,0 +1,73 @@
From 0829743c109a147213d06d38052662a5f2b0dd9b Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 14:52:56 -0500
Subject: [PATCH 02/10] mk: for stage0, use RUSTFLAGS to override target libs
dir
Setting HLIB specially for stage0 (and even more specially for windows)
also affects the location we place TLIB. To keep the TLIBs we build in
the place requested by configure, use '-L' and '--sysroot' to point
stage0-rustc at the appropriate location.
---
mk/main.mk | 29 ++++++++++++-----------------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/mk/main.mk b/mk/main.mk
index 90d3563..cdcbdf2 100644
--- a/mk/main.mk
+++ b/mk/main.mk
@@ -420,32 +420,26 @@ define SREQ
HROOT$(1)_H_$(3) = $(3)/stage$(1)
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
-# On Windows we always store host runtime libraries in the 'bin' directory because
-# there's no rpath. Target libraries go under $CFG_LIBDIR_RELATIVE (usually 'lib').
-HLIB_RELATIVE$(1)_H_$(3) = bin
-TROOT$(1)_T_$(2)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)/rustlib/$(2)
-# Remove the next 3 lines after a snapshot
-ifeq ($(1),0)
-RUSTFLAGS_STAGE0 += -L $$(TROOT$(1)_T_$(2)_H_$(3))/lib
-endif
-
-else
-
-ifeq ($(1),0)
-HLIB_RELATIVE$(1)_H_$(3) = lib
-else
HLIB_RELATIVE$(1)_H_$(3) = $$(CFG_LIBDIR_RELATIVE)
-endif
+
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
-endif
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(HLIB_RELATIVE$(1)_H_$(3))
# Destinations of artifacts for target architectures
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
+# Don't trust stage0, be explicit about libraries
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
+# passing the '-L' options.
+ifeq ($(1),0)
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
+endif
+
+
# Preqrequisites for using the stageN compiler
ifeq ($(1),0)
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
@@ -558,6 +552,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
$$(RUSTC_FLAGS_$(2))
endef
--
2.10.0
@@ -0,0 +1,27 @@
From 128503bf447e82b9e99bea8ef83294a6446036b5 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 13:48:14 -0500
Subject: [PATCH 03/10] mk: add missing CFG_LIBDIR_RELATIVE
---
mk/grammar.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mk/grammar.mk b/mk/grammar.mk
index 0d527bd..926f247 100644
--- a/mk/grammar.mk
+++ b/mk/grammar.mk
@@ -11,8 +11,8 @@
BG = $(CFG_BUILD_DIR)/grammar/
SG = $(S)src/grammar/
B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/
-L = $(B)lib/rustlib/$(CFG_BUILD)/lib
-LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/
+L = $(B)$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib
+LD = $(CFG_BUILD)/stage2/$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib/
RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD))
ifeq ($(CFG_OSTYPE),apple-darwin)
FLEX_LDFLAGS=-ll
--
2.10.0
@@ -0,0 +1,25 @@
From d73ce5d99346812fcf063a87b4efac54c263737d Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Dec 2014 19:15:19 -0500
Subject: [PATCH 05/10] std/thread_local: workaround for NULL __dso_handle
---
src/libstd/thread/local.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
index 152b977..3c62862 100644
--- a/src/libstd/thread/local.rs
+++ b/src/libstd/thread/local.rs
@@ -380,7 +380,7 @@ pub mod elf {
#[linkage = "extern_weak"]
static __cxa_thread_atexit_impl: *const libc::c_void;
}
- if !__cxa_thread_atexit_impl.is_null() {
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
arg: *mut u8,
dso_handle: *mut u8) -> libc::c_int;
--
2.10.0
@@ -0,0 +1,30 @@
From f8d4b1ea925789bca1aa6261017d63f5efa95c0f Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Mon, 2 Mar 2015 13:34:59 -0500
Subject: [PATCH 06/10] mk/install: use disable-rewrite-paths
This stops the install scripts from doing work we've already handled.
Path rewriting is only useful for prepackaged binary installers.
---
mk/install.mk | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mk/install.mk b/mk/install.mk
index d2e5449..e67650b 100644
--- a/mk/install.mk
+++ b/mk/install.mk
@@ -12,7 +12,9 @@ RUN_INSTALLER = cd tmp/empty_dir && \
sh ../../tmp/dist/$(1)/install.sh \
--prefix="$(DESTDIR)$(CFG_PREFIX)" \
--libdir="$(DESTDIR)$(CFG_LIBDIR)" \
- --mandir="$(DESTDIR)$(CFG_MANDIR)"
+ --mandir="$(DESTDIR)$(CFG_MANDIR)" \
+ "$(MAYBE_DISABLE_VERIFY)" \
+ --disable-rewrite-paths
install:
ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
--
2.10.0
@@ -0,0 +1,65 @@
From 2a42d59c3671f3ab68d8ff49c46240842aff6eb6 Mon Sep 17 00:00:00 2001
From: Steven Walter <swalter@lexmark.com>
Date: Wed, 18 Nov 2015 08:33:26 -0500
Subject: [PATCH 07/10] Allow overriding crate_hash with -C crate_hash
The current crate hash is not stable from run-to-run. This causes
problems with bitbake; it needs a guarantee that every build with the
same input will generate compatible output, otherwise sstate won't work.
Using -C crate_hash, we can do that by using the bitbake input hash to
determine the crate hash; the bitbake input hash will be stable, but
still different for different rust recipes.
Upstream-Status: not-appropriate
Upstream wants to fix it's actual object generation here. See
https://github.com/rust-lang/rust/issues/34902 (and others) for details.
---
src/librustc/session/config.rs | 2 ++
src/librustc_trans/back/link.rs | 12 +++++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 563f3ac..52a5130 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -804,6 +804,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
"choose the code model to use (rustc --print code-models for details)"),
metadata: Vec<String> = (Vec::new(), parse_list, [TRACKED],
"metadata to mangle symbol names with"),
+ crate_hash: String = ("".to_string(), parse_string, [TRACKED],
+ "override crate hash with given value"),
extra_filename: String = ("".to_string(), parse_string, [UNTRACKED],
"extra data to put in each output filename"),
codegen_units: usize = (1, parse_uint, [UNTRACKED],
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
index 3cf2500..0e48063 100644
--- a/src/librustc_trans/back/link.rs
+++ b/src/librustc_trans/back/link.rs
@@ -125,12 +125,22 @@ pub fn find_crate_name(sess: Option<&Session>,
}
+use std::hash::{Hasher, SipHasher};
+use rustc::hir::svh::Svh;
+
pub fn build_link_meta<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
name: &str)
-> LinkMeta {
+ let crate_hash = if tcx.sess.opts.cg.crate_hash != "" {
+ let mut state = SipHasher::new();
+ state.write(tcx.sess.opts.cg.crate_hash.as_bytes());
+ Svh::new(state.finish())
+ } else {
+ tcx.calculate_krate_hash()
+ };
let r = LinkMeta {
crate_name: name.to_owned(),
- crate_hash: tcx.calculate_krate_hash(),
+ crate_hash: crate_hash,
};
info!("{:?}", r);
return r;
--
2.10.0
@@ -0,0 +1,27 @@
From 174ae38bcc197658dd0ad6bcdae2bb06112e68a2 Mon Sep 17 00:00:00 2001
From: Steven Walter <swalter@lexmark.com>
Date: Wed, 18 Nov 2015 08:41:17 -0500
Subject: [PATCH 08/10] mk/platform.mk: pass -C crate_hash to builds
bitbake recipe will export FORCE_CRATE_HASH
Upstream-Status: not-appropriate
---
mk/platform.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/mk/platform.mk b/mk/platform.mk
index d601cab..0b5e9f2 100644
--- a/mk/platform.mk
+++ b/mk/platform.mk
@@ -181,6 +181,7 @@ define CFG_MAKE_TOOLCHAIN
AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1))
LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1))
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \
+ -C crate_hash=$(FORCE_CRATE_HASH) \
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
--
2.10.0
@@ -0,0 +1,58 @@
From c7daec775a917d9e3017bc35ea7d88cc9418f181 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Mon, 2 Mar 2015 13:27:49 -0500
Subject: [PATCH] add option to disable rewriting of install paths
This is intended for use by rust & cargo's `make install`, as in that
case:
- these paths are typically built into the pre-install layout already
- attempting to do the replacement will be incorrect subdirectory
cases (ie: libdir=lib/foo)
---
install-template.sh | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/install-template.sh b/install-template.sh
index 042b955..4ecf430 100644
--- a/install-template.sh
+++ b/install-template.sh
@@ -618,16 +618,18 @@ install_components() {
# Decide the destination of the file
local _file_install_path="$_dest_prefix/$_file"
- if echo "$_file" | grep "^lib/" > /dev/null
- then
- local _f="$(echo "$_file" | sed 's/^lib\///')"
- _file_install_path="$CFG_LIBDIR/$_f"
- fi
+ if [ -n "${CFG_REWRITE_PATHS-}" ]; then
+ if echo "$_file" | grep "^lib/" > /dev/null
+ then
+ local _f="$(echo "$_file" | sed 's/^lib\///')"
+ _file_install_path="$CFG_LIBDIR/$_f"
+ fi
- if echo "$_file" | grep "^share/man/" > /dev/null
- then
- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
- _file_install_path="$CFG_MANDIR/$_f"
+ if echo "$_file" | grep "^share/man/" > /dev/null
+ then
+ local _f="$(echo "$_file" | sed 's/^share\/man\///')"
+ _file_install_path="$CFG_MANDIR/$_f"
+ fi
fi
# Make sure there's a directory for it
@@ -810,6 +812,7 @@ valopt mandir "$CFG_DESTDIR_PREFIX/share/man" "install man pages in PATH"
opt ldconfig 1 "run ldconfig after installation (Linux only)"
opt verify 1 "obsolete"
flag verbose "run with verbose output"
+opt rewrite-paths 1 "rewrite install paths for libdir & mandir"
if [ $HELP -eq 1 ]
then
--
2.4.1
@@ -0,0 +1,18 @@
# Specifics for Rust 1.12.1
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.11.0"
RS_KEY = "5c6cf767"
RUST_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_SYS}"
# These are x86_64-unknown-linux-gnu hashes, how can we add more?
SRC_URI[rust-snapshot.md5sum] = "b83d7a1a90c2d80bef97a518022948c8"
SRC_URI[rust-snapshot.sha256sum] = "e9d27a72900da33c1bbd0e59dd42fd6414c6bcdfa33593fb7c7360068406394a"
SRC_URI[rust.md5sum] = "82db5a9cb9a051bf8ece2f5174cb273b"
SRC_URI[rust.sha256sum] = "97913ae4cb255618aaacd1a534b11f343634b040b32656250d09d8d9ec02d3dc"