This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] deprecate libnsl/libnss_*
- From: Thorsten Kukuk <kukuk at suse dot de>
- To: libc-alpha at sourceware dot org
- Date: Mon, 4 Apr 2016 15:43:57 +0200
- Subject: [PATCH] deprecate libnsl/libnss_*
- Authentication-results: sourceware.org; auth=none
Hi,
I made a first patch to deprecate libnsl and disable the
depending libnss_* modules. It's following the sunrpc code.
I disabled the libnss_* modules, since you cannot install them
in parallel with the new ones. libnsl.so.1 will still be build,
for compatibility reasons and since you can install them in
parallel.
Two problems are still open:
libnsl.so symlink will still be created and you can link against
the library, if you create the .so symlink. No idea how to disable
that.
I haven't used the libc_hidden_nolink_sunrpc macros, since they,
like for sunrpc, don't work. The problem is, you have to specify the
correct version number for this symbol, but the version number is
different on the different architectures.
Thorsten
--
Thorsten Kukuk, Senior Architect SLES & Common Code Base
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg)
diff --git a/config.make.in b/config.make.in
index 95c6f36..0cd5427 100644
--- a/config.make.in
+++ b/config.make.in
@@ -86,6 +86,7 @@ sysdeps-add-ons = @sysdeps_add_ons@
cross-compiling = @cross_compiling@
force-install = @force_install@
link-obsolete-rpc = @link_obsolete_rpc@
+build-obsolete-nsl = @build_obsolete_nsl@
build-nscd = @build_nscd@
use-nscd = @use_nscd@
build-hardcoded-path-in-tests= @hardcoded_path_in_tests@
diff --git a/configure b/configure
index 8fe5937..d2d1e91 100755
--- a/configure
+++ b/configure
@@ -661,6 +661,7 @@ add_on_subdirs
add_ons
build_pt_chown
build_nscd
+build_obsolete_nsl
link_obsolete_rpc
libc_cv_nss_crypt
enable_werror
@@ -769,6 +770,7 @@ enable_werror
enable_multi_arch
enable_nss_crypt
enable_obsolete_rpc
+enable_obsolete_nsl
enable_systemtap
enable_build_nscd
enable_nscd
@@ -1436,6 +1438,8 @@ Optional Features:
--enable-nss-crypt enable libcrypt to use nss
--enable-obsolete-rpc build and install the obsolete RPC code for
link-time usage
+ --enable-obsolete-nsl build and install the obsolete libnsl library and
+ depending NSS modules
--enable-systemtap enable systemtap static probe points [default=no]
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
@@ -3566,6 +3570,15 @@ if test "$link_obsolete_rpc" = yes; then
fi
+# Check whether --enable-obsolete-nsl was given.
+if test "${enable_obsolete_nsl+set}" = set; then :
+ enableval=$enable_obsolete_nsl; build_obsolete_nsl=$enableval
+else
+ build_obsolete_nsl=no
+fi
+
+
+
# Check whether --enable-systemtap was given.
if test "${enable_systemtap+set}" = set; then :
enableval=$enable_systemtap; systemtap=$enableval
diff --git a/configure.ac b/configure.ac
index 3c766b7..fd8e5e3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -345,6 +345,13 @@ if test "$link_obsolete_rpc" = yes; then
AC_DEFINE(LINK_OBSOLETE_RPC)
fi
+AC_ARG_ENABLE([obsolete-nsl],
+ AC_HELP_STRING([--enable-obsolete-nsl],
+ [build and install the obsolete libnsl library and depending NSS modules]),
+ [build_obsolete_nsl=$enableval],
+ [build_obsolete_nsl=no])
+AC_SUBST(build_obsolete_nsl)
+
AC_ARG_ENABLE([systemtap],
[AS_HELP_STRING([--enable-systemtap],
[enable systemtap static probe points @<:@default=no@:>@])],
diff --git a/nis/Makefile b/nis/Makefile
index 991460f..f5f0200 100644
--- a/nis/Makefile
+++ b/nis/Makefile
@@ -24,9 +24,8 @@ include ../Makeconfig
aux := nis_hash
-ifeq ($(link-obsolete-rpc),yes)
+ifeq ($(build-obsolete-nsl),yes)
headers := $(wildcard rpcsvc/*.[hx])
-endif
# These are the databases available for the nis (and perhaps later nisplus)
# service. This must be a superset of the services in nss.
@@ -35,15 +34,21 @@ databases = proto service hosts network grp pwd rpc ethers \
# Specify rules for the nss_* modules.
services := nis nisplus compat
+endif
-extra-libs = libnsl $(services:%=libnss_%)
+extra-libs = libnsl
+ifeq ($(build-obsolete-nsl),yes)
+extra-libs += $(services:%=libnss_%)
+endif
# These libraries will be built in the `others' pass rather than
# the `lib' pass, because they depend on libc.so being built already.
extra-libs-others = $(extra-libs)
+ifeq ($(build-obsolete-nsl),yes)
# The sources are found in the appropriate subdir.
subdir-dirs = $(services:%=nss_%)
vpath %.c $(subdir-dirs)
+endif
libnsl-routines = yp_xdr ypclnt ypupdate_xdr \
nis_subr nis_local_names nis_free nis_file \
@@ -57,6 +62,7 @@ libnsl-routines = yp_xdr ypclnt ypupdate_xdr \
nis_findserv nis_callback nis_clone_dir nis_clone_obj\
nis_clone_res nss-default
+ifeq ($(build-obsolete-nsl),yes)
libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups)
libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
@@ -67,14 +73,17 @@ libnss_nis-inhibit-o = $(filter-out .os,$(object-suffixes))
libnss_nisplus-routines := $(addprefix nisplus-,$(databases)) nisplus-parser \
nss-nisplus nisplus-initgroups
libnss_nisplus-inhibit-o = $(filter-out .os,$(object-suffixes))
+endif
include ../Rules
+ifeq ($(build-obsolete-nsl),yes)
$(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version)
$(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \
$(common-objpfx)nss/libnss_files.so
$(objpfx)libnss_nisplus.so: $(objpfx)libnsl.so$(libnsl.so-version)
+endif
libnsl-libc = $(common-objpfx)linkobj/libc.so
# Target-specific variable setting to link objects using deprecated
@@ -87,5 +96,7 @@ $(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so: \
ifeq ($(build-shared),yes)
$(others:%=$(objpfx)%): $(objpfx)libnsl.so$(libnsl.so-version)
else
+ifeq ($(build-obsolete-nsl),yes)
$(others:%=$(objpfx)%): $(objpfx)libnsl.a
endif
+endif