protobuf icon indicating copy to clipboard operation
protobuf copied to clipboard

ruby gem for v27.2 fails to build with gcc 14

Open loqs opened this issue 1 year ago • 0 comments

What version of protobuf and what language are you using? Version: v27.2 https://github.com/protocolbuffers/protobuf/commit/63def39e881afa496502d9c410f4ea948e59490d Language: Ruby What operating system (Linux, Windows, ...) and version? Arch Linux rolling What runtime / compiler are you using (e.g., python version or gcc version)

$ gcc --version
gcc (GCC) 14.1.1 20240522
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ ruby --version
ruby 3.2.4 (2024-04-23 revision af471c0e01) [x86_64-linux]

What did you do? Steps to reproduce the behavior:

$ curl -o protobuf-27.2.tar.gz https://github.com/protocolbuffers/protobuf/archive/v27.2/protobuf-27.2.tar.gz
$ cd protobuf-27.2/ruby
$ rake

What did you expect to see The extension for the ruby protobuf gem build without error. What did you see instead? The build failing due to the compiler detecting an incompatible pointer type conversion

compiling ../../../../ext/google/protobuf_c/shared_message.c
../../../../ext/google/protobuf_c/defs.c: In function ‘MethodDescriptor_initialize’:
../../../../ext/google/protobuf_c/defs.c:1513:19: error: assignment to ‘const upb_MethodDef *’ from incompatible pointer type ‘const upb_ServiceDef *’ [-Wincompatible-pointer-types]
 1513 |   self->methoddef = (const upb_ServiceDef*)NUM2ULL(ptr);
      |                   ^
make: *** [Makefile:247: defs.o] Error 1
make: *** Waiting for unfinished jobs....
rake aborted!

Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).

$ rake
rm -f lib/google/protobuf/any_pb.rb lib/google/protobuf/api_pb.rb lib/google/protobuf/descriptor_pb.rb lib/google/protobuf/duration_pb.rb lib/google/protobuf/empty_pb.rb lib/google/protobuf/field_mask_pb.rb lib/google/protobuf/source_context_pb.rb lib/google/protobuf/struct_pb.rb lib/google/protobuf/timestamp_pb.rb lib/google/protobuf/type_pb.rb lib/google/protobuf/wrappers_pb.rb tests/basic_test_pb.rb tests/basic_test_features_pb.rb tests/basic_test_proto2_pb.rb tests/generated_code_pb.rb tests/generated_code_proto2_pb.rb tests/generated_code_editions_pb.rb tests/multi_level_nesting_test_pb.rb tests/repeated_field_test_pb.rb tests/service_test_pb.rb tests/stress_pb.rb tests/test_import_pb.rb tests/test_import_proto2_pb.rb tests/test_ruby_package_pb.rb tests/test_ruby_package_proto2_pb.rb
rm -f google-protobuf-*gem
rm -f Gemfile.lock
rm -rf pkg
rm -rf tmp
protoc -I../src --ruby_out=lib ../src/google/protobuf/any.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/api.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/descriptor.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/duration.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/empty.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/field_mask.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/source_context.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/struct.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/timestamp.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/type.proto
protoc -I../src --ruby_out=lib ../src/google/protobuf/wrappers.proto
protoc -I../src -I./tests --ruby_out=tests  tests/basic_test.proto
protoc -I../src -I./tests --ruby_out=tests  tests/basic_test_features.proto
protoc -I../src -I./tests --ruby_out=tests  tests/basic_test_proto2.proto
protoc -I../src -I./tests --ruby_out=tests  tests/generated_code.proto
protoc -I../src -I./tests --ruby_out=tests  tests/generated_code_proto2.proto
protoc -I../src -I./tests --ruby_out=tests  tests/generated_code_editions.proto
protoc -I../src -I./tests --ruby_out=tests  tests/multi_level_nesting_test.proto
protoc -I../src -I./tests --ruby_out=tests  tests/repeated_field_test.proto
protoc -I../src -I./tests --ruby_out=tests  tests/service_test.proto
protoc -I../src -I./tests --ruby_out=tests  tests/stress.proto
protoc -I../src -I./tests --ruby_out=tests  tests/test_import.proto
protoc -I../src -I./tests --ruby_out=tests  tests/test_import_proto2.proto
protoc -I../src -I./tests --ruby_out=tests  tests/test_ruby_package.proto
protoc -I../src -I./tests --ruby_out=tests  tests/test_ruby_package_proto2.proto
/usr/bin/ruby -I. ../../../../ext/google/protobuf_c/extconf.rb
mkdir -p tmp/x86_64-linux/protobuf_c/3.2.4
cd tmp/x86_64-linux/protobuf_c/3.2.4
creating Makefile
/usr/bin/make
cd -
cd tmp/x86_64-linux/protobuf_c/3.2.4
compiling ../../../../ext/google/protobuf_c/protobuf.c
compiling ../../../../ext/google/protobuf_c/defs.c
compiling ../../../../ext/google/protobuf_c/convert.c
compiling ../../../../ext/google/protobuf_c/message.c
compiling ../../../../ext/google/protobuf_c/repeated_field.c
compiling ../../../../ext/google/protobuf_c/map.c
compiling ../../../../ext/google/protobuf_c/ruby-upb.c
compiling ../../../../ext/google/protobuf_c/wrap_memcpy.c
compiling ../../../../ext/google/protobuf_c/third_party/utf8_range/utf8_range.c
compiling ../../../../ext/google/protobuf_c/shared_convert.c
compiling ../../../../ext/google/protobuf_c/shared_message.c
../../../../ext/google/protobuf_c/defs.c: In function ‘MethodDescriptor_initialize’:
../../../../ext/google/protobuf_c/defs.c:1513:19: error: assignment to ‘const upb_MethodDef *’ from incompatible pointer type ‘const upb_ServiceDef *’ [-Wincompatible-pointer-types]
 1513 |   self->methoddef = (const upb_ServiceDef*)NUM2ULL(ptr);
      |                   ^
make: *** [Makefile:247: defs.o] Error 1
make: *** Waiting for unfinished jobs....
rake aborted!
Command failed with status (2): [/usr/bin/make...]

Tasks: TOP => default => build => compile => compile:x86_64-linux => compile:protobuf_c:x86_64-linux => copy:protobuf_c:x86_64-linux:3.2.4 => tmp/x86_64-linux/protobuf_c/3.2.4/protobuf_c.so
(See full trace by running task with --trace)

loqs avatar Jun 27 '24 19:06 loqs