Issue 1204: readline configuration for shared libs w/o curses dependencies (original) (raw)

Created on 2007-09-25 19:34 by mbeachy, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
full.patch mbeachy,2007-09-25 19:34
python-release25-readline.patch rpetrov,2008-08-27 18:53
configure-readline-libs-64bit.patch gregory.p.smith,2008-09-07 00:27
Messages (13)
msg56140 - (view) Author: Mike Beachy (mbeachy) Date: 2007-09-25 19:34
For RHEL 3 (and it also appears RHEL 4 and 5) the libreadline shared lib has no specified lib requirement that satisfies the tgetent and related symbols. (These symbols are provided by ncursesw, ncurses, curses, termcap as noted in the python setup.py.) The configure script does not add these required libs in for the readline tests, and so the autoconf tests will fail and it will incorrectly determine that readline is not present (and so not define HAVE_RL_COMPLETION_MATCHES etc.) I guess this generally does not prevent the readline module from being compiled since setup.py does its own search for readline and adds in the needed curses library. It does prevent proper declaration of the completion_matches function, however. On 32 bit systems this doesn't matter but on 64 bit ones it does as the undeclared (but present in libreadline) completion_matches returns a char **. The fix checked in with r54874 after the 2.5.1 release (issue 1703270) to Modules/readline.c fixes the problem for completion_matches specifically, but the problem of incorrect determination of readline presence still exists. Attached is a patch to fix the problem: it adds the necessary additional library to the temporary LIBS definition in the readline tests, using the same order of curses libs specified in setup.py. (The patch includes the changes for the configure script in addition to configure.in.)
msg60188 - (view) Author: Mike Beachy (mbeachy) Date: 2008-01-19 16:25
Urgh. Re-reading this, I could barely understand what the hell I was saying. The problem: 64 bit compiles will dump core when readline is used if they don't properly identify the presence of readline and use the system headers. The solution: fix autoconf to properly recognize when readline is present by providing configure's readline test program with all necessary prerequisites. caveat: The fix for issue 1703270 (already checked in post-2.5.1) works around this by hard coding the completion_matches prototype in Modules/readline.c, but the autoconf fix seems better long term.
msg62807 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2008-02-23 20:28
The patch looks reasonable. I'll commit it on Monday when I'm on a machine with a more up-to-date autoconf.
msg72039 - (view) Author: Roumen Petrov (rpetrov) * Date: 2008-08-27 18:53
In the configure{.in} exist another bug: -------------- AC_CHECK_LIB(readline, readline) if test "$ac_cv_have_readline_readline" = no then AC_CHECK_LIB(termcap, readline) fi -------------- but "grep _readline_readline configure" show that variable in use is $ac_cv_lib_readline_readline, so the check for function termcap in readline can be removed safely - it is never reached. I would like to propose another patch that don't use possible unresolved symbol to detect presence of library. The new patch will define HAVE_LIBREADLINE. If necessary will check for dependent library and link it in correct order. The script print messages like next: ------ checking how to link readline libs... -lreadline -lncursesw checking for rl_callback_handler_install in -lreadline... yes checking for rl_pre_input_hook in -lreadline... yes checking for rl_completion_matches in -lreadline... yes ------ The patch is for branch release25-maint. It is without changes in configure script, i.e autoconf has to run to recreate it after applying. The patch can be applied to trunk as well.
msg72712 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-09-06 21:59
when committing this one, the platform specific openbsd/amd64 fix I committed for this in issue 3645 should probably be verified as unneeded and undone. marking as release blocker as we should make sure this autoconf update goes in before the 2.6/3.0 release. compiling for 64bit with readline should work out of the box withing requiring patches on the most common OSes. I'm verifying rpetrov's patch in my centos4 VM now...
msg72723 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-09-07 00:27
I've attached an updated patch. Not much changed other than the better diff -u format, a couple grammar errors in comments and inclusion of the new autoconf generated configure script. It works fine for me on ubuntu hardy 32bit, CentOS 5.x x86_64, MacOS X 10.5 32-bit and 64-bit. Could someone confirm on a platform where linking with 64bit readline was broken before that this fixes it. I added Henry Precheur to the nosy list as he should be able to confirm on OpenBSD/amd64. Lowering this to deferred blocker as it need not hold up -rc1 so long as we get it in before -rc2.
msg72728 - (view) Author: Henry Precheur (henry.precheur) Date: 2008-09-07 01:36
According to config.log the readline functions are correctly detected. I tested the patch with Python 2.5 & 2.6 and both work with the test I posted on issue 3645.
msg72733 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-09-07 05:18
fixed in trunk r66283 (followed by rerunning autoconf to generate a new configure script in r66284).
msg72734 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-09-07 06:44
merged into py3k branch in r66285. backported to release25-maint in r66288 and r66289.
msg72744 - (view) Author: Roumen Petrov (rpetrov) * Date: 2008-09-07 17:28
I realize too late that in my patch line "if test pycvlibreadline=!yes;then"isnotcorrect.:(Ithastobe"iftestpy_cv_lib_readline = !yes; then" is not correct. :( It has to be "if test pycvlibreadline=!yes;then"isnotcorrect.:(Ithastobe"iftestpy_cv_lib_readline = no; then", i.e. s/!yes/no/'.
msg72746 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-09-07 18:39
eek. not quite fixed then :) i'll retest and take care of it.
msg72747 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-09-07 19:20
fixed in trunk r66295/r66296. merging and backporting now...
msg72748 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2008-09-07 19:26
merged to py3k r66297 + r66298 backported to release25-maint r66299 + r66300.
History
Date User Action Args
2022-04-11 14:56:27 admin set github: 45545
2010-11-22 23:59:52 eric.araujo link issue1676121 superseder
2008-09-07 19:26:45 gregory.p.smith set status: open -> closedresolution: fixedmessages: +
2008-09-07 19:20:08 gregory.p.smith set messages: + versions: + Python 3.0
2008-09-07 18:39:33 gregory.p.smith set status: closed -> openresolution: accepted -> (no value)messages: +
2008-09-07 17:28:27 rpetrov set messages: +
2008-09-07 06:44:41 gregory.p.smith set status: open -> closedresolution: acceptedmessages: + versions: - Python 3.0
2008-09-07 05🔞15 gregory.p.smith set keywords: - needs reviewmessages: + versions: - Python 2.6
2008-09-07 01:36:13 henry.precheur set messages: +
2008-09-07 00:27:51 gregory.p.smith set files: + configure-readline-libs-64bit.patchversions: + Python 3.0nosy: + henry.precheurmessages: + priority: release blocker -> deferred blockerkeywords: + needs review
2008-09-06 21:59:37 gregory.p.smith set priority: normal -> release blockerassignee: akuchling -> gregory.p.smithmessages: + nosy: + gregory.p.smith
2008-08-27 18:53:31 rpetrov set files: + python-release25-readline.patchnosy: + rpetrovmessages: +
2008-02-23 20:28:14 akuchling set keywords: + 64bitmessages: +
2008-02-23 20:27:24 akuchling set assignee: akuchlingnosy: + akuchling
2008-01-19 16:43:44 christian.heimes set priority: normalcomponents: + Buildversions: + Python 2.6
2008-01-19 16:25:26 mbeachy set messages: +
2007-09-26 03:09:28 loewis set keywords: + patch
2007-09-25 19:34:08 mbeachy create