Bootstrap warning "Use `--keep-stage-std` ..." persists even when the option is used

A pull request Add `--keep-stage-std` to `x.py` for keeping only standard library artifacts by ecstatic-morse · Pull Request #77120 · rust-lang/rust · GitHub introduces an option --keep-stage-std for bootstrapping (./x), but it does not provide any meaningful action, but it is just another syntactic bloat of --keep-stage option.

As you can see in the pull request, it pipes the option --keep-stage-std value to config.keep_stage_std and flags.keep_stage_std, but I cannot find any unique functionality of config.keep_stage_std value compared to config.keep_stage.

I think keeping this option is unnecessary. Am I missing something?

Reference: Following is the only part I found where config.keep_stage_std value used:

EDIT: I discovered another logic that distinguishes keep_stage and keep_stage_std:

EDIT: changed the title from "Bootstrap option --keep-stage-std is meaningless" to "Bootstrap warning "Use --keep-stage-std ..." persists even when the option is used". I'm rethinking whether the option is actually meaningless. Sorry for the confusion. :melting_face:

From my understanding:

  • keep_stage copies third party objects and copy_self_contained_objects, skipping the compiler build
  • keep_stage_std also copies these objects but doesn't skip the compiler build.

I apologize for my earlier mistake. Let's discuss this option further. My initial misunderstanding and post on this forum were prompted by a persistent warning message from the bootstrapping script ./x. It shows "WARNING: Use --keep-stage-std if you want to rebuild the compiler when it changes", even if I use multiple --keep-stage-std options like ./x build compiler --keep-stage 0 --keep-stage 1 --keep-stage-std 0 --keep-stage-std 1. After researching on GitHub, I realized that this warning only depends on the keep_stage configuration, not the presense of keep_stage_std.

I find this rigid method of showing warning messages to be confusing and not straightforward.