This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[RFA:] toplevel: Don't use makeinfo older than texinfo 4


(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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]