@@ -17,11 +17,24 @@ use cargo_metadata::Message;
17
17
18
18
fn main ( ) {
19
19
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" ) ;
21
27
22
28
let out_dir = env:: var_os ( "OUT_DIR" ) . unwrap ( ) ;
23
29
let out_dir = Path :: new ( & out_dir) ;
24
30
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
+
25
38
let name = "proc-macro-test-impl" ;
26
39
let version = "0.0.0" ;
27
40
@@ -53,15 +66,7 @@ fn main() {
53
66
54
67
let target_dir = out_dir. join ( "target" ) ;
55
68
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 ( ) ) ;
65
70
cmd. current_dir ( & staging_dir)
66
71
. args ( [ "build" , "-p" , "proc-macro-test-impl" , "--message-format" , "json" ] )
67
72
// Explicit override the target directory to avoid using the same one which the parent
@@ -70,9 +75,6 @@ fn main() {
70
75
// instance to use the same target directory.
71
76
. arg ( "--target-dir" )
72
77
. arg ( & target_dir) ;
73
- if cfg ! ( feature = "sysroot-abi" ) {
74
- cmd. args ( [ "--features" , "sysroot-abi" ] ) ;
75
- }
76
78
77
79
if let Ok ( target) = std:: env:: var ( "TARGET" ) {
78
80
cmd. args ( [ "--target" , & target] ) ;
0 commit comments