Skip to content

Inject a libstd version, but not for stage3 #11523

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 15, 2014
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Makefile.in
Original file line number Diff line number Diff line change
@@ -418,6 +418,7 @@ export CFG_PREFIX
export CFG_LIBDIR
export CFG_RUSTLIBDIR
export CFG_LIBDIR_RELATIVE
export CFG_DISABLE_INJECT_STD_VERSION

######################################################################
# Subprograms
2 changes: 2 additions & 0 deletions configure
Original file line number Diff line number Diff line change
@@ -381,6 +381,7 @@ opt clang 0 "prefer clang to gcc for building the runtime"
opt ccache 0 "invoke gcc/clang via ccache to reuse object files between builds"
opt local-rust 0 "use an installed rustc rather than downloading a snapshot"
opt pax-flags 0 "apply PaX flags to rustc binaries (required for GRSecurity/PaX-patched kernels)"
opt inject-std-version 1 "inject the current compiler version of libstd into programs"
valopt prefix "/usr/local" "set installation prefix"
valopt local-rust-root "/usr/local" "set prefix for local rust binary"
valopt llvm-root "" "set LLVM root"
@@ -1042,6 +1043,7 @@ putvar CFG_DISABLE_MANAGE_SUBMODULES
putvar CFG_ANDROID_CROSS_PATH
putvar CFG_MINGW32_CROSS_PATH
putvar CFG_MANDIR
putvar CFG_DISABLE_INJECT_STD_VERSION

# Avoid spurious warnings from clang by feeding it original source on
# ccache-miss rather than preprocessed input.
3 changes: 2 additions & 1 deletion src/libextra/lib.rs
Original file line number Diff line number Diff line change
@@ -20,7 +20,8 @@ Rust extras are part of the standard Rust distribution.
*/

#[crate_id = "extra#0.10-pre"];
// NOTE: upgrade to 0.10-pre after the next snapshot
#[crate_id = "extra#0.9"];
#[comment = "Rust extras"];
#[license = "MIT/ASL2"];
#[crate_type = "rlib"];
19 changes: 16 additions & 3 deletions src/librustc/front/std_inject.rs
Original file line number Diff line number Diff line change
@@ -21,6 +21,9 @@ use syntax::fold;
use syntax::opt_vec;
use syntax::util::small_vector::SmallVector;

// NOTE: upgrade to 0.10-pre after the next snapshot
pub static VERSION: &'static str = "0.9";

pub fn maybe_inject_libstd_ref(sess: Session, crate: ast::Crate)
-> ast::Crate {
if use_std(&crate) {
@@ -53,11 +56,21 @@ struct StandardLibraryInjector {
sess: Session,
}

pub fn with_version(crate: &str) -> Option<(@str, ast::StrStyle)> {
match option_env!("CFG_DISABLE_INJECT_STD_VERSION") {
Some("1") => None,
_ => {
Some((format!("{}\\#{}", crate, VERSION).to_managed(),
ast::CookedStr))
}
}
}

impl fold::Folder for StandardLibraryInjector {
fn fold_crate(&mut self, crate: ast::Crate) -> ast::Crate {
let mut vis = ~[ast::ViewItem {
node: ast::ViewItemExternMod(self.sess.ident_of("std"),
None,
with_version("std"),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::Private,
@@ -67,15 +80,15 @@ impl fold::Folder for StandardLibraryInjector {
if use_uv(&crate) && !self.sess.building_library.get() {
vis.push(ast::ViewItem {
node: ast::ViewItemExternMod(self.sess.ident_of("green"),
None,
with_version("green"),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::Private,
span: DUMMY_SP
});
vis.push(ast::ViewItem {
node: ast::ViewItemExternMod(self.sess.ident_of("rustuv"),
None,
with_version("rustuv"),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::Private,
3 changes: 2 additions & 1 deletion src/librustc/front/test.rs
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@

use driver::session;
use front::config;
use front::std_inject::with_version;

use std::cell::RefCell;
use std::vec;
@@ -292,7 +293,7 @@ fn mk_std(cx: &TestCtxt) -> ast::ViewItem {
ast::DUMMY_NODE_ID))])
} else {
ast::ViewItemExternMod(id_extra,
None,
with_version("extra"),
ast::DUMMY_NODE_ID)
};
ast::ViewItem {