tree: 161e709d8e85c93237170eee31fd5ba622147a3c [path history] [tgz]
  1. build/
  2. rake_x64-mingw32/
  3. rake_x86-linux/
  4. rake_x86-mingw32/
  5. rake_x86_64-linux/
  6. push_testing_images.sh
  7. README.md
third_party/rake-compiler-dock/README.md

rake-compiler-dock for gRPC

This has customized docker images for Ruby based on rake-compiler-dock. gRPC needs four docker images to build Ruby artifacts;

  • rake_x64-linux: Linux / 32bit
  • rake_x86_64-linux: Linux / 64bit
  • rake_x86-mingw32: Windows / 32bit
  • rake_x64-mingw32: Windows / 64bit

Customization

Linux

The linux docker images of rake-compiler-dock are based on Ubuntu, which is enough for most cases but it becomes hard to keep it compataible for some conservative Linux distrubitions such as CentOS 6 because Ubuntu uses more modern libraries than them. As a result, generated artifacts sometimes cannot run on CentOS 6 due to missing dependencies. This can be easily addressed by using CentOS 6 based docker images such as dockcross manylinux2010, which was invented to handle the very same problem of Python. By using the same solution, Ruby can have the simple way of building more portable artifacts. This idea is summarized in rake-compiler-dock#33.

These two new docker images; rake_x64-linux and rake_x86_64-linux are based on Dockerfile.mri.erb with following customizations;

  • Changing the base image from ubuntu:16.04 to dockcross/manylinux2010
  • Removing rvm account due to the complexity of having the same thing on manylinux2010 (mainly due to the limit of gosu handling groups)
  • Removing cross compiling setup for x86 because manylinux2010-x86 already did it. (like cross compilers for x86 and mk_i686)
  • Removing glibc hack because manylinux2010 doesn't needit.
  • Adding patchelf_gem.sh to trim the unnecessary dependency of libcrypt.so.2. Without this, artifacts for Ruby 2.3 to 2.5 happens to have a libcrypt.so.2 link although it doesn't have any external symbols from it.

Windows

Windows docker images are almost identical to rake-compiler-dock but with some exception;

  • Renaming gettimeofday to rb_gettimeofday in win32.h