module Ruby::Builder::RubyBuilder
Public Class Methods
build(revision, source_dir:, build_dir:, install_dir:)
click to toggle source
@param [Ruby::Builder::Revision] revision @param [String] source_dir @param [String] build_dir @param [String] install_dir
# File lib/ruby/builder/ruby_builder.rb, line 14 def build(revision, source_dir:, build_dir:, install_dir:) execute('git', '-C', source_dir, 'checkout', revision.git) unless File.executable?(File.join(source_dir, 'configure')) execute('autoreconf', dir: source_dir) end # Workaround to force updating revision in RUBY_DESCRIPTION timestamp_file = File.join(build_dir, '.revision.time') if File.exist?(timestamp_file) execute('rm', timestamp_file) end execute(File.join(source_dir, 'configure'), '--disable-install-doc', "--prefix=#{install_dir}", dir: build_dir) execute('make', "-j#{Etc.nprocessors}", dir: build_dir) execute('make', 'install', dir: build_dir) end
Private Class Methods
assert_execute(*command, dir:)
click to toggle source
@param [Array<String>] command
# File lib/ruby/builder/ruby_builder.rb, line 46 def assert_execute(*command, dir:) logger.info("+ #{command.shelljoin}") unless system(command.shelljoin) dir_info = "at '#{dir}' " if dir raise BuildFailure.new("Failed to execute '#{command.shelljoin}' #{dir_info}(exit status: #{$?.exitstatus})") end end
execute(*command, dir: nil)
click to toggle source
@param [Array<String>] command @param [String] dir
# File lib/ruby/builder/ruby_builder.rb, line 35 def execute(*command, dir: nil) if dir Dir.chdir(dir) do assert_execute(*command, dir: dir) end else assert_execute(*command, dir: dir) end end
logger()
click to toggle source
# File lib/ruby/builder/ruby_builder.rb, line 54 def logger @logger ||= Logger.new(STDOUT) end