bazel-contrib / rules_jvm

Contributed Bazel rules that make working with java projects more pleasant
Apache License 2.0
45 stars 57 forks source link

Cannot build java gazelle bin on Ubuntu 22.04 #84

Open alikafel12 opened 1 year ago

alikafel12 commented 1 year ago

Hello I tried building the Gazelle java extension on Ubuntu 22.04 using the following:

WORKSPACE:

("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "16e9fca53ed6bd4ff4ad76facc9b7b651a89db1689a2877d6fd7b82aa824e366",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.34.0/rules_go-v0.34.0.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.34.0/rules_go-v0.34.0.zip",
    ],
)

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(version = "1.18.3")

http_archive(
    name = "com_google_protobuf",
    sha256 = "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113",
    strip_prefix = "protobuf-3.14.0",
    urls = [
        "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz",
        "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz",
    ],
)

load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")

protobuf_deps()

http_archive(
    name = "bazel_gazelle",
    sha256 = "501deb3d5695ab658e82f6f6f549ba681ea3ca2a5fb7911154b5aa45596183fa",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.26.0/bazel-gazelle-v0.26.0.tar.gz",
        "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.26.0/bazel-gazelle-v0.26.0.tar.gz",
    ],
)

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")

gazelle_dependencies()

http_archive(
    name = "contrib_rules_jvm",
    sha256 = "29400200fdcada5d86b2616ac7c588f608ec5b1b00cb4eec3e248827f889fad9",
    strip_prefix = "rules_jvm-0.5.0",
    url = "https://github.com/bazel-contrib/rules_jvm/archive/refs/tags/v0.5.0.tar.gz",
)

load("@contrib_rules_jvm//:repositories.bzl", "contrib_rules_jvm_deps", "contrib_rules_jvm_gazelle_deps")

contrib_rules_jvm_deps()

contrib_rules_jvm_gazelle_deps()

load("@contrib_rules_jvm//:setup.bzl", "contrib_rules_jvm_setup")

contrib_rules_jvm_setup()

load("@contrib_rules_jvm//:gazelle_setup.bzl", "contib_rules_jvm_gazelle_setup")

contib_rules_jvm_gazelle_setup()

BUILD:

load("@bazel_gazelle//:def.bzl", "DEFAULT_LANGUAGES", "gazelle", "gazelle_binary")

# gazelle:prefix github.com/your/project
gazelle(
    name = "gazelle",
    gazelle = ":gazelle_bin",
)

gazelle_binary(
    name = "gazelle_bin",
    languages = DEFAULT_LANGUAGES + [
        "@contrib_rules_jvm//java/gazelle",
    ],
)

But I get the following error every time trying to build the gazelle bin:

bazel build --java_runtime_version=remotejdk_11 //:gazelle_bin

INFO: Build options --java_runtime_version and --platforms have changed, discarding analysis cache.
INFO: Analyzed target //:gazelle_bin (26 packages loaded, 11751 targets configured).
INFO: Found 1 target...
ERROR: /home/ali/.cache/bazel/_bazel_ali/4a1126a8538496440d4036a94732d2f6/external/org_golang_google_grpc/internal/channelz/BUILD.bazel:3:11: GoCompilePkg external/org_golang_google_grpc/internal/channelz/channelz.a failed: (Exit 1): builder failed: error executing command bazel-out/k8-opt-exec-2B5CBBC6/bin/external/go_sdk/builder compilepkg -sdk external/go_sdk -installsuffix linux_amd64 -src external/org_golang_google_grpc/internal/channelz/funcs.go -src ... (remaining 35 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
compilepkg: missing strict dependencies:
        /home/ali/.cache/bazel/_bazel_ali/4a1126a8538496440d4036a94732d2f6/sandbox/linux-sandbox/671/execroot/__main__/external/org_golang_google_grpc/internal/channelz/types_linux.go: import of "golang.org/x/sys/unix"
No dependencies were provided.
Check that imports in Go sources match importpath attributes in deps.
Target //:gazelle_bin failed to build
Use --verbose_failures to see the command lines of failed build steps.
XiaoConstantine commented 1 year ago

What version of go_register_toolchains are you on? (it requires >=1.18)

jamesma100 commented 1 year ago

I'm on 1.18 and also ran into missing strict dependencies issues, albeit a different one. I think the easiest solution is to add those dependencies explicitly as go_repository's. See issue here: https://github.com/bazelbuild/bazel-gazelle/issues/1217#issuecomment-1178557030