The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
2.2 KiB

rake-compiler-dock for gRPC
===================================
This has customized docker images for Ruby based on
[rake-compiler-dock](https://github.com/rake-compiler/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](https://github.com/dockcross/dockcross), 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](https://github.com/rake-compiler/rake-compiler-dock/issues/33).
These two new docker images; `rake_x64-linux` and `rake_x86_64-linux` are based on
[Dockerfile.mri.erb](https://github.com/rake-compiler/rake-compiler-dock/blob/master/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`