diff options
-rw-r--r-- | Misc/NEWS.d/next/Build/2019-03-06-18-55-10.bpo-36210.fup9H2.rst | 9 | ||||
-rw-r--r-- | setup.py | 25 |
2 files changed, 26 insertions, 8 deletions
diff --git a/Misc/NEWS.d/next/Build/2019-03-06-18-55-10.bpo-36210.fup9H2.rst b/Misc/NEWS.d/next/Build/2019-03-06-18-55-10.bpo-36210.fup9H2.rst new file mode 100644 index 0000000..aa9a56f --- /dev/null +++ b/Misc/NEWS.d/next/Build/2019-03-06-18-55-10.bpo-36210.fup9H2.rst @@ -0,0 +1,9 @@ +Update optional extension module detection for AIX. +ossaudiodev and spwd are not applicable for AIX, and +are no longer reported as missing. +3rd-party packaging of ncurses (with ASIS support) +conflicts with officially supported AIX curses library, +so configure AIX to use libcurses.a. However, skip +trying to build _curses_panel. + +patch by M Felt @@ -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: |