先日作成した以下のようなHomebrew用Formulaですが、そもそもこれは
$ brew create http://sourceforge.net/projects/takt/files/takt-0.309-src.tar.gz
として作成したFormulaでした。それを以下のように変更して、自分の環境でbrew install takt
でうまくいったのでCommit & Pushしたのでした(本来ならauditしないといけないようです)。
### NG版 class Takt < Formula desc "a text-based music programming language" homepage "http://takt.sourceforge.net" url "http://sourceforge.net/projects/takt/files/takt-0.309-src.tar.gz" version "0.309" sha256 "44fca667d610fba15deb441dd44e5b87dabbe5619d7fa8a13f5c8c1f054dd509" depends_on "readline" def install system "./configure", "--prefix=#{prefix}" system "make", "install" end test do system bin/"takt", "-o etude1.mid", pkgshare/"examples/etude1.takt" end end
Commit & Pushの手順は、
$ cd `brew --repository` $ git add Library/Formula/takt.rb $ git commit $ git push git@github.com:JikanBae/homebrew.git takt
だったように思います(ほかにもSSHの秘密鍵を作ったりゴチャゴチャしてました)。このあとでGitHub上でPull Requestを発行しました。
本家にPull Requestを投げて数時間後に、いくつかの親切なコメントとともに、修正のために差し戻されました。どんなコメントだったかというと、
- Sourceforgeからのダウンロードは
http://sourceforge.net
ではなくhttps://downloads.sourceforge.net
からに変更せよ(負荷分散のために地域ごとにミラーを自動選択させる) - 説明文の冒頭にある不定冠詞
a
はいらないから、取り除こう(「Text-based music programming language」でよい) version "0.309"
はダウンロードするファイル名takt-0.309-src.tar.gz
から類推できるので、冗長だから削除すべし- elispは
/usr/local/share/emacs/site-lisp
ではなく/usr/local/share/emacs/site-lisp/takt
内にインストールすべし test do
でpkgshare
内にサンプルファイルがあるかのようにテストしてるけど、普通のソフトはサンプルファイルをそんな場所にインストールしないんだけど、いいのかな?
の5つ。1〜4はtakt.rbを以下のように編集して対応しました。5についてはモデレータ氏に「taktのMakefileはpkgshare内にサンプルファイルをインストールするから問題ない」とコメントして解決しました。
### OK版 class Takt < Formula desc "text-based music programming language" homepage "http://takt.sourceforge.net" url "https://downloads.sourceforge.net/project/takt/takt-0.309-src.tar.gz" sha256 "44fca667d610fba15deb441dd44e5b87dabbe5619d7fa8a13f5c8c1f054dd509" depends_on "readline" def install system "./configure", "--prefix=#{prefix}", "--with-lispdir=#{share}/emacs/\ site-lisp/#{name}" system "make", "install" end test do system bin/"takt", "-o etude1.mid", pkgshare/"examples/etude1.takt" end end
これも上記と同様にCommit & Pushします。一度Pull Requestを出してあるので、再度のrequestを出さなくても向こう側で自動的にテストに入ってくれます。
で、再pushから数時間して、無事にTaktがHomebrewに取り込まれました。brew update
したときの様子です↓
めでたし。これでTaktユーザが少しでも増えるといいなぁ。