unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Building Emacs for Win64 on Appveyor
@ 2016-02-21 15:12 Rory Yorke
  2016-02-21 16:19 ` Eli Zaretskii
  0 siblings, 1 reply; 5+ messages in thread
From: Rory Yorke @ 2016-02-21 15:12 UTC (permalink / raw)
  To: emacs-devel

Hi,

See also [1] from January 2016.

I've managed to execute a basic MSYS2 Windows 64 Emacs build on Appveyor
(a continuous integration service for MS Windows) using the version of
MSYS2 Appveyor have pre-installed on their virtual machine images.

You can see results at [2]; the appveyor.yml file that sets up the build
is at [3], which is part of a branch of the emacs-25 branch of
emacs-mirror/emacs on github.

Some comments on the build setup:

  1) The mingw64_shell.bat specified in emacs nt/INSTALL.W64 opens a
     new window (I think - see, e.g., [4]).  This means compilation
     output isn't easily captured, so I've instead directly invoked
     MSYS2's bash at C:\msys64\usr\bin\bash.  One must set environment
     variable MSYSTEM to MINGW64 to build in "MinGW" mode instead of
     "Cygwin" mode. [5]

  2) There's a bug in MSYS or Appveyor that requries an "exec
     0</dev/null" before calling configure. See [6].

  3) I initially tried "make -j2" (the VM only provides one core, but my
     understanding is that even then -j2 can provide a speed advantage),
     but the build froze after building emacs-lisp/cursor-sensor.elc.
     Non-parallel builds do work.

All of this is captured in the appveyor.yml file.

The build includes a "make install" step, and the installation is
archived into a zip file.  The final step, which I have not enabled,
would be to mark this zip file as a "build artifact"; this artifact
would be available for download.

The build takes about 36 min, and the installation and packaging another
13 minutes, for a total of 49 minutes; the build time-limit is one hour.

I understand the major complication in making the result generally
available is to also provide the sources of the various libraries (XPM,
PNG, JPEG, etc.)  used in building Emacs.  I don't know enough about
MSYS2 to know if this is easily automatable.

The Appveyor system, despite the quirks noted, is relatively easy to
use.  Prototyping however, is probably best done on a Windows machine,
since turn-around time from attempted fix to build result can be a bit
long.

A non-Windows (so to speak) alternative to all this might be to use
Wine; unfortunately, I couldn't get MSYS2 to install in Wine.  It seems
likely, and understandable, that MSYS2-on-Wine is not a priority for
either of these projects.

I will continue looking at automatically collecting the non-Emacs build
sources as part of the build, but can't commit to any deadline.

I'd appreciate comments and suggestions.

Regards,

Rory

[1] https://lists.gnu.org/archive/html/help-gnu-emacs/2016-01/msg00084.html
[2] https://ci.appveyor.com/project/roryyorke/emacs/build/1.0.10
[3] https://github.com/roryyorke/emacs/blob/rory-appveyor/appveyor.yml
[4] http://stackoverflow.com/a/26811432/1008142
[5] https://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00164.html
[6] http://help.appveyor.com/discussions/problems/912-problem-building-mono-with-cygwin-inputoutput-redirection



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

* Re: Building Emacs for Win64 on Appveyor
  2016-02-21 15:12 Building Emacs for Win64 on Appveyor Rory Yorke
@ 2016-02-21 16:19 ` Eli Zaretskii
  2016-02-21 17:07   ` martin rudalics
  0 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2016-02-21 16:19 UTC (permalink / raw)
  To: Rory Yorke; +Cc: emacs-devel

> From: Rory Yorke <rory.yorke@gmail.com>
> Date: Sun, 21 Feb 2016 17:12:21 +0200
> 
>   3) I initially tried "make -j2" (the VM only provides one core, but my
>      understanding is that even then -j2 can provide a speed advantage),
>      but the build froze after building emacs-lisp/cursor-sensor.elc.
>      Non-parallel builds do work.

FWIW, I routinely use "make -j6" and "make -j8", and it works OK.  So
this is either a VM problem, or a problem with the MSYS2 Make port you
were using.

> The build takes about 36 min, and the installation and packaging another
> 13 minutes, for a total of 49 minutes; the build time-limit is one hour.

A "make -j8" build normally takes about 4 min (longer if optimizations
are disabled).

Thanks.



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

* Re: Building Emacs for Win64 on Appveyor
  2016-02-21 16:19 ` Eli Zaretskii
@ 2016-02-21 17:07   ` martin rudalics
  0 siblings, 0 replies; 5+ messages in thread
From: martin rudalics @ 2016-02-21 17:07 UTC (permalink / raw)
  To: Eli Zaretskii, Rory Yorke; +Cc: emacs-devel

 >>    3) I initially tried "make -j2" (the VM only provides one core, but my
 >>       understanding is that even then -j2 can provide a speed advantage),
 >>       but the build froze after building emacs-lisp/cursor-sensor.elc.
 >>       Non-parallel builds do work.
 >
 > FWIW, I routinely use "make -j6" and "make -j8", and it works OK.  So
 > this is either a VM problem, or a problem with the MSYS2 Make port you
 > were using.

Looks like the MSYS 1.0.18 make problem.  Try downgrading to MSYS
1.0.17.

martin



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

* Re: Building Emacs for Win64 on Appveyor
@ 2016-02-21 23:54 Angelo Graziosi
  0 siblings, 0 replies; 5+ messages in thread
From: Angelo Graziosi @ 2016-02-21 23:54 UTC (permalink / raw)
  To: Emacs developers

Martin Rudalics wrote:
> Looks like the MSYS 1.0.18 make problem.  Try downgrading to MSYS
> 1.0.17.

Maybe I am misunderstanding, but it seems that Rory [*] only speaks 
about MSYS2 not MSYS..

  Angelo

---
[*] http://lists.gnu.org/archive/html/emacs-devel/2016-02/msg01270.html



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

* Re: Building Emacs for Win64 on Appveyor
@ 2016-02-22  0:16 Angelo Graziosi
  0 siblings, 0 replies; 5+ messages in thread
From: Angelo Graziosi @ 2016-02-22  0:16 UTC (permalink / raw)
  To: Emacs developers

Rory Yorke wrote
>   2) There's a bug in MSYS or Appveyor that requries an "exec
>      0</dev/null" before calling configure. See [6].
>
>   3) I initially tried "make -j2" (the VM only provides one core, but my
>      understanding is that even then -j2 can provide a speed advantage),
>      but the build froze after building emacs-lisp/cursor-sensor.elc.
>      Non-parallel builds do work.

Hmm.. I build regularly Emacs git on MSYS2 producing a W64 native build.

Usually I use the MSYS2 statements [1] to build using the PKGBUILD 
script in [2], in which I have added "-j3" to "make" (my machine is an 
old Athlon 64 X2 Dual Core).

> The build takes about 36 min, and the installation and packaging another
> 13 minutes, for a total of 49 minutes; the build time-limit is one hour.


Usually, all works and the build take about 30-40 minutes. To install it 
takes about the time to unpack an xz compressed tarball..


Angelo


---
[1] https://sourceforge.net/p/msys2/wiki/Contributing%20to%20MSYS2
[2] 
https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-emacs-git/PKGBUILD



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

end of thread, other threads:[~2016-02-22  0:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-21 15:12 Building Emacs for Win64 on Appveyor Rory Yorke
2016-02-21 16:19 ` Eli Zaretskii
2016-02-21 17:07   ` martin rudalics
  -- strict thread matches above, loose matches on Subject: below --
2016-02-21 23:54 Angelo Graziosi
2016-02-22  0:16 Angelo Graziosi

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