aspect-build / aspect-cli

correct, fast, usable: choose three
https://aspect.build/cli
Apache License 2.0
93 stars 22 forks source link

[Bug]: configure should set ts_proto_library#files_to_copy #761

Open BenNeighbour opened 1 month ago

BenNeighbour commented 1 month ago

What happened?

Hey guys! I'm trying to use protobufs with Aspect CLI project (multi-language), and when I add logger.proto file, configure, and build, it throws errors relating to protobuf, on a freshly created project.

Any immediate help/feedback/questions would be really appreciated!

Version

Development (host) and target OS/architectures:

Output of bazel --version: aspect 2024.42.3-e256e0fbf

Version of the Aspect rules, or other relevant rules from your WORKSPACE or MODULE.bazel file:

Language(s) and/or frameworks involved:

How to reproduce

$ aspect init
  Welcome to Aspect, the multi-language monorepo dev platform

  Generate boilerplate code for a new Bazel project using Aspect CLI and Aspect
  Workflows.

┃ Languages to be used in the project
┃   ✓ JavaScript & TypeScript
┃   • Python
┃   ✓ Go
┃   • Java
┃   • C & C++
┃   • Rust

$ cd project_name

$ mkdir -p packages/proto && cat <<EOF > packages/proto/logger.proto
syntax = "proto3";

option java_multiple_files = true;
option java_package = "build.aspect.examples";
option java_outer_classname = "GreeterProto";
option go_package = "github.com/aspect-build/bazel-examples/logger";

service Logger {
  rpc SendLogMessage(LogMessage) returns (Empty) {}
}

message LogMessage {
  string message = 1;
  int64 time = 2;
}

message Empty {}
EOF

bazel configure

$ bazel build //...
ERROR: Traceback (most recent call last):
        File "/Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel", line 27, column 17, in <toplevel>
                ts_proto_library(
        File "/private/var/tmp/_bazel_dev/28aeed2d30bf5427ca4b20c849d21118/external/aspect_rules_ts~/ts/proto.bzl", line 153, column 17, in ts_proto_library
                fail("Either proto_srcs should be set, or copy_files should be False")
Error in fail: Either proto_srcs should be set, or copy_files should be False
ERROR: package contains errors: packages/proto
ERROR: error loading package 'tools': Label '@@rules_python//python/entry_points:py_console_script_binary.bzl' is invalid because 'python/entry_points' is not a package; perhaps you meant to put the colon here: '@@rules_python//python:entry_points/py_console_script_binary.bzl'?
ERROR: package contains errors: packages/proto: Traceback (most recent call last):
        File "/Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel", line 27, column 17, in <toplevel>
                ts_proto_library(
        File "/private/var/tmp/_bazel_dev/28aeed2d30bf5427ca4b20c849d21118/external/aspect_rules_ts~/ts/proto.bzl", line 153, column 17, in ts_proto_library
                fail("Either proto_srcs should be set, or copy_files should be False")
Error in fail: Either proto_srcs should be set, or copy_files should be False
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:27:17: Cannot compute config conditions
ERROR: no such package '@@[unknown repo 'io_bazel_rules_go' requested from @@]//proto': The repository '@@[unknown repo 'io_bazel_rules_go' requested from @@]' could not be resolved: No repository visible as '@io_bazel_rules_go' from main repository
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:12:17: no such package '@@[unknown repo 'io_bazel_rules_go' requested from @@]//proto': The repository '@@[unknown repo 'io_bazel_rules_go' requested from @@]' could not be resolved: No repository visible as '@io_bazel_rules_go' from main repository and referenced by '//packages/proto:logger_go_proto'
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:12:17: Target '//packages/proto:logger_proto' contains an error and its package is in error and referenced by '//packages/proto:logger_go_proto'
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:20:11: Target '//packages/proto:logger_go_proto' contains an error and its package is in error and referenced by '//packages/proto:logger'
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:6:14: Target '//packages/proto:logger.proto' contains an error and its package is in error and referenced by '//packages/proto:logger_proto'
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:27:17: Target '//packages/proto:logger_proto' contains an error and its package is in error and referenced by '//packages/proto:_logger_proto_ts_protoc'
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:27:17: Target '//packages/proto:_logger_proto_ts.gen_es' contains an error and its package is in error and referenced by '//packages/proto:_logger_proto_ts_protoc'
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:27:17: Target '//packages/proto:_logger_proto_ts.gen_connect_es' contains an error and its package is in error and referenced by '//packages/proto:_logger_proto_ts_protoc'
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:27:17: Cannot compute config conditions
ERROR: /Users/dev/Downloads/multi_language_monorepo_magic/packages/proto/BUILD.bazel:27:17: Target '//packages/proto:_logger_proto_ts_protoc' contains an error and its package is in error and referenced by '//packages/proto:logger_proto_ts'
WARNING: errors encountered while analyzing target '//packages/proto:logger_proto', it will not be built.
Analysis failed
WARNING: errors encountered while analyzing target '//packages/proto:_logger_proto_ts.gen_connect_es', it will not be built.
WARNING: errors encountered while analyzing target '//packages/proto:logger_go_proto', it will not be built.
Analysis failed
WARNING: errors encountered while analyzing target '//packages/proto:_logger_proto_ts_protoc', it will not be built.
Analysis failed
WARNING: errors encountered while analyzing target '//packages/proto:logger', it will not be built.
Analysis failed
WARNING: errors encountered while analyzing target '//packages/proto:_logger_proto_ts.gen_es', it will not be built.
INFO: Analyzed 32 targets (0 packages loaded, 0 targets configured).
WARNING: errors encountered while analyzing target '//packages/proto:logger_proto_ts', it will not be built.
Analysis failed
INFO: Analysis succeeded for only 25 of 32 top-level targets
INFO: Found 25 targets...
ERROR: command succeeded, but there were errors parsing the target pattern
INFO: Elapsed time: 0.129s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
ERROR: Build did NOT complete successfully

Any other information?

I expected it to work...

alexeagle commented 1 month ago

https://github.com/aspect-build/rules_ts/blob/main/ts/proto.bzl#L153 is where we print this message, it could be a lot more helpful about what to do