Skip to content

Commit c6dec7e

Browse files
authored
bpo-45847: Port nis module to PY_STDLIB_MOD (GH-29699)
1 parent 7fd92a8 commit c6dec7e

File tree

5 files changed

+350
-44
lines changed

5 files changed

+350
-44
lines changed

Modules/Setup.stdlib.in

+4-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
@MODULE__QUEUE_TRUE@_queue _queuemodule.c
4141
@MODULE__RANDOM_TRUE@_random _randommodule.c
4242
@MODULE__TYPING_TRUE@_typing _typingmodule.c
43-
@MODULE__XXSUBINTERPRETERS_TRUE@_xxsubinterpreters __xxsubinterpretersmodule.c
43+
@MODULE__XXSUBINTERPRETERS_TRUE@_xxsubinterpreters _xxsubinterpretersmodule.c
4444
@MODULE__ZONEINFO_TRUE@_zoneinfo _zoneinfo.c
4545

4646
# needs libm
@@ -98,6 +98,9 @@
9898
@MODULE_FCNTL_TRUE@fcntl fcntlmodule.c
9999
@MODULE_GRP_TRUE@grp grpmodule.c
100100
@MODULE_MMAP_TRUE@mmap mmapmodule.c
101+
# FreeBSD: nis/yp APIs are in libc
102+
# Linux: glibc has deprecated SUN RPC, APIs are in libnsl and libtirpc (bpo-32521)
103+
@MODULE_NIS_TRUE@nis nismodule.c
101104
# needs sys/soundcard.h or linux/soundcard.h (Linux, FreeBSD)
102105
@MODULE_OSSAUDIODEV_TRUE@ossaudiodev ossaudiodev.c
103106
@MODULE_RESOURCE_TRUE@resource resource.c

configure

+317
Original file line numberDiff line numberDiff line change
@@ -648,6 +648,8 @@ MODULE_ZLIB_FALSE
648648
MODULE_ZLIB_TRUE
649649
MODULE__SQLITE3_FALSE
650650
MODULE__SQLITE3_TRUE
651+
MODULE_NIS_FALSE
652+
MODULE_NIS_TRUE
651653
MODULE__DECIMAL_FALSE
652654
MODULE__DECIMAL_TRUE
653655
MODULE__BLAKE2_FALSE
@@ -787,6 +789,8 @@ TCLTK_LIBS
787789
TCLTK_INCLUDES
788790
LIBSQLITE3_LIBS
789791
LIBSQLITE3_CFLAGS
792+
LIBNSL_LIBS
793+
LIBNSL_CFLAGS
790794
LIBMPDEC_INTERNAL
791795
LIBMPDEC_LDFLAGS
792796
LIBMPDEC_CFLAGS
@@ -1014,6 +1018,8 @@ LIBS
10141018
CPPFLAGS
10151019
CPP
10161020
PROFILE_TASK
1021+
LIBNSL_CFLAGS
1022+
LIBNSL_LIBS
10171023
LIBSQLITE3_CFLAGS
10181024
LIBSQLITE3_LIBS
10191025
ZLIB_CFLAGS
@@ -1795,6 +1801,9 @@ Some influential environment variables:
17951801
CPP C preprocessor
17961802
PROFILE_TASK
17971803
Python args for PGO generation task
1804+
LIBNSL_CFLAGS
1805+
C compiler flags for LIBNSL, overriding pkg-config
1806+
LIBNSL_LIBS linker flags for LIBNSL, overriding pkg-config
17981807
LIBSQLITE3_CFLAGS
17991808
C compiler flags for LIBSQLITE3, overriding pkg-config
18001809
LIBSQLITE3_LIBS
@@ -11071,6 +11080,274 @@ if test "$have_glibc_memmove_bug" = yes; then
1107111080
fi
1107211081

1107311082

