HomebrewにPull Request送ってみた

先日PostgreSQLで日本語全文検索が使いたいというのでhomebrewのFomulaを弄りました。そのまま放置していたのですが、今日brew updateを打つと、ローカルチェンジがあるからコミットするかマージするか捨てるかしろやと言われました。今まで知らなかったのですがhomebrewってgitを使ってFormulaの管理をしているんですね。

それで捨てるのもあれなのでpg_trgmでアルファベットと数字以外もサポートするオプションをつけてpull requestを送ってみる事にしました。Pull Requestの手順も回数こなしてない事もあり覚えられてないので、合わせて記録しておきます。

Pull Requestの手順はコチラの記事に書かれている通りにしています。gitを使いこなしていないので自分で正しい手順を考えられません。

$ echo "GithubでForkボタンを押す"
$ git clone https://github.com/taichino/homebrew.git
$ cd homebrew
# ローカル編集用のブランチで作業する
$ git checkout -b postgresqlspike
$ vim Library/Formula/postgresql.rb         # Formulaを編集
$ git diff
diff --git a/Library/Formula/postgresql.rb b/Library/Formula/postgresql.rb
index 78dc70d..f061c3e 100644
--- a/Library/Formula/postgresql.rb
+++ b/Library/Formula/postgresql.rb
@@ -14,11 +14,18 @@ class Postgresql < Formula
   option 'no-python', 'Build without Python support'
   option 'no-perl', 'Build without Perl support'
   option 'enable-dtrace', 'Build with DTrace support'
+  option 'use-nonalnum-index', 'Build pg_trgm with non alphanumeric characters support'

   # Fix PL/Python build: https://github.com/mxcl/homebrew/issues/11162
   # Fix uuid-ossp build issues: http://archives.postgresql.org/pgsql-general/2012-07/msg00654.php
+  # Disabled KEEPONLYALNUM in pg_trgm: http://archives.postgresql.org/pgsql-hackers/2012-05/msg00388.php
   def patches
-    DATA
+    puts Dir.getwd
+    p = {:p1 => DATA}
+    if build.include? 'use-nonalnum-index'
+      p[:p0] = 'https://raw.github.com/gist/3762131/452bec69a2b9cedf692d68280bf9c432e2ccae7b/pg_trgm_patch.diff'
+    end
+    p
   end

   def install
$ git commit -a
$ git push origin postgresqlspike
$ git remote add upstream https://github.com/mxcl/homebrew.git
$ git checkout master
$ git pull upstream master
$ git checkout postgresqlspike
$ git rebase master postgresqlspike
$ git push origin master
# プルリクエスト用のブランチに編集内容を適用する
$ git checkout -b postgresql
$ git rebase -i master	
$ git push origin postgresql
$ echo "GithubでPull Request!"

以上でPull Requestを送れました。ちなみにgistに書いているパッチの内容は以前の記事で書いたものと全く同じです。

Formulaの編集は凄く簡単で、Formula Cookbookを眺めながら他のレシピを参考にすれば直ぐに書けます。GitHubを使った仕組みも秀逸でrpmとかdebとかよりも綺麗な気がします。まぁビルドするから遅いですけど。

あとFormulaの編集をする中で幾つかbrewコマンドの使い方を幾つか覚えました。

$ brew options postgresql    # 現状のFormulaが対応しているビルドオプション一覧
--without-ossp-uuid
        Build without OSSP uuid
--32-bit
        Build 32-bit only
--no-python
        Build without Python support
--enable-dtrace
        Build with DTrace support
--use-nonalnum-index
        Build pg_trgm with non alphanumeric characters support
--no-perl
        Build without Perl support
$ brew cat postgresql        # ソース確認だけならbrew editでイチイチエディタ開かなくても良い
...
$ brew install -v postgresql # -vでverbose
...
$ brew --cache postgresql    # ダウンロードしたアーカイブファイルのパスを表示
/Library/Caches/Homebrew/postgresql-9.2.0.tar.bz2

何となくですがHomebrewが分かってきたので良かったです。センス溢れる仕組みで感動しました。

Leave a Reply

Your email address will not be published. Required fields are marked *