unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
@ 2019-07-15 23:10 Keith David Bershatsky
  2019-07-15 23:33 ` Glenn Morris
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Keith David Bershatsky @ 2019-07-15 23:10 UTC (permalink / raw)
  To: 36681

There is an open question that I posed on emacs.stackexchange.com nearly two years ago:

https://emacs.stackexchange.com/questions/34362/how-to-build-emacs-without-byte-compiling-lisp-files

The current build time for the master branch is over 30 minutes, and seems like approximately 45 minutes, but I have not timed it exactly.  A command-line option to skip byte-compilation when building Emacs would greatly enhance the productivity of people contributing to the development of Emacs.  There are also threads that I have seen in the past couple of years looking for ways to quickly build Emacs for something called "unit testing":

https://emacs.stackexchange.com/questions/14043/build-a-minimal-emacs-25-for-unit-testing

I would suggesting creating a build option such as "--byte-compile=no" or "--without-byte-compile".





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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-15 23:10 bug#36681: Feature Request: Option to build Emacs without byte-compilation Keith David Bershatsky
@ 2019-07-15 23:33 ` Glenn Morris
  2019-07-16  0:53 ` Keith David Bershatsky
  2019-07-16 23:06 ` Richard Stallman
  2 siblings, 0 replies; 13+ messages in thread
From: Glenn Morris @ 2019-07-15 23:33 UTC (permalink / raw)
  To: Keith David Bershatsky; +Cc: 36681


make -C src emacs

is basically what you ask for (may not work in older versions).

But the better answer is to use multiple cores, since the build is very
parallelizable. A -j8 build from nothing takes < 4 minutes for me.







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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-15 23:10 bug#36681: Feature Request: Option to build Emacs without byte-compilation Keith David Bershatsky
  2019-07-15 23:33 ` Glenn Morris
@ 2019-07-16  0:53 ` Keith David Bershatsky
  2019-07-16  1:49   ` Noam Postavsky
  2019-07-16 23:06 ` Richard Stallman
  2 siblings, 1 reply; 13+ messages in thread
From: Keith David Bershatsky @ 2019-07-16  0:53 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 36681

Thank you, Glenn, for looking into this feature request.  As part of this feature request, I am hoping to essentially complete the entire build process without byte-compilation.  For the following test, I used a master branch from today (0797b39185e66983c7286e89f93dd4f6c83b6ea7).  My configure command line on a w32 virtual machine (running mingGW with ezwinports) is:

CFLAGS='-O0 -g3' ./configure \
--prefix=/c/docume~1/admini~1/desktop/trunk \
--enable-checking='yes,glyphs' \
--enable-check-lisp-object-type \
--without-compress-install \
--without-makeinfo \
--with-gnutls=no \
--with-mailutils \
--without-makeinfo

Here is a link to a gist containing the output (with errors) after calling 'make -C src emacs' from the command line of the root emacs repository directory:

https://gist.github.com/lawlist/de6bea1b348276e5318d227a074c9d14

This particular build is anticipated to fail towards the end with:

* * *

GEN      ../../info/elisp.info
/c/docume~1/admini~1/desktop/emacs/doc/lispref//display.texi:5740: `SVG Path Commands' has no Up field (perhaps incorrect sectioning?).

* * *

as referenced in the thread that I posted today to the Emacs Devel mailing list:

https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00349.html

However, the build failed much sooner than expected using 'make -C src emacs' as reflected in the above-mentioned linked gist.  In a nutshell, I'd like to reach the point at which the build would fail naturally because of a particular build-bug, or complete the entire process (if no build-bugs exist) -- including, installing Emacs to the directory specified by the "--prefix" option.  In the above example, it would be nice to reach the above-mentioned `SVG Path Commands' build-bug error in less than 45 minutes.

As to the multi-thread suggestion, I'll need to do some reading to see if any of my antiquated machines and antiquated OSes support such an option.  For the w32 builds, I am running a virtual machine containing Windows XP SP3 using MinGW and ezwinports.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

> Date: [07-15-2019 16:33:24] <15 Jul 2019 19:33:24 -0400>
> From: Glenn Morris <rgm@gnu.org>
> To: Keith David Bershatsky <esq@lawlist.com>
> Cc: 36681@debbugs.gnu.org
> Subject: Re: bug#36681: Feature Request: Option to build Emacs without byte-compilation.
> 
> make -C src emacs
> 
> is basically what you ask for (may not work in older versions).
> 
> But the better answer is to use multiple cores, since the build is very
> parallelizable. A -j8 build from nothing takes < 4 minutes for me.





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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-16  0:53 ` Keith David Bershatsky
@ 2019-07-16  1:49   ` Noam Postavsky
  2019-07-16  7:45     ` Andreas Schwab
  2019-07-17 23:05     ` Glenn Morris
  0 siblings, 2 replies; 13+ messages in thread
