GNU bug report logs - #11649
Some compilation woes

Previous Next

Package: emacs;

Reported by: Juanma Barranquero <lekktu <at> gmail.com>

Date: Fri, 8 Jun 2012 13:23:02 UTC

Severity: normal

Found in version 24.1.50

Done: Juanma Barranquero <lekktu <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 11649 in the body.
You can then email your comments to 11649 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Fri, 08 Jun 2012 13:23:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Juanma Barranquero <lekktu <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 08 Jun 2012 13:23:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Bug-Gnu-Emacs <bug-gnu-emacs <at> gnu.org>
Subject: Some compilation woes
Date: Fri, 8 Jun 2012 15:19:27 +0200
Package: emacs
Version: 24.1.50


1) Bootstrapping now generates a few "lisp nesting exceeds
max-lisp-eval-depth" errors:

In toplevel form:
progmodes/make-mode.el:324:1:Error: Lisp nesting exceeds `max-lisp-eval-depth'

In toplevel form:
textmodes/rst.el:271:1:Error: Lisp nesting exceeds `max-lisp-eval-depth'

In toplevel form:
cedet/semantic/bovine/c-by.el:183:1:Error: Lisp nesting exceeds
`max-lisp-eval-depth'


2) Byte-compilation generates lots of new "function X might not be
defined at runtime". AFAICS, they are generated for functions used
before they are defined (with defun).

3) Byte-compilation seems quite fragile. After a successful bootstrap,
touch'ing every *.el in lisp/** and doing

  cd lisp
  make recompile

produces quite a few errors:

  Generating autoloads for ibuf-macs.el...
  Autoload cookie error in ibuf-macs.el:129 (wrong-type-argument integerp nil)
  Autoload cookie error in ibuf-macs.el:160 (wrong-type-argument integerp nil)
  Autoload cookie error in ibuf-macs.el:264 (wrong-type-argument integerp nil)
  Autoload cookie error in ibuf-macs.el:299 (wrong-type-argument integerp nil)
  Generating autoloads for ibuf-macs.el...done


  In toplevel form:
  textmodes/rst.el:120:1:Error: Invalid byte code in
c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc
  Checking c:/emacs/trunk/lisp/url...
  Checking c:/emacs/trunk/lisp/vc...
  Compiling c:emacs/repo/lisp/vc/pcvs.el...
  Compiler-macro error: (error "Invalid byte code in
c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
  Compiler-macro error: (error "Invalid byte code in
c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
  etc

    Juanma




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sat, 09 Jun 2012 09:32:01 GMT) Full text and rfc822 format available.

Message #8 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>,
	Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 09 Jun 2012 12:29:25 +0300
> From: Juanma Barranquero <lekktu <at> gmail.com>
> Date: Fri, 8 Jun 2012 15:19:27 +0200
> 
> 1) Bootstrapping now generates a few "lisp nesting exceeds
> max-lisp-eval-depth" errors:
> 
> In toplevel form:
> progmodes/make-mode.el:324:1:Error: Lisp nesting exceeds `max-lisp-eval-depth'
> 
> In toplevel form:
> textmodes/rst.el:271:1:Error: Lisp nesting exceeds `max-lisp-eval-depth'
> 
> In toplevel form:
> cedet/semantic/bovine/c-by.el:183:1:Error: Lisp nesting exceeds
> `max-lisp-eval-depth'

I fixed this in revision 108536, by enlarging the stack depth of the
byte compiler when it is run interpreted.  The new size is 2200; the
largest value I needed to use to compile the above files was 2000.

AFAICS, this problem doesn't show on Posix hosts because there the
byte compiler is run interpreted only for a small set of Lisp files
that are preloaded into Emacs.  After these are compiled, the
bootstrap process produces a new Emacs executable with those files
preloaded, then compiles the rest of Lisp files with this new
executable, where the byte compiler no longer runs interpreted.

By contrast, on MS-Windows, all of the Lisp files are compiled with
the bootstrapped Emacs executable, so they all are compiled with the
interpreted byte compiler.

Volunteers are welcome to change the Windows bootstrap procedure to
include this optimization.  In the meantime, a larger stack will have
to be the solution.

> 2) Byte-compilation generates lots of new "function X might not be
> defined at runtime". AFAICS, they are generated for functions used
> before they are defined (with defun).

I don't see this with the latest trunk.  If you do, can you show a
complete recipe with the messages it produces?

> 3) Byte-compilation seems quite fragile. After a successful bootstrap,
> touch'ing every *.el in lisp/** and doing
> 
>   cd lisp
>   make recompile
> 
> produces quite a few errors:
> 
>   Generating autoloads for ibuf-macs.el...
>   Autoload cookie error in ibuf-macs.el:129 (wrong-type-argument integerp nil)
>   Autoload cookie error in ibuf-macs.el:160 (wrong-type-argument integerp nil)
>   Autoload cookie error in ibuf-macs.el:264 (wrong-type-argument integerp nil)
>   Autoload cookie error in ibuf-macs.el:299 (wrong-type-argument integerp nil)
>   Generating autoloads for ibuf-macs.el...done

Do you still see this one?

>   In toplevel form:
>   textmodes/rst.el:120:1:Error: Invalid byte code in
> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc
>   Checking c:/emacs/trunk/lisp/url...
>   Checking c:/emacs/trunk/lisp/vc...
>   Compiling c:emacs/repo/lisp/vc/pcvs.el...
>   Compiler-macro error: (error "Invalid byte code in
> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>   Compiler-macro error: (error "Invalid byte code in
> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>   etc

I confirm these.  They also happen on GNU/Linux.  My interpretation of
this is that some of the files compiled by bootstrap-emacs produce
invalid .elc files (e.g., cl-macs.elc, cl-lib.elc, and pvcs-util.elc),
because once they are compiled by the non-bootstrap Emacs executable,
the errors go away.  Stefan, can you please look into this?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sat, 09 Jun 2012 10:09:02 GMT) Full text and rfc822 format available.

Message #11 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 11649 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 9 Jun 2012 12:05:41 +0200
On Sat, Jun 9, 2012 at 11:29 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:

> Volunteers are welcome to change the Windows bootstrap procedure to
> include this optimization.  In the meantime, a larger stack will have
> to be the solution.

I see. Though the stack depth still depends of the needs of that small
number of preloaded files. Presumably none of them is big or complex
enough.

> I don't see this with the latest trunk.  If you do, can you show a
> complete recipe with the messages it produces?

I will try next wednesday. I don't have access to a build environment
right now. But the recipe was just bootstrapping from a clean slate. I
saw the warnings because I compare the bootstrap log with the previous
bootstrap log (usually a few days older, at most).

>>   Autoload cookie error in ibuf-macs.el:129 (wrong-type-argument integerp nil)
>
> Do you still see this one?

I'll check.

    Juanma




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sat, 09 Jun 2012 10:17:02 GMT) Full text and rfc822 format available.

Message #14 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Juanma Barranquero <lekktu <at> gmail.com>, 11649 <at> debbugs.gnu.org,
	Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 09 Jun 2012 12:14:14 +0200
> Do you still see this one?
> 
>>   In toplevel form:
>>   textmodes/rst.el:120:1:Error: Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc
>>   Checking c:/emacs/trunk/lisp/url...
>>   Checking c:/emacs/trunk/lisp/vc...
>>   Compiling c:emacs/repo/lisp/vc/pcvs.el...
>>   Compiler-macro error: (error "Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>>   Compiler-macro error: (error "Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>>   etc
> 
> I confirm these.  They also happen on GNU/Linux.  My interpretation of
> this is that some of the files compiled by bootstrap-emacs produce
> invalid .elc files (e.g., cl-macs.elc, cl-lib.elc, and pvcs-util.elc),
> because once they are compiled by the non-bootstrap Emacs executable,
> the errors go away.  Stefan, can you please look into this?

I got these too for a couple of weeks but didn't get them with today's
bootstrap.

martin





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sat, 09 Jun 2012 11:43:03 GMT) Full text and rfc822 format available.

