osbase/build: fix unused config transition

The race and pure configs are only changed by command line flags, not by
transitions. This means that they should not be included in the
ignore_unused_configuration to avoid unnecessary rebuilds.

I previously added the race config here, but that was because of a
misunderstanding: The ST-hash in the output path is not a hash of the
configuration, but of the diff of the configuration against the
baseline. The baseline includes all the flags set on the command line.
This is controlled by --experimental_output_directory_naming_scheme
which defaults to diff_against_dynamic_baseline.

What this means is that changing a flag on the command line does not
change the hash of the diff, so it does not rebuild actions which don't
use the flag. But if you then try to reset the config in a transition,
the configs are the same but the diff hashes are not, resulting in
unnecessary rebuilds.

Change-Id: Ibfe8581e0a5c64ccd0d75a0f7c85c7d7b6d46abd
Reviewed-on: https://review.monogon.dev/c/monogon/+/4191
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
Tested-by: Jenkins CI
1 file changed
tree: d44418d8d60abfaac5bcfa23bfe7e68c62375efd
  1. .vscode/
  2. build/
  3. cloud/
  4. go/
  5. intellij/
  6. metropolis/
  7. osbase/
  8. third_party/
  9. tools/
  10. version/
  11. .bazelignore
  12. .bazelproject
  13. .bazelrc
  14. .bazelrc.ci
  15. .bazelrc.sandboxroot
  16. .bazelversion
  17. .git-ignore-revs
  18. .gitignore
  19. BUILD.bazel
  20. CODING_STANDARDS.md
  21. go.mod
  22. go.sum
  23. LICENSE
  24. MODULE.bazel
  25. MODULE.bazel.lock
  26. README.md
  27. SETUP.md
  28. shell.nix
  29. WORKSPACE
README.md

Monogon Monorepo

This is the main repository containing the source code for the Monogon Platform.

This is pre-release software - take a look, and check back later! In the meantime, join us on Matrix (#monogon-os-community:matrix.org) or Discord.

Environment

Our build environment is self-contained and requires only minimal host dependencies:

  • A Linux machine or VM.
  • Bazelisk >= v1.15.0 (or a working Nix environment).
  • A reasonably recent kernel with user namespaces enabled.
  • Working KVM with access to /dev/kvm (if you want to run tests).

Our docs assume that Bazelisk is available as bazel on your PATH.

Refer to SETUP.md for detailed instructions.

Monogon OS

The source code lives in //metropolis (Metropolis is the codename of Monogon OS).

See the //metropolis/README.md for a developer quick start guide, or see the Monogon OS Handbook for user documentation.