@@ -28,6 +28,60 @@ use crate::utils::cache::{INTERNER, Interned};
28
28
use crate :: utils:: channel:: { self , GitInfo } ;
29
29
use crate :: utils:: helpers:: { self , exe, output, t} ;
30
30
31
+ /// Each path in this list is considered "allowed" in the `download-rustc="if-unchanged"` logic.
32
+ /// This means they can be modified and changes to these paths should never trigger a compiler build
33
+ /// when "if-unchanged" is set.
34
+ ///
35
+ /// NOTE: Paths must have the ":!" prefix to tell git to ignore changes in those paths during
36
+ /// the diff check.
37
+ ///
38
+ /// WARNING: Be cautious when adding paths to this list. If a path that influences the compiler build
39
+ /// is added here, it will cause bootstrap to skip necessary rebuilds, which may lead to risky results.
40
+ const RUSTC_IF_UNCHANGED_ALLOWED_PATHS : & [ & str ] = & [
41
+ ":!.github" ,
42
+ ":!.clang-format" ,
43
+ ":!.editorconfig" ,
44
+ ":!.git-blame-ignore-revs" ,
45
+ ":!.gitattributes" ,
46
+ ":!.gitignore" ,
47
+ ":!.gitmodules" ,
48
+ ":!.ignore" ,
49
+ ":!.mailmap" ,
50
+ ":!CODE_OF_CONDUCT.md" ,
51
+ ":!CONTRIBUTING.md" ,
52
+ ":!COPYRIGHT" ,
53
+ ":!INSTALL.md" ,
54
+ ":!LICENSE-APACHE" ,
55
+ ":!LICENSE-MIT" ,
56
+ ":!LICENSES" ,
57
+ ":!README.md" ,
58
+ ":!RELEASES.md" ,
59
+ ":!REUSE.toml" ,
60
+ ":!config.example.toml" ,
61
+ ":!configure" ,
62
+ ":!rust-bors.toml" ,
63
+ ":!rustfmt.toml" ,
64
+ ":!tests" ,
65
+ ":!triagebot.toml" ,
66
+ ":!x" ,
67
+ ":!x.ps1" ,
68
+ ":!x.py" ,
69
+ ":!src/ci/docker" ,
70
+ ":!src/ci/github-actions" ,
71
+ ":!src/ci/scripts" ,
72
+ ":!src/ci/cpu-usage-over-time.py" ,
73
+ ":!src/ci/publish_toolstate.sh" ,
74
+ ":!src/ci/run.sh" ,
75
+ ":!src/ci/shared.sh" ,
76
+ ":!src/doc" ,
77
+ ":!src/etc" ,
78
+ ":!src/gcc" ,
79
+ ":!src/librustdoc" ,
80
+ ":!src/rustdoc-json-types" ,
81
+ ":!src/tools" ,
82
+ ":!src/README.md" ,
83
+ ] ;
84
+
31
85
macro_rules! check_ci_llvm {
32
86
( $name: expr) => {
33
87
assert!(
@@ -2754,18 +2808,9 @@ impl Config {
2754
2808
}
2755
2809
} ;
2756
2810
2757
- let files_to_track = & [
2758
- self . src . join ( "compiler" ) ,
2759
- self . src . join ( "library" ) ,
2760
- self . src . join ( "src/version" ) ,
2761
- self . src . join ( "src/stage0" ) ,
2762
- self . src . join ( "src/ci/channel" ) ,
2763
- ] ;
2764
-
2765
2811
// Look for a version to compare to based on the current commit.
2766
2812
// Only commits merged by bors will have CI artifacts.
2767
- let commit =
2768
- get_closest_merge_commit ( Some ( & self . src ) , & self . git_config ( ) , files_to_track) . unwrap ( ) ;
2813
+ let commit = get_closest_merge_commit ( Some ( & self . src ) , & self . git_config ( ) , & [ ] ) . unwrap ( ) ;
2769
2814
if commit. is_empty ( ) {
2770
2815
println ! ( "ERROR: could not find commit hash for downloading rustc" ) ;
2771
2816
println ! ( "HELP: maybe your repository history is too shallow?" ) ;
@@ -2787,27 +2832,23 @@ impl Config {
2787
2832
return None ;
2788
2833
}
2789
2834
2790
- // Warn if there were changes to the compiler or standard library since the ancestor commit.
2791
- let has_changes = !t ! ( helpers:: git( Some ( & self . src) )
2835
+ let in_tree_build_required = !t ! ( helpers:: git( Some ( & self . src) )
2792
2836
. args( [ "diff-index" , "--quiet" , & commit] )
2793
2837
. arg( "--" )
2794
- . args( files_to_track )
2838
+ . args( RUSTC_IF_UNCHANGED_ALLOWED_PATHS )
2795
2839
. as_command_mut( )
2796
2840
. status( ) )
2797
2841
. success ( ) ;
2798
- if has_changes {
2842
+
2843
+ if in_tree_build_required {
2799
2844
if if_unchanged {
2800
2845
if self . is_verbose ( ) {
2801
- println ! (
2802
- "WARNING: saw changes to compiler/ or library/ since {commit}; \
2803
- ignoring `download-rustc`"
2804
- ) ;
2846
+ println ! ( "WARNING: changes detected since {commit}; ignoring `download-rustc`" ) ;
2805
2847
}
2806
2848
return None ;
2807
2849
}
2808
2850
println ! (
2809
- "WARNING: `download-rustc` is enabled, but there are changes to \
2810
- compiler/ or library/"
2851
+ "WARNING: `download-rustc` is enabled while there are changes on the paths that can influence the compiler builds."
2811
2852
) ;
2812
2853
}
2813
2854
0 commit comments