How to compile and run HeuristicLab with Mono
- A Linux operating system.
- A recent build (after September 2012) of Mono including Mono Tools. I'm using the script from https://github.com/firegrass/mono-installer-script for compiling the Mono master, but everything > version 3.0 should work.
- System.Windows.Forms.DataVisualization.dll. HeuristicLab uses this assembly from the .NET 4 framework for it's charts. This library is only incompletely implemented in Mono so you need access to the GAC from a Windows operating system and copy this assembly.
- Check out the HeuristicLab sources (see DevelopersManual for more information on how to check out our sources).
- In the sources directory, open the prepareProjectsForMono.sh file and adapt the path to the DataVisualization assembly.
- Run chmod +x prepareProjectsForMono.sh and ./prepareProjectsForMono.sh . This file changes some of the project files so that they work with Mono.
- Optional: If you are using the mono installer script from firegrass, switch to the mono environment with . mono-master-environment.
- Run xbuild HeuristicLab.ExtLibs.sln and afterwards xbuild "HeuristicLab 3.3.sln" . We only support building HeuristicLab with xbuild at the moment because MonoDevelop doesn't handle Pre- and Postbuild events in Visual Studio project files correctly.
- You can now switch to the sources/bin directory and run mono "HeuristicLab 3.3.exe" .
What's missing and what does not work
- External evaluation problem: We use Google Protocol Buffers for communication with external applications. Because Mono is not able to compile protobuf-2.4.1, external evaluation is currently not supported on Linux.
- Docking UI: The UI library that we use for docking windows in HeuristicLab does not work properly on Linux. Therefore the UI on Linux is the Multiple Documents UI.
- Extensive testing. As of this date (July 2013) the main efforts so far were to get HeuristicLab to compile with Mono and to get it to a state where algorithms can be executed. There has been no extensive testing and we know that there are still some bugs in Mono's WinForms implementation that sometimes leads to strange behavior (graphical glitches, etc...) or crashes. We have already fixed some of these bugs in Mono and will continue in doing so.
- MacOS X support: WinForms support on MacOS X seems to be more broken than on Linux. Despite some effort, we didn't get HL to run on MacOS X.
- Convert into user-defined algorithm does not work.
- The boxplot charts do not work.
- ProgrammableOperator (actually the view with the code editor) does not work.
Tested System Configurations
- OpenSuse 12.1 with a Mono master build from September 2012
- XUbuntu 13.04 with Mono master (3.0.12)
- Debian Testing (07/2014) with Mono 3.2.8
If you have tried out HeuristicLab with Mono and have any feedback, comments or questions please let us know and write a mail to our Google Group.