HomebrewのFormulaで定義する関数patches
の戻り値は、そのままFormulaで使用するパッチのURL一覧として使われます。
戻り値がリストの場合は、すべてpatch -p1
の入力として処理されます。では、patch
コマンドの-p
オプションの引数、つまりpatch
のstrip
値(?)を変更したい場合はどうすればいいのでしょう。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にはなぜか書かれていなかったので、書き留めておきます。