Skip to content

Ruby gem cannot build on ruby 2.7.2 on Mac M1 #8372

Description

@NielsKSchjoedt

What version of protobuf and what language are you using?
Version: 3.15.4
Language: Ruby

What operating system (Linux, Windows, ...) and version?
Mac OS 11.2.2 on an M1

What runtime / compiler are you using (e.g., python version or gcc version)
Ruby: 2.7.2 (using RVM)

GCC:
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: arm64-apple-darwin20.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

What did you do?

  1. Cloned the code: git clone [email protected]:protocolbuffers/protobuf.git
  2. cd protobuf/ruby
  3. bundle config set force_ruby_platform true
  4. rake
  5. rake clobber_package gem
  6. gem install ls pkg/google-protobuf-*.gem
  7. rake test

What did you expect to see
A successful build

What did you see instead?

../../../../ext/google/protobuf_c/ruby-upb.c:6552:11: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
  int i = *iter;
      ~   ^~~~~
20 warnings generated.
compiling ../../../../ext/google/protobuf_c/wrap_memcpy.c
linking shared-object google/protobuf_c.bundle
cd -
** Invoke tmp/arm64-darwin20/stage/lib/google (first_time)
** Execute tmp/arm64-darwin20/stage/lib/google
mkdir -p tmp/arm64-darwin20/stage/lib/google
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/convert.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (first_time)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c
mkdir -p tmp/arm64-darwin20/stage/ext/google/protobuf_c
** Invoke ext/google/protobuf_c/convert.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/convert.c
cp ext/google/protobuf_c/convert.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/convert.c
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/convert.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/convert.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/convert.h
cp ext/google/protobuf_c/convert.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/convert.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/defs.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/defs.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/defs.c
cp ext/google/protobuf_c/defs.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/defs.c
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/defs.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/defs.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/defs.h
cp ext/google/protobuf_c/defs.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/defs.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/extconf.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/extconf.rb (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/extconf.rb
cp ext/google/protobuf_c/extconf.rb tmp/arm64-darwin20/stage/ext/google/protobuf_c/extconf.rb
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/map.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/map.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/map.c
cp ext/google/protobuf_c/map.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/map.c
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/map.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/map.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/map.h
cp ext/google/protobuf_c/map.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/map.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/message.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/message.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/message.c
cp ext/google/protobuf_c/message.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/message.c
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/message.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/message.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/message.h
cp ext/google/protobuf_c/message.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/message.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/protobuf.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/protobuf.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/protobuf.c
cp ext/google/protobuf_c/protobuf.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/protobuf.c
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/protobuf.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/protobuf.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/protobuf.h
cp ext/google/protobuf_c/protobuf.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/protobuf.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/repeated_field.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/repeated_field.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/repeated_field.c
cp ext/google/protobuf_c/repeated_field.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/repeated_field.c
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/repeated_field.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/repeated_field.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/repeated_field.h
cp ext/google/protobuf_c/repeated_field.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/repeated_field.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/ruby-upb.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/ruby-upb.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/ruby-upb.c
cp ext/google/protobuf_c/ruby-upb.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/ruby-upb.c
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/ruby-upb.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/ruby-upb.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/ruby-upb.h
cp ext/google/protobuf_c/ruby-upb.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/ruby-upb.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/third_party/wyhash/wyhash.h (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/third_party/wyhash (first_time)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/third_party/wyhash
mkdir -p tmp/arm64-darwin20/stage/ext/google/protobuf_c/third_party/wyhash
** Invoke ext/google/protobuf_c/third_party/wyhash/wyhash.h (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/third_party/wyhash/wyhash.h
cp ext/google/protobuf_c/third_party/wyhash/wyhash.h tmp/arm64-darwin20/stage/ext/google/protobuf_c/third_party/wyhash/wyhash.h
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c/wrap_memcpy.c (first_time)
** Invoke tmp/arm64-darwin20/stage/ext/google/protobuf_c (not_needed)
** Invoke ext/google/protobuf_c/wrap_memcpy.c (not_needed)
** Execute tmp/arm64-darwin20/stage/ext/google/protobuf_c/wrap_memcpy.c
cp ext/google/protobuf_c/wrap_memcpy.c tmp/arm64-darwin20/stage/ext/google/protobuf_c/wrap_memcpy.c
** Invoke tmp/arm64-darwin20/stage/lib/google/protobuf.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/lib/google (not_needed)
** Invoke lib/google/protobuf.rb (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/lib/google/protobuf.rb
cp lib/google/protobuf.rb tmp/arm64-darwin20/stage/lib/google/protobuf.rb
** Invoke tmp/arm64-darwin20/stage/lib/google/protobuf/message_exts.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/lib/google/protobuf (first_time)
** Execute tmp/arm64-darwin20/stage/lib/google/protobuf
mkdir -p tmp/arm64-darwin20/stage/lib/google/protobuf
** Invoke lib/google/protobuf/message_exts.rb (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/lib/google/protobuf/message_exts.rb
cp lib/google/protobuf/message_exts.rb tmp/arm64-darwin20/stage/lib/google/protobuf/message_exts.rb
** Invoke tmp/arm64-darwin20/stage/lib/google/protobuf/repeated_field.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/lib/google/protobuf (not_needed)
** Invoke lib/google/protobuf/repeated_field.rb (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/lib/google/protobuf/repeated_field.rb
cp lib/google/protobuf/repeated_field.rb tmp/arm64-darwin20/stage/lib/google/protobuf/repeated_field.rb
** Invoke tmp/arm64-darwin20/stage/lib/google/protobuf/well_known_types.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/lib/google/protobuf (not_needed)
** Invoke lib/google/protobuf/well_known_types.rb (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/lib/google/protobuf/well_known_types.rb
cp lib/google/protobuf/well_known_types.rb tmp/arm64-darwin20/stage/lib/google/protobuf/well_known_types.rb
** Invoke tmp/arm64-darwin20/stage/tests/basic.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/tests (first_time)
** Execute tmp/arm64-darwin20/stage/tests
mkdir -p tmp/arm64-darwin20/stage/tests
** Invoke tests/basic.rb (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/tests/basic.rb
cp tests/basic.rb tmp/arm64-darwin20/stage/tests/basic.rb
** Invoke tmp/arm64-darwin20/stage/tests/generated_code_test.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/tests (not_needed)
** Invoke tests/generated_code_test.rb (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/tests/generated_code_test.rb
cp tests/generated_code_test.rb tmp/arm64-darwin20/stage/tests/generated_code_test.rb
** Invoke tmp/arm64-darwin20/stage/tests/stress.rb (first_time)
** Invoke tmp/arm64-darwin20/stage/tests (not_needed)
** Invoke tests/stress.rb (first_time, not_needed)
** Execute tmp/arm64-darwin20/stage/tests/stress.rb
cp tests/stress.rb tmp/arm64-darwin20/stage/tests/stress.rb
** Execute copy:protobuf_c:arm64-darwin20:2.7.2
install -c tmp/arm64-darwin20/protobuf_c/2.7.2/protobuf_c.bundle lib/google/protobuf_c.bundle
cp tmp/arm64-darwin20/protobuf_c/2.7.2/protobuf_c.bundle tmp/arm64-darwin20/stage/lib/google/protobuf_c.bundle
** Execute compile:protobuf_c:arm64-darwin20
** Execute compile:arm64-darwin20
** Execute compile
** Invoke genproto (first_time)
** Invoke lib/google/protobuf/any_pb.rb (first_time)
** Invoke ../src/google/protobuf/any.proto (first_time, not_needed)
** Execute lib/google/protobuf/any_pb.rb
../src/protoc -I../src --ruby_out=lib ../src/google/protobuf/any.proto
rake aborted!
Command failed with status (127): [../src/protoc -I../src --ruby_out=lib ../s...]
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/file_utils.rb:67:in `block in create_shell_runner'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/file_utils.rb:57:in `sh'
/Users/niels-kristian/Programming/autouncle/scout/protobuf/ruby/Rakefile:37:in `block (2 levels) in <top (required)>'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:281:in `block in execute'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:281:in `each'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:281:in `execute'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `synchronize'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:241:in `each'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:241:in `invoke_prerequisites'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `synchronize'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:241:in `each'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:241:in `invoke_prerequisites'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `synchronize'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:241:in `each'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:241:in `invoke_prerequisites'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `synchronize'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:199:in `invoke_with_call_chain'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/task.rb:188:in `invoke'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:160:in `invoke_task'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:116:in `each'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:116:in `block in top_level'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:125:in `run_with_threads'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:110:in `top_level'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:83:in `block in run'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:186:in `standard_exception_handling'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/lib/rake/application.rb:80:in `run'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/bin/rake:23:in `load'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/bin/rake:23:in `<main>'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/bin/ruby_executable_hooks:22:in `eval'
/Users/niels-kristian/.rvm/gems/ruby-2.7.2@rails6/bin/ruby_executable_hooks:22:in `<main>'

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions