<div dir="ltr"><div>Brilliant news Alex, I know how much work you put into getting this working, and how frustrating it must have been to wait for hours to see whether a build works or not. Well done.<br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 26 October 2014 16:14, Alex J Lennon <span dir="ltr"><<a href="mailto:ajlennon@dynamicdevices.co.uk" target="_blank">ajlennon@dynamicdevices.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I've reached a point where we have an Appveyor configuration file which<br>
successfully builds Mono under Cygwin on an Appveyor build worker<br>
(Windows Server 2012 R2 OS image, I believe).<br>
<br>
It's taken longer to get to this point than I had expected, doesn't it<br>
always, but I hope this will be of some use to others wishing to build,<br>
use and maintain Mono under Windows.<br>
<br>
The logs of the build history are here, with a downloadable Mono 3.10.0<br>
zip file "artifact", available from the most recent build, which runs up<br>
on my local machine.<br>
<br>
    <a href="https://ci.appveyor.com/project/ajlennon/mono-817" target="_blank">https://ci.appveyor.com/project/ajlennon/mono-817</a><br>
<br>
The configuration file that Appveyor used for this build is in my fork<br>
of mono-3.10.0-branch<br>
<br>
<br>
<a href="https://github.com/DynamicDevices/mono/blob/mono-3.10.0-branch/appveyor.yml" target="_blank">https://github.com/DynamicDevices/mono/blob/mono-3.10.0-branch/appveyor.yml</a><br>
<br>
All commentary and feedback would be much appreciated.<br>
<br>
I'd like to understand what would be involved to get this to a point<br>
where pull-request into master might be accepted. (NB The config file is<br>
entirely independent of other Mono files in the repo).<br>
<br>
Thanks to Mladen for the Appveyor suggestion and the template<br>
configuration script I used as a starting point.<br>
<br>
Also many thanks to Feodor Fitsner at Appveyor who has been very engaged<br>
and supportive in helping me to get this going over the past week or so.<br>
(I am very impressed in general with the Appveyor platform and we will<br>
undoubtedly be using this for commercial work in future).<br>
<br>
Some points perhaps worthy of note,<br>
<br>
- The build configuration script installs needed dependencies, runs<br>
autogen/configure/make/make install then archives the output installed<br>
files as a zipfile 'artifact'. This can be downloaded or deployed<br>
automatically (e.g. FTP)<br>
<br>
- Build testing has shown up a couple of minor issues with<br>
mono-3.10.0-branch and master needing patches to build under Windows<br>
<br>
- Following on from this I would like and intend to add to the current<br>
configuration script to package up the output as an installable MSI<br>
similar to that provided on the official site.<br>
  (I think monowiz-win32.nsi could be used with NSIS as a starting point<br>
for this work, although it looks like it might be quite dated in<br>
comparison to the current installer?)<br>
<br>
- I'd also like to run the Mono tests as a part of the build<br>
verification. Are they expected to work under Windows/Cygwin?<br>
<br>
- The official mono-3.10.0-branch of Mono does not build under Windows.<br>
For this to build a commit would need to be cherry-picked to<br>
mono-3.10.0-branch from master. My fork includes this commit enabling<br>
the build.<br>
  (Vincent Povirk's needed commit is in the forked branch of<br>
mono-3.10.0-branch here<br>
<a href="https://github.com/DynamicDevices/mono/commit/ce29c7c567afc4dcc14155d88250ebf6cfbc6718" target="_blank">https://github.com/DynamicDevices/mono/commit/ce29c7c567afc4dcc14155d88250ebf6cfbc6718</a>)<br>
<br>
- The current master also does not build which looks to be an inclusion<br>
ordering issue in mono/metadata/socket-io.c<br>
   (I think I have addressed this with PR#1366 - for discussion -  as<br>
there may well be better ways to do this:<br>
<a href="https://github.com/mono/mono/pull/1366" target="_blank">https://github.com/mono/mono/pull/1366</a>)<br>
<br>
- The standard Appveyor plan limits builds to 30 minutes. The Mono build<br>
is currently taking slightly over 3 hours and so will be cut short on<br>
the default plan. Feyodor@Appveyor has very kindly put me onto an<br>
OpenSource build plan which prevents the build being cut short.<br>
<br>
Cheers,<br>
<br>
Alex<br>
</blockquote></div><br></div>