protocolbuffers / protobuf

Protocol Buffers - Google's data interchange format
http://protobuf.dev
Other
65.51k stars 15.46k forks source link

Which abseil is current protobuf compatible with? #10768

Open jiapei100 opened 2 years ago

jiapei100 commented 2 years ago

I tried to build protobuf 21.7 from source, with abseil-cpp 20220623.1, but got the following ERROR messages:

[  0%] Building CXX object CMakeFiles/libprotobuf-lite.dir/src/google/protobuf/any_lite.cc.o
/usr/bin/c++ -DGOOGLE_PROTOBUF_CMAKE_BUILD -DHAVE_ZLIB -DLIBPROTOBUF_EXPORTS -DPROTOBUF_USE_DLLS -Dlibprotobuf_lite_EXPORTS -I....../protobuf/build -I....../protobuf/src -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -std=c++14 -MD -MT CMakeFiles/libprotobuf-lite.dir/src/google/protobuf/any_lite.cc.o -MF CMakeFiles/libprotobuf-lite.dir/src/google/protobuf/any_lite.cc.o.d -o CMakeFiles/libprotobuf-lite.dir/src/google/protobuf/any_lite.cc.o -c ....../protobuf/src/google/protobuf/any_lite.cc
In file included from ....../protobuf/src/google/protobuf/stubs/common.h:46,
                 from ....../protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h:53,
                 from ....../protobuf/src/google/protobuf/any_lite.cc:31:
/usr/local/include/absl/strings/string_view.h:52:26: error: ‘string_view’ in namespace ‘std’ does not name a type
   52 | using string_view = std::string_view;
      |                          ^~~~~~~~~~~
/usr/local/include/absl/strings/string_view.h:52:21: note: ‘std::string_view’ is only available from C++17 onwards
   52 | using string_view = std::string_view;
      |                     ^~~
