* Parallel builds with loaddefs removed
@ 2013-06-21 15:19 Eli Zaretskii
2013-06-21 15:30 ` Stefan Monnier
2013-06-21 19:20 ` Glenn Morris
0 siblings, 2 replies; 14+ messages in thread
From: Eli Zaretskii @ 2013-06-21 15:19 UTC (permalink / raw)
To: emacs-devel
When one of the *loaddefs.el files is removed for some reason, the
very next "make -j" fails, because it sometimes compiles a file that
needs, e.g., cl-loaddefs.el before it is recreated. This happened to
me today because cl-loaddefs.el was removed from bzr, and "bzr up"
deleted it.
Can this be fixed?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 15:19 Parallel builds with loaddefs removed Eli Zaretskii
@ 2013-06-21 15:30 ` Stefan Monnier
2013-06-21 15:56 ` Eli Zaretskii
2013-06-21 19:20 ` Glenn Morris
1 sibling, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2013-06-21 15:30 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
> When one of the *loaddefs.el files is removed for some reason, the
> very next "make -j" fails, because it sometimes compiles a file that
> needs, e.g., cl-loaddefs.el before it is recreated. This happened to
> me today because cl-loaddefs.el was removed from bzr, and "bzr up"
> deleted it.
> Can this be fixed?
"make bootstrap" fixes it, AFAIK.
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 15:30 ` Stefan Monnier
@ 2013-06-21 15:56 ` Eli Zaretskii
2013-06-21 18:57 ` Stefan Monnier
0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2013-06-21 15:56 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: emacs-devel@gnu.org
> Date: Fri, 21 Jun 2013 11:30:52 -0400
>
> > When one of the *loaddefs.el files is removed for some reason, the
> > very next "make -j" fails, because it sometimes compiles a file that
> > needs, e.g., cl-loaddefs.el before it is recreated. This happened to
> > me today because cl-loaddefs.el was removed from bzr, and "bzr up"
> > deleted it.
> > Can this be fixed?
>
> "make bootstrap" fixes it, AFAIK.
As does just "make" with no -j. But this means we have a problem in
our dependencies.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 15:56 ` Eli Zaretskii
@ 2013-06-21 18:57 ` Stefan Monnier
2013-06-21 19:13 ` Eli Zaretskii
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2013-06-21 18:57 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
>> "make bootstrap" fixes it, AFAIK.
> As does just "make" with no -j.
Actually, no. Just "make" might create a cl-loaddefs.el but it doesn't
guarantee that this file is complete, so it can still fail.
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 18:57 ` Stefan Monnier
@ 2013-06-21 19:13 ` Eli Zaretskii
2013-06-21 19:56 ` Stefan Monnier
0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2013-06-21 19:13 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: emacs-devel@gnu.org
> Date: Fri, 21 Jun 2013 14:57:26 -0400
>
> >> "make bootstrap" fixes it, AFAIK.
> > As does just "make" with no -j.
>
> Actually, no. Just "make" might create a cl-loaddefs.el but it doesn't
> guarantee that this file is complete, so it can still fail.
That's even worse. It doesn't make sense to have to bootstrap just to
regenerate a single file.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 15:19 Parallel builds with loaddefs removed Eli Zaretskii
2013-06-21 15:30 ` Stefan Monnier
@ 2013-06-21 19:20 ` Glenn Morris
2013-06-21 19:28 ` Eli Zaretskii
1 sibling, 1 reply; 14+ messages in thread
From: Glenn Morris @ 2013-06-21 19:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
Eli Zaretskii wrote:
> When one of the *loaddefs.el files is removed for some reason, the
> very next "make -j" fails, because it sometimes compiles a file that
> needs, e.g., cl-loaddefs.el before it is recreated. This happened to
> me today because cl-loaddefs.el was removed from bzr, and "bzr up"
> deleted it.
That specific problem should be impossible now, owing to cl-lib.el's:
(or (load "cl-loaddefs" 'noerror 'quiet)
;; When bootstrapping, cl-loaddefs hasn't been built yet!
(require 'cl-macs))
I guess you had a stale cl-lib.elc around?
So AFAICS, that's just a one-time problem, the usual sort of issue with
stale elc files that we know non-bootstrap builds sometimes have.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 19:20 ` Glenn Morris
@ 2013-06-21 19:28 ` Eli Zaretskii
0 siblings, 0 replies; 14+ messages in thread
From: Eli Zaretskii @ 2013-06-21 19:28 UTC (permalink / raw)
To: Glenn Morris; +Cc: emacs-devel
> From: Glenn Morris <rgm@gnu.org>
> Cc: emacs-devel@gnu.org
> Date: Fri, 21 Jun 2013 15:20:22 -0400
>
> That specific problem should be impossible now, owing to cl-lib.el's:
>
> (or (load "cl-loaddefs" 'noerror 'quiet)
> ;; When bootstrapping, cl-loaddefs hasn't been built yet!
> (require 'cl-macs))
>
> I guess you had a stale cl-lib.elc around?
> So AFAICS, that's just a one-time problem, the usual sort of issue with
> stale elc files that we know non-bootstrap builds sometimes have.
cl-loaddefs.el has loaddefs not just from cl-macs.el. So having it
absent or outdated can still fail the build in interesting ways, even
with that change.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 19:13 ` Eli Zaretskii
@ 2013-06-21 19:56 ` Stefan Monnier
2013-06-22 9:36 ` Eli Zaretskii
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2013-06-21 19:56 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
>> >> "make bootstrap" fixes it, AFAIK.
>> > As does just "make" with no -j.
>> Actually, no. Just "make" might create a cl-loaddefs.el but it doesn't
>> guarantee that this file is complete, so it can still fail.
> That's even worse. It doesn't make sense to have to bootstrap just to
> regenerate a single file.
Yet, that's how things have been with all the *-loaddefs.el files for
several years now. You only notice it now because the "bzr rm" I do
caused your cl-loaddefs.el file to disappear, but otherwise this file
would normally never disappear except you "make bootstrap".
It's a one off transient problem, fixed by "make bootstrap", like many
other such transient problems.
Actually, you can recreate this file without bootstrapping:
"rm lisp/loaddefs.el; make" will do. Of course, on a machine with many
CPUs, this ends up taking almost as long as a bootstrap ;-(
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-21 19:56 ` Stefan Monnier
@ 2013-06-22 9:36 ` Eli Zaretskii
2013-06-22 15:15 ` Stefan Monnier
0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2013-06-22 9:36 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: emacs-devel@gnu.org
> Date: Fri, 21 Jun 2013 15:56:36 -0400
>
> Actually, you can recreate this file without bootstrapping:
> "rm lisp/loaddefs.el; make" will do.
"make autoloads" will solve that (as it will solve also the original
problem I described).
But I get the drift: you don't want to fix this. So be it.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-22 9:36 ` Eli Zaretskii
@ 2013-06-22 15:15 ` Stefan Monnier
2013-06-22 15:25 ` Eli Zaretskii
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2013-06-22 15:15 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
> But I get the drift: you don't want to fix this. So be it.
It's worse: I don't know how to fix it.
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-22 15:15 ` Stefan Monnier
@ 2013-06-22 15:25 ` Eli Zaretskii
2013-06-22 19:20 ` Stefan Monnier
0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2013-06-22 15:25 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: emacs-devel@gnu.org
> Date: Sat, 22 Jun 2013 11:15:36 -0400
>
> > But I get the drift: you don't want to fix this. So be it.
>
> It's worse: I don't know how to fix it.
Something like this:
$(lisp): cl-loaddefs.el
cl-loaddefs.el: cl-extra.el cl-macs.el cl-seq.el
$(MAKE) autoloads
where $(lisp) is the list of all the *.elc files, computed like we do
in compile-main.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-22 15:25 ` Eli Zaretskii
@ 2013-06-22 19:20 ` Stefan Monnier
2013-06-22 22:20 ` Eli Zaretskii
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2013-06-22 19:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
> cl-loaddefs.el: cl-extra.el cl-macs.el cl-seq.el
> $(MAKE) autoloads
I don't think that works: if the cl-*.el files haven't been touched
since the last "make autoloads", "make autoloads" won't fetch their
autoloads to put them in cl-loaddefs.el.
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-22 19:20 ` Stefan Monnier
@ 2013-06-22 22:20 ` Eli Zaretskii
2013-06-23 2:26 ` Stefan Monnier
0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2013-06-22 22:20 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: emacs-devel@gnu.org
> Date: Sat, 22 Jun 2013 15:20:38 -0400
>
> > cl-loaddefs.el: cl-extra.el cl-macs.el cl-seq.el
> > $(MAKE) autoloads
>
> I don't think that works: if the cl-*.el files haven't been touched
> since the last "make autoloads", "make autoloads" won't fetch their
> autoloads to put them in cl-loaddefs.el.
If they were not touched and cl-loaddefs.el exists, then that's fine.
If they were not touched and cl-loaddefs.el does not exist, the rule
will fire and create it. If they were touched, the rule will fire and
update cl-loaddefs.el.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Parallel builds with loaddefs removed
2013-06-22 22:20 ` Eli Zaretskii
@ 2013-06-23 2:26 ` Stefan Monnier
0 siblings, 0 replies; 14+ messages in thread
From: Stefan Monnier @ 2013-06-23 2:26 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
> If they were not touched and cl-loaddefs.el does not exist, the rule
> will fire and create it.
And what I'm saying is that this is not the case: the rule will fire,
but it will not create cl-loaddefs.el, or maybe it will partly but
not completely, because the autoload.el code will mostly compare the
timestamp in lisp/loaddefs.el with the mtime of the cl-*.el files and
only consult those that are more recent, and only those so consulted
will see their autoloads added to cl-loaddefs.
> If they were touched, the rule will fire and
> update cl-loaddefs.el.
If they were touched, then the comparison with the lisp.loaddefs.el
timestamp will indeed cause them to be scanned, so their autoloads will
end up in cl-loaddefs.el. But if they were not all touched, then only
some of them will be consulted, so the cl-loaddefs.el will end up
incomplete.
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2013-06-23 2:26 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-21 15:19 Parallel builds with loaddefs removed Eli Zaretskii
2013-06-21 15:30 ` Stefan Monnier
2013-06-21 15:56 ` Eli Zaretskii
2013-06-21 18:57 ` Stefan Monnier
2013-06-21 19:13 ` Eli Zaretskii
2013-06-21 19:56 ` Stefan Monnier
2013-06-22 9:36 ` Eli Zaretskii
2013-06-22 15:15 ` Stefan Monnier
2013-06-22 15:25 ` Eli Zaretskii
2013-06-22 19:20 ` Stefan Monnier
2013-06-22 22:20 ` Eli Zaretskii
2013-06-23 2:26 ` Stefan Monnier
2013-06-21 19:20 ` Glenn Morris
2013-06-21 19:28 ` 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).