2.2 KiB
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
todockcross/manylinux2010
- Removing rvm account due to the complexity of having the same thing on
manylinux2010
(mainly due to the limit ofgosu
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 oflibcrypt.so.2
. Without this, artifacts for Ruby 2.3 to 2.5 happens to have alibcrypt.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
torb_gettimeofday
inwin32.h