Message #17 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: martin rudalics <rudalics <at> gmx.at>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 09 Jun 2012 14:38:58 +0300
> Date: Sat, 09 Jun 2012 12:14:14 +0200
> From: martin rudalics <rudalics <at> gmx.at>
> CC: Juanma Barranquero <lekktu <at> gmail.com>, 
>  Stefan Monnier <monnier <at> iro.umontreal.ca>,
>  11649 <at> debbugs.gnu.org
> 
> > Do you still see this one?
> > 
> >>   In toplevel form:
> >>   textmodes/rst.el:120:1:Error: Invalid byte code in
> >> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc
> >>   Checking c:/emacs/trunk/lisp/url...
> >>   Checking c:/emacs/trunk/lisp/vc...
> >>   Compiling c:emacs/repo/lisp/vc/pcvs.el...
> >>   Compiler-macro error: (error "Invalid byte code in
> >> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
> >>   Compiler-macro error: (error "Invalid byte code in
> >> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
> >>   etc
> > 
> > I confirm these.  They also happen on GNU/Linux.  My interpretation of
> > this is that some of the files compiled by bootstrap-emacs produce
> > invalid .elc files (e.g., cl-macs.elc, cl-lib.elc, and pvcs-util.elc),
> > because once they are compiled by the non-bootstrap Emacs executable,
> > the errors go away.  Stefan, can you please look into this?
> 
> I got these too for a couple of weeks but didn't get them with today's
> bootstrap.

Did you repeat Juanma's recipe?  You need to touch every .el file in
the lisp/ subdirectory, then type "make recompile".




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sat, 09 Jun 2012 11:44:02 GMT) Full text and rfc822 format available.

Message #20 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: 11649 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 09 Jun 2012 14:41:24 +0300
> From: Juanma Barranquero <lekktu <at> gmail.com>
> Date: Sat, 9 Jun 2012 12:05:41 +0200
> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 11649 <at> debbugs.gnu.org
> 
> On Sat, Jun 9, 2012 at 11:29 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
> > Volunteers are welcome to change the Windows bootstrap procedure to
> > include this optimization.  In the meantime, a larger stack will have
> > to be the solution.
> 
> I see. Though the stack depth still depends of the needs of that small
> number of preloaded files. Presumably none of them is big or complex
> enough.

Are you saying that there's some bug in the byte compiler?  You may be
right, although I don't see why the value 1200 should be OK, but 2200
shouldn't.

> > I don't see this with the latest trunk.  If you do, can you show a
> > complete recipe with the messages it produces?
> 
> I will try next wednesday. I don't have access to a build environment
> right now. But the recipe was just bootstrapping from a clean slate. I
> saw the warnings because I compare the bootstrap log with the previous
> bootstrap log (usually a few days older, at most).
> 
> >>   Autoload cookie error in ibuf-macs.el:129 (wrong-type-argument integerp nil)
> >
> > Do you still see this one?
> 
> I'll check.

Thanks.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sat, 09 Jun 2012 13:05:02 GMT) Full text and rfc822 format available.

Message #23 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 09 Jun 2012 15:02:27 +0200
> Did you repeat Juanma's recipe?  You need to touch every .el file in
> the lisp/ subdirectory, then type "make recompile".

No.  I'll report back when I find out more.

martin




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sat, 09 Jun 2012 19:32:02 GMT) Full text and rfc822 format available.

Message #26 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 9 Jun 2012 21:28:28 +0200
On Sat, Jun 9, 2012 at 1:41 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:

> Are you saying that there's some bug in the byte compiler?  You may be
> right, although I don't see why the value 1200 should be OK, but 2200
> shouldn't.

No, I'm saying that I don't see a problem in the way it is currently
done on Windows because, at the end, even doing it as it is done in
POSIX does not guarantee that you won't be forced to use a greater
stack depth sooner or later, because it depends on the small number of
files that are compiled with the interpreted byte-compiler, and these
files are not static; they can grow bigger or more complex and
eventually, someday, trigger the same stack depth error. Unless I've
failed to understand you.

    Juanma




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sun, 10 Jun 2012 01:12:02 GMT) Full text and rfc822 format available.

Message #29 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Juanma Barranquero <lekktu <at> gmail.com>, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sat, 09 Jun 2012 21:08:41 -0400
> By contrast, on MS-Windows, all of the Lisp files are compiled with
> the bootstrapped Emacs executable, so they all are compiled with the
> interpreted byte compiler.

Ahh... that could explain this high stack use.  That should also impose
a fairly high impact on compilation speed.

>> In toplevel form:
>> textmodes/rst.el:120:1:Error: Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc
>> Checking c:/emacs/trunk/lisp/url...
>> Checking c:/emacs/trunk/lisp/vc...
>> Compiling c:emacs/repo/lisp/vc/pcvs.el...
>> Compiler-macro error: (error "Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>> Compiler-macro error: (error "Invalid byte code in
>> c:/emacs/trunk/lisp/emacs-lisp/cl-macs.elc")
>> etc
> I confirm these.  They also happen on GNU/Linux.  My interpretation of
> this is that some of the files compiled by bootstrap-emacs produce
> invalid .elc files (e.g., cl-macs.elc, cl-lib.elc, and pvcs-util.elc),
> because once they are compiled by the non-bootstrap Emacs executable,
> the errors go away.  Stefan, can you please look into this?

Usually "Invalid byte code in <foo>" happens because <foo> is
byte-compile-dynamic (as is the case for cl-macs) and you try to call
a function from it after byte-compiling a new version of the file.
More specifically, the scenario is:
1- load cl-macs.elc.
2- don't call function <bla>.
3- change cl-macs.elc.
4- call <bla> which is dynamically loaded from cl-macs.elc.
5- now the offset loaded at point 1 is not valid any more, so you get an
   error: you need to re-load cl-macs.elc.
If the above cannot be explained by this scenario, we apparently have
a serious new bug.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sun, 10 Jun 2012 02:55:02 GMT) Full text and rfc822 format available.

Message #32 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sun, 10 Jun 2012 05:52:19 +0300
> From: Juanma Barranquero <lekktu <at> gmail.com>
> Date: Sat, 9 Jun 2012 21:28:28 +0200
> Cc: 11649 <at> debbugs.gnu.org
> 
> On Sat, Jun 9, 2012 at 1:41 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
> > Are you saying that there's some bug in the byte compiler?  You may be
> > right, although I don't see why the value 1200 should be OK, but 2200
> > shouldn't.
> 
> No, I'm saying that I don't see a problem in the way it is currently
> done on Windows because, at the end, even doing it as it is done in
> POSIX does not guarantee that you won't be forced to use a greater
> stack depth sooner or later, because it depends on the small number of
> files that are compiled with the interpreted byte-compiler, and these
> files are not static; they can grow bigger or more complex and
> eventually, someday, trigger the same stack depth error. Unless I've
> failed to understand you.

No, you understood me.  That's why I didn't hesitate to enlarge the
stack size.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sun, 10 Jun 2012 03:03:02 GMT) Full text and rfc822 format available.

Message #35 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sun, 10 Jun 2012 05:59:43 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: Juanma Barranquero <lekktu <at> gmail.com>,  11649 <at> debbugs.gnu.org
> Date: Sat, 09 Jun 2012 21:08:41 -0400
> 
> > By contrast, on MS-Windows, all of the Lisp files are compiled with
> > the bootstrapped Emacs executable, so they all are compiled with the
> > interpreted byte compiler.
> 
> Ahh... that could explain this high stack use.  That should also impose
> a fairly high impact on compilation speed.

But note that previously, 1200 was enough for the same compilation,
and the speed was also much higher.

> Usually "Invalid byte code in <foo>" happens because <foo> is
> byte-compile-dynamic (as is the case for cl-macs) and you try to call
> a function from it after byte-compiling a new version of the file.
> More specifically, the scenario is:
> 1- load cl-macs.elc.
> 2- don't call function <bla>.
> 3- change cl-macs.elc.
> 4- call <bla> which is dynamically loaded from cl-macs.elc.
> 5- now the offset loaded at point 1 is not valid any more, so you get an
>    error: you need to re-load cl-macs.elc.
> If the above cannot be explained by this scenario, we apparently have
> a serious new bug.

