Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mention --java_language_version and --tool_java_language_version #233

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

g-ortuno
Copy link

Context: I just spent three days trying to build copybara in an external workspace and kept getting the following error (which is also mentioned in #221 ):

external/com_github_google_copybara/java/com/google/copybara/onboard/core/AskInputProvider.java:117: error: cannot find symbol
                    var unused = input.convert(s, resolver);
                    ^
  symbol:   class var
  location: class Mode
external/com_github_google_copybara/java/com/google/copybara/onboard/core/InputProviderResolverImpl.java:60: error: cannot find symbol
      var unused = generator.consumes();
      ^
  symbol:   class var
  location: class InputProviderResolverImpl

I realized that I needed to update my .bazelrc only after combing through the changes trying to find a clue as to how to fix the issue.

I'm pretty new to bazel external repositories, having mostly worked with blaze and Chromium's GN, but I thought mentioning this in the docs could help other developers starting with bazel.

If the fix is too obvious, feel free to ignore :)

Adds a paragraph that suggests adding `--java_language_version` and `--tool_java_language_version` to .bazelrc. Without these, developers will get the following error when trying to build Copuybara from an external workspace
```
external/com_github_google_copybara/java/com/google/copybara/onboard/core/AskInputProvider.java:117: error: cannot find symbol
                    var unused = input.convert(s, resolver);
                    ^
  symbol:   class var
  location: class Mode
external/com_github_google_copybara/java/com/google/copybara/onboard/core/InputProviderResolverImpl.java:60: error: cannot find symbol
      var unused = generator.consumes();
      ^
  symbol:   class var
  location: class InputProviderResolverImpl
```
@sin-ack
Copy link

sin-ack commented Oct 7, 2024

FYI I also needed to add build --java_runtime_version=11.

@sin-ack sin-ack mentioned this pull request Oct 7, 2024
@mikelalcon
Copy link
Collaborator

This shouldn't be needed if you keep $PROJECT_ROOT/.bazelrc that comes in the repository:

<o> [master] ~/dev/copybara$ bazel build //java/com/google/copybara:copybara_deploy.jar
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
INFO: Analyzed target //java/com/google/copybara:copybara_deploy.jar (113 packages loaded, 1662 targets configured).
INFO: Found 1 target...
Target //java/com/google/copybara:copybara_deploy.jar up-to-date:
  bazel-bin/java/com/google/copybara/copybara_deploy.jar
INFO: Elapsed time: 68.812s, Critical Path: 20.05s
INFO: 303 processes: 8 internal, 208 darwin-sandbox, 87 worker.
INFO: Build completed successfully, 303 total actions

<o> [master] ~/dev/copybara$ rm .bazelrc

<o> [master] ~/dev/copybara$ bazel build //java/com/google/copybara:copybara_deploy.jar
INFO: Build options --java_language_version, --jvmopt, --test_env, and 1 more have changed, discarding analysis cache.
INFO: Analyzed target //java/com/google/copybara:copybara_deploy.jar (0 packages loaded, 1662 targets configured).
INFO: Found 1 target...
ERROR: /Users/malcon/dev/copybara/java/com/google/copybara/http/auth/BUILD:19:13: Building java/com/google/copybara/http/auth/libauth.jar (3 source files) and running annotation processors (StarlarkMethodProcessor) failed: (Exit 1): java failed: error executing command (from target //java/com/google/copybara/http/auth:auth) external/remotejdk11_macos_aarch64/bin/java -XX:-CompactStrings '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' ... (remaining 16 arguments skipped)
java/com/google/copybara/http/auth/BearerInterceptor.java:41: warning: as of release 10, 'var' is a restricted local variable type and cannot be used for type declarations or as the element type of an array
      var unused = req.getHeaders().setAuthorization("Bearer " + token);
          ^
java/com/google/copybara/http/auth/BearerInterceptor.java:41: error: cannot find symbol
      var unused = req.getHeaders().setAuthorization("Bearer " + token);
      ^
  symbol:   class var
  location: class BearerInterceptor
Target //java/com/google/copybara:copybara_deploy.jar failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 10.568s, Critical Path: 7.03s
INFO: 209 processes: 11 internal, 155 darwin-sandbox, 43 worker.
FAILED: Build did NOT complete successfully
<o> [master] ~/dev/copybara$


@mikelalcon
Copy link
Collaborator

Ahh I see you use it as part of a workspace. Rather than recommending changing .bazelrc, that most of the users won't need, you could add a note about how to embed in a workspace? (and say to add the flags in $COPYBARA_ROOT/.bazelrc to $YOURPROJECT/.bazelrc)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants