ID: 48608 Updated by: j...@php.net Reported By: shahar dot e at zend dot com -Status: Open +Status: Feedback Bug Type: Readline related Operating System: Mac OS X 10.5 PHP Version: 5.3CVS-2009-06-19 (snap) Assigned To: jani New Comment:
How nice of Apple. Why don't they use libedit? :) Is the missing rl_pending_input symbol really the only difference? Previous Comments: ------------------------------------------------------------------------ [2009-08-03 13:04:12] shahar dot e at zend dot com Thanks for looking into this. I am not entirely sure how to check this, but looking at an include/readline/readline.h that works, I see: #define RL_READLINE_VERSION 0x0600 /* Readline 6.0 */ While on the one that doesn't work, I see: #define RL_READLINE_VERSION 0x0402 So I'm assuming that's readline 4.02 and not 4.2 as I thought before. Then again, according to this discussion: http://discussions.apple.com/message.jspa?messageID=7387944 - it seems that libreadline provided with OS X 10.5 is not really libreadline, but just a not-fully compatible wrapper. If this is true, it is probably a good idea to check for those symbols anyway to avoid this problem on Mac OS X (but perhaps change the error message I added in my patch). Shahar. ------------------------------------------------------------------------ [2009-08-03 11:04:02] j...@php.net Exactly what readline version is it? I tested with 4.2 and it compiles just fine. ------------------------------------------------------------------------ [2009-06-19 17:09:20] shahar dot e at zend dot com I used this patch to fix it, perhaps there is a better way (like checking a minimum version): --- ext/readline/config.m4.orig 2009-06-19 19:50:29.000000000 +0300 +++ ext/readline/config.m4 2009-06-19 19:47:51.000000000 +0300 -43,6 +43,12 @@ -L$READLINE_DIR/$PHP_LIBDIR $PHP_READLINE_LIBS ]) + dnl Check that libreadline has rl_pending_input defined + PHP_CHECK_LIBRARY(readline, rl_pending_input, + [], [ + AC_MSG_ERROR(readline library is missing some symbols and is probably too old) + ], []) + PHP_CHECK_LIBRARY(readline, rl_callback_read_char, [ AC_DEFINE(HAVE_RL_CALLBACK_READ_CHAR, 1, [ ]) ------------------------------------------------------------------------ [2009-06-19 17:07:15] shahar dot e at zend dot com Description: ------------ The default libreadline version that comes with OS X is too old and seems to be missing symbols like rl_mark, rl_pending_input, rl_history_list, rl_on_new_line. This is not detected by ./configure I am not sure what the minimum requirement is, but adding a check for rl_pending_input in the config.m4 file fixed the problem for me (or more correctly, I got proper detection by ./configure). Reproduce code: --------------- ./configure --with-readline on a default Mac OS X setup (I think it's 4.2) Expected result: ---------------- Configure to report a too old version of libreadline Actual result: -------------- Configure works, linking ext/readline fails due to missing symbols. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48608&edit=1