/usr/local/include/absl/strings/string_view.h:686:8: error: ‘string_view’ does not name a type
  686 | inline string_view ClippedSubstr(string_view s, size_t pos,
      |        ^~~~~~~~~~~
/usr/local/include/absl/strings/string_view.h:697:11: error: ‘string_view’ does not name a type
  697 | constexpr string_view NullSafeStringView(const char* p) {
      |           ^~~~~~~~~~~
In file included from ....../protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h:53,
                 from ....../protobuf/src/google/protobuf/any_lite.cc:31:
....../protobuf/src/google/protobuf/stubs/common.h:136:1: warning: inline variables are only available with ‘-std=c++17’ or ‘-std=gnu++17’
  136 | inline bool IsStructurallyValidUTF8(absl::string_view str) {
      | ^~~~~~
....../protobuf/src/google/protobuf/stubs/common.h:136:43: error: ‘bool google::protobuf::internal::IsStructurallyValidUTF8’ redeclared as different kind of entity
  136 | inline bool IsStructurallyValidUTF8(absl::string_view str) {
      |                                           ^~~~~~~~~~~
....../protobuf/src/google/protobuf/stubs/common.h:134:22: note: previous declaration ‘bool google::protobuf::internal::IsStructurallyValidUTF8(const char*, int)’
  134 | PROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char* buf, int len);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
....../protobuf/src/google/protobuf/stubs/common.h:136:43: error: ‘string_view’ is not a member of ‘absl’
  136 | inline bool IsStructurallyValidUTF8(absl::string_view str) {
      |                                           ^~~~~~~~~~~
....../protobuf/src/google/protobuf/stubs/common.h:141:52: error: ‘string_view’ is not a member of ‘absl’
  141 | PROTOBUF_EXPORT int UTF8SpnStructurallyValid(absl::string_view str);
      |                                                    ^~~~~~~~~~~
....../protobuf/src/google/protobuf/stubs/common.h:155:59: error: ‘string_view’ is not a member of ‘absl’
  155 | PROTOBUF_EXPORT char* UTF8CoerceToStructurallyValid(absl::string_view str,
      |                                                           ^~~~~~~~~~~
....../protobuf/src/google/protobuf/stubs/common.h:156:53: error: expected primary-expression before ‘char’
  156 |                                                     char* dst,
      |                                                     ^~~~
....../protobuf/src/google/protobuf/stubs/common.h:157:53: error: expected primary-expression before ‘char’
  157 |                                                     char replace_char);
      |                                                     ^~~~
....../protobuf/src/google/protobuf/stubs/common.h:157:70: error: expression list treated as compound expression in initializer [-fpermissive]
  157 |                                                     char replace_char);
      |                                                                      ^
In file included from ....../protobuf/src/google/protobuf/any_lite.cc:32:
/usr/local/include/absl/strings/match.h:46:31: error: ‘string_view’ is not a member of ‘absl’
   46 | inline bool StrContains(absl::string_view haystack,
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:47:31: error: ‘string_view’ is not a member of ‘absl’
   47 |                         absl::string_view needle) noexcept {
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:47:49: error: expression list treated as compound expression in initializer [-fpermissive]
   47 |                         absl::string_view needle) noexcept {
      |                                                 ^
/usr/local/include/absl/strings/match.h:51:13: error: redefinition of ‘bool absl::StrContains’
   51 | inline bool StrContains(absl::string_view haystack, char needle) noexcept {
      |             ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:46:13: note: ‘bool absl::StrContains’ previously defined here
   46 | inline bool StrContains(absl::string_view haystack,
      |             ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:51:31: error: ‘string_view’ is not a member of ‘absl’
   51 | inline bool StrContains(absl::string_view haystack, char needle) noexcept {
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:51:53: error: expected primary-expression before ‘char’
   51 | inline bool StrContains(absl::string_view haystack, char needle) noexcept {
      |                                                     ^~~~
/usr/local/include/absl/strings/match.h:58:30: error: ‘string_view’ is not a member of ‘absl’
   58 | inline bool StartsWith(absl::string_view text,
      |                              ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:59:30: error: ‘string_view’ is not a member of ‘absl’
   59 |                        absl::string_view prefix) noexcept {
      |                              ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:59:48: error: expression list treated as compound expression in initializer [-fpermissive]
   59 |                        absl::string_view prefix) noexcept {
      |                                                ^
/usr/local/include/absl/strings/match.h:68:28: error: ‘string_view’ is not a member of ‘absl’
   68 | inline bool EndsWith(absl::string_view text,
      |                            ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:69:28: error: ‘string_view’ is not a member of ‘absl’
   69 |                      absl::string_view suffix) noexcept {
      |                            ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:69:46: error: expression list treated as compound expression in initializer [-fpermissive]
   69 |                      absl::string_view suffix) noexcept {
      |                                              ^
/usr/local/include/absl/strings/match.h:80:29: error: ‘string_view’ is not a member of ‘absl’
   80 | bool EqualsIgnoreCase(absl::string_view piece1,
      |                             ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:81:29: error: ‘string_view’ is not a member of ‘absl’
   81 |                       absl::string_view piece2) noexcept;
      |                             ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:81:47: error: expression list treated as compound expression in initializer [-fpermissive]
   81 |                       absl::string_view piece2) noexcept;
      |                                               ^
/usr/local/include/absl/strings/match.h:87:33: error: ‘string_view’ is not a member of ‘absl’
   87 | bool StartsWithIgnoreCase(absl::string_view text,
      |                                 ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:88:33: error: ‘string_view’ is not a member of ‘absl’
   88 |                           absl::string_view prefix) noexcept;
      |                                 ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:88:51: error: expression list treated as compound expression in initializer [-fpermissive]
   88 |                           absl::string_view prefix) noexcept;
      |                                                   ^
/usr/local/include/absl/strings/match.h:94:31: error: ‘string_view’ is not a member of ‘absl’
   94 | bool EndsWithIgnoreCase(absl::string_view text,
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:95:31: error: ‘string_view’ is not a member of ‘absl’
   95 |                         absl::string_view suffix) noexcept;
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/match.h:95:49: error: expression list treated as compound expression in initializer [-fpermissive]
   95 |                         absl::string_view suffix) noexcept;
      |                                                 ^
In file included from /usr/local/include/absl/strings/str_cat.h:64,
                 from ....../protobuf/src/google/protobuf/any_lite.cc:33:
/usr/local/include/absl/strings/numbers.h:62:44: error: ‘string_view’ is not a member of ‘absl’
   62 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out);
      |                                            ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:62:69: error: expected primary-expression before ‘*’ token
   62 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out);
      |                                                                     ^
/usr/local/include/absl/strings/numbers.h:62:71: error: ‘out’ was not declared in this scope
   62 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out);
      |                                                                       ^~~
/usr/local/include/absl/strings/numbers.h:62:74: error: expression list treated as compound expression in initializer [-fpermissive]
   62 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out);
      |                                                                          ^
/usr/local/include/absl/strings/numbers.h:73:44: error: ‘string_view’ is not a member of ‘absl’
   73 | ABSL_MUST_USE_RESULT bool SimpleAtof(absl::string_view str, float* out);
      |                                            ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:73:61: error: expected primary-expression before ‘float’
   73 | ABSL_MUST_USE_RESULT bool SimpleAtof(absl::string_view str, float* out);
      |                                                             ^~~~~
/usr/local/include/absl/strings/numbers.h:73:71: error: expression list treated as compound expression in initializer [-fpermissive]
   73 | ABSL_MUST_USE_RESULT bool SimpleAtof(absl::string_view str, float* out);
      |                                                                       ^
/usr/local/include/absl/strings/numbers.h:84:44: error: ‘string_view’ is not a member of ‘absl’
   84 | ABSL_MUST_USE_RESULT bool SimpleAtod(absl::string_view str, double* out);
      |                                            ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:84:61: error: expected primary-expression before ‘double’
   84 | ABSL_MUST_USE_RESULT bool SimpleAtod(absl::string_view str, double* out);
      |                                                             ^~~~~~
/usr/local/include/absl/strings/numbers.h:84:72: error: expression list treated as compound expression in initializer [-fpermissive]
   84 | ABSL_MUST_USE_RESULT bool SimpleAtod(absl::string_view str, double* out);
      |                                                                        ^
/usr/local/include/absl/strings/numbers.h:94:44: error: ‘string_view’ is not a member of ‘absl’
   94 | ABSL_MUST_USE_RESULT bool SimpleAtob(absl::string_view str, bool* out);
      |                                            ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:94:61: error: expected primary-expression before ‘bool’
   94 | ABSL_MUST_USE_RESULT bool SimpleAtob(absl::string_view str, bool* out);
      |                                                             ^~~~
/usr/local/include/absl/strings/numbers.h:94:70: error: expression list treated as compound expression in initializer [-fpermissive]
   94 | ABSL_MUST_USE_RESULT bool SimpleAtob(absl::string_view str, bool* out);
      |                                                                      ^
/usr/local/include/absl/strings/numbers.h:107:47: error: ‘string_view’ is not a member of ‘absl’
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                                               ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:107:72: error: expected primary-expression before ‘*’ token
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                                                                        ^
/usr/local/include/absl/strings/numbers.h:107:74: error: ‘out’ was not declared in this scope
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                                                                          ^~~
/usr/local/include/absl/strings/numbers.h:107:77: error: expression list treated as compound expression in initializer [-fpermissive]
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                                                                             ^
/usr/local/include/absl/strings/numbers.h:110:54: error: ‘bool absl::SimpleHexAtoi’ redeclared as different kind of entity
  110 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:107:27: note: previous declaration ‘template<class int_type> bool absl::SimpleHexAtoi<int_type>’
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:110:54: error: ‘string_view’ is not a member of ‘absl’
  110 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:111:60: error: expected primary-expression before ‘*’ token
  111 |                                                absl::int128* out);
      |                                                            ^
/usr/local/include/absl/strings/numbers.h:111:62: error: ‘out’ was not declared in this scope
  111 |                                                absl::int128* out);
      |                                                              ^~~
/usr/local/include/absl/strings/numbers.h:112:54: error: ‘bool absl::SimpleHexAtoi’ redeclared as different kind of entity
  112 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:107:27: note: previous declaration ‘template<class int_type> bool absl::SimpleHexAtoi<int_type>’
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:112:54: error: ‘string_view’ is not a member of ‘absl’
  112 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:113:61: error: expected primary-expression before ‘*’ token
  113 |                                                absl::uint128* out);
      |                                                             ^