11083+
11084+
pkg_failed=no
11085+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNSL" >&5
11086+
$as_echo_n "checking for LIBNSL... " >&6; }
11087+
11088+
if test -n "$LIBNSL_CFLAGS"; then
11089+
pkg_cv_LIBNSL_CFLAGS="$LIBNSL_CFLAGS"
11090+
elif test -n "$PKG_CONFIG"; then
11091+
if test -n "$PKG_CONFIG" && \
11092+
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5
11093+
($PKG_CONFIG --exists --print-errors "libnsl") 2>&5
11094+
ac_status=$?
11095+
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
11096+
test $ac_status = 0; }; then
11097+
pkg_cv_LIBNSL_CFLAGS=`$PKG_CONFIG --cflags "libnsl" 2>/dev/null`
11098+
test "x$?" != "x0" && pkg_failed=yes
11099+
else
11100+
pkg_failed=yes
11101+
fi
11102+
else
11103+
pkg_failed=untried
11104+
fi
11105+
if test -n "$LIBNSL_LIBS"; then
11106+
pkg_cv_LIBNSL_LIBS="$LIBNSL_LIBS"
11107+
elif test -n "$PKG_CONFIG"; then
11108+
if test -n "$PKG_CONFIG" && \
11109+
{ { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnsl\""; } >&5
11110+
($PKG_CONFIG --exists --print-errors "libnsl") 2>&5
11111+
ac_status=$?
11112+
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
11113+
test $ac_status = 0; }; then
11114+
pkg_cv_LIBNSL_LIBS=`$PKG_CONFIG --libs "libnsl" 2>/dev/null`
11115+
test "x$?" != "x0" && pkg_failed=yes
11116+
else
11117+
pkg_failed=yes
11118+
fi
11119+
else
11120+
pkg_failed=untried
11121+
fi
11122+
11123+
11124+
11125+
if test $pkg_failed = yes; then
11126+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11127+
$as_echo "no" >&6; }
11128+
11129+
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
11130+
_pkg_short_errors_supported=yes
11131+
else
11132+
_pkg_short_errors_supported=no
11133+
fi
11134+
if test $_pkg_short_errors_supported = yes; then
11135+
LIBNSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnsl" 2>&1`
11136+
else
11137+
LIBNSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnsl" 2>&1`
11138+
fi
11139+
# Put the nasty error message in config.log where it belongs
11140+
echo "$LIBNSL_PKG_ERRORS" >&5
11141+
11142+
11143+
LIBNSL_CFLAGS=
11144+
save_CFLAGS=$CFLAGS
11145+
save_CPPFLAGS=$CPPFLAGS
11146+
save_LDFLAGS=$LDFLAGS
11147+
save_LIBS=$LIBS
11148+
11149+
11150+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing yp_match" >&5
11151+
$as_echo_n "checking for library containing yp_match... " >&6; }
11152+
if ${ac_cv_search_yp_match+:} false; then :
11153+
$as_echo_n "(cached) " >&6
11154+
else
11155+
ac_func_search_save_LIBS=$LIBS
11156+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11157+
/* end confdefs.h. */
11158+
11159+
/* Override any GCC internal prototype to avoid an error.
11160+
Use char because int might match the return type of a GCC
11161+
builtin and then its argument prototype would still apply. */
11162+
#ifdef __cplusplus
11163+
extern "C"
11164+
#endif
11165+
char yp_match ();
11166+
int
11167+
main ()
11168+
{
11169+
return yp_match ();
11170+
;
11171+
return 0;
11172+
}
11173+
_ACEOF
11174+
for ac_lib in '' nsl; do
11175+
if test -z "$ac_lib"; then
11176+
ac_res="none required"
11177+
else
11178+
ac_res=-l$ac_lib
11179+
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
11180+
fi
11181+
if ac_fn_c_try_link "$LINENO"; then :
11182+
ac_cv_search_yp_match=$ac_res
11183+
fi
11184+
rm -f core conftest.err conftest.$ac_objext \
11185+
conftest$ac_exeext
11186+
if ${ac_cv_search_yp_match+:} false; then :
11187+
break
11188+
fi
11189+
done
11190+
if ${ac_cv_search_yp_match+:} false; then :
11191+
11192+
else
11193+
ac_cv_search_yp_match=no
11194+
fi
11195+
rm conftest.$ac_ext
11196+
LIBS=$ac_func_search_save_LIBS
11197+
fi
11198+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yp_match" >&5
11199+
$as_echo "$ac_cv_search_yp_match" >&6; }
11200+
ac_res=$ac_cv_search_yp_match
11201+
if test "$ac_res" != no; then :
11202+
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
11203+
have_nis=yes
11204+
else
11205+
have_nis=no
11206+
fi
11207+
11208+
11209+
CFLAGS=$save_CFLAGS
11210+
CPPFLAGS=$save_CPPFLAGS
11211+
LDFLAGS=$save_LDFLAGS
11212+
LIBS=$save_LIBS
11213+
11214+
11215+
case $ac_cv_search_yp_match in #(
11216+
no) :
11217+
LIBNSL_LIBS= ;; #(
11218+
"none required") :
11219+
LIBNSL_LIBS= ;; #(
11220+
*) :
11221+
LIBNSL_LIBS=$ac_cv_search_yp_match
11222+
;;
11223+
esac
11224+
11225+
elif test $pkg_failed = untried; then
11226+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11227+
$as_echo "no" >&6; }
11228+
11229+
LIBNSL_CFLAGS=
11230+
save_CFLAGS=$CFLAGS
11231+
save_CPPFLAGS=$CPPFLAGS
11232+
save_LDFLAGS=$LDFLAGS
11233+
save_LIBS=$LIBS
11234+
11235+
11236+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing yp_match" >&5
11237+
$as_echo_n "checking for library containing yp_match... " >&6; }
11238+
if ${ac_cv_search_yp_match+:} false; then :
11239+
$as_echo_n "(cached) " >&6
11240+
else
11241+
ac_func_search_save_LIBS=$LIBS
11242+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11243+
/* end confdefs.h. */
11244+
11245+
/* Override any GCC internal prototype to avoid an error.
11246+
Use char because int might match the return type of a GCC
11247+
builtin and then its argument prototype would still apply. */
11248+
#ifdef __cplusplus
11249+
extern "C"
11250+
#endif
11251+
char yp_match ();
11252+
int
11253+
main ()
11254+
{
11255+
return yp_match ();
11256+
;
11257+
return 0;
11258+
}
11259+
_ACEOF
11260+
for ac_lib in '' nsl; do
11261+
if test -z "$ac_lib"; then
11262+
ac_res="none required"
11263+
else
11264+
ac_res=-l$ac_lib
11265+
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
11266+
fi
11267+
if ac_fn_c_try_link "$LINENO"; then :
11268+
ac_cv_search_yp_match=$ac_res
11269+
fi
11270+
rm -f core conftest.err conftest.$ac_objext \
11271+
conftest$ac_exeext
11272+
if ${ac_cv_search_yp_match+:} false; then :
11273+
break
11274+
fi
11275+
done
11276+
if ${ac_cv_search_yp_match+:} false; then :
11277+
11278+
else
11279+
ac_cv_search_yp_match=no
11280+
fi
11281+
rm conftest.$ac_ext
11282+
LIBS=$ac_func_search_save_LIBS
11283+
fi
11284+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yp_match" >&5
11285+
$as_echo "$ac_cv_search_yp_match" >&6; }
11286+
ac_res=$ac_cv_search_yp_match
11287+
if test "$ac_res" != no; then :
11288+
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
11289+
have_nis=yes
11290+
else
11291+
have_nis=no
11292+
fi
11293+
11294+
11295+
CFLAGS=$save_CFLAGS
11296+
CPPFLAGS=$save_CPPFLAGS
11297+
LDFLAGS=$save_LDFLAGS
11298+
LIBS=$save_LIBS
11299+
11300+
11301+
case $ac_cv_search_yp_match in #(
11302+
no) :
11303+
LIBNSL_LIBS= ;; #(
11304+
"none required") :
11305+
LIBNSL_LIBS= ;; #(
11306+
*) :
11307+
LIBNSL_LIBS=$ac_cv_search_yp_match
11308+
;;
11309+
esac
11310+
11311+
else
11312+
LIBNSL_CFLAGS=$pkg_cv_LIBNSL_CFLAGS
11313+
LIBNSL_LIBS=$pkg_cv_LIBNSL_LIBS
11314+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
11315+
$as_echo "yes" >&6; }
11316+
have_nis=yes
11317+
fi
11318+
11319+
if test "x$have_nis" = xyes; then :
11320+
11321+
save_CFLAGS=$CFLAGS
11322+
save_CPPFLAGS=$CPPFLAGS
11323+
save_LDFLAGS=$LDFLAGS
11324+
save_LIBS=$LIBS
11325+
11326+
11327+
CPPFLAGS="$LIBNSL_CFLAGS $CFLAGS"
11328+
for ac_header in rpc/rpc.h
11329+
do :
11330+
ac_fn_c_check_header_mongrel "$LINENO" "rpc/rpc.h" "ac_cv_header_rpc_rpc_h" "$ac_includes_default"
11331+
if test "x$ac_cv_header_rpc_rpc_h" = xyes; then :
11332+
cat >>confdefs.h <<_ACEOF
11333+
#define HAVE_RPC_RPC_H 1
11334+
_ACEOF
11335+
11336+
fi
11337+
11338+
done
11339+
11340+
11341+
CFLAGS=$save_CFLAGS
11342+
CPPFLAGS=$save_CPPFLAGS
11343+
LDFLAGS=$save_LDFLAGS
11344+
LIBS=$save_LIBS
11345+
11346+
11347+
11348+
fi
11349+
11350+
1107411351
pkg_failed=no
1107511352
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSQLITE3" >&5
1107611353
$as_echo_n "checking for LIBSQLITE3... " >&6; }
@@ -21068,6 +21345,42 @@ fi
2106821345
$as_echo "$py_cv_module__decimal" >&6; }
2106921346

