PHP拡張を追加でいれるのは少々めんどくさかった
phpenv および php-build で、PHP拡張を同時に入れようとすると、今までは次のような手順をふまないといけませんでした。
-
php-build/share/php-build/extension/definition
に行を追加してビルド方法を指定する - 環境変数
PHP_BUILD_INSTALL_EXTENSION
で拡張名とバージョンを指定する
php-build/share/php-build/extension/definition
はこんなファイルです。
"name","url-dist","url_source","source_cwd","configure_args","extension_type","after_install"
"apc","http://pecl.php.net/get/APC-$version.tgz","git@git.php.net:/pecl/caching/apc.git",,"--enable-apc","extension",
"apcu","http://pecl.php.net/get/apcu-$version.tgz","https://github.com/krakjoe/apcu.git",,,"extension",
"igbinary","http://pecl.php.net/get/igbinary-$version.tgz","https://github.com/igbinary/igbinary.git",,,"extension",
"imagick","http://pecl.php.net/get/imagick-$version.tgz","https://github.com/mkoppanen/imagick.git",,,"extension",
"memcache","http://pecl.php.net/get/memcache-$version.tgz","git@git.php.net:/pecl/caching/memcache.git",,,"extension",
"memcached","http://pecl.php.net/get/memcached-$version.tgz","https://github.com/php-memcached-dev/php-memcached.git",,"--disable-memcached-sasl","extension",
"uprofiler",,"https://github.com/FriendsOfPHP/uprofiler.git","extension",,"extension","uprofiler_after_install"
"xcache","http://xcache.lighttpd.net/pub/Releases/$version/xcache-$version.tar.gz",,,"--enable-xcache","extension",
"xdebug","http://xdebug.org/files/xdebug-$version.tgz","git://github.com/xdebug/xdebug.git",,"--enable-xdebug","zend_extension","xdebug_after_install"
"xhprof","http://pecl.php.net/get/xhprof-$version.tgz","git://github.com/facebook/xhprof.git",,,"extension","xhprof_after_install"
"zendopcache","http://pecl.php.net/get/zendopcache-$version.tgz","https://github.com/zendtech/ZendOptimizerPlus.git",,"--enable-opcache","zend_extension","zendopcache_after_install"
phpbrew だとバリアントを指定すれば拡張を簡単に追加できるのに比べると少々めんどくさかったんですよね。
柔軟性があがる pull-req が取り込まれた!
この状況が今回取り込まれた pull-req で少し柔軟性が上がりました。
これ、修正内容を見ただけではなにが良くなったか分かりづらいですが、次のようなことが可能になりました。
- PECL( https://pecl.php.net/ )で普通に配布されている拡張であれば、
php-build/share/php-build/extension/definition
に行を指定しなくても、環境変数PHP_BUILD_INSTALL_EXTENSION
に指定すれば良くなった
例えば、PECLで配布されているyaml拡張とredis拡張を同時にbuildしたければ次のように環境変数を指定すれば良くなります。
export PHP_BUILD_INSTALL_EXTENSION="yaml=2.0.4 redis=5.0.2"
指定方法は、拡張名とバージョンを =
でつなぎ、複数指定する場合は空白で区切っていけばOKです。
この環境変数が設定されている状態で、phpenvやphp-buildでインストールすれば、ついでに拡張がはいるということになります。
これでPECLで配布されている標準的な拡張であれば同時にビルドしやすくなる(もちろんそのためにいろいろ xxx-dev みたいなものを入れとかないといけないですが)ので、だいぶ楽になりますね。