Skip to content

Add ruby 2.7 to mac binary packages#22195

Merged
apolcyn merged 1 commit intogrpc:masterfrom
apolcyn:add_2_7_to_mac_binary_pkgs
Mar 2, 2020
Merged

Add ruby 2.7 to mac binary packages#22195
apolcyn merged 1 commit intogrpc:masterfrom
apolcyn:add_2_7_to_mac_binary_pkgs

Conversation

@apolcyn
Copy link
Copy Markdown
Contributor

@apolcyn apolcyn commented Feb 29, 2020

Add ruby 2.7 to mac binary packages

Towards #21514

Successful macos artifacts build with grpc-ruby libraries that target ruby 2.7:

https://console.cloud.google.com/storage/browser/grpc-testing-kokoro-prod/test_result_public/prod/grpc/core/pull_request/macos/grpc_build_artifacts/15633/20200302-010750

Some logic here in order to:

  • run rake cross-ruby ... for ruby versions 2.3 through 2.6 under ruby 2.5
  • run rake cross-ruby ... for ruby version under ruby 2.7. Cross-compiling ruby 2.7 under anything else seems to hit:
/Users/kbuilder/.rvm/rubies/ruby-2.5.0/bin/ruby --disable=gems -I/Users/kbuilder/.rake-compiler/builds/x86_64-darwin11/ruby-2.7.0 -rx86_64-darwin11-fake  -I`cd /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib; pwd` --disable-gems -r./x86_64-darwin11-fake /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/tool/rbinstall.rb --make="make -j8" --dest-dir="" --extout=".ext" --mflags="- --jobserver-fds=4,5 -j" --make-flags=" --jobserver-fds=4,5 -j" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --mantype="doc" --exclude=doc
/Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/delegate.rb:78:in `<class:Delegator>': undefined method `ruby2_keywords' for Delegator:Class (NoMethodError)
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/delegate.rb:39:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/tempfile.rb:8:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/ext/ext_conf_builder.rb:9:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/ext.rb:16:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/installer.rb:12:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/tool/rbinstall.rb:708:in `<module:RbInstall>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/tool/rbinstall.rb:644:in `<main>'

@apolcyn apolcyn added lang/ruby release notes: yes Indicates if PR needs to be in release notes labels Feb 29, 2020
@apolcyn
Copy link
Copy Markdown
Contributor Author

apolcyn commented Feb 29, 2020

Build failed with:

cd -
mkdir -p /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0
cd /Users/kbuilder/.rake-compiler/sources
tar xf ruby-2.7.0.tar.bz2
cd -
cp /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/Makefile.in /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/Makefile.in.bak
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/Makefile.in
/Volumes/BuildData/tmpfs/src/github/grpc/tmpfile.zIlTDEOA:98:in `block in <top (required)>'
/Users/kbuilder/.rvm/gems/ruby-2.5.0@global/gems/rake-12.3.0/exe/rake:27:in `<top (required)>'
/Users/kbuilder/.rvm/gems/ruby-2.5.0/bin/ruby_executable_hooks:24:in `eval'
/Users/kbuilder/.rvm/gems/ruby-2.5.0/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => cross-ruby => install => /Users/kbuilder/.rake-compiler/ruby/x86_64-darwin11/ruby-2.7.0/bin/ruby.exe => /Users/kbuilder/.rake-compiler/builds/x86_64-darwin11/ruby-2.7.0/ruby.exe => /Users/kbuilder/.rake-compiler/builds/x86_64-darwin11/ruby-2.7.0/Makefile => /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/Makefile.in => /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/Makefile.in.bak
(See full trace by running task with --trace)

... ruby 2.7 no longer has a Makefile.in (https://github.com/ruby/ruby/tree/ruby_2_7)


fixed by upgrading the version of the cross-compile.rake file from rake-compiler

@apolcyn
Copy link
Copy Markdown
Contributor Author

apolcyn commented Mar 1, 2020

error now:

Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode_9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
/Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/revision.h unchanged
generating enc.mk
making srcs under enc
making enc
make[1]: make[1]: warning: -jN forced in submake: disabling jobserver mode.warning: -jN forced in submake: disabling jobserver mode.

make[1]: Nothing to be done for `enc'.
make[1]: Nothing to be done for `srcs'.
generating transdb.h
transdb.h unchanged
generating makefiles ext/configure-ext.mk
making trans
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Nothing to be done for `/Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/enc/trans'.
making encs
make[1]: warning: -jN forced in submake: disabling jobserver mode.
ext/configure-ext.mk unchanged
make[1]: Nothing to be done for `encs'.
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Nothing to be done for `all'.
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make[1]: Nothing to be done for `note'.
/Users/kbuilder/.rvm/rubies/ruby-2.5.0/bin/ruby --disable=gems -I/Users/kbuilder/.rake-compiler/builds/x86_64-darwin11/ruby-2.7.0 -rx86_64-darwin11-fake  -I`cd /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib; pwd` --disable-gems -r./x86_64-darwin11-fake /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/tool/rbinstall.rb --make="make -j8" --dest-dir="" --extout=".ext" --mflags="- --jobserver-fds=4,5 -j" --make-flags=" --jobserver-fds=4,5 -j" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --mantype="doc" --exclude=doc
/Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/delegate.rb:78:in `<class:Delegator>': undefined method `ruby2_keywords' for Delegator:Class (NoMethodError)
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/delegate.rb:39:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/tempfile.rb:8:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/ext/ext_conf_builder.rb:9:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/ext.rb:16:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/installer.rb:12:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/lib/rubygems/core_ext/kernel_require.rb:72:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/tool/rbinstall.rb:708:in `<module:RbInstall>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.7.0/tool/rbinstall.rb:644:in `<main>'
make: *** [do-install-nodoc] Error 1
rake aborted!
Command failed with status (2): [make -j8 install...]
/Volumes/BuildData/tmpfs/src/github/grpc/tmpfile.BrISQcBP:172:in `block (2 levels) in <top (required)>'
/Volumes/BuildData/tmpfs/src/github/grpc/tmpfile.BrISQcBP:171:in `block in <top (required)>'
/Users/kbuilder/.rvm/gems/ruby-2.5.0@global/gems/rake-12.3.0/exe/rake:27:in `<top (required)>'
/Users/kbuilder/.rvm/gems/ruby-2.5.0/bin/ruby_executable_hooks:24:in `eval'
/Users/kbuilder/.rvm/gems/ruby-2.5.0/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => cross-ruby => install => /Users/kbuilder/.rake-compiler/ruby/x86_64-darwin11/ruby-2.7.0/bin/ruby.exe
(See full trace by running task with --trace)


