6ff303ee10
The headers required to build the nis module were removed from glibc and they are now provided by the libtirpc and libnsl2 packages, thus adding their respective -devel subpackages as BuildRequires and the upstream fix to search for the headers and the shared libraries at the appropriate locations.
84 lines
3.0 KiB
Diff
84 lines
3.0 KiB
Diff
diff --git a/setup.py b/setup.py
|
|
index 3eb6ad1..3437e48 100644
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -1331,20 +1331,14 @@ class PyBuildExt(build_ext):
|
|
exts.append( Extension('termios', ['termios.c']) )
|
|
# Jeremy Hylton's rlimit interface
|
|
exts.append( Extension('resource', ['resource.c']) )
|
|
+ else:
|
|
+ missing.extend(['resource', 'termios'])
|
|
|
|
- # Sun yellow pages. Some systems have the functions in libc.
|
|
- if (host_platform not in ['cygwin', 'qnx6'] and
|
|
- find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
|
|
- if (self.compiler.find_library_file(lib_dirs, 'nsl')):
|
|
- libs = ['nsl']
|
|
- else:
|
|
- libs = []
|
|
- exts.append( Extension('nis', ['nismodule.c'],
|
|
- libraries = libs) )
|
|
- else:
|
|
- missing.append('nis')
|
|
+ nis = self._detect_nis(inc_dirs, lib_dirs)
|
|
+ if nis is not None:
|
|
+ exts.append(nis)
|
|
else:
|
|
- missing.extend(['nis', 'resource', 'termios'])
|
|
+ missing.append('nis')
|
|
|
|
# Curses support, requiring the System V version of curses, often
|
|
# provided by the ncurses library.
|
|
@@ -2179,6 +2173,51 @@ class PyBuildExt(build_ext):
|
|
)
|
|
return ext
|
|
|
|
+ def _detect_nis(self, inc_dirs, lib_dirs):
|
|
+ if host_platform in {'win32', 'cygwin', 'qnx6'}:
|
|
+ return None
|
|
+
|
|
+ libs = []
|
|
+ library_dirs = []
|
|
+ includes_dirs = []
|
|
+
|
|
+ # Latest glibc has moved Sun RPC headers into tircp and nsl sub
|
|
+ # directories. rpc code has been moved to libtirpc.
|
|
+ rpcsvc_inc = find_file(
|
|
+ 'rpcsvc/yp_prot.h', inc_dirs,
|
|
+ ['/usr/local/include/nsl', '/usr/include/nsl']
|
|
+ )
|
|
+ rpc_inc = find_file(
|
|
+ 'rpc/rpc.h', inc_dirs,
|
|
+ ['/usr/local/include/tirpc', '/usr/include/tirpc']
|
|
+ )
|
|
+ if rpcsvc_inc is None or rpc_inc is None:
|
|
+ # not found
|
|
+ return None
|
|
+ includes_dirs.extend(rpcsvc_inc)
|
|
+ includes_dirs.extend(rpc_inc)
|
|
+
|
|
+ if self.compiler.find_library_file(lib_dirs, 'nsl'):
|
|
+ libs.append('nsl')
|
|
+ else:
|
|
+ # libnsl-devel: check for libnsl in nsl/ subdirectory
|
|
+ nsl_dirs = [os.path.join(lib_dir, 'nsl') for lib_dir in lib_dirs]
|
|
+ libnsl = self.compiler.find_library_file(nsl_dirs, 'nsl')
|
|
+ if libnsl is not None:
|
|
+ library_dirs.append(os.path.dirname(libnsl))
|
|
+ libs.append('nsl')
|
|
+
|
|
+ if self.compiler.find_library_file(lib_dirs, 'tirpc'):
|
|
+ libs.append('tirpc')
|
|
+
|
|
+ return Extension(
|
|
+ 'nis', ['nismodule.c'],
|
|
+ libraries=libs,
|
|
+ library_dirs=library_dirs,
|
|
+ include_dirs=includes_dirs
|
|
+ )
|
|
+
|
|
+
|
|
class PyBuildInstall(install):
|
|
# Suppress the warning about installation into the lib_dynload
|
|
# directory, which is not in sys.path when running Python during
|