Maybe I'm missing something, but it sounds likeyour scenario requires
two compilations of cl-macs.el.  If so, this scenario cannot explain
the problem, because cl-macs.el is compiled exactly once during
bootstrap; before the compilation there's only cl-macs.el.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sun, 10 Jun 2012 14:44:02 GMT) Full text and rfc822 format available.

Message #38 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sun, 10 Jun 2012 10:40:54 -0400
>> > By contrast, on MS-Windows, all of the Lisp files are compiled with
>> > the bootstrapped Emacs executable, so they all are compiled with the
>> > interpreted byte compiler.
>> Ahh... that could explain this high stack use.  That should also impose
>> a fairly high impact on compilation speed.
> But note that previously, 1200 was enough for the same compilation,
> and the speed was also much higher.

Yes, the stack depth is probably linked to the 8x speed impact discussed
elsewhere.

> Maybe I'm missing something, but it sounds likeyour scenario requires
> two compilations of cl-macs.el.

That's right.

> If so, this scenario cannot explain the problem, because cl-macs.el is
> compiled exactly once during bootstrap; before the compilation there's
> only cl-macs.el.

Then, we need to investigate the real source of the problem.
Does someone have a reproducible recipe for it?


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Sun, 10 Jun 2012 16:09:02 GMT) Full text and rfc822 format available.

Message #41 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Sun, 10 Jun 2012 19:05:48 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: lekktu <at> gmail.com,  11649 <at> debbugs.gnu.org
> Date: Sun, 10 Jun 2012 10:40:54 -0400
> 
> > If so, this scenario cannot explain the problem, because cl-macs.el is
> > compiled exactly once during bootstrap; before the compilation there's
> > only cl-macs.el.
> 
> Then, we need to investigate the real source of the problem.
> Does someone have a reproducible recipe for it?

The way I did it was to wait until the bootstrap version of Emacs,
with all the preloaded Lisp files in .el form, dumps itself during
bootstrap, then copy the executable aside, and use it for compiling
whatever Lisp files I wanted.

Andreas suggested a different recipe, which I think is equivalent.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Tue, 12 Jun 2012 21:40:01 GMT) Full text and rfc822 format available.

Message #44 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 11649 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Tue, 12 Jun 2012 23:35:55 +0200
On Sat, Jun 9, 2012 at 11:29 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:

>> 2) Byte-compilation generates lots of new "function X might not be
>> defined at runtime". AFAICS, they are generated for functions used
>> before they are defined (with defun).
>
> I don't see this with the latest trunk.  If you do, can you show a
> complete recipe with the messages it produces?

I don't see it in today's trunk.

>>   Generating autoloads for ibuf-macs.el...
>>   Autoload cookie error in ibuf-macs.el:129 (wrong-type-argument integerp nil)
>>   Autoload cookie error in ibuf-macs.el:160 (wrong-type-argument integerp nil)
>>   Autoload cookie error in ibuf-macs.el:264 (wrong-type-argument integerp nil)
>>   Autoload cookie error in ibuf-macs.el:299 (wrong-type-argument integerp nil)
>>   Generating autoloads for ibuf-macs.el...done
>
> Do you still see this one?

Yes. As of revno:108574,

Autoload cookie error in progmodes/ebrowse.el:3654
(wrong-type-argument integerp nil)
...
Autoload cookie error in erc/erc.el:2169 (wrong-type-argument integerp nil)
..,
Autoload cookie error in emacs-lisp/ert.el:340 (wrong-type-argument
integerp nil)
...
Autoload cookie error in net/quickurl.el:322 (wrong-type-argument integerp nil)
...
Autoload cookie error in ibuf-macs.el:129 (wrong-type-argument integerp nil)
Autoload cookie error in ibuf-macs.el:160 (wrong-type-argument integerp nil)
Autoload cookie error in ibuf-macs.el:264 (wrong-type-argument integerp nil)
Autoload cookie error in ibuf-macs.el:299 (wrong-type-argument integerp nil)

> Stefan, can you please look into this?

And the "Invalid byte code" errors still happen.

    Juanma




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Tue, 12 Jun 2012 22:30:02 GMT) Full text and rfc822 format available.

Message #47 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Tue, 12 Jun 2012 18:27:03 -0400
Juanma Barranquero wrote:

> Autoload cookie error in progmodes/ebrowse.el:3654
> (wrong-type-argument integerp nil)

Trivially reproducible for me on GNU/Linux, using a variant of the
suggested method:

bootstrap
cd lisp
touch ibuf-macs.el
make autoloads

Here is a backtrace (from autoloads.el):