2107021347

21348+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module nis" >&5
21349+
$as_echo_n "checking for stdlib extension module nis... " >&6; }
21350+
case $py_stdlib_not_available in #(
21351+
*nis*) :
21352+
py_cv_module_nis=n/a ;; #(
21353+
*) :
21354+
if true; then :
21355+
if test "$have_nis" = yes -a "$ac_cv_header_rpc_rpc_h" = yes; then :
21356+
py_cv_module_nis=yes
21357+
else
21358+
py_cv_module_nis=missing
21359+
fi
21360+
else
21361+
py_cv_module_nis=disabled
21362+
fi
21363+
;;
21364+
esac
21365+
as_fn_append MODULE_BLOCK "MODULE_NIS=$py_cv_module_nis$as_nl"
21366+
if test "x$py_cv_module_nis" = xyes; then :
21367+
21368+
as_fn_append MODULE_BLOCK "MODULE_NIS_CFLAGS=$LIBNSL_CFLAGS$as_nl"
21369+
as_fn_append MODULE_BLOCK "MODULE_NIS_LDFLAGS=$LIBNSL_LIBS$as_nl"
21370+
21371+
fi
21372+
if test "$py_cv_module_nis" = yes; then
21373+
MODULE_NIS_TRUE=
21374+
MODULE_NIS_FALSE='#'
21375+
else
21376+
MODULE_NIS_TRUE='#'
21377+
MODULE_NIS_FALSE=
21378+
fi
21379+
21380+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $py_cv_module_nis" >&5
21381+
$as_echo "$py_cv_module_nis" >&6; }
21382+
21383+
2107121384
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdlib extension module _sqlite3" >&5
2107221385
$as_echo_n "checking for stdlib extension module _sqlite3... " >&6; }
2107321386
case $py_stdlib_not_available in #(
@@ -21787,6 +22100,10 @@ if test -z "${MODULE__DECIMAL_TRUE}" && test -z "${MODULE__DECIMAL_FALSE}"; then
2178722100
as_fn_error $? "conditional \"MODULE__DECIMAL\" was never defined.
2178822101
Usually this means the macro was only invoked conditionally." "$LINENO" 5
2178922102
fi
22103+
if test -z "${MODULE_NIS_TRUE}" && test -z "${MODULE_NIS_FALSE}"; then
22104+
as_fn_error $? "conditional \"MODULE_NIS\" was never defined.
22105+
Usually this means the macro was only invoked conditionally." "$LINENO" 5
22106+
fi
2179022107
if test -z "${MODULE__SQLITE3_TRUE}" && test -z "${MODULE__SQLITE3_FALSE}"; then
2179122108
as_fn_error $? "conditional \"MODULE__SQLITE3\" was never defined.
2179222109
Usually this means the macro was only invoked conditionally." "$LINENO" 5

0 commit comments

Comments
 (0)