about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-01-15 09:51:46 -0800
committerbors <bors@rust-lang.org>2014-01-15 09:51:46 -0800
commit7cb2aa24293cb1a68eb64bd95329b73446b0960c (patch)
tree57fd7947a3a8c7096bfd6183b79abcd04da7d8a2
parent7232dbf7685ba386d079993041d7aea32ee05911 (diff)
parent7a37294accc0f5b4e8259de1fe385fbbcdcf1845 (diff)
downloadrust-7cb2aa24293cb1a68eb64bd95329b73446b0960c.tar.gz
rust-7cb2aa24293cb1a68eb64bd95329b73446b0960c.zip
auto merge of #11523 : alexcrichton/rust/stage3, r=brson
This should go back to the old behavior while preserving the snapshot ease.
-rw-r--r--Makefile.in1
-rwxr-xr-xconfigure2
-rw-r--r--src/libextra/lib.rs3
-rw-r--r--src/librustc/front/std_inject.rs19
-rw-r--r--src/librustc/front/test.rs3
5 files changed, 23 insertions, 5 deletions
diff --git a/Makefile.in b/Makefile.in
index 1d71e32abb9..bef6ece5505 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -418,6 +418,7 @@ export CFG_PREFIX
 export CFG_LIBDIR
 export CFG_RUSTLIBDIR
 export CFG_LIBDIR_RELATIVE
+export CFG_DISABLE_INJECT_STD_VERSION
 
 ######################################################################
 # Subprograms
diff --git a/configure b/configure
index eed0e3100f4..f758d75fe76 100755
--- a/configure
+++ b/configure
@@ -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.
diff --git a/src/libextra/lib.rs b/src/libextra/lib.rs
index fc0cc045175..b3dda5cbc21 100644
--- a/src/libextra/lib.rs
+++ b/src/libextra/lib.rs
@@ -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"];
diff --git a/src/librustc/front/std_inject.rs b/src/librustc/front/std_inject.rs
index c301318047c..f2bc03b21ba 100644
--- a/src/librustc/front/std_inject.rs
+++ b/src/librustc/front/std_inject.rs
@@ -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,7 +80,7 @@ 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,
@@ -75,7 +88,7 @@ impl fold::Folder for StandardLibraryInjector {
             });
             vis.push(ast::ViewItem {
                 node: ast::ViewItemExternMod(self.sess.ident_of("rustuv"),
-                                             None,
+                                             with_version("rustuv"),
                                              ast::DUMMY_NODE_ID),
                 attrs: ~[],
                 vis: ast::Private,
diff --git a/src/librustc/front/test.rs b/src/librustc/front/test.rs
index 26d6c5cf9e7..b9a98e7b15a 100644
--- a/src/librustc/front/test.rs
+++ b/src/librustc/front/test.rs
@@ -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 {