* Git master head build failure?
@ 2021-04-01 2:41 Tim Cross
2021-04-01 3:04 ` Stefan Monnier
0 siblings, 1 reply; 53+ messages in thread
From: Tim Cross @ 2021-04-01 2:41 UTC (permalink / raw)
To: emacs-devel
Trying to build from current git head (rev:168d2628b23333) and getting
the following error
In toplevel form:
cedet/semantic/bovine/c.el:35:1: Error: Loading file /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.elc failed to provide feature ‘semantic/bovine/c-by’
make[2]: *** [Makefile:279: cedet/semantic/bovine/c.elc] Error 1
make[2]: Leaving directory '/home/tim/git/emacs/lisp'
make[1]: *** [Makefile:302: compile-main] Error 2
make[1]: Leaving directory '/home/tim/git/emacs/lisp'
make: *** [Makefile:398: lisp] Error 2
Tried the following -
git pull
make maintainer-clean
./autogen.sh
./configure
make
also tried make bootstrap.
This is in a repo which previously had the emacs-27 branch checked out.
Now has the master branch checked out.
Is this a known issue or have I missed something?
Platform is Linux (Ubuntu 20.10).
--
Tim Cross
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 2:41 Git master head build failure? Tim Cross
@ 2021-04-01 3:04 ` Stefan Monnier
2021-04-01 3:10 ` Tim Cross
2021-04-01 7:25 ` Eli Zaretskii
0 siblings, 2 replies; 53+ messages in thread
From: Stefan Monnier @ 2021-04-01 3:04 UTC (permalink / raw)
To: Tim Cross; +Cc: emacs-devel
> In toplevel form:
> cedet/semantic/bovine/c.el:35:1: Error: Loading file
> /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.elc failed to provide
> feature ‘semantic/bovine/c-by’
[...]
> This is in a repo which previously had the emacs-27 branch checked out.
> Now has the master branch checked out.
> Is this a known issue or have I missed something?
I think it's known to the extent that I have seen such problems every
once in a while, but I don't think I've seen an actual bug report for
it yet.
IIUC the problem is that our "make clean" rules don't clean hard enough.
I suspect for example that
rm /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.el
might help,
Stefan
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 3:04 ` Stefan Monnier
@ 2021-04-01 3:10 ` Tim Cross
2021-04-01 7:33 ` Eli Zaretskii
2021-04-01 9:36 ` Gregor Zattler
2021-04-01 7:25 ` Eli Zaretskii
1 sibling, 2 replies; 53+ messages in thread
From: Tim Cross @ 2021-04-01 3:10 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> In toplevel form:
>> cedet/semantic/bovine/c.el:35:1: Error: Loading file
>> /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.elc failed to provide
>> feature ‘semantic/bovine/c-by’
> [...]
>> This is in a repo which previously had the emacs-27 branch checked out.
>> Now has the master branch checked out.
>> Is this a known issue or have I missed something?
>
> I think it's known to the extent that I have seen such problems every
> once in a while, but I don't think I've seen an actual bug report for
> it yet.
>
> IIUC the problem is that our "make clean" rules don't clean hard enough.
> I suspect for example that
>
> rm /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.el
>
> might help,
>
OK, thanks Stefan. I will give that a go.
I thought 'git status' would show me anything 'left' after a clean that
was not part of the repo, but now I notice that file is included in the
.gitignore list, so would not show up.
I wonder if it would be possible for make maintainer-clean to somehow
look at what is in .gitignore and ensure anything in there is also
removed? Would be good if at least that target returned the repo to an
exact replica of what you would get if you did a fresh clone.
--
Tim Cross
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 3:04 ` Stefan Monnier
2021-04-01 3:10 ` Tim Cross
@ 2021-04-01 7:25 ` Eli Zaretskii
2021-04-01 8:34 ` Tim Cross
` (2 more replies)
1 sibling, 3 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 7:25 UTC (permalink / raw)
To: Stefan Monnier; +Cc: theophilusx, emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Wed, 31 Mar 2021 23:04:39 -0400
> Cc: emacs-devel@gnu.org
>
> I suspect for example that
>
> rm /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.el
>
> might help,
This should be added to the 'extraclean' target, IMO (together with
all the other generated files in lisp/cedet).
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 3:10 ` Tim Cross
@ 2021-04-01 7:33 ` Eli Zaretskii
2021-04-01 8:57 ` Tim Cross
2021-04-01 9:56 ` Daniel Brooks
2021-04-01 9:36 ` Gregor Zattler
1 sibling, 2 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 7:33 UTC (permalink / raw)
To: Tim Cross; +Cc: monnier, emacs-devel
> From: Tim Cross <theophilusx@gmail.com>
> Date: Thu, 01 Apr 2021 14:10:50 +1100
> Cc: emacs-devel@gnu.org
>
> I wonder if it would be possible for make maintainer-clean to somehow
> look at what is in .gitignore and ensure anything in there is also
> removed? Would be good if at least that target returned the repo to an
> exact replica of what you would get if you did a fresh clone.
First, you should be using extraclean, not maintainer-clean; see the
top-level Makefile.in for the documentation of the various clean
targets.
And second, we should simply make sure extraclean removes all the
generated files, as documented, and keep it that way. Looking into
.gitignore means either building its interpreter into our build system
(a non-trivial job, AFAIU), or using Git itself to do the job, which
would mean the job cannot be done without Git -- a disadvantage, IMO.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 7:25 ` Eli Zaretskii
@ 2021-04-01 8:34 ` Tim Cross
2021-04-01 9:00 ` Eli Zaretskii
2021-04-01 13:01 ` Eli Zaretskii
2021-04-01 13:03 ` Stefan Monnier
2 siblings, 1 reply; 53+ messages in thread
From: Tim Cross @ 2021-04-01 8:34 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Stefan Monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Stefan Monnier <monnier@iro.umontreal.ca>
>> Date: Wed, 31 Mar 2021 23:04:39 -0400
>> Cc: emacs-devel@gnu.org
>>
>> I suspect for example that
>>
>> rm /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.el
>>
>> might help,
>
> This should be added to the 'extraclean' target, IMO (together with
> all the other generated files in lisp/cedet).
Do you mean 'maintainer-clean'? I wasn't aware of 'extraclean' and it is
not listed in 'make help'. Help does say about maintainer-clean
'delete almost everything that can be regenerated'
which I think would include those CEDET files (and probably many of the
other files listed in .gitignore). My expectation, which may be wrong,
is that after running 'make maintainer-clean' you would have a really
'clean' repository that would be equivalent to creating a fresh clone. I
guess the key word in the above is 'almost'.
BTW Stefan was correct. Removing that file fixed the build issue.
--
Tim Cross
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 7:33 ` Eli Zaretskii
@ 2021-04-01 8:57 ` Tim Cross
2021-04-01 9:17 ` tomas
2021-04-01 9:56 ` Daniel Brooks
1 sibling, 1 reply; 53+ messages in thread
From: Tim Cross @ 2021-04-01 8:57 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Stefan Monnier, Emacs developers
[-- Attachment #1: Type: text/plain, Size: 1162 bytes --]
On Thu, 1 Apr 2021 at 18:33, Eli Zaretskii <eliz@gnu.org> wrote:
> > From: Tim Cross <theophilusx@gmail.com>
> > Date: Thu, 01 Apr 2021 14:10:50 +1100
> > Cc: emacs-devel@gnu.org
> >
> > I wonder if it would be possible for make maintainer-clean to somehow
> > look at what is in .gitignore and ensure anything in there is also
> > removed? Would be good if at least that target returned the repo to an
> > exact replica of what you would get if you did a fresh clone.
>
> First, you should be using extraclean, not maintainer-clean; see the
> top-level Makefile.in for the documentation of the various clean
> targets.
>
> And second, we should simply make sure extraclean removes all the
> generated files, as documented, and keep it that way. Looking into
> .gitignore means either building its interpreter into our build system
> (a non-trivial job, AFAIU), or using Git itself to do the job, which
> would mean the job cannot be done without Git -- a disadvantage, IMO.
>
In that case, either extraclean should be added to the make help output or
if the preferred mechanism is to read Makefile.in, then remove make help.
--
regards,
Tim
--
Tim Cross
[-- Attachment #2: Type: text/html, Size: 1850 bytes --]
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 8:34 ` Tim Cross
@ 2021-04-01 9:00 ` Eli Zaretskii
2021-04-01 10:56 ` Stefan Kangas
2021-04-01 13:02 ` Eli Zaretskii
0 siblings, 2 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 9:00 UTC (permalink / raw)
To: Tim Cross; +Cc: monnier, emacs-devel
> From: Tim Cross <theophilusx@gmail.com>
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
> Date: Thu, 01 Apr 2021 19:34:12 +1100
>
> >> rm /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.el
> >>
> >> might help,
> >
> > This should be added to the 'extraclean' target, IMO (together with
> > all the other generated files in lisp/cedet).
>
> Do you mean 'maintainer-clean'?
no, I meant 'extracklean'.
> I wasn't aware of 'extraclean' and it is not listed in 'make help'.
Another nit to fix, I guess.
> Help does say about maintainer-clean
>
> 'delete almost everything that can be regenerated'
That "almost" is there for a reason.
> which I think would include those CEDET files (and probably many of the
> other files listed in .gitignore).
Not in this project, no. maintainer-clean leaves some generated files
that we decided not to remove unless explicitly required. Switching
to a branch that has diverged significantly from the previous one is a
relatively rare use case, so removing those files would mean
unnecessarily longer builds.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 8:57 ` Tim Cross
@ 2021-04-01 9:17 ` tomas
0 siblings, 0 replies; 53+ messages in thread
From: tomas @ 2021-04-01 9:17 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 1105 bytes --]
On Thu, Apr 01, 2021 at 07:57:58PM +1100, Tim Cross wrote:
> On Thu, 1 Apr 2021 at 18:33, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > > From: Tim Cross <theophilusx@gmail.com>
> > > Date: Thu, 01 Apr 2021 14:10:50 +1100
> > > Cc: emacs-devel@gnu.org
> > >
> > > I wonder if it would be possible for make maintainer-clean to somehow
> > > look at what is in .gitignore and ensure anything in there is also
> > > removed? Would be good if at least that target returned the repo to an
> > > exact replica of what you would get if you did a fresh clone.
If you want /that/, then don't ask make -- ask git :-)
Look into `git clean'. Lots of options for cases where you want it actually
to remove files (-f) or just to tell you (-n), whether to remove only ignored
files (-X) or everything not known by the repo (-x) and so on. Decisions,
decisions :-)
I usually go with -fx. Teaches me hard lessons whenever my living room is
untidy :-D
I think one should strive to keep repo and build system as orthogonal as
possible (although they both fight hard against that ;-)
Cheers
- t
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 3:10 ` Tim Cross
2021-04-01 7:33 ` Eli Zaretskii
@ 2021-04-01 9:36 ` Gregor Zattler
2021-04-01 10:11 ` Andreas Schwab
1 sibling, 1 reply; 53+ messages in thread
From: Gregor Zattler @ 2021-04-01 9:36 UTC (permalink / raw)
To: emacs-devel
Hi Tim, emacs developers,
* Tim Cross <theophilusx@gmail.com> [2021-04-01; 14:10]:
> removed? Would be good if at least that target returned the repo to an
> exact replica of what you would get if you did a fresh clone.
this you can achieve with
rm -rf * ; git checkout -f
Ciao; Gregor
--
-... --- .-. . -.. ..--.. ...-.-
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 7:33 ` Eli Zaretskii
2021-04-01 8:57 ` Tim Cross
@ 2021-04-01 9:56 ` Daniel Brooks
1 sibling, 0 replies; 53+ messages in thread
From: Daniel Brooks @ 2021-04-01 9:56 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Tim Cross, monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> And second, we should simply make sure extraclean removes all the
> generated files, as documented, and keep it that way. Looking into
> .gitignore means either building its interpreter into our build system
> (a non-trivial job, AFAIU), or using Git itself to do the job, which
> would mean the job cannot be done without Git -- a disadvantage, IMO.
There are external libraries that implement it, if anyone wants an
alternative or an inspiration. One example that I know of is the
MIT–licensed Rust crate “ignore”
(https://docs.rs/ignore/0.4.17/ignore/), but note that it only gives you
the files that aren’t ignored rather than all the ones that are.
It’s not all that complicated. In the end it boils down to repeated
application of a 30–line function, plus some parsing of course.
(https://docs.rs/globset/0.4.6/src/globset/glob.rs.html#159-186)
I would say that depending on Git for this doesn’t seem like too big of
a burden; anyone without git will be no worse off than before. Just
print a warning that mentions “git clean” and suggests installing git or
doing it by hand.
db48x
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 9:36 ` Gregor Zattler
@ 2021-04-01 10:11 ` Andreas Schwab
0 siblings, 0 replies; 53+ messages in thread
From: Andreas Schwab @ 2021-04-01 10:11 UTC (permalink / raw)
To: emacs-devel
On Apr 01 2021, Gregor Zattler wrote:
> Hi Tim, emacs developers,
> * Tim Cross <theophilusx@gmail.com> [2021-04-01; 14:10]:
>> removed? Would be good if at least that target returned the repo to an
>> exact replica of what you would get if you did a fresh clone.
>
> this you can achieve with
git clean -dfx
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 9:00 ` Eli Zaretskii
@ 2021-04-01 10:56 ` Stefan Kangas
2021-04-01 13:03 ` Eli Zaretskii
2021-04-01 13:02 ` Eli Zaretskii
1 sibling, 1 reply; 53+ messages in thread
From: Stefan Kangas @ 2021-04-01 10:56 UTC (permalink / raw)
To: Eli Zaretskii, Tim Cross; +Cc: monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
>> I wasn't aware of 'extraclean' and it is not listed in 'make help'.
>
> Another nit to fix, I guess.
Does this look okay?
diff --git a/GNUmakefile b/GNUmakefile
index f27163840b..0df5a9abba 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -50,6 +50,8 @@ help:
@echo "make distclean -- delete all build and configuration files,"
@echo " leave only files included in source
distribution"
@echo "make maintainer-clean -- delete almost everything that can be
regenerated"
+ @echo "make extraclean -- delete everything that can be
regenerated, as well as"
+ @echo " backup and autosave files"
@echo "make bootstrap -- delete all compiled files to force a
new bootstrap"
@echo " from a clean slate, then build in
the normal way"
@echo "make uninstall -- remove files installed by 'make install'"
^ permalink raw reply related [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 7:25 ` Eli Zaretskii
2021-04-01 8:34 ` Tim Cross
@ 2021-04-01 13:01 ` Eli Zaretskii
2021-04-01 13:03 ` Stefan Monnier
2 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 13:01 UTC (permalink / raw)
To: monnier, theophilusx; +Cc: emacs-devel
> Date: Thu, 01 Apr 2021 10:25:52 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: theophilusx@gmail.com, emacs-devel@gnu.org
>
> > rm /home/tim/git/emacs/lisp/cedet/semantic/bovine/c-by.el
> >
> > might help,
>
> This should be added to the 'extraclean' target, IMO (together with
> all the other generated files in lisp/cedet).
Actually, c-by.el would have been deleted already if you said "make
extraclean".
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 9:00 ` Eli Zaretskii
2021-04-01 10:56 ` Stefan Kangas
@ 2021-04-01 13:02 ` Eli Zaretskii
1 sibling, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 13:02 UTC (permalink / raw)
To: theophilusx; +Cc: monnier, emacs-devel
> Date: Thu, 01 Apr 2021 12:00:34 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
>
> > I wasn't aware of 'extraclean' and it is not listed in 'make help'.
>
> Another nit to fix, I guess.
Now done.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 10:56 ` Stefan Kangas
@ 2021-04-01 13:03 ` Eli Zaretskii
2021-04-01 13:32 ` Stefan Kangas
0 siblings, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 13:03 UTC (permalink / raw)
To: Stefan Kangas; +Cc: theophilusx, monnier, emacs-devel
> From: Stefan Kangas <stefankangas@gmail.com>
> Date: Thu, 1 Apr 2021 03:56:54 -0700
> Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> I wasn't aware of 'extraclean' and it is not listed in 'make help'.
> >
> > Another nit to fix, I guess.
>
> Does this look okay?
Thanks, but this should go together with fixing our makefile.in files
to follow fit. I've now done that on the master branch.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 7:25 ` Eli Zaretskii
2021-04-01 8:34 ` Tim Cross
2021-04-01 13:01 ` Eli Zaretskii
@ 2021-04-01 13:03 ` Stefan Monnier
2021-04-01 13:07 ` Eli Zaretskii
2 siblings, 1 reply; 53+ messages in thread
From: Stefan Monnier @ 2021-04-01 13:03 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: theophilusx, emacs-devel
> This should be added to the 'extraclean' target, IMO (together with
> all the other generated files in lisp/cedet).
I can never remember which clean target does what (and reading their
description has usually not been sufficient to be able to predict which
files would remain when I wasn't sure). Luckily I don't think it
matters much because I never invoke such targets.
But what does matter is what happens when we `make bootstrap`, because
this is a much more common need than `make maintainer-clean` or `make
extraclean`.
Stefan
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 13:03 ` Stefan Monnier
@ 2021-04-01 13:07 ` Eli Zaretskii
2021-04-01 13:32 ` Stefan Kangas
2021-04-01 15:32 ` Stefan Monnier
0 siblings, 2 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 13:07 UTC (permalink / raw)
To: Stefan Monnier; +Cc: theophilusx, emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: theophilusx@gmail.com, emacs-devel@gnu.org
> Date: Thu, 01 Apr 2021 09:03:53 -0400
>
> > This should be added to the 'extraclean' target, IMO (together with
> > all the other generated files in lisp/cedet).
>
> I can never remember which clean target does what (and reading their
> description has usually not been sufficient to be able to predict which
> files would remain when I wasn't sure). Luckily I don't think it
> matters much because I never invoke such targets.
>
> But what does matter is what happens when we `make bootstrap`, because
> this is a much more common need than `make maintainer-clean` or `make
> extraclean`.
I never use "make bootstrap": does that mean it isn't important
either? ;-)
Seriously, though: this depends on your workflows. AFAIU most people
do "make bootstrap" to solve problems with Lisp macro expansions, and
for that forcing them to regenerate every single file that isn't
versioned is not the best idea. If you want to start from a pristine
clone, just clone a new worktree.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 13:03 ` Eli Zaretskii
@ 2021-04-01 13:32 ` Stefan Kangas
0 siblings, 0 replies; 53+ messages in thread
From: Stefan Kangas @ 2021-04-01 13:32 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: theophilusx, monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> Thanks, but this should go together with fixing our makefile.in files
> to follow fit. I've now done that on the master branch.
Thanks.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 13:07 ` Eli Zaretskii
@ 2021-04-01 13:32 ` Stefan Kangas
2021-04-01 13:36 ` Eli Zaretskii
2021-04-01 15:32 ` Stefan Monnier
1 sibling, 1 reply; 53+ messages in thread
From: Stefan Kangas @ 2021-04-01 13:32 UTC (permalink / raw)
To: Eli Zaretskii, Stefan Monnier; +Cc: theophilusx, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> AFAIU most people do "make bootstrap" to solve problems with Lisp
> macro expansions, and for that forcing them to regenerate every single
> file that isn't versioned is not the best idea.
What do you use instead of bootstrap in this case?
"make mostlyclean && make"?
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 13:32 ` Stefan Kangas
@ 2021-04-01 13:36 ` Eli Zaretskii
0 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 13:36 UTC (permalink / raw)
To: Stefan Kangas; +Cc: theophilusx, monnier, emacs-devel
> From: Stefan Kangas <stefankangas@gmail.com>
> Date: Thu, 1 Apr 2021 08:32:25 -0500
> Cc: theophilusx@gmail.com, emacs-devel@gnu.org
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > AFAIU most people do "make bootstrap" to solve problems with Lisp
> > macro expansions, and for that forcing them to regenerate every single
> > file that isn't versioned is not the best idea.
>
> What do you use instead of bootstrap in this case?
> "make mostlyclean && make"?
No, I remove the offending *.elc files and say "make" again.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 13:07 ` Eli Zaretskii
2021-04-01 13:32 ` Stefan Kangas
@ 2021-04-01 15:32 ` Stefan Monnier
2021-04-01 15:37 ` Eli Zaretskii
1 sibling, 1 reply; 53+ messages in thread
From: Stefan Monnier @ 2021-04-01 15:32 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: theophilusx, emacs-devel
> I never use "make bootstrap": does that mean it isn't important either? ;-)
I almost never *run* `make bootstrap` either, but I do *use* it quite
frequently in emails as the standard tool to solve other people's
build problems.
> Seriously, though: this depends on your workflows. AFAIU most people
> do "make bootstrap" to solve problems with Lisp macro expansions, and
> for that forcing them to regenerate every single file that isn't
> versioned is not the best idea. If you want to start from a pristine
> clone, just clone a new worktree.
I agree there's a tension. But I'm beginning to think that
bootstrap-clean should remove the handful of generated *-by.el and
*-wy.el files (tho an alternative would be to improve the dependency
info so that they get regenerated when their generator's code changes,
which would arguably be even better).
Stefan
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: Git master head build failure?
2021-04-01 15:32 ` Stefan Monnier
@ 2021-04-01 15:37 ` Eli Zaretskii
2021-04-01 16:05 ` extraclean and admin/grammars [was Re: Git master head build failure?] Glenn Morris
0 siblings, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 15:37 UTC (permalink / raw)
To: Stefan Monnier; +Cc: theophilusx, emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Thu, 01 Apr 2021 11:32:18 -0400
> Cc: theophilusx@gmail.com, emacs-devel@gnu.org
>
> I'm beginning to think that bootstrap-clean should remove the
> handful of generated *-by.el and *-wy.el files
Why is that?
"make bootstrap" isn't for building from a pristine tree, that's not
its purpose. Perhaps we want such a Make target, but then let's not
overload "bootstrap" with such an additional semantics, let's have a
separate target for that. Then we will have solved the tension simply
and painlessly.
^ permalink raw reply [flat|nested] 53+ messages in thread
* extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 15:37 ` Eli Zaretskii
@ 2021-04-01 16:05 ` Glenn Morris
2021-04-01 16:09 ` Lars Ingebrigtsen
` (3 more replies)
0 siblings, 4 replies; 53+ messages in thread
From: Glenn Morris @ 2021-04-01 16:05 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: theophilusx, Stefan Monnier, emacs-devel
Eli Zaretskii wrote:
> "make bootstrap" isn't for building from a pristine tree, that's not
> its purpose.
I consider that to be the purpose of bootstrap.
I disagree with the description of extraclean as "and all generated files".
Emacs use of extraclean is really an abuse - see comments in the
top-level Makefile. IIRC, the only differences between extraclean
and bootstrap-clean are:
1) bootstrap-clean does not delete the generated leim files.
This is because they are slow to rebuild and the sources rarely change.
2) bootstrap-clean does not delete the generated semantic grammars.
These are not slow to rebuild. As my comment in admin/grammars/Makefile.in
says, these could easily be deleted in bootstrap-clean.
I don't even really remember why I did it that way now.
Since several people seem to have an issue lately with these files
getting corrupted, I have a good mind to make that change.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 16:05 ` extraclean and admin/grammars [was Re: Git master head build failure?] Glenn Morris
@ 2021-04-01 16:09 ` Lars Ingebrigtsen
2021-04-01 16:19 ` Lars Ingebrigtsen
2021-04-01 18:31 ` Eli Zaretskii
2021-04-01 17:15 ` Stefan Monnier
` (2 subsequent siblings)
3 siblings, 2 replies; 53+ messages in thread
From: Lars Ingebrigtsen @ 2021-04-01 16:09 UTC (permalink / raw)
To: Glenn Morris; +Cc: Eli Zaretskii, theophilusx, Stefan Monnier, emacs-devel
Glenn Morris <rgm@gnu.org> writes:
> 1) bootstrap-clean does not delete the generated leim files.
> This is because they are slow to rebuild and the sources rarely change.
>
> 2) bootstrap-clean does not delete the generated semantic grammars.
> These are not slow to rebuild. As my comment in admin/grammars/Makefile.in
> says, these could easily be deleted in bootstrap-clean.
> I don't even really remember why I did it that way now.
>
> Since several people seem to have an issue lately with these files
> getting corrupted, I have a good mind to make that change.
My preference would be for "make bootstrap" to delete these files, too
-- so that we have one simple, easy to remember recipe to give users who
have build problems.
Eli suggested adding an additional build target for this, but I'm not
sure I understood the reasoning behind it.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 16:09 ` Lars Ingebrigtsen
@ 2021-04-01 16:19 ` Lars Ingebrigtsen
2021-04-02 4:19 ` Tim Cross
2021-04-01 18:31 ` Eli Zaretskii
1 sibling, 1 reply; 53+ messages in thread
From: Lars Ingebrigtsen @ 2021-04-01 16:19 UTC (permalink / raw)
To: Glenn Morris; +Cc: Eli Zaretskii, theophilusx, Stefan Monnier, emacs-devel
Lars Ingebrigtsen <larsi@gnus.org> writes:
> My preference would be for "make bootstrap" to delete these files, too
> -- so that we have one simple, easy to remember recipe to give users who
> have build problems.
Here's timing numbers from my compile rig:
$ make extraclean; time make -j16
real 2m53.046s
user 13m38.421s
sys 0m44.558s
$ time make -j16 bootstrap
real 2m46.672s
user 12m47.264s
sys 0m44.395s
So the difference isn't very large.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 16:05 ` extraclean and admin/grammars [was Re: Git master head build failure?] Glenn Morris
2021-04-01 16:09 ` Lars Ingebrigtsen
@ 2021-04-01 17:15 ` Stefan Monnier
2021-04-01 19:56 ` Eli Zaretskii
2021-04-01 18:29 ` Eli Zaretskii
2021-04-04 16:28 ` Glenn Morris
3 siblings, 1 reply; 53+ messages in thread
From: Stefan Monnier @ 2021-04-01 17:15 UTC (permalink / raw)
To: Glenn Morris; +Cc: Eli Zaretskii, theophilusx, emacs-devel
> Emacs use of extraclean is really an abuse - see comments in the
> top-level Makefile. IIRC, the only differences between extraclean
> and bootstrap-clean are:
From a theoretical standpoint, I think `bootstrap-clean` should delete the
files that are both:
A) generated.
B) not faithfully described by the makefile dependencies.
In practice, very few of our generated files have 100% of their
dependencies faithfully described in our makefiles, so the theory needs
to be taken with a large grain of salt.
Others less theoretical and more pragmatic factors that can be important are
C) used during the generation of other files.
D) changes frequently.
(C) can be important because it can cause not just errors down the line
when using the corresponding functionality, but also errors during the
build itself.
> 1) bootstrap-clean does not delete the generated leim files.
> This is because they are slow to rebuild and the sources rarely change.
AFAIK these don't satisfy B very much, (nor C nor D) so I don't see much
need to delete them in `bootstrap-clean`, indeed.
> 2) bootstrap-clean does not delete the generated semantic grammars.
> These are not slow to rebuild. As my comment in
> admin/grammars/Makefile.in says, these could easily be deleted in
> bootstrap-clean. I don't even really remember why I did it that
> way now.
I think for those we could also improve the makefile dependencies.
E.g. a first step could be to move `grammar-wy.el` to `grm-wy-boot.el` like we
do with `ldefs-boot.el` (see patch below) to break the
circular dependency.
WDYT?
Stefan
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 16:05 ` extraclean and admin/grammars [was Re: Git master head build failure?] Glenn Morris
2021-04-01 16:09 ` Lars Ingebrigtsen
2021-04-01 17:15 ` Stefan Monnier
@ 2021-04-01 18:29 ` Eli Zaretskii
2021-04-04 16:28 ` Glenn Morris
3 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 18:29 UTC (permalink / raw)
To: Glenn Morris; +Cc: theophilusx, monnier, emacs-devel
> From: Glenn Morris <rgm@gnu.org>
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, theophilusx@gmail.com, emacs-devel@gnu.org
> Date: Thu, 01 Apr 2021 12:05:25 -0400
>
> Eli Zaretskii wrote:
>
> > "make bootstrap" isn't for building from a pristine tree, that's not
> > its purpose.
>
> I consider that to be the purpose of bootstrap.
I disagree.
> I disagree with the description of extraclean as "and all generated files".
I disagree with your disagreement.
> Since several people seem to have an issue lately with these files
> getting corrupted, I have a good mind to make that change.
Please don't.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 16:09 ` Lars Ingebrigtsen
2021-04-01 16:19 ` Lars Ingebrigtsen
@ 2021-04-01 18:31 ` Eli Zaretskii
2021-04-02 13:40 ` Lars Ingebrigtsen
1 sibling, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 18:31 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: rgm, theophilusx, monnier, emacs-devel
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: Eli Zaretskii <eliz@gnu.org>, theophilusx@gmail.com, Stefan Monnier
> <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
> Date: Thu, 01 Apr 2021 18:09:57 +0200
>
> Eli suggested adding an additional build target for this, but I'm not
> sure I understood the reasoning behind it.
I thought I explained the reasoning: "make bootstrap" is for
bootstrapping Emacs, not for building from a pristine worktree.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 17:15 ` Stefan Monnier
@ 2021-04-01 19:56 ` Eli Zaretskii
2021-04-01 20:13 ` Stefan Monnier
0 siblings, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-01 19:56 UTC (permalink / raw)
To: Stefan Monnier; +Cc: rgm, theophilusx, emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Thu, 01 Apr 2021 13:15:56 -0400
> Cc: Eli Zaretskii <eliz@gnu.org>, theophilusx@gmail.com, emacs-devel@gnu.org
>
> E.g. a first step could be to move `grammar-wy.el` to `grm-wy-boot.el` like we
> do with `ldefs-boot.el` (see patch below) to break the
> circular dependency.
What patch?
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 19:56 ` Eli Zaretskii
@ 2021-04-01 20:13 ` Stefan Monnier
2021-04-03 7:58 ` Eli Zaretskii
0 siblings, 1 reply; 53+ messages in thread
From: Stefan Monnier @ 2021-04-01 20:13 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, theophilusx, emacs-devel
>> E.g. a first step could be to move `grammar-wy.el` to `grm-wy-boot.el` like we
>> do with `ldefs-boot.el` (see patch below) to break the
>> circular dependency.
>
> What patch?
What do you mean "what patch"? *The* patch, of course.
Stefan
diff --git a/.gitignore b/.gitignore
index b653ef215b..9fe8ecb594 100644
--- a/.gitignore
+++ b/.gitignore
@@ -88,6 +88,7 @@ lisp/cedet/semantic/wisent/javat-wy.el
lisp/cedet/semantic/wisent/js-wy.el
lisp/cedet/semantic/wisent/python-wy.el
lisp/cedet/srecode/srt-wy.el
+lisp/cedet/semantic/grammar-wy.el
lisp/eshell/esh-groups.el
lisp/finder-inf.el
lisp/leim/ja-dic/
diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in
index aa09d9edf9..800e31762d 100644
--- a/admin/grammars/Makefile.in
+++ b/admin/grammars/Makefile.in
@@ -48,14 +48,11 @@ BOVINE =
${bovinedir}/make-by.el \
${bovinedir}/scm-by.el
-## FIXME Should include this one too:
-## ${cedetdir}/semantic/grammar-wy.el
-## but semantic/grammar.el (which is what we use to generate grammar-wy.el)
-## requires it!
-WISENT = \
- ${wisentdir}/javat-wy.el \
- ${wisentdir}/js-wy.el \
- ${wisentdir}/python-wy.el \
+WISENT = \
+ ${cedetdir}/semantic/grammar-wy.el \
+ ${wisentdir}/javat-wy.el \
+ ${wisentdir}/js-wy.el \
+ ${wisentdir}/python-wy.el \
${cedetdir}/srecode/srt-wy.el
ALL = ${BOVINE} ${WISENT}
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index dba289fdd7..782327e617 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -31,7 +31,12 @@
(require 'semantic/format)
;; FIXME this is a generated file, but we need to load this file to
;; generate it!
-(require 'semantic/grammar-wy)
+;; We need `semantic/grammar-wy.el' but we're also needed to generate
+;; that file from `grammar.wy', so to break the dependency, we keep
+;; a bootstrap copy of `grammar-wy.el' in `grm-wy-boot.el'.
+(eval-and-compile
+ (unless (require 'semantic/grammar-wy nil t)
+ (load "semantic/grm-wy-boot")))
(require 'semantic/idle)
(require 'help-fns)
(require 'semantic/analyze)
diff --git a/lisp/cedet/semantic/grammar-wy.el b/lisp/cedet/semantic/grm-wy-boot.el
similarity index 100%
rename from lisp/cedet/semantic/grammar-wy.el
rename to lisp/cedet/semantic/grm-wy-boot.el
^ permalink raw reply related [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 16:19 ` Lars Ingebrigtsen
@ 2021-04-02 4:19 ` Tim Cross
2021-04-02 5:58 ` Eli Zaretskii
0 siblings, 1 reply; 53+ messages in thread
From: Tim Cross @ 2021-04-02 4:19 UTC (permalink / raw)
To: Lars Ingebrigtsen
Cc: Glenn Morris, Eli Zaretskii, Stefan Monnier, Emacs developers
[-- Attachment #1: Type: text/plain, Size: 969 bytes --]
On Fri, 2 Apr 2021 at 03:19, Lars Ingebrigtsen <larsi@gnus.org> wrote:
> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
> > My preference would be for "make bootstrap" to delete these files, too
> > -- so that we have one simple, easy to remember recipe to give users who
> > have build problems.
>
> Here's timing numbers from my compile rig:
>
> $ make extraclean; time make -j16
>
> real 2m53.046s
> user 13m38.421s
> sys 0m44.558s
>
> $ time make -j16 bootstrap
>
> real 2m46.672s
> user 12m47.264s
> sys 0m44.395s
>
> So the difference isn't very large.
>
>
I was going to post something similar. I found the same when I did a timing
comparison as well. The difference is very small and doesn't provide much
support for justifying having both targets. There may be other reasons to
have both, but build time differences don't seem sufficient, especially
given the potential confusion wrt the different targets.
--
regards,
Tim
--
Tim Cross
[-- Attachment #2: Type: text/html, Size: 1645 bytes --]
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-02 4:19 ` Tim Cross
@ 2021-04-02 5:58 ` Eli Zaretskii
2021-04-02 13:41 ` Lars Ingebrigtsen
0 siblings, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-02 5:58 UTC (permalink / raw)
To: Tim Cross; +Cc: rgm, larsi, monnier, emacs-devel
> From: Tim Cross <theophilusx@gmail.com>
> Date: Fri, 2 Apr 2021 15:19:02 +1100
> Cc: Glenn Morris <rgm@gnu.org>, Eli Zaretskii <eliz@gnu.org>,
> Stefan Monnier <monnier@iro.umontreal.ca>,
> Emacs developers <emacs-devel@gnu.org>
>
> $ time make -j16 bootstrap
>
> real 2m46.672s
> user 12m47.264s
> sys 0m44.395s
>
> So the difference isn't very large.
>
> I was going to post something similar. I found the same when I did a timing comparison as well. The
> difference is very small and doesn't provide much support for justifying having both targets. There may be
> other reasons to have both, but build time differences don't seem sufficient, especially given the potential
> confusion wrt the different targets.
To the extent that times are at all relevant, you should time on a
slow machine, and without -j16 (which hints on a modern and a very
powerful CPU). Otherwise the times are completely uninteresting in
this context (although even they already show an extra minute of user
time).
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 18:31 ` Eli Zaretskii
@ 2021-04-02 13:40 ` Lars Ingebrigtsen
2021-04-02 13:57 ` Eli Zaretskii
0 siblings, 1 reply; 53+ messages in thread
From: Lars Ingebrigtsen @ 2021-04-02 13:40 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, theophilusx, monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> I thought I explained the reasoning: "make bootstrap" is for
> bootstrapping Emacs, not for building from a pristine worktree.
I don't understand what you mean the difference between "bootstrapping
Emacs" and "building from a pristine worktree" is.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-02 5:58 ` Eli Zaretskii
@ 2021-04-02 13:41 ` Lars Ingebrigtsen
2021-04-02 13:58 ` Eli Zaretskii
0 siblings, 1 reply; 53+ messages in thread
From: Lars Ingebrigtsen @ 2021-04-02 13:41 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, Tim Cross, monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> To the extent that times are at all relevant, you should time on a
> slow machine, and without -j16 (which hints on a modern and a very
> powerful CPU).
The percentage increase in time should be somewhat similar. It's less
than a 10% increase in "make bootstrap" time (which is something you say
you never do).
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-02 13:40 ` Lars Ingebrigtsen
@ 2021-04-02 13:57 ` Eli Zaretskii
2021-04-03 13:30 ` Lars Ingebrigtsen
0 siblings, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-02 13:57 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: rgm, theophilusx, monnier, emacs-devel
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: rgm@gnu.org, theophilusx@gmail.com, monnier@iro.umontreal.ca,
> emacs-devel@gnu.org
> Date: Fri, 02 Apr 2021 15:40:42 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > I thought I explained the reasoning: "make bootstrap" is for
> > bootstrapping Emacs, not for building from a pristine worktree.
>
> I don't understand what you mean the difference between "bootstrapping
> Emacs" and "building from a pristine worktree" is.
Bootstrapping Emacs means building a working Emacs executable when we
either have no Emacs executable at all or that executable isn't
working or is broken for some reason.
IOW, bootstrapping Emacs doesn't _have_ to delete all generated files,
though it _might_ delete those which are in the way of building a
working Emacs.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-02 13:41 ` Lars Ingebrigtsen
@ 2021-04-02 13:58 ` Eli Zaretskii
0 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-02 13:58 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: rgm, theophilusx, monnier, emacs-devel
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: Tim Cross <theophilusx@gmail.com>, rgm@gnu.org,
> monnier@iro.umontreal.ca, emacs-devel@gnu.org
> Date: Fri, 02 Apr 2021 15:41:51 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > To the extent that times are at all relevant, you should time on a
> > slow machine, and without -j16 (which hints on a modern and a very
> > powerful CPU).
>
> The percentage increase in time should be somewhat similar. It's less
> than a 10% increase in "make bootstrap" time (which is something you say
> you never do).
Percentage is not the only thing that counts; absolute times count as
well. Even an extra minute is long enough to annoy, and on older
machines it will be more.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 20:13 ` Stefan Monnier
@ 2021-04-03 7:58 ` Eli Zaretskii
2021-04-13 2:20 ` Stefan Monnier
0 siblings, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-03 7:58 UTC (permalink / raw)
To: Stefan Monnier; +Cc: rgm, theophilusx, emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: rgm@gnu.org, theophilusx@gmail.com, emacs-devel@gnu.org
> Date: Thu, 01 Apr 2021 16:13:24 -0400
>
> >> E.g. a first step could be to move `grammar-wy.el` to `grm-wy-boot.el` like we
> >> do with `ldefs-boot.el` (see patch below) to break the
> >> circular dependency.
> >
> > What patch?
>
> What do you mean "what patch"? *The* patch, of course.
Assuming you tested that during bootstrap (which you say you never
do), and assuming there's no better way of breaking the circular
dependency, I'm okay with the change. But please also change
admin/make-tarball.txt to say that grm-wy-boot.el should be updated
the same way as ldefs-boot.el is. We should also make sure
grm-wy-boot.el is updated in Git whenever grammar.wy changes.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-02 13:57 ` Eli Zaretskii
@ 2021-04-03 13:30 ` Lars Ingebrigtsen
2021-04-03 14:15 ` Eli Zaretskii
0 siblings, 1 reply; 53+ messages in thread
From: Lars Ingebrigtsen @ 2021-04-03 13:30 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, theophilusx, monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> Bootstrapping Emacs means building a working Emacs executable when we
> either have no Emacs executable at all or that executable isn't
> working or is broken for some reason.
>
> IOW, bootstrapping Emacs doesn't _have_ to delete all generated files,
> though it _might_ delete those which are in the way of building a
> working Emacs.
I still don't understand what mean here, since it's been demonstrated
several times that (in certain circumstances) people have to say "make
extraclean" to build a working Emacs executable. So "make bootstrap"
doesn't do what it says on the tin, and the suggestion is to make it do
so.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-03 13:30 ` Lars Ingebrigtsen
@ 2021-04-03 14:15 ` Eli Zaretskii
2021-04-03 22:36 ` chad
` (2 more replies)
0 siblings, 3 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-03 14:15 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: rgm, theophilusx, monnier, emacs-devel
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: rgm@gnu.org, theophilusx@gmail.com, monnier@iro.umontreal.ca,
> emacs-devel@gnu.org
> Date: Sat, 03 Apr 2021 15:30:45 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > Bootstrapping Emacs means building a working Emacs executable when we
> > either have no Emacs executable at all or that executable isn't
> > working or is broken for some reason.
> >
> > IOW, bootstrapping Emacs doesn't _have_ to delete all generated files,
> > though it _might_ delete those which are in the way of building a
> > working Emacs.
>
> I still don't understand what mean here, since it's been demonstrated
> several times that (in certain circumstances) people have to say "make
> extraclean" to build a working Emacs executable.
"make extraclean" is only needed when doing something very drastic,
like switching to a very different branch. That is an extremely rare
(if not improbable) use case, so IMO having everyone pay for it is
unjustified.
> So "make bootstrap" doesn't do what it says on the tin
But it does: it bootstraps the current configuration of Emacs by doing
what is necessary, but not more than that.
It sounds like you think that "make bootstrap" is equivalent to
checking out a pristine clone. But that is not the case, at least not
for most people who use that target.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-03 14:15 ` Eli Zaretskii
@ 2021-04-03 22:36 ` chad
2021-04-04 7:20 ` Eli Zaretskii
2021-04-03 23:52 ` Tim Cross
2021-04-04 19:44 ` Lars Ingebrigtsen
2 siblings, 1 reply; 53+ messages in thread
From: chad @ 2021-04-03 22:36 UTC (permalink / raw)
To: Eli Zaretskii
Cc: rgm, Lars Ingebrigtsen, Tim Cross, Stefan Monnier,
EMACS development team
[-- Attachment #1: Type: text/plain, Size: 2105 bytes --]
On Sat, Apr 3, 2021 at 7:16 AM Eli Zaretskii <eliz@gnu.org> wrote:
> > I still don't understand what mean here, since it's been demonstrated
> > several times that (in certain circumstances) people have to say "make
> > extraclean" to build a working Emacs executable.
>
> "make extraclean" is only needed when doing something very drastic,
> like switching to a very different branch. That is an extremely rare
> (if not improbable) use case, so IMO having everyone pay for it is
> unjustified.
>
> > So "make bootstrap" doesn't do what it says on the tin
>
> But it does: it bootstraps the current configuration of Emacs by doing
> what is necessary, but not more than that.
>
> It sounds like you think that "make bootstrap" is equivalent to
> checking out a pristine clone. But that is not the case, at least not
> for most people who use that target.
>
Without getting too caught up in the details of who-said-what-when, when I
read the Makefile, this text:
# make bootstrap
> # Removes all the compiled files to force a new bootstrap from a
> # clean slate, and then build in the normal way.
..it makes me think something much closer to what I think Lars was saying
"make bootstrap" should do than "only use this if you don't have
src/{t,}emacs", which is roughly how I interpret (perhaps wrongly) what Eli
is suggesting "make boostrap" is for. It also surprises me that emacs'
build system needs clean, mostlyclean, distclean, maintainer-clean,
extraclean, and bootstrap, but that overhead seems very low, mostly
confusion around which to use.
Probably, I'm biased by my own use-case, which is roughly: I periodically
(multiple times a week) pull and bootstrap emacs using a custom build
script, so I can test the latest and greatest of emacs-devel. When I do
work on specific changes myself, I use "make all" nearly all the time (I
have memories of needing to bootstrap now and then, but I can't recall the
circumstances). That said, I'm using a moderately performant machine,
(currently 3 years old, before that up to 8 years old) and typically run
-j6.
Hope that helps.
~Chad
[-- Attachment #2: Type: text/html, Size: 2829 bytes --]
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-03 14:15 ` Eli Zaretskii
2021-04-03 22:36 ` chad
@ 2021-04-03 23:52 ` Tim Cross
2021-04-04 7:39 ` Eli Zaretskii
2021-04-04 19:44 ` Lars Ingebrigtsen
2 siblings, 1 reply; 53+ messages in thread
From: Tim Cross @ 2021-04-03 23:52 UTC (permalink / raw)
To: Eli Zaretskii
Cc: Glenn Morris, Lars Ingebrigtsen, Stefan Monnier, Emacs developers
[-- Attachment #1: Type: text/plain, Size: 819 bytes --]
On Sun, 4 Apr 2021 at 01:15, Eli Zaretskii <eliz@gnu.org> wrote:
>
> "make extraclean" is only needed when doing something very drastic,
> like switching to a very different branch. That is an extremely rare
> (if not improbable) use case, so IMO having everyone pay for it is
> unjustified.
>
>
I'm not sure that assumption is correct. You can run into this issue just
changing commits, not switching branches if that commit is old enough. For
example, checking out the emacs-27 tag. I'm also not convinced moving
between the last released version and the current development version and
back again is that unusual and the longer things go between the last
release and current development head, the larger the difference in commits
and greater the potential for this sort of issue.
--
regards,
Tim
--
Tim Cross
[-- Attachment #2: Type: text/html, Size: 1353 bytes --]
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-03 22:36 ` chad
@ 2021-04-04 7:20 ` Eli Zaretskii
0 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-04 7:20 UTC (permalink / raw)
To: chad; +Cc: rgm, larsi, theophilusx, monnier, emacs-devel
> From: chad <yandros@gmail.com>
> Date: Sat, 3 Apr 2021 15:36:51 -0700
> Cc: Lars Ingebrigtsen <larsi@gnus.org>, rgm@gnu.org, Tim Cross <theophilusx@gmail.com>,
> Stefan Monnier <monnier@iro.umontreal.ca>, EMACS development team <emacs-devel@gnu.org>
>
> # make bootstrap
> # Removes all the compiled files to force a new bootstrap from a
> # clean slate, and then build in the normal way.
>
> ..it makes me think something much closer to what I think Lars was saying "make bootstrap" should do than
> "only use this if you don't have src/{t,}emacs", which is roughly how I interpret (perhaps wrongly) what Eli is
> suggesting "make boostrap" is for. It also surprises me that emacs' build system needs clean, mostlyclean,
> distclean, maintainer-clean, extraclean, and bootstrap, but that overhead seems very low, mostly confusion
> around which to use.
I guess you've missed the "all the compiled files" part?
> Probably, I'm biased by my own use-case, which is roughly: I periodically (multiple times a week) pull and
> bootstrap emacs using a custom build script, so I can test the latest and greatest of emacs-devel. When I do
> work on specific changes myself, I use "make all" nearly all the time (I have memories of needing to
> bootstrap now and then, but I can't recall the circumstances). That said, I'm using a moderately performant
> machine, (currently 3 years old, before that up to 8 years old) and typically run -j6.
I think your workflow is based on old Makefiles, where "make
bootstrap" was needed much more frequently than nowadays. When we
switched to requiring GNU Make, many changes were made in the
configury stuff that make bootstrap needed much less frequently. From
now on, I suggest that you just say "make -j6", it should "just work".
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-03 23:52 ` Tim Cross
@ 2021-04-04 7:39 ` Eli Zaretskii
0 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-04 7:39 UTC (permalink / raw)
To: Tim Cross; +Cc: rgm, larsi, monnier, emacs-devel
> From: Tim Cross <theophilusx@gmail.com>
> Date: Sun, 4 Apr 2021 09:52:31 +1000
> Cc: Glenn Morris <rgm@gnu.org>, Lars Ingebrigtsen <larsi@gnus.org>,
> Stefan Monnier <monnier@iro.umontreal.ca>,
> Emacs developers <emacs-devel@gnu.org>
>
> On Sun, 4 Apr 2021 at 01:15, Eli Zaretskii <eliz@gnu.org> wrote:
>
> "make extraclean" is only needed when doing something very drastic,
> like switching to a very different branch. That is an extremely rare
> (if not improbable) use case, so IMO having everyone pay for it is
> unjustified.
>
> I'm not sure that assumption is correct. You can run into this issue just changing commits, not switching
> branches if that commit is old enough. For example, checking out the emacs-27 tag. I'm also not convinced
> moving between the last released version and the current development version and back again is that
> unusual and the longer things go between the last release and current development head, the larger the
> difference in commits and greater the potential for this sort of issue.
It isn't an assumption: I'm doing all of the above all the time.
Switching between branches in Emacs is not recommended, because they
diverge very quickly. If you must do that, "make extraclean" is the
way to go.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-01 16:05 ` extraclean and admin/grammars [was Re: Git master head build failure?] Glenn Morris
` (2 preceding siblings ...)
2021-04-01 18:29 ` Eli Zaretskii
@ 2021-04-04 16:28 ` Glenn Morris
2021-04-04 17:12 ` Eli Zaretskii
3 siblings, 1 reply; 53+ messages in thread
From: Glenn Morris @ 2021-04-04 16:28 UTC (permalink / raw)
To: emacs-devel
I've tidied this up, so it is at least now possible to recommend the
standard maintainer-clean instead of the non-standard extraclean.
Personally I'm sure bootstrap should be equivalent to maintainer-clean,
except maybe for leim/ja-dic. But the generated files from
admin/{charsets,grammars,unidata} are all trivial to recreate,
and I don't see why there has to be a big debate about it.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-04 16:28 ` Glenn Morris
@ 2021-04-04 17:12 ` Eli Zaretskii
0 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-04 17:12 UTC (permalink / raw)
To: Glenn Morris; +Cc: emacs-devel
> From: Glenn Morris <rgm@gnu.org>
> Date: Sun, 04 Apr 2021 12:28:45 -0400
>
> I've tidied this up, so it is at least now possible to recommend the
> standard maintainer-clean instead of the non-standard extraclean.
>
> Personally I'm sure bootstrap should be equivalent to maintainer-clean,
> except maybe for leim/ja-dic. But the generated files from
> admin/{charsets,grammars,unidata} are all trivial to recreate,
> and I don't see why there has to be a big debate about it.
That's just rude! No matter what you think about the subject,
disagreement was clearly voiced, and the least one could expect in a
friendly community is that you talk before you act to the contrary.
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-03 14:15 ` Eli Zaretskii
2021-04-03 22:36 ` chad
2021-04-03 23:52 ` Tim Cross
@ 2021-04-04 19:44 ` Lars Ingebrigtsen
2 siblings, 0 replies; 53+ messages in thread
From: Lars Ingebrigtsen @ 2021-04-04 19:44 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, theophilusx, monnier, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
>> I still don't understand what mean here, since it's been demonstrated
>> several times that (in certain circumstances) people have to say "make
>> extraclean" to build a working Emacs executable.
>
> "make extraclean" is only needed when doing something very drastic,
> like switching to a very different branch. That is an extremely rare
> (if not improbable) use case, so IMO having everyone pay for it is
> unjustified.
It doesn't seem like we're going to get any further here? My opinion is
that "make bootstrap" should guarantee a build (to the best of our
abilities). Yours is that it shouldn't.
I don't have the stamina to debate the issue further.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-03 7:58 ` Eli Zaretskii
@ 2021-04-13 2:20 ` Stefan Monnier
2021-04-13 11:51 ` Eli Zaretskii
0 siblings, 1 reply; 53+ messages in thread
From: Stefan Monnier @ 2021-04-13 2:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, theophilusx, emacs-devel
> Assuming you tested that during bootstrap (which you say you never
> do), and assuming there's no better way of breaking the circular
> dependency, I'm okay with the change.
There might be a better way (I think providing an ELisp syntax for the
wisent source files could be such a thing), but as long as we can't find
anyone motivated enough to tackle that, it seems like the better way, yes.
> We should also make sure grm-wy-boot.el is updated in Git whenever
> grammar.wy changes.
Done, thanks.
Stefan
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-13 2:20 ` Stefan Monnier
@ 2021-04-13 11:51 ` Eli Zaretskii
2021-04-13 12:19 ` Eli Zaretskii
2021-04-13 12:59 ` Stefan Monnier
0 siblings, 2 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-13 11:51 UTC (permalink / raw)
To: Stefan Monnier; +Cc: rgm, theophilusx, emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Mon, 12 Apr 2021 22:20:14 -0400
> Cc: rgm@gnu.org, theophilusx@gmail.com, emacs-devel@gnu.org
>
> > Assuming you tested that during bootstrap (which you say you never
> > do), and assuming there's no better way of breaking the circular
> > dependency, I'm okay with the change.
>
> There might be a better way (I think providing an ELisp syntax for the
> wisent source files could be such a thing), but as long as we can't find
> anyone motivated enough to tackle that, it seems like the better way, yes.
>
> > We should also make sure grm-wy-boot.el is updated in Git whenever
> > grammar.wy changes.
>
> Done, thanks.
After updating from upstream, I see that cedet/semantic/grm-wy-boot.el
is byte-compiled by the build process. Should it be?
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-13 11:51 ` Eli Zaretskii
@ 2021-04-13 12:19 ` Eli Zaretskii
2021-04-13 13:01 ` Stefan Monnier
2021-04-13 12:59 ` Stefan Monnier
1 sibling, 1 reply; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-13 12:19 UTC (permalink / raw)
To: Andrea Corallo; +Cc: rgm, theophilusx, monnier, emacs-devel
> Date: Tue, 13 Apr 2021 14:51:24 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: rgm@gnu.org, theophilusx@gmail.com, emacs-devel@gnu.org
>
> > > We should also make sure grm-wy-boot.el is updated in Git whenever
> > > grammar.wy changes.
> >
> > Done, thanks.
>
> After updating from upstream, I see that cedet/semantic/grm-wy-boot.el
> is byte-compiled by the build process. Should it be?
And on the native-comp branch I see the following warning:
GEN ../../lisp/cedet/semantic/grammar-wy.el
Warning (comp): Cannot look-up eln file as no source file was found for d:/gnu/git/emacs/native-comp/lisp/cedet/semantic/grammar-wy.elc
Is this expected?
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-13 11:51 ` Eli Zaretskii
2021-04-13 12:19 ` Eli Zaretskii
@ 2021-04-13 12:59 ` Stefan Monnier
2021-04-13 14:03 ` Eli Zaretskii
1 sibling, 1 reply; 53+ messages in thread
From: Stefan Monnier @ 2021-04-13 12:59 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, theophilusx, emacs-devel
> After updating from upstream, I see that cedet/semantic/grm-wy-boot.el
> is byte-compiled by the build process. Should it be?
To the extent that it is only used during bootstrap, it's not very
useful to compile it, indeed. But it's harmless, so I think it's better
to leave it like this than to try and avoid compiling it.
I guess we could move those bootstrap files out of `lisp` into their own
dedicated "bootstrap directory", but I'm not sure it's worth the trouble.
Stefan
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-13 12:19 ` Eli Zaretskii
@ 2021-04-13 13:01 ` Stefan Monnier
0 siblings, 0 replies; 53+ messages in thread
From: Stefan Monnier @ 2021-04-13 13:01 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: rgm, theophilusx, emacs-devel, Andrea Corallo
> And on the native-comp branch I see the following warning:
>
> GEN ../../lisp/cedet/semantic/grammar-wy.el
> Warning (comp): Cannot look-up eln file as no source file was found for d:/gnu/git/emacs/native-comp/lisp/cedet/semantic/grammar-wy.elc
>
> Is this expected?
Hmm... no, I must say I don't know what this is about. Andrea?
Stefan
^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: extraclean and admin/grammars [was Re: Git master head build failure?]
2021-04-13 12:59 ` Stefan Monnier
@ 2021-04-13 14:03 ` Eli Zaretskii
0 siblings, 0 replies; 53+ messages in thread
From: Eli Zaretskii @ 2021-04-13 14:03 UTC (permalink / raw)
To: Stefan Monnier; +Cc: rgm, theophilusx, emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: rgm@gnu.org, theophilusx@gmail.com, emacs-devel@gnu.org
> Date: Tue, 13 Apr 2021 08:59:54 -0400
>
> > After updating from upstream, I see that cedet/semantic/grm-wy-boot.el
> > is byte-compiled by the build process. Should it be?
>
> To the extent that it is only used during bootstrap, it's not very
> useful to compile it, indeed. But it's harmless, so I think it's better
> to leave it like this than to try and avoid compiling it.
Can't we exempt that file in the loop that compile-man target runs in
lisp/Makefile?
^ permalink raw reply [flat|nested] 53+ messages in thread
end of thread, other threads:[~2021-04-13 14:03 UTC | newest]
Thread overview: 53+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-01 2:41 Git master head build failure? Tim Cross
2021-04-01 3:04 ` Stefan Monnier
2021-04-01 3:10 ` Tim Cross
2021-04-01 7:33 ` Eli Zaretskii
2021-04-01 8:57 ` Tim Cross
2021-04-01 9:17 ` tomas
2021-04-01 9:56 ` Daniel Brooks
2021-04-01 9:36 ` Gregor Zattler
2021-04-01 10:11 ` Andreas Schwab
2021-04-01 7:25 ` Eli Zaretskii
2021-04-01 8:34 ` Tim Cross
2021-04-01 9:00 ` Eli Zaretskii
2021-04-01 10:56 ` Stefan Kangas
2021-04-01 13:03 ` Eli Zaretskii
2021-04-01 13:32 ` Stefan Kangas
2021-04-01 13:02 ` Eli Zaretskii
2021-04-01 13:01 ` Eli Zaretskii
2021-04-01 13:03 ` Stefan Monnier
2021-04-01 13:07 ` Eli Zaretskii
2021-04-01 13:32 ` Stefan Kangas
2021-04-01 13:36 ` Eli Zaretskii
2021-04-01 15:32 ` Stefan Monnier
2021-04-01 15:37 ` Eli Zaretskii
2021-04-01 16:05 ` extraclean and admin/grammars [was Re: Git master head build failure?] Glenn Morris
2021-04-01 16:09 ` Lars Ingebrigtsen
2021-04-01 16:19 ` Lars Ingebrigtsen
2021-04-02 4:19 ` Tim Cross
2021-04-02 5:58 ` Eli Zaretskii
2021-04-02 13:41 ` Lars Ingebrigtsen
2021-04-02 13:58 ` Eli Zaretskii
2021-04-01 18:31 ` Eli Zaretskii
2021-04-02 13:40 ` Lars Ingebrigtsen
2021-04-02 13:57 ` Eli Zaretskii
2021-04-03 13:30 ` Lars Ingebrigtsen
2021-04-03 14:15 ` Eli Zaretskii
2021-04-03 22:36 ` chad
2021-04-04 7:20 ` Eli Zaretskii
2021-04-03 23:52 ` Tim Cross
2021-04-04 7:39 ` Eli Zaretskii
2021-04-04 19:44 ` Lars Ingebrigtsen
2021-04-01 17:15 ` Stefan Monnier
2021-04-01 19:56 ` Eli Zaretskii
2021-04-01 20:13 ` Stefan Monnier
2021-04-03 7:58 ` Eli Zaretskii
2021-04-13 2:20 ` Stefan Monnier
2021-04-13 11:51 ` Eli Zaretskii
2021-04-13 12:19 ` Eli Zaretskii
2021-04-13 13:01 ` Stefan Monnier
2021-04-13 12:59 ` Stefan Monnier
2021-04-13 14:03 ` Eli Zaretskii
2021-04-01 18:29 ` Eli Zaretskii
2021-04-04 16:28 ` Glenn Morris
2021-04-04 17:12 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).