@@ -17,11 +17,24 @@ use cargo_metadata::Message;
1717
1818fn main ( ) {
1919 println ! ( "cargo:rerun-if-changed=imp" ) ;
20- println ! ( "cargo:rerun-if-env-changed=PROC_MACRO_TEST_TOOLCHAIN" ) ;
20+
21+ let has_features = env:: var_os ( "RUSTC_BOOTSTRAP" ) . is_some ( )
22+ || String :: from_utf8 (
23+ Command :: new ( toolchain:: cargo ( ) ) . arg ( "--version" ) . output ( ) . unwrap ( ) . stdout ,
24+ )
25+ . unwrap ( )
26+ . contains ( "nightly" ) ;
2127
2228 let out_dir = env:: var_os ( "OUT_DIR" ) . unwrap ( ) ;
2329 let out_dir = Path :: new ( & out_dir) ;
2430
31+ if !has_features {
32+ println ! ( "proc-macro-test testing only works on nightly toolchains" ) ;
33+ let info_path = out_dir. join ( "proc_macro_test_location.txt" ) ;
34+ fs:: File :: create ( info_path) . unwrap ( ) ;
35+ return ;
36+ }
37+
2538 let name = "proc-macro-test-impl" ;
2639 let version = "0.0.0" ;
2740
@@ -53,15 +66,7 @@ fn main() {
5366
5467 let target_dir = out_dir. join ( "target" ) ;
5568
56- let mut cmd = if let Ok ( toolchain) = std:: env:: var ( "PROC_MACRO_TEST_TOOLCHAIN" ) {
57- // leverage rustup to find user-specific toolchain
58- let mut cmd = Command :: new ( "cargo" ) ;
59- cmd. arg ( format ! ( "+{toolchain}" ) ) ;
60- cmd
61- } else {
62- Command :: new ( toolchain:: cargo ( ) )
63- } ;
64-
69+ let mut cmd = Command :: new ( toolchain:: cargo ( ) ) ;
6570 cmd. current_dir ( & staging_dir)
6671 . args ( [ "build" , "-p" , "proc-macro-test-impl" , "--message-format" , "json" ] )
6772 // Explicit override the target directory to avoid using the same one which the parent
@@ -70,9 +75,6 @@ fn main() {
7075 // instance to use the same target directory.
7176 . arg ( "--target-dir" )
7277 . arg ( & target_dir) ;
73- if cfg ! ( feature = "sysroot-abi" ) {
74- cmd. args ( [ "--features" , "sysroot-abi" ] ) ;
75- }
7678
7779 if let Ok ( target) = std:: env:: var ( "TARGET" ) {
7880 cmd. args ( [ "--target" , & target] ) ;
0 commit comments