[Mono-dev] [CI] RFC - Mono now building on Cygwin/Windows with Appveyor

Alex J Lennon ajlennon at dynamicdevices.co.uk
Sun Oct 26 14:14:20 UTC 2014


Hi all,

I've reached a point where we have an Appveyor configuration file which
successfully builds Mono under Cygwin on an Appveyor build worker
(Windows Server 2012 R2 OS image, I believe).

It's taken longer to get to this point than I had expected, doesn't it
always, but I hope this will be of some use to others wishing to build,
use and maintain Mono under Windows.

The logs of the build history are here, with a downloadable Mono 3.10.0
zip file "artifact", available from the most recent build, which runs up
on my local machine.

    https://ci.appveyor.com/project/ajlennon/mono-817

The configuration file that Appveyor used for this build is in my fork
of mono-3.10.0-branch

   
https://github.com/DynamicDevices/mono/blob/mono-3.10.0-branch/appveyor.yml

All commentary and feedback would be much appreciated.

I'd like to understand what would be involved to get this to a point
where pull-request into master might be accepted. (NB The config file is
entirely independent of other Mono files in the repo).
 
Thanks to Mladen for the Appveyor suggestion and the template
configuration script I used as a starting point.

Also many thanks to Feodor Fitsner at Appveyor who has been very engaged
and supportive in helping me to get this going over the past week or so.
(I am very impressed in general with the Appveyor platform and we will
undoubtedly be using this for commercial work in future).

Some points perhaps worthy of note,

- The build configuration script installs needed dependencies, runs
autogen/configure/make/make install then archives the output installed
files as a zipfile 'artifact'. This can be downloaded or deployed
automatically (e.g. FTP)

- Build testing has shown up a couple of minor issues with
mono-3.10.0-branch and master needing patches to build under Windows

- Following on from this I would like and intend to add to the current
configuration script to package up the output as an installable MSI
similar to that provided on the official site.
  (I think monowiz-win32.nsi could be used with NSIS as a starting point
for this work, although it looks like it might be quite dated in
comparison to the current installer?)

- I'd also like to run the Mono tests as a part of the build
verification. Are they expected to work under Windows/Cygwin?

- The official mono-3.10.0-branch of Mono does not build under Windows.
For this to build a commit would need to be cherry-picked to
mono-3.10.0-branch from master. My fork includes this commit enabling
the build.
  (Vincent Povirk's needed commit is in the forked branch of
mono-3.10.0-branch here
https://github.com/DynamicDevices/mono/commit/ce29c7c567afc4dcc14155d88250ebf6cfbc6718)

- The current master also does not build which looks to be an inclusion
ordering issue in mono/metadata/socket-io.c
   (I think I have addressed this with PR#1366 - for discussion -  as
there may well be better ways to do this:
https://github.com/mono/mono/pull/1366)

- The standard Appveyor plan limits builds to 30 minutes. The Mono build
is currently taking slightly over 3 hours and so will be cut short on
the default plan. Feyodor at Appveyor has very kindly put me onto an
OpenSource build plan which prevents the build being cut short.

Cheers,

Alex


More information about the Mono-devel-list mailing list