Class: Gem::Ext::Builder
Overview
-- Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. All rights reserved. See LICENSE.txt for permissions. ++
Class Method Summary (collapse)
- + (Object) class_name
- + (Object) make(dest_path, results)
- + (Object) redirector
- + (Object) run(command, results)
Class Method Details
+ (Object) class_name
9 10 11 12 |
# File 'lib/rubygems/ext/builder.rb', line 9 def self.class_name name =~ /Ext::(.*)Builder/ $1.downcase end |
+ (Object) make(dest_path, results)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rubygems/ext/builder.rb', line 14 def self.make(dest_path, results) unless File.exist? 'Makefile' then raise Gem::InstallError, "Makefile not found:\n\n#{results.join "\n"}" end mf = File.read('Makefile') mf = mf.gsub(/^RUBYARCHDIR\s*=\s*\$[^$]*/, "RUBYARCHDIR = #{dest_path}") mf = mf.gsub(/^RUBYLIBDIR\s*=\s*\$[^$]*/, "RUBYLIBDIR = #{dest_path}") File.open('Makefile', 'wb') {|f| f.print mf} make_program = ENV['make'] unless make_program then make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make' end ['', ' install'].each do |target| cmd = "#{make_program}#{target}" results << cmd results << `#{cmd} #{redirector}` raise Gem::InstallError, "make#{target} failed:\n\n#{results}" unless $?.success? end end |
+ (Object) redirector
40 41 42 |
# File 'lib/rubygems/ext/builder.rb', line 40 def self.redirector '2>&1' end |
+ (Object) run(command, results)
44 45 46 47 48 49 50 51 |
# File 'lib/rubygems/ext/builder.rb', line 44 def self.run(command, results) results << command results << `#{command} #{redirector}` unless $?.success? then raise Gem::InstallError, "#{class_name} failed:\n\n#{results.join "\n"}" end end |