Generating autoloads for ibuf-macs.el...
Debugger entered--Lisp error: (wrong-type-argument integerp nil)
  nthcdr(nil (defmacro* define-ibuffer-column (symbol (&key name inline props summarizer header-mouse-map) &rest body) "Define a column SYMBOL for use with `ibuffer-formats'.\n\nBODY will be called with `buffer' bound to the buffer object, and\n`mark' bound to the current mark on the buffer.  The original ibuffer\nbuffer will be bound to `ibuffer-buf'.\n\nIf NAME is given, it will be used as a title for the column.\nOtherwise, the title will default to a capitalized version of the\nSYMBOL's name.  PROPS is a plist of additional properties to add to\nthe text, such as `mouse-face'.  And SUMMARIZER, if given, is a\nfunction which will be passed a list of all the strings in its column;\nit should return a string to display at the bottom.\n\nIf HEADER-MOUSE-MAP is given, it will be used as a keymap for the\ntitle of the column.\n\nNote that this macro expands into a `defun' for a function named\nibuffer-make-column-NAME.  If INLINE is non-nil, then the form will be\ninlined into the compiled format versions.  This means that if you\nchange its definition, you should explicitly call\n`ibuffer-recompile-formats'.\n\n(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" (declare (indent defun)) (let* ((sym (intern (concat "ibuffer-make-column-" (symbol-name symbol)))) (bod-1 (\` (with-current-buffer buffer (\,@ body)))) (bod (if props (\` (propertize (\, bod-1) (\,@ props))) bod-1))) (\` (progn (\, (if inline (\` (push ... ibuffer-inline-columns)) (\` (defun ... ... ...)))) (put (quote (\, sym)) (quote ibuffer-column-name) (\, (if (stringp name) name (capitalize ...)))) (\, (if header-mouse-map (\` (put ... ... ...)))) (\, (if summarizer (\` (put ... ... ...)))) (\, (if summarizer (\` (put ... ... nil)))) :autoload-end)))))
  (let* ((macrop (memq car (quote (defmacro defmacro*)))) (name (nth 1 form)) (args (cl-case car ((defun defmacro defun* defmacro* define-overloadable-function) (nth 2 form)) ((define-skeleton) (quote (&optional str arg))) ((define-generic-mode define-derived-mode define-compilation-mode) nil) (t))) (body (nthcdr (get car (quote doc-string-elt)) form)) (doc (if (stringp (car body)) (pop body)))) (when (listp args) (setq doc (help-add-fundoc-usage doc args))) (list (quote autoload) (if (listp name) name (list (quote quote) name)) file doc (or (and (memq car (quote (define-skeleton define-derived-mode define-generic-mode easy-mmode-define-global-mode define-global-minor-mode define-globalized-minor-mode easy-mmode-define-minor-mode define-minor-mode))) t) (eq (car-safe (car body)) (quote interactive))) (if macrop (list (quote quote) (quote macro)) nil)))
  (cond ((and expansion (eq car (quote defalias))) (pcase-let* (((\` ((\, _) (\, _) (\, arg) \, rest)) form) ((or (and (or ... ...) (let type t)) (and (let fun arg) (let type nil))) arg) (lam (if (memq (car-safe fun) (quote ...)) (cadr fun))) ((or (\` (lambda ... \, body)) (and (let args t) (let body t))) lam) (doc (cond ((stringp ...) (car body)) ((stringp ...) (car rest)))) (interactive (pcase body ((or ... ...) t)))) (when (listp args) (setq doc (help-add-fundoc-usage doc args))) (\` (autoload (\, (nth 1 form)) (\, file) (\, doc) (\, interactive) (\, type))))) ((and expansion (memq car (quote (progn prog1)))) (let ((end (memq :autoload-end form))) (when end (setq form (copy-sequence form)) (setcdr (memq :autoload-end form) nil)) (let ((exps (delq nil (mapcar ... ...)))) (when exps (cons (quote progn) exps))))) ((and (memq car (quote (easy-mmode-define-global-mode define-global-minor-mode define-globalized-minor-mode defun defmacro easy-mmode-define-minor-mode define-minor-mode))) (setq expand (let ((load-file-name file)) (macroexpand form))) (memq (car expand) (quote (progn prog1 defalias)))) (make-autoload expand file (quote expansion))) ((memq car (quote (define-skeleton define-derived-mode define-compilation-mode define-generic-mode easy-mmode-define-global-mode define-global-minor-mode define-globalized-minor-mode easy-mmode-define-minor-mode define-minor-mode defun* defmacro* define-overloadable-function))) (let* ((macrop (memq car (quote (defmacro defmacro*)))) (name (nth 1 form)) (args (cl-case car ((defun defmacro defun* defmacro* define-overloadable-function) (nth 2 form)) ((define-skeleton) (quote ...)) ((define-generic-mode define-derived-mode define-compilation-mode) nil) (t))) (body (nthcdr (get car (quote doc-string-elt)) form)) (doc (if (stringp (car body)) (pop body)))) (when (listp args) (setq doc (help-add-fundoc-usage doc args))) (list (quote autoload) (if (listp name) name (list (quote quote) name)) file doc (or (and (memq car (quote ...)) t) (eq (car-safe (car body)) (quote interactive))) (if macrop (list (quote quote) (quote macro)) nil)))) ((eq car (quote defclass)) (let ((name (nth 1 form)) (superclasses (nth 2 form)) (doc (nth 4 form))) (list (quote eieio-defclass-autoload) (list (quote quote) name) (list (quote quote) superclasses) file doc))) ((eq car (quote defcustom)) (let ((varname (car-safe (cdr-safe form))) (init (car-safe (cdr-safe (cdr-safe form)))) (doc (car-safe (cdr-safe (cdr-safe ...))))) (\` (progn (defvar (\, varname) (\, init) (\, doc)) (custom-autoload (quote (\, varname)) (\, file) (\, (condition-case nil ... ...))))))) ((eq car (quote defgroup)) (let ((groupname (nth 1 form))) (\` (let ((loads (get ... ...))) (if (member (quote ...) loads) nil (put (quote ...) (quote custom-loads) (cons ... loads))))))) ((and expansion (consp form)) form) (t nil))
  (let ((car (car-safe form)) expand) (cond ((and expansion (eq car (quote defalias))) (pcase-let* (((\` (... ... ... \, rest)) form) ((or (and ... ...) (and ... ...)) arg) (lam (if (memq ... ...) (cadr fun))) ((or (\` ...) (and ... ...)) lam) (doc (cond (... ...) (... ...))) (interactive (pcase body (... t)))) (when (listp args) (setq doc (help-add-fundoc-usage doc args))) (\` (autoload (\, (nth 1 form)) (\, file) (\, doc) (\, interactive) (\, type))))) ((and expansion (memq car (quote (progn prog1)))) (let ((end (memq :autoload-end form))) (when end (setq form (copy-sequence form)) (setcdr (memq :autoload-end form) nil)) (let ((exps (delq nil ...))) (when exps (cons (quote progn) exps))))) ((and (memq car (quote (easy-mmode-define-global-mode define-global-minor-mode define-globalized-minor-mode defun defmacro easy-mmode-define-minor-mode define-minor-mode))) (setq expand (let ((load-file-name file)) (macroexpand form))) (memq (car expand) (quote (progn prog1 defalias)))) (make-autoload expand file (quote expansion))) ((memq car (quote (define-skeleton define-derived-mode define-compilation-mode define-generic-mode easy-mmode-define-global-mode define-global-minor-mode define-globalized-minor-mode easy-mmode-define-minor-mode define-minor-mode defun* defmacro* define-overloadable-function))) (let* ((macrop (memq car (quote ...))) (name (nth 1 form)) (args (cl-case car (... ...) (... ...) (... nil) (t))) (body (nthcdr (get car ...) form)) (doc (if (stringp ...) (pop body)))) (when (listp args) (setq doc (help-add-fundoc-usage doc args))) (list (quote autoload) (if (listp name) name (list (quote quote) name)) file doc (or (and (memq car ...) t) (eq (car-safe ...) (quote interactive))) (if macrop (list (quote quote) (quote macro)) nil)))) ((eq car (quote defclass)) (let ((name (nth 1 form)) (superclasses (nth 2 form)) (doc (nth 4 form))) (list (quote eieio-defclass-autoload) (list (quote quote) name) (list (quote quote) superclasses) file doc))) ((eq car (quote defcustom)) (let ((varname (car-safe (cdr-safe form))) (init (car-safe (cdr-safe ...))) (doc (car-safe (cdr-safe ...)))) (\` (progn (defvar (\, varname) (\, init) (\, doc)) (custom-autoload (quote ...) (\, file) (\, ...)))))) ((eq car (quote defgroup)) (let ((groupname (nth 1 form))) (\` (let ((loads ...)) (if (member ... loads) nil (put ... ... ...)))))) ((and expansion (consp form)) form) (t nil)))
  make-autoload((defmacro* define-ibuffer-column (symbol (&key name inline props summarizer header-mouse-map) &rest body) "Define a column SYMBOL for use with `ibuffer-formats'.\n\nBODY will be called with `buffer' bound to the buffer object, and\n`mark' bound to the current mark on the buffer.  The original ibuffer\nbuffer will be bound to `ibuffer-buf'.\n\nIf NAME is given, it will be used as a title for the column.\nOtherwise, the title will default to a capitalized version of the\nSYMBOL's name.  PROPS is a plist of additional properties to add to\nthe text, such as `mouse-face'.  And SUMMARIZER, if given, is a\nfunction which will be passed a list of all the strings in its column;\nit should return a string to display at the bottom.\n\nIf HEADER-MOUSE-MAP is given, it will be used as a keymap for the\ntitle of the column.\n\nNote that this macro expands into a `defun' for a function named\nibuffer-make-column-NAME.  If INLINE is non-nil, then the form will be\ninlined into the compiled format versions.  This means that if you\nchange its definition, you should explicitly call\n`ibuffer-recompile-formats'.\n\n(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" (declare (indent defun)) (let* ((sym (intern (concat "ibuffer-make-column-" (symbol-name symbol)))) (bod-1 (\` (with-current-buffer buffer (\,@ body)))) (bod (if props (\` (propertize (\, bod-1) (\,@ props))) bod-1))) (\` (progn (\, (if inline (\` (push ... ibuffer-inline-columns)) (\` (defun ... ... ...)))) (put (quote (\, sym)) (quote ibuffer-column-name) (\, (if (stringp name) name (capitalize ...)))) (\, (if header-mouse-map (\` (put ... ... ...)))) (\, (if summarizer (\` (put ... ... ...)))) (\, (if summarizer (\` (put ... ... nil)))) :autoload-end)))) "ibuf-macs")
  (let* ((form (prog1 (read (current-buffer)) (or (bolp) (forward-line 1)))) (autoload (make-autoload form load-name))) (if autoload (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf (marker-buffer output-start))) (autoload-print-form autoload)))
  (closure ((ostart . 515329) (output-start . #<marker at 515329 in loaddefs.el>) (absfile . "/tmp/trunk/lisp/ibuf-macs.el") (otherbuf) (visited) (load-name . "ibuf-macs") (autoloads-done) (outfile . "/tmp/trunk/lisp/loaddefs.el") (outbuf . #<buffer loaddefs.el>) (file . "ibuf-macs.el") print-readably autoload-modified-buffers t) nil (let* ((form (prog1 (read (current-buffer)) (or (bolp) (forward-line 1)))) (autoload (make-autoload form load-name))) (if autoload (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf (marker-buffer output-start))) (autoload-print-form autoload))))()
  funcall((closure ((ostart . 515329) (output-start . #<marker at 515329 in loaddefs.el>) (absfile . "/tmp/trunk/lisp/ibuf-macs.el") (otherbuf) (visited) (load-name . "ibuf-macs") (autoloads-done) (outfile . "/tmp/trunk/lisp/loaddefs.el") (outbuf . #<buffer loaddefs.el>) (file . "ibuf-macs.el") print-readably autoload-modified-buffers t) nil (let* ((form (prog1 (read (current-buffer)) (or (bolp) (forward-line 1)))) (autoload (make-autoload form load-name))) (if autoload (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf (marker-buffer output-start))) (autoload-print-form autoload)))))
  (if debug-on-error (funcall body) (condition-case err (funcall body) (error (message "Autoload cookie error in %s:%s %S" file (count-lines (point-min) (point)) err))))
  (let ((body (lambda nil (let* ((form (prog1 ... ...)) (autoload (make-autoload form load-name))) (if autoload (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf ...)) (autoload-print-form autoload)))))) (if debug-on-error (funcall body) (condition-case err (funcall body) (error (message "Autoload cookie error in %s:%s %S" file (count-lines (point-min) (point)) err)))))
  (condition-case-unless-debug err (let* ((form (prog1 (read (current-buffer)) (or (bolp) (forward-line 1)))) (autoload (make-autoload form load-name))) (if autoload (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf (marker-buffer output-start))) (autoload-print-form autoload))) (error (message "Autoload cookie error in %s:%s %S" file (count-lines (point-min) (point)) err)))
  (if (eolp) (condition-case-unless-debug err (let* ((form (prog1 (read (current-buffer)) (or (bolp) (forward-line 1)))) (autoload (make-autoload form load-name))) (if autoload (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf (marker-buffer output-start))) (autoload-print-form autoload))) (error (message "Autoload cookie error in %s:%s %S" file (count-lines (point-min) (point)) err))) (princ (buffer-substring (progn (skip-chars-backward " \f	") (if (= (char-after (1+ ...)) 32) (forward-char 1)) (point)) (progn (forward-line 1) (point))) (marker-buffer output-start)))
  (cond ((looking-at (regexp-quote generate-autoload-cookie)) (unless output-start (let ((outbuf (or (if otherbuf nil outbuf) (autoload-find-destination absfile load-name) (throw ... otherbuf)))) (with-current-buffer outbuf (setq output-start (point-marker) ostart (point))))) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if (eolp) (condition-case-unless-debug err (let* ((form (prog1 ... ...)) (autoload (make-autoload form load-name))) (if autoload (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf ...)) (autoload-print-form autoload))) (error (message "Autoload cookie error in %s:%s %S" file (count-lines (point-min) (point)) err))) (princ (buffer-substring (progn (skip-chars-backward " \f	") (if (= ... 32) (forward-char 1)) (point)) (progn (forward-line 1) (point))) (marker-buffer output-start)))) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1)))
  (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond ((looking-at (regexp-quote generate-autoload-cookie)) (unless output-start (let ((outbuf (or ... ... ...))) (with-current-buffer outbuf (setq output-start (point-marker) ostart (point))))) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if (eolp) (condition-case-unless-debug err (let* ((form ...) (autoload ...)) (if autoload (push ... autoloads-done) (setq autoload form)) (let (...) (autoload-print-form autoload))) (error (message "Autoload cookie error in %s:%s %S" file (count-lines ... ...) err))) (princ (buffer-substring (progn (skip-chars-backward " \f	") (if ... ...) (point)) (progn (forward-line 1) (point))) (marker-buffer output-start)))) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1))))
  (save-restriction (widen) (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond ((looking-at (regexp-quote generate-autoload-cookie)) (unless output-start (let ((outbuf ...)) (with-current-buffer outbuf (setq output-start ... ostart ...)))) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if (eolp) (condition-case-unless-debug err (let* (... ...) (if autoload ... ...) (let ... ...)) (error (message "Autoload cookie error in %s:%s %S" file ... err))) (princ (buffer-substring (progn ... ... ...) (progn ... ...)) (marker-buffer output-start)))) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1)))))
  (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond ((looking-at (regexp-quote generate-autoload-cookie)) (unless output-start (let (...) (with-current-buffer outbuf ...))) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if (eolp) (condition-case-unless-debug err (let* ... ... ...) (error ...)) (princ (buffer-substring ... ...) (marker-buffer output-start)))) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1))))))
  (if no-update-autoloads nil (message "Generating autoloads for %s..." file) (setq load-name (if (stringp generated-autoload-load-name) generated-autoload-load-name (autoload-file-load-name absfile))) (when (and outfile (not (if (memq system-type (quote (ms-dos windows-nt))) (equal (downcase outfile) (downcase (autoload-generated-file))) (equal outfile (autoload-generated-file))))) (setq otherbuf t)) (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond ((looking-at (regexp-quote generate-autoload-cookie)) (unless output-start (let ... ...)) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if (eolp) (condition-case-unless-debug err ... ...) (princ ... ...))) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1)))))) (when output-start (let ((secondary-autoloads-file-buf (if otherbuf (current-buffer)))) (with-current-buffer (marker-buffer output-start) (save-excursion (cl-assert (= ostart output-start)) (goto-char output-start) (let ((relfile ...)) (autoload-insert-section-header (marker-buffer output-start) autoloads-done load-name relfile (if secondary-autoloads-file-buf ... ...)) (insert ";;; Generated autoloads from " relfile "\n"))) (insert generate-autoload-section-trailer)))) (message "Generating autoloads for %s...done" file))
  (unless no-update-autoloads (message "Generating autoloads for %s..." file) (setq load-name (if (stringp generated-autoload-load-name) generated-autoload-load-name (autoload-file-load-name absfile))) (when (and outfile (not (if (memq system-type (quote (ms-dos windows-nt))) (equal (downcase outfile) (downcase (autoload-generated-file))) (equal outfile (autoload-generated-file))))) (setq otherbuf t)) (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond ((looking-at (regexp-quote generate-autoload-cookie)) (unless output-start (let ... ...)) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if (eolp) (condition-case-unless-debug err ... ...) (princ ... ...))) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1)))))) (when output-start (let ((secondary-autoloads-file-buf (if otherbuf (current-buffer)))) (with-current-buffer (marker-buffer output-start) (save-excursion (cl-assert (= ostart output-start)) (goto-char output-start) (let ((relfile ...)) (autoload-insert-section-header (marker-buffer output-start) autoloads-done load-name relfile (if secondary-autoloads-file-buf ... ...)) (insert ";;; Generated autoloads from " relfile "\n"))) (insert generate-autoload-section-trailer)))) (message "Generating autoloads for %s...done" file))
  (save-current-buffer (set-buffer (or visited (autoload-find-file file))) (unless no-update-autoloads (message "Generating autoloads for %s..." file) (setq load-name (if (stringp generated-autoload-load-name) generated-autoload-load-name (autoload-file-load-name absfile))) (when (and outfile (not (if (memq system-type (quote ...)) (equal (downcase outfile) (downcase ...)) (equal outfile (autoload-generated-file))))) (setq otherbuf t)) (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond ((looking-at ...) (unless output-start ...) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if ... ... ...)) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1)))))) (when output-start (let ((secondary-autoloads-file-buf (if otherbuf (current-buffer)))) (with-current-buffer (marker-buffer output-start) (save-excursion (cl-assert (= ostart output-start)) (goto-char output-start) (let (...) (autoload-insert-section-header ... autoloads-done load-name relfile ...) (insert ";;; Generated autoloads from " relfile "\n"))) (insert generate-autoload-section-trailer)))) (message "Generating autoloads for %s...done" file)) (or visited (kill-buffer (current-buffer))))
  (with-current-buffer (or visited (autoload-find-file file)) (unless no-update-autoloads (message "Generating autoloads for %s..." file) (setq load-name (if (stringp generated-autoload-load-name) generated-autoload-load-name (autoload-file-load-name absfile))) (when (and outfile (not (if (memq system-type (quote ...)) (equal (downcase outfile) (downcase ...)) (equal outfile (autoload-generated-file))))) (setq otherbuf t)) (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond ((looking-at ...) (unless output-start ...) (search-forward generate-autoload-cookie) (skip-chars-forward " 	") (if ... ... ...)) ((looking-at ";") (forward-line 1)) (t (forward-sexp 1) (forward-line 1)))))) (when output-start (let ((secondary-autoloads-file-buf (if otherbuf (current-buffer)))) (with-current-buffer (marker-buffer output-start) (save-excursion (cl-assert (= ostart output-start)) (goto-char output-start) (let (...) (autoload-insert-section-header ... autoloads-done load-name relfile ...) (insert ";;; Generated autoloads from " relfile "\n"))) (insert generate-autoload-section-trailer)))) (message "Generating autoloads for %s...done" file)) (or visited (kill-buffer (current-buffer))))
  (let ((autoloads-done (quote nil)) load-name (print-length nil) (print-level nil) (print-readably t) (float-output-format nil) (visited (get-file-buffer file)) (otherbuf nil) (absfile (expand-file-name file)) output-start ostart) (with-current-buffer (or visited (autoload-find-file file)) (unless no-update-autoloads (message "Generating autoloads for %s..." file) (setq load-name (if (stringp generated-autoload-load-name) generated-autoload-load-name (autoload-file-load-name absfile))) (when (and outfile (not (if (memq system-type ...) (equal ... ...) (equal outfile ...)))) (setq otherbuf t)) (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (not (eobp)) (skip-chars-forward " 	\n\f") (cond (... ... ... ... ...) (... ...) (t ... ...))))) (when output-start (let ((secondary-autoloads-file-buf (if otherbuf ...))) (with-current-buffer (marker-buffer output-start) (save-excursion (cl-assert ...) (goto-char output-start) (let ... ... ...)) (insert generate-autoload-section-trailer)))) (message "Generating autoloads for %s...done" file)) (or visited (kill-buffer (current-buffer)))) (or (not output-start) otherbuf))
  (catch (quote done) (let ((autoloads-done (quote nil)) load-name (print-length nil) (print-level nil) (print-readably t) (float-output-format nil) (visited (get-file-buffer file)) (otherbuf nil) (absfile (expand-file-name file)) output-start ostart) (with-current-buffer (or visited (autoload-find-file file)) (unless no-update-autoloads (message "Generating autoloads for %s..." file) (setq load-name (if (stringp generated-autoload-load-name) generated-autoload-load-name (autoload-file-load-name absfile))) (when (and outfile (not (if ... ... ...))) (setq otherbuf t)) (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (not ...) (skip-chars-forward " 	\n\f") (cond ... ... ...)))) (when output-start (let ((secondary-autoloads-file-buf ...)) (with-current-buffer (marker-buffer output-start) (save-excursion ... ... ...) (insert generate-autoload-section-trailer)))) (message "Generating autoloads for %s...done" file)) (or visited (kill-buffer (current-buffer)))) (or (not output-start) otherbuf)))
  autoload-generate-file-autoloads("ibuf-macs.el" #<buffer loaddefs.el> "/tmp/trunk/lisp/loaddefs.el")
  (if (autoload-generate-file-autoloads file (current-buffer) buffer-file-name) (push file no-autoloads))
  (cond ((and (consp file) (stringp (car file))) (autoload-remove-section (match-beginning 0)) (let ((last-time (nth 4 form))) (dolist (file file) (let ((file-time (nth 5 ...))) (when (and file-time (not ...)) (push file no-autoloads) (setq files (delete file files))))))) ((not (stringp file))) ((or (not (file-exists-p file)) (member file done) (member (expand-file-name file) autoload-excludes)) (autoload-remove-section (match-beginning 0))) ((not (time-less-p (nth 4 form) (nth 5 (file-attributes file)))) nil) (t (autoload-remove-section (match-beginning 0)) (if (autoload-generate-file-autoloads file (current-buffer) buffer-file-name) (push file no-autoloads))))
  (let* ((form (autoload-read-section-header)) (file (nth 3 form))) (cond ((and (consp file) (stringp (car file))) (autoload-remove-section (match-beginning 0)) (let ((last-time (nth 4 form))) (dolist (file file) (let ((file-time ...)) (when (and file-time ...) (push file no-autoloads) (setq files ...)))))) ((not (stringp file))) ((or (not (file-exists-p file)) (member file done) (member (expand-file-name file) autoload-excludes)) (autoload-remove-section (match-beginning 0))) ((not (time-less-p (nth 4 form) (nth 5 (file-attributes file)))) nil) (t (autoload-remove-section (match-beginning 0)) (if (autoload-generate-file-autoloads file (current-buffer) buffer-file-name) (push file no-autoloads)))) (push file done) (setq files (delete file files)))
  (while (search-forward generate-autoload-section-header nil t) (let* ((form (autoload-read-section-header)) (file (nth 3 form))) (cond ((and (consp file) (stringp (car file))) (autoload-remove-section (match-beginning 0)) (let ((last-time (nth 4 form))) (dolist (file file) (let (...) (when ... ... ...))))) ((not (stringp file))) ((or (not (file-exists-p file)) (member file done) (member (expand-file-name file) autoload-excludes)) (autoload-remove-section (match-beginning 0))) ((not (time-less-p (nth 4 form) (nth 5 (file-attributes file)))) nil) (t (autoload-remove-section (match-beginning 0)) (if (autoload-generate-file-autoloads file (current-buffer) buffer-file-name) (push file no-autoloads)))) (push file done) (setq files (delete file files))))
  (save-excursion (setq files (delete (file-relative-name buffer-file-name) (mapcar (quote file-relative-name) files))) (goto-char (point-min)) (while (search-forward generate-autoload-section-header nil t) (let* ((form (autoload-read-section-header)) (file (nth 3 form))) (cond ((and (consp file) (stringp (car file))) (autoload-remove-section (match-beginning 0)) (let ((last-time ...)) (dolist (file file) (let ... ...)))) ((not (stringp file))) ((or (not (file-exists-p file)) (member file done) (member (expand-file-name file) autoload-excludes)) (autoload-remove-section (match-beginning 0))) ((not (time-less-p (nth 4 form) (nth 5 ...))) nil) (t (autoload-remove-section (match-beginning 0)) (if (autoload-generate-file-autoloads file (current-buffer) buffer-file-name) (push file no-autoloads)))) (push file done) (setq files (delete file files)))))
  (save-current-buffer (set-buffer (autoload-find-generated-file)) (save-excursion (setq files (delete (file-relative-name buffer-file-name) (mapcar (quote file-relative-name) files))) (goto-char (point-min)) (while (search-forward generate-autoload-section-header nil t) (let* ((form (autoload-read-section-header)) (file (nth 3 form))) (cond ((and (consp file) (stringp ...)) (autoload-remove-section (match-beginning 0)) (let (...) (dolist ... ...))) ((not (stringp file))) ((or (not ...) (member file done) (member ... autoload-excludes)) (autoload-remove-section (match-beginning 0))) ((not (time-less-p ... ...)) nil) (t (autoload-remove-section (match-beginning 0)) (if (autoload-generate-file-autoloads file ... buffer-file-name) (push file no-autoloads)))) (push file done) (setq files (delete file files))))) (dolist (file files) (cond ((member (expand-file-name file) autoload-excludes) nil) ((autoload-generate-file-autoloads file nil buffer-file-name) (push file no-autoloads)))) (when no-autoloads (setq no-autoloads (sort no-autoloads (quote string<))) (goto-char (point-max)) (search-backward "\f" nil t) (autoload-insert-section-header (current-buffer) nil nil no-autoloads this-time) (insert generate-autoload-section-trailer)) (let ((version-control (quote never))) (save-buffer)) (autoload-save-buffers))
  (with-current-buffer (autoload-find-generated-file) (save-excursion (setq files (delete (file-relative-name buffer-file-name) (mapcar (quote file-relative-name) files))) (goto-char (point-min)) (while (search-forward generate-autoload-section-header nil t) (let* ((form (autoload-read-section-header)) (file (nth 3 form))) (cond ((and (consp file) (stringp ...)) (autoload-remove-section (match-beginning 0)) (let (...) (dolist ... ...))) ((not (stringp file))) ((or (not ...) (member file done) (member ... autoload-excludes)) (autoload-remove-section (match-beginning 0))) ((not (time-less-p ... ...)) nil) (t (autoload-remove-section (match-beginning 0)) (if (autoload-generate-file-autoloads file ... buffer-file-name) (push file no-autoloads)))) (push file done) (setq files (delete file files))))) (dolist (file files) (cond ((member (expand-file-name file) autoload-excludes) nil) ((autoload-generate-file-autoloads file nil buffer-file-name) (push file no-autoloads)))) (when no-autoloads (setq no-autoloads (sort no-autoloads (quote string<))) (goto-char (point-max)) (search-backward "\f" nil t) (autoload-insert-section-header (current-buffer) nil nil no-autoloads this-time) (insert generate-autoload-section-trailer)) (let ((version-control (quote never))) (save-buffer)) (autoload-save-buffers))
  (let* ((files-re (let ((tmp nil)) (dolist (suf (get-load-suffixes)) (unless (string-match "\\.elc" suf) (push suf tmp))) (concat "^[^=.].*" (regexp-opt tmp t) "\\'"))) (files (apply (quote nconc) (mapcar (lambda (dir) (directory-files (expand-file-name dir) t files-re)) dirs))) (done nil) (this-time (current-time)) (no-autoloads nil) (autoload-modified-buffers nil) (generated-autoload-file (if (called-interactively-p (quote interactive)) (read-file-name "Write autoload definitions to file: ") generated-autoload-file))) (with-current-buffer (autoload-find-generated-file) (save-excursion (setq files (delete (file-relative-name buffer-file-name) (mapcar (quote file-relative-name) files))) (goto-char (point-min)) (while (search-forward generate-autoload-section-header nil t) (let* ((form (autoload-read-section-header)) (file (nth 3 form))) (cond ((and ... ...) (autoload-remove-section ...) (let ... ...)) ((not ...)) ((or ... ... ...) (autoload-remove-section ...)) ((not ...) nil) (t (autoload-remove-section ...) (if ... ...))) (push file done) (setq files (delete file files))))) (dolist (file files) (cond ((member (expand-file-name file) autoload-excludes) nil) ((autoload-generate-file-autoloads file nil buffer-file-name) (push file no-autoloads)))) (when no-autoloads (setq no-autoloads (sort no-autoloads (quote string<))) (goto-char (point-max)) (search-backward "\f" nil t) (autoload-insert-section-header (current-buffer) nil nil no-autoloads this-time) (insert generate-autoload-section-trailer)) (let ((version-control (quote never))) (save-buffer)) (autoload-save-buffers)))
  update-directory-autoloads()
  apply(update-directory-autoloads nil)
  (let ((args command-line-args-left)) (setq command-line-args-left nil) (apply (quote update-directory-autoloads) args))
  batch-update-autoloads()
  command-line-1(("-l" "emacs-lisp/autoload.el" "--eval" "(setq generated-autoload-file \"/tmp/trunk/lisp/loaddefs.el\" debug-on-error t)" "-f" "batch-update-autoloads"))
  command-line()
  normal-top-level()





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Tue, 12 Jun 2012 22:42:02 GMT) Full text and rfc822 format available.

