bug#81332: info/dir and INFO_NONMISC are not gated by DOCLANGS
Vincent Belaïche <[email protected]> Tue, 4 Aug 2026 12:14:49 +0000
| Newsgroups | gmane.emacs.bugs |
|---|---|
| Message-ID | <AMBP194MB2691BE5E2BCFC0B2832F314084D42@AMBP194MB2691.EURP194.PROD.OUTLOOK.COM> |
--_000_AMBP194MB2691BE5E2BCFC0B2832F314084D42AMBP194MB2691EURP_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Dear Boris and Eli,
IMHO it is not such a good idea to have specific handling for some manuals.=
This makes makefiles more complex and hard to maintain.
Concerning Eli's point:
> THose 3 manuals must always be built and always be installed,
> regardless of DOCLANGS.
I acknowledge that some manuals are really needed to be installed in a norm=
al build. However, on the other hand, it should be possible for the aware u=
ser to configure the build without those manuals. I mean that it should be =
possible to build the Emacs executable on a machine on which the makeinfo t=
ools are not available. The Emacs executable should be able to be installed=
, start and run w/o crashing even though the mandatory manuals are not inst=
alled. The user should get some error message, just like when some applicat=
ion's DLL is not there and you cannot load it, one gets an error message te=
lling which DLL is missing.
I understand that this is not the case, and currently makeinfo is a build p=
rerequisite. Please don't take me wrong: I am not saying that the user shou=
ld be anyhow encouraged not to compile & install the manuals. My point is t=
hat having some manual build mandated prevents code factorization in the ma=
kefiles, and that also prevents aware users to disable the manual building =
(at their own risks of not getting appropriate documentation when using Ema=
cs) to get some minimalistic build. My recommendation is that makeinfo shou=
ld just be highly recommended, but just like the TeX texinfo compiler, shou=
ld not be absolutely mandated (meaning that it is ok if there is some trick=
like setting DOCLANGS to ' ' to disable manual compilation altogether).
I a nutshell, I am not proposing to change anything in what the default bui=
ld would produce, but just to have more flexibility/modularity as regards m=
anual compilation enabling/disabling (by default DOCLANGS contains at least=
default, so the mandatory manuals would still be compiled by default with =
my proposal).
Here, I am not discussing any technicalities in details, because what I am =
suggesting above needs first to be discussed/accepted/rejected.
Vincent.
________________________________
De : Boris <[email protected]>
Envoy=E9 : mardi 28 juillet 2026 17:43
=C0 : Eli Zaretskii <[email protected]>
Cc : [email protected] <[email protected]>; [email protected] =
<[email protected]>
Objet : Re: bug#81332: info/dir and INFO_NONMISC are not gated by DOCLANGS
> THose 3 manuals must always be built and always be installed,
> regardless of DOCLANGS.
Understood, and then the situation is worse than what I described: with DOC=
LANGS that does not contain default, those three manuals are not built at a=
ll on master right now. info/dir and INFO_NONMISC listing them is the corre=
ct part; the build is the broken part.
That is a regression from my second patch. Before it, every doc directory r=
an one sub-make per language, and doc/emacs, doc/lispintro and doc/lispref =
have no DOCLANG in their Makefiles, so each of those sub-makes just rebuilt=
the default manual. That is what caused the duplicate copies under make -j=
. My fix made the language list per directory, and with default filtered ou=
t those directories ended up with nothing to build.
So the fix goes the other way round: doc/emacs, doc/lispintro and doc/lispr=
ef always build the default language, whatever DOCLANGS says, while doc/mis=
c keeps honoring it. Then info/dir and INFO_NONMISC stay exactly as they ar=
e, no gating anywhere.
That also drops the build-aux question: info/dir always has those three ent=
ries, so make-info-dir never gets fewer than two arguments, and I do not ne=
ed to touch it.
One question before I write the patch: should doc/misc keep honoring DOCLAN=
GS? With DOCLANGS=3D'fr' it currently builds only ses-fr, and the English m=
isc manuals are skipped. I plan to leave that as is, since those manuals ar=
e not referenced from doc strings, but say the word if you want default for=
ced everywhere.
Vincent: this also means empty DOCLANGS will no longer disable all manuals,=
the three above will still be built. Given Eli's requirement I do not thin=
k we can keep that property.
I will send the patch once the doc/misc question is settled.
Cheers,
[email protected]
On Tuesday, 28 July 2026 at 18:34, Eli Zaretskii <[email protected]> wrote:
> > Date: Tue, 28 Jul 2026 15:23:40 +0000
> > From: Boris <[email protected]>
> > Cc: Eli Zaretskii <[email protected]>, Vincent Belaiche <vincent.b.1@hotmail=
.fr>
> >
> > The bug is closed and this is not a regression from the patches, so thi=
s is just a question: is the remaining DOCLANGS inconsistency worth fixing?=
I mentioned it when Vincent and I discussed the empty DOCLANGS case, and I=
said I could take it as a follow-up.
> >
> > Two places still hardcode the three built-in manuals:
> >
> > - srcdir_doc_info_dir_inputs lists doc/emacs/emacs.texi, doc/lispintro/=
emacs-lisp-intro.texi and doc/lispref/elisp.texi unconditionally, while the=
misc entries are gated (texi_misc_default only exists when default is in D=
OCLANGS)
> > - INFO_NONMISC lists the same three .info files for install-info
> >
> > The visible effect is with DOCLANGS=3D'fr' (or any set without default)=
: emacs-info, lispintro-info and lispref-info are no-ops, so those manuals =
are never built, but info/dir still lists them, and install-info still runs=
install-info on them. The latter is invisible today only because the recip=
e ignores errors.
>
> THose 3 manuals must always be built and always be installed,
> regardless of DOCLANGS. The first two are referenced from various doc
> strings, and the 3rd one (Lisp Intro) is important enough part of
> Emacs to be available regardless of the language preferences of the
> user who builds the manuals.
>
> > Gating both on $(filter default,$(DOCLANGS)) is a small change. One det=
ail: build-aux/make-info-dir starts with "test $# -ge 2 || exit 1", so with=
empty DOCLANGS everything would be gated away and "make info" would fail i=
nstead of generating a dir file. I would relax that to -ge 1, so info/dir i=
s still generated with the header and no entries.
>
> Can we do that without involving build-aux/ files? Those files are
> from Gnulib, so I'd prefer our local tricks to be just ours.
>
> Thanks.
>
--_000_AMBP194MB2691BE5E2BCFC0B2832F314084D42AMBP194MB2691EURP_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
Dear Boris and Eli,</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
IMHO it is not such a good idea to have specific handling for some manuals.=
This makes makefiles more complex and hard to maintain.</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
Concerning Eli's point:</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
> THose 3 manuals must always be built and always be installed,<br>
> regardless of DOCLANGS.</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
I acknowledge that some manuals are really needed to be installed in a norm=
al build. However, on the other hand, it should be possible for the aware u=
ser to configure the build without those manuals. I mean that it should be =
possible to build the Emacs executable
on a machine on which the makeinfo tools are not available. The Emacs exec=
utable should be able to be installed, start and run w/o crashing even thou=
gh the mandatory manuals are not installed. The user should get some error =
message, just like when some application's
DLL is not there and you cannot load it, one gets an error message telling=
which DLL is missing.</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
I understand that this is not the case, and currently makeinfo is a build p=
rerequisite. Please don't take me wrong: I am not saying that the user shou=
ld be anyhow encouraged not to compile & install the manuals. My point =
is that having some manual build mandated
prevents code factorization in the makefiles, and that also prevents aware=
users to disable the manual building (at their own risks of not getting ap=
propriate documentation when using Emacs) to get some minimalistic build. M=
y recommendation is that makeinfo
should just be highly recommended, but just like the TeX texinfo compiler,=
should not be absolutely mandated (meaning that it is ok if there is some =
trick like setting DOCLANGS to ' ' to disable manual compilation altogether=
).</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
I a nutshell, I am not proposing to change anything in what the default bui=
ld would produce, but just to have more flexibility/modularity as regards m=
anual compilation enabling/disabling (by default DOCLANGS contains at least=
default, so the mandatory manuals
would still be compiled by default with my proposal).</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
Here, I am not discussing any technicalities in details, because what I am =
suggesting above needs first to be discussed/accepted/rejected. </div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: "Courier New"=
, monospace; font-size: 12pt; color: rgb(0, 0, 0);">
Vincent.</div>
<div style=3D"font-family: "Courier New", monospace; font-size: 1=
2pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr style=3D"display: inline-block; width: 98%;">
<div id=3D"divRplyFwdMsg">
<div style=3D"direction: ltr; font-family: Calibri, sans-serif; font-size: =
11pt; color: rgb(0, 0, 0);">
<b>De :</b> Boris <[email protected]><br>
<b>Envoy=E9 :</b> mardi 28 juillet 2026 17:43<br>
<b>=C0 :</b> Eli Zaretskii <[email protected]><br>
<b>Cc :</b> [email protected] <[email protected]>; vince=
[email protected] <[email protected]><br>
<b>Objet :</b> Re: bug#81332: info/dir and INFO_NONMISC are not gated by DO=
CLANGS</div>
<div style=3D"direction: ltr;"> </div>
</div>
<div style=3D"font-size: 11pt;">> THose 3 manuals must always be built a=
nd always be installed,<br>
> regardless of DOCLANGS.<br>
<br>
Understood, and then the situation is worse than what I described: with DOC=
LANGS that does not contain default, those three manuals are not built at a=
ll on master right now. info/dir and INFO_NONMISC listing them is the corre=
ct part; the build is the broken
part.<br>
<br>
That is a regression from my second patch. Before it, every doc directory r=
an one sub-make per language, and doc/emacs, doc/lispintro and doc/lispref =
have no DOCLANG in their Makefiles, so each of those sub-makes just rebuilt=
the default manual. That is what
caused the duplicate copies under make -j. My fix made the language list p=
er directory, and with default filtered out those directories ended up with=
nothing to build.<br>
<br>
So the fix goes the other way round: doc/emacs, doc/lispintro and doc/lispr=
ef always build the default language, whatever DOCLANGS says, while doc/mis=
c keeps honoring it. Then info/dir and INFO_NONMISC stay exactly as they ar=
e, no gating anywhere.<br>
<br>
That also drops the build-aux question: info/dir always has those three ent=
ries, so make-info-dir never gets fewer than two arguments, and I do not ne=
ed to touch it.<br>
<br>
One question before I write the patch: should doc/misc keep honoring DOCLAN=
GS? With DOCLANGS=3D'fr' it currently builds only ses-fr, and the English m=
isc manuals are skipped. I plan to leave that as is, since those manuals ar=
e not referenced from doc strings,
but say the word if you want default forced everywhere.<br>
<br>
Vincent: this also means empty DOCLANGS will no longer disable all manuals,=
the three above will still be built. Given Eli's requirement I do not thin=
k we can keep that property.<br>
<br>
I will send the patch once the doc/misc question is settled.<br>
<br>
Cheers,<br>
[email protected]<br>
<br>
On Tuesday, 28 July 2026 at 18:34, Eli Zaretskii <[email protected]> wrote=
:<br>
<br>
> > Date: Tue, 28 Jul 2026 15:23:40 +0000<br>
> > From: Boris <[email protected]><br>
> > Cc: Eli Zaretskii <[email protected]>, Vincent Belaiche <vinc=
[email protected]><br>
> ><br>
> > The bug is closed and this is not a regression from the patches, =
so this is just a question: is the remaining DOCLANGS inconsistency worth f=
ixing? I mentioned it when Vincent and I discussed the empty DOCLANGS case,=
and I said I could take it as a follow-up.<br>
> ><br>
> > Two places still hardcode the three built-in manuals:<br>
> ><br>
> > - srcdir_doc_info_dir_inputs lists doc/emacs/emacs.texi, doc/lisp=
intro/emacs-lisp-intro.texi and doc/lispref/elisp.texi unconditionally, whi=
le the misc entries are gated (texi_misc_default only exists when default i=
s in DOCLANGS)<br>
> > - INFO_NONMISC lists the same three .info files for install-info<=
br>
> ><br>
> > The visible effect is with DOCLANGS=3D'fr' (or any set without de=
fault): emacs-info, lispintro-info and lispref-info are no-ops, so those ma=
nuals are never built, but info/dir still lists them, and install-info stil=
l runs install-info on them. The latter
is invisible today only because the recipe ignores errors.<br>
><br>
> THose 3 manuals must always be built and always be installed,<br>
> regardless of DOCLANGS. The first two are referenced from variou=
s doc<br>
> strings, and the 3rd one (Lisp Intro) is important enough part of<br>
> Emacs to be available regardless of the language preferences of the<br=
>
> user who builds the manuals.<br>
><br>
> > Gating both on $(filter default,$(DOCLANGS)) is a small change. O=
ne detail: build-aux/make-info-dir starts with "test $# -ge 2 || exit =
1", so with empty DOCLANGS everything would be gated away and "ma=
ke info" would fail instead of generating a dir file.
I would relax that to -ge 1, so info/dir is still generated with the heade=
r and no entries.<br>
><br>
> Can we do that without involving build-aux/ files? Those files a=
re<br>
> from Gnulib, so I'd prefer our local tricks to be just ours.<br>
><br>
> Thanks.<br>
></div>
</body>
</html>
--_000_AMBP194MB2691BE5E2BCFC0B2832F314084D42AMBP194MB2691EURP_--