代码之家  ›  专栏  ›  技术社区  ›  CleanCoder265

无法使用bazel 6.0.0构建hello_world cc_grpc_库

  •  0
  • CleanCoder265  · 技术社区  · 1 年前

    我正在努力建立 hello_world cc_grpc_library 使用 bazel Ubuntu 22.04上的6.0.0,但我无法做到这一点。

    源树:

    WORKSPACE
    MODULE.bazel
    BUILD
    helloworld.proto
    .bazelrc
    .bazelversion
    

    我的 WORKSPACE 文件为空。 WORKSPACE.bzlmod 不存在。

    MODULE.bazel 包含:

    module(name = "helloworld", version = "1.0")
    bazel_dep(name = "grpc", version = "1.47.0", repo_name = "com_github_grpc_grpc")
    

    BUILD 包含:

    load("@rules_proto//proto:defs.bzl", "proto_library")
    load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")
    load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps")
    load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library")
    
    grpc_deps()
    
    grpc_extra_deps()
    
    proto_library(
        name = "helloworld_proto",
        srcs = ["helloworld.proto"],
    )
    
    cc_proto_library(
        name = "helloworld_cc_proto",
        deps = [":helloworld_proto"],
    )
    
    cc_grpc_library(
        name = "helloworld_cc_grpc",
        srcs = [":helloworld_proto"],
        grpc_only = True,
        deps = [":helloworld_cc_proto"],
    )
    

    helloworld.proto 是gRPC的副本 helloworld.proto

    当我键入 bazel build :helloworld_cc_grpc 我遇到以下错误,不知道如何解决:

    ...external/grpc~1.47.0/bazel/grpc_deps.bzl", line 23, column 11, in grpc_bind_deps
                    native.bind(
    Error: no native function or rule 'bind'
    Available attributes: aar_import, action_listener, alias, android_binary, android_device, android_device_script_fixture, android_host_service_fixture, android_instrumentation_test, android_library, android_local_test, android_sdk, android_tools_defaults_jar, apple_cc_toolchain, available_xcodes, cc_binary, cc_host_toolchain_alias, cc_import, cc_libc_top_alias, cc_library, cc_proto_library, cc_shared_library, cc_shared_library_permissions, cc_test, cc_toolchain, cc_toolchain_alias, cc_toolchain_suite, config_feature_flag, config_setting, constraint_setting, constraint_value, environment, existing_rule, existing_rules, exports_files, extra_action, fdo_prefetch_hints, fdo_profile, filegroup, genquery, genrule, glob, j2objc_library, java_binary, java_import, java_library, java_lite_proto_library, java_package_configuration, java_plugin, java_plugins_flag_alias, java_proto_library, java_runtime, java_test, java_toolchain, label_flag, label_setting, objc_import, objc_library, package, package_group, package_name, platform, propeller_optimize, proto_lang_toolchain, proto_library, py_binary, py_library, py_runtime, py_test, repository_name, sh_binary, sh_library, sh_test, subpackages, test_suite, toolchain, toolchain_type, xcode_config, xcode_config_alias, xcode_version
    

    bazel version 输出

    Bazelisk version: v1.15.0
    Build label: 6.0.0
    Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
    Build time: Mon Dec 19 15:52:35 2022 (1671465155)
    Build timestamp: 1671465155
    Build timestamp as int: 1671465155
    

    我也发现了这个 gRPC github issue 但我不知道该怎么办。

    如何使用bzlmod构建gRPC的helloworld示例来管理外部依赖关系?

    我试着用它来建造 bazel's cc_grpc_library 但这将实际依赖关系(gRPC)封装到另一层中,因为它从所提供链接的注释中可见。不管怎样,它都不是在建造,但我记不起实际的错误。

    0 回复  |  直到 1 年前
        1
  •  0
  •   Esun Kim    1 年前

    gRPC还不支持Bazel模块,所以它可能会中断,但在您的情况下,在BUILD文件中调用gRPC_deps()和gRPC_extra_deps()函数看起来很奇怪,因为这些函数应该在WORKSPACE文件中调用。如果发现该模块还不能工作,您可能希望在没有模块的情况下使用它。请看一下 this example .

        2
  •  0
  •   grencez    11 月前

    这是在bzlmod中用更新的gRPC版本修复的。在您的 MODULE.bazel :

    bazel_dep(name = "grpc", version = "1.48.1.bcr.3", repo_name = "com_github_grpc_grpc")