Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[9.3.0] Use no-op path mapper when output paths collide with inputs#30467

Open
Silic0nS0ldier wants to merge 1 commit into
bazelbuild:release-9.3.0bazelbuild/bazel:release-9.3.0from
Silic0nS0ldier:9.3.0_path-mapping-io-collision-fixSilic0nS0ldier/bazel:9.3.0_path-mapping-io-collision-fixCopy head branch name to clipboard
Open

[9.3.0] Use no-op path mapper when output paths collide with inputs#30467
Silic0nS0ldier wants to merge 1 commit into
bazelbuild:release-9.3.0bazelbuild/bazel:release-9.3.0from
Silic0nS0ldier:9.3.0_path-mapping-io-collision-fixSilic0nS0ldier/bazel:9.3.0_path-mapping-io-collision-fixCopy head branch name to clipboard

Conversation

@Silic0nS0ldier

Copy link
Copy Markdown
Contributor

Description

Prevents the path mapper (#6526, --experimental_output_paths=strip) from applying when a collision occurs between mapped input and output paths.

Motivation

Fixes a discovered edge case where a globally applied Java annotation processor had dependent .jar collide when building that same .jar under the default configuration, leading to a AccessDeniedException.

e.g.

$ bazel cquery 'somepath(//product_platform/libs/protogen:protogen, config(//product_platform/libs/protogen:protogen, d373329))'
...
//product_platform/libs/protogen:protogen (e3ee988)
@bazel_tools//tools/jdk:java_plugins_flag_alias (e3ee988)
//tools/error_prone/global_bug_patterns:global_bug_patterns (d373329)
//tools/error_prone/global_bug_patterns/unproducible_value:unproducible_value (d373329)
//product_platform/libs/protogen:protogen (d373329)

$ bazel build //product_platform/libs/protogen:protogen
...
ERROR: /___/product_platform/libs/protogen/BUILD.bazel:7:13: Building product_platform/libs/protogen/libprotogen.jar (18 source files) failed: (Exit 1): java failed: error executing Javac command (from java_library rule target //product_platform/libs/protogen:protogen) external/+java_repositories+openjdk21_linux_x86_64/bin/java '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' ... (remaining 20 arguments skipped)
Remote server execution message: Execution result: ___
java.nio.file.AccessDeniedException: bazel-out/cfg/bin/product_platform/libs/protogen/libprotogen.jar
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:261)
        at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:482)
        at java.base/java.nio.file.Files.newOutputStream(Files.java:228)
        at com.google.devtools.build.buildjar.jarhelper.JarCreator.execute(JarCreator.java:279)
        at com.google.devtools.build.buildjar.SimpleJavaLibraryBuilder.buildJar(SimpleJavaLibraryBuilder.java:152)
        at com.google.devtools.build.buildjar.SimpleJavaLibraryBuilder.run(SimpleJavaLibraryBuilder.java:119)
        at com.google.devtools.build.buildjar.BazelJavaBuilder.build(BazelJavaBuilder.java:111)
        at com.google.devtools.build.buildjar.BazelJavaBuilder.parseAndBuild(BazelJavaBuilder.java:91)
        at com.google.devtools.build.buildjar.BazelJavaBuilder.lambda$main$0(BazelJavaBuilder.java:52)
        at com.google.devtools.build.lib.worker.WorkRequestHandler$WorkRequestCallback.apply(WorkRequestHandler.java:252)
        at com.google.devtools.build.lib.worker.WorkRequestHandler.respondToRequest(WorkRequestHandler.java:481)
        at com.google.devtools.build.lib.worker.WorkRequestHandler.lambda$startResponseThread$0(WorkRequestHandler.java:433)
        at java.base/java.lang.Thread.run(Thread.java:1583)Use --verbose_failures to see the command lines of failed build steps.

Build API Changes

No

Checklist

  • I have added tests for the new use cases (if any).
  • I have updated the documentation (if applicable).

Release Notes

RELNOTES: None

Closes #30440.

### Description
Prevents the path mapper (bazelbuild#6526, `--experimental_output_paths=strip`) from applying when a collision occurs between mapped input and output paths.

### Motivation
Fixes a discovered edge case where a globally applied Java annotation processor had dependent `.jar` collide when building that same `.jar` under the default configuration, leading to a `AccessDeniedException`.

e.g.
```
$ bazel cquery 'somepath(//product_platform/libs/protogen:protogen, config(//product_platform/libs/protogen:protogen, d373329))'
...
//product_platform/libs/protogen:protogen (e3ee988)
@bazel_tools//tools/jdk:java_plugins_flag_alias (e3ee988)
//tools/error_prone/global_bug_patterns:global_bug_patterns (d373329)
//tools/error_prone/global_bug_patterns/unproducible_value:unproducible_value (d373329)
//product_platform/libs/protogen:protogen (d373329)

$ bazel build //product_platform/libs/protogen:protogen
...
ERROR: /___/product_platform/libs/protogen/BUILD.bazel:7:13: Building product_platform/libs/protogen/libprotogen.jar (18 source files) failed: (Exit 1): java failed: error executing Javac command (from java_library rule target //product_platform/libs/protogen:protogen) external/+java_repositories+openjdk21_linux_x86_64/bin/java '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' ... (remaining 20 arguments skipped)
Remote server execution message: Execution result: ___
java.nio.file.AccessDeniedException: bazel-out/cfg/bin/product_platform/libs/protogen/libprotogen.jar
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:261)
        at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:482)
        at java.base/java.nio.file.Files.newOutputStream(Files.java:228)
        at com.google.devtools.build.buildjar.jarhelper.JarCreator.execute(JarCreator.java:279)
        at com.google.devtools.build.buildjar.SimpleJavaLibraryBuilder.buildJar(SimpleJavaLibraryBuilder.java:152)
        at com.google.devtools.build.buildjar.SimpleJavaLibraryBuilder.run(SimpleJavaLibraryBuilder.java:119)
        at com.google.devtools.build.buildjar.BazelJavaBuilder.build(BazelJavaBuilder.java:111)
        at com.google.devtools.build.buildjar.BazelJavaBuilder.parseAndBuild(BazelJavaBuilder.java:91)
        at com.google.devtools.build.buildjar.BazelJavaBuilder.lambda$main$0(BazelJavaBuilder.java:52)
        at com.google.devtools.build.lib.worker.WorkRequestHandler$WorkRequestCallback.apply(WorkRequestHandler.java:252)
        at com.google.devtools.build.lib.worker.WorkRequestHandler.respondToRequest(WorkRequestHandler.java:481)
        at com.google.devtools.build.lib.worker.WorkRequestHandler.lambda$startResponseThread$0(WorkRequestHandler.java:433)
        at java.base/java.lang.Thread.run(Thread.java:1583)Use --verbose_failures to see the command lines of failed build steps.
```

### Build API Changes
No

### Checklist

- [x] I have added tests for the new use cases (if any).
- [x] I have updated the documentation (if applicable).

### Release Notes

RELNOTES: None

Closes bazelbuild#30440.
@Silic0nS0ldier
Silic0nS0ldier requested a review from a team as a code owner July 26, 2026 05:42
@github-actions github-actions Bot added team-Configurability platforms, toolchains, cquery, select(), config transitions awaiting-review PR is awaiting review from an assigned reviewer labels Jul 26, 2026
@Silic0nS0ldier

Copy link
Copy Markdown
Contributor Author

CI errors look to be unrelated. Flakes or existing breakages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-review PR is awaiting review from an assigned reviewer team-Configurability platforms, toolchains, cquery, select(), config transitions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.