#48608 [Fbk->Opn]: Too-old version of libreadline is not detected during ./configure
| From: | shahar dot e at zend dot com | Date: | Mon, 03 Aug 2009 14:39:30 +0000 |
| Subject: | #48608 [Fbk->Opn]: Too-old version of libreadline is not detected during ./configure | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-140600@lists.php.net to get a copy of this message | ||
ID: 48608
User updated by: shahar dot e at zend dot com
Reported By: shahar dot e at zend dot com
-Status: Feedback
+Status: Open
Bug Type: Readline related
Operating System: Mac OS X 10.5
PHP Version: 5.3CVS-2009-06-19 (snap)
Assigned To: jani
New Comment:
From what I've seen there's a bunch of missing symbols - since I
assumed it's a version issue I added a check for just one, but given
what we know now, it might be wiser to check for more stuff.
'make' complains about these symbols: 'rl_mark', 'rl_done',
'rl_pending_input'
Previous Comments:
------------------------------------------------------------------------
[2009-08-03 13:10:19] jani@php.net
How nice of Apple. Why don't they use libedit? :)
Is the missing rl_pending_input symbol really the only difference?
------------------------------------------------------------------------
[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] jani@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