classification
Title: nis module fails to build against glibc-2.26
Type: compile error Stage:
Components: Build Versions:
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: benjamin.peterson, floppymaster
Priority: normal Keywords:

Created on 2017-11-11 17:06 by floppymaster, last changed 2017-11-13 05:06 by benjamin.peterson.

Messages (2)
msg306090 - (view) Author: Mike Gilbert (floppymaster) * Date: 2017-11-11 17:06
The nis extension module fails to build against glibc-2.26 with the "obsolete-rpc" option disabled.

Downstream bug report: https://bugs.gentoo.org/631488

glibc-2.26 release notes: https://sourceware.org/ml/libc-alpha/2017-08/msg00010.html

The nis module is normally skipped since rpcsvc/yp_prot.h will not exist. However, if the external "libnsl" package is installed, compilation is attempted and fails as given below.

building 'nis' extension
x86_64-pc-linux-gnu-gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -march=native -O2 -pipe -g -fwrapv -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I./Include -I. -I/var/tmp/portage/dev-lang/python-3.6.3/work/Python-3.6.3/Include -I/var/tmp/portage/dev-lang/python-3.6.3/work/Python-3.6.3 -c /var/tmp/portage/dev-lang/python-3.6.3/work/Python-3.6.3/Modules/nismodule.c -o build/temp.linux-x86_64-3.6/var/tmp/portage/dev-lang/python-3.6.3/work/Python-3.6.3/Modules/nismodule.o
/var/tmp/portage/dev-lang/python-3.6.3/work/Python-3.6.3/Modules/nismodule.c:17:21: fatal error: rpc/rpc.h: No such file or directory
 #include <rpc/rpc.h>
                     ^
compilation terminated.

To summarize:

glibc no longer provides rpc/rpc.h or rpcsvc/yp_prot.h. One must install a couple of external libraries to provide the same functionality.

The missing rpcsvc/yp_prot.h file can be resolved by installing the "libnsl" package, which installs the header where setup.py expects to find it.

The missing rpc/rpc.h file may be provided by the "libtirpc" package, but this installs the file under /usr/include/tirpc, which must be added to the include path (-I/usr/include/tirpc).

Ideally, pkg-config would be used to find both libnsl and libtirpc.
msg306138 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2017-11-13 05:06
Rather than investing any effort in nis, we should probably just deprecate and eventually remove it.

(If glibc is actually getting rid of something, you know must be very very deprecated.)
History
Date User Action Args
2017-11-13 05:06:34benjamin.petersonsetnosy: + benjamin.peterson
messages: + msg306138
2017-11-11 17:06:23floppymastercreate