The underlying build system of rbwasm build is quite messy.
- Each build step has to have its ad-hoc up-to-date check like followings:
|
return if Dir.exist?(install_dir) |
|
if !File.exist?("#{build_dir}/Makefile") || reconfigure |
- Uses of build product and cache key computation are placed far, so we often forget to update the cache key and get a wrong cache restored.
- The current cache mechanism cannot restore two or more artifacts produced within a single rake task job. This usually happens for PIC & non-PIC builds invoked by
rake npm:ruby-head-wasm-wasi:build
- Our cache mechanism does not allow partial cache-hit, so even if we change only crossruby source revision, we have to rebuild openssl from scratch.
- Our cache mechanism is not sensitive to recipe changes. For instance, even if we change CFLAGS value, crossruby product will not be rebuilt.