diff options
| author | KOBAYASHI Shuji <[email protected]> | 2021-02-04 14:57:37 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2021-02-04 14:57:37 +0900 |
| commit | f92c1f1b7f561c97571f3352e24162914c06852a (patch) | |
| tree | 908e38630c96635ecd8153527180bd1d40544320 /lib | |
| parent | c43dd75ea9e2b2f3387e40617d4f4cd86d3841dc (diff) | |
| download | mruby-f92c1f1b7f561c97571f3352e24162914c06852a.tar.gz mruby-f92c1f1b7f561c97571f3352e24162914c06852a.zip | |
Fix breakage where builds except `host` don't refer` mrbc` in `host`
Build error occurred under the following conditions.
* `host` build is presym enabled and unspecified `mruby-bin-mrbc` gem.
* Build except `host` unspecified `mruby-bin-mrbc` gem and mrbcfile.
### Example
#### Build configuration
```ruby
MRuby::Build.new{|conf| conf.toolchain}
MRuby::Build.new("host2"){|conf| conf.toolchain}
```
#### Error
```console
rake aborted!
external mrbc or mruby-bin-mrbc gem in current('host2') or 'host' build is required
/mruby/lib/mruby/build.rb:326:in `mrbcfile'
/mruby/tasks/mrblib.rake:9:in `block in <top (required)>'
/mruby/lib/mruby/build.rb:18:in `instance_eval'
/mruby/lib/mruby/build.rb:18:in `block in each_target'
/mruby/lib/mruby/build.rb:17:in `each'
/mruby/lib/mruby/build.rb:17:in `each_target'
/mruby/tasks/mrblib.rake:1:in `<top (required)>'
/mruby/Rakefile:27:in `load'
/mruby/Rakefile:27:in `<top (required)>'
```
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/mruby/build.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/mruby/build.rb b/lib/mruby/build.rb index d6eabd79e..a79732802 100644 --- a/lib/mruby/build.rb +++ b/lib/mruby/build.rb @@ -320,12 +320,16 @@ EOS return @mrbcfile if @mrbcfile gem_name = "mruby-bin-mrbc" - gem = @gems[gem_name] - gem ||= (host = MRuby.targets["host"]) && host.gems[gem_name] - unless gem - fail "external mrbc or mruby-bin-mrbc gem in current('#{@name}') or 'host' build is required" + if (gem = @gems[gem_name]) + @mrbcfile = exefile("#{gem.build.build_dir}/bin/mrbc") + elsif !host? && (host = MRuby.targets["host"]) + if (gem = host.gems[gem_name]) + @mrbcfile = exefile("#{gem.build.build_dir}/bin/mrbc") + elsif host.mrbcfile_external? + @mrbcfile = host.mrbcfile + end end - @mrbcfile = exefile("#{gem.build.build_dir}/bin/mrbc") + @mrbcfile || fail("external mrbc or mruby-bin-mrbc gem in current('#{@name}') or 'host' build is required") end def mrbcfile=(path) |
