implement on-demand dependency resolution & replace mkmf with custom code

Authored by sitter on Feb 22 2019, 12:48 PM.

Description

implement on-demand dependency resolution & replace mkmf with custom code

this is a bit meh but since neondocker needs docker but we don't want
docker on the ISO we have to jump through hoops to get this working
out of the box :(

xephyr and docker are now installed unless they are available. docker-api
gem is also installed as necessary.

the latter is a bit tricky even. when not run as a program the file will
expect the gem to be present (as before) but when run as program it will
install the gem and then reexecute the program to reload the gem list.
to prevent inifnity reexecs there also needs to be a loop protection
passed via the environment

this also replaces the use of mkmf with a custom Executable class to locate
binaries. mkmf is not meant to be used outside build configuration. it
pollutes the main object namespace and it actually requires ruby-dev to
run. it's altogether rubbish here. instead the new Executable class from
releaseme implements proper binary lookup but without all the downsides
of mkmf

Details

Committed
sitterMar 28 2019, 1:04 PM
Parents
R577:6cecbd4afc2e: add a rubocop.yml to silence some excessive warnings
Branches
Unknown
Tags
Unknown