/usr/local/include/absl/strings/numbers.h:113:63: error: ‘out’ was not declared in this scope
  113 |                                                absl::uint128* out);
      |                                                               ^~~
/usr/local/include/absl/strings/numbers.h:144:30: error: ‘string_view’ is not a member of ‘absl’
  144 | bool safe_strto32_base(absl::string_view text, int32_t* value, int base);
      |                              ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:144:55: error: expected primary-expression before ‘*’ token
  144 | bool safe_strto32_base(absl::string_view text, int32_t* value, int base);
      |                                                       ^
/usr/local/include/absl/strings/numbers.h:144:57: error: ‘value’ was not declared in this scope
  144 | bool safe_strto32_base(absl::string_view text, int32_t* value, int base);
      |                                                         ^~~~~
/usr/local/include/absl/strings/numbers.h:144:64: error: expected primary-expression before ‘int’
  144 | bool safe_strto32_base(absl::string_view text, int32_t* value, int base);
      |                                                                ^~~
/usr/local/include/absl/strings/numbers.h:144:72: error: expression list treated as compound expression in initializer [-fpermissive]
  144 | bool safe_strto32_base(absl::string_view text, int32_t* value, int base);
      |                                                                        ^
/usr/local/include/absl/strings/numbers.h:145:30: error: ‘string_view’ is not a member of ‘absl’
  145 | bool safe_strto64_base(absl::string_view text, int64_t* value, int base);
      |                              ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:145:55: error: expected primary-expression before ‘*’ token
  145 | bool safe_strto64_base(absl::string_view text, int64_t* value, int base);
      |                                                       ^
