iizukak の雑記

忘れる前に書いとこう

macOS Catalina で mruby をビルドする

システム情報

  • OS: macOS Catalina 10.15.4(19E287)
  • mruby version: master(84aad399) (2020年5月5日現在)
  • Bison version: 3.5.4

概要

macOS で mruby をビルドして Hello World する。ハマりどころとして、macOS の Bison が古すぎてエラーになることがある。

clone & rake test

$ git clone git@github.com:mruby/mruby.git
$ cd mruby
$ rake test
...
>>> Test test <<<
mrbtest - Embeddable Ruby Test
...
Skip: File.expand_path (with ENV) (mrbgems: mruby-io)
Skip: IO#pread => IO#pread is not implemented on this configuration (mrbgems: mruby-io)
Skip: IO#pwrite => IO#pwrite is not implemented on this configuration (mrbgems: mruby-io)
  Total: 1239
     OK: 1236
     KO: 0
  Crash: 0
Warning: 0
   Skip: 3
   Time: 0.79 seconds

>>> Bintest test <<<
bintest - Command Binary Test

........................................................
  Total: 56
     OK: 56
     KO: 0
  Crash: 0
Warning: 0
   Skip: 0
   Time: 1.3 seconds

Hello World

$ rake -v
$ ./bin/mirb
mirb - Embeddable Interactive Ruby Shell

> print "hello world!"
hello world! => nil

Bison バージョンについて

Bison バージョンが古いと以下のエラーとなった

bison -o "/Users/kentaro/projects/mruby/build/host/mrbgems/mruby-compiler/core/y.tab.c" "/Users/kentaro/projects/mruby/mrbgems/mruby-compiler/core/parse.y"
/Users/kentaro/projects/mruby/mrbgems/mruby-compiler/core/parse.y:1333.9-16: syntax error, unexpected identifier, expecting string
bison -o "/Users/kentaro/projects/mruby/build/host/mrbgems/mruby-compiler/core/y.tab.c" "/Users/kentaro/projects/mruby/mrbgems/mruby-compiler/core/parse.y"
/Users/kentaro/projects/mruby/mrbgems/mruby-compiler/core/parse.y:1333.9-16: syntax error, unexpected identifier, expecting string

ログ全体は ここ

エラーが発生した Bison は

$ /usr/bin/bison --version
bison (GNU Bison) 2.3

通った Bison は

/usr/local/opt/bison/bin/bison --version
bison (GNU Bison) 3.5.4

新しい Bison は brew install bison で入れて PATH を通しておく必要がある。