IronRuby r86 on Mono

The law of nature dictates that if it is not tested, it is broken. So
it is only natural that the recent rewrite of IronRuby’s Rakefile
broke build on Mono. No worry, I guess that’s why I’m on this list.
:slight_smile:

The preliminary fixes are available here:
http://sparcs.kaist.ac.kr/~tinuviel/download/IronRuby/patch-rakefile

Let me go through changes one by one.

  • exec “mkdir #{build_path}”
  • mkdir build_path

If you have defined an abstraction, you better use it. Related is:

  • exec_f “mkdir #{path}”
  • if ENV[‘mono’].nil?
  • exec_f “mkdir #{path}”
  • else
  • exec_f “mkdir -p #{path}”
  • end

On Windows, mkdir command will create any necessary parent
directories. To get the same effect, you need -p option on Unix.

This change is arguably wrong, since you can use Mono on Windows too.
But let’s worry about that later. I guess reimlementing “mkdir -p” in
Ruby would be the way to go. Since such functionality would be
generally useful, it could be contributed to, say, Ruby standard
library. Perhaps such functionality is already there…

framework_path {
libdir = IO.popen(‘pkg-config --variable=libdir mono’).read.strip

  • Pathname.new(libdir) + ‘mono’ + ‘2.0’
  • [Pathname.new(libdir) + ‘mono’ + ‘2.0’]
    }

framework_path should be called with an array, or with a block
returning an array.

  • get_source_dir(:build) + "/#{clr …
  • get_source_dir(:build) + "#{clr …

Pathname.new(‘build’) + ‘/release’ produces ‘build\release’ on
Windows, but ‘/release’ on Unix. PLEASE NO PATH SEPARATOR IN STRING
WHEN USING PATHNAME.

  • compile :dlr, …
  • compile :dlr, :references => [’!System.Configuration.dll’], …

Apparently Microsoft C# compiler references System.Configuration.dll
automatically.

The rest are boring case sensitivity issues. Also, since references to
framework paths are resolved by calling
Configuration.get_references(clr), I let clr return :mono and change
group(:common) to group(:mono).

Awesome! Thanks for the patch. Will integrate ASAP.

-John

I guess reimlementing “mkdir -p” in

Ruby would be the way to go. Since such functionality would be
generally useful, it could be contributed to, say, Ruby standard
library. Perhaps such functionality is already there…

irb(main):001:0> require ‘fileutils’
=> true
irb(main):002:0> FileUtils.mkdir_p ‘foo/bar’
=> “foo/bar”

regards,
Tor Erik