LoginSignup
2
2

More than 5 years have passed since last update.

Groonga族のHomebrewの変遷を振り返る

Last updated at Posted at 2015-12-03

Groonga族とHomebrew

Groonga Advent Calendar 2015の4日目の記事です。

はじめに

Groonga族はOS Xでも動かすことが出来るものもあり、Homebrewでもインストールすることができるものもあります。
特に、GroongaはHomebrew本体に取り込まれているため、以下のコマンドでインストールすることが出来ます。

$ brew install groonga

また、MroongaはFormulaが複雑なため、homebrew-mroonga | GitHubをTapすることでインストールすることができます。

今年はGroonga族に新たにPGroonga | pgroonga GitHub pages が増えました。こちらも現在ではHomebrew本体に取り込まれているため、

$ brew install pgroonga

でインストールすることができます。

Homebrewの今年の大きな変更点

  • サンドボックスの機能が導入された
  • testブロックの強制
  • audit機能の強化

が導入されました。さて、PGroongaを導入するにあたり、サンドボックスの機能がかなりの障害となりました。

最初の壁

まず、サンドボックスの機能を知らなかった頃のPull Requestについたコメントを見てみましょう。
https://github.com/Homebrew/homebrew/pull/41174#issuecomment-119891498

おや?何か不穏ですね。

新しく追加しようとした diffの中で https://github.com/Homebrew/homebrew/pull/41174/files#diff-c5d7671658e19815af8d05dabe4d7515R20 としてしまっており、これだとなんとPGroongaではなくPostgreSQLのCellarにインストールしようとしてしまいます!
これではサンドボックスの保護下にある他のFormulaのCellarにインストールしようとしてしまうため、取り込んでくれそうにありません。

Mega Formula化?

では、先のPull Requestでのhttps://github.com/Homebrew/homebrew/pull/41174#discussion_r34240474 にある optional resources とは一体何を意味していたのでしょうか。

その回答は、こちら https://github.com/Homebrew/homebrew/pull/44739 でした。これはPostgreSQLのFormulaへresourceを追加して、--with-pgroonga オプションを追加したものです。これで、サンドボックス問題は解決できた、ヨカッタヨカッタ。。。…と胸を撫で下ろしていると、次の問題が起こります。

--with-pgroongaがbrew upgradeでハンドルされない

ある日のこと、 brew upgrade postgresql を行った際に、なんとPGroongaがPostgreSQLから消え去ってしまいました。これはイカン。。

そうこうしているうちに、次のIssueが立ちました。Possible way to handle sandbox issues for Postgres's plugins | Homebrew Issue in GitHub

このIssueでは、PostgreSQLのプラグインがサンドボックス環境下で壊れていることを問題にしています。

そうして、このIssueを解決するようにしたPull Requestがこちら

このPull Requestのキモとなる箇所はこの部分で、stageへ一旦インストールしてから、必要なファイルだけインストールする動作となっています。同時に、PostgreSQLのCellarでハードリンクをし、PostgreSQLから正常にプラグインが見えるようにしています。

そうして、PostgreSQLのFormulaの--with-pgroonga オプションは無事pgroonga.rbとして分離されたのでした。

testブロックの強制

こちらはGroonga 5.0.5への更新のプルリクエスト: https://github.com/Homebrew/homebrew/pull/41185/files で指摘されてしまいました。後日このテストは宜しくないと思ったので https://github.com/Homebrew/homebrew/pull/46451/files#diff-ae999bc11356b00a9a7b143428fe540dR67 にてより実際に近いテストケースにしておきました。

audit機能の強化

これはHomebrewのCIでこれまではbrew audit formula-name となっていたものが、 brew audit --strict --online formula-name に変わりました。これにより、より整ったFormulaで無いと取り込まれなくなりました。また、homepageがHomebrewのCI環境からアクセス可能でないと本家に取り込んでくれなくなりました。

おまけ

実はサンドボックスの機能の影響を groonga-normalizer-mysql のFormulaも受けることになってしまいました。こちらも既にこのプルリクエストにより修正済みです。

おわりに

この記事はGroonga周り、特にPGroongaのFormulaのインストール方法が brew install postgresql --with-pgroonga から brew install pgroonga に変わった経緯を文章化していないなぁと思い、それを解説するために半ば勢いで書き上げられました。

新たなGroonga族が加わったことでより使い道が広がったGroonga族で良い全文検索を!

Let's full-text search with Groonga family!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2