Don't build libnsl for new ABIs

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.
This commit is contained in:
Andreas Schwab 2018-07-18 17:30:19 +02:00
parent f0458cf4f9
commit 462d348caa
7 changed files with 113 additions and 51 deletions

View File

@ -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> 2018-09-21 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* NEWS: Add note about new TLE support on powerpc64le. * NEWS: Add note about new TLE support on powerpc64le.

View File

@ -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 By default, libnsl is only built as shared library for backward
compatibility and the NSS modules libnss_compat, libnss_nis and compatibility and the NSS modules libnss_compat, libnss_nis and
libnss_nisplus are not built at all. Use this option to enable 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' '--disable-crypt'
Do not install the passphrase-hashing library 'libcrypt' or the Do not install the passphrase-hashing library 'libcrypt' or the

View File

@ -1157,6 +1157,61 @@ $(common-objpfx)dl-tunable-list.stmp: \
touch $@ touch $@
endif 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. # The name under which the run-time dynamic linker is installed.
# We are currently going for the convention that `/lib/ld.so.1' # We are currently going for the convention that `/lib/ld.so.1'
# names the SVR4/ELF ABI-compliant dynamic linker. # names the SVR4/ELF ABI-compliant dynamic linker.

View File

@ -446,56 +446,6 @@ object-suffixes-left := $(all-object-suffixes)
include $(o-iterator) include $(o-iterator)
endif 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. # Generate .dT files as we compile.
compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@ compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@
compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags) compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags)

View File

@ -259,6 +259,9 @@ compatibility and the NSS modules libnss_compat, libnss_nis and
libnss_nisplus are not built at all. libnss_nisplus are not built at all.
Use this option to enable libnsl with all depending NSS modules and Use this option to enable libnsl with all depending NSS modules and
header files. 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 @item --disable-crypt
Do not install the passphrase-hashing library @file{libcrypt} or the Do not install the passphrase-hashing library @file{libcrypt} or the

View File

@ -22,6 +22,14 @@ subdir := nis
include ../Makeconfig 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) ifeq ($(build-obsolete-nsl),yes)
headers := $(wildcard rpcsvc/*.[hx]) headers := $(wildcard rpcsvc/*.[hx])
@ -80,6 +88,8 @@ libnsl-inhibit-o = $(filter-out .os,$(object-suffixes))
endif # not $(build-obsolete-nsl) endif # not $(build-obsolete-nsl)
endif # have-GLIBC_2.28
include ../Rules include ../Rules

23
scripts/haveversions.awk Normal file
View File

@ -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
}