bazel-contrib / rules_go

Go rules for Bazel
Apache License 2.0
1.38k stars 659 forks source link

Uber's gomock 0.5.0 is incompatible with rules_go's gomock.bzl #4153

Open TvdW opened 3 days ago

TvdW commented 3 days ago

What version of rules_go/gazelle/bazel/gomock are you using?

What happened?

reflect mode got dropped, and so the latest release no longer generates a source file that then gets compiled into a binary, which rules_go expects it to do. Instead, a new package mode was added, which calls the go binary, which is unavailable in the Bazel sandbox.

I tried to modify rules_go to support the new mode but my bazel-fu isn't quite at the level needed for that 😄

Error

ERROR: xxx/BUILD.bazel:15:7: GoMockReflectProgOnlyGen xxx.go failed: (Exit 1): sandbox-exec failed: error executing GoMockReflectProgOnlyGen command
  (cd xxx/execroot/_main && \
  exec env - \
    TMPDIR=xxx/T/ \
  /usr/bin/sandbox-exec -f xxx/sandbox.sb xxx/process-wrapper '--timeout=0' '--kill_delay=15' '--stats=xxx/stats.out' /bin/bash -c '
           $(pwd)/xxx/mockgen -prog_only xxx xxx > xxx.go
        ')
2024/10/23 13:49:53 Loading input failed: load package: load packages: err: go command required, not found: exec: "go": executable file not found in $PATH: stderr:
fmeum commented 3 days ago

@linzhp

linzhp commented 3 days ago

We are not planning to support Uber's gomock in rules_go. The plan is to move it to the same repo as Uber's gomock so they can co-evolve easily. The maintainers of Uber's gomock agreed with the plan. It's in my backlog, but any helping hand will be welcomed.