[Python-checkins] r80305 - in python/branches/py3k-cdecimal: Lib/test/test_curses.py setup.py
stefan.krah
python-checkins at python.org
Wed Apr 21 14:18:38 CEST 2010
Author: stefan.krah
Date: Wed Apr 21 14:18:38 2010
New Revision: 80305
Log:
Test patch for #7384 on the buildbots. Will revert.
Modified:
python/branches/py3k-cdecimal/Lib/test/test_curses.py
python/branches/py3k-cdecimal/setup.py
Modified: python/branches/py3k-cdecimal/Lib/test/test_curses.py
==============================================================================
--- python/branches/py3k-cdecimal/Lib/test/test_curses.py (original)
+++ python/branches/py3k-cdecimal/Lib/test/test_curses.py Wed Apr 21 14:18:38 2010
@@ -23,11 +23,6 @@
curses = import_module('curses')
curses.panel = import_module('curses.panel')
-# skip all these tests on FreeBSD: test_curses currently hangs the
-# FreeBSD buildbots, preventing other tests from running. See issue
-# #7384.
-if 'freebsd' in sys.platform:
- raise unittest.SkipTest('The curses module is broken on FreeBSD. See http://bugs.python.org/issue7384.')
# XXX: if newterm was supported we could use it instead of initscr and not exit
term = os.environ.get('TERM')
Modified: python/branches/py3k-cdecimal/setup.py
==============================================================================
--- python/branches/py3k-cdecimal/setup.py (original)
+++ python/branches/py3k-cdecimal/setup.py Wed Apr 21 14:18:38 2010
@@ -491,6 +491,34 @@
# readline
do_readline = self.compiler_obj.find_library_file(lib_dirs, 'readline')
+ readline_curses_library = ""
+ curses_library = ""
+ # Determine if readline is already linked against curses:
+ if do_readline:
+ # Cannot use os.popen here in py3k.
+ tmpfile = os.path.join(self.build_temp, 'readline_curses_lib')
+ if not os.path.exists(self.build_temp):
+ os.makedirs(self.build_temp)
+ os.system("ldd %s > %s" % (do_readline, tmpfile))
+ fp = open(tmpfile)
+ for ln in fp:
+ if 'curses' in ln:
+ readline_curses_library = re.sub(
+ r'.*lib(n?cursesw?)\.so.*', r'\1', ln
+ ).rstrip()
+ break
+ fp.close()
+ os.unlink(tmpfile)
+ # Issue 7384: Use the same library for the readline and curses modules.
+ if readline_curses_library:
+ curses_library = readline_curses_library
+ elif self.compiler_obj.find_library_file(lib_dirs, 'ncursesw'):
+ curses_library = 'ncursesw'
+ elif self.compiler_obj.find_library_file(lib_dirs, 'ncurses'):
+ curses_library = 'ncurses'
+ elif self.compiler_obj.find_library_file(lib_dirs, 'curses'):
+ curses_library = 'curses'
+
if platform == 'darwin':
os_release = int(os.uname()[2].split('.')[0])
dep_target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
@@ -514,14 +542,10 @@
readline_extra_link_args = ()
readline_libs = ['readline']
- if self.compiler_obj.find_library_file(lib_dirs,
- 'ncursesw'):
- readline_libs.append('ncursesw')
- elif self.compiler_obj.find_library_file(lib_dirs,
- 'ncurses'):
- readline_libs.append('ncurses')
- elif self.compiler_obj.find_library_file(lib_dirs, 'curses'):
- readline_libs.append('curses')
+ if readline_curses_library:
+ pass # Issue 7384: already linked against curses
+ elif curses_library:
+ readline_libs.append(curses_library)
elif self.compiler_obj.find_library_file(lib_dirs +
['/usr/lib/termcap'],
'termcap'):
@@ -1010,19 +1034,15 @@
# Curses support, requiring the System V version of curses, often
# provided by the ncurses library.
panel_library = 'panel'
- if (self.compiler_obj.find_library_file(lib_dirs, 'ncursesw')):
- curses_libs = ['ncursesw']
- # Bug 1464056: If _curses.so links with ncursesw,
- # _curses_panel.so must link with panelw.
- panel_library = 'panelw'
- exts.append( Extension('_curses', ['_cursesmodule.c'],
- libraries = curses_libs) )
- elif (self.compiler_obj.find_library_file(lib_dirs, 'ncurses')):
- curses_libs = ['ncurses']
+ if curses_library.startswith('ncurses'):
+ if curses_library == 'ncursesw':
+ # Bug 1464056: If _curses.so links with ncursesw,
+ # _curses_panel.so must link with panelw.
+ panel_library = 'panelw'
+ curses_libs = [curses_library]
exts.append( Extension('_curses', ['_cursesmodule.c'],
libraries = curses_libs) )
- elif (self.compiler_obj.find_library_file(lib_dirs, 'curses')
- and platform != 'darwin'):
+ elif curses_library == 'curses' and platform != 'darwin':
# OSX has an old Berkeley curses, not good enough for
# the _curses module.
if (self.compiler_obj.find_library_file(lib_dirs, 'terminfo')):
More information about the Python-checkins
mailing list