summary refs log tree commit diff
path: root/manual
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-10-05 15:58:13 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-10-05 15:58:13 +0000
commit644d38570a860f3ed7d478c4ed8965a91e4621a1 (patch)
tree818a635926389b6b4efd445e00be2f152eedd4ec /manual
parent19f82f358670f4b80533156b9edbf81223358bf9 (diff)
downloadglibc-644d38570a860f3ed7d478c4ed8965a91e4621a1.tar.gz
glibc-644d38570a860f3ed7d478c4ed8965a91e4621a1.tar.xz
glibc-644d38570a860f3ed7d478c4ed8965a91e4621a1.zip
Remove add-ons mechanism.
glibc has an add-ons mechanism to allow additional software to be
integrated into the glibc build.  Such add-ons may be within the glibc
source tree, or outside it at a path passed to the --enable-add-ons
configure option.

localedata and crypt were once add-ons, distributed in separate
release tarballs, but long since stopped using that mechanism.
Linuxthreads was always an add-on.  Ports spent some time as an add-on
with separate release tarballs, then was first moved into the glibc
source tree, then had its sysdeps files moved into the main sysdeps
hierarchy so the add-ons mechanism was no longer used.  NPTL spent
some time as an add-on in the main glibc tree before stopping using
the add-on mechanism.  libidn used to have separate release tarballs
but no longer does so, but still uses the add-ons mechanism within the
glibc source tree.  Various other software has supported building with
the add-ons mechanism at times in the past, but I don't think any is
still widely used.

Add-ons involve significant, little-used complexity in the glibc build
system, and make it hard to understand what the space of possible
glibc configurations is.  This patch removes the add-ons mechanism.
libidn is now built via the Subdirs mechanism to cause any
configuration using sysdeps/unix/inet to build libidn; HAVE_LIBIDN
(which effectively means shared libraries are available) is now
defined via sysdeps/unix/inet/configure.  Various references to
add-ons around the source tree are removed (in the case of maint.texi,
the example list of sysdeps directories is still very out of date).

Externally maintained ports should now put their files in the normal
sysdeps directory structure rather than being arranged as add-ons;
they probably need to change e.g. elf.h anyway, rather than actually
being able to work just as a drop-in subtree.  Hurd libpthread should
be arranged similarly to NPTL, so some files might go in a
hurd-pthreads (or similar) top-level directory in glibc, while sysdeps
files should go in the normal sysdeps directory structure (possibly in
hurd or hurd-pthreads subdirectories, just as there are nptl
subdirectories in the sysdeps tree).

Tested for x86_64, and with build-many-glibcs.py.

	* configure.ac (--enable-add-ons): Remove option.
	(machine): Do not mention add-ons in comment.
	(LIBC_PRECONFIGURE): Likewise.
	(add_ons): Remove variable and sanity checks and logic to locate
	add-ons.
	(add_ons_automatic): Remove variable.
	(configured_add_ons): Likewise.
	(add_ons_sfx): Likewise.
	(add_ons_pfx): Likewise.
	(add_on_subdirs): Likewise.
	(sysnames_add_ons): Likewise.  Remove loop over add-ons and
	consideration of add-ons in Implies handling.
	(sysdeps_add_ons): Likewise.
	* configure: Regenerated.
	* libidn/configure.ac: Remove.
	* libidn/configure: Likewise.
	* sysdeps/unix/inet/configure.ac: New file.
	* sysdeps/unix/inet/configure: New generated file.
	* sysdeps/unix/inet/Subdirs: Add libidn.
	* Makeconfig (sysdeps-srcdirs): Remove variable.
	(+sysdep_dirs): Do not include $(sysdeps-srcdirs).
	($(common-objpfx)config.status): Do not depend on add-on files.
	($(common-objpfx)shlib-versions.v.i): Do not mention add-ons in
	comment.
	(all-subdirs): Do not include $(add-on-subdirs).
	* Makefile (dist-prepare): Do not use $(sysdeps-add-ons).
	* config.make.in (add-ons): Remove variable.
	(add-on-subdirs): Likewise.
	(sysdeps-add-ons): Likewise.
	* manual/Makefile (add-chapters): Remove.
	($(objpfx)texis): Do not depend on $(add-chapters).
	(nonexamples): Do not handle $(add-chapters).
	(examples): Do not handle $(add-ons).
	(chapters.% top-menu.%): Do not pass '$(add-chapters)' to
	libc-texinfo.sh.
	* manual/install.texi (Installation): Do not mention add-ons.
	(--enable-add-ons): Do not document configure option.
	* INSTALL: Regenerated.
	* manual/libc-texinfo.sh: Do not handle $2 add-ons argument.
	* manual/maint.texi (Hierarchy Conventions): Do not mention
	add-ons.
	* scripts/build-many-glibcs.py (Glibc.build_glibc): Do not use
	--enable-add-ons.
	* scripts/gen-sorted.awk: Do not handle Subdirs files from
	add-ons.
	* scripts/test-installation.pl: Do not handle glibc-compat add-on.
	* sysdeps/nptl/Makeconfig: Do not mention add-ons in comment.
Diffstat (limited to 'manual')
-rw-r--r--manual/Makefile9
-rw-r--r--manual/install.texi16
-rw-r--r--manual/libc-texinfo.sh17
-rw-r--r--manual/maint.texi11
4 files changed, 5 insertions, 48 deletions
diff --git a/manual/Makefile b/manual/Makefile
index 4ed63a8ef3..3b4c7c934a 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -40,20 +40,18 @@ chapters = $(addsuffix .texi, \
 		       resource setjmp signal startup process ipc job	\
 		       nss users sysinfo conf crypt debug threads	\
 		       probes tunables)
