[Python-checkins] cpython: Issue #14225: Fix Unicode support for curses (#12567) on OS X:

ned.deily python-checkins at python.org
Thu Jun 21 08:48:38 CEST 2012


http://hg.python.org/cpython/rev/2035c5ad4239
changeset:   77529:2035c5ad4239
user:        Ned Deily <nad at acm.org>
date:        Wed Jun 20 23:47:14 2012 -0700
summary:
  Issue #14225: Fix Unicode support for curses (#12567) on OS X:
    1. on OS X, there is no separate /usr/lib/libcursesw nor libpanelw
    2. _XOPEN_SOURCE_EXTENDED must be enabled for _curses build

files:
  Misc/NEWS |   2 ++
  setup.py  |  13 +++++++++++++
  2 files changed, 15 insertions(+), 0 deletions(-)


diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -165,6 +165,8 @@
 Build
 -----
 
+- Issue #14225: Fix Unicode support for curses (#12567) on OS X
+
 - Issue #14928: Fix importlib bootstrap issues by using a custom executable
   (Modules/_freeze_importlib) to build Python/importlib.h.
 
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -1185,6 +1185,18 @@
             # Bug 1464056: If _curses.so links with ncursesw,
             # _curses_panel.so must link with panelw.
             panel_library = 'panelw'
+            if platform == 'darwin':
+                # On OS X, there is no separate /usr/lib/libncursesw nor
+                # libpanelw.  If we are here, we found a locally-supplied
+                # version of libncursesw.  There should be also be a
+                # libpanelw.  _XOPEN_SOURCE defines are usually excluded
+                # for OS X but we need _XOPEN_SOURCE_EXTENDED here for
+                # ncurses wide char support
+                curses_defines.append(('_XOPEN_SOURCE_EXTENDED', '1'))
+        elif platform == 'darwin' and curses_library == 'ncurses':
+            # Building with the system-suppied combined libncurses/libpanel
+            curses_defines.append(('HAVE_NCURSESW', '1'))
+            curses_defines.append(('_XOPEN_SOURCE_EXTENDED', '1'))
 
         if curses_library.startswith('ncurses'):
             curses_libs = [curses_library]
@@ -1213,6 +1225,7 @@
             self.compiler.find_library_file(lib_dirs, panel_library)):
             exts.append( Extension('_curses_panel', ['_curses_panel.c'],
                                    include_dirs=curses_includes,
+                                   define_macros=curses_defines,
                                    libraries = [panel_library] + curses_libs) )
         else:
             missing.append('_curses_panel')

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list