Don't build libnsl for new ABIs
authorAndreas Schwab <schwab@suse.de>
Wed, 18 Jul 2018 15:30:19 +0000 (17:30 +0200)
committerAndreas Schwab <schwab@suse.de>
Mon, 24 Sep 2018 08:23:10 +0000 (10:23 +0200)
For architectures and ABIs that are added in version 2.29 or later the
option --enable-obsolete-nsl is no longer available, and no libnsl
compatibility library is built.

ChangeLog
INSTALL
Makeconfig
Makerules
manual/install.texi
nis/Makefile
scripts/haveversions.awk [new file with mode: 0644]

index 55214c3..81e58df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2018-09-24  Andreas Schwab  <schwab@suse.de>
+
+       * 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.
+
 2018-09-21  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
        * NEWS: Add note about new TLE support on powerpc64le.
diff --git a/INSTALL b/INSTALL
index 4faeac4..f9c5cbb 100644 (file)
--- 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
index a9e50e5..fbcf69e 100644 (file)
@@ -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.
index 5d6434c..07bfe8a 100644 (file)
--- 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)
index eab4b0d..61178da 100644 (file)
@@ -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
index d77c6e0..7849eb7 100644 (file)
@@ -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 (file)
index 0000000..ce6f453
--- /dev/null
@@ -0,0 +1,23 @@
+# This script reads the contents of Versions.all and outputs a definition
+# of variable have-VERSION for each symbol version VERSION which is
+# defined.
+#
+# The have-VERSION variables can be used to check that a port supports a
+# particular symbol version in makefiles due to its base version.  A test
+# for a compatibility symbol which was superseded with a GLIBC_2.15
+# version could be tested like this:
+#
+# ifdef HAVE-GLIBC_2.14
+# tests += tst-spawn4-compat
+# endif # HAVE-GLIBC_2.14
+#
+# (NB: GLIBC_2.14 is the symbol version that immediately precedes
+# GLIBC_2.15.)
+
+NF == 1 && $1 != "}" {
+  haveversion[$1] = 1
+}
+END {
+  for (i in haveversion)
+    printf "have-%s = yes\n", i
+}