grpc / grpc-kotlin

Kotlin gRPC implementation. HTTP/2 based RPC
https://grpc.io/docs/languages/kotlin
Apache License 2.0
1.2k stars 165 forks source link

bazel rule does not work on windows #384

Open davireis opened 1 year ago

davireis commented 1 year ago

The call to zipper in https://github.com/grpc/grpc-kotlin/blob/5a7bbdb87054cb39bfc11334b571fe9b6ba938f0/kt_jvm_grpc.bzl#L28 is not correctly quoted. You can see the error below.

SUBCOMMAND: # //xproto:trash_kotlin_grpc_DO_NOT_DEPEND_kt_grpc [action 'Generating Kotlin gRPC srcjar for @//xproto:trash_proto', configuration: 3c3c60205ba406340ca3fe604761519a6b598e882333b2b95db0f40329290033, execution platform: @local_config_platform//:host]
cd /d C:/users/davir/_bazel_davir/ouzjcgzh/execroot/__main__
C:\WINDOWS\system32\bash.exe -c external/bazel_tools/tools/zip/zipper/zipper.exe $@  c bazel-out/x64_windows-fastbuild/bin/xproto/trash_kotlin_grpc_DO_NOT_DEPEND_kt_grpc.srcjar bazel-out/x64_windows-fastbuild/bin/xproto/trash_kotlin_grpc_DO_NOT_DEPEND_kt_grpc/ktgrpc/com/trash/tracker/v1/TrackerServiceProtoGrpcKt.kt
# Configuration: 3c3c60205ba406340ca3fe604761519a6b598e882333b2b95db0f40329290033
# Execution platform: @local_config_platform//:host
ERROR: C:/users/davir/code/trash/libs/xproto/BUILD.bazel:33:20: Generating Kotlin gRPC srcjar for @//xproto:trash_proto failed: (Exit 1): bash.exe failed: error executing command (from target //xproto:trash_kotlin_grpc_DO_NOT_DEPEND_kt_grpc) C:\WINDOWS\system32\bash.exe -c external/bazel_tools/tools/zip/zipper/zipper.exe $@  c bazel-out/x64_windows-fastbuild/bin/xproto/trash_kotlin_grpc_DO_NOT_DEPEND_kt_grpc.srcjar ... (remaining 1 argument skipped)
Usage: zipper.exe [vxc[fC]] x.zip [-d exdir] [[zip_path1=]file1 ... [zip_pathn=]filen]
  v verbose - list all file in x.zip
  x extract - extract files in x.zip to current directory, or     an optional directory relative to the current directory     specified through -d option
  c create  - add files to x.zip
  f flatten - flatten files to use with create or extract operation
  C compress - compress files when using the create operation
x and c cannot be used in the same command-line.

For every file, a path in the zip can be specified. Examples:
  zipper c x.zip a/b/__init__.py= # Add an empty file at a/b/__init__.py
  zipper c x.zip a/b/main.py=foo/bar/bin.py # Add file foo/bar/bin.py at a/b/main.py

If the zip path is not specified, it is assumed to be the file path.
INFO: Elapsed time: 0.697s, Critical Path: 0.24s
INFO: 2 processes: 2 internal.
FAILED: Build did NOT complete successfully

If the same command is called as bash.exe -c "zipper.exe arg1 arg2" instead of bash.exe -c zipper.exe arg1 arg2 (notice the lack of quotes) everything works. Not sure if the bug should be attributed to bazel ctx.actions.run itself, or if it should be worked around here by maybe feeding the args together with the command in a single string.

davireis commented 1 year ago

FWIW, I downloaded the newest kt_jvm_grpc.bzl (wget https://raw.githubusercontent.com/grpc/grpc-kotlin/5a7bbdb87054cb39bfc11334b571fe9b6ba938f0/kt_jvm_grpc.bzl), imported it directly and it worked!

So this should be fixed with the next release.