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

Reply via email to