From patchwork Thu Sep 13 08:30:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Schwab X-Patchwork-Id: 29362 Received: (qmail 109428 invoked by alias); 13 Sep 2018 08:34:30 -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 120694 invoked by uid 89); 13 Sep 2018 08:31:06 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=U*$, nis, 2277, 3 X-HELO: mx1.suse.de From: Andreas Schwab To: libc-alpha@sourceware.org Subject: [PATCH] Don't build libnsl for new ABIs X-Yow: Spreading peanut butter reminds me of opera!! I wonder why? Date: Thu, 13 Sep 2018 10:30:35 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 * scripts/haveversions.awk: New file. * Makerules ($(common-objpfx)Versions.def) ($(common-objpfx)Versions.all, $(common-objpfx)Versions.v.i) ($(common-objpfx)sysd-versions, $(common-objpfx)versions.stmp): Move rules ... * Makeconfig ($(common-objpfx)Versions.def) ($(common-objpfx)Versions.all, $(common-objpfx)Versions.v.i) ($(common-objpfx)sysd-versions, $(common-objpfx)versions.stmp): ... here. ($(common-objpfx)Versions.mk): New rule. Include it. * nis/Makefile [!have-GLIBC_2.28]: Don't build any targets. Emit error if build-obsolete-nsl = yes. * manual/install.texi (Configuring and compiling): Describe --enable-obsolete-nsl as unavaiable after version 2.28. * INSTALL: Regenerate. --- INSTALL | 5 +++- Makeconfig | 55 ++++++++++++++++++++++++++++++++++++++++ Makerules | 50 ------------------------------------ manual/install.texi | 3 +++ nis/Makefile | 10 ++++++++ scripts/haveversions.awk | 11 ++++++++ 6 files changed, 83 insertions(+), 51 deletions(-) create mode 100644 scripts/haveversions.awk diff --git a/INSTALL b/INSTALL index 4faeac4469..f9c5cbb9a3 100644 --- a/INSTALL +++ b/INSTALL @@ -227,7 +227,10 @@ if 'CFLAGS' is specified it must enable optimization. For example: By default, libnsl is only built as shared library for backward compatibility and the NSS modules libnss_compat, libnss_nis and libnss_nisplus are not built at all. Use this option to enable - libnsl with all depending NSS modules and header files. + libnsl with all depending NSS modules and header files. For + architectures and ABIs that have been added after version 2.28 of + the GNU C Library this option is not available, and the libnsl + compatibility library is not built. '--disable-crypt' Do not install the passphrase-hashing library 'libcrypt' or the diff --git a/Makeconfig b/Makeconfig index a9e50e5b60..fbcf69e7c2 100644 --- a/Makeconfig +++ b/Makeconfig @@ -1157,6 +1157,61 @@ $(common-objpfx)dl-tunable-list.stmp: \ touch $@ endif +# Generate version maps, but wait until sysdep-subdirs is known +ifeq ($(sysd-sorted-done),t) +ifeq ($(build-shared),yes) +-include $(common-objpfx)sysd-versions +-include $(common-objpfx)Versions.mk +$(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions +common-generated += $(version-maps) +postclean-generated += sysd-versions Versions.all abi-versions.h \ + Versions.def Versions.v.i Versions.v Versions.mk + +ifndef avoid-generated +ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs)) +sysd-versions-force = FORCE +FORCE: +endif + +$(common-objpfx)Versions.def: $(..)scripts/versionlist.awk \ + $(common-objpfx)Versions.v + LC_ALL=C $(AWK) -f $^ > $@T + mv -f $@T $@ + +$(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \ + $(common-objpfx)soversions.i \ + $(common-objpfx)Versions.def + { while read which lib version setname; do \ + test x"$$which" = xDEFAULT || continue; \ + test -z "$$setname" || echo "$$lib : $$setname"; \ + done < $(word 2,$^); \ + cat $(word 3,$^); \ + } | LC_ALL=C $(AWK) -f $< > $@T + mv -f $@T $@ +$(common-objpfx)Versions.mk: $(..)scripts/haveversions.awk \ + $(common-objpfx)Versions.all + $(AWK) -f $^ > $@T + mv -f $@T $@ +# See %.v/%.v.i implicit rules in Makeconfig. +$(common-objpfx)Versions.v.i: $(wildcard $(subdirs:%=$(..)%/Versions)) \ + $(wildcard $(sysdirs:%=%/Versions)) \ + $(sysd-versions-force) +$(common-objpfx)sysd-versions: $(common-objpfx)versions.stmp +$(common-objpfx)versions.stmp: $(common-objpfx)Versions.all \ + $(common-objpfx)Versions.v \ + $(..)scripts/versions.awk + ( echo 'sysd-versions-subdirs = $(subdirs) $(config-sysdirs)' ; \ + cat $(word 2,$^) \ + | LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \ + -v move_if_change='$(move-if-change)' \ + -f $(word 3,$^); \ + ) > $(common-objpfx)sysd-versionsT + mv -f $(common-objpfx)sysd-versionsT $(common-objpfx)sysd-versions + touch $@ +endif # avoid-generated +endif # $(build-shared) = yes +endif # sysd-sorted-done + # The name under which the run-time dynamic linker is installed. # We are currently going for the convention that `/lib/ld.so.1' # names the SVR4/ELF ABI-compliant dynamic linker. diff --git a/Makerules b/Makerules index 5d6434c74b..07bfe8abcb 100644 --- a/Makerules +++ b/Makerules @@ -446,56 +446,6 @@ object-suffixes-left := $(all-object-suffixes) include $(o-iterator) endif -# Generate version maps, but wait until sysdep-subdirs is known -ifeq ($(sysd-sorted-done),t) -ifeq ($(build-shared),yes) --include $(common-objpfx)sysd-versions -$(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions -common-generated += $(version-maps) -postclean-generated += sysd-versions Versions.all abi-versions.h \ - Versions.def Versions.v.i Versions.v - -ifndef avoid-generated -ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs)) -sysd-versions-force = FORCE -FORCE: -endif - -$(common-objpfx)Versions.def: $(..)scripts/versionlist.awk \ - $(common-objpfx)Versions.v - LC_ALL=C $(AWK) -f $^ > $@T - mv -f $@T $@ - -$(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \ - $(common-objpfx)soversions.i \ - $(common-objpfx)Versions.def - { while read which lib version setname; do \ - test x"$$which" = xDEFAULT || continue; \ - test -z "$$setname" || echo "$$lib : $$setname"; \ - done < $(word 2,$^); \ - cat $(word 3,$^); \ - } | LC_ALL=C $(AWK) -f $< > $@T - mv -f $@T $@ -# See %.v/%.v.i implicit rules in Makeconfig. -$(common-objpfx)Versions.v.i: $(wildcard $(subdirs:%=$(..)%/Versions)) \ - $(wildcard $(sysdirs:%=%/Versions)) \ - $(sysd-versions-force) -$(common-objpfx)sysd-versions: $(common-objpfx)versions.stmp -$(common-objpfx)versions.stmp: $(common-objpfx)Versions.all \ - $(common-objpfx)Versions.v \ - $(..)scripts/versions.awk - ( echo 'sysd-versions-subdirs = $(subdirs) $(config-sysdirs)' ; \ - cat $(word 2,$^) \ - | LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \ - -v move_if_change='$(move-if-change)' \ - -f $(word 3,$^); \ - ) > $(common-objpfx)sysd-versionsT - mv -f $(common-objpfx)sysd-versionsT $(common-objpfx)sysd-versions - touch $@ -endif # avoid-generated -endif # $(build-shared) = yes -endif # sysd-sorted-done - # Generate .dT files as we compile. compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@ compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags) diff --git a/manual/install.texi b/manual/install.texi index eab4b0d75a..61178dadcd 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -259,6 +259,9 @@ compatibility and the NSS modules libnss_compat, libnss_nis and libnss_nisplus are not built at all. Use this option to enable libnsl with all depending NSS modules and header files. +For architectures and ABIs that have been added after version 2.28 of +@theglibc{} this option is not available, and the libnsl compatibility +library is not built. @item --disable-crypt Do not install the passphrase-hashing library @file{libcrypt} or the diff --git a/nis/Makefile b/nis/Makefile index d77c6e0c8e..7849eb77c3 100644 --- a/nis/Makefile +++ b/nis/Makefile @@ -22,6 +22,14 @@ subdir := nis include ../Makeconfig +ifndef have-GLIBC_2.28 + +ifeq ($(build-obsolete-nsl),yes) +$(error --enabe-obsolete-nsl is not available) +endif + +else + ifeq ($(build-obsolete-nsl),yes) headers := $(wildcard rpcsvc/*.[hx]) @@ -80,6 +88,8 @@ libnsl-inhibit-o = $(filter-out .os,$(object-suffixes)) endif # not $(build-obsolete-nsl) +endif # have-GLIBC_2.28 + include ../Rules diff --git a/scripts/haveversions.awk b/scripts/haveversions.awk new file mode 100644 index 0000000000..aecfcc7eef --- /dev/null +++ b/scripts/haveversions.awk @@ -0,0 +1,11 @@ +# This Script read the contents of Versions.all and outputs a definition +# of variable have-VERSION for each symbol version VERSION which is +# defined. + +NF == 1 && $1 != "}" { + haveversion[$1] = 1 +} +END { + for (i in haveversion) + printf "have-%s = 1\n", i +}