Message #50 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Tue, 12 Jun 2012 18:39:02 -0400
Glenn Morris wrote:

> Debugger entered--Lisp error: (wrong-type-argument integerp nil)
>   nthcdr(nil (defmacro* define-ibuffer-column (symbol (&key name
>   inline props

So presumably it's this wot's to blame:

2012-05-18  Stefan Monnier  <monnier AT iro.umontreal.ca>

   * emacs-lisp/lisp-mode.el (doc-string-elt): Move those properties to
   their respective macro declarations.

Since autoload.el has this:

(require 'lisp-mode)        ;for `doc-string-elt' properties.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Wed, 13 Jun 2012 11:13:02 GMT) Full text and rfc822 format available.

Message #53 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Glenn Morris <rgm <at> gnu.org>
Cc: 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Wed, 13 Jun 2012 13:09:15 +0200
More trouble:

With an up-to-date, successfully bootstrapped Emacs:

C:/emacs/trunk> cd lisp/url
C:/emacs/trunk/lisp/url> emacs -batch -Q -f batch-byte-compile url-handlers.el

In url-handler-mode:
url-handlers.el:105:19:Warning: reference to free variable
    `url-handler-regexp'
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Compiler-macro error: (void-function cl--defsubst-expand)
Wrote c:/emacs/trunk/lisp/url/url-handlers.elc




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Wed, 13 Jun 2012 12:52:01 GMT) Full text and rfc822 format available.

Message #56 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Glenn Morris <rgm <at> gnu.org>
Cc: Juanma Barranquero <lekktu <at> gmail.com>, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Wed, 13 Jun 2012 08:48:24 -0400
>> Debugger entered--Lisp error: (wrong-type-argument integerp nil)
>> nthcdr(nil (defmacro* define-ibuffer-column (symbol (&key name
>> inline props

> So presumably it's this wot's to blame:

> 2012-05-18  Stefan Monnier  <monnier AT iro.umontreal.ca>

>    * emacs-lisp/lisp-mode.el (doc-string-elt): Move those properties to
>    their respective macro declarations.

> Since autoload.el has this:

> (require 'lisp-mode)        ;for `doc-string-elt' properties.

Indeed, thanks, should be fixed now.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Wed, 13 Jun 2012 13:00:02 GMT) Full text and rfc822 format available.

Message #59 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: Glenn Morris <rgm <at> gnu.org>, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Wed, 13 Jun 2012 08:56:26 -0400
> Compiler-macro error: (void-function cl--defsubst-expand)

I have to investigate some more, but I believe this is very minor: the
compiler-macro is not loaded so the function does not get inlined
(cl--defsubst-expand is the compiler-macro that implements the
inlining for defsubst*, aka cl-defsubst).

Not only this should be very minor but I believe the only real change is
that the compiler-macro-expansion used to fail silently in this case.
It happens in any file which calls a function defined with `cl-defsubst'
(e.g. a defstruct accessor) but which does not itself require CL.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Wed, 13 Jun 2012 14:16:02 GMT) Full text and rfc822 format available.

Message #62 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Wed, 13 Jun 2012 10:12:35 -0400
>> > If so, this scenario cannot explain the problem, because cl-macs.el is
>> > compiled exactly once during bootstrap; before the compilation there's
>> > only cl-macs.el.
>> Then, we need to investigate the real source of the problem.
>> Does someone have a reproducible recipe for it?
> The way I did it was to wait until the bootstrap version of Emacs,
> with all the preloaded Lisp files in .el form, dumps itself during
> bootstrap, then copy the executable aside, and use it for compiling
> whatever Lisp files I wanted.
> Andreas suggested a different recipe, which I think is equivalent.

I could swear I saw Andreas's recipe, but I can't find it again in
my emails.  Could someone resend it, please?


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Wed, 13 Jun 2012 15:39:02 GMT) Full text and rfc822 format available.

Message #65 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Wed, 13 Jun 2012 18:35:20 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: lekktu <at> gmail.com,  11649 <at> debbugs.gnu.org
> Date: Wed, 13 Jun 2012 10:12:35 -0400
> 
> I could swear I saw Andreas's recipe, but I can't find it again in
> my emails.  Could someone resend it, please?

  find -name "*.elc" -delete && make




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Wed, 13 Jun 2012 16:43:02 GMT) Full text and rfc822 format available.

Message #68 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Wed, 13 Jun 2012 12:39:44 -0400
>> I could swear I saw Andreas's recipe, but I can't find it again in
>> my emails.  Could someone resend it, please?
>   find -name "*.elc" -delete && make

Hmm... I was thinking of something else.  Maybe I dreamt it.
In any case, the above recipe does not exhibit any problem for me.
Any other recipe?


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Thu, 14 Jun 2012 03:10:01 GMT) Full text and rfc822 format available.

Message #71 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Thu, 14 Jun 2012 06:06:39 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: lekktu <at> gmail.com,  11649 <at> debbugs.gnu.org
> Date: Wed, 13 Jun 2012 12:39:44 -0400
> 
> >> I could swear I saw Andreas's recipe, but I can't find it again in
> >> my emails.  Could someone resend it, please?
> >   find -name "*.elc" -delete && make
> 
> Hmm... I was thinking of something else.  Maybe I dreamt it.
> In any case, the above recipe does not exhibit any problem for me.
> Any other recipe?

What specific problem you are trying to reproduce?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Thu, 14 Jun 2012 03:36:01 GMT) Full text and rfc822 format available.

Message #74 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Wed, 13 Jun 2012 23:32:21 -0400
>> >> I could swear I saw Andreas's recipe, but I can't find it again in
>> >> my emails.  Could someone resend it, please?
>> >   find -name "*.elc" -delete && make
>> Hmm... I was thinking of something else.  Maybe I dreamt it.
>> In any case, the above recipe does not exhibit any problem for me.
>> Any other recipe?
> What specific problem you are trying to reproduce?

The "invalid byte code" errors.


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Thu, 14 Jun 2012 17:13:01 GMT) Full text and rfc822 format available.

Message #77 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Thu, 14 Jun 2012 20:10:02 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: lekktu <at> gmail.com,  11649 <at> debbugs.gnu.org
> Date: Wed, 13 Jun 2012 23:32:21 -0400
> 
> >> >> I could swear I saw Andreas's recipe, but I can't find it again in
> >> >> my emails.  Could someone resend it, please?
> >> >   find -name "*.elc" -delete && make
> >> Hmm... I was thinking of something else.  Maybe I dreamt it.
> >> In any case, the above recipe does not exhibit any problem for me.
> >> Any other recipe?
> > What specific problem you are trying to reproduce?
> 
> The "invalid byte code" errors.

All I needed on GNU/Linux was this:

  make bootstrap
  cd lisp
  find . -name "*.el" -exec touch "{}" ";"
  make recompile

Don't you see it?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Thu, 14 Jun 2012 17:55:01 GMT) Full text and rfc822 format available.

Message #80 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: lekktu <at> gmail.com, Eli Zaretskii <eliz <at> gnu.org>, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Thu, 14 Jun 2012 13:51:36 -0400
Stefan Monnier wrote:

>>> I could swear I saw Andreas's recipe, but I can't find it again in
>>> my emails.  Could someone resend it, please?
>>   find -name "*.elc" -delete && make
>
> Hmm... I was thinking of something else.  Maybe I dreamt it.

Andreas comments are here:

http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00172.html

and explain why he increased the stack depth.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Thu, 14 Jun 2012 18:00:01 GMT) Full text and rfc822 format available.

Message #83 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org,
	Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Thu, 14 Jun 2012 13:56:41 -0400
Eli Zaretskii wrote:

>> The "invalid byte code" errors.
>
> All I needed on GNU/Linux was this:
>
>   make bootstrap
>   cd lisp
>   find . -name "*.el" -exec touch "{}" ";"
>   make recompile
>
> Don't you see it?

I see this, but I also see the same thing with the emacs-24 branch.

(There, it is "Invalid byte code in cl-seq.elc".)

I don't think this is a new (or real) bug, it is just that `make
recompile' does the wrong thing (as was already known), since it
compiles everything in the same single Emacs instance.

As Stefan said in http://debbugs.gnu.org/11649#29
    
    Usually "Invalid byte code in <foo>" happens because <foo> is
    byte-compile-dynamic (as is the case for cl-macs) and you try to call
    a function from it after byte-compiling a new version of the file.
    More specifically, the scenario is:
    1- load cl-macs.elc.
    2- don't call function <bla>.
    3- change cl-macs.elc.
    4- call <bla> which is dynamically loaded from cl-macs.elc.
    5- now the offset loaded at point 1 is not valid any more, so you get an
       error: you need to re-load cl-macs.elc.

AFAICS, nobody is claiming that the "invalid byte code" happens buring
*bootstrap*, which would be a new, serious bug.

AFAICS, all the actual problems are fixed in this area (expect perhaps
MS Windows specific build efficiency issues).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Thu, 14 Jun 2012 18:32:01 GMT) Full text and rfc822 format available.

Message #86 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Glenn Morris <rgm <at> gnu.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, Stefan Monnier <monnier <at> iro.umontreal.ca>,
	11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Thu, 14 Jun 2012 20:27:26 +0200
On Thu, Jun 14, 2012 at 7:56 PM, Glenn Morris <rgm <at> gnu.org> wrote:

> AFAICS, all the actual problems are fixed in this area (expect perhaps
> MS Windows specific build efficiency issues).

And the defstruct related errors (minor according to Stefan, but still
they should be fixed):

  Compiler-macro error: (void-function cl--defsubst-expand)

  Juanma




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Thu, 14 Jun 2012 19:32:02 GMT) Full text and rfc822 format available.

Message #89 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Glenn Morris <rgm <at> gnu.org>
Cc: lekktu <at> gmail.com, 11649 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Thu, 14 Jun 2012 22:28:02 +0300
> From: Glenn Morris <rgm <at> gnu.org>
> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>,  lekktu <at> gmail.com,  11649 <at> debbugs.gnu.org
> Date: Thu, 14 Jun 2012 13:56:41 -0400
> 
> AFAICS, all the actual problems are fixed in this area (expect perhaps
> MS Windows specific build efficiency issues).

The efficiency issues are not Windows specific, they just belong to
another bug report.  I gave data from GNU/Linux, which shows the same
slowdown, here:

  http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11657#5




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Fri, 15 Jun 2012 03:23:02 GMT) Full text and rfc822 format available.

