This is the mail archive of the gdb-patches@sourceware.cygnus.com mailing list for the GDB project.


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

Re: gdb.texinfo broken?


<38D7C977.FA3@cygnus.com> <5mitygglxs.fsf@jtc.redbacknetworks.com>

> >>>>> "Michael" == Michael Snyder <msnyder@cygnus.com> writes:
> Michael> %] msnyder<2>% make gdb.info
> Michael> makeinfo -I
> Michael> /cleaver/blade/msnyder/sourceware/src/gdb/doc/../../readline/doc -I
> Michael> /cleaver/blade/msnyder/sourceware/src/gdb/doc -o ./gdb.info gdb.texinfo
> Michael> Making info file `./gdb.info' from `gdb.texinfo'.
> Michael> gdb.texinfo:113: No matching `@end ifnottex'.
> Michael> gdb.texinfo:156: Unmatched `@end'.
> 
> It looks like the changes to the directory entry require the latest
> makeinfo.  I tried to use makeinfo from texinfo-3.2 and it failed,
> makeinfo from texinfo-4.0 works.

Okay, I think I know what's going on with gdb.texinfo and old versions
of Texinfo.

First, I'm guessing that Michael Snyder didn't "cvs up annotate.texi".
The old version was written as a separate manual, so it had its own
Top node etc.  The new gdb.texinfo @include's annotate.texi, so
Michael gets error messages about multiple Top nodes etc..  When I
introduced the changes into gdb.texinfo to include the Annotations
chapter, I changed annotate.texi accordingly, to avoid all these
problems.

This leaves us with two error messages cited above:

 gdb.texinfo:113: No matching `@end ifnottex'.
 gdb.texinfo:156: Unmatched `@end'.

These come from Texinfo 3.11 and later (I tried 3.12; I don't have
3.11 on my disk), which is where @ifnottex was introduced.  Texinfo
3.9 and earlier doesn't grok @ifnottex at all, and Texinfo 4.0
converts the file without any problems.

The problem with @ifnottex in Texinfo 3.12 are actually a
bug/misfeature in that version: conditionals such as @ifnottex cannot
span node boundaries.  Here's a ChangeLog entry from the latest
Texinfo distribution:

  Sun Nov 29 17:12:35 1998  Karl Berry  <karl@gnu.org>

	  [...]
	  * makeinfo/insertion.c (discard_insertions): Let any conditional
	  cross node boundary.  (So the @top node can be wrapped
	  in @ifnottex, for example.)

This was done during the (long) pretest of Texinfo 4.0.

Since we decided not to depend on Texinfo 4.0, it seems we have 2
alternatives:

  - Toss @ifnottex and go back to using @ifinfo.  This will disallow
    producing the manual in the HTML format (only possible with
    Texinfo 4.0).

  - Duplicate the offending Top node, once wrapped with @ifinfo, the
    other time wrapped with @ifhtml.  This works for me with Texinfo
    3.12 and 4.0.  The patch for this alternative is below.

I recommend to use the second alternative, even though it's kludgey.

Note that if we use @ifnottex, we need to require Texinfo 3.11 or
later; Texinfo 3.9 will not work.

--- gdb/doc/gdb.t~2	Wed Mar 22 12:49:54 2000
+++ gdb/doc/gdb.texinfo	Wed Mar 22 18:02:48 2000
@@ -110,7 +110,7 @@
 @end titlepage
 @page
 
-@ifnottex
+@ifinfo
 @node Top
 @top Debugging with @value{GDBN}
 
@@ -153,7 +153,52 @@
 * Index::                       Index
 @end menu
 
-@end ifnottex
+@end ifinfo
+
+@ifhtml
+@node Top
+@top Debugging with @value{GDBN}
+
+This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
+
+This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version 
+@value{GDBVN}.
+
+Copyright (C) 1988-1999 Free Software Foundation, Inc.
+@menu
+* Summary::                     Summary of @value{GDBN}
+* Sample Session::              A sample @value{GDBN} session
+
+* Invocation::                  Getting in and out of @value{GDBN}
+* Commands::                    @value{GDBN} commands
+* Running::                     Running programs under @value{GDBN}
+* Stopping::                    Stopping and continuing
+* Stack::                       Examining the stack
+* Source::                      Examining source files
+* Data::                        Examining data
+
+* Languages::                   Using @value{GDBN} with different languages
+
+* Symbols::                     Examining the symbol table
+* Altering::                    Altering execution
+* GDB Files::                   @value{GDBN} files
+* Targets::                     Specifying a debugging target
+* Configurations::              Configuration-specific information
+* Controlling GDB::             Controlling @value{GDBN}
+* Sequences::                   Canned sequences of commands
+* Emacs::                       Using @value{GDBN} under @sc{gnu} Emacs
+* Annotations::                 @value{GDBN}'s annotations interface.
+
+* GDB Bugs::                    Reporting bugs in @value{GDBN}
+* Formatting Documentation::    How to format and print @value{GDBN} documentation
+
+* Command Line Editing::        Command Line Editing
+* Using History Interactively:: Using History Interactively
+* Installing GDB::              Installing GDB
+* Index::                       Index
+@end menu
+
+@end ifhtml
 
 @node Summary
 @unnumbered Summary of @value{GDBN}

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