Hello,

I found out this with the emacs manuals, but it is more general.
When there is both -o some/dir/ option to texi2any and a @setfilename
with leading directories, like
 @setfilename ../../info/emacs-xtra.info
texi2any uses both directories unless output is split HTML.  So the final
output file ends up being (for Info, HTML not split, DocBook):

 some/dir/../../info/emacs-xtra.XXX

I think that ignoring the directory from @setfilename when the -o
argument is determined to be a directory would be better, both more
useful, simpler and more consistent with -o with a file name as
argument.


We should make sure that this does not break the emacs manual, but I
think that it should not, as this use of @setfilename probably predates
having -o recognize directories, which, I believe, started with Texinfo
5.0.  Therefore I doubt that the emacs build system also uses -o DIR
(except for split HTML).  I had a look at emacs sources, and I found
only non-split output with -o output_file being used that should be ok.
It is very likely that there are other places where the emacs manuals
are built, though, as the HTML manual linked to from the main emacs page
is split.

In the manuals tested that where downloaded in early 2025, mainly from
https://www.gnu.org/manual/manual.html, emacs is the only project that
uses leading paths in @setfilename.  I did not manage to get all the
manuals in thoses tests, including for GNU projects that have Texinfo
manuals (lilypond, maxima, gnupg, octave...) and there aren't any
non-GNU manual, so we still should be cautious and document any change.


As a side note, having an (unused) @setfilename consistent with the output
directory for emacs manuals is told in a comment in doc/emacs/Makefile.in:
 ## Where the output files go.
 ## Note that the setfilename command in the .texi files assumes this.
I would still suggest using a simpler @setfilename, like
  @setfilename emacs-xtra.info
in the emacs manuals, mainly for clarity.  A consequence would be that
doing
 makeinfo emacs-xtra.texi
would put the info file in the texinfo manuals directory and not in the
../../info directory, but I think that it would nevertheless be more
expected.

-- 
Pat

Reply via email to