mirror of https://github.com/grpc/grpc.git
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
47 lines
2.2 KiB
4 years ago
|
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`
|