LoginSignup
5
5

More than 5 years have passed since last update.

Homebrewのpatchesについて

Posted at

HomebrewのFormulaで定義する関数patchesの戻り値は、そのままFormulaで使用するパッチのURL一覧として使われます。

戻り値がリストの場合は、すべてpatch -p1の入力として処理されます。では、patchコマンドの-pオプションの引数、つまりpatchstrip値(?)を変更したい場合はどうすればいいのでしょう。HomebrewのFormula Cookbookによるとハッシュを使うようにと書かれています。

If the patches are not p1, return a Hash

そこで、patchesの中では、以下のような戻り値を返すようにするためのコードがよく見られます。

{ :p0 => "patch -p0で当てたいパッチ",
  :p1 => "patch -p1で当てたいパッチ",
  :p2 => "patch -p2で当てたいパッチ" }

つまりハッシュのキーでパッチレベルを指定し、ハッシュのバリューでパッチのURLを指定することになります。

では、patch -p0で当てたいパッチが複数ある場合はどうすればいいのでしょう。

{ :p0 => "patch -p0で当てたいパッチその1",
  :p1 => "patch -p1で当てたいパッチ",
  :p0 => "patch -p0で当てたいパッチその2" }

とやってもpatch -p0で当てたいパッチその1・その2両方は当たりません(ハッシュであることを考えれば当然ですね)。

答えは以下の通り、でした。

{ :p0 => [ "patch -p0で当てたいパッチその1",
           "patch -p0で当てたいパッチその2" ],
  :p1 => [ "patch -p1で当てたいパッチ" ]  }

Formula Cookbookにはなぜか書かれていなかったので、書き留めておきます。

5
5
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
5
5