phpenv/phpenv

2013年8月27日頃に書いたメモです!

パッチをあてたい

  • phpenv-install で patch_roulette 関数があり、これでやってる
  • パッチを置くディレクトリは、$PHPENV_ROOT/patches/php-$RELESE_VERSION.$(uname) となっている
  • linux で 5.4.19 をインストールするのであれば、php-5.4.Linux になるはず
  • なので、そのディレクトリにパッチ作って入れておいたら適用されるっぽい

メモ

  • ビルド時の出力は /tmp 以下に吐き出されるのでそれを tail しておくと進んでいるのかどうかがわかりやすい
  • エラーログは、同じく /tmp 以下に吐き出される
  • configure に渡されるオプションは、$PHPENV_ROOT/etc 以下のファイルに書かれている
  • phpenv install でやっていることは、$PHPENV_ROOT/libexec/phpenv-install に書かれていて、シェルスクリプトとなっている
  • configure 時に bison のバージョンチェックで落とされる場合は、$PHPENV_ROOT/php-src/Zend/acinclude.m4 を書きかえればよい
  • ちなみに Gentoo では次のようになっていたらしい https://twitter.com/pecosantoyobe/statuses/338627382732804097
  • pre-buildconf、pre-configure、post-configure というフックポイントがあるが、うまく動作しないようになっている
  • 処理がコメントアウトされている
  • $PHPENV_ROOT/libexec/phpenv-hooks を参照
  • php.ini の生成がどうなっているのか
  • configure に渡すオプション

関係のないメモ

  • pear -> pyrus -> composer
  • pyrus は、 pear 後継のパッケージ管理システム
  • pyrus は、ライブラリをシステムではなくローカルに入れるときに重宝するっぽい
  • 例えば、ホームディレクトリ以下に入れたい場合やプロジェクトの vendor に入れたい場合
  • プロジェクトの vendor に入れたい場合、今であれば composer が良い

autoconf

  • configure スクリプトを自動生成してくれるツール
  • ちなみに configure は、Makefile を自動生成してくれるもの
  • なので、./configure && make && make install をとかいう簡単呪文でビルドができる

なんで、PHPのビルドは buildconf で configure を作成させるのか。他のものだったら大概、configure あるくね。

buildconf は何をしているのか。configure の生成をしているのはわかるけど、何で configure を生成させているのか。

automake

  • Makefile.am から Makefile.in を自動生成する

https://speakerdeck.com/yandod/8-php