devel/php5-pcre (port directory error)の記事を書いてから早1年半以上たったところで思わぬ事態に遭遇。archiver/php5-zipのmake中に
/usr/local/include/php/ext/pcre/php_pcre.h:29:18: error: pcre.h: No such file or directory
/usr/local/include/pcre.h はあるので、よく見ると -I/usr/local/include が無いです。configure がおかしかったことになるので config.m4 と config.log を見ると、 PHP_PCRE_DIR に /usr/local が指定されるところまでは正常、その後
1 2 3 4 |
#include <main/php_config.h> #if defined(HAVE_PCRE) && !defined(COMPILE_DL_PCRE) yes #endif |
をプリプロセッサに渡して出来上がりに yes があるかという条件判定で PHP_PCRE_REGEX=no になってしまっています。php/main/php_config.h は php/ext/php_config.h を読み込み、さらに php/ext/pcre/config.h を読んでいます。そこには #define COMPILE_DL_PCRE 1 の行が。というわけで1年半前のports/UPDATING の指示は微妙に作業が足りていないようです。/usr/local/php/ext/php_config.h に、必要の無い行がある場合は削除します(pcre spl以外は実際に存在していたか特に確認していません)。
1 2 3 |
# cd /usr/local/include/php/ext # cp -p php_config.h php_config.h.prev # fgrep -v -e ext/pcre/ -e ext/spl/ -e ext/dbase/ -e ext/ncurses/ -e ext/ming/ -e ext/mhash/ php_config.h.prev > php_config.h |
間違いの無いようにファイルも
1 2 3 |
# /bin/sh # for p in pcre spl dbase ncurses ming mhash; do [ -f "$p/config.h" ] && mv -v "$p/config.h" "$p/config.h.prev"; done # exit |
とでもしてリネームしておきます。最後に
1 |
# portupgrade -fr lang/php5 |
あたりをしておけば安心です。ふぅ。/usr/ports/UPDATINGとしては1.5)を追加して
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
20100409: AFFECTS: users of lang/php5 AUTHOR: [email protected] As of PHP 5.3, a few extensions were removed from or included into the core PHP5 package. Follow the steps below to update your installation. 1) Delete the following packages (if installed): - php5-dbase - php5-ncurses - php5-pcre - php5-spl - php5-ming - php5-mhash Keep package names in the output of this commend, # pkg_info -R php5-dbase php5-ncurses php5-pcre php5-spl php5-ming php5-mhash Delete them, # pkg_deinstall -f php5-dbase php5-ncurses php5-pcre php5-spl php5-ming php5-mhash 1.5) Remove unused files (if installed): # cd PREFIX/include/php/ext # cp -p php_config.h php_config.h.prev # fgrep -v -e ext/pcre/ -e ext/spl/ -e ext/dbase/ -e ext/ncurses/ -e ext/ming/ -e ext/mhash/ php_config.h.prev > php_config.h # for p in pcre spl dbase ncurses ming mhash; do [ -f "$p/config.h" ] && mv -v "$p/config.h" "$p/config.h.prev"; done 2) Rebuild lang/php5 and all ports that depend on it. # portupgrade -fr lang/php5 # portupgrade -f [packaged names checked on step 1)] |
とでもなりましょうか。