Message #92 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: Glenn Morris <rgm <at> gnu.org>, 11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Thu, 14 Jun 2012 23:19:18 -0400
> Compiler-macro error: (void-function cl--defsubst-expand)

Should be fixed now (it was indeed minor, and rather than silence the
warning, I decided to make inlining work in those cases as well).


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Fri, 15 Jun 2012 17:50:01 GMT) Full text and rfc822 format available.

Message #95 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Glenn Morris <rgm <at> gnu.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, Stefan Monnier <monnier <at> iro.umontreal.ca>,
	11649 <at> debbugs.gnu.org
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Fri, 15 Jun 2012 19:45:51 +0200
On Thu, Jun 14, 2012 at 7:56 PM, Glenn Morris <rgm <at> gnu.org> wrote:

> I see this, but I also see the same thing with the emacs-24 branch.
>
> (There, it is "Invalid byte code in cl-seq.elc".)
>
> I don't think this is a new (or real) bug, it is just that `make
> recompile' does the wrong thing (as was already known), since it
> compiles everything in the same single Emacs instance.

If "make recompile" does the wrong thing, it is a bug, if a small one.
As the only remaining item of this bug report, and not being really
24.1.50-specific, I think it should be filed as a separate bug and
this one closed.

    Juanma




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11649; Package emacs. (Fri, 15 Jun 2012 18:31:01 GMT) Full text and rfc822 format available.