[ID: 4025321] Build finished after 924 secs, exit value: 1

potentially relevant: https://bugs.ruby-lang.org/issues/16463


fixed by cross-compiling ruby only under ruby 2.7

@apolcyn
Copy link
Copy Markdown
Contributor Author

apolcyn commented Mar 1, 2020

error now:

/Users/kbuilder/.rake-compiler/sources/ruby-2.6.0/internal.h:127:10: warning: '__msan_unpoison' macro redefined [-Wmacro-redefined]
# define __msan_unpoison(x, y)
         ^
/Applications/Xcode_9.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/include/sanitizer/msan_interface.h:112:9: note: previous definition is here
#define __msan_unpoison(a, size)
        ^
2 warnings generated.
x86_64-darwin11-fake.rb updated
generating encdb.h
building .ext/include/x86_64-darwin11/rb_mjit_min_header-2.6.0.h
/Users/kbuilder/.rvm/rubies/ruby-2.7.0/bin/ruby --disable=gems -I/Users/kbuilder/.rake-compiler/builds/x86_64-darwin11/ruby-2.6.0 -rx86_64-darwin11-fake  /Users/kbuilder/.rake-compiler/sources/ruby-2.6.0/tool/transform_mjit_header.rb "/Users/kbuilder/.rake-compiler/sources/ruby-2.6.0/tool/darwin-cc clang " rb_mjit_header.h .ext/include/x86_64-darwin11/rb_mjit_min_header-2.6.0.h
/Users/kbuilder/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-darwin17/rbconfig.rb:13:in `<module:RbConfig>': ruby lib version (2.7.0) doesn't match executable version (2.6.0) (RuntimeError)
	from /Users/kbuilder/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/x86_64-darwin17/rbconfig.rb:11:in `<top (required)>'
	from /Users/kbuilder/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/fileutils.rb:4:in `require'
	from /Users/kbuilder/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/fileutils.rb:4:in `<top (required)>'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.6.0/tool/transform_mjit_header.rb:5:in `require'
	from /Users/kbuilder/.rake-compiler/sources/ruby-2.6.0/tool/transform_mjit_header.rb:5:in `<main>'
make: *** [.ext/include/x86_64-darwin11/rb_mjit_min_header-2.6.0.h] Error 1
make: *** Waiting for unfinished jobs....
encdb.h updated
/Users/kbuilder/.rake-compiler/sources/ruby-2.6.0/tool/ifchange "--timestamp=.rbconfig.time" rbconfig.rb rbconfig.tmp
rbconfig.rb updated
rake aborted!
Command failed with status (2): [make -j8...]
/Volumes/BuildData/tmpfs/src/github/grpc/tmpfile.zj92JWCr:165:in `block (2 levels) in <top (required)>'
/Volumes/BuildData/tmpfs/src/github/grpc/tmpfile.zj92JWCr:163:in `block in <top (required)>'
Tasks: TOP => cross-ruby => install => /Users/kbuilder/.rake-compiler/ruby/x86_64-darwin11/ruby-2.6.0/bin/ruby.exe => /Users/kbuilder/.rake-compiler/builds/x86_64-darwin11/ruby-2.6.0/ruby.exe
(See full trace by running task with --trace)


[ID: 7917441] Build finished after 1173 secs, exit value: 1


fixed by cross-compiling ruby 2.3-2.6 under ruby 2.5, and ruby 2.7 under 2.7

Copy link
Copy Markdown
Contributor

@jtattermusch jtattermusch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@apolcyn
Copy link
Copy Markdown
Contributor Author

apolcyn commented Mar 2, 2020

basic tests node macos: #20624
bazel c/C++ dbg macos: #21895
interop alts was issue mentioned in grpc/grpc-java#6780
build_docker_java: #18892

@apolcyn apolcyn merged commit 897c5e5 into grpc:master Mar 2, 2020
@qnighy qnighy mentioned this pull request Apr 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lang/ruby priority/P0/RELEASE BLOCKER release notes: yes Indicates if PR needs to be in release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants