This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[RFA:] toplevel: Don't use makeinfo older than texinfo 4
- To: <gcc-patches at gcc dot gnu dot org>
- Subject: [RFA:] toplevel: Don't use makeinfo older than texinfo 4
- From: Hans-Peter Nilsson <hp at bitrange dot com>
- Date: Sun, 4 Nov 2001 23:10:58 -0500 (EST)
- cc: <binutils at sources dot redhat dot com>, <gdb-patches at sources dot redhat dot com>
(CC:ed to binutils and gdb, but posted to gcc which AFAIK is master for
toplevel files.)
It seems makeinfo from texinfo 4 is required in various subdirs,
most prominently libiberty. There's a problem: various "too old
makeinfo, don't remake info" configury and stuff in subdirs Just
Don't Work; instead build fails if the installed makeinfo is too
old, as follows; happens "first" in libiberty.
(Please ignore that this is a i686-pc-linux-gnulibc1; I use it
here just because makeinfo there is:
makeinfo (GNU texinfo 3.12) 1.68
Copyright (C) 1998 Free Software Foundation, Inc.
...
i.e. too old, older than texinfo 4.0 which was released in 1999
which IMHO can't be considered too new).
See:
cd ~/tmp/gccwrite/
/home/hp/egcs/cvs_write/egcs/configure && make info
Configuring for a i686-pc-linux-gnulibc1 host.
*** This configuration is not supported in the following subdirectories:
target-libchill
(Any other directories should still work fine.)
Created "Makefile" in /home/hp/tmp/gccwrite using "mt-frag"
Configuring libiberty...
creating cache ../config.cache
checking whether to enable maintainer-specific portions of Makefiles... no
checking for makeinfo... makeinfo
configure: warning:
*** Makeinfo is too old. Info documentation will not be built.
checking for perl... perl
[...]
Configuring gcc...
[...]
*** Makeinfo is missing or too old.
*** Info documentation will not be built.
[...]
make[1]: Entering directory `/mnt/s0d6p1/hp/gccwrite/libiberty'
makeinfo -I/home/hp/egcs/cvs_write/egcs/libiberty /home/hp/egcs/cvs_write/egcs/libiberty/libiberty.texi
Making info file `libiberty.info' from `/home/hp/egcs/cvs_write/egcs/libiberty/libiberty.texi'.
/home/hp/egcs/cvs_write/egcs/libiberty/libiberty.texi:71: No matching `@end ifnottex'.
/home/hp/egcs/cvs_write/egcs/libiberty/libiberty.texi:82: Unmatched `@end'.
/home/hp/egcs/cvs_write/egcs/libiberty/libiberty.texi:116: Unknown command `option'.
[...]
makeinfo: Removing output file `/mnt/s0d6p1/hp/gccwrite/libiberty/libiberty.info' due to errors; use --force to preserve.
make[1]: *** [libiberty.info] Error 2
make[1]: Leaving directory `/mnt/s0d6p1/hp/gccwrite/libiberty'
make: *** [do-info] Error 1
This we'll-run-makeinfo-right-or-wrong seems to be because the
toplevel makefile helpfully passes on MAKEINFO, overriding any
and all carefully crafted "MAKEINFO=:" (and similar) in subdir
Makefiles. One approach is to make the toplevel Makefile not
pass on MAKEINFO. Another, this one, is to require makeinfo
from texinfo 4 or newer for *everything*. Instead of failing on
post-stoneage texinfo commands, we now get for each makeinfo
invocation:
WARNING: `makeinfo' is missing on your system. You should only need it if
you modified a `.texi' or `.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy `make' (AIX,
DU, IRIX). You might want to install the `Texinfo' package or
the `GNU make' package. Grab either from any GNU archive site.
which perhaps should be changed; s/missing/missing or too old/.
NB: I had a look at autoconf.texi, which speaks of many
compatibility issues. This looks portable judging from that.
NB: Release tarballs are supposed to have *.info files premade,
and makeinfo shouldn't need to be run (as the warning message says).
Ok to commit?
* Makefile.in (MAKEINFO): Use "missing" for makeinfo older than 4.0.
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/egcs/Makefile.in,v
retrieving revision 1.88
diff -p -c -r1.88 Makefile.in
*** Makefile.in 2001/09/29 19:36:13 1.88
--- Makefile.in 2001/11/05 03:37:03
*************** M4 = `if [ -f $$r/m4/m4 ] ; \
*** 140,148 ****
then echo $$r/m4/m4 ; \
else echo ${DEFAULT_M4} ; fi`
MAKEINFO = `if [ -f $$r/texinfo/makeinfo/Makefile ] ; \
then echo $$r/texinfo/makeinfo/makeinfo ; \
! else echo makeinfo ; fi`
# This just becomes part of the MAKEINFO definition passed down to
# sub-makes. It lets flags be given on the command line while still
--- 140,152 ----
then echo $$r/m4/m4 ; \
else echo ${DEFAULT_M4} ; fi`
+ # For an installed makeinfo, we require it to be from texinfo 4 or
+ # higher, else we use the "missing" dummy.
MAKEINFO = `if [ -f $$r/texinfo/makeinfo/Makefile ] ; \
then echo $$r/texinfo/makeinfo/makeinfo ; \
! else if makeinfo --version \
! | grep 'texinfo[^0-9]*[123][^0-9]' >/dev/null 2>&1; \
! then echo $$s/missing makeinfo; else echo makeinfo; fi; fi`
# This just becomes part of the MAKEINFO definition passed down to
# sub-makes. It lets flags be given on the command line while still
brgds, H-P