Closed neutral2010 closed 2 years ago
サポーターの田原です。よろしくお願いします。
サポーターに相談。
公式サイトを見れば良いのか?GitHubを見れば良いのか?
先に見つかったのはGitHubのここ https://github.com/mruby/mruby
そこから、GitHubのmrubyトップページを見る。https://github.com/mruby
そこから、mrubyの公式ページを見る。https://mruby.org/docs/
ライセンスがありそうなページを探す。
→見つかった。DocumentationのAPI docsリンクの先 https://mruby.org/docs/api/の9 Licenseリンクに記載
mruby is released under the MIT License.
https://github.com/mruby/mruby/blob/master/LICENSE にリンクされていた。
https://opensource.org/licenses/alphabetical で、OSSであることを確認
mruby is the lightweight implementation of the Ruby language complying with part of the ISO standard. mruby can be linked and embedded within your application.
どうやればいいのか全然分からない。ので、サポーターさんに質問。 「何を(どこを)参考にすれば良いのか?」 https://github.com/mruby/mruby の「README.mdを見て、順番にやってみましょう。」
ソースコードをダウンロードして、コンパイルする(使えるようにする。)← OSSではありがちなこと。cf homebrewでやってくれていること/バイナリファイル(既に使いやすくなっているファイルのこと)
ソースコードをダウンロードすることに関して
コンパイルの仕方
上記1)2)ができた上で行う作業。 documentationとは、mruby APIでできることが、ズラ〜っと書いてある。それを作る作業。
Linuxの方が良いかも? コンパイルについての説明 https://github.com/mruby/mruby/blob/master/doc/guides/compile.md で、Macでも大丈夫なようなので、今日のところはこのままMacで続行。(最終的には、Linuxでも動かしたい。)
You can also install and compile mruby using ruby-install, ruby-build or rvm.
に沿ってやってみようかとご相談してみた。どれもこれまで使ったことのない、コマンドラインツールだし、、、
やっぱり、README.mdに沿ってやってみることに。
~/projects/oss
❯ git clone https://github.com/mruby/mruby.git
Cloning into 'mruby'...
remote: Enumerating objects: 66321, done.
remote: Counting objects: 100% (1875/1875), done.
remote: Compressing objects: 100% (685/685), done.
remote: Total 66321 (delta 1121), reused 1805 (delta 1101), pack-reused 64446
Receiving objects: 100% (66321/66321), 17.97 MiB | 1.32 MiB/s, done.
Resolving deltas: 100% (41525/41525), done.
必要なコマンドがあるかどうか確認
❯ gcc
clang: error: no input files
~/projects/oss
❯ ar
usage: ar -d [-TLsv] archive file ...
ar -m [-TLsv] archive file ...
ar -m [-abiTLsv] position archive file ...
ar -p [-TLsv] archive [file ...]
ar -q [-cTLsv] archive file ...
ar -r [-cuTLsv] archive file ...
ar -r [-abciuTLsv] position archive file ...
ar -t [-TLsv] archive [file ...]
ar -x [-ouTLsv] archive [file ...]
~/projects/oss
❯ ruby
ruby -^Cruby: Interrupt
~/projects/oss 16s
❯ brew install bison
Updating Homebrew...
==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:0cb1cc7af109437fe0e020c9f3b7b95c3c709b140bde9f991ad2c1433496dd42
######################################################################### 100.0%
==> Pouring portable-ruby-2.6.8.yosemite.bottle.tar.gz
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
all-repos copier ld-find-code-refs nsh
charmcraft datafusion libsigrok sextractor
clang-format@11 gitlab-ci-local mdzk
cloudiscovery iputils ncnn
==> Updated Formulae
Updated 2738 formulae.
==> New Casks
blender-benchmark keycombiner otto-matic topnotch
bugdom mightymike scatter trackerzapper
fmail mural tev
gitdock nanosaur threema
==> Updated Casks
Updated 302 casks.
==> Deleted Casks
anzeigenchef breakaway refined-github-safari
archi collabshot silverlight
bearychat cytoscape tuntap
blooo fritzing zipcleaner
==> Downloading https://ghcr.io/v2/homebrew/core/bison/manifests/3.8.2
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/bison/blobs/sha256:a4fa1a0bf324
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring bison--3.8.2.big_sur.bottle.tar.gz
==> Caveats
bison is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have bison first in your PATH, run:
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.zshrc
For compilers to find bison you may need to set:
export LDFLAGS="-L/usr/local/opt/bison/lib"
==> Summary
🍺 /usr/local/Cellar/bison/3.8.2: 99 files, 3.7MB
~/projects/oss 1m 4s
❯ echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.zshrc
~/projects/oss
❯ echo 'export LDFLAGS="-L/usr/local/opt/bison/lib"' >> ~/.zshrc
~/projects/oss ❯ ls mruby
~/projects/oss ❯ cd mruby
~/projects/oss/mruby master ❯ ls AUTHORS SECURITY.md lib CODEOWNERS TODO.md minirake CONTRIBUTING.md appveyor.yml mrbgems Doxyfile benchmark mrblib LEGAL build_config mruby-source.gemspec LICENSE build_config.rb oss-fuzz Makefile codespell.txt src NEWS doc super-linter.report README.md examples tasks Rakefile include test
~/projects/oss/mruby master
❯ rake
CPP src/array.c -> build/host/src/array.pi
CPP src/backtrace.c -> build/host/src/backtrace.pi
CPP src/cdump.c -> build/host/src/cdump.pi
CPP src/class.c -> build/host/src/class.pi
.
.
.
Build summary:
================================================
Config Name: host
Output Directory: build/host
Binaries: mrbc, mruby-config
Included Gems:
mruby-array-ext - Array class extension
mruby-bin-config - mruby-config command
mruby-bin-mirb - mirb command
- Binaries: mirb
mruby-bin-mrbc - mruby compiler executable
mruby-bin-mruby - mruby command
- Binaries: mruby
mruby-bin-strip - irep dump debug section remover command
- Binaries: mruby-strip
mruby-class-ext - class/module extension
mruby-compar-ext - Enumerable module extension
mruby-compiler - mruby compiler library
mruby-complex - Complex class
mruby-enum-ext - Enumerable module extension
mruby-enum-lazy - Enumerator::Lazy class
mruby-enumerator - Enumerator class
mruby-eval - standard Kernel#eval method
mruby-fiber - Fiber class
mruby-hash-ext - Hash class extension
mruby-io - IO and File class
mruby-kernel-ext - extensional function-like methods
mruby-math - standard Math module
mruby-metaprog - Meta-programming features for mruby
mruby-method - Method and UnboundMethod class
mruby-numeric-ext - Numeric class extension
mruby-object-ext - extensional methods shared by all objects
mruby-objectspace - ObjectSpace class
mruby-pack - Array#pack and String#unpack method
mruby-print - standard print/puts/p
mruby-proc-ext - Proc class extension
mruby-random - Random class
mruby-range-ext - Range class extension
mruby-rational - Rational class
mruby-socket - standard socket class
mruby-sprintf - standard Kernel#sprintf method
mruby-string-ext - String class extension
mruby-struct - standard Struct class
mruby-symbol-ext - Symbol class extension
mruby-time - standard Time class
mruby-toplevel-ext - toplevel object (main) methods extension
================================================
================================================
Config Name: host/mrbc
Output Directory: build/host/mrbc
Binaries: mrbc
Included Gems:
mruby-bin-mrbc - mruby compiler executable
mruby-compiler - mruby compiler library
================================================
~/projects/oss/mruby master 1m 27s
❯ rake test
Build summary:
================================================
Config Name: host
Output Directory: build/host
Binaries: mrbc, mruby-config
Included Gems:
mruby-array-ext - Array class extension
mruby-bin-config - mruby-config command
mruby-bin-mirb - mirb command
- Binaries: mirb
mruby-bin-mrbc - mruby compiler executable
mruby-bin-mruby - mruby command
- Binaries: mruby
mruby-bin-strip - irep dump debug section remover command
- Binaries: mruby-strip
mruby-class-ext - class/module extension
mruby-compar-ext - Enumerable module extension
mruby-compiler - mruby compiler library
mruby-complex - Complex class
mruby-enum-ext - Enumerable module extension
mruby-enum-lazy - Enumerator::Lazy class
mruby-enumerator - Enumerator class
mruby-eval - standard Kernel#eval method
mruby-fiber - Fiber class
mruby-hash-ext - Hash class extension
mruby-io - IO and File class
mruby-kernel-ext - extensional function-like methods
mruby-math - standard Math module
mruby-metaprog - Meta-programming features for mruby
mruby-method - Method and UnboundMethod class
mruby-numeric-ext - Numeric class extension
mruby-object-ext - extensional methods shared by all objects
mruby-objectspace - ObjectSpace class
mruby-pack - Array#pack and String#unpack method
mruby-print - standard print/puts/p
mruby-proc-ext - Proc class extension
mruby-random - Random class
mruby-range-ext - Range class extension
mruby-rational - Rational class
mruby-socket - standard socket class
mruby-sprintf - standard Kernel#sprintf method
mruby-string-ext - String class extension
mruby-struct - standard Struct class
mruby-symbol-ext - Symbol class extension
mruby-time - standard Time class
mruby-toplevel-ext - toplevel object (main) methods extension
================================================
================================================
Config Name: host/mrbc
Output Directory: build/host/mrbc
Binaries: mrbc
Included Gems:
mruby-bin-mrbc - mruby compiler executable
mruby-compiler - mruby compiler library
================================================
CC mrbgems/mruby-test/driver.c -> build/host/mrbgems/mruby-test/driver.o
CC mrbgems/mruby-test/vformat.c -> build/host/mrbgems/mruby-test/vformat.o
GEN build/host/mrbgems/mruby-test/mrbtest.c
.
.
.
gem_test.o
AR build/host/mrbgems/mruby-test/mrbtest.a
ar: creating archive /Users/usagi/projects/oss/mruby/build/host/mrbgems/mruby-test/mrbtest.a
LD build/host/bin/mrbtest
INSTALL build/host/bin/mrbtest -> bin/mrbtest
>>> Test host <<<
mrbtest - Embeddable Ruby Test
.......................................................................................................................................................................?..........................................................................................................?.................................................................................................................................................?.................................................................................................................................................................................................................................................................................................................??.............................................................................................................................................................................................................................................................??......................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Skip: Proc#source_location (mrbgems: mruby-proc-ext)
Skip: Kernel.caller, Kernel#caller => backtrace isn't available (mrbgems: mruby-kernel-ext)
Skip: File.expand_path (with ENV) (mrbgems: mruby-io)
Skip: Method#source_location (mrbgems: mruby-method)
Skip: UnboundMethod#source_location (mrbgems: mruby-method)
Skip: GC in rescue => backtrace isn't available (core)
Skip: Method call in rescue => backtrace isn't available (core)
Total: 1437
OK: 1430
KO: 0
Crash: 0
Warning: 0
Skip: 7
Time: 0.32 seconds
>>> Bintest host <<<
bintest - Command Binary Test
.............................................................
Total: 61
OK: 61
KO: 0
Crash: 0
Warning: 0
Skip: 0
Time: 1.74 seconds
これを試してみたら、何かフィードバックポイントがあるかもしれません。
https://mruby.org/docs/articles/executing-ruby-code-with-mruby.html
すみません、今気がつきました ↑
Source code (.rb)
https://github.com/mruby/mruby.github.io/blob/master/docs/articles/executing-ruby-code-with-mruby.md#source-code-rb のところのサンプルがこうなっていると誤解が減りそう(ファイルがどこにあるのか、ファイルの内容が何なのか誤解の余地が減る)
$ cat test_program.rb
puts 'hello world'
$ mruby/bin/mruby test_program.rb
hello world
https://mruby.org/docs/articles/executing-ruby-code-with-mruby.html 4つのやり方を試してみる。 フィードバックポイントなのでは?
~/projects/oss/mruby master 13s
❯ mruby/bin/mirb
mirb - Embeddable Interactive Ruby Shell
zsh: no such file or directory: mruby/bin/mirb
zsh: command not found: mirb
~/projects/oss/mruby master
❯ ls
AUTHORS TODO.md lib
CODEOWNERS appveyor.yml minirake
CONTRIBUTING.md benchmark mrbgems
Doxyfile bin mrblib
LEGAL build mruby-source.gemspec
LICENSE build_config oss-fuzz
Makefile build_config.rb src
NEWS codespell.txt super-linter.report
README.md doc tasks
Rakefile examples test
SECURITY.md include
~/projects/oss/mruby master
❯ touch test_program.rb
~/projects/oss/mruby master*
❯ vim test_program.rb
~/projects/oss/mruby master* 26s
❯ cat test_program.rb
puts 'hello world'
~/projects/oss/mruby master*
❯ mruby/bin/mrbc test_program.rb
zsh: no such file or directory: mruby/bin/mrbc
~/projects/oss/mruby master*
❯ ls
AUTHORS TODO.md lib
CODEOWNERS appveyor.yml minirake
CONTRIBUTING.md benchmark mrbgems
Doxyfile bin mrblib
LEGAL build mruby-source.gemspec
LICENSE build_config oss-fuzz
Makefile build_config.rb src
NEWS codespell.txt super-linter.report
README.md doc tasks
Rakefile examples test
SECURITY.md include test_program.rb
~/projects/oss/mruby master*
❯ cd bin/mrbc
cd: not a directory: bin/mrbc
~/projects/oss/mruby master*
❯ cd bin
~/projects/oss/mruby/bin master*
❯ ls
mirb mrbtest mruby-config
mrbc mruby mruby-strip
~/projects/oss/mruby/bin master*
❯ mruby/bin/mrbc test_program.rb
zsh: not a directory: mruby/bin/mrbc
~/projects/oss/mruby/bin master*
❯ ls
mirb mrbtest mruby-config
mrbc mruby mruby-strip
~/projects/oss/mruby/bin master*
❯ mirb
zsh: command not found: mirb
~/projects/oss/mruby/bin master*
❯ ./mirb
mirb - Embeddable Interactive Ruby Shell
> puts 'hello world'
hello world
=> nil
> exit
~/projects/oss/mruby/bin master* 1m 57s
❯ mruby/bin/mruby test_program.rb
zsh: not a directory: mruby/bin/mruby
~/projects/oss/mruby/bin master*
❯ pwd
/Users/usagi/projects/oss/mruby/bin
~/projects/oss/mruby/bin master*
❯ touch test_program.rb
~/projects/oss/mruby/bin master*
❯ vim test_program.rb
~/projects/oss/mruby/bin master* 24s
❯ mruby/bin/mruby test_program.rb
zsh: not a directory: mruby/bin/mruby
~/projects/oss/mruby/bin master*
❯ ./mruby test_program.rb
test_program.rb:1: undefined method 'world' (NoMethodError)
~/projects/oss/mruby/bin master*
❯ cd ../
~/projects/oss/mruby master*
❯ cd../
zsh: no such file or directory: cd../
~/projects/oss/mruby master*
❯ pwd
/Users/usagi/projects/oss/mruby
~/projects/oss/mruby master*
❯ mruby/bin/mruby test_program.rb
zsh: no such file or directory: mruby/bin/mruby
~/projects/oss/mruby master*
❯ ./mruby/bin/mruby test_program.rb
zsh: no such file or directory: ./mruby/bin/mruby
~/projects/oss/mruby master*
❯ ls
AUTHORS TODO.md lib
CODEOWNERS appveyor.yml minirake
CONTRIBUTING.md benchmark mrbgems
Doxyfile bin mrblib
LEGAL build mruby-source.gemspec
LICENSE build_config oss-fuzz
Makefile build_config.rb src
NEWS codespell.txt super-linter.report
README.md doc tasks
Rakefile examples test
SECURITY.md include test_program.rb
~/projects/oss/mruby master*
❯ rm test_program.rb
~/projects/oss/mruby master
❯ ls
AUTHORS TODO.md lib
CODEOWNERS appveyor.yml minirake
CONTRIBUTING.md benchmark mrbgems
Doxyfile bin mrblib
LEGAL build mruby-source.gemspec
LICENSE build_config oss-fuzz
Makefile build_config.rb src
NEWS codespell.txt super-linter.report
README.md doc tasks
Rakefile examples test
SECURITY.md include
~/projects/oss/mruby master
❯ mruby/bin/mruby test_program.rb
zsh: no such file or directory: mruby/bin/mruby
~/projects/oss/mruby master
❯ ls
AUTHORS TODO.md lib
CODEOWNERS appveyor.yml minirake
CONTRIBUTING.md benchmark mrbgems
Doxyfile bin mrblib
LEGAL build mruby-source.gemspec
LICENSE build_config oss-fuzz
Makefile build_config.rb src
NEWS codespell.txt super-linter.report
README.md doc tasks
Rakefile examples test
SECURITY.md include
~/projects/oss/mruby master
❯ cd bin
~/projects/oss/mruby/bin master
❯ ls
mirb mrbtest mruby-config test_program.rb
mrbc mruby mruby-strip
~/projects/oss/mruby/bin master
❯ ls -l
total 14208
-rwxr-xr-x 1 usagi staff 1480584 10 30 14:29 mirb
-rwxr-xr-x 1 usagi staff 849944 10 30 14:29 mrbc
-rwxr-xr-x 1 usagi staff 1964480 10 30 14:39 mrbtest
-rwxr-xr-x 1 usagi staff 1479800 10 30 14:29 mruby
-rwxr-xr-x 1 usagi staff 1389 10 30 14:29 mruby-config
-rwxr-xr-x 1 usagi staff 1481640 10 30 14:29 mruby-strip
-rw-r--r-- 1 usagi staff 12 10 30 15:24 test_program.rb
~/projects/oss/mruby/bin master
❯ ./mruby test_program.rb
test_program.rb:1: undefined method 'world' (NoMethodError)
~/projects/oss/mruby/bin master
❯ cat test_program.rb
hello world
おつかれさまでした!
ワークショップの終了にともないissueを閉じますが、このまま作業メモとして使っても構いません :ok_hand:
ワークショップの感想を集めています!
ブログなどに書かれた際は、このページへリンクの追加をお願いします :pray:
またの参加をお待ちしています!
This is a work log of a "OSS Gate workshop". "OSS Gate workshop" is an activity to increase OSS developers. Here's been discussed in Japanese. Thanks.
作業ログ作成時の説明
以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。
タイトル例↓:
OSS Gateワークショップ関連情報