We now build against three darwin versions (Sierra, High Sierra and Catalina)
to match Ruby core. We continue to build against 3 ruby versions on Linux, but
we only deploy the ruby 2.7 builds (since they should all be identical).
I've been abusing Scaleway's C1 servers for this purpose for a while
now. Hopefully @edouardb and his team won't start decomissioning them as I don't
know what else I can use :).
I'm tired of our releases getting held up because building the binaries
is such a yak shave. We're in dire need of some automation. I tried
spiking some things out with Docker, but for the time being, it was
easier to just go with Vagrant.
Currently, our release process for binary gems involves
1. a source release at an even point (e.g. 3.16.14.8)
2. a version bump to serve as the basis for binary releases
3. a mish-mash of gem builds and pushes for osx, linux, freebsd, etc...
In order to make things eaiser for us to manage these binary builds, I'm
proposing a standardized build using Vagrant. For each supported
release, a Vagrant file goes into /release/<arch>/Vagrantfile
The vagrantfile is responsible for provisioning a modern
ruby toolchain including bundler, git, git-svn, ruby and ruby source and
headers.
It should also clone the libv8 source into the /libv8
This can then be used to build the binary gem for that platform.
This PR includes the Vagrantfile for x86_64-linux
therubyracer now delegates all lookup for its v8
compilation dependencies to the libv8 gem.
if you pass the --with-system-v8 flag to the libv8
gem on install, try to configure therubyracer upon
compile with the following options.
--with-v8-include, --with-v8-lib and --with-v8-dir
Otherwise, it will configure therubyracer to use
its own vendored version of v8.