protocolbuffers/protobuf

Upgrading from 3.21.10 to 3.22.3 failures: missing symbol called

Open

#12 626 ouverte le 1 mai 2023

Voir sur GitHub
 (1 commentaire) (0 réactions) (0 assignés)C++ (16 128 forks)batch import
golanghelp wanted

Métriques du dépôt

Stars
 (71 223 stars)
Métriques de merge PR
 (Merge moyen 2j 11h) (185 PRs mergées en 30 j)

Description

What version of protobuf and what language are you using? Version: 3.22.3 Language: Go

What operating system (Linux, Windows, ...) and version? Mac OS

What runtime / compiler are you using (e.g., python version or gcc version) Bazel

What did you do?

  1. Upgrade com_google_protobuf from 3.21.10 to 3.22.3 in our WORKSPACE file
  2. Build the protos with bazel

What did you expect to see

Success after upgrading!

What did you see instead?

Build fails generating proto bindings for timestamp_proto:

ERROR: external/com_google_protobuf/src/google/protobuf/BUILD.bazel:64:14: Generating Descriptor Set proto_library @com_google_protobuf//src/google/protobuf:timestamp_proto failed: (Aborted): protoc failed: error executing command (from target @com_google_protobuf//src/google/protobuf:timestamp_proto) <SNIP>

<SNIP> --direct_dependencies google/protobuf/timestamp.proto '--direct_dependencies_violation_msg=%s is imported, but @com_google_protobuf//src/google/protobuf:timestamp_proto doesn'\''t directly depend on a proto_library that '\''srcs'\'' it.' '--descriptor_set_out=bazel-out/darwin_arm64-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/timestamp_proto-descriptor-set.proto.bin' '--proto_path=bazel-out/darwin_arm64-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_imports/timestamp_proto' '-Igoogle/protobuf/timestamp.proto=bazel-out/darwin_arm64-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_imports/timestamp_proto/google/protobuf/timestamp.proto' bazel-out/darwin_arm64-fastbuild/bin/external/com_google_protobuf/src/google/protobuf/_virtual_imports/timestamp_proto/google/protobuf/timestamp.proto)

# Execution platform: @local_config_platform//:host

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
dyld[57868]: missing symbol called

Note: in addition to the timestamp proto, which I actually depend on, other protos suffer the same fate. The failed proto changes randomly every build. @com_google_protobuf//src/google/protobuf:wrappers_proto, for example, hits the same issue, but it's not a dependency of any of my rules.

Environment

Rules:

proto_library(
    name = "my_proto",
    srcs = [
        "my_proto.proto",
        "my_proto_other.proto",
    ],
)


go_proto_library(
    name = "my_go_proto",
    # io_bazel_rules version v0.39.1 and rules_proto-5.3.0-21.7
    compilers = ["@io_bazel_rules_go//proto:go_grpc"],
    importpath = "github.com/example_repo/go/proto/package",
    proto = ":my_proto",
)

proto:

syntax = "proto3";
package proto;

import "google/protobuf/timestamp.proto";

option go_package = "github.com/example_repo/go/proto/package";
message SomeMessage {
  google.protobuf.Timestamp ts = 2;
}

Guide contributeur