From: Noam Postavsky @ 2019-07-16  1:49 UTC (permalink / raw)
  To: Keith David Bershatsky; +Cc: 36681

Keith David Bershatsky <esq@lawlist.com> writes:

> --without-makeinfo
>
> GEN      ../../info/elisp.info
> /c/docume~1/admini~1/desktop/emacs/doc/lispref//display.texi:5740: `SVG Path Commands' has no Up field (perhaps incorrect sectioning?).

As I mentioned on the emacs-devel thread, the fact that you are building
info even though you've specified --without-makeinfo suggests something
has gone badly wrong.

> However, the build failed much sooner than expected using 'make -C src
> emacs' as reflected in the above-mentioned linked gist.

It looks like you have messed up timestamps which are confusing make.  I
suggest trying again after 'make clean'.  But note that on master, you
should use 'make -C src emacs.pdmp' (see
https://debbugs.gnu.org/36369#38).

> In the above example, it would be nice to reach the above-mentioned
> `SVG Path Commands' build-bug error in less than 45 minutes.

I wouldn't be sure that skipping elc building entirely would be a win,
since some of the build requires running the Emacs, and an Emacs using
.el files instead of .elc files would be slower.

> As to the multi-thread suggestion, I'll need to do some reading to see
> if any of my antiquated machines and antiquated OSes support such an
> option.

If you have a GNU Make recent enough to build Emacs, then you have
support for the option.  Whether it actually speeds up the build depends
on how many cores you have, I guess.






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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-16  1:49   ` Noam Postavsky
@ 2019-07-16  7:45     ` Andreas Schwab
  2019-07-17 23:05     ` Glenn Morris
  1 sibling, 0 replies; 13+ messages in thread
From: Andreas Schwab @ 2019-07-16  7:45 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: Keith David Bershatsky, 36681

On Jul 15 2019, Noam Postavsky <npostavs@gmail.com> wrote:

> Keith David Bershatsky <esq@lawlist.com> writes:
>
>> --without-makeinfo
>>
>> GEN      ../../info/elisp.info
>> /c/docume~1/admini~1/desktop/emacs/doc/lispref//display.texi:5740: `SVG Path Commands' has no Up field (perhaps incorrect sectioning?).
>
> As I mentioned on the emacs-devel thread, the fact that you are building
> info even though you've specified --without-makeinfo suggests something
> has gone badly wrong.

If you have makeinfo, then --without-makeinfo is ignored.  To truely
disable info generation you need to pass MAKEINFO=no.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."





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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-15 23:10 bug#36681: Feature Request: Option to build Emacs without byte-compilation Keith David Bershatsky
  2019-07-15 23:33 ` Glenn Morris
  2019-07-16  0:53 ` Keith David Bershatsky
@ 2019-07-16 23:06 ` Richard Stallman
  2019-07-16 23:13   ` Noam Postavsky
  2 siblings, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2019-07-16 23:06 UTC (permalink / raw)
  To: Keith David Bershatsky; +Cc: 36681

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

We used to distribute the compiled Lisp files, which made installation
much faster.  They were removed a few years ago, I think to avoid the
possibility of variation in building.  But this is a big slowdown in
building, and I am not surprised some users would rather we included
them.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)







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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-16 23:06 ` Richard Stallman
@ 2019-07-16 23:13   ` Noam Postavsky
  2019-07-17  7:19     ` Eli Zaretskii
  2019-07-17 22:28     ` Richard Stallman
  0 siblings, 2 replies; 13+ messages in thread
From: Noam Postavsky @ 2019-07-16 23:13 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Keith David Bershatsky, 36681

Richard Stallman <rms@gnu.org> writes:

> We used to distribute the compiled Lisp files, which made installation
> much faster.  They were removed a few years ago

