tikv/client-rust

blocker: Remove All git patches of crate

Xuanwo opened this issue · 11 comments

We have three git patched deps here:

[patch.crates-io]
raft-proto = { git = "https://github.com/tikv/raft-rs", rev="95c532612ee6a83591fce9a8b51d6afe87b58835"}
protobuf-codegen = { git = "https://github.com/pingcap/rust-protobuf", rev="82b49fea7e696fd647b5aca0a6c6ec944eab3189" }
protobuf = { git = "https://github.com/pingcap/rust-protobuf", rev="82b49fea7e696fd647b5aca0a6c6ec944eab3189" }

This will block us to upload the new version of crates. We should remove them and depend on tagged version instead.

cc @ekexium & @andylokandy: Is there a specific reason for using that version? Can we switch to the upstream version? I'm willing to help remove them.

Upon a swift attempt, simply removing the dependency results in compile error in protobuf codegened code.

Let me have a try.

I even can't complie grpc-sys...

  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1378:49: error: ‘const class absl::lts_20211102::str_format_internal::FormatConversionSpecImpl’ has no member named ‘conversion_char’
   1378 |           exp, FormatConversionCharIsUpper(conv.conversion_char()) ? 'E' : 'e',
        |                                                 ^~~~~~~~~~~~~~~
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1378:66: error: ‘absl::lts_20211102::str_format_internal::FormatConversionCharIsUpper’ cannot be used as a function
   1378 |           exp, FormatConversionCharIsUpper(conv.conversion_char()) ? 'E' : 'e',
        |                                                                  ^
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1381:49: error: ‘a’ is not a member of ‘absl::lts_20211102::str_format_internal::FormatConversionCharInternal’
   1381 |   } else if (c == FormatConversionCharInternal::a ||
        |                                                 ^
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1382:49: error: ‘A’ is not a member of ‘absl::lts_20211102::str_format_internal::FormatConversionCharInternal’
   1382 |              c == FormatConversionCharInternal::A) {
        |                                                 ^
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1383:58: error: ‘A’ is not a member of ‘absl::lts_20211102::str_format_internal::FormatConversionCharInternal’
   1383 |     bool uppercase = (c == FormatConversionCharInternal::A);

Introduced in #384 , cc @pingyu

I even can't complie grpc-sys...

  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1378:49: error: ‘const class absl::lts_20211102::str_format_internal::FormatConversionSpecImpl’ has no member named ‘conversion_char’
   1378 |           exp, FormatConversionCharIsUpper(conv.conversion_char()) ? 'E' : 'e',
        |                                                 ^~~~~~~~~~~~~~~
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1378:66: error: ‘absl::lts_20211102::str_format_internal::FormatConversionCharIsUpper’ cannot be used as a function
   1378 |           exp, FormatConversionCharIsUpper(conv.conversion_char()) ? 'E' : 'e',
        |                                                                  ^
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1381:49: error: ‘a’ is not a member of ‘absl::lts_20211102::str_format_internal::FormatConversionCharInternal’
   1381 |   } else if (c == FormatConversionCharInternal::a ||
        |                                                 ^
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1382:49: error: ‘A’ is not a member of ‘absl::lts_20211102::str_format_internal::FormatConversionCharInternal’
   1382 |              c == FormatConversionCharInternal::A) {
        |                                                 ^
  /home/xuanwo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.12.1+1.46.5-patched/grpc/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1383:58: error: ‘A’ is not a member of ‘absl::lts_20211102::str_format_internal::FormatConversionCharInternal’
   1383 |     bool uppercase = (c == FormatConversionCharInternal::A);

https://github.com/tikv/client-cpp/pull/19/files
This PR may help you to compile

This PR may help you to compile

Thank you so much!

This PR may help you to compile

Hi, thank you for the advice. However, I believe that we need to address this issue from the side of grpcio-sys (and even grpc). When we deliver our library which depends on client-rust (which also means it depends on grpcio-sys), we cannot enforce all of our users to use the same dev-container for building.

@Xuanwo Do you have any idea to solve this problem? I never met this problem in my centos7/centos8 environment

I never met this problem in my centos7/centos8 environment

Try build client-rust with newer gcc like: gcc version 13.1.1 20230429 (GCC)

Maybe we need to upragde grpc-sys to target grpc 1.56