This post is a walkthrough on how to compile it on Mono.
First, you need to get Mono from SVN trunk. The latest release is
1.1.15 but it won’t do. (Missing property in System.IO.StreamReader.)
Get SVN revision later than 60046.
Next, you need to patch Mono C# compiler. GP Ruby.NET Compiler is
beaten by Mono bug #77963, which causes deriving class from generic
type whose generic argument is its nested class to fail. Unfortunately
this is the case for Ruby.Dictionary class which derives from
This is obviously Mono’s fault, but it would be great if Ruby.NET team
can move Key class out of Dictionary class to avoid this.
So get the workaround patch by Atsushi Emoto from Mono bugzilla. Patch
is a bit old, but you should have no problem finding where it is
patching (it’s one-liner):
And build Mono. It will take some time.
all: …/Bin/QUT.ShiftReduceParser.dll …/Bin/QUT.PERWAPI.dll
$(CSC) -t:library -out:…/Bin/QUT.ShiftReduceParser.dll
$(CSC) -t:library -out:…/Bin/QUT.PERWAPI.dll
$(CSC) -t:library -r:…/Bin/QUT.ShiftReduceParser.dll
$(CSC) -t:exe -r:…/Bin/QUT.PERWAPI.dll
After that, Ruby.NET’s runtime library makes use of some API not yet
implemented in Mono. Namely, they correspond to following Ruby methods:
File.readable? File.readable_real? File.writable? File.writable_real?
File.executable? File.executable_real? File.owned? File.expand_path,
You can find this out by performing compile-delete cycle, which feels
like a big waste of time, so I did it for you. Get it here:
- Unpack Ruby.NET.beta0.5.src.zip (Be sure to get source
- Apply patch-ruby.net
- cd to Ruby.NET/Src
- Type make (Be sure that gmcs points to patched gmcs, edit Makefile
Thanks to #mono people on GIMPNet for help.