From patchwork Mon Apr 4 13:43:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thorsten Kukuk X-Patchwork-Id: 11617 Received: (qmail 75860 invoked by alias); 4 Apr 2016 13:44:11 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 75842 invoked by uid 89); 4 Apr 2016 13:44:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=BAYES_50, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 spammy=@default, UD:config.make.in, sk:3c766b7, use_nscd X-HELO: mx2.suse.de Date: Mon, 4 Apr 2016 15:43:57 +0200 From: Thorsten Kukuk To: libc-alpha@sourceware.org Subject: [PATCH] deprecate libnsl/libnss_* Message-ID: <20160404134356.GA20216@suse.de> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) 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 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