Message #98 received at 11649 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Juanma Barranquero <lekktu <at> gmail.com>
Cc: rgm <at> gnu.org, 11649 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Fri, 15 Jun 2012 21:27:22 +0300
> From: Juanma Barranquero <lekktu <at> gmail.com>
> Date: Fri, 15 Jun 2012 19:45:51 +0200
> Cc: Eli Zaretskii <eliz <at> gnu.org>, Stefan Monnier <monnier <at> iro.umontreal.ca>, 11649 <at> debbugs.gnu.org
> 
> If "make recompile" does the wrong thing, it is a bug, if a small one.

It does the right thing, but should not be used in certain situations.
I don't think you can "fix" that, except if you remove that target
altogether.




Reply sent to Juanma Barranquero <lekktu <at> gmail.com>:
You have taken responsibility. (Fri, 15 Jun 2012 19:27:02 GMT) Full text and rfc822 format available.

Notification sent to Juanma Barranquero <lekktu <at> gmail.com>:
bug acknowledged by developer. (Fri, 15 Jun 2012 19:27:02 GMT) Full text and rfc822 format available.

Message #103 received at 11649-done <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: rgm <at> gnu.org, 11649-done <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: Re: bug#11649: 24.1.50; Some compilation woes
Date: Fri, 15 Jun 2012 21:22:33 +0200
On Fri, Jun 15, 2012 at 8:27 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:

> It does the right thing, but should not be used in certain situations.
> I don't think you can "fix" that, except if you remove that target
> altogether.

OK, closing then.

    Juanma




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 14 Jul 2012 11:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 11 years and 288 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.