Skip to content

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