I don't think that's the case, compiled .elc files are still in the
latest tarball releases.  They're not version controlled, so people
tracking development with git do have to compile the Lisp files.






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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-16 23:13   ` Noam Postavsky
@ 2019-07-17  7:19     ` Eli Zaretskii
  2019-07-17 22:28     ` Richard Stallman
  1 sibling, 0 replies; 13+ messages in thread
From: Eli Zaretskii @ 2019-07-17  7:19 UTC (permalink / raw)
  To: 36681, npostavs, rms; +Cc: esq

On July 17, 2019 12:13:21 AM GMT+01:00, Noam Postavsky <npostavs@gmail.com> wrote:
> Richard Stallman <rms@gnu.org> writes:
> 
> > We used to distribute the compiled Lisp files, which made
> installation
> > much faster.  They were removed a few years ago
> 
> I don't think that's the case, compiled .elc files are still in the
> latest tarball releases.  They're not version controlled, so people
> tracking development with git do have to compile the Lisp files.

I think Richard meant that in the past we kept *.elc files in the repository.





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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-16 23:13   ` Noam Postavsky
  2019-07-17  7:19     ` Eli Zaretskii
@ 2019-07-17 22:28     ` Richard Stallman
  2019-07-17 23:18       ` Glenn Morris
  1 sibling, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2019-07-17 22:28 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: esq, 36681

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > We used to distribute the compiled Lisp files, which made installation
  > > much faster.  They were removed a few years ago

  > I don't think that's the case, compiled .elc files are still in the
  > latest tarball releases.

Didn't the Savannah repository also contain the compiled .elc files,
before?

However, if nost users who build Emacs from sources get them from
the tarball, having the .elc files in the tarball does most of the good.

-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)







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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-16  1:49   ` Noam Postavsky
  2019-07-16  7:45     ` Andreas Schwab
@ 2019-07-17 23:05     ` Glenn Morris
  2019-09-13 12:08       ` Stefan Kangas
  1 sibling, 1 reply; 13+ messages in thread
From: Glenn Morris @ 2019-07-17 23:05 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: Keith David Bershatsky, 36681

Noam Postavsky wrote:

> I wouldn't be sure that skipping elc building entirely would be a win,
> since some of the build requires running the Emacs, and an Emacs using
> .el files instead of .elc files would be slower.

IMO That's one reason why:

 make -C src all   # "all" seems better than "emacs" these days

is a better solution. It compiles the required elc files but no more.
It also avoids the makeinfo step, which can be slow.


I'm marking this as wontfix.





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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-17 22:28     ` Richard Stallman
@ 2019-07-17 23:18       ` Glenn Morris
  2019-07-17 23:22         ` Glenn Morris
  0 siblings, 1 reply; 13+ messages in thread
From: Glenn Morris @ 2019-07-17 23:18 UTC (permalink / raw)
  To: rms; +Cc: esq, Noam Postavsky, 36681

Richard Stallman wrote:

> Didn't the Savannah repository also contain the compiled .elc files,
> before?

Certainly not within the past "few years", nor the past 10.
There was once a "lisp-elc.tgz" file, but it was removed 17 years ago.





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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-17 23:18       ` Glenn Morris
@ 2019-07-17 23:22         ` Glenn Morris
  0 siblings, 0 replies; 13+ messages in thread
From: Glenn Morris @ 2019-07-17 23:22 UTC (permalink / raw)
  To: rms; +Cc: esq, Noam Postavsky, 36681

Glenn Morris wrote:

> Richard Stallman wrote:
>
>> Didn't the Savannah repository also contain the compiled .elc files,
>> before?
>
> Certainly not within the past "few years", nor the past 10.
> There was once a "lisp-elc.tgz" file, but it was removed 17 years ago.

PS such issues are better solved by making snapshots available.
Eg https://hydra.nixos.org/jobset/gnu/emacs-trunk/latest-eval
Choose "tarball" job and download source distribution.





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

* bug#36681: Feature Request: Option to build Emacs without byte-compilation.
  2019-07-17 23:05     ` Glenn Morris
@ 2019-09-13 12:08       ` Stefan Kangas
  0 siblings, 0 replies; 13+ messages in thread
From: Stefan Kangas @ 2019-09-13 12:08 UTC (permalink / raw)
  To: Glenn Morris; +Cc: Keith David Bershatsky, Noam Postavsky, 36681-done

Glenn Morris <rgm@gnu.org> writes:

> I'm marking this as wontfix.

Two months later, I'm now also closing this bug report.

Best regards,
Stefan Kangas





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

end of thread, other threads:[~2019-09-13 12:08 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-15 23:10 bug#36681: Feature Request: Option to build Emacs without byte-compilation Keith David Bershatsky
2019-07-15 23:33 ` Glenn Morris
2019-07-16  0:53 ` Keith David Bershatsky
2019-07-16  1:49   ` Noam Postavsky
2019-07-16  7:45     ` Andreas Schwab
2019-07-17 23:05     ` Glenn Morris
2019-09-13 12:08       ` Stefan Kangas
2019-07-16 23:06 ` Richard Stallman
2019-07-16 23:13   ` Noam Postavsky
2019-07-17  7:19     ` Eli Zaretskii
2019-07-17 22:28     ` Richard Stallman
2019-07-17 23:18       ` Glenn Morris
2019-07-17 23:22         ` Glenn Morris

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).