Skip to content

Tags: bazelbuild/bazel

Tags

7.2.1

Toggle 7.2.1's commit message
Release 7.2.1 (2024-06-25)

Release Notes:

8.0.0-pre.20240607.2

Toggle 8.0.0-pre.20240607.2's commit message
Release 8.0.0-pre.20240607.2 (2024-06-21)

Baseline: 08ef9b2

Incompatible changes:

  - path attribute is removed from filegroup

Important changes:

  - Git merge conflicts in `MODULE.bazel.lock` files can be resolved
    automatically. See
    https://bazel.build/external/lockfile#automatic-resolution for
    the required setup.
  - Deleted Bazel's builtin aar_import helper tools. They live in
    rules_android now.

This release contains contributions from many people at Google, as well as dependabot[bot], Fabian Meumertzheim, Greg Magolan, Matthieu MOREL, Ted.

7.2.1rc2

Toggle 7.2.1rc2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[7.2.1] Do not eval WORKSPACE in LocalRepositoryLookupFunction when `…

…--noenable_workspace` (#22837)

This still leaves the question of "what do we do instead?". See issues
#22208 and #21515.

Fixes #22754.

Closes #22774.

PiperOrigin-RevId: 645148811
Change-Id: Ib9d07d2ecbc3a79e3341de6739de1c3349124d6b

Commit
1246ff4

Co-authored-by: Xdng Yng <[email protected]>

8.0.0-pre.20240603.2

Toggle 8.0.0-pre.20240603.2's commit message
Release 8.0.0-pre.20240603.2 (2024-06-14)

Baseline: 1d33531

Cherry picks:

   + 642b571:
     Disable SkyframeStats collection unless specifically requested
     by flag. Removes the logic to limit on the number of reported
     types, if you're requesting the stats already you just get all
     of them.

This release contains contributions from many people at Google, as well as Benjamin Peterson.

7.2.1rc1

Toggle 7.2.1rc1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[7.2.1] Fix an NPE with the compact execution log and coverage (#22713)

Fixes this issue when collecting coverage with the compact execution
log:

```
Caused by: java.lang.NullPointerException: Cannot invoke "com.google.devtools.build.lib.cmdline.Label.getCanonicalForm()" because the return value of "com.google.devtools.build.lib.actions.Spawn.getTargetLabel()" is null
	at com.google.devtools.build.lib.exec.CompactSpawnLogContext.logSpawn(CompactSpawnLogContext.java:216)
	at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:191)
	at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:118)
	at com.google.devtools.build.lib.exec.SpawnStrategyResolver.exec(SpawnStrategyResolver.java:45)
	at com.google.devtools.build.lib.bazel.coverage.CoverageReportActionBuilder$CoverageReportAction.execute(CoverageReportActionBuilder.java:136)
	at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.executeAction(SkyframeActionExecutor.java:1159)
	at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.run(SkyframeActionExecutor.java:1076)
	at com.google.devtools.build.lib.skyframe.ActionExecutionState.runStateMachine(ActionExecutionState.java:165)
	at com.google.devtools.build.lib.skyframe.ActionExecutionState.getResultOrDependOnFuture(ActionExecutionState.java:94)
	at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.executeAction(SkyframeActionExecutor.java:573)
	at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.checkCacheAndExecuteIfNeeded(ActionExecutionFunction.java:859)
	at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.computeInternal(ActionExecutionFunction.java:333)
	at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.compute(ActionExecutionFunction.java:171)
	at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:461)
```

Closes #22703.

PiperOrigin-RevId: 642384421
Change-Id: I2c3805f5d5ba250274f8da45bdc53b56a87c5f6c

Commit
0dbfacc

Co-authored-by: Fabian Meumertzheim <[email protected]>

7.2.0

Toggle 7.2.0's commit message
Release 7.2.0 (2024-06-10)

Release Notes:

Configurability:
+ aquery: `//foo:bar` now means "all configured targets with label `//foo:bar`" instead of "choose an arbitrary configured target with label `//foo:bar`". This is in line with cquery behavior. (#22135)
+ Added a new flag `--incompatible_disable_native_repo_rules` to disable native repo rule usage in WORKSPACE. All native repo rules now have a Starlark counterpart that can be used in both WORKSPACE and Bzlmod; see #22080 for more details. (#22203)
+ Starlark command-line flags can now be referred to through `alias` targets. (#22212)

ExternalDeps:
+ bzlmod `git_repository` now accepts the `strip_prefix` arg and passes it to the underlying `git_repository` call. (#22137)
+ Added a new `include()` directive to `MODULE.bazel` files, which allows the root module file to be divided into multiple segments. (#22204)
+ Fixed certain deadlocks in repo fetching with worker threads (`--experimental_worker_for_repo_fetching=auto`). (#22261)
+ `print` statements in module files are now only executed for the root module and modules subject to non-registry overrides (e.g. `local_path_override`). (#22263)
+ The new `refresh` value for `--lockfile_mode` behaves like the `update` mode, but additionally forces a refresh of mutable registry content (yanked versions and missing module versions) when switched to or from time to time while enabled. (#22371)
+ `Label` instances passed to `print` or `fail` as positional arguments are now formatted with apparent repository names (optimized for human readability). (#22460)
+ Changes to environment variables read via `getenv` now correctly invalidate module extensions. (#22541)
+ Git merge conflicts in `MODULE.bazel.lock` files can be resolved automatically. See https://bazel.build/external/lockfile#automatic-resolution for the required setup. (#22650)

OSS:
+ Bazel on Linux and BSD now respects the XDG_CACHE_HOME environment variable instead of assuming that ~/.cache/bazel is writable. (#21817)

Performance:
+ Paths in the Linux sandbox are now again identical to those outside the sandbox, even with `--incompatible_sandbox_hermetic_tmp`. (#22407)

Remote-Exec:
+ The combined coverage report produced via `--combined_report=lcov` is now announced on the BES via the new `CoverageReport` event. (#22327)
+ The compact and full execution logs now contain start times for spawns (if available). (#22341)

Rules-CPP:
+ The default Unix C++ toolchain now supports the `parse_headers` feature to validate header files with `--process_headers_in_dependencies`. (#22369)

Starlark-Interpreter:
+ Starlark `min` and `max` buitins now allow a `key` callback, similarly to `sorted`. (#21960)

Acknowledgements:

This release contains contributions from many people at Google, as well as bazel.build machine account, Brentley Jones, Cameron Martin, Daniel Wagner-Hall, Douglas Thor, Fabian Meumertzheim, George Gensure, hvd, Isaac Torres, Keith Smiley, Mark Elliot, oquenchil, Romain Chossart, Son Luong Ngoc, Spencer Putt, Thomas Weischuh, Xdng Yng, Xùdōng Yáng, Zheng Wei Tan.

8.0.0-pre.20240530.1

Toggle 8.0.0-pre.20240530.1's commit message
Release 8.0.0-pre.20240530.1 (2024-06-05)

Baseline: b48a319

Important changes:

  - Changes to environment variables read via `getenv` now correctly
    invalidate module extensions.
  - `--experimental_collect_system_network_usage` is flipped to
    `true`.
  - Progress is no longer written to BEP after the build completing
    event is posted.

This release contains contributions from many people at Google, as well as Alessandro Patti, dependabot[bot], Fabian Meumertzheim, Keith Smiley, Matt Smith, Xdng Yng.

7.2.0rc3

Toggle 7.2.0rc3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[7.2.0] Add a git merge driver for `MODULE.bazel.lock` (#22650)

Adds a `jq` script to `scripts/` that merges any number of
`MODULE.bazel.lock` files without using Bazel or reading the
corresponding `MODULE.bazel` files.

The lockfile docs now have a section explaining the steps needed to set
up this script as a custom merger driver for Git, which means that merge
conflicts in `MODULE.bazel.lock` files will always be resolved
automatically. Note that resolution may emit lockfiles with redundant
information that will be dropped by subsequent Bazel invocations.

When Bazel encounters an error during lockfile parsing that could be
caused by a merge conflict, it emits a different error message with a
link to the docs. This required fixing the following kind of server
crash when a conflict marker occurs inside a `recordedFileInputs`
object:
```
FATAL: bazel crashed due to an internal error. Printing stack trace:
java.lang.RuntimeException: Unrecoverable error while evaluating node 'com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileValue$$Lambda/0x000000f8011da998@314cd9ee' (requested by nodes 'RegistryKey{url=https://bcr.bazel.build/}')
	at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:557)
	at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:426)
	at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1403)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Caused by: java.lang.IllegalArgumentException: the provided path should be absolute in the filesystem
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143)
	at com.google.devtools.build.lib.rules.repository.RepoRecordedInput$RepoCacheFriendlyPath.createOutsideWorkspace(RepoRecordedInput.java:202)
	at com.google.devtools.build.lib.rules.repository.RepoRecordedInput$RepoCacheFriendlyPath.parse(RepoRecordedInput.java:222)
	at com.google.devtools.build.lib.rules.repository.RepoRecordedInput$File$1.parse(RepoRecordedInput.java:265)
	at com.google.devtools.build.lib.bazel.bzlmod.GsonTypeAdapterUtil$11.read(GsonTypeAdapterUtil.java:376)
	at com.google.devtools.build.lib.bazel.bzlmod.GsonTypeAdapterUtil$11.read(GsonTypeAdapterUtil.java:367)
	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:186)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
	at com.google.devtools.build.lib.bazel.bzlmod.DelegateTypeAdapterFactory$1.read(DelegateTypeAdapterFactory.java:133)
	at com.google.devtools.build.lib.bazel.bzlmod.LockFileModuleExtension_GsonTypeAdapter.read(LockFileModuleExtension_GsonTypeAdapter.java:171)
	at com.google.devtools.build.lib.bazel.bzlmod.LockFileModuleExtension_GsonTypeAdapter.read(LockFileModuleExtension_GsonTypeAdapter.java:17)
	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:187)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
	at com.google.devtools.build.lib.bazel.bzlmod.DelegateTypeAdapterFactory$1.read(DelegateTypeAdapterFactory.java:133)
	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:187)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145)
	at com.google.devtools.build.lib.bazel.bzlmod.DelegateTypeAdapterFactory$1.read(DelegateTypeAdapterFactory.java:133)
	at com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileValue_GsonTypeAdapter.read(BazelLockFileValue_GsonTypeAdapter.java:129)
	at com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileValue_GsonTypeAdapter.read(BazelLockFileValue_GsonTypeAdapter.java:15)
	at com.google.gson.Gson.fromJson(Gson.java:991)
	at com.google.gson.Gson.fromJson(Gson.java:956)
	at com.google.gson.Gson.fromJson(Gson.java:905)
	at com.google.gson.Gson.fromJson(Gson.java:876)
	at com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction.getLockfileValue(BazelLockFileFunction.java:93)
	at com.google.devtools.build.lib.bazel.bzlmod.BazelLockFileFunction.compute(BazelLockFileFunction.java:73)
	at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:468)
	... 7 more
```

Alternatives considered:
* Letting Bazel resolve the conflict would require building knowledge
about particular version control systems and their conflict style into
Bazel. It would also either require the user to resolve conflicts in
`MODULE.bazel` first or deviate from the current behavior that the
lockfile is not updated when any Bzlmod error is encountered. The jq
script can be used as is by every VCS with merge driver support and
resolves the conflict in `MODULE.bazel.lock` independently of
`MODULE.bazel`.
* Implementing the git merge driver as a `bazel mod` subcommand. This
could be the source of intransparent slowdowns during regular git
operations, which may even be triggered by other tools such as IDEs. The
jq script is very fast.
* Implementing the merger as a Go binary in buildtools would replace the
ubiquitous jq tool with a special purpose binary while also not solving
the problem that per-user action is required once to register a custom
merge driver.

Implements
https://docs.google.com/document/d/1TjA7-M5njkI1F38IC0pm305S9EOmxcUwaCIvaSmansg/edit#heading=h.5mcn15i0e1ch

RELNOTES: Git merge conflicts in `MODULE.bazel.lock` files can be
resolved automatically. See
https://bazel.build/external/lockfile#automatic-resolution for the
required setup.

Closes #22428.

PiperOrigin-RevId: 640596606
Change-Id: I20659e3e53a7d8f2529f2ad5a3e7f258d7af026d

Commit
3187250

Co-authored-by: Fabian Meumertzheim <[email protected]>

8.0.0-pre.20240523.3

Toggle 8.0.0-pre.20240523.3's commit message
Release 8.0.0-pre.20240523.3 (2024-05-31)

Baseline: 739f7b8

Cherry picks:

   + cdd104c:
     Do not record events announced after the build-completing event.
   + b12f536:
     Integrate the skymeld cases into the rewinding inconsistency
     receiver.

Incompatible changes:

  - The --experimental_aquery_dump_after_build_format and
    --experimental_aquery_dump_after_build_output_file command line
    options are not available anymore.

Important changes:

  - Paths in the Linux sandbox are now again identical to those
    outside the sandbox, even with
    `--incompatible_sandbox_hermetic_tmp`.
  - `cc_toolchain` now passes runfiles for its *_files attrs (e.g.
    data files for a tool built for linking).
  - `Label` instances passed to `print` or `fail` as positional
    arguments are now formatted with apparent repository names
    (optimized for human readability).

This release contains contributions from many people at Google, as well as Fabian Meumertzheim, George Gensure, Greg Magolan, hvd, Isaac Torres, Keith Smiley, oquenchil, Tobias Werth, Tomasz Pasternak, UebelAndre, Xdng Yng.

7.2.0rc2

Toggle 7.2.0rc2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[7.2.0] Fix getting authentication for URLs in http repo rules (#22583)

- Fixed the leak of `remote_patches` URLs for downloaded the source
archive.
- Compute auth for required URLs only

Fixes #22201

Closes #22517.

PiperOrigin-RevId: 638300996
Change-Id: Ib76e3284f209d2314844cfd662ac8eadba785fae

Commit
5986420

Co-authored-by: Yun Peng <[email protected]>