unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Changes in lisp/Makefile.in to skip preloaded files
       [not found] <E1Mv3iq-0005oI-5L@monty-python.gnu.org>
@ 2009-10-06  7:44 ` Eli Zaretskii
  2009-10-06  9:25   ` Eli Zaretskii
  0 siblings, 1 reply; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-06  7:44 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

> -autoloads: $(LOADDEFS) doit
> +# The Makefile dependency is to make any missing-file error more explicit.
> +autoloads: $(LOADDEFS) ../src/Makefile doit
>  	chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \
>  	  $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \
>  	  $(lisp)/dired.el $(lisp)/ibuffer.el
>  	wd=$(lisp); $(setwins_almost); \
>  	echo Directories: $$wins; \
> -	$(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins
> +	preload=`sed -n -e '/^lisp=/ s/$${lispsource}//g p' ../src/Makefile | \
> +	  sed 's/^lisp= //'`; \
> +	$(emacs) -l autoload --eval "(setq generated-autoload-file \"$(lisp)/loaddefs.el\" autoload-excludes \"$${preload}\")" -f batch-update-autoloads $$wins

src/Makefile gets recreated every time you run the configure script,
so this change will now cause autoloads to appear out of date after
every configure.  Is that what you really want?  Should autoloads
depend on src/Makefile.in instead?

Similar with the preload= thing: why not run Sed on src/Makefile.in?
src/Makefile could be botched by some snafu; why both the lisp
directory on that behalf as well?




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06  7:44 ` Changes in lisp/Makefile.in to skip preloaded files Eli Zaretskii
@ 2009-10-06  9:25   ` Eli Zaretskii
  2009-10-06  9:33     ` Miles Bader
                       ` (2 more replies)
  0 siblings, 3 replies; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-06  9:25 UTC (permalink / raw)
  To: rgm, emacs-devel

> Date: Tue, 06 Oct 2009 09:44:41 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: emacs-devel@gnu.org
> 
> > -autoloads: $(LOADDEFS) doit
> > +# The Makefile dependency is to make any missing-file error more explicit.
> > +autoloads: $(LOADDEFS) ../src/Makefile doit
> >  	chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \
> >  	  $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \
> >  	  $(lisp)/dired.el $(lisp)/ibuffer.el
> >  	wd=$(lisp); $(setwins_almost); \
> >  	echo Directories: $$wins; \
> > -	$(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins
> > +	preload=`sed -n -e '/^lisp=/ s/$${lispsource}//g p' ../src/Makefile | \
> > +	  sed 's/^lisp= //'`; \
> > +	$(emacs) -l autoload --eval "(setq generated-autoload-file \"$(lisp)/loaddefs.el\" autoload-excludes \"$${preload}\")" -f batch-update-autoloads $$wins
> 
> src/Makefile gets recreated every time you run the configure script,
> so this change will now cause autoloads to appear out of date after
> every configure.  Is that what you really want?  Should autoloads
> depend on src/Makefile.in instead?
> 
> Similar with the preload= thing: why not run Sed on src/Makefile.in?
> src/Makefile could be botched by some snafu; why both the lisp
> directory on that behalf as well?

I think I see the reason for the latter: it's because src/Makefile.in
spells out $lisp spanned over many lines, whereas src/Makefile has
them all in the same line, which simplifies the job of th Sed script
to some extent.

Anyway, I cannot say that I like this solution.  In particular, it
cannot be ported to w32, because the list of preloaded files is too
long and overflows the max size of command lines on some Windows
systems (lib-src/makefile.w32-in breaks it into 3 lists for that very
reason).

I can think about 2 alternatives which are better (IMO):

  . Add to src/Makefile.in a new target `echolisp' which will simply
    run "@echo $(lisp)".  Then initialize autoload-excludes with
    something like (shell-command-to-string "make -C ../src echolisp").
    (This will probably need some tweaking on w32, because of the same
    limitation of command-line size, but that's much easier done than
    with the current approach.)

  . Modify loadup.el to map `load' over a list of files, instead of
    having multiple `(load FOO)' lines.  That is, replace each line
    now saying "(load FOO)" with "(add-to-list 'load-list FOO)"; then
    map `load' on the result when the list is complete.  With this
    approach, `load-list' will have the list of preloaded files ready
    for use by autoload.el.

WDYT?

P.S.  I generally find any Make or shell/Sed trickery misplaced in
Emacs Makefiles, since we have the full power of Emacs at our
fingertips.  Portability is one obvious advantage, but more
importantly, it sounds right, in the context of building Emacs, to use
Emacs itself wherever we can.  Otherwise, we appear as not believing
in the tool we are developing.  Don't you agree?




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06  9:25   ` Eli Zaretskii
@ 2009-10-06  9:33     ` Miles Bader
  2009-10-06  9:42       ` Eli Zaretskii
  2009-10-06 15:28     ` Stefan Monnier
  2009-10-06 16:16     ` Glenn Morris
  2 siblings, 1 reply; 45+ messages in thread
From: Miles Bader @ 2009-10-06  9:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:
> P.S.  I generally find any Make or shell/Sed trickery misplaced in
> Emacs Makefiles, since we have the full power of Emacs at our
> fingertips.  Portability is one obvious advantage, but more
> importantly, it sounds right, in the context of building Emacs, to use
> Emacs itself wherever we can.  Otherwise, we appear as not believing
> in the tool we are developing.  Don't you agree?

Well, of course that's only true if a built emacs is available at the
point of invocation.  Also, the elisp code to do a given text munging
job is often quite a bit longer, because sed is designed specifically to
do certain tasks very concisely.

-Miles

-- 
Everywhere is walking distance if you have the time.  -- Steven Wright




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06  9:33     ` Miles Bader
@ 2009-10-06  9:42       ` Eli Zaretskii
  2009-10-06 10:14         ` Miles Bader
  0 siblings, 1 reply; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-06  9:42 UTC (permalink / raw)
  To: Miles Bader; +Cc: emacs-devel

> From: Miles Bader <miles@gnu.org>
> Cc: rgm@gnu.org, emacs-devel@gnu.org
> Date: Tue, 06 Oct 2009 18:33:35 +0900
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> > P.S.  I generally find any Make or shell/Sed trickery misplaced in
> > Emacs Makefiles, since we have the full power of Emacs at our
> > fingertips.  Portability is one obvious advantage, but more
> > importantly, it sounds right, in the context of building Emacs, to use
> > Emacs itself wherever we can.  Otherwise, we appear as not believing
> > in the tool we are developing.  Don't you agree?
> 
> Well, of course that's only true if a built emacs is available at the
> point of invocation.

Agreed.  In the case in point, Emacs _is_ available, since we generate
loaddefs.el by running Emacs.

> Also, the elisp code to do a given text munging job is often quite a
> bit longer, because sed is designed specifically to do certain tasks
> very concisely.

Granted, if you switch tools, you frequently need to think about a
different solution, more in line with the spirit of the tools you
switch to.  That's what I did in the two suggested alternatives.

IOW, Sed is used here to produce a list of files, and there's more
than just the Sed way of doing that.  If we are to use Emacs, we need
to do it the Emacs way.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06  9:42       ` Eli Zaretskii
@ 2009-10-06 10:14         ` Miles Bader
  2009-10-06 13:12           ` Dan Nicolaescu
  0 siblings, 1 reply; 45+ messages in thread
From: Miles Bader @ 2009-10-06 10:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Well, of course that's only true if a built emacs is available at the
>> point of invocation.
>
> Agreed.  In the case in point, Emacs _is_ available, since we generate
> loaddefs.el by running Emacs.

Sure, tho if sed is needed at _any_ point in the build process, it's
then a requirement, so there's no reason to not use it elsewhere.

-Miles

-- 
Vote, v. The instrument and symbol of a freeman's power to make a fool of
himself and a wreck of his country.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06 10:14         ` Miles Bader
@ 2009-10-06 13:12           ` Dan Nicolaescu
  2009-10-06 13:45             ` Dan Nicolaescu
  2009-10-06 16:20             ` Glenn Morris
  0 siblings, 2 replies; 45+ messages in thread
From: Dan Nicolaescu @ 2009-10-06 13:12 UTC (permalink / raw)
  To: Miles Bader; +Cc: Eli Zaretskii, emacs-devel

Miles Bader <miles@gnu.org> writes:

  > Eli Zaretskii <eliz@gnu.org> writes:
  > 
  > >> Well, of course that's only true if a built emacs is available at the
  > >> point of invocation.
  > >
  > > Agreed.  In the case in point, Emacs _is_ available, since we generate
  > > loaddefs.el by running Emacs.
  > 
  > Sure, tho if sed is needed at _any_ point in the build process, it's
  > then a requirement, so there's no reason to not use it elsewhere.

IMO in this particular case it's just an unnecessary complication, the
alternative is to remove the ;;;#autoload lines in the preloaded files.
Which there are about 4, and only one of which has an important impact,
the one in ediff-init.el ....




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06 13:12           ` Dan Nicolaescu
@ 2009-10-06 13:45             ` Dan Nicolaescu
  2009-10-06 16:20             ` Glenn Morris
  1 sibling, 0 replies; 45+ messages in thread
From: Dan Nicolaescu @ 2009-10-06 13:45 UTC (permalink / raw)
  To: Miles Bader; +Cc: Eli Zaretskii, emacs-devel

Dan Nicolaescu <dann@ics.uci.edu> writes:

  > Miles Bader <miles@gnu.org> writes:
  > 
  >   > Eli Zaretskii <eliz@gnu.org> writes:
  >   > 
  >   > >> Well, of course that's only true if a built emacs is available at the
  >   > >> point of invocation.
  >   > >
  >   > > Agreed.  In the case in point, Emacs _is_ available, since we generate
  >   > > loaddefs.el by running Emacs.
  >   > 
  >   > Sure, tho if sed is needed at _any_ point in the build process, it's
  >   > then a requirement, so there's no reason to not use it elsewhere.
  > 
  > IMO in this particular case it's just an unnecessary complication, the
  > alternative is to remove the ;;;#autoload lines in the preloaded files.
  > Which there are about 4, and only one of which has an important impact,
  > the one in ediff-init.el ....
              ^^^^^^^^^^^^^^
Sould be  ediff-init.el




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06  9:25   ` Eli Zaretskii
  2009-10-06  9:33     ` Miles Bader
@ 2009-10-06 15:28     ` Stefan Monnier
  2009-10-06 16:16     ` Glenn Morris
  2 siblings, 0 replies; 45+ messages in thread
From: Stefan Monnier @ 2009-10-06 15:28 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

>   . Add to src/Makefile.in a new target `echolisp' which will simply
>     run "@echo $(lisp)".  Then initialize autoload-excludes with
>     something like (shell-command-to-string "make -C ../src echolisp").
>     (This will probably need some tweaking on w32, because of the same
>     limitation of command-line size, but that's much easier done than
>     with the current approach.)

That sounds like a great idea: just "run the code" rather than "analyse
the code".


        Stefan




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06  9:25   ` Eli Zaretskii
  2009-10-06  9:33     ` Miles Bader
  2009-10-06 15:28     ` Stefan Monnier
@ 2009-10-06 16:16     ` Glenn Morris
  2009-10-06 18:41       ` Eli Zaretskii
  2 siblings, 1 reply; 45+ messages in thread
From: Glenn Morris @ 2009-10-06 16:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:

>> so this change will now cause autoloads to appear out of date after
>> every configure.  Is that what you really want?  Should autoloads
>> depend on src/Makefile.in instead?

It need not depend on either, as the comment indicates. That was just
to make any error message clear in the unlikely error that
src/Makefile was missing. The dependency can just be removed.

>> Similar with the preload= thing: why not run Sed on src/Makefile.in?

Because Makefile.in does not have the appropriate platform specific
list of dumped files, only the generated Makefile does.

> I think I see the reason for the latter: it's because src/Makefile.in
> spells out $lisp spanned over many lines, whereas src/Makefile has
> them all in the same line, which simplifies the job of th Sed script
> to some extent.

That's just a nice bonus, the real reason is above.

> Anyway, I cannot say that I like this solution.  In particular, it
> cannot be ported to w32, because the list of preloaded files is too
> long and overflows the max size of command lines on some Windows
> systems (lib-src/makefile.w32-in breaks it into 3 lists for that very
> reason).
>
> I can think about 2 alternatives which are better (IMO):

Feel free to change it as you see fit.

> P.S.  I generally find any Make or shell/Sed trickery misplaced in
> Emacs Makefiles, since we have the full power of Emacs at our
> fingertips.

As Miles has said, sed is already used, along with grep, throughout
the Makefiles. It is the simplest tool for this job.

BTW, no real harm results if this change is simply never synced to
windows.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06 13:12           ` Dan Nicolaescu
  2009-10-06 13:45             ` Dan Nicolaescu
@ 2009-10-06 16:20             ` Glenn Morris
  2009-10-06 16:50               ` Dan Nicolaescu
  1 sibling, 1 reply; 45+ messages in thread
From: Glenn Morris @ 2009-10-06 16:20 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: Eli Zaretskii, emacs-devel, Miles Bader

Dan Nicolaescu wrote:

> IMO in this particular case it's just an unnecessary complication, the
> alternative is to remove the ;;;#autoload lines in the preloaded files.
> Which there are about 4, and only one of which has an important impact,
> the one in ediff-init.el ....

I would like to add more such autoloads, since they serve as a useful
form of comment. Eg for riskiness properties.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06 16:20             ` Glenn Morris
@ 2009-10-06 16:50               ` Dan Nicolaescu
  0 siblings, 0 replies; 45+ messages in thread
From: Dan Nicolaescu @ 2009-10-06 16:50 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, Miles Bader, emacs-devel

Glenn Morris <rgm@gnu.org> writes:

  > Dan Nicolaescu wrote:
  > 
  > > IMO in this particular case it's just an unnecessary complication, the
  > > alternative is to remove the ;;;#autoload lines in the preloaded files.
  > > Which there are about 4, and only one of which has an important impact,
  > > the one in ediff-init.el ....
  > 
  > I would like to add more such autoloads, since they serve as a useful
  > form of comment. Eg for riskiness properties.

Honestly, that sounds like busy work.  What can an autoload do more to a
riskiness property that a comment does not do?  riskiness properties are
not exactly hard to understand, or hard to search for.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06 16:16     ` Glenn Morris
@ 2009-10-06 18:41       ` Eli Zaretskii
  2009-10-07  3:00         ` Glenn Morris
  0 siblings, 1 reply; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-06 18:41 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

> From: Glenn Morris <rgm@gnu.org>
> Cc: emacs-devel@gnu.org
> Date: Tue, 06 Oct 2009 12:16:38 -0400
> 
> As Miles has said, sed is already used, along with grep, throughout
> the Makefiles.

My problem is not with using Sed or Grep.  My problem is with using
them when Emacs can do the job more elegantly.

> BTW, no real harm results if this change is simply never synced to
> windows.

If it was important enough to do for Posix platforms, it is important
enough for all platforms, IMO.  Otherwise, we should agree with Dan
and remove this altogether in favor of the much simpler alternative he
proposed.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-06 18:41       ` Eli Zaretskii
@ 2009-10-07  3:00         ` Glenn Morris
  2009-10-07  7:23           ` Glenn Morris
  2009-10-07  9:15           ` Eli Zaretskii
  0 siblings, 2 replies; 45+ messages in thread
From: Glenn Morris @ 2009-10-07  3:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:

> If it was important enough to do for Posix platforms, it is important
> enough for all platforms, IMO. 

"non-Posix" platforms supported by Emacs == Windows?

I have locally implemented your 'echo' idea. I haven't installed it
because it might break the Windows build, if it can't handle the long
command line. (What is the length limit?)

It might also break some non-Windows builds, since the `echolisp'
output includes the expanded version of $lispsource. Therefore it is
much longer than the output of the current sed command (which was even
shorter than $shortlisp, since it omitted the "../lisp" part).

($shortlisp and $SOME_MACHINE_LISP are not acceptable replacements in
this case, since they lose the platform-specific information. I wish
someone had written down exactly which systems needed shortlisp,
because I have no idea if they remain revelant.)

Anyway, what was the solution that you had in mind for this?




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-07  3:00         ` Glenn Morris
@ 2009-10-07  7:23           ` Glenn Morris
  2009-10-07  9:23             ` Eli Zaretskii
  2009-10-07  9:57             ` Changes in lisp/Makefile.in to skip preloaded files Eli Zaretskii
  2009-10-07  9:15           ` Eli Zaretskii
  1 sibling, 2 replies; 45+ messages in thread
From: Glenn Morris @ 2009-10-07  7:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel


Actually, I installed something else. It will need adapting for
Windows, since that seems to put the list of lisp files in
lib-src/Makefile rather than src/Makefile.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-07  3:00         ` Glenn Morris
  2009-10-07  7:23           ` Glenn Morris
@ 2009-10-07  9:15           ` Eli Zaretskii
  1 sibling, 0 replies; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-07  9:15 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

> From: Glenn Morris <rgm@gnu.org>
> Cc: emacs-devel@gnu.org
> Date: Tue, 06 Oct 2009 23:00:44 -0400
> 
> Eli Zaretskii wrote:
> 
> > If it was important enough to do for Posix platforms, it is important
> > enough for all platforms, IMO. 
> 
> "non-Posix" platforms supported by Emacs == Windows?

Yes, at least that.  (I simply don't know what other platforms might
have trouble with that.  MSDOS uses the same code as Posix.)

> I have locally implemented your 'echo' idea. I haven't installed it
> because it might break the Windows build, if it can't handle the long
> command line.

You cannot break the Windows build, since Windows does not use any of
the Makefile.in files.

> (What is the length limit?)

It depends on the Windows version and the shell used.  Modern Windows
systems have a 32KB limit, assuming no weird shell is installed.

> Anyway, what was the solution that you had in mind for this?

Is this still an issue, given that you installed a different method?




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-07  7:23           ` Glenn Morris
@ 2009-10-07  9:23             ` Eli Zaretskii
  2009-10-07 10:00               ` Juanma Barranquero
  2009-10-07 16:16               ` Glenn Morris
  2009-10-07  9:57             ` Changes in lisp/Makefile.in to skip preloaded files Eli Zaretskii
  1 sibling, 2 replies; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-07  9:23 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

> From: Glenn Morris <rgm@gnu.org>
> Cc: emacs-devel@gnu.org
> Date: Wed, 07 Oct 2009 03:23:30 -0400
> 
> 
> Actually, I installed something else. It will need adapting for
> Windows, since that seems to put the list of lisp files in
> lib-src/Makefile rather than src/Makefile.

Not only is it in another directory, it is also not expanded by cpp,
unlike src/Makefile, and thus does not end up in a single line.  Which
means your code will not work at all with lib-src/makefile on w32.  In
fact, if we ever switch away from producing src/Makefile by running
cpp, this new code will break on Posix platforms as well.

What I had in mind for working around possible limitations of
command-line length was to run "make -C ../src echolisp > FILE" and
then read that FILE inside batch-update-autoloads.  The w32 code could
then create FILE in 2 chunks, using its $(lisp1) and $(lisp2)
variables; the rest of the code in batch-update-autoloads could then
work on both Posix and Windows.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-07  7:23           ` Glenn Morris
  2009-10-07  9:23             ` Eli Zaretskii
@ 2009-10-07  9:57             ` Eli Zaretskii
  1 sibling, 0 replies; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-07  9:57 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

> From: Glenn Morris <rgm@gnu.org>
> Date: Wed, 07 Oct 2009 03:23:30 -0400
> Cc: emacs-devel@gnu.org
> 
> 
> Actually, I installed something else. It will need adapting for
> Windows, since that seems to put the list of lisp files in
> lib-src/Makefile rather than src/Makefile.

For now, I fixed it to at least not error out if "^lisp=" is not found
in src/Makefile.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-07  9:23             ` Eli Zaretskii
@ 2009-10-07 10:00               ` Juanma Barranquero
  2009-10-07 16:16               ` Glenn Morris
  1 sibling, 0 replies; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-07 10:00 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

On Wed, Oct 7, 2009 at 11:23, Eli Zaretskii <eliz@gnu.org> wrote:

> Which
> means your code will not work at all with lib-src/makefile on w32.

Witness

C:\emacs\lisp> make autoloads
Directories: .  cedet/semantic/analyze cedet/semantic/bovine
cedet/semantic/decorate cedet/semantic/symref cedet/semantic/wisent
"./../bin/emacs.exe" -batch --no-init-file --no-site-file --multibyte
-l autoload \
                --eval "(setq find-file-hook nil
find-file-suppress-same-file-warnings t)" \
                -f w32-batch-update-autoloads
"C:/emacs/lisp/loaddefs.el" .  cedet/semantic/analyze
cedet/semantic/bovine cedet/semantic/decorate cedet/semantic/symref
cedet/semantic/wisent
Search failed: "^lisp= "
make: *** [autoloads] Error -1

so it's now impossible to update autoloads on Windows.

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-07  9:23             ` Eli Zaretskii
  2009-10-07 10:00               ` Juanma Barranquero
@ 2009-10-07 16:16               ` Glenn Morris
  2009-10-08 23:08                 ` Lennart Borgman
  2009-10-10  0:50                 ` ignoring autoloads in preloaded files on Windows [was Re: Changes in lisp/Makefile.in to skip preloaded files] Glenn Morris
  1 sibling, 2 replies; 45+ messages in thread
From: Glenn Morris @ 2009-10-07 16:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:

> Not only is it in another directory, it is also not expanded by cpp,
> unlike src/Makefile, and thus does not end up in a single line.  Which
> means your code will not work at all with lib-src/makefile on w32.  In
> fact, if we ever switch away from producing src/Makefile by running
> cpp, this new code will break on Posix platforms as well.

Would you like me to make it work on Windows?
If so, please provide an example of what the generated makefile looks
like on Windows (and what it is called).

> What I had in mind for working around possible limitations of
> command-line length was to run "make -C ../src echolisp > FILE" and
> then read that FILE inside batch-update-autoloads.  The w32 code could
> then create FILE in 2 chunks, using its $(lisp1) and $(lisp2)
> variables; the rest of the code in batch-update-autoloads could then
> work on both Posix and Windows.

Clever!


I will implement one or the other.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-07 16:16               ` Glenn Morris
@ 2009-10-08 23:08                 ` Lennart Borgman
  2009-10-08 23:31                   ` Juanma Barranquero
  2009-10-10  0:50                 ` ignoring autoloads in preloaded files on Windows [was Re: Changes in lisp/Makefile.in to skip preloaded files] Glenn Morris
  1 sibling, 1 reply; 45+ messages in thread
From: Lennart Borgman @ 2009-10-08 23:08 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Wed, Oct 7, 2009 at 6:16 PM, Glenn Morris <rgm@gnu.org> wrote:
> Eli Zaretskii wrote:
>
>> Not only is it in another directory, it is also not expanded by cpp,
>> unlike src/Makefile, and thus does not end up in a single line.  Which
>> means your code will not work at all with lib-src/makefile on w32.  In
>> fact, if we ever switch away from producing src/Makefile by running
>> cpp, this new code will break on Posix platforms as well.
>
> Would you like me to make it work on Windows?
> If so, please provide an example of what the generated makefile looks
> like on Windows (and what it is called).
>
>> What I had in mind for working around possible limitations of
>> command-line length was to run "make -C ../src echolisp > FILE" and
>> then read that FILE inside batch-update-autoloads.  The w32 code could
>> then create FILE in 2 chunks, using its $(lisp1) and $(lisp2)
>> variables; the rest of the code in batch-update-autoloads could then
>> work on both Posix and Windows.
>
> Clever!
>
>
> I will implement one or the other.

Thanks for working on this, but what is the status right now? Is it
possible to build Emacs on w32?




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-08 23:08                 ` Lennart Borgman
@ 2009-10-08 23:31                   ` Juanma Barranquero
  2009-10-08 23:34                     ` Lennart Borgman
  0 siblings, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-08 23:31 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: Eli Zaretskii, emacs-devel

On Fri, Oct 9, 2009 at 01:08, Lennart Borgman <lennart.borgman@gmail.com> wrote:

> Thanks for working on this, but what is the status right now? Is it
> possible to build Emacs on w32?

Apply the following patch to temporarily remove the changes that
disable autoload generation on Windows. (This is not a "fix", is just
a workaround.)

    Juanma


Index: lisp/emacs-lisp/autoload.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/autoload.el,v
retrieving revision 1.149
diff -u -2 -r1.149 autoload.el
--- lisp/emacs-lisp/autoload.el	7 Oct 2009 16:10:37 -0000	1.149
+++ lisp/emacs-lisp/autoload.el	7 Oct 2009 17:23:46 -0000
@@ -684,18 +684,16 @@
   "Update loaddefs.el autoloads in batch mode.
 Calls `update-directory-autoloads' on the command line arguments."
-  ;; For use during the Emacs build process only.
-  (unless autoload-excludes
-    (let* ((ldir (file-name-directory generated-autoload-file))
-	   (mfile (expand-file-name "../src/Makefile" ldir))
-	   lim)
-      (when (file-readable-p mfile)
-	(with-temp-buffer
-	  (insert-file-contents mfile)
-	  (when (re-search-forward "^lisp= " nil t)
-	    (setq lim (line-end-position))
-	    (while (re-search-forward "\\${lispsource}\\([^ ]+\\.el\\)c?\\>"
-				      lim t)
-	      (push (expand-file-name (match-string 1) ldir)
-		    autoload-excludes)))))))
+  ;; For use during the Emacs build process only.  We do the file-name
+  ;; expansion here rather than in lisp/Makefile in order to keep the
+  ;; shell command line short.  (Long lines are an issue on some systems.)
+  (if (stringp autoload-excludes)
+      (setq autoload-excludes
+	    (mapcar
+	     (lambda (file)
+	       (concat
+		(expand-file-name (file-name-sans-extension file)
+				  (file-name-directory generated-autoload-file))
+		".el"))
+	     (split-string autoload-excludes))))
   (let ((args command-line-args-left))
     (setq command-line-args-left nil)




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-08 23:31                   ` Juanma Barranquero
@ 2009-10-08 23:34                     ` Lennart Borgman
  2009-10-09  0:02                       ` Juanma Barranquero
  0 siblings, 1 reply; 45+ messages in thread
From: Lennart Borgman @ 2009-10-08 23:34 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Eli Zaretskii, emacs-devel

Thanks, is there something wrong with applying this to the trunk until
the problem is fixed?


On Fri, Oct 9, 2009 at 1:31 AM, Juanma Barranquero <lekktu@gmail.com> wrote:
> On Fri, Oct 9, 2009 at 01:08, Lennart Borgman <lennart.borgman@gmail.com> wrote:
>
>> Thanks for working on this, but what is the status right now? Is it
>> possible to build Emacs on w32?
>
> Apply the following patch to temporarily remove the changes that
> disable autoload generation on Windows. (This is not a "fix", is just
> a workaround.)
>
>    Juanma
>
>
> Index: lisp/emacs-lisp/autoload.el
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/autoload.el,v
> retrieving revision 1.149
> diff -u -2 -r1.149 autoload.el
> --- lisp/emacs-lisp/autoload.el 7 Oct 2009 16:10:37 -0000       1.149
> +++ lisp/emacs-lisp/autoload.el 7 Oct 2009 17:23:46 -0000
> @@ -684,18 +684,16 @@
>   "Update loaddefs.el autoloads in batch mode.
>  Calls `update-directory-autoloads' on the command line arguments."
> -  ;; For use during the Emacs build process only.
> -  (unless autoload-excludes
> -    (let* ((ldir (file-name-directory generated-autoload-file))
> -          (mfile (expand-file-name "../src/Makefile" ldir))
> -          lim)
> -      (when (file-readable-p mfile)
> -       (with-temp-buffer
> -         (insert-file-contents mfile)
> -         (when (re-search-forward "^lisp= " nil t)
> -           (setq lim (line-end-position))
> -           (while (re-search-forward "\\${lispsource}\\([^ ]+\\.el\\)c?\\>"
> -                                     lim t)
> -             (push (expand-file-name (match-string 1) ldir)
> -                   autoload-excludes)))))))
> +  ;; For use during the Emacs build process only.  We do the file-name
> +  ;; expansion here rather than in lisp/Makefile in order to keep the
> +  ;; shell command line short.  (Long lines are an issue on some systems.)
> +  (if (stringp autoload-excludes)
> +      (setq autoload-excludes
> +           (mapcar
> +            (lambda (file)
> +              (concat
> +               (expand-file-name (file-name-sans-extension file)
> +                                 (file-name-directory generated-autoload-file))
> +               ".el"))
> +            (split-string autoload-excludes))))
>   (let ((args command-line-args-left))
>     (setq command-line-args-left nil)
>




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-08 23:34                     ` Lennart Borgman
@ 2009-10-09  0:02                       ` Juanma Barranquero
  2009-10-09  0:04                         ` Glenn Morris
  0 siblings, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-09  0:02 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: Eli Zaretskii, emacs-devel

> Thanks, is there something wrong with applying this to the trunk until
> the problem is fixed?

Yes, there is. This is a workaround to make Emacs build on *Windows*.

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-09  0:02                       ` Juanma Barranquero
@ 2009-10-09  0:04                         ` Glenn Morris
  2009-10-09  0:25                           ` Juanma Barranquero
  0 siblings, 1 reply; 45+ messages in thread
From: Glenn Morris @ 2009-10-09  0:04 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Eli Zaretskii, Lennart Borgman, emacs-devel

Juanma Barranquero wrote:

>> Thanks, is there something wrong with applying this to the trunk until
>> the problem is fixed?
>
> Yes, there is. This is a workaround to make Emacs build on *Windows*.

Sorry, but could you explain what you are talking about?
What is the problem on Windows?

You know Eli fixed my trivial and obvious typo?




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-09  0:04                         ` Glenn Morris
@ 2009-10-09  0:25                           ` Juanma Barranquero
  2009-10-09 11:48                             ` Lennart Borgman
  0 siblings, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-09  0:25 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, Lennart Borgman, emacs-devel

On Fri, Oct 9, 2009 at 02:04, Glenn Morris <rgm@gnu.org> wrote:

> You know Eli fixed my trivial and obvious typo?

Yes. My (obviously mistaken) impression was that Eli fixed it so it
didn't cause an error, not that it did work. Indeed, it works now and
does not need any fix.

In my defense, between your typo and Eli's fix I was also struggling
with another autoloads-related bootstrap bug on Windows (introduced by
a missing S in WINS_UPDATE), and I accidentally conflated both
problems. Let's say that after bootstrapping more than a dozen times
in a row, I was more than a little bored and my attention was
dwindling (on my computer, I have to stop the bootstrap every now and
then to prevent the CPU from overheating, so that's a dozen bootstraps
with an eye on the log and the other one on the CPU temp tracker on
the taskbar...)

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: Changes in lisp/Makefile.in to skip preloaded files
  2009-10-09  0:25                           ` Juanma Barranquero
@ 2009-10-09 11:48                             ` Lennart Borgman
  0 siblings, 0 replies; 45+ messages in thread
From: Lennart Borgman @ 2009-10-09 11:48 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Eli Zaretskii, emacs-devel

On Fri, Oct 9, 2009 at 2:25 AM, Juanma Barranquero <lekktu@gmail.com> wrote:
> On Fri, Oct 9, 2009 at 02:04, Glenn Morris <rgm@gnu.org> wrote:
>
>> You know Eli fixed my trivial and obvious typo?
>
> Yes. My (obviously mistaken) impression was that Eli fixed it so it
> didn't cause an error, not that it did work. Indeed, it works now and
> does not need any fix.
>
> In my defense, between your typo and Eli's fix I was also struggling

Thanks Juanma and Glenn for clarifying the current status. I am sorry
if stirred up some confusion.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* ignoring autoloads in preloaded files on Windows [was Re: Changes in lisp/Makefile.in to skip preloaded files]
  2009-10-07 16:16               ` Glenn Morris
  2009-10-08 23:08                 ` Lennart Borgman
@ 2009-10-10  0:50                 ` Glenn Morris
  2009-10-10  2:27                   ` Juanma Barranquero
  1 sibling, 1 reply; 45+ messages in thread
From: Glenn Morris @ 2009-10-10  0:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel


>> What I had in mind for working around possible limitations of
>> command-line length was to run "make -C ../src echolisp > FILE" and
>> then read that FILE inside batch-update-autoloads.

Here is an attempt at this. Please could someone test this on Windows.


*** lib-src/makefile.w32-in	27 Sep 2009 08:27:28 -0000	2.101
--- lib-src/makefile.w32-in	9 Oct 2009 22:55:20 -0000
***************
*** 289,294 ****
--- 289,299 ----
  	$(lispsource)window.elc \
  	$(lispsource)version.el
  
+ # Used by batch-update-autoloads.
+ echolisp:
+ 	@echo $(lisp1)
+ 	@echo $(lisp2)
+ 
  # This is needed the first time we build the tree, since temacs.exe
  # does not exist yet, and the DOC rule needs it to rebuild DOC whenever
  # Emacs is rebuilt.
***************
*** 348,353 ****
--- 353,359 ----
  		- $(DEL) getopt.h
  		- $(DEL_TREE) $(OBJDIR)
  		- $(DEL) stamp_BLD
+ 		- $(DEL) echolisp.tmp
  
  distclean: cleanall
  	- $(DEL) TAGS
*** lisp/emacs-lisp/autoload.el	7 Oct 2009 16:10:37 -0000	1.149
--- lisp/emacs-lisp/autoload.el	9 Oct 2009 22:59:46 -0000
***************
*** 686,694 ****
    ;; For use during the Emacs build process only.
    (unless autoload-excludes
      (let* ((ldir (file-name-directory generated-autoload-file))
! 	   (mfile (expand-file-name "../src/Makefile" ldir))
  	   lim)
        (when (file-readable-p mfile)
  	(with-temp-buffer
  	  (insert-file-contents mfile)
  	  (when (re-search-forward "^lisp= " nil t)
--- 686,717 ----
    ;; For use during the Emacs build process only.
    (unless autoload-excludes
      (let* ((ldir (file-name-directory generated-autoload-file))
! 	   (mdir (expand-file-name (if (eq system-type 'windows-nt)
! 					"../lib-src"
! 				     "../src") ldir))
! 	   (mfile (expand-file-name "Makefile" mdir))
! 	   (tmpfile (expand-file-name "echolisp.tmp" mdir))
  	   lim)
        (when (file-readable-p mfile)
+ 	(if (eq system-type 'windows-nt)
+ 	    (when (ignore-errors
+ 		   (delete-file tmpfile)
+ 		   (shell-command (format "make -C %s echolisp > %s"
+ 					  mdir tmpfile))
+ 		   (file-readable-p tmpfile))
+ 	      (with-temp-buffer
+ 		(insert-file-contents tmpfile)
+ 		(while (not (eobp))
+ 		  (setq lim (line-end-position))
+ 		  (while (re-search-forward "\\([^ ]+\\.el\\)c?\\>" lim t)
+ 		    (push (expand-file-name (match-string 1) mdir)
+ 			  autoload-excludes))
+ 		  (forward-line 1))))
+ 	  ;; Non-Windows platforms do not use the echolisp approach
+ 	  ;; because the maximum safe command-line length for all
+ 	  ;; supported platforms is unknown.  Also it would seem a
+ 	  ;; shame to split $lisp into $lisp1 etc just for the sake of
+ 	  ;; this command (Windows requires it for other reasons).
  	  (with-temp-buffer
  	    (insert-file-contents mfile)
  	    (when (re-search-forward "^lisp= " nil t)
***************
*** 696,702 ****
  	    (while (re-search-forward "\\${lispsource}\\([^ ]+\\.el\\)c?\\>"
  				      lim t)
  	      (push (expand-file-name (match-string 1) ldir)
! 		    autoload-excludes)))))))
    (let ((args command-line-args-left))
      (setq command-line-args-left nil)
      (apply 'update-directory-autoloads args)))
--- 719,725 ----
  	      (while (re-search-forward "\\${lispsource}\\([^ ]+\\.el\\)c?\\>"
  					lim t)
  		(push (expand-file-name (match-string 1) ldir)
! 		      autoload-excludes))))))))
    (let ((args command-line-args-left))
      (setq command-line-args-left nil)
      (apply 'update-directory-autoloads args)))




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows [was Re: Changes in lisp/Makefile.in to skip preloaded files]
  2009-10-10  0:50                 ` ignoring autoloads in preloaded files on Windows [was Re: Changes in lisp/Makefile.in to skip preloaded files] Glenn Morris
@ 2009-10-10  2:27                   ` Juanma Barranquero
  2009-10-10  3:34                     ` ignoring autoloads in preloaded files on Windows Glenn Morris
  0 siblings, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-10  2:27 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sat, Oct 10, 2009 at 02:50, Glenn Morris <rgm@gnu.org> wrote:

> Here is an attempt at this. Please could someone test this on Windows.

On my setup, Emacs bootstraps fine. However, I don't think the patch is working.

IIUC, the purpose of this patch is to avoid generating autoloads for
preloaded files; but in my test this is not the case. For example,
ls-lisp's autoloads are still in lisp/loaddefs.el (ls-lisp is
preloaded on Windows, and it is listed in lisp2 via the WINNT_SUPPORT
macro). In fact, lisp/loaddefs.el is just 174 bytes shorter than in my
previous bootstrap, and that's because of recent changes to the
sources.

At least, "make -C lib-src echolisp > echolisp.tmp" is doing the right thing:

--------------------------------------------------------------------------------
make: Entering directory `C:/bin/emacs/trunk/lib-src'
../lisp/abbrev.elc ../lisp/buff-menu.elc ../lisp/button.elc
../lisp/emacs-lisp/byte-run.elc ../lisp/composite.elc
../lisp/cus-face.elc ../lisp/cus-start.elc ../lisp/custom.elc
../lisp/emacs-lisp/backquote.elc ../lisp/emacs-lisp/lisp-mode.elc
../lisp/emacs-lisp/lisp.elc ../lisp/env.elc ../lisp/faces.elc
../lisp/files.elc ../lisp/format.elc ../lisp/facemenu.elc
../lisp/select.elc ../lisp/scroll-bar.elc ../lisp/mouse.elc
../lisp/emacs-lisp/float-sup.elc ../lisp/frame.elc ../lisp/help.elc
../lisp/indent.elc ../lisp/isearch.elc ../lisp/rfn-eshadow.elc
../lisp/loadup.el ../lisp/loaddefs.el ../lisp/bindings.elc
../lisp/emacs-lisp/map-ynp.elc ../lisp/menu-bar.elc
../lisp/international/mule.elc ../lisp/international/mule-conf.el
../lisp/international/mule-cmds.elc
../lisp/international/characters.elc ../lisp/international/charprop.el
../lisp/case-table.elc
../lisp/language/chinese.el ../lisp/language/cyrillic.el
../lisp/language/indian.el ../lisp/language/sinhala.el
../lisp/language/english.el ../lisp/language/ethiopic.elc
../lisp/language/european.elc ../lisp/language/czech.el
../lisp/language/slovak.el ../lisp/language/romanian.el
../lisp/language/greek.el ../lisp/language/hebrew.el
../lisp/language/japanese.el ../lisp/language/korean.el
../lisp/language/lao.el ../lisp/language/cham.el
../lisp/language/tai-viet.el ../lisp/language/thai.el
../lisp/language/tibetan.elc ../lisp/language/vietnamese.el
../lisp/language/misc-lang.el ../lisp/language/utf-8-lang.el
../lisp/language/georgian.el ../lisp/language/khmer.el
../lisp/language/burmese.el ../lisp/paths.el ../lisp/register.elc
../lisp/replace.elc ../lisp/simple.elc ../lisp/minibuffer.elc
../lisp/startup.elc ../lisp/subr.elc ../lisp/term/tty-colors.elc
../lisp/font-core.elc ../lisp/emacs-lisp/syntax.elc
../lisp/font-lock.elc ../lisp/jit-lock.elc ../lisp/textmodes/fill.elc
../lisp/textmodes/page.elc ../lisp/textmodes/paragraphs.elc
../lisp/textmodes/text-mode.elc ../lisp/emacs-lisp/timer.elc
../lisp/jka-cmpr-hook.elc ../lisp/vc-hooks.elc ../lisp/ediff-hook.elc
../lisp/epa-hook.elc ../lisp/tooltip.elc ../lisp/ls-lisp.elc
../lisp/disp-table.elc ../lisp/w32-fns.elc ../lisp/dos-w32.elc
../lisp/w32-vars.elc ../lisp/term/common-win.elc
../lisp/term/w32-win.elc ../lisp/fringe.elc ../lisp/image.elc
../lisp/international/fontset.elc ../lisp/dnd.elc ../lisp/tool-bar.elc
../lisp/mwheel.elc ../lisp/widget.elc ../lisp/window.elc
../lisp/version.el
make: Leaving directory `C:/bin/emacs/trunk/lib-src'
--------------------------------------------------------------------------------

Also,

> +                  (shell-command (format "make -C %s echolisp > %s"
> +                                         mdir tmpfile))

the make command used should either be customizable somehow (via
nt/configure.bat, I suppose), or at least documented. nt/INSTALL
mentions five likely names for the make utility: nmake (for MSVC),
make, mingw32-make, gnumake and gmake.

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  2:27                   ` Juanma Barranquero
@ 2009-10-10  3:34                     ` Glenn Morris
  2009-10-10  3:57                       ` Juanma Barranquero
  0 siblings, 1 reply; 45+ messages in thread
From: Glenn Morris @ 2009-10-10  3:34 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Eli Zaretskii, emacs-devel

Juanma Barranquero wrote:

> IIUC, the purpose of this patch is to avoid generating autoloads for
> preloaded files; but in my test this is not the case.

Thanks for testing it (I cannot).

If you grep for "skipped" in the output of `make autoloads', there
should be about 90 matches if it works.

If it is not working, I guess the file-name expansion is going wrong,
and the absolute file names are not matching. You don't need to
bootstrap to check it. Can you edebug batch-update-autoloads, and see
what is happening with the file-name expansion?

>> +                  (shell-command (format "make -C %s echolisp > %s"
>> +                                         mdir tmpfile))
>
> the make command used should either be customizable somehow (via
> nt/configure.bat, I suppose), or at least documented. nt/INSTALL
> mentions five likely names for the make utility: nmake (for MSVC),
> make, mingw32-make, gnumake and gmake.

Will (getenv "MAKE") DTRT on Windows?




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  3:34                     ` ignoring autoloads in preloaded files on Windows Glenn Morris
@ 2009-10-10  3:57                       ` Juanma Barranquero
  2009-10-10  4:17                         ` Juanma Barranquero
  2009-10-10  7:32                         ` Eli Zaretskii
  0 siblings, 2 replies; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-10  3:57 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sat, Oct 10, 2009 at 05:34, Glenn Morris <rgm@gnu.org> wrote:

> If you grep for "skipped" in the output of `make autoloads', there
> should be about 90 matches if it works.

There's no one "skipped" in the full log of the bootstrap, and if I
delete lisp/loaddefs.el and redo it, there's no "skipped" in its
output either.

> Will (getenv "MAKE") DTRT on Windows?

I don't think so. $(MAKE) is defined for make runs, but it is not
passed as an environment variable to subrprocesses:

C:\> make
c:\emacs\bin\emacs.exe -Q --batch --eval '(prin1 (getenv "MAKE"))'
nil

OTOH, perhaps it would make sense to ask the user to define it.

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  3:57                       ` Juanma Barranquero
@ 2009-10-10  4:17                         ` Juanma Barranquero
  2009-10-10  4:19                           ` Juanma Barranquero
  2009-10-10  5:13                           ` Juanma Barranquero
  2009-10-10  7:32                         ` Eli Zaretskii
  1 sibling, 2 replies; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-10  4:17 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sat, Oct 10, 2009 at 05:57, Juanma Barranquero <lekktu@gmail.com> wrote:

> There's no one "skipped" in the full log of the bootstrap, and if I
> delete lisp/loaddefs.el and redo it, there's no "skipped" in its
> output either.

Aha. I think you're generating echolisp.tmp in the root, instead of
lib-src/. If I move it to source and regenerate the autoloads, I see
"skipped" indeed:

  C:\emacs> grep -c skipped autoload.log
  95

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  4:17                         ` Juanma Barranquero
@ 2009-10-10  4:19                           ` Juanma Barranquero
  2009-10-10  5:13                           ` Juanma Barranquero
  1 sibling, 0 replies; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-10  4:19 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sat, Oct 10, 2009 at 06:17, Juanma Barranquero <lekktu@gmail.com> wrote:

> lib-src/. If I move it to source and regenerate the autoloads, I see

s/source/lib-src/

It's 06:17 right now here. Almost time to go to bed...

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  4:17                         ` Juanma Barranquero
  2009-10-10  4:19                           ` Juanma Barranquero
@ 2009-10-10  5:13                           ` Juanma Barranquero
  2009-10-10  7:37                             ` Eli Zaretskii
  1 sibling, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-10  5:13 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sat, Oct 10, 2009 at 06:17, Juanma Barranquero <lekktu@gmail.com> wrote:

> Aha. I think you're generating echolisp.tmp in the root, instead of
> lib-src/.

Wrong, wrong, wrong!

> If I move it to source and regenerate the autoloads, I see
> "skipped" indeed:

That's true indeed.

The real problem is that, in

  (when (ignore-errors
          (delete-file tmpfile)
          (shell-command (format "make -C %s echolisp > %s"
                                 mdir tmpfile))
          (file-readable-p tmpfile))
     ...)

`delete-file' has to be inside its own (ignore-errors); otherwise,
executing the function when there's no echolisp.tmp will skip the make
generation altogether. This is why copying a fresh echolisp.tmp to
lib-src worked.

Changing the code to

(when (ignore-errors
        (ignore-errors (delete-file tmpfile))
        (shell-command (format "make -C %s echolisp > %s"
                               mdir tmpfile))
        (file-readable-p tmpfile))

works, both bootstrapping and doing "make autoloads".

That said, right now loaddefs.el is 27241 bytes shorter than before,
or 97,76% of what used to be. Not much of a gain.

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  3:57                       ` Juanma Barranquero
  2009-10-10  4:17                         ` Juanma Barranquero
@ 2009-10-10  7:32                         ` Eli Zaretskii
  2009-10-10 11:51                           ` Juanma Barranquero
  1 sibling, 1 reply; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-10  7:32 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel

> From: Juanma Barranquero <lekktu@gmail.com>
> Date: Sat, 10 Oct 2009 05:57:13 +0200
> Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> 
> > Will (getenv "MAKE") DTRT on Windows?
> 
> I don't think so. $(MAKE) is defined for make runs, but it is not
> passed as an environment variable to subrprocesses:
> 
> C:\> make
> c:\emacs\bin\emacs.exe -Q --batch --eval '(prin1 (getenv "MAKE"))'
> nil

That's true, but we can always work around this.  For example (watch
the make-cmd thing):

autoloads: $(lisp)/loaddefs.el $(LOADDEFS) doit
        @echo Directories: . $(WINS_UPDATES)
        $(emacs) -l autoload \
                --eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t make-cmd=$(MAKE))$(ARGQUOTE) \
                -f w32-batch-update-autoloads "$(lisp)/loaddefs.el" . $(WINS_UPDATES)

Then use `make-cmd' inside autoload.el instead of a literal "make".

> OTOH, perhaps it would make sense to ask the user to define it.

I think this is undesirable, for something that needs to run at build
time.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  5:13                           ` Juanma Barranquero
@ 2009-10-10  7:37                             ` Eli Zaretskii
  2009-10-13 19:16                               ` Stefan Monnier
  0 siblings, 1 reply; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-10  7:37 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel

> From: Juanma Barranquero <lekktu@gmail.com>
> Date: Sat, 10 Oct 2009 07:13:28 +0200
> Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> 
> (when (ignore-errors
>         (ignore-errors (delete-file tmpfile))
>         (shell-command (format "make -C %s echolisp > %s"
>                                mdir tmpfile))

The other problem with this is that the -C switch is not supported by
nmake.  So I think it's better to bind default-directory to mdir
instead, and then read the echolisp.tmp file from that directory.

(Sorry, I know the -C comes from my suggestion.)




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  7:32                         ` Eli Zaretskii
@ 2009-10-10 11:51                           ` Juanma Barranquero
  2009-10-10 13:16                             ` Eli Zaretskii
  0 siblings, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-10 11:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

On Sat, Oct 10, 2009 at 09:32, Eli Zaretskii <eliz@gnu.org> wrote:

>                --eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t make-cmd=$(MAKE))$(ARGQUOTE) \

> Then use `make-cmd' inside autoload.el instead of a literal "make".

Clever.

> I think this is undesirable, for something that needs to run at build time.

Well, I agree; my reasoning was that this step falling is not an
error, just a missed little optimization (so there'd be no harm is the
user doesn't define MAKE). But your method is much better.

> The other problem with this is that the -C switch is not supported by nmake.
> So I think it's better to bind default-directory to mdir instead

Yes, I was assuming that we would need a way to pass the full command,
or work around the different arguments of make/nmake.

> and then read the echolisp.tmp file from that directory.

That already happens.

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10 11:51                           ` Juanma Barranquero
@ 2009-10-10 13:16                             ` Eli Zaretskii
  2009-10-10 21:17                               ` Glenn Morris
  0 siblings, 1 reply; 45+ messages in thread
From: Eli Zaretskii @ 2009-10-10 13:16 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel

> From: Juanma Barranquero <lekktu@gmail.com>
> Date: Sat, 10 Oct 2009 13:51:33 +0200
> Cc: rgm@gnu.org, emacs-devel@gnu.org
> 
> On Sat, Oct 10, 2009 at 09:32, Eli Zaretskii <eliz@gnu.org> wrote:
> 
> >                --eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t make-cmd=$(MAKE))$(ARGQUOTE) \
> 
> > Then use `make-cmd' inside autoload.el instead of a literal "make".
> 
> Clever.

It _would_ be clever if I didn't stick the stupid `=' there ;-)





^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10 13:16                             ` Eli Zaretskii
@ 2009-10-10 21:17                               ` Glenn Morris
  2009-10-11  2:02                                 ` Juanma Barranquero
  0 siblings, 1 reply; 45+ messages in thread
From: Glenn Morris @ 2009-10-10 21:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Juanma Barranquero, emacs-devel


Thanks for the feedback. Here is a revised version.

*** lisp/makefile.w32-in.~1.99.~	2009-10-08 23:28:21.000000000 -0700
--- lisp/makefile.w32-in	2009-10-10 14:01:28.000000000 -0700
***************
*** 214,220 ****
  	@echo Directories: . $(WINS_UPDATES)
  	$(emacs) -l autoload \
  		--eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
! 		-f w32-batch-update-autoloads "$(lisp)/loaddefs.el" . $(WINS_UPDATES)
  
  $(lisp)/subdirs.el:
  	$(MAKE) $(MFLAGS) update-subdirs
--- 214,220 ----
  	@echo Directories: . $(WINS_UPDATES)
  	$(emacs) -l autoload \
  		--eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
! 		-f w32-batch-update-autoloads "$(lisp)/loaddefs.el" $(MAKE) . $(WINS_UPDATES)
  
  $(lisp)/subdirs.el:
  	$(MAKE) $(MFLAGS) update-subdirs

*** lisp/w32-fns.el.~1.97.~	2009-09-14 19:30:52.000000000 -0700
--- lisp/w32-fns.el	2009-10-10 14:01:19.000000000 -0700
***************
*** 490,496 ****
  munge command-line arguments that include file names to a horrible mess
  that Emacs is unable to cope with."
    (let ((generated-autoload-file
! 	 (expand-file-name (pop command-line-args-left))))
      (batch-update-autoloads)))
  
  (defun w32-append-code-lines (orig extra)
--- 490,497 ----
  munge command-line arguments that include file names to a horrible mess
  that Emacs is unable to cope with."
    (let ((generated-autoload-file
! 	 (expand-file-name (pop command-line-args-left)))
! 	(autoload-make-program (pop command-line-args-left)))
      (batch-update-autoloads)))
  
  (defun w32-append-code-lines (orig extra)

*** lib-src/makefile.w32-in	27 Sep 2009 08:27:28 -0000	2.101
--- lib-src/makefile.w32-in	10 Oct 2009 21:13:32 -0000
***************
*** 289,294 ****
--- 289,299 ----
  	$(lispsource)window.elc \
  	$(lispsource)version.el
  
+ # Used by batch-update-autoloads.
+ echolisp:
+ 	@echo $(lisp1)
+ 	@echo $(lisp2)
+ 
  # This is needed the first time we build the tree, since temacs.exe
  # does not exist yet, and the DOC rule needs it to rebuild DOC whenever
  # Emacs is rebuilt.
***************
*** 348,353 ****
--- 353,359 ----
  		- $(DEL) getopt.h
  		- $(DEL_TREE) $(OBJDIR)
  		- $(DEL) stamp_BLD
+ 		- $(DEL) echolisp.tmp
  
  distclean: cleanall
  	- $(DEL) TAGS

*** lisp/emacs-lisp/autoload.el	7 Oct 2009 16:10:37 -0000	1.149
--- lisp/emacs-lisp/autoload.el	10 Oct 2009 21:14:02 -0000
***************
*** 679,684 ****
--- 679,687 ----
  (define-obsolete-function-alias 'update-autoloads-from-directories
      'update-directory-autoloads "22.1")
  
+ (defvar autoload-make-program (or (getenv "MAKE") "make")
+   "Name of the make program in use during the Emacs build process.")
+ 
  ;;;###autoload
  (defun batch-update-autoloads ()
    "Update loaddefs.el autoloads in batch mode.
***************
*** 686,694 ****
    ;; For use during the Emacs build process only.
    (unless autoload-excludes
      (let* ((ldir (file-name-directory generated-autoload-file))
! 	   (mfile (expand-file-name "../src/Makefile" ldir))
  	   lim)
        (when (file-readable-p mfile)
  	(with-temp-buffer
  	  (insert-file-contents mfile)
  	  (when (re-search-forward "^lisp= " nil t)
--- 689,722 ----
    ;; For use during the Emacs build process only.
    (unless autoload-excludes
      (let* ((ldir (file-name-directory generated-autoload-file))
! 	   (default-directory
! 	     (file-name-as-directory
! 	      (expand-file-name (if (eq system-type 'windows-nt)
! 				    "../lib-src"
! 				  "../src") ldir)))
! 	   (mfile "Makefile")
! 	   (tmpfile "echolisp.tmp")
  	   lim)
        (when (file-readable-p mfile)
+ 	(if (eq system-type 'windows-nt)
+ 	    (when (ignore-errors
+ 		   (if (file-exists-p tmpfile) (delete-file tmpfile))
+ 		   (shell-command (format "%s echolisp > %s"
+ 					  autoload-make-program tmpfile))
+ 		   (file-readable-p tmpfile))
+ 	      (with-temp-buffer
+ 		(insert-file-contents tmpfile)
+ 		(while (not (eobp))
+ 		  (setq lim (line-end-position))
+ 		  (while (re-search-forward "\\([^ ]+\\.el\\)c?\\>" lim t)
+ 		    (push (expand-file-name (match-string 1))
+ 			  autoload-excludes))
+ 		  (forward-line 1))))
+ 	  ;; Non-Windows platforms do not use the echolisp approach
+ 	  ;; because the maximum safe command-line length for all
+ 	  ;; supported platforms is unknown.  Also it would seem a
+ 	  ;; shame to split $lisp into $lisp1 etc just for the sake of
+ 	  ;; this command (Windows requires it for other reasons).
  	  (with-temp-buffer
  	    (insert-file-contents mfile)
  	    (when (re-search-forward "^lisp= " nil t)
***************
*** 696,702 ****
  	    (while (re-search-forward "\\${lispsource}\\([^ ]+\\.el\\)c?\\>"
  				      lim t)
  	      (push (expand-file-name (match-string 1) ldir)
! 		    autoload-excludes)))))))
    (let ((args command-line-args-left))
      (setq command-line-args-left nil)
      (apply 'update-directory-autoloads args)))
--- 724,730 ----
  	      (while (re-search-forward "\\${lispsource}\\([^ ]+\\.el\\)c?\\>"
  					lim t)
  		(push (expand-file-name (match-string 1) ldir)
! 		      autoload-excludes))))))))
    (let ((args command-line-args-left))
      (setq command-line-args-left nil)
      (apply 'update-directory-autoloads args)))




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10 21:17                               ` Glenn Morris
@ 2009-10-11  2:02                                 ` Juanma Barranquero
  2009-10-11  2:36                                   ` Glenn Morris
  0 siblings, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-11  2:02 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sat, Oct 10, 2009 at 23:17, Glenn Morris <rgm@gnu.org> wrote:

> Thanks for the feedback. Here is a revised version.

Using GNU make ("make.exe"), it generates lisp/loaddefs.el as
expected, but lisp/calendar/*-loaddefs.el and lisp/mh-e/mh-loaddefs.el
are empty (just the header and the end sections are present).

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-11  2:02                                 ` Juanma Barranquero
@ 2009-10-11  2:36                                   ` Glenn Morris
  2009-10-11  2:44                                     ` Glenn Morris
  2009-10-11  3:35                                     ` Juanma Barranquero
  0 siblings, 2 replies; 45+ messages in thread
From: Glenn Morris @ 2009-10-11  2:36 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Eli Zaretskii, emacs-devel

Juanma Barranquero wrote:

> Using GNU make ("make.exe"), it generates lisp/loaddefs.el as
> expected, but lisp/calendar/*-loaddefs.el and lisp/mh-e/mh-loaddefs.el
> are empty (just the header and the end sections are present).

Oh, whoops. Revised patch for lisp/makefile.w32-in follows.

I'm doing it this way because:

i) I have no idea how to quote a setting of autoload-make-program
inside the --eval expression on Windows.

ii) Since $(MAKE) could be a full path to make, I can only presume it
could be subject to the same munging issue as described for
generated-autoload-file in the doc of w32-batch-update.


*** lisp/makefile.w32-in.~1.99.~	2009-10-08 23:28:21.000000000 -0700
--- lisp/makefile.w32-in	2009-10-10 19:30:54.000000000 -0700
***************
*** 214,220 ****
  	@echo Directories: . $(WINS_UPDATES)
  	$(emacs) -l autoload \
  		--eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
! 		-f w32-batch-update-autoloads "$(lisp)/loaddefs.el" . $(WINS_UPDATES)
  
  $(lisp)/subdirs.el:
  	$(MAKE) $(MFLAGS) update-subdirs
--- 214,220 ----
  	@echo Directories: . $(WINS_UPDATES)
  	$(emacs) -l autoload \
  		--eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
! 		-f w32-batch-update-autoloads "$(lisp)/loaddefs.el" $(MAKE) . $(WINS_UPDATES)
  
  $(lisp)/subdirs.el:
  	$(MAKE) $(MFLAGS) update-subdirs
***************
*** 358,364 ****
  	   --eval "(setq find-file-suppress-same-file-warnings t)" \
  	   --eval "(setq make-backup-files nil)" \
  	   -f w32-batch-update-autoloads "$(lisp)/calendar/cal-loaddefs.el" \
! 	      ./calendar
  
  $(lisp)/calendar/diary-loaddefs.el:
  	"$(EMACS)" $(EMACSOPT) -l autoload \
--- 358,364 ----
  	   --eval "(setq find-file-suppress-same-file-warnings t)" \
  	   --eval "(setq make-backup-files nil)" \
  	   -f w32-batch-update-autoloads "$(lisp)/calendar/cal-loaddefs.el" \
! 	      $(MAKE) ./calendar
  
  $(lisp)/calendar/diary-loaddefs.el:
  	"$(EMACS)" $(EMACSOPT) -l autoload \
***************
*** 366,372 ****
  	   --eval "(setq find-file-suppress-same-file-warnings t)" \
  	   --eval "(setq make-backup-files nil)" \
  	   -f w32-batch-update-autoloads $(lisp)/calendar/diary-loaddefs.el \
! 	      ./calendar
  
  $(lisp)/calendar/hol-loaddefs.el:
  	"$(EMACS)" $(EMACSOPT) -l autoload \
--- 366,372 ----
  	   --eval "(setq find-file-suppress-same-file-warnings t)" \
  	   --eval "(setq make-backup-files nil)" \
  	   -f w32-batch-update-autoloads $(lisp)/calendar/diary-loaddefs.el \
! 	      $(MAKE) ./calendar
  
  $(lisp)/calendar/hol-loaddefs.el:
  	"$(EMACS)" $(EMACSOPT) -l autoload \
***************
*** 374,380 ****
  	   --eval "(setq find-file-suppress-same-file-warnings t)" \
  	   --eval "(setq make-backup-files nil)" \
  	   -f w32-batch-update-autoloads $(lisp)/calendar/hol-loaddefs.el \
! 	      ./calendar
  
  # Update MH-E internal autoloads. These are not to be confused with
  # the autoloads for the MH-E entry points, which are already in
--- 374,380 ----
  	   --eval "(setq find-file-suppress-same-file-warnings t)" \
  	   --eval "(setq make-backup-files nil)" \
  	   -f w32-batch-update-autoloads $(lisp)/calendar/hol-loaddefs.el \
! 	      $(MAKE) ./calendar
  
  # Update MH-E internal autoloads. These are not to be confused with
  # the autoloads for the MH-E entry points, which are already in
***************
*** 403,409 ****
  	   --eval $(ARGQUOTE)(setq find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
  	   --eval $(ARGQUOTE)(setq make-backup-files nil)$(ARGQUOTE) \
  	   -f w32-batch-update-autoloads \
! 	   $(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) ./mh-e
  
  # Prepare a bootstrap in the lisp subdirectory.
  #
--- 403,409 ----
  	   --eval $(ARGQUOTE)(setq find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
  	   --eval $(ARGQUOTE)(setq make-backup-files nil)$(ARGQUOTE) \
  	   -f w32-batch-update-autoloads \
! 	   $(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) $(MAKE) ./mh-e
  
  # Prepare a bootstrap in the lisp subdirectory.
  #




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-11  2:36                                   ` Glenn Morris
@ 2009-10-11  2:44                                     ` Glenn Morris
  2009-10-11  3:35                                     ` Juanma Barranquero
  1 sibling, 0 replies; 45+ messages in thread
From: Glenn Morris @ 2009-10-11  2:44 UTC (permalink / raw)
  To: Juanma Barranquero, Eli Zaretskii, Emacs developers


PS I can't help thinking that it looks like it would be simpler to
just parse the generated lib-src Makefile on Windows in a similar way
to that in which the Unix is currently parsed.




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-11  2:36                                   ` Glenn Morris
  2009-10-11  2:44                                     ` Glenn Morris
@ 2009-10-11  3:35                                     ` Juanma Barranquero
  2009-10-11 14:04                                       ` Juanma Barranquero
  1 sibling, 1 reply; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-11  3:35 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sun, Oct 11, 2009 at 04:36, Glenn Morris <rgm@gnu.org> wrote:

> Oh, whoops. Revised patch for lisp/makefile.w32-in follows.

OK, I'll retest again tomorrow.

> I'm doing it this way because:
>
> i) I have no idea how to quote a setting of autoload-make-program
> inside the --eval expression on Windows.

That should be DQUOTE, as in

          --eval $(ARGQUOTE)(setq generate-autoload-cookie
$(DQUOTE);;;###mh-autoload$(DQUOTE))$(ARGQUOTE)

IIUC what you're asking.

> ii) Since $(MAKE) could be a full path to make, I can only presume it
> could be subject to the same munging issue as described for
> generated-autoload-file in the doc of w32-batch-update.

That comment is Eli's, so I suppose he can shed some light about what
kind of munging can be expected.

> PS I can't help thinking that it looks like it would be simpler to
> just parse the generated lib-src Makefile on Windows in a similar way
> to that in which the Unix is currently parsed.

AFAICS, it just goes through the lisp= macro. How does it deal with
(MOUSE|TOOLTIP|MSDOS|WINNT|WINDOW|NS)_SUPPORT?

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-11  3:35                                     ` Juanma Barranquero
@ 2009-10-11 14:04                                       ` Juanma Barranquero
  0 siblings, 0 replies; 45+ messages in thread
From: Juanma Barranquero @ 2009-10-11 14:04 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Eli Zaretskii, emacs-devel

On Sun, Oct 11, 2009 at 04:36, Glenn Morris <rgm@gnu.org> wrote:

> Oh, whoops. Revised patch for lisp/makefile.w32-in follows.

Yes, it works. Bootstrap from clean state, and make autoloads with and
w/o echolisp.tmp present.

    Juanma




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-10  7:37                             ` Eli Zaretskii
@ 2009-10-13 19:16                               ` Stefan Monnier
  2009-10-15  6:14                                 ` Glenn Morris
  0 siblings, 1 reply; 45+ messages in thread
From: Stefan Monnier @ 2009-10-13 19:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Juanma Barranquero, emacs-devel

>> (when (ignore-errors
>> (ignore-errors (delete-file tmpfile))
>> (shell-command (format "make -C %s echolisp > %s"
>> mdir tmpfile))

> The other problem with this is that the -C switch is not supported by
> nmake.  So I think it's better to bind default-directory to mdir
> instead, and then read the echolisp.tmp file from that directory.

I also always recommend the use of call-process over shell-command, when
there's a choice, as is the case here.


        Stefan




^ permalink raw reply	[flat|nested] 45+ messages in thread

* Re: ignoring autoloads in preloaded files on Windows
  2009-10-13 19:16                               ` Stefan Monnier
@ 2009-10-15  6:14                                 ` Glenn Morris
  0 siblings, 0 replies; 45+ messages in thread
From: Glenn Morris @ 2009-10-15  6:14 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Juanma Barranquero, Eli Zaretskii, emacs-devel

Stefan Monnier wrote:

> I also always recommend the use of call-process over shell-command, when
> there's a choice, as is the case here.

Since the current version seems to work, and I can't test any changes,
and am not interested in Windows, I don't want to mess around with
this any more. Anyone else is welcome to though.




^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2009-10-15  6:14 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <E1Mv3iq-0005oI-5L@monty-python.gnu.org>
2009-10-06  7:44 ` Changes in lisp/Makefile.in to skip preloaded files Eli Zaretskii
2009-10-06  9:25   ` Eli Zaretskii
2009-10-06  9:33     ` Miles Bader
2009-10-06  9:42       ` Eli Zaretskii
2009-10-06 10:14         ` Miles Bader
2009-10-06 13:12           ` Dan Nicolaescu
2009-10-06 13:45             ` Dan Nicolaescu
2009-10-06 16:20             ` Glenn Morris
2009-10-06 16:50               ` Dan Nicolaescu
2009-10-06 15:28     ` Stefan Monnier
2009-10-06 16:16     ` Glenn Morris
2009-10-06 18:41       ` Eli Zaretskii
2009-10-07  3:00         ` Glenn Morris
2009-10-07  7:23           ` Glenn Morris
2009-10-07  9:23             ` Eli Zaretskii
2009-10-07 10:00               ` Juanma Barranquero
2009-10-07 16:16               ` Glenn Morris
2009-10-08 23:08                 ` Lennart Borgman
2009-10-08 23:31                   ` Juanma Barranquero
2009-10-08 23:34                     ` Lennart Borgman
2009-10-09  0:02                       ` Juanma Barranquero
2009-10-09  0:04                         ` Glenn Morris
2009-10-09  0:25                           ` Juanma Barranquero
2009-10-09 11:48                             ` Lennart Borgman
2009-10-10  0:50                 ` ignoring autoloads in preloaded files on Windows [was Re: Changes in lisp/Makefile.in to skip preloaded files] Glenn Morris
2009-10-10  2:27                   ` Juanma Barranquero
2009-10-10  3:34                     ` ignoring autoloads in preloaded files on Windows Glenn Morris
2009-10-10  3:57                       ` Juanma Barranquero
2009-10-10  4:17                         ` Juanma Barranquero
2009-10-10  4:19                           ` Juanma Barranquero
2009-10-10  5:13                           ` Juanma Barranquero
2009-10-10  7:37                             ` Eli Zaretskii
2009-10-13 19:16                               ` Stefan Monnier
2009-10-15  6:14                                 ` Glenn Morris
2009-10-10  7:32                         ` Eli Zaretskii
2009-10-10 11:51                           ` Juanma Barranquero
2009-10-10 13:16                             ` Eli Zaretskii
2009-10-10 21:17                               ` Glenn Morris
2009-10-11  2:02                                 ` Juanma Barranquero
2009-10-11  2:36                                   ` Glenn Morris
2009-10-11  2:44                                     ` Glenn Morris
2009-10-11  3:35                                     ` Juanma Barranquero
2009-10-11 14:04                                       ` Juanma Barranquero
2009-10-07  9:57             ` Changes in lisp/Makefile.in to skip preloaded files Eli Zaretskii
2009-10-07  9:15           ` 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).