OSS Gate東京ミートアップ for Red Data Toolsでapache-arrow-glibのformulaのPRを出した
OSS Gate東京ミートアップ for Red Data Tools
先月に続いて参加。この日もSpeeeさん。
Speeeさんは色んなイベントを開催してくださるので、仕事上の関わりは全くないのに週一ペースで出入りしていて、私完全に頻度がおかしい。
homebrew-coreにPRを出したのだけど。。。
先月からhomebrewにapache-arrow-glibのformulaを追加する、ということに取り組ませて頂いています。
homebrewはRuby製で、formulaもRubyで書けるのですが、DSL的というか、ある種のフレームワーク開発的なところがあります。
formula作成用ジェネレータコマンドを叩くと、テンプレートが吐かれて、そこにインストールしたいライブラリのインストール方法をHomebrewのライブラリが提供しているメソッドを使って表現していく、というような感じです。
formulaファイルちょっと面白くて、installメソッドの真下にそのformulaのtestを書かせるんです。プロダクションコードとテストコードが同一ファイルに同居してるもの、って他にもあるのでしょうか?
Homebrewのformula開発はこんな雰囲気
Homebrewにformula関連PRを送る手順はここに記載されています
How To Open a Homebrew Pull Request (and get it merged) — Homebrew Documentation
上記の手順に沿って進めて、ここに書いてある手順で brew create すると、
Formula Cookbook — Homebrew Documentation
cloneしてきたリポジトリではなくTapsというディレクトリにファイルが吐かれます。
吐かれたファイルに、他のformulaや下のドキュメントを参考にしながら、ライブラリのインストール方法を依存ライブラリの定義やinstallメソッドを使って書いていきます。
Class: Formula — Documentation for Homebrew/brew (master)
最初見た時、formluaの中身、何が書いてあるのかさっぱりわかりませんでしたが
- 依存ライブラリがあればhomebrewでインストールする
- インストールしたいライブラリのインストール(configure->make->make install)
ということをHomebrewの提供してるメソッドで書いてるだけなのですね。
Tapsでいい感じに作れたら、ドキュメントに書いてあるテストを通るようにして、cloneしてきたリポジトリのFormulaの下に持ってきて、pushしてPR出す、という感じです。
PR出してみたものの
この日は、「PR出したぞー、次のことやろう!」という意気込みで参加したのですが、PR出したところで、古いOSではテストがコケてしまうとCIに怒られてしまいました。
(しかもこの時に、インデントの崩れを直す前の状態でPR出したことに気づく)
PRのレビュアーの方がテストの修正方針を教えてくれたので、それを見つつ修正しております。
「brew install hoge、って叩けばhoge入れてくれるんだフーン」くらいに思ってましたが、これ、善意の誰かがformula作ったりメンテしたり、チェックしてマージしてくれないとできないことだったんですよね。とても感慨深いです。
さて、がんばろ。