読者です 読者をやめる 読者になる 読者になる

TaktのFormulaをHomebrewに取り入れてもらった

先日作成した以下のような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を投げて数時間後に、いくつかの親切なコメントとともに、修正のために差し戻されました。どんなコメントだったかというと、

  1. Sourceforgeからのダウンロードはhttp://sourceforge.netではなくhttps://downloads.sourceforge.netからに変更せよ(負荷分散のために地域ごとにミラーを自動選択させる)
  2. 説明文の冒頭にある不定冠詞aはいらないから、取り除こう(「Text-based music programming language」でよい)
  3. version "0.309"はダウンロードするファイル名takt-0.309-src.tar.gzから類推できるので、冗長だから削除すべし
  4. elisp/usr/local/share/emacs/site-lispではなく/usr/local/share/emacs/site-lisp/takt内にインストールすべし
  5. test dopkgshare内にサンプルファイルがあるかのようにテストしてるけど、普通のソフトはサンプルファイルをそんな場所にインストールしないんだけど、いいのかな?

の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したときの様子です↓ f:id:amarui:20150909224724p:plain めでたし。これでTaktユーザが少しでも増えるといいなぁ。