summaryrefslogtreecommitdiffstats
path: root/setup.py
diff options
context:
space:
mode:
authorMichael Felt <aixtools@users.noreply.github.com>2019-06-21 13:58:00 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2019-06-21 13:58:00 (GMT)
commit08970cb03c61f62f4f69e7769d0075fa66bb86aa (patch)
treed21eace1d1ccc427519a8b1eb9722bb81228317b /setup.py
parentd0068000b266e9b7b0178e3d0640cceda5f3c7fb (diff)
downloadcpython-08970cb03c61f62f4f69e7769d0075fa66bb86aa.zip
cpython-08970cb03c61f62f4f69e7769d0075fa66bb86aa.tar.gz
cpython-08970cb03c61f62f4f69e7769d0075fa66bb86aa.tar.bz2
bpo-36210: update optional extension handling for AIX (GH-12202)
* Switch to officially supported curses from 3rd-party ASIS supported ncurses * stop saying optional modules osaudiodev and spwd are missing on AIX Patch by M.Felt
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/setup.py b/setup.py
index 598f581..86e9816 100644
--- a/setup.py
+++ b/setup.py
@@ -43,6 +43,7 @@ HOST_PLATFORM = get_platform()
MS_WINDOWS = (HOST_PLATFORM == 'win32')
CYGWIN = (HOST_PLATFORM == 'cygwin')
MACOS = (HOST_PLATFORM == 'darwin')
+AIX = (HOST_PLATFORM.startswith('aix'))
VXWORKS = ('vxworks' in HOST_PLATFORM)
@@ -805,7 +806,9 @@ class PyBuildExt(build_ext):
if (self.config_h_vars.get('HAVE_GETSPNAM', False) or
self.config_h_vars.get('HAVE_GETSPENT', False)):
self.add(Extension('spwd', ['spwdmodule.c']))
- else:
+ # AIX has shadow passwords, but access is not via getspent(), etc.
+ # module support is not expected so it not 'missing'
+ elif not AIX:
self.missing.append('spwd')
# select(2); not on ancient System V
@@ -909,6 +912,10 @@ class PyBuildExt(build_ext):
curses_library = readline_termcap_library
elif self.compiler.find_library_file(self.lib_dirs, 'ncursesw'):
curses_library = 'ncursesw'
+ # Issue 36210: OSS provided ncurses does not link on AIX
+ # Use IBM supplied 'curses' for successful build of _curses
+ elif AIX and self.compiler.find_library_file(self.lib_dirs, 'curses'):
+ curses_library = 'curses'
elif self.compiler.find_library_file(self.lib_dirs, 'ncurses'):
curses_library = 'ncurses'
elif self.compiler.find_library_file(self.lib_dirs, 'curses'):
@@ -1004,13 +1011,15 @@ class PyBuildExt(build_ext):
self.missing.append('_curses')
# If the curses module is enabled, check for the panel module
- if (curses_enabled and
- self.compiler.find_library_file(self.lib_dirs, panel_library)):
+ # _curses_panel needs some form of ncurses
+ skip_curses_panel = True if AIX else False
+ if (curses_enabled and not skip_curses_panel and
+ self.compiler.find_library_file(self.lib_dirs, panel_library)):
self.add(Extension('_curses_panel', ['_curses_panel.c'],
- include_dirs=curses_includes,
- define_macros=curses_defines,
- libraries=[panel_library, *curses_libs]))
- else:
+ include_dirs=curses_includes,
+ define_macros=curses_defines,
+ libraries=[panel_library, *curses_libs]))
+ elif not skip_curses_panel:
self.missing.append('_curses_panel')
def detect_crypt(self):
@@ -1463,7 +1472,7 @@ class PyBuildExt(build_ext):
# Platform-specific libraries
if HOST_PLATFORM.startswith(('linux', 'freebsd', 'gnukfreebsd')):
self.add(Extension('ossaudiodev', ['ossaudiodev.c']))
- else:
+ elif not AIX:
self.missing.append('ossaudiodev')
if MACOS: