From: Ned Deily Date: Thu, 21 Jun 2012 06:47:14 +0000 (-0700) Subject: Issue #14225: Fix Unicode support for curses (#12567) on OS X: X-Git-Tag: v3.3.0b1~177 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=69192238ba5375c47ffa4b43726b117bcb31db9f;p=python 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 --- diff --git a/Misc/NEWS b/Misc/NEWS index c919c699b9..211599d55f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -165,6 +165,8 @@ Tests 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 index 31037520c8..538cf5840b 100644 --- a/setup.py +++ b/setup.py @@ -1185,6 +1185,18 @@ class PyBuildExt(build_ext): # 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 @@ class PyBuildExt(build_ext): 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')