Gavin Smith <gavinsmith0...@gmail.com> writes: > On Mon, Mar 20, 2023 at 08:08:53PM +0100, Arsen Arsenović wrote: >> Hm, I think you're spot on.. the file is mangled by a build script. I >> missed it since it was behind a layer of abstraction[1]. >> >> Sorry for the noise! >> >> I wonder if I just got lucky in Emacs wrt being able to read that index >> search I did.. > > My guess is that Emacs has more tolerance for incorrect tag tables. > > >> That leaves a question of what to do with "slotted" installs and info >> pages. Mangling a binary format by injecting bytes into it to version >> the names seems wrong. A dedicated mangler rather than `sed' could be >> used, that can handle fixing up offsets in the tag table, but that >> retains broken xrefs in other documents. > > Have you considered renaming the file but not altering the contents? > As far as I remember the text that follows File: in a node does not > have to match the file name and is not really used for anything (other > than reminding the user where they are in case this text is displayed).
Hmm, I did not know that's possible. AIUI, though, that'd still break cross referencing, right? Since the xrefs in the Info file refer to infos by file name IIUC. >> Maybe we should toss the thing out and just use INFO_PATH to pick up on >> the latest version, like we do for gcc, which avoids all of those issues >> but leaves us with shadowed pages for older versions. >> >> Do you have any alternative proposals? > > For cross-references to work while installing the Info files under the > versioned names, you could use create symlinks from e.g. autoconf.info > to autoconf-2.71.info. The problem with this approach, though, is that it'd induce a collision at install time. This is often solved by another tool called eselect, but autoconf and automake aren't behind eselect, but rather a wrapper which execs the right version. > I'm not sure if it's relevant, but a feature of the Info browser which > may be useful if you are installing collections of Info manuals which > should all reference each other is the 'follow-strategy' variable: > > ‘follow-strategy’ > When set to ‘remain’ (the default), Info tries to remain within the > directory containing the currently displayed Info file when > following a cross-reference to an external manual, before looking > for the referenced manual in the search path. The alternative > value is ‘path’, which means to look through the search path right > away. > > ‘remain’ is intended to be useful for several Texinfo manuals that > all reference each other and whose versions should match each > other. (For example, various manuals relating to a particular > version of Emacs.) > > The alternative behavior, with ‘path’, may be useful when your Info > file search path parallels your command shell’s search path, and > you always want to find documentation of the version of the program > that the shell would execute. Ah! This takes away a worry of mine about what happens if one jumps from, say, gdc.info to gcc.info on a version less than latest with our current INFO_PATH based approach. That also reinforces that approach as a viable one. -- Arsen Arsenović
signature.asc
Description: PGP signature