-add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi))
 appendices = lang.texi header.texi install.texi maint.texi platform.texi \
 	     contrib.texi
 licenses = freemanuals.texi lgpl-2.1.texi fdl-1.3.texi
 
 -include $(objpfx)texis
-$(objpfx)texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses)
+$(objpfx)texis: texis.awk $(chapters) $(appendices) $(licenses)
 	$(make-target-directory)
 	$(AWK) -f $^ > $@.T
 	mv -f $@.T $@
 
-nonexamples = $(filter-out $(add-chapters) %.c.texi, $(texis))
-examples = $(filter-out $(foreach d, $(add-ons), ../$d/%.c.texi), \
-			$(filter %.c.texi, $(texis)))
+nonexamples = $(filter-out %.c.texi, $(texis))
+examples = $(filter %.c.texi, $(texis))
 
 # Generated files directly included from libc.texinfo.
 libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \
@@ -69,7 +67,6 @@ texis-path := $(filter-out $(libc-texi-generated) summary.texi $(examples), \
 chapters.% top-menu.%: libc-texinfo.sh $(texis-path) Makefile
 	AWK=$(AWK) $(SHELL) $< $(objpfx) \
 				'$(chapters)' \
-			       '$(add-chapters)' \
 			       '$(appendices) $(licenses)'
 
 
diff --git a/manual/install.texi b/manual/install.texi
index 35948b1bbb..96b988e829 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -13,11 +13,6 @@ Before you do anything else, you should read the FAQ at
 questions and describes problems you may experience with compilation
 and installation.
 
-Features can be added to @theglibc{} via @dfn{add-on} bundles.  These are
-separate tar files, which you unpack into the top level of the source
-tree.  Then you give @code{configure} the @samp{--enable-add-ons} option
-to activate them, and they will be compiled into the library.
-
 You will need recent versions of several GNU tools: definitely GCC and
 GNU Make, and possibly others.  @xref{Tools for Compilation}, below.
 
@@ -95,17 +90,6 @@ occasionally happen in this case.  You can also use this option if you want to
 compile @theglibc{} with a newer set of kernel headers than the ones found in
 @file{/usr/include}.
 
-@item --enable-add-ons[=@var{list}]
-Specify add-on packages to include in the build.  If this option is
-specified with no list, it enables all the add-on packages it finds in
-the main source directory; this is the default behavior.  You may
-specify an explicit list of add-ons to use in @var{list}, separated by
-spaces or commas (if you use spaces, remember to quote them from the
-shell).  Each add-on in @var{list} can be an absolute directory name
-or can be a directory name relative to the main source directory, or
-relative to the build directory (that is, the current working directory).
-For example, @samp{--enable-add-ons=nptl,../glibc-libidn-@var{version}}.
-
 @item --enable-kernel=@var{version}
 This option is currently only useful on @gnulinuxsystems{}.  The
 @var{version} parameter should have the form X.Y.Z and describes the
diff --git a/manual/libc-texinfo.sh b/manual/libc-texinfo.sh
index 4d0a52213b..aea27f9e94 100644
--- a/manual/libc-texinfo.sh
+++ b/manual/libc-texinfo.sh
@@ -31,26 +31,11 @@ collect_nodes () {
   $AWK -f tsort.awk | sed 's/_/ /g'
 }
 
-# Emit "@set ADD-ON" for each add-on contributing a manual chapter.
-for addon in $2; do
-  addon=`basename $addon .texi`
-  echo >&3 "@set $addon"
-done
-
 collect_nodes $1 | build_menu
 
-if [ -n "$2" ]; then
-
-  { echo; echo 'Add-ons'; echo; } >&4
-
-  egrep '^(@c )?@node.*Top' `echo $2 /dev/null | tr ' ' '\n' | sort` |
-  cut -d, -f1 | sed 's/@c //;s/@node //' | build_menu
-
-fi
-
 { echo; echo 'Appendices'; echo; } >&4
 
-collect_nodes $3 | build_menu
+collect_nodes $2 | build_menu
 
 exec 3>&- 4>&- 5>&-
 
diff --git a/manual/maint.texi b/manual/maint.texi
index 473ab162f0..fce06bfa88 100644
--- a/manual/maint.texi
+++ b/manual/maint.texi
@@ -381,19 +381,10 @@ identical @file{irix6.2} and @file{irix6.3} directories,
 by removing trailing suffixes starting with a period.
 
 As an example, here is the complete list of directories that would be
-tried for the configuration @w{@samp{i686-linux-gnu}} (with the
-@file{crypt} and @file{linuxthreads} add-on):
+tried for the configuration @w{@samp{i686-linux-gnu}}:
 
 @smallexample
 sysdeps/i386/elf
-crypt/sysdeps/unix
-linuxthreads/sysdeps/unix/sysv/linux
-linuxthreads/sysdeps/pthread
-linuxthreads/sysdeps/unix/sysv
-linuxthreads/sysdeps/unix
-linuxthreads/sysdeps/i386/i686
-linuxthreads/sysdeps/i386
-linuxthreads/sysdeps/pthread/no-cmpxchg
 sysdeps/unix/sysv/linux/i386
 sysdeps/unix/sysv/linux
 sysdeps/gnu