/usr/local/include/absl/strings/numbers.h:145:57: error: ‘value’ was not declared in this scope
  145 | bool safe_strto64_base(absl::string_view text, int64_t* value, int base);
      |                                                         ^~~~~
/usr/local/include/absl/strings/numbers.h:145:64: error: expected primary-expression before ‘int’
  145 | bool safe_strto64_base(absl::string_view text, int64_t* value, int base);
      |                                                                ^~~
/usr/local/include/absl/strings/numbers.h:145:72: error: expression list treated as compound expression in initializer [-fpermissive]
  145 | bool safe_strto64_base(absl::string_view text, int64_t* value, int base);
      |                                                                        ^
/usr/local/include/absl/strings/numbers.h:146:31: error: ‘string_view’ is not a member of ‘absl’
  146 | bool safe_strto128_base(absl::string_view text, absl::int128* value,
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:146:61: error: expected primary-expression before ‘*’ token
  146 | bool safe_strto128_base(absl::string_view text, absl::int128* value,
      |                                                             ^
/usr/local/include/absl/strings/numbers.h:146:63: error: ‘value’ was not declared in this scope
  146 | bool safe_strto128_base(absl::string_view text, absl::int128* value,
      |                                                               ^~~~~
/usr/local/include/absl/strings/numbers.h:147:26: error: expected primary-expression before ‘int’
  147 |                          int base);
      |                          ^~~
/usr/local/include/absl/strings/numbers.h:147:34: error: expression list treated as compound expression in initializer [-fpermissive]
  147 |                          int base);
      |                                  ^
/usr/local/include/absl/strings/numbers.h:148:31: error: ‘string_view’ is not a member of ‘absl’
  148 | bool safe_strtou32_base(absl::string_view text, uint32_t* value, int base);
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:148:57: error: expected primary-expression before ‘*’ token
  148 | bool safe_strtou32_base(absl::string_view text, uint32_t* value, int base);
      |                                                         ^
/usr/local/include/absl/strings/numbers.h:148:59: error: ‘value’ was not declared in this scope
  148 | bool safe_strtou32_base(absl::string_view text, uint32_t* value, int base);
      |                                                           ^~~~~
/usr/local/include/absl/strings/numbers.h:148:66: error: expected primary-expression before ‘int’
  148 | bool safe_strtou32_base(absl::string_view text, uint32_t* value, int base);
      |                                                                  ^~~
/usr/local/include/absl/strings/numbers.h:148:74: error: expression list treated as compound expression in initializer [-fpermissive]
  148 | bool safe_strtou32_base(absl::string_view text, uint32_t* value, int base);
      |                                                                          ^
/usr/local/include/absl/strings/numbers.h:149:31: error: ‘string_view’ is not a member of ‘absl’
  149 | bool safe_strtou64_base(absl::string_view text, uint64_t* value, int base);
      |                               ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:149:57: error: expected primary-expression before ‘*’ token
  149 | bool safe_strtou64_base(absl::string_view text, uint64_t* value, int base);
      |                                                         ^
/usr/local/include/absl/strings/numbers.h:149:59: error: ‘value’ was not declared in this scope
  149 | bool safe_strtou64_base(absl::string_view text, uint64_t* value, int base);
      |                                                           ^~~~~
/usr/local/include/absl/strings/numbers.h:149:66: error: expected primary-expression before ‘int’
  149 | bool safe_strtou64_base(absl::string_view text, uint64_t* value, int base);
      |                                                                  ^~~
/usr/local/include/absl/strings/numbers.h:149:74: error: expression list treated as compound expression in initializer [-fpermissive]
  149 | bool safe_strtou64_base(absl::string_view text, uint64_t* value, int base);
      |                                                                          ^
/usr/local/include/absl/strings/numbers.h:150:32: error: ‘string_view’ is not a member of ‘absl’
  150 | bool safe_strtou128_base(absl::string_view text, absl::uint128* value,
      |                                ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:150:63: error: expected primary-expression before ‘*’ token
  150 | bool safe_strtou128_base(absl::string_view text, absl::uint128* value,
      |                                                               ^
/usr/local/include/absl/strings/numbers.h:150:65: error: ‘value’ was not declared in this scope
  150 | bool safe_strtou128_base(absl::string_view text, absl::uint128* value,
      |                                                                 ^~~~~
/usr/local/include/absl/strings/numbers.h:151:26: error: expected primary-expression before ‘int’
  151 |                          int base);
      |                          ^~~
/usr/local/include/absl/strings/numbers.h:151:34: error: expression list treated as compound expression in initializer [-fpermissive]
  151 |                          int base);
      |                                  ^
/usr/local/include/absl/strings/numbers.h:202:50: error: ‘string_view’ is not a member of ‘absl’
  202 | ABSL_MUST_USE_RESULT bool safe_strtoi_base(absl::string_view s, int_type* out,
      |                                                  ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:202:73: error: expected primary-expression before ‘*’ token
  202 | ABSL_MUST_USE_RESULT bool safe_strtoi_base(absl::string_view s, int_type* out,
      |                                                                         ^
/usr/local/include/absl/strings/numbers.h:202:75: error: ‘out’ was not declared in this scope
  202 | ABSL_MUST_USE_RESULT bool safe_strtoi_base(absl::string_view s, int_type* out,
      |                                                                           ^~~
/usr/local/include/absl/strings/numbers.h:203:44: error: expected primary-expression before ‘int’
  203 |                                            int base) {
      |                                            ^~~
/usr/local/include/absl/strings/numbers.h:203:52: error: expression list treated as compound expression in initializer [-fpermissive]
  203 |                                            int base) {
      |                                                    ^
/usr/local/include/absl/strings/numbers.h:203:53: error: expected ‘;’ before ‘{’ token
  203 |                                            int base) {
      |                                                     ^~
      |                                                     ;
/usr/local/include/absl/strings/numbers.h:271:27: error: redefinition of ‘template<class int_type> bool absl::SimpleAtoi’
  271 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out) {
      |                           ^~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:62:27: note: ‘template<class int_type> bool absl::SimpleAtoi<int_type>’ previously declared here
   62 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:271:44: error: ‘string_view’ is not a member of ‘absl’
  271 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out) {
      |                                            ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:271:69: error: expected primary-expression before ‘*’ token
  271 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out) {
      |                                                                     ^
/usr/local/include/absl/strings/numbers.h:271:71: error: ‘out’ was not declared in this scope
  271 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out) {
      |                                                                       ^~~
/usr/local/include/absl/strings/numbers.h:275:51: error: ‘bool absl::SimpleAtoi’ redeclared as different kind of entity
  275 | ABSL_MUST_USE_RESULT inline bool SimpleAtoi(absl::string_view str,
      |                                                   ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:62:27: note: previous declaration ‘template<class int_type> bool absl::SimpleAtoi<int_type>’
   62 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:275:51: error: ‘string_view’ is not a member of ‘absl’
  275 | ABSL_MUST_USE_RESULT inline bool SimpleAtoi(absl::string_view str,
      |                                                   ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:276:57: error: expected primary-expression before ‘*’ token
  276 |                                             absl::int128* out) {
      |                                                         ^
/usr/local/include/absl/strings/numbers.h:276:59: error: ‘out’ was not declared in this scope
  276 |                                             absl::int128* out) {
      |                                                           ^~~
/usr/local/include/absl/strings/numbers.h:280:51: error: ‘bool absl::SimpleAtoi’ redeclared as different kind of entity
  280 | ABSL_MUST_USE_RESULT inline bool SimpleAtoi(absl::string_view str,
      |                                                   ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:62:27: note: previous declaration ‘template<class int_type> bool absl::SimpleAtoi<int_type>’
   62 | ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:280:51: error: ‘string_view’ is not a member of ‘absl’
  280 | ABSL_MUST_USE_RESULT inline bool SimpleAtoi(absl::string_view str,
      |                                                   ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:281:58: error: expected primary-expression before ‘*’ token
  281 |                                             absl::uint128* out) {
      |                                                          ^
/usr/local/include/absl/strings/numbers.h:281:60: error: ‘out’ was not declared in this scope
  281 |                                             absl::uint128* out) {
      |                                                            ^~~
/usr/local/include/absl/strings/numbers.h:286:27: error: redefinition of ‘template<class int_type> bool absl::SimpleHexAtoi’
  286 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out) {
      |                           ^~~~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:107:27: note: ‘template<class int_type> bool absl::SimpleHexAtoi<int_type>’ previously declared here
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:286:47: error: ‘string_view’ is not a member of ‘absl’
  286 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out) {
      |                                               ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:286:72: error: expected primary-expression before ‘*’ token
  286 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out) {
      |                                                                        ^
/usr/local/include/absl/strings/numbers.h:286:74: error: ‘out’ was not declared in this scope
  286 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out) {
      |                                                                          ^~~
/usr/local/include/absl/strings/numbers.h:290:54: error: ‘bool absl::SimpleHexAtoi’ redeclared as different kind of entity
  290 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:107:27: note: previous declaration ‘template<class int_type> bool absl::SimpleHexAtoi<int_type>’
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:290:54: error: ‘string_view’ is not a member of ‘absl’
  290 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:291:60: error: expected primary-expression before ‘*’ token
  291 |                                                absl::int128* out) {
      |                                                            ^
/usr/local/include/absl/strings/numbers.h:291:62: error: ‘out’ was not declared in this scope
  291 |                                                absl::int128* out) {
      |                                                              ^~~
/usr/local/include/absl/strings/numbers.h:295:54: error: ‘bool absl::SimpleHexAtoi’ redeclared as different kind of entity
  295 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:107:27: note: previous declaration ‘template<class int_type> bool absl::SimpleHexAtoi<int_type>’
  107 | ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out);
      |                           ^~~~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:295:54: error: ‘string_view’ is not a member of ‘absl’
  295 | ABSL_MUST_USE_RESULT inline bool SimpleHexAtoi(absl::string_view str,
      |                                                      ^~~~~~~~~~~
/usr/local/include/absl/strings/numbers.h:296:61: error: expected primary-expression before ‘*’ token
  296 |                                                absl::uint128* out) {
      |                                                             ^
/usr/local/include/absl/strings/numbers.h:296:63: error: ‘out’ was not declared in this scope
  296 |                                                absl::uint128* out) {
      |                                                               ^~~
In file included from ....../protobuf/src/google/protobuf/any_lite.cc:33:
/usr/local/include/absl/strings/str_cat.h:121:15: error: ‘string_view’ has not been declared
  121 |   void Append(string_view v);
      |               ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:123:24: error: ‘string_view’ has not been declared
  123 |   bool PutPaddedString(string_view v, int width, int precision, bool left);
      |                        ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:126:58: error: ‘absl::string_view’ has not been declared
  126 |   friend void AbslFormatFlush(StringifySink* sink, absl::string_view v) {
      |                                                          ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:131:10: error: ‘string_view’ does not name a type
  131 |   friend string_view ExtractStringification(StringifySink& sink, const T& v);
      |          ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:138:1: error: ‘string_view’ does not name a type
  138 | string_view ExtractStringification(StringifySink& sink, const T& v) {
      | ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:329:29: error: expected ‘)’ before ‘pc’
  329 |   AlphaNum(absl::string_view pc) : piece_(pc) {}  // NOLINT(runtime/explicit)
      |           ~                 ^~~
      |                             )
/usr/local/include/absl/strings/str_cat.h:349:9: error: ‘string_view’ in namespace ‘absl’ does not name a type
  349 |   absl::string_view::size_type size() const { return piece_.size(); }
      |         ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:351:9: error: ‘string_view’ in namespace ‘absl’ does not name a type
  351 |   absl::string_view Piece() const { return piece_; }
      |         ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:373:9: error: ‘string_view’ in namespace ‘absl’ does not name a type
  373 |   absl::string_view piece_;
      |         ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(int)’:
/usr/local/include/absl/strings/str_cat.h:290:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  290 |       : piece_(digits_, static_cast<size_t>(
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(unsigned int)’:
/usr/local/include/absl/strings/str_cat.h:294:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  294 |       : piece_(digits_, static_cast<size_t>(
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(long int)’:
/usr/local/include/absl/strings/str_cat.h:298:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  298 |       : piece_(digits_, static_cast<size_t>(
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(long unsigned int)’:
/usr/local/include/absl/strings/str_cat.h:302:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  302 |       : piece_(digits_, static_cast<size_t>(
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(long long int)’:
/usr/local/include/absl/strings/str_cat.h:306:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  306 |       : piece_(digits_, static_cast<size_t>(
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(long long unsigned int)’:
/usr/local/include/absl/strings/str_cat.h:310:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  310 |       : piece_(digits_, static_cast<size_t>(
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(float)’:
/usr/local/include/absl/strings/str_cat.h:315:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  315 |       : piece_(digits_, numbers_internal::SixDigitsToBuffer(f, digits_)) {}
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(double)’:
/usr/local/include/absl/strings/str_cat.h:317:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  317 |       : piece_(digits_, numbers_internal::SixDigitsToBuffer(f, digits_)) {}
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(const absl::strings_internal::AlphaNumBuffer<size>&)’:
/usr/local/include/absl/strings/str_cat.h:325:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  325 |       : piece_(&buf.data[0], buf.size) {}
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(const char*)’:
/usr/local/include/absl/strings/str_cat.h:328:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  328 |       : piece_(NullSafeStringView(c_str)) {}      // NOLINT(runtime/explicit)
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h:328:16: error: ‘NullSafeStringView’ was not declared in this scope
  328 |       : piece_(NullSafeStringView(c_str)) {}      // NOLINT(runtime/explicit)
      |                ^~~~~~~~~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(const T&, absl::strings_internal::StringifySink&&)’:
/usr/local/include/absl/strings/str_cat.h:336:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  336 |       : piece_(strings_internal::ExtractStringification(sink, v)) {}
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h:336:34: error: ‘ExtractStringification’ is not a member of ‘absl::strings_internal’
  336 |       : piece_(strings_internal::ExtractStringification(sink, v)) {}
      |                                  ^~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h: In constructor ‘absl::AlphaNum::AlphaNum(const std::__cxx11::basic_string<char, std::char_traits<char>, Allocator>&)’:
/usr/local/include/absl/strings/str_cat.h:341:9: error: class ‘absl::AlphaNum’ does not have any field named ‘piece_’
  341 |       : piece_(str) {}
      |         ^~~~~~
/usr/local/include/absl/strings/str_cat.h: In member function ‘const char* absl::AlphaNum::data() const’:
/usr/local/include/absl/strings/str_cat.h:350:37: error: ‘piece_’ was not declared in this scope
  350 |   const char* data() const { return piece_.data(); }
      |                                     ^~~~~~
/usr/local/include/absl/strings/str_cat.h: At global scope:
/usr/local/include/absl/strings/str_cat.h:408:51: error: ‘string_view’ is not a member of ‘absl’
  408 | std::string CatPieces(std::initializer_list<absl::string_view> pieces);
      |                                                   ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:408:51: error: ‘string_view’ is not a member of ‘absl’
/usr/local/include/absl/strings/str_cat.h:408:62: error: template argument 1 is invalid
  408 | std::string CatPieces(std::initializer_list<absl::string_view> pieces);
      |                                                              ^
/usr/local/include/absl/strings/str_cat.h:410:47: error: ‘string_view’ is not a member of ‘absl’
  410 |                   std::initializer_list<absl::string_view> pieces);
      |                                               ^~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:410:47: error: ‘string_view’ is not a member of ‘absl’
/usr/local/include/absl/strings/str_cat.h:410:58: error: template argument 1 is invalid
  410 |                   std::initializer_list<absl::string_view> pieces);
      |                                                          ^
/usr/local/include/absl/strings/str_cat.h: In function ‘std::string absl::StrCat(const absl::AlphaNum&)’:
/usr/local/include/absl/strings/str_cat.h:417:34: error: ‘const class absl::AlphaNum’ has no member named ‘size’
  417 |   return std::string(a.data(), a.size());
      |                                  ^~~~
/usr/local/include/absl/strings/str_cat.h: In function ‘std::string absl::StrCat(const absl::AlphaNum&, const absl::AlphaNum&, const absl::AlphaNum&, const absl::AlphaNum&, const absl::AlphaNum&, const AV& ...)’:
/usr/local/include/absl/strings/str_cat.h:432:10: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  432 |       {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |          ^~~~~
/usr/local/include/absl/strings/str_cat.h:432:21: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  432 |       {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |                     ^~~~~
/usr/local/include/absl/strings/str_cat.h:432:32: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  432 |       {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |                                ^~~~~
/usr/local/include/absl/strings/str_cat.h:432:43: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  432 |       {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |                                           ^~~~~
/usr/local/include/absl/strings/str_cat.h:432:54: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  432 |       {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |                                                      ^~~~~
/usr/local/include/absl/strings/str_cat.h:433:43: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  433 |        static_cast<const AlphaNum&>(args).Piece()...});
      |                                           ^~~~~
/usr/local/include/absl/strings/str_cat.h:431:37: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘int’
  431 |   return strings_internal::CatPieces(
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
      |                                     |
      |                                     <brace-enclosed initializer list>
  432 |       {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  433 |        static_cast<const AlphaNum&>(args).Piece()...});
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/absl/strings/str_cat.h:408:64: note:   initializing argument 1 of ‘std::string absl::strings_internal::CatPieces(int)’
  408 | std::string CatPieces(std::initializer_list<absl::string_view> pieces);
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/usr/local/include/absl/strings/str_cat.h: In function ‘void absl::StrAppend(std::string*, const absl::AlphaNum&, const absl::AlphaNum&, const absl::AlphaNum&, const absl::AlphaNum&, const absl::AlphaNum&, const AV& ...)’:
/usr/local/include/absl/strings/str_cat.h:477:16: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  477 |       dest, {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |                ^~~~~
/usr/local/include/absl/strings/str_cat.h:477:27: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  477 |       dest, {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
      |                           ^~~~~
/usr/local/include/absl/strings/str_cat.h:477:38: error: ‘const class absl::AlphaNum’ has no member named ‘Piece’
  477 |       dest, {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
......

Seems to be a compatibility issue of protobuf and abseil ???

fowles commented 2 years ago

We have not made a release of protobuf that uses abseil yet. The main branch has a dependency on abseil and can use it.

sudhinmishra commented 1 year ago

Is there a work-around for this?

jiapei100 commented 1 year ago

We have not made a release of protobuf that uses abseil yet. The main branch has a dependency on abseil and can use it.

In the official release v23.2, for protobuf_ABSL_PROVIDER, there are ONLY 2 options:

Which one to choose and build protobuf? It looks to me: no matter it's a module, or it's package, protobuf is ALWAYS based on abseil, isn't it?

maxnoe commented 1 year ago

Please define the minimum required abseil version in the CMakeLists.txt, I had libabsl-dev installed on my ubuntu 22.04 machine but it seems the version is too old for protobuf (cmake complains about absl::absl_check not existing)

shaba commented 1 year ago

If abseil build with -std=c++17 (default since GCC 11), then protobuf and python module need build with c++17 too. sed -i 's/c++14/c++17/g' python/setup.py

github-actions[bot] commented 9 months ago

We triage inactive PRs and issues in order to make it easier to find active work. If this issue should remain active or becomes active again, please add a comment.

This issue is labeled inactive because the last activity was over 90 days ago.

maxnoe commented 9 months ago

The documentation still doesn't mention which versions of abseil are supported.

github-actions[bot] commented 6 months ago

We triage inactive PRs and issues in order to make it easier to find active work. If this issue should remain active or becomes active again, please add a comment.

This issue is labeled inactive because the last activity was over 90 days ago.

maxnoe commented 6 months ago

Documentation hasn't been update, e.g.: https://github.com/protocolbuffers/protobuf/blob/main/src/README.md#c-protobuf---unix

Logofile commented 6 months ago

Thanks, Maximilian, for keeping this open.

Logofile commented 6 months ago

Independent of the doc update needs, @jiapei100, the errors that you experienced appear to be that you're building with -std=c++14 and using a version of absl that dropped support for c++14.

fowles commented 6 months ago

Slight correction. Abseil has not dropped support for C++14. Very likely you are compiling in an interesting mixed configuration.

github-actions[bot] commented 3 months ago

We triage inactive PRs and issues in order to make it easier to find active work. If this issue should remain active or becomes active again, please add a comment.

This issue is labeled inactive because the last activity was over 90 days ago. This issue will be closed and archived after 14 additional days without activity.

maxnoe commented 3 months ago

Still relevant

github-actions[bot] commented 2 days ago

We triage inactive PRs and issues in order to make it easier to find active work. If this issue should remain active or becomes active again, please add a comment.

This issue is labeled inactive because the last activity was over 90 days ago. This issue will be closed and archived after 14 additional days without activity.