about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--GNUmakefile4
-rw-r--r--Rakefile18
2 files changed, 18 insertions, 4 deletions
diff --git a/GNUmakefile b/GNUmakefile
index be93932..24726ae 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -17,8 +17,8 @@ ifeq ($(RUBY_VERSION),)
 endif
 
 # rake takes forever to start
-isolate: tmp/gems/$(RUBY_VERSION)/.isolate
-tmp/gems/$(RUBY_VERSION)/.isolate: $(ISOLATE_CONFIG)
+isolate: tmp/isolate/ruby-$(RUBY_VERSION)/.isolate
+tmp/isolate/ruby-$(RUBY_VERSION)/.isolate: $(ISOLATE_CONFIG)
         ISOLATE_CONFIG=$(ISOLATE_CONFIG) $(RAKE) isolate
         > $@
 
diff --git a/Rakefile b/Rakefile
index cb4cae0..9cb9156 100644
--- a/Rakefile
+++ b/Rakefile
@@ -187,6 +187,20 @@ end
 desc 'isolate gems for development'
 task :isolate do
   require 'isolate'
-  Isolate.gems "tmp/gems/#{RUBY_VERSION}",
-               :file => ENV['ISOLATE_CONFIG']
+  require 'rbconfig'
+
+  Isolate.now! :file => ENV['ISOLATE_CONFIG'], :system => false
+
+  # for Ruby 1.8 isolate uses "1.8" instead of "1.8.7" for paths,
+  # but we'll still try to support 1.8.6 for now even though isolate
+  # does not.
+  if Gem.ruby_engine == "ruby" &&
+     RbConfig::CONFIG["ruby_version"] != RUBY_VERSION
+    require 'fileutils'
+    Dir.chdir('tmp/isolate') do
+      FileUtils.rm_rf("ruby-#{RUBY_VERSION}")
+      File.symlink "ruby-#{RbConfig::CONFIG["ruby_version"]}",
+                   "ruby-#{RUBY_VERSION}"
+    end
+  end
 end