Created
February 3, 2015 12:50
-
-
Save pxlpnk/6b8efbcadd7f54dd13d3 to your computer and use it in GitHub Desktop.
Rubinius 2.5.2 install problem
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'rubygems' | |
require 'bundler/setup' | |
require './rakelib/configure' | |
require './rakelib/release' | |
require './rakelib/build_signature' | |
require 'rbconfig' | |
require 'tempfile' | |
require 'fileutils' | |
require 'stringio' | |
require 'date' | |
require 'digest/md5' | |
require 'net/http' | |
require 'redcard' | |
module Rubinius | |
BUILD_CONFIG = {} | |
end | |
root = File.expand_path File.dirname(__FILE__) | |
require File.join(root, "kernel", "delta", "options") | |
class Configure | |
# Default settings only. All code that may depend on user-selected options | |
# must run after options are processed. | |
def initialize(root) | |
@log = Logger.new "configure.log" | |
@command_line = ARGV.dup | |
@log.log "Command line: #{@command_line.join(" ").inspect}" | |
@features = {} | |
@defines = [] | |
@config = File.join(root, "config.rb") | |
# Platform settings | |
@host = `sh -c ./rakelib/config.guess`.chomp | |
@cpu = nil | |
@vendor = nil | |
@os = nil | |
@windows = nil | |
@darwin = nil | |
@bsd = nil | |
@linux = nil | |
@little_endian = false | |
@sizeof = {} | |
# Build tools | |
@cc = nil | |
@cxx = nil | |
@make = nil | |
@rake = nil | |
@tar = nil | |
@perl = nil | |
@gem = nil | |
# LLVM settings | |
@llvm_enabled = true | |
@llvm_path = nil | |
@llvm_system_name = get_system_name | |
@llvm_configure = nil | |
@llvm_version = nil | |
@llvm_api_version = nil | |
@llvm_shared = false | |
@llvm_shared_objs = nil | |
@llvm_cxxflags = "" | |
@llvm_ldflags = "" | |
# System settings | |
@libc = nil | |
@x86_32 = false | |
@x86_64 = false | |
@fibers = false | |
@dtrace = false | |
@dtrace_const = false | |
@have_lchmod = false | |
@have_lchown = false | |
@debug_build = false | |
@include_dirs = [] | |
@lib_dirs = [] | |
# File system paths | |
@sourcedir = root | |
@prefixdir = nil | |
@bindir = nil | |
@appdir = nil | |
@libdir = nil | |
@encdir = nil | |
@runtimedir = nil | |
@kerneldir = nil | |
@sitedir = nil | |
@vendordir = nil | |
@mandir = nil | |
@gemsdir = nil | |
@includedir = nil | |
@stagingdir = nil | |
@build_prefix = nil | |
@capi_includedir = "#{@sourcedir}/vm/include/capi" | |
@runtime_gems_dir = nil | |
@bootstrap_gems_dir = nil | |
@vm_release_h = File.join(root, "/vm/gen/release.h") | |
@preserve_prefix = false | |
@program_name = "rbx" | |
@bin_links = ["rbx", "ruby", "rake", "gem", "irb", "rdoc", "ri", "erb"] | |
@use_bin_links = true | |
# Gems | |
# | |
# Rubinius build tools installed in the runtime dir | |
@runtime_gems = [ | |
"rubinius-ast", | |
"rubinius-compiler", | |
"rubinius-melbourne", | |
"rubinius-processor", | |
"rubinius-toolset", | |
] | |
# Standard library gems to bootstrap rubygems and Bundler | |
@bootstrap_gems = [ | |
"ffi2-generators", | |
"rubysl-etc", | |
"rubysl-fileutils", | |
"rubysl-mkmf", | |
"rubysl-shellwords", | |
"rubysl-date", | |
"rubysl-delegate", | |
"rubysl-digest", | |
"rubysl-etc", | |
"rubysl-fcntl", | |
"rubysl-fileutils", | |
"rubysl-monitor", | |
"rubysl-openssl", | |
"rubysl-optparse", | |
"rubysl-stringio", | |
"rubysl-strscan", | |
"rubysl-tempfile", | |
"rubysl-thread", | |
"rubysl-tmpdir", | |
"rubysl-uri", | |
"rubysl-yaml", | |
"rubysl-zlib", | |
"psych", | |
] | |
# List of all gems to pre-install. | |
@gems_list = File.join(root, "gems_list.txt") | |
@gem_files = File.readlines(@gems_list).map { |x| x.chomp } | |
# Default cache directory, can be overwritten by the user. | |
@gems_cache = File.expand_path "../vendor/cache", __FILE__ | |
# Vendored library settings | |
@vendored_libdir = File.join(root, "/vendor") | |
# Essential settings (modify these for creating releases) | |
@ruby_version = "2.1.0" | |
@libversion = "2.5" | |
@patch_version = "2" | |
@release_date = "2015-01-30" | |
# Configure settings | |
@release_build = !git_directory | |
end | |
# Set up system commands to run in cmd.exe on Windows. Either Windows | |
# or MRI on Windows has issues with subprocesses where the invocation | |
# of the subprocess will return before the subprocess has finished. | |
# This manifests in configure when uncompressing LLVM source returns | |
# but attempting to move the directory fails sporadically with an access | |
# exception. Adding the, essentially no-op, 'sleep 0' resolves this. | |
def msys_system(cmd) | |
old_system %[cmd.exe /C "#{cmd} && sleep 0"] | |
end | |
def msys_backquote(cmd) | |
old_backquote %[cmd.exe /C "#{cmd}"] | |
end | |
def expand(path) | |
File.expand_path(path) | |
end | |
def expand_install_dir(dir) | |
dir = expand dir | |
if !@preserve_prefix and File.directory?(dir) and dir !~ /(rubinius|rbx).*\/?$/ | |
original = dir | |
dir += "/rubinius/#{@libversion}" | |
@log.write "The directory #{original} already exists, installing to #{dir}" | |
end | |
dir | |
end | |
def set_host | |
/([^-]+)-([^-]+)-(.*)/ =~ @host | |
@cpu, @vendor, @os = $1, $2, $3 | |
# TODO: For better cross-compiling support, it may be necessary to | |
# use the feature facility to check for a define in the compiler. | |
@windows = (@host =~ /mingw|mswin/) != nil | |
@darwin = (@host =~ /darwin/) != nil | |
@bsd = (@host =~ /bsd/) != nil | |
@linux = (@host =~ /linux/) != nil | |
end | |
def set_system_commands | |
# Set up system commands to run in cmd.exe on Windows. | |
if @windows | |
alias :old_system :system | |
alias :old_backquote :` | |
alias :system :msys_system | |
alias :` :msys_backquote | |
end | |
end | |
def set_filesystem_paths | |
@prefixdir = @prefixdir ? expand_install_dir(@prefixdir) : @sourcedir | |
if @appdir | |
dir = expand_install_dir @appdir | |
@libdir = dir + "/library" | |
@runtimedir = dir + "/runtime" | |
@kerneldir = dir + "/kernel" | |
@sitedir = dir + "/site" | |
@vendordir = dir + "/vendor" | |
end | |
@bindir = @prefixdir + "/bin" unless @bindir | |
@libdir = @prefixdir + "/library" unless @libdir | |
@runtimedir = @prefixdir + "/runtime" unless @runtimedir | |
@kerneldir = @prefixdir + "/kernel" unless @kerneldir | |
@sitedir = @prefixdir + "/site" unless @sitedir | |
@vendordir = @prefixdir + "/vendor" unless @vendordir | |
@mandir = @prefixdir + "/man" unless @mandir | |
@gemsdir = @prefixdir + "/gems" unless @gemsdir | |
@includedir = @prefixdir + "/vm/include/capi" unless @includedir | |
@encdir = @libdir + "/encoding/converter" | |
dirs = [@bindir, @libdir, @runtimedir, @kerneldir, @sitedir, @vendordir, | |
@mandir, @gemsdir, @includedir, @encdir] | |
parts = dirs.map { |d| d.split "/" } | |
i = 0 | |
total = parts[0].size | |
prefix = [] | |
while i < total | |
part = parts[0][i] | |
break unless parts.all? { |p| p[i] == part } | |
prefix << part | |
i += 1 | |
end | |
@prefixdir = prefix.join "/" | |
size = @prefixdir.size | |
dirs.each { |d| d.replace d[size..-1] } | |
unless @prefixdir == @sourcedir | |
@stagingdir ||= "#{@sourcedir}/staging" | |
FileUtils.rm_rf @stagingdir | |
@stagingdir = File.join @stagingdir, @prefixdir if @preserve_prefix | |
FileUtils.mkdir_p @stagingdir | |
end | |
@build_prefix = @stagingdir || @sourcedir | |
@bootstrap_gems_dir ||= "#{@sourcedir}/bootstrap/gems" | |
@runtime_gems_dir ||= "#{@build_prefix}#{@runtimedir}/gems" | |
end | |
def options | |
@options = Rubinius::Options.new "Usage: configure [options]", 30 | |
o = @options | |
o.left_align | |
o.doc " Configure settings" | |
o.on "--log-file", "NAME", "Write log to file NAME" do |name| | |
old_log = @log.path | |
@log = Logger.new name, false | |
@log.replace old_log | |
end | |
o.on "--make", "NAME", "Use NAME as 'make' during build" do |name| | |
@make = name | |
end | |
o.on "--rake", "NAME", "Use NAME as 'rake' during build" do |name| | |
@rake = name | |
end | |
o.on "--tar", "NAME", "Use NAME as 'tar'" do |name| | |
@tar = name | |
end | |
o.on "--perl", "NAME", "Use NAME as 'perl' during build" do |name| | |
@perl = name | |
end | |
o.on "--gem", "NAME", "Use NAME as 'gem' during build" do |name| | |
@gem = name | |
end | |
o.on "--debug-build", "Disable C++ optimizations and retain debugging symbols" do | |
@debug_build = true | |
end | |
o.on "--release-build", "Build from local files instead of accessing the network" do | |
@release_build = true | |
end | |
o.doc "\n Compiler settings" | |
o.on "--cc", "COMPILER", "Compiler to use for C code (eg gcc, clang)" do |cc| | |
@cc = cc | |
end | |
o.on "--cxx", "COMPILER", "Compiler to use for C++ code (eg g++, clang++)" do |cxx| | |
@cxx = cxx | |
end | |
o.doc "\n LLVM settings" | |
o.on "--disable-llvm", "Don't build with LLVM" do | |
@llvm_enabled = false | |
end | |
o.on "--system-name", "NAME", "Name of OS (eg fedora-8, ubuntu-10.04)" do |name| | |
@llvm_system_name = name | |
end | |
o.on "--llvm-path", "PATH", "File system path to the directory containing LLVM" do |dir| | |
@llvm_path = dir.dup | |
end | |
o.on "--llvm-config", "PROGRAM", "File system path to the llvm-config program" do |program| | |
@llvm_configure = program | |
end | |
o.on "--llvm-shared", "Link to shared LLVM library" do | |
@llvm_shared = true | |
end | |
o.doc "\n System settings" | |
o.on "--with-include-dir", "DIR", "Add DIR to the default include search paths" do |dir| | |
dir.split(File::PATH_SEPARATOR).each do |d| | |
@include_dirs << d | |
end | |
end | |
o.on "--with-lib-dir", "DIR", "Add DIR to the default library search paths" do |dir| | |
dir.split(File::PATH_SEPARATOR).each do |d| | |
@lib_dirs << d | |
end | |
end | |
o.on "--with-opt-dir", "DIR", "Add DIR/include and DIR/lib to include and library search paths" do |dir| | |
dir.split(File::PATH_SEPARATOR).each do |d| | |
@include_dirs << "#{d}/include" | |
@lib_dirs << "#{d}/lib" << "#{d}/lib64" | |
end | |
end | |
o.on "--libc", "NAME", "Use NAME as the libc for FFI" do |name| | |
@libc = name | |
end | |
o.on "--host", "HOST", "Override guessed platform with HOST specification" do |host| | |
@log.write "------------------------------------------------------" | |
@log.write "\nChanging the platform specification can cause Rubinius" | |
@log.write "to malfunction. The current platform specification is:" | |
@log.write "\n#{@host}" | |
@log.write "\n------------------------------------------------------" | |
@host = host | |
end | |
o.doc "\n Program names" | |
o.on "--program-name", "NAME", "Build Rubinius executable as NAME" do |name| | |
@program_name = name | |
end | |
o.on "--bin-link", "NAME", "Create NAME as binary symlink to program name" do |name| | |
@bin_links << name | |
end | |
o.on "--no-bin-links", "Do not create any symlinks to program name" do | |
@use_bin_links = false | |
end | |
o.doc "\n File system paths for installing Rubinius" | |
o.on "-P", "--prefix", "PATH", "Install Rubinius in subdirectories of PATH" do |dir| | |
warn_prefix dir | |
@prefixdir = dir.dup | |
end | |
o.on "-B", "--bindir", "PATH", "Install Rubinius executable in PATH" do |dir| | |
@bindir = expand dir | |
end | |
o.on "-I", "--includedir", "PATH", "Install Rubinius C-API include files in PATH" do |dir| | |
@includedir = expand dir | |
end | |
o.on "-A", "--appdir", "PATH", "Install Ruby runtime and libraries in PATH" do |dir| | |
@appdir = dir.dup | |
end | |
o.on "-L", "--libdir", "PATH", "Install Rubinius shared library in PATH" do |dir| | |
@libdir = dir.dup | |
end | |
o.on "-M", "--mandir", "PATH", "Install man pages in PATH" do |dir| | |
@mandir = expand dir | |
end | |
o.on "-G", "--gemsdir", "PATH", "Install gems in PATH" do |dir| | |
@gemsdir = expand dir | |
end | |
o.on "--gems-cache", "PATH", "Cache Gems in PATH during compilation" do |dir| | |
@gems_cache = expand dir | |
end | |
o.on "--sitedir", "PATH", "Install site-specific Ruby code in PATH" do |dir| | |
@sitedir = expand dir | |
end | |
o.on "--vendordir", "PATH", "Install vendor-specific Ruby code in PATH" do |dir| | |
@vendordir = expand dir | |
end | |
o.on "--preserve-prefix", "Use the configure prefix for staging Rubinius to install" do | |
@preserve_prefix = true | |
end | |
o.on "--stagingdir", "PATH", "Use PATH to build and prepare all files for install" do |dir| | |
@stagingdir = expand dir | |
end | |
o.doc "\n Optional features" | |
feature "execinfo", true | |
feature "vendor-zlib", false | |
feature "alloc-tracking", false | |
feature "fibers", true | |
feature "dtrace", false | |
feature "rpath", true | |
o.doc "\n Help!" | |
o.on "--show", "Print the current configuration and exit" do | |
print_debug | |
exit 0 | |
end | |
o.on "-V", "--verbose", "Print additional info" do | |
@verbose = true | |
end | |
o.help | |
o.doc "" | |
end | |
def feature(name, default_value=true) | |
@features[name] = ConfigurationToggle.new default_value | |
@options.on "--with-#{name}", "Enable #{name}" do | |
@features[name].configured = true | |
end | |
@options.on "--without-#{name}", "Disable #{name}" do | |
@features[name].configured = false | |
end | |
end | |
def parse(ary) | |
@options.parse ary | |
end | |
def version | |
version = "#{@libversion}.#{@patch_version}" | |
version += ".n#{Time.now.strftime("%j").to_i}" unless @release_date | |
version | |
end | |
def normalize_version(str) | |
version = str.gsub(/[^\d]/, "") | |
unless @supported_versions.include? version | |
failure <<-EOM | |
Unsupported language version requested: #{version}. Options are #{@supported_versions.join(", ")} | |
EOM | |
end | |
version | |
end | |
def md5_checksum(md5_path, full_path) | |
return Digest::MD5.file(full_path).hexdigest == File.read(md5_path).strip.split(" ").first | |
end | |
def download(url, full_path, follows=0) | |
begin | |
dir = File.dirname full_path | |
Dir.mkdir dir unless File.exist? dir | |
uri = url.kind_of?(URI) ? url : URI(url) | |
if ENV['http_proxy'] | |
protocol, userinfo, p_host, p_port = URI::split(ENV['http_proxy']) | |
p_user, p_pass = userinfo.split(/:/) if userinfo | |
http = Net::HTTP.new(uri.host, uri.port, p_host, p_port, p_user, p_pass) | |
else | |
http = Net::HTTP.new(uri.host, uri.port) | |
end | |
http.use_ssl = true if uri.scheme == 'https' | |
request = Net::HTTP::Get.new(uri.request_uri) | |
http.request(request) do |res| | |
case res | |
when Net::HTTPNotFound | |
@log.write " #{url} not found." | |
return false | |
when Net::HTTPMovedPermanently, | |
Net::HTTPFound, | |
Net::HTTPSeeOther, | |
Net::HTTPTemporaryRedirect | |
if follows > 3 | |
@log.write " ERROR: too many redirects: #{url}" | |
return false | |
end | |
return download URI.parse(res['Location']), full_path, follows + 1 | |
when Net::HTTPClientError | |
@log.write " ERROR: #{res.inspect}" | |
return false | |
end | |
size = 0 | |
total = res.header['Content-Length'].to_i | |
@log.write " Downloading #{File.basename(full_path)}..." | |
File.open full_path, "wb" do |f| | |
res.read_body do |chunk| | |
f << chunk | |
size += chunk.size | |
print "\r [ %d%% (%d of %d) ]" % [(size * 100) / total, size, total] | |
end | |
end | |
@log.write ": done!" | |
end | |
rescue Interrupt | |
File.unlink full_path if File.exist?(full_path) | |
raise | |
rescue StandardError => e | |
File.unlink full_path if File.exist?(full_path) | |
@log.write " ERROR: #{e.message}" | |
return false | |
end | |
return true | |
end | |
def setup_llvm | |
unless @llvm_enabled | |
@log.write "WARNING: LLVM disabled." | |
return false | |
end | |
if setup_config | |
check_llvm_flags | |
return true | |
end | |
failure "ABORT: unable to set up LLVM" | |
end | |
def setup_config | |
@log.print " Checking for 'llvm-config': " | |
config = @llvm_configure | |
if !config | |
which = ENV['PATH'].split(":").find do |path| | |
File.exist? File.join(path, "llvm-config") | |
end | |
if which | |
config = File.join(which, "llvm-config") | |
elsif @darwin | |
if macports? | |
config = macports_llvm_config | |
else | |
out = `brew list llvm | grep '/llvm-config$'` | |
config = out.chomp if $?.success? | |
end | |
end | |
end | |
if config | |
config_cmd = llvm_config_cmd config | |
begin | |
version = `#{config_cmd} --version`.strip | |
# Ruby 1.8 returns an empty string | |
failed = true if version.empty? | |
rescue Errno::ENOENT | |
# Ruby 1.9 raises this error | |
failed = true | |
end | |
if failed | |
@log.write "Executing #{config_cmd.inspect} failed" | |
return false | |
end | |
parts = version.sub(/svn$/, "").split(".").map { |i| i.to_i } | |
api_version = ("%d%02d" % parts[0..1]).to_i | |
if api_version < 300 or api_version > 305 | |
@log.write "only LLVM 3.0-3.5 is supported" | |
else | |
@log.write "found! (version #{version} - api: #{api_version})" | |
@llvm = :config | |
@llvm_configure = config_cmd | |
@llvm_version = version | |
@llvm_api_version = api_version | |
if @llvm_shared | |
setup_config_shared | |
end | |
return true | |
end | |
else | |
@log.write "not found" | |
end | |
false | |
end | |
def setup_config_shared | |
@log.print " Checking for LLVM shared libs: " | |
src = <<-EOP | |
#include <llvm/IR/LLVMContext.h> | |
using namespace llvm; | |
int main() { LLVMContext &Context = getGlobalContext(); } | |
EOP | |
common_args = `#{@llvm_configure} --cppflags --ldflags`.strip.split(/\s+/) | |
shared_configs = { | |
"libLLVM-#{@llvm_version}" => ["-lLLVM-#{@llvm_version}"], | |
"#{@llvm_configure} --libs" => `#{@llvm_configure} --libs`.strip.split(/\s+/) | |
} | |
shared_configs.each do |desc, objs| | |
status = check_program(false, *(common_args + objs)) do |f| | |
f.puts src | |
@log.log src | |
end | |
if status == 0 | |
@log.write "found! (using #{desc})" | |
@llvm_shared_objs = objs | |
return true | |
end | |
end | |
@log.write "not found" | |
false | |
end | |
def check_llvm_flags | |
flags = '--ldflags' | |
if @llvm_api_version >= 305 | |
@llvm_cxxflags << " -std=c++11" | |
# Starting with LLVM 3.5 the --system-libs option is required in order to | |
# link against libraries such as zlib. Prior to 3.5 this was handled by | |
# --ldflags. | |
flags << ' --system-libs' | |
end | |
# Generate the actual flags. For whatever reason llvm-config also includes | |
# newlines in the output, so lets get rid of those while we're at it. | |
@llvm_ldflags = `#{@llvm_configure} #{flags}`.strip.gsub("\n", ' ') | |
end | |
def env(which) | |
ENV[which] || "" | |
end | |
def default_link_libs | |
libs = [] | |
unless @host =~ /haiku/ | |
libs << "m" | |
end | |
libs | |
end | |
def failure(message=nil) | |
@log.error message if message | |
STDERR.puts "\nRunning 'configure' failed. Please check configure.log for more details." | |
exit 1 | |
end | |
def check_tools | |
@cc ||= ENV['CC'] || 'gcc' | |
@cxx ||= ENV['CXX'] || 'g++' | |
check_tool_version @cc, '-dumpversion', [4, 1] | |
check_tool_version @cxx, '-dumpversion', [4, 1] | |
check_tool_version 'bison', '--version', [2, 3] | |
@make ||= ENV['MAKE'] || 'make' | |
@rake ||= ENV['RAKE'] || 'rake' | |
@tar ||= ENV['TAR'] || (@windows ? 'bsdtar' : 'tar') | |
@perl ||= ENV['PERL'] || 'perl' | |
@gem ||= ENV['GEM'] || 'gem' | |
@gcc_major = `#{@cc} -dumpversion`.strip.split(".")[0,2].join(".") | |
if @host == "i686-pc-linux-gnu" || @host == "x86_64-unknown-linux-gnu" | |
@llvm_generic_prebuilt = "llvm-#{@llvm_version}-#{@host}-#{@gcc_major}.tar.bz2" | |
else | |
@llvm_generic_prebuilt = "llvm-#{@llvm_version}-#{@host}.tar.bz2" | |
end | |
@system_cflags = "" | |
@system_cxxflags = "" | |
@system_cppflags = "" | |
@system_ldflags = "" | |
@user_cflags = ENV['CFLAGS'] | |
@user_cxxflags = ENV['CXXFLAGS'] | |
@user_cppflags = ENV['CPPFLAGS'] | |
@user_ldflags = ENV['LDFLAGS'] | |
setup_platform | |
end | |
def setup_platform | |
@ldsharedxx = "#{@cxx} -shared" | |
@ldshared = "#{@cc} -shared" | |
@include_dirs.each do |d| | |
@system_cflags << "-I#{d} " | |
end | |
@lib_dirs.each do |d| | |
@system_ldflags << "-L#{d} " | |
end | |
case RUBY_PLATFORM | |
when /mswin/i, /mingw/i, /bccwin32/i | |
# TODO: discovery helpers | |
#check_heads(%w[windows.h winsock.h], true) | |
#check_libs(%w[kernel32 rpcrt4 gdi32], true) | |
unless RUBY_PLATFORM =~ /mingw/ | |
@system_cflags << "-EHs -GR" | |
end | |
@system_ldflags << "-lws2_32" | |
@features["rpath"].configured = false | |
when /solaris/i | |
# GNU CHAIN only supported | |
@ldsharedxx = "#{@cxx} -shared -G -fPIC -lstdc++" | |
@ldshared = "#{@cc} -shared -G -fPIC" | |
@system_cflags << "-fPIC -Wno-strict-aliasing" | |
@system_ldflags << "-lsocket -lnsl -fPIC" | |
@features["rpath"].configured = false | |
@make = "gmake" | |
when /freebsd/i | |
@ldsharedxx = "#{@cxx} -shared -fPIC" | |
@ldshared = "#{@cc} -shared -fPIC" | |
@system_cflags << "-fPIC" | |
@system_ldflags << "-lcrypt -pthread -rdynamic" | |
@make = "gmake" | |
when /openbsd/i | |
# OpenBSD branch contributed by Guillaume Sellier. | |
# on Unix we need a g++ link, not gcc. On OpenBSD, linking against | |
# libstdc++ have to be explicitly done for shared libs | |
@ldsharedxx = "#{@cxx} -shared -lstdc++ -fPIC" | |
@ldshared = "#{@cc} -shared -fPIC" | |
@system_cflags << "-fPIC" | |
@system_ldflags << "-pthread -rdynamic -Wl,--export-dynamic" | |
@make = "gmake" | |
when /netbsd/i | |
@ldsharedxx = "#{@cxx} -shared -lstdc++ -fPIC" | |
@ldshared = "#{@cc} -shared -fPIC" | |
@system_cflags << "-fPIC" | |
@system_ldflags << "-lcrypt -pthread -rdynamic -Wl,--export-dynamic" | |
@make = "gmake" | |
when /darwin/i | |
# on Unix we need a g++ link, not gcc. | |
# Ff line contributed by Daniel Harple. | |
@ldsharedxx = "#{@cxx} -bundle -undefined suppress -flat_namespace" | |
@ldshared = "#{@cc} -bundle -undefined suppress -flat_namespace" | |
@system_cflags << "-fPIC -D_DARWIN_USE_64_BIT_INODE" | |
@features["rpath"].configured = false | |
when /haiku/i | |
@system_cflags << "-fPIC" | |
@system_ldflags << "-ldl -lnetwork" | |
@features["rpath"].configured = false | |
when /aix/i | |
@ldsharedxx = "#{@cxx} -shared -Wl,-G -Wl,-brtl" | |
@ldshared = "#{@cc} -shared -Wl,-G -Wl,-brtl" | |
@features["rpath"].configured = false | |
when /linux/i | |
@system_cflags << "-fPIC" | |
@system_ldflags << "-Wl,--export-dynamic -lrt -lcrypt -ldl -lpthread" | |
else | |
# on Unix we need a g++ link, not gcc. | |
@system_cflags << "-fPIC" | |
@system_ldflags << "-ldl -lpthread" | |
end | |
if @features["rpath"].value | |
@lib_dirs.each do |d| | |
@system_ldflags << " -Wl,-rpath=#{d}" | |
end | |
end | |
end | |
def check_program(run=true, *arguments) | |
begin | |
basename = "rbx-configure-test" | |
source = basename + ".cpp" | |
File.open source, "wb" do |f| | |
yield f | |
end | |
File.open source, "rb" do |f| | |
@log.log f.read | |
end | |
libs = default_link_libs.map { |l| "-l#{l}" }.join(" ") | |
args = arguments.join(" ") | |
cmd = "#{@cxx} #{@user_cppflags} #{@user_cflags} #{@user_cxxflags} #{@user_ldflags} -o #{basename} #{source} #{@system_cppflags} #{@system_cflags} #{@system_cxxflags} #{@system_ldflags} #{libs} #{args} >>#{@log.path} 2>&1" | |
@log.log cmd | |
system cmd | |
return $?.exitstatus unless run | |
unless $?.exitstatus == 0 | |
failure "Compiling configure test program failed." | |
end | |
system expand("./#{basename}") | |
return $?.exitstatus | |
rescue => e | |
@log.log "Error in check_program: #{e.class} #{e.message}\n #{e.backtrace.join("\n ")}" | |
raise e | |
ensure | |
FileUtils.rm_r(Dir["#{basename}*"]) | |
end | |
end | |
def write_have_defines(f) | |
f.puts | |
@defines.each { |d| f.puts "#define #{d.ljust(20)} 1" } | |
end | |
def write_have_sizeof_defines(f) | |
f.puts | |
@sizeof.keys.sort.each { |k| f.puts "#define HAVE_#{k}".ljust(30) + "1" } | |
end | |
def write_sizeof_defines(f) | |
f.puts | |
@sizeof.keys.sort.each { |k| f.puts "#define SIZEOF_#{k}".ljust(30) + @sizeof[k].to_s } | |
end | |
def sizeof_typename(type) | |
if type =~ /(\*+)$/ | |
name = "#{type[0...-$1.size]}#{"p" * $1.size}" | |
else | |
name = type | |
end | |
name.gsub(/\W/, "_").upcase | |
end | |
def sizeof(type) | |
@sizeof[sizeof_typename(type)] or failure("Unknown type: '#{type}'.") | |
end | |
def detect_sizeof(type, includes=[]) | |
@log.print "Checking sizeof(#{type}): " | |
size = check_program do |f| | |
src = includes.map { |include| "#include <#{include}>" }.join("\n") | |
src += <<-EOP | |
#include <stddef.h> | |
int main() { return sizeof(#{type}); } | |
EOP | |
f.puts src | |
@log.log src | |
end | |
@sizeof[sizeof_typename(type)] = size | |
@log.write "#{size} bytes" | |
end | |
def detect_endian | |
@log.print "Checking platform endianness: " | |
status = check_program do |f| | |
src = "int main() { int one = 1; return (*((char*)&one)) == 1 ? 0 : 1; }" | |
f.puts src | |
@log.log src | |
end | |
@little_endian = (status == 0) | |
@log.write @little_endian ? "little endian" : "big endian" | |
end | |
def detect_tr1 | |
@log.print "Checking for tr1: " | |
status = check_program(false) do |f| | |
src = <<-EOP | |
#include <tr1/unordered_map> | |
typedef std::tr1::unordered_map<int, void*> X; | |
int main() { X x; return 0; } | |
EOP | |
f.puts src | |
@log.log src | |
end | |
@tr1 = (status == 0) | |
@log.write @tr1 ? "found" : "not found" | |
end | |
def detect_tr1_hash | |
@log.print "Checking for tr1/hash definition: " | |
status = check_program(false) do |f| | |
src = <<-EOP | |
#include <stdint.h> | |
#include <tr1/unordered_map> | |
typedef std::tr1::unordered_map<uint64_t, void*> X; | |
int main() { X x; return 0; } | |
EOP | |
f.puts src | |
@log.log src | |
end | |
@tr1_hash = (status == 0) | |
@log.write @tr1_hash ? "found" : "not found" | |
end | |
def detect_x86 | |
print "Checking for x86_32: " | |
if sizeof("long") == 4 | |
status = check_program do |f| | |
src = <<-EOP | |
int main() { | |
#if defined(i386) || defined(__i386__) || defined(__i386) | |
return 1; | |
#else | |
return 0; | |
#endif | |
} | |
EOP | |
f.puts src | |
@log.log src | |
end | |
@x86_32 = (status == 1) | |
end | |
puts @x86_32 ? "yes" : "no" | |
return if @x86_32 | |
print "Checking for x86_64: " | |
status = check_program do |f| | |
src = <<-EOP | |
int main() { | |
#if defined(__x86_64) || defined(__x86_64__) | |
return 1; | |
#else | |
return 0; | |
#endif | |
} | |
EOP | |
f.puts src | |
@log.log src | |
end | |
@x86_64 = (status == 1) | |
puts @x86_64 ? "yes" : "no" | |
end | |
def detect_curses | |
@log.print "Checking curses library: " | |
src = <<-EOP | |
#include <curses.h> | |
#include <term.h> | |
int main() { return tgetnum(""); } | |
EOP | |
["-lcurses", "-lncurses", "-ltermcap"].each do |lib| | |
status = check_program(false, lib) do |f| | |
f.puts src | |
@log.log src | |
end | |
if status == 0 | |
@curses = lib | |
break | |
end | |
end | |
if @curses | |
@log.write(@curses) | |
end | |
end | |
def detect_build_dirs | |
["/usr/local", "/opt/local", "/usr/pkg"].each do |dir| | |
@include_dirs << "#{dir}/include" | |
@lib_dirs << "#{dir}/lib" << "#{dir}/lib64" | |
end | |
@include_dirs = @include_dirs.select {|p| File.directory? p } | |
@lib_dirs = @lib_dirs.select {|p| File.directory? p } | |
end | |
def has_struct_member(struct, member, includes = []) | |
compile_check "struct #{struct} has member #{member}" do |src| | |
includes.each do |i| | |
src.puts "#include <#{i}>" | |
end | |
src.puts "int main() { struct #{struct} st; st.#{member}; }" | |
end | |
end | |
def has_global(name, includes=[]) | |
compile_check "global '#{name}'" do |src| | |
includes.each do |i| | |
src.puts "#include <#{i}>" | |
end | |
src.puts "int main() { #{name}; }" | |
end | |
end | |
def has_header(name) | |
compile_check "header '#{name}'" do |src| | |
# Some headers have an implicit dependency on stdio.h. For example, | |
# readline/readline.h requires it but doesn't actually include it for | |
# you. Because there could be an infinite amount of headers that require | |
# stdio.h we'll just always include it. | |
src.puts "#include <stdio.h>" | |
src.puts "#include <#{name}>" | |
src.puts "int main() {return 0;}" | |
end | |
end | |
def has_function(name, includes=[], defines = []) | |
compile_check "function '#{name}'", defines do |src| | |
includes.each do |i| | |
src.puts "#include <#{i}>" | |
end | |
src.puts "int main() { void* ptr = (void *) &#{name}; }" | |
end | |
end | |
def has_library(name, function, libraries, includes=[]) | |
@log.print "Checking for library: #{name}: " | |
args = libraries.map { |l| "-l#{l}" } | |
status = check_program(true, *args) do |src| | |
includes.each do |i| | |
src.puts "#include <#{i}>" | |
end | |
src.puts "int main() { void* ptr = (void*)(&#{function}); return 0; }" | |
end | |
success = status == 0 | |
@log.write(success ? "found!" : "not found!") | |
success | |
end | |
def has_dtrace | |
@log.print "Checking for dtrace: " | |
begin | |
basename = "rbx-configure-dtrace-test" | |
source = basename + ".d" | |
output = basename + ".h" | |
File.open source, "wb" do |f| | |
f.write "provider conftest{ probe m__entry(const char*); };" | |
end | |
cmd = "dtrace -h -o #{output} -s #{source}" | |
@log.log cmd | |
system cmd | |
@dtrace = $?.exitstatus == 0 | |
@dtrace_const = !!File.read(output).index("const") if @dtrace | |
@log.write(@dtrace ? "yes" : "no") | |
@dtrace | |
ensure | |
File.delete(*Dir["#{basename}*"]) | |
end | |
end | |
def compile_check(logpart, defines = [], &block) | |
@log.print "Checking for #{logpart}: " | |
source = StringIO.new | |
yield source | |
file = Tempfile.new("rbx-test") | |
source.rewind | |
string = source.read | |
file.puts string | |
file.close | |
@log.log string | |
cmd = "#{@cxx} -S -o - -x c++ #{defines.join(" ")} #{@user_cppflags} #{@user_cxxflags} #{@user_cflags} #{@user_ldflags} #{@system_cppflags} #{@system_cxxflags} #{@system_cflags} #{@system_ldflags} #{file.path} >>#{@log.path} 2>&1" | |
@log.log cmd | |
system cmd | |
status = ($?.exitstatus == 0) | |
file.unlink | |
@log.write(status ? "found!" : "not found") | |
status | |
end | |
def enable_features | |
if @features["vendor-zlib"].value | |
# Our vendored zlib uses long as the crc_table type | |
# If we update vendored zlib in the future, we have to | |
# review this and make sure we update it properly to | |
# match the newer version which like will have uint32_t | |
# as the type. | |
@include_dirs << "#{@vendored_libdir}/zlib" | |
@lib_dirs << "#{@vendored_libdir}/zlib" | |
end | |
end | |
def detect_features | |
# Default on *BSD is no execinfo | |
if RUBY_PLATFORM =~ /bsd/i and @features["execinfo"].configured.nil? | |
@features["execinfo"].configured = false | |
end | |
if @features["execinfo"].value and has_function("backtrace", ["execinfo.h"]) | |
@defines << "HAS_EXECINFO" | |
end | |
if @features["alloc-tracking"].value | |
@defines << "RBX_ALLOC_TRACKING" | |
end | |
if @features["fibers"].value | |
@fibers = true if @x86_32 or @x86_64 | |
end | |
if @features["dtrace"].value and has_dtrace | |
@defines << "HAVE_DTRACE" | |
end | |
# Default on Windows is vendor-zlib | |
if @windows and @features["vendor-zlib"].configured.nil? | |
@features["vendor-zlib"].configured = true | |
end | |
@defines << "HAVE_SPT_REUSEARGV" if @linux || @darwin || @bsd | |
end | |
def detect_functions | |
if has_function("clock_gettime", ["time.h"]) | |
@defines << "HAVE_CLOCK_GETTIME" | |
end | |
if has_function("nl_langinfo", ["langinfo.h"]) | |
@defines << "HAVE_NL_LANGINFO" | |
end | |
if has_function("setproctitle", ["sys/types.h", "unistd.h"]) | |
@defines << "HAVE_SETPROCTITLE" | |
end | |
if has_function("posix_fadvise", ["fcntl.h"]) | |
@defines << "HAVE_POSIX_FADVISE" | |
end | |
if has_function("strnlen", ["string.h"]) | |
@defines << "HAVE_STRNLEN" | |
end | |
if has_function("kqueue", ["sys/types.h", "sys/event.h", "sys/time.h"]) | |
@defines << "HAVE_KQUEUE" | |
end | |
if has_function("timerfd_create", ["sys/timerfd.h"]) | |
@defines << "HAVE_TIMERFD" | |
end | |
if has_function("inotify_init", ["sys/inotify.h"]) | |
@defines << "HAVE_INOTIFY" | |
end | |
# glibc has useless lchmod() so we don't try to use lchmod() on linux | |
if !@linux and has_function("lchmod", ["sys/stat.h", "unistd.h"]) | |
@have_lchmod = true | |
end | |
if has_function("lchown", ["sys/stat.h", "unistd.h"]) | |
@have_lchown = true | |
end | |
end | |
def detect_structures | |
if has_struct_member("tm", "tm_gmtoff", ["time.h"]) | |
@defines << "HAVE_TM_GMTOFF" | |
end | |
if has_struct_member("tm", "tm_zone", ["time.h"]) | |
@defines << "HAVE_TM_ZONE" | |
end | |
end | |
def detect_globals | |
if has_global("timezone", ["time.h"]) | |
@defines << "HAVE_TIMEZONE" | |
end | |
if has_global("tzname", ["time.h"]) | |
@defines << "HAVE_TZNAME" | |
end | |
if has_global("daylight", ["time.h"]) | |
@defines << "HAVE_DAYLIGHT" | |
end | |
end | |
def detect_headers | |
unless @features["vendor-zlib"].value | |
unless has_header("zlib.h") | |
failure "zlib.h is required" | |
end | |
end | |
unless has_header("openssl/ssl.h") | |
failure "openssl/ssl.h is required" | |
end | |
if has_header("alloca.h") | |
@defines << "HAVE_ALLOCA_H" | |
end | |
if has_header("string.h") | |
@defines << "HAVE_STRING_H" | |
end | |
if has_header("sys/time.h") | |
@defines << "HAVE_SYS_TIME_H" | |
end | |
if has_header("sys/times.h") | |
@defines << "HAVE_SYS_TIMES_H" | |
end | |
if has_header("sys/types.h") | |
@defines << "HAVE_SYS_TYPES_H" | |
end | |
if has_header("unistd.h") | |
@defines << "HAVE_UNISTD_H" | |
end | |
if has_header("stdarg.h") | |
@defines << "HAVE_STDARG_H" | |
end | |
if has_header("sys/pstat.h") | |
@defines << "HAVE_SYS_PSTAT_H" | |
end | |
if has_header("valgrind/valgrind.h") | |
@defines << "HAVE_VALGRIND_H" | |
end | |
end | |
def strerror_r_returns_char_pointer | |
status = check_program(false) do |src| | |
src.puts "#include <string.h>" | |
src.puts "int main() { char buf[1024]; static_cast<char*>(strerror_r(42, buf, 1024)); }" | |
end | |
status == 0 | |
end | |
def detect_strerror | |
@log.print "Checking if function 'strerror_r' returns char*: " | |
if strerror_r_returns_char_pointer | |
@defines << "STRERROR_R_CHAR_P" | |
@log.write "yes" | |
else | |
@log.write "no" | |
end | |
end | |
def warn_prefix(dir) | |
delimiter = "-------------------------%s-----------------------" | |
if File.file? dir | |
@log.write delimiter % " ERROR " | |
@log.write "The specified prefix '#{dir}' is a regular file." | |
@log.write "Remove the file or specify a different prefix." | |
@log.write delimiter % "-------" | |
exit 1 | |
elsif File.directory? dir | |
@log.write delimiter % " WARNING " | |
@log.write "The specified prefix '#{dir}' already exists." | |
@log.write "Installing Rubinius into an existing directory may" | |
@log.write "overwrite existing unrelated files or cause conflicts" | |
@log.write "between different versions of Rubinius files." | |
@log.write delimiter % "---------" | |
sleep 2 | |
end | |
end | |
def process | |
set_host | |
set_system_commands | |
enable_features | |
detect_build_dirs | |
setup_llvm | |
@log.write "" | |
detect_sizeof("short") | |
detect_sizeof("int") | |
detect_sizeof("void*") | |
detect_sizeof("size_t") | |
detect_sizeof("long") | |
detect_sizeof("long long") | |
detect_sizeof("float") | |
detect_sizeof("double") | |
detect_sizeof("off_t", ["unistd.h"]) | |
detect_sizeof("time_t", ["time.h"]) | |
detect_libc_name | |
detect_endian | |
detect_tr1 | |
detect_tr1_hash | |
detect_x86 | |
detect_features | |
detect_functions | |
detect_structures | |
detect_globals | |
detect_headers | |
detect_curses | |
detect_strerror | |
end | |
# Checks whether the given config file is a Perl script by checking its first | |
# line for a Perl hashbang. | |
def llvm_config_cmd(config) | |
begin | |
File.open(config, "r") do |f| | |
first_line = f.readline | |
if first_line =~ /^#! ?\/usr(\/local)?\/bin\/(env )?perl/ | |
"#{@perl} #{config}" | |
else | |
config | |
end | |
end | |
rescue Errno::ENOENT, ArgumentError | |
# The file doesn't exist (ENOENT) or it's a binary file (ArgumentError). | |
config | |
end | |
end | |
def get_system_name | |
return unless @os =~ /linux/ | |
return unless File.exist? "/etc/issue" | |
data = IO.readlines("/etc/issue").first | |
data =~ /([^ ]+)[^\d\.]*([\d\.]*)/ | |
name = $1.downcase | |
version = $2 | |
if name == "debian" and File.exist? "/etc/debian_version" | |
version = IO.read("/etc/debian_version").split.first.gsub(/\W/, "-") | |
end | |
return "#{name}-#{version}" | |
end | |
def check_tool_version(tool_name, opts, version, regexp=/(?=\d)(\d+).(\d+).?(\d+)?/) | |
@log.print "Checking #{tool_name}:" | |
output = `#{tool_name} #{opts}` | |
if $?.exitstatus == 0 | |
v = output.scan(regexp)[0].map { |x| x.to_i } | |
unless (v <=> version) >= 0 | |
failure " Expected #{tool_name} version >= #{version.join('.')}, found #{v.join('.')}" | |
end | |
@log.write " found" | |
else | |
failure "#{tool_name} not found." | |
end | |
end | |
def detect_libc_name | |
return if @libc | |
@log.print "Checking for libc version: " | |
case | |
when @windows | |
@libc = "msvcrt.dll" | |
when @darwin | |
@libc = "libc.dylib" | |
else | |
begin | |
exe = ENV["SHELL"] || "/bin/sh" | |
ldd_output = `ldd #{exe}` | |
@libc = ldd_output[/libc\.so\.[0-9]+/] | |
rescue | |
# Don't abort if the command is not found | |
end | |
unless $?.success? and @libc | |
failure "libc not found. Use the --libc configure option." | |
end | |
end | |
@log.write "#{@libc} found!" | |
end | |
def write_configure_files | |
@log.write "\nWriting configuration files..." | |
unless @llvm_enabled | |
@llvm_configure = "" | |
end | |
@bin_links.delete @program_name | |
config_settings = { | |
:config_file => @config, | |
:command_line => @command_line, | |
:build_make => @make, | |
:build_rake => @rake, | |
:build_perl => @perl, | |
:llvm_enabled => @llvm_enabled, | |
:llvm_path => @llvm_path, | |
:llvm_system_name => @llvm_system_name, | |
:llvm_configure => @llvm_configure, | |
:llvm_version => @llvm_version, | |
:llvm_api_version => @llvm_api_version, | |
:llvm_shared => @llvm_shared, | |
:llvm_shared_objs => @llvm_shared_objs, | |
:llvm_cxxflags => @llvm_cxxflags, | |
:llvm_ldflags => @llvm_ldflags, | |
:cc => @cc, | |
:cxx => @cxx, | |
:ldshared => @ldshared, | |
:ldsharedxx => @ldsharedxx, | |
:gcc_major => @gcc_major, | |
:user_cflags => "#{@user_cflags}", | |
:user_cxxflags => "#{@user_cxxflags}", | |
:user_cppflags => "#{@user_cppflags}", | |
:user_ldflags => "#{@user_ldflags}", | |
:system_cflags => "#{@system_cflags}", | |
:system_cxxflags => "#{@system_cxxflags}", | |
:system_cppflags => "#{@system_cppflags}", | |
:system_ldflags => "#{@system_ldflags}", | |
:include_dirs => @include_dirs, | |
:lib_dirs => @lib_dirs, | |
:defines => @defines, | |
:curses => @curses, | |
:host => @host, | |
:cpu => @cpu, | |
:vendor => @vendor, | |
:os => @os, | |
:little_endian => @little_endian, | |
:sizeof_long => sizeof("long"), | |
:x86_32 => @x86_32, | |
:x86_64 => @x86_64, | |
:dtrace => @dtrace, | |
:dtrace_const => @dtrace_const, | |
:fibers => @fibers, | |
:debug_build => @debug_build, | |
:sourcedir => @sourcedir, | |
:stagingdir => @stagingdir, | |
:build_prefix => @build_prefix, | |
:runtime_gems_dir => @runtime_gems_dir, | |
:bootstrap_gems_dir => @bootstrap_gems_dir, | |
:capi_includedir => @capi_includedir, | |
:build_exe => "#{@build_prefix}#{@bindir}/#{@program_name}", | |
:prefixdir => @prefixdir, | |
:bindir => @bindir, | |
:libdir => @libdir, | |
:encdir => @encdir, | |
:runtimedir => @runtimedir, | |
:kerneldir => @kerneldir, | |
:sitedir => @sitedir, | |
:vendordir => @vendordir, | |
:includedir => @includedir, | |
:mandir => @mandir, | |
:gemsdir => @gemsdir, | |
:gems_cache => @gems_cache, | |
:gems_list => @gems_list, | |
:gem_files => @gem_files, | |
:program_name => @program_name, | |
:bin_links => @bin_links, | |
:use_bin_links => @use_bin_links, | |
:rpath => @features["rpath"].value, | |
:windows => @windows, | |
:darwin => @darwin, | |
:bsd => @bsd, | |
:linux => @linux, | |
:vendor_zlib => @features["vendor-zlib"].value, | |
:vm_release_h => @vm_release_h, | |
:bootstrap_gems => @bootstrap_gems, | |
:runtime_gems => @runtime_gems, | |
:ruby_version => @ruby_version, | |
:version => version, | |
:libversion => @libversion, | |
:patch_version => @patch_version, | |
:release_date => @release_date || default_release_date, | |
:revision => build_revision, | |
} | |
write_config_rb @config, config_settings | |
lib_rubinius_dir = "#{@sourcedir}/library/rubinius" | |
FileUtils.mkdir_p lib_rubinius_dir unless File.directory? lib_rubinius_dir | |
FileUtils.cp @config, "#{lib_rubinius_dir}/build_config.rb" | |
# Write the config file used to build the C++ VM. | |
Dir.mkdir "vm/gen" unless File.directory? "vm/gen" | |
vm_paths_h = "vm/gen/paths.h" | |
File.open vm_paths_h, "wb" do |f| | |
f.puts <<-EOF | |
#define RBX_PREFIX_PATH "#{@prefixdir}" | |
#define RBX_BIN_PATH "#{@bindir}" | |
#define RBX_GEMS_PATH "#{@gemsdir}" | |
#define RBX_RUNTIME_PATH "#{@runtimedir}" | |
#define RBX_KERNEL_PATH "#{@kerneldir}" | |
#define RBX_LIB_PATH "#{@libdir}" | |
#define RBX_ENC_PATH "#{@encdir}" | |
#define RBX_HDR_PATH "#{@includedir}" | |
#define RBX_SITE_PATH "#{@sitedir}" | |
#define RBX_VENDOR_PATH "#{@vendordir}" | |
EOF | |
end | |
vm_config_h = "vm/gen/config.h" | |
File.open vm_config_h, "wb" do |f| | |
f.puts <<-EOC | |
#define RBX_PROGRAM_NAME "#{@program_name}" | |
#define RBX_HOST "#{@host}" | |
#define RBX_CPU "#{@cpu}" | |
#define RBX_VENDOR "#{@vendor}" | |
#define RBX_OS "#{@os}" | |
#define RBX_LIB_VERSION "#{@libversion}" | |
#define RBX_RUBY_LIB_VERSION #{@libversion.gsub(/\D/, "").to_i} | |
#define RBX_LDSHARED "#{@ldshared}" | |
#define RBX_LDSHAREDXX "#{@ldsharedxx}" | |
#define RBX_SIZEOF_LONG #{sizeof("long")} | |
#define RBX_LLVM_API_VER #{@llvm_api_version} | |
#define RBX_LIBC "#{@libc}" | |
#define RBX_HAVE_LCHMOD #{@have_lchmod} | |
#define RBX_HAVE_LCHOWN #{@have_lchown} | |
#define RBX_DEBUG_BUILD #{@debug_build.inspect} | |
EOC | |
if @llvm_version | |
f.puts "#define RBX_LLVM_VERSION #{@llvm_version.inspect}" | |
end | |
if @little_endian | |
f.puts "#define RBX_LITTLE_ENDIAN 1" | |
end | |
if @tr1 | |
f.puts "#define RBX_HAVE_TR1 1" | |
end | |
if @tr1_hash | |
f.puts "#define RBX_HAVE_TR1_HASH 1" | |
end | |
[:windows, :darwin, :bsd, :linux].each do |platform| | |
if instance_variable_get(:"@#{platform}") | |
f.puts "#define RBX_#{platform.to_s.upcase} 1" | |
end | |
end | |
if @fibers | |
f.puts "#define RBX_FIBER_ENABLED 1" | |
end | |
f.puts "#define RBX_DTRACE_CONST #{@dtrace_const ? "const" : ""}" | |
write_have_defines f | |
end | |
# Write the config file for vendor/oniguruma. | |
File.open "vendor/oniguruma/config.h", "wb" do |f| | |
f.puts <<-EOC | |
/* This file is generated by the Rubinius build system. Your edits | |
* will be lost. See the configure script. | |
*/ | |
EOC | |
write_have_defines f | |
write_have_sizeof_defines f | |
write_sizeof_defines f | |
end | |
# Write release header file. | |
write_release @vm_release_h, version, @release_date | |
# Write the rubinius-specific C-API config headers. | |
vm_capi_header_gen = "#{@capi_includedir}/gen" | |
FileUtils.mkdir_p vm_capi_header_gen | |
FileUtils.cp vm_config_h, "#{vm_capi_header_gen}/rbx_config.h" | |
FileUtils.cp @vm_release_h, "#{vm_capi_header_gen}/rbx_release.h" | |
# Write the config file used in the C-API. | |
capi_config_h = "#{@capi_includedir}/ruby/config.h" | |
FileUtils.mkdir_p File.dirname(capi_config_h) | |
File.open capi_config_h, "wb" do |f| | |
f.puts <<-EOC | |
/* This file is generated by the build system. Your edits | |
* will be lost. See the configure script. | |
*/ | |
#ifndef NORETURN | |
#define NORETURN(x) __attribute__ ((noreturn)) x | |
#endif | |
#ifndef UNREACHABLE | |
#define UNREACHABLE __builtin_unreachable() | |
#endif | |
EOC | |
write_have_defines f | |
write_have_sizeof_defines f | |
write_sizeof_defines f | |
if @windows | |
f.puts "#define RBX_WINDOWS 1" | |
end | |
end | |
# Create C-API header for vm/test | |
File.open "vm/test/ruby.h", "w" do |f| | |
f.puts %[#include "#{@capi_includedir}/ruby.h"] | |
end | |
end | |
def print_debug | |
puts "\nUsing the following configuration to build" | |
puts "------------------------------------------" | |
cat("config.rb") | |
puts "\nSetting the following defines for the VM" | |
puts "----------------------------------------" | |
cat("vm/gen/config.h") | |
end | |
def cat(file) | |
puts IO.read(relative_file(file)) | |
end | |
def relative_file(name) | |
File.expand_path("../#{name}", __FILE__) | |
end | |
def check_force_clean | |
unless verify_build_signature | |
@log.write "\nDetected old configuration settings, forcing a clean build" | |
system("#{build_ruby} -S #{@rake} clean") | |
end | |
end | |
def fetch_gems | |
@log.write "\nFetching gems..." | |
failed = false | |
Dir.chdir @gems_cache do | |
@gem_files.each do |gem| | |
next if File.exist? gem | |
failed = true unless download "https://rubygems.org/gems/#{gem}", "./#{gem}" | |
end | |
end | |
failure "Unable to download required gems." if failed | |
end | |
def verify_gems | |
@log.write "\nVerifying gems..." | |
failed = false | |
@gem_files.each do |gem_name| | |
unless File.file? "#{@gems_cache}/#{gem_name}" | |
@log.write "unable to find gem #{gem_name}" | |
failed = true | |
end | |
end | |
failure "Unable to find required gems." if failed | |
end | |
def clean_gems(dir, gems) | |
unpacked = Dir["#{dir}/*"] | |
# Remove unpacked gems not specified by these configure settings | |
unpacked.each do |dir| | |
d = File.basename dir | |
unless gems.find { |x| d =~ /^#{x}/ } and | |
@gem_files.find { |x| d =~ /^#{x[0..-5]}/ } | |
FileUtils.rm_rf dir | |
end | |
end | |
end | |
def unpack_gems(source, destination, list) | |
FileUtils.mkdir_p destination unless File.directory? destination | |
Dir.chdir destination do | |
list.each do |name| | |
gem_name = @gem_files.find { |x| x =~ /^#{name}/ } | |
failure "Unable to find gem to unpack: #{name}" unless gem_name | |
unless File.directory? gem_name[0..-5] | |
system("#{@gem} unpack #{source}/#{gem_name}") | |
unless $?.exitstatus == 0 | |
failure "Unable to unpack bootstrap gems." | |
end | |
end | |
end | |
end | |
end | |
def setup_gems | |
@log.write "\nSetting up gems..." | |
# Remove unpacked gems not specified by these configure settings | |
clean_gems @runtime_gems_dir, @runtime_gems | |
clean_gems @bootstrap_gems_dir, @bootstrap_gems | |
# Unpack gems not found for these configure settings | |
unpack_gems @gems_cache, @runtime_gems_dir, @runtime_gems | |
unpack_gems @gems_cache, @bootstrap_gems_dir, @bootstrap_gems | |
end | |
# Create directories that don't have to be created by the end user | |
# themselves. | |
def create_directories | |
FileUtils.mkdir_p @gems_cache | |
end | |
def run | |
unless RedCard.check :ruby, :rubinius | |
failure "Sorry, building Rubinius requires MRI or Rubinius." | |
end | |
unless RedCard.check "1.8.7" | |
@log.write "Ruby version 1.8.7+ is required to build Rubinius." | |
@log.write "Your version may work but is unsupported." | |
end | |
options | |
parse ARGV | |
create_directories | |
check_tools | |
check_force_clean | |
set_filesystem_paths | |
process | |
if @release_build | |
verify_gems | |
else | |
fetch_gems | |
end | |
setup_gems | |
write_configure_files | |
write_build_signature | |
return if @release_config | |
print_debug if @verbose | |
if @llvm_source_build | |
files = prebuilt_files.map { |f| File.basename f, ".tar.bz2" }.join("\n ") | |
@log.write <<-EOM | |
------------------------------------------------------------------ | |
Unable to find an existing binary build of LLVM for your platform. | |
Please notify the Rubinius team at the #rubinius channel on | |
irc.freenode.net and provide the following system information: | |
prebuilts: | |
#{files} | |
------------------------------------------------------------------ | |
EOM | |
end | |
unless @stagingdir | |
build_msg = <<-EOM | |
Rubinius (#{build_revision[0, 8]}) has been configured. | |
Run 'rake' to build and test Rubinius. | |
EOM | |
else | |
build_msg = <<-EOM | |
Rubinius (#{build_revision[0, 8]}) has been configured for the following paths: | |
prefix: #{@prefixdir} | |
bin: #{@prefixdir}#{@bindir} | |
lib: #{@prefixdir}#{@libdir} | |
include: #{@prefixdir}#{@includedir} | |
runtime: #{@prefixdir}#{@runtimedir} | |
kernel: #{@prefixdir}#{@kerneldir} | |
site: #{@prefixdir}#{@sitedir} | |
vendor: #{@prefixdir}#{@vendordir} | |
man: #{@prefixdir}#{@mandir} | |
gems: #{@prefixdir}#{@gemsdir} | |
gems cache: #{@gems_cache} | |
Run 'rake' to build, test and install Rubinius. | |
EOM | |
end | |
links = (@bin_links + [@program_name]).uniq | |
@log.write <<-EOM | |
------------------------------------------------------------------ | |
#{build_msg} | |
After building, you may add | |
'#{@prefixdir}#{@bindir}' | |
to your PATH or run commands directly from that directory. | |
Available commands are: | |
#{links.join(", ")} | |
------------------------------------------------------------------ | |
EOM | |
end | |
# Configuration item that has both a default and a configured value | |
class ConfigurationToggle | |
attr_reader :default, :configured | |
def initialize(default_value) | |
@default = !!default_value | |
@configured = nil | |
end | |
def configured=(value) | |
@configured = !!value | |
end | |
def value | |
unless @configured.nil? | |
@configured | |
else | |
@default | |
end | |
end | |
end | |
# Handles user output and logging while running configure. | |
class Logger | |
attr_reader :path | |
# Creates an instance of Logger writing to +file+. | |
def initialize(file, init=true) | |
@path = File.expand_path("../#{file}", __FILE__) | |
if init | |
File.open(@path, "wb") { } | |
log "Configuring Rubinius..." | |
end | |
end | |
# Copies the contents of +other+ into this logger's file. | |
def replace(other) | |
output do |f| | |
f.puts File.read(other) | |
end | |
end | |
# Writes +message+ to the logging file but not to the screen. | |
def log(message, error=false) | |
output do |f| | |
stamp = "#{timestamp}#{'*** ERROR' if error}" | |
if multiline?(message) | |
f.puts "#{stamp} ---" | |
f.puts message | |
f.puts "---" | |
else | |
f.puts "#{stamp} #{message}" | |
end | |
end | |
end | |
# Writes a normal message to STDOUT and logs to the file. | |
def write(message) | |
log message | |
STDOUT.puts message | |
end | |
# Writes a normal message to STDOUT with #print and logs to file. | |
def print(message) | |
log message | |
STDOUT.print message | |
end | |
# Writes an error message to STDERR and logs to the file with | |
# error decorations. This should only be used for errors that | |
# affect configure itself. | |
def error(message) | |
log message, true | |
STDERR.puts message | |
end | |
# Yields an IO for writing log messages. | |
def output | |
File.open @path, "a" do |f| | |
yield f | |
end | |
end | |
# Returns a formatted times suitable for logging. | |
def timestamp | |
Time.now.strftime "[%Y-%m-%d %H:%M:%S]" | |
end | |
# Returns true if the message has more than one line. | |
def multiline?(message) | |
message.index("\n") != nil | |
end | |
end | |
# Returns true if the *port* command is in the PATH and identifies | |
# itself with "MacPorts" when run interactively. | |
def macports? | |
`echo quit | port 2>&-`.start_with? 'MacPorts' | |
end | |
# Query MacPorts for the path to the latest installed version of | |
# llvm-config that is within the range of supported LLVM versions. | |
def macports_llvm_config | |
supported_versions = (3.0 .. 3.5) | |
installed_ports = `port installed | egrep -o 'llvm-[^ ]+'`.split | |
latest_usable_port = installed_ports.sort.select do |fname| | |
version = fname.match(/-\K.*/)[0].to_f | |
supported_versions.include? version | |
end.last | |
avail_binaries = `port contents #{latest_usable_port} | | |
fgrep llvm-config`.split | |
avail_binaries.reject { |fname| fname.include? 'libexec' }.last | |
end | |
end | |
STDOUT.sync = true | |
Configure.new(root).run |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Rubinius | |
config = {} | |
config[:config_file] = "/Users/at/src/private/ruby/rubinius/config.rb" | |
config[:command_line] = ["--prefix=/Users/at/.rbenv/versions/rbx-2.5.2-git", "--cc=clang", "--cxx=clang++", "--llvm-config=/usr/local/Cellar/llvm/3.5.1/bin/llvm-config"] | |
config[:build_make] = "make" | |
config[:build_rake] = "rake" | |
config[:build_perl] = "perl" | |
config[:llvm_enabled] = true | |
config[:llvm_path] = nil | |
config[:llvm_system_name] = nil | |
config[:llvm_configure] = "/usr/local/Cellar/llvm/3.5.1/bin/llvm-config" | |
config[:llvm_version] = "3.5.1" | |
config[:llvm_api_version] = 305 | |
config[:llvm_shared] = false | |
config[:llvm_shared_objs] = nil | |
config[:llvm_cxxflags] = " -std=c++11" | |
config[:llvm_ldflags] = "-L/usr/local/Cellar/llvm/3.5.1/lib -lz -lpthread -ledit -lcurses -lm" | |
config[:cc] = "clang" | |
config[:cxx] = "clang++" | |
config[:ldshared] = "clang -bundle -undefined suppress -flat_namespace" | |
config[:ldsharedxx] = "clang++ -bundle -undefined suppress -flat_namespace" | |
config[:gcc_major] = "4.2" | |
config[:user_cflags] = "" | |
config[:user_cxxflags] = "" | |
config[:user_cppflags] = "" | |
config[:user_ldflags] = "" | |
config[:system_cflags] = "-fPIC -D_DARWIN_USE_64_BIT_INODE" | |
config[:system_cxxflags] = "" | |
config[:system_cppflags] = "" | |
config[:system_ldflags] = "" | |
config[:include_dirs] = ["/usr/local/include"] | |
config[:lib_dirs] = ["/usr/local/lib"] | |
config[:defines] = ["HAS_EXECINFO", "HAVE_SPT_REUSEARGV", "HAVE_NL_LANGINFO", "HAVE_STRNLEN", "HAVE_KQUEUE", "HAVE_TM_GMTOFF", "HAVE_TM_ZONE", "HAVE_TIMEZONE", "HAVE_TZNAME", "HAVE_DAYLIGHT", "HAVE_ALLOCA_H", "HAVE_STRING_H", "HAVE_SYS_TIME_H", "HAVE_SYS_TIMES_H", "HAVE_SYS_TYPES_H", "HAVE_UNISTD_H", "HAVE_STDARG_H"] | |
config[:curses] = "-lcurses" | |
config[:host] = "x86_64-apple-darwin13.4.0" | |
config[:cpu] = "x86_64" | |
config[:vendor] = "apple" | |
config[:os] = "darwin13.4.0" | |
config[:little_endian] = true | |
config[:sizeof_long] = 8 | |
config[:x86_32] = false | |
config[:x86_64] = true | |
config[:dtrace] = false | |
config[:dtrace_const] = false | |
config[:fibers] = true | |
config[:debug_build] = false | |
config[:sourcedir] = "/Users/at/src/private/ruby/rubinius" | |
config[:stagingdir] = "/Users/at/src/private/ruby/rubinius/staging" | |
config[:build_prefix] = "/Users/at/src/private/ruby/rubinius/staging" | |
config[:runtime_gems_dir] = "/Users/at/src/private/ruby/rubinius/staging/runtime/gems" | |
config[:bootstrap_gems_dir] = "/Users/at/src/private/ruby/rubinius/bootstrap/gems" | |
config[:capi_includedir] = "/Users/at/src/private/ruby/rubinius/vm/include/capi" | |
config[:build_exe] = "/Users/at/src/private/ruby/rubinius/staging/bin/rbx" | |
config[:prefixdir] = "/Users/at/.rbenv/versions/rbx-2.5.2-git" | |
config[:bindir] = "/bin" | |
config[:libdir] = "/library" | |
config[:encdir] = "/library/encoding/converter" | |
config[:runtimedir] = "/runtime" | |
config[:kerneldir] = "/kernel" | |
config[:sitedir] = "/site" | |
config[:vendordir] = "/vendor" | |
config[:includedir] = "/vm/include/capi" | |
config[:mandir] = "/man" | |
config[:gemsdir] = "/gems" | |
config[:gems_cache] = "/Users/at/src/private/ruby/rubinius/vendor/cache" | |
config[:gems_list] = "/Users/at/src/private/ruby/rubinius/gems_list.txt" | |
config[:gem_files] = ["bundler-1.7.12.gem", "daedalus-core-0.2.0.gem", "ffi2-generators-0.1.1.gem", "json-1.8.2.gem", "minitest-4.7.5.gem", "psych-2.0.10.gem", "racc-1.4.12.gem", "rake-10.4.2.gem", "rb-readline-0.5.2.gem", "rdoc-4.2.0.gem", "redcard-1.1.0.gem", "rubinius-ast-2.3.1.gem", "rubinius-build_tools-2.0.0.gem", "rubinius-compiler-2.3.1.gem", "rubinius-coverage-2.0.3.gem", "rubinius-debugger-2.2.0.gem", "rubinius-developer_tools-2.0.0.gem", "rubinius-melbourne-2.3.1.0.gem", "rubinius-processor-2.3.0.gem", "rubinius-profiler-2.0.1.gem", "rubinius-toolset-2.3.1.gem", "rubysl-2.1.0.gem", "rubysl-abbrev-2.0.4.gem", "rubysl-base64-2.0.0.gem", "rubysl-benchmark-2.0.1.gem", "rubysl-bigdecimal-2.0.2.gem", "rubysl-cgi-2.0.1.gem", "rubysl-cgi-session-2.0.1.gem", "rubysl-cmath-2.0.0.gem", "rubysl-complex-2.0.0.gem", "rubysl-continuation-2.0.0.gem", "rubysl-coverage-2.0.3.gem", "rubysl-csv-2.0.2.gem", "rubysl-curses-2.0.1.gem", "rubysl-date-2.0.9.gem", "rubysl-delegate-2.0.1.gem", "rubysl-digest-2.0.3.gem", "rubysl-drb-2.0.1.gem", "rubysl-e2mmap-2.0.0.gem", "rubysl-english-2.0.0.gem", "rubysl-enumerator-2.0.0.gem", "rubysl-erb-2.0.2.gem", "rubysl-etc-2.0.3.gem", "rubysl-expect-2.0.0.gem", "rubysl-fcntl-2.0.4.gem", "rubysl-fiber-2.0.0.gem", "rubysl-fileutils-2.0.3.gem", "rubysl-find-2.0.1.gem", "rubysl-forwardable-2.0.1.gem", "rubysl-getoptlong-2.0.0.gem", "rubysl-gserver-2.0.0.gem", "rubysl-io-console-2.0.0.gem", "rubysl-io-nonblock-2.0.0.gem", "rubysl-io-wait-2.0.0.gem", "rubysl-ipaddr-2.0.0.gem", "rubysl-irb-2.1.1.gem", "rubysl-logger-2.1.0.gem", "rubysl-mathn-2.0.0.gem", "rubysl-matrix-2.1.0.gem", "rubysl-mkmf-2.0.1.gem", "rubysl-monitor-2.0.0.gem", "rubysl-mutex_m-2.0.0.gem", "rubysl-net-ftp-2.0.1.gem", "rubysl-net-http-2.0.4.gem", "rubysl-net-imap-2.0.1.gem", "rubysl-net-pop-2.0.1.gem", "rubysl-net-protocol-2.0.1.gem", "rubysl-net-smtp-2.0.1.gem", "rubysl-net-telnet-2.0.0.gem", "rubysl-nkf-2.0.1.gem", "rubysl-observer-2.0.0.gem", "rubysl-open-uri-2.0.0.gem", "rubysl-open3-2.0.0.gem", "rubysl-openssl-2.2.1.gem", "rubysl-optparse-2.0.1.gem", "rubysl-ostruct-2.0.4.gem", "rubysl-pathname-2.1.0.gem", "rubysl-prettyprint-2.0.3.gem", "rubysl-prime-2.0.1.gem", "rubysl-profile-2.0.0.gem", "rubysl-profiler-2.0.1.gem", "rubysl-pstore-2.0.0.gem", "rubysl-pty-2.0.3.gem", "rubysl-rational-2.0.1.gem", "rubysl-readline-2.0.2.gem", "rubysl-resolv-2.1.0.gem", "rubysl-rexml-2.0.4.gem", "rubysl-rinda-2.0.1.gem", "rubysl-rss-2.0.0.gem", "rubysl-scanf-2.0.0.gem", "rubysl-securerandom-2.0.0.gem", "rubysl-set-2.0.1.gem", "rubysl-shellwords-2.0.0.gem", "rubysl-singleton-2.0.0.gem", "rubysl-socket-2.0.1.gem", "rubysl-stringio-2.0.0.gem", "rubysl-strscan-2.0.0.gem", "rubysl-sync-2.0.0.gem", "rubysl-syslog-2.1.0.gem", "rubysl-tempfile-2.0.1.gem", "rubysl-test-unit-2.0.3.gem", "rubysl-thread-2.0.2.gem", "rubysl-thwait-2.0.0.gem", "rubysl-time-2.0.3.gem", "rubysl-timeout-2.0.0.gem", "rubysl-tmpdir-2.0.1.gem", "rubysl-tsort-2.0.1.gem", "rubysl-un-2.0.0.gem", "rubysl-uri-2.0.0.gem", "rubysl-weakref-2.0.0.gem", "rubysl-webrick-2.0.0.gem", "rubysl-xmlrpc-2.0.0.gem", "rubysl-yaml-2.1.0.gem", "rubysl-zlib-2.0.1.gem"] | |
config[:program_name] = "rbx" | |
config[:bin_links] = ["ruby", "rake", "gem", "irb", "rdoc", "ri", "erb"] | |
config[:use_bin_links] = true | |
config[:rpath] = false | |
config[:windows] = false | |
config[:darwin] = true | |
config[:bsd] = false | |
config[:linux] = false | |
config[:vendor_zlib] = false | |
config[:vm_release_h] = "/Users/at/src/private/ruby/rubinius/vm/gen/release.h" | |
config[:bootstrap_gems] = ["ffi2-generators", "rubysl-etc", "rubysl-fileutils", "rubysl-mkmf", "rubysl-shellwords", "rubysl-date", "rubysl-delegate", "rubysl-digest", "rubysl-etc", "rubysl-fcntl", "rubysl-fileutils", "rubysl-monitor", "rubysl-openssl", "rubysl-optparse", "rubysl-stringio", "rubysl-strscan", "rubysl-tempfile", "rubysl-thread", "rubysl-tmpdir", "rubysl-uri", "rubysl-yaml", "rubysl-zlib", "psych"] | |
config[:runtime_gems] = ["rubinius-ast", "rubinius-compiler", "rubinius-melbourne", "rubinius-processor", "rubinius-toolset"] | |
config[:ruby_version] = "2.1.0" | |
config[:version] = "2.5.2" | |
config[:libversion] = "2.5" | |
config[:patch_version] = "2" | |
config[:release_date] = "2015-01-30" | |
config[:revision] = "7a5b05b1a9aca87703ceb0bafe00b916b9510285" | |
if Rubinius.constants.map { |x| x.to_s }.include?("BUILD_CONFIG") | |
self::BUILD_CONFIG.replace config | |
else | |
self::BUILD_CONFIG = config | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/configure --prefix=$HOME/.rbenv/versions/rbx-2.5.2-git --cc=clang --cxx=clang++ --llvm-config=/usr/local/Cellar/llvm/3.5.1/bin/llvm-config | |
Checking clang: found | |
Checking clang++: found | |
Checking bison: found | |
Checking for 'llvm-config': found! (version 3.5.1 - api: 305) | |
Checking sizeof(short): 2 bytes | |
Checking sizeof(int): 4 bytes | |
Checking sizeof(void*): 8 bytes | |
Checking sizeof(size_t): 8 bytes | |
Checking sizeof(long): 8 bytes | |
Checking sizeof(long long): 8 bytes | |
Checking sizeof(float): 4 bytes | |
Checking sizeof(double): 8 bytes | |
Checking sizeof(off_t): 8 bytes | |
Checking sizeof(time_t): 8 bytes | |
Checking for libc version: libc.dylib found! | |
Checking platform endianness: little endian | |
Checking for tr1: not found | |
Checking for tr1/hash definition: not found | |
Checking for x86_32: no | |
Checking for x86_64: yes | |
Checking for function 'backtrace': found! | |
Checking for function 'clock_gettime': not found | |
Checking for function 'nl_langinfo': found! | |
Checking for function 'setproctitle': not found | |
Checking for function 'posix_fadvise': not found | |
Checking for function 'strnlen': found! | |
Checking for function 'kqueue': found! | |
Checking for function 'timerfd_create': not found | |
Checking for function 'inotify_init': not found | |
Checking for function 'lchmod': found! | |
Checking for function 'lchown': found! | |
Checking for struct tm has member tm_gmtoff: found! | |
Checking for struct tm has member tm_zone: found! | |
Checking for global 'timezone': found! | |
Checking for global 'tzname': found! | |
Checking for global 'daylight': found! | |
Checking for header 'zlib.h': found! | |
Checking for header 'openssl/ssl.h': found! | |
Checking for header 'alloca.h': found! | |
Checking for header 'string.h': found! | |
Checking for header 'sys/time.h': found! | |
Checking for header 'sys/times.h': found! | |
Checking for header 'sys/types.h': found! | |
Checking for header 'unistd.h': found! | |
Checking for header 'stdarg.h': found! | |
Checking for header 'sys/pstat.h': not found | |
Checking for header 'valgrind/valgrind.h': not found | |
Checking curses library: -lcurses | |
Checking if function 'strerror_r' returns char*: no | |
Fetching gems... | |
Setting up gems... | |
Unpacked gem: '/Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1' | |
Unpacked gem: '/Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1' | |
Unpacked gem: '/Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-melbourne-2.3.1.0' | |
Unpacked gem: '/Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-processor-2.3.0' | |
Unpacked gem: '/Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-toolset-2.3.1' | |
Writing configuration files... | |
------------------------------------------------------------------ | |
Rubinius (7a5b05b1) has been configured for the following paths: | |
prefix: /Users/at/.rbenv/versions/rbx-2.5.2-git | |
bin: /Users/at/.rbenv/versions/rbx-2.5.2-git/bin | |
lib: /Users/at/.rbenv/versions/rbx-2.5.2-git/library | |
include: /Users/at/.rbenv/versions/rbx-2.5.2-git/vm/include/capi | |
runtime: /Users/at/.rbenv/versions/rbx-2.5.2-git/runtime | |
kernel: /Users/at/.rbenv/versions/rbx-2.5.2-git/kernel | |
site: /Users/at/.rbenv/versions/rbx-2.5.2-git/site | |
vendor: /Users/at/.rbenv/versions/rbx-2.5.2-git/vendor | |
man: /Users/at/.rbenv/versions/rbx-2.5.2-git/man | |
gems: /Users/at/.rbenv/versions/rbx-2.5.2-git/gems | |
gems cache: /Users/at/src/private/ruby/rubinius/vendor/cache | |
Run 'rake' to build, test and install Rubinius. | |
After building, you may add | |
'/Users/at/.rbenv/versions/rbx-2.5.2-git/bin' | |
to your PATH or run commands directly from that directory. | |
Available commands are: | |
ruby, rake, gem, irb, rdoc, ri, erb, rbx | |
------------------------------------------------------------------ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$rake install | |
GEN vm/gen/config_variables.h | |
/Users/at/.rbenv/versions/1.9.3-p545/bin/ruby vm/codegen/config_vars.rb vm/gen/config_variables.h | |
/Users/at/.rbenv/versions/1.9.3-p545/bin/ruby vm/codegen/encoding_extract.rb /Users/at/src/private/ruby/rubinius/vendor/oniguruma vm/gen/encoding_database.cpp | |
mkdir -p /Users/at/src/private/ruby/rubinius/staging//library/encoding/converter | |
/Users/at/.rbenv/versions/1.9.3-p545/bin/ruby vm/codegen/transcoders_extract.rb /Users/at/src/private/ruby/rubinius/vendor/oniguruma/enc/trans vm/gen/transcoder_database.cpp | |
/Users/at/.rbenv/versions/1.9.3-p545/bin/ruby vm/codegen/field_extract.rb vm/builtin/basic_object.hpp vm/builtin/object.hpp vm/builtin/integer.hpp vm/builtin/fixnum.hpp vm/builtin/array.hpp vm/builtin/bignum.hpp vm/builtin/executable.hpp vm/builtin/access_variable.hpp vm/builtin/alias.hpp vm/builtin/block_environment.hpp vm/builtin/block_as_method.hpp vm/builtin/byte_array.hpp vm/builtin/io.hpp vm/builtin/channel.hpp vm/builtin/module.hpp vm/builtin/constant_table.hpp vm/builtin/class.hpp vm/builtin/compiled_code.hpp vm/builtin/data.hpp vm/builtin/dir.hpp vm/builtin/exception.hpp vm/builtin/float.hpp vm/builtin/fsevent.hpp vm/builtin/immediates.hpp vm/builtin/iseq.hpp vm/builtin/list.hpp vm/builtin/logger.hpp vm/builtin/lookup_table.hpp vm/builtin/ffi_pointer.hpp vm/builtin/method_table.hpp vm/builtin/native_function.hpp vm/builtin/packed_object.hpp vm/builtin/randomizer.hpp vm/builtin/regexp.hpp vm/builtin/constant_scope.hpp vm/builtin/encoding.hpp vm/builtin/string.hpp vm/builtin/symbol.hpp vm/builtin/thread.hpp vm/builtin/tuple.hpp vm/builtin/compact_lookup_table.hpp vm/builtin/time.hpp vm/builtin/stat.hpp vm/builtin/native_method.hpp vm/builtin/system.hpp vm/builtin/autoload.hpp vm/builtin/proc.hpp vm/builtin/variable_scope.hpp vm/builtin/location.hpp vm/builtin/constant_cache.hpp vm/builtin/call_site.hpp vm/builtin/mono_inline_cache.hpp vm/builtin/poly_inline_cache.hpp vm/builtin/call_custom_cache.hpp vm/builtin/respond_to_cache.hpp vm/builtin/weakref.hpp vm/builtin/fiber.hpp vm/builtin/thunk.hpp vm/builtin/call_unit.hpp vm/builtin/call_unit_adapter.hpp vm/builtin/atomic.hpp vm/builtin/character.hpp vm/builtin/thread_state.hpp vm/builtin/jit.hpp | |
GEN vm/gen/instruction_names.cpp | |
GEN vm/gen/instruction_names.hpp | |
GEN vm/gen/instruction_sizes.hpp | |
GEN vm/gen/instruction_prototypes.hpp | |
GEN vm/gen/instruction_defines.hpp | |
GEN vm/gen/instruction_locations.hpp | |
GEN vm/gen/instruction_implementations.hpp | |
GEN vm/gen/instruction_visitors.hpp | |
GEN vm/gen/instruction_effects.hpp | |
1: CC regcomp.c | |
1: CC regenc.c | |
1: CC regerror.c | |
1: CC regexec.c | |
1: CC regparse.c | |
regparse.c:1168:1: warning: unused function 'node_new_cclass_by_codepoint_range' [-Wunused-function] | |
node_new_cclass_by_codepoint_range(int not, OnigCodePoint sb_out, | |
^ | |
1 warning generated. | |
1: CC regsyntax.c | |
1: CC regtrav.c | |
1: CC regversion.c | |
1: CC st.c | |
1: CC transcoder.c | |
transcoder.c:1373:1: warning: unused function 'more_output_buffer' [-Wunused-function] | |
more_output_buffer( | |
^ | |
1 warning generated. | |
1: CC enc/ascii.c | |
1: CC enc/big5.c | |
1: CC enc/cp949.c | |
1: CC enc/emacs_mule.c | |
1: CC enc/euc_jp.c | |
1: CC enc/euc_kr.c | |
1: CC enc/euc_tw.c | |
1: CC enc/gb18030.c | |
1: CC enc/gbk.c | |
1: CC enc/iso_8859_1.c | |
1: CC enc/iso_8859_10.c | |
1: CC enc/iso_8859_11.c | |
1: CC enc/iso_8859_13.c | |
1: CC enc/iso_8859_14.c | |
1: CC enc/iso_8859_15.c | |
1: CC enc/iso_8859_16.c | |
1: CC enc/iso_8859_2.c | |
1: CC enc/iso_8859_3.c | |
1: CC enc/iso_8859_4.c | |
1: CC enc/iso_8859_5.c | |
1: CC enc/iso_8859_6.c | |
1: CC enc/iso_8859_7.c | |
1: CC enc/iso_8859_8.c | |
1: CC enc/iso_8859_9.c | |
1: CC enc/koi8_r.c | |
1: CC enc/koi8_u.c | |
1: CC enc/mktable.c | |
1: CC enc/shift_jis.c | |
1: CC enc/unicode.c | |
1: CC enc/us_ascii.c | |
1: CC enc/utf_16be.c | |
enc/utf_16be.c:36:18: warning: unused variable 'EncLen_UTF16' [-Wunused-const-variable] | |
static const int EncLen_UTF16[] = { | |
^ | |
1 warning generated. | |
1: CC enc/utf_16le.c | |
enc/utf_16le.c:36:18: warning: unused variable 'EncLen_UTF16' [-Wunused-const-variable] | |
static const int EncLen_UTF16[] = { | |
^ | |
1 warning generated. | |
1: CC enc/utf_32be.c | |
1: CC enc/utf_32le.c | |
1: CC enc/utf_8.c | |
1: CC enc/windows_1251.c | |
1: CC enc/windows_31j.c | |
1: AR ./libonig.a | |
ar: creating archive ./libonig.a | |
a - ./artifacts/regcomp.c.o | |
a - ./artifacts/regenc.c.o | |
a - ./artifacts/regerror.c.o | |
a - ./artifacts/regexec.c.o | |
a - ./artifacts/regparse.c.o | |
a - ./artifacts/regsyntax.c.o | |
a - ./artifacts/regtrav.c.o | |
a - ./artifacts/regversion.c.o | |
a - ./artifacts/st.c.o | |
a - ./artifacts/transcoder.c.o | |
a - enc/artifacts/ascii.c.o | |
a - enc/artifacts/big5.c.o | |
a - enc/artifacts/cp949.c.o | |
a - enc/artifacts/emacs_mule.c.o | |
a - enc/artifacts/euc_jp.c.o | |
a - enc/artifacts/euc_kr.c.o | |
a - enc/artifacts/euc_tw.c.o | |
a - enc/artifacts/gb18030.c.o | |
a - enc/artifacts/gbk.c.o | |
a - enc/artifacts/iso_8859_1.c.o | |
a - enc/artifacts/iso_8859_10.c.o | |
a - enc/artifacts/iso_8859_11.c.o | |
a - enc/artifacts/iso_8859_13.c.o | |
a - enc/artifacts/iso_8859_14.c.o | |
a - enc/artifacts/iso_8859_15.c.o | |
a - enc/artifacts/iso_8859_16.c.o | |
a - enc/artifacts/iso_8859_2.c.o | |
a - enc/artifacts/iso_8859_3.c.o | |
a - enc/artifacts/iso_8859_4.c.o | |
a - enc/artifacts/iso_8859_5.c.o | |
a - enc/artifacts/iso_8859_6.c.o | |
a - enc/artifacts/iso_8859_7.c.o | |
a - enc/artifacts/iso_8859_8.c.o | |
a - enc/artifacts/iso_8859_9.c.o | |
a - enc/artifacts/koi8_r.c.o | |
a - enc/artifacts/koi8_u.c.o | |
a - enc/artifacts/mktable.c.o | |
a - enc/artifacts/shift_jis.c.o | |
a - enc/artifacts/unicode.c.o | |
a - enc/artifacts/us_ascii.c.o | |
a - enc/artifacts/utf_16be.c.o | |
a - enc/artifacts/utf_16le.c.o | |
a - enc/artifacts/utf_32be.c.o | |
a - enc/artifacts/utf_32le.c.o | |
a - enc/artifacts/utf_8.c.o | |
a - enc/artifacts/windows_1251.c.o | |
a - enc/artifacts/windows_31j.c.o | |
1: CC enc/trans/big5.c | |
1: LDSHARED enc/trans/big5.bundle | |
1: CC enc/trans/chinese.c | |
1: LDSHARED enc/trans/chinese.bundle | |
1: CC enc/trans/emoji.c | |
1: LDSHARED enc/trans/emoji.bundle | |
1: CC enc/trans/emoji_iso2022_kddi.c | |
1: LDSHARED enc/trans/emoji_iso2022_kddi.bundle | |
1: CC enc/trans/emoji_sjis_docomo.c | |
1: LDSHARED enc/trans/emoji_sjis_docomo.bundle | |
1: CC enc/trans/emoji_sjis_kddi.c | |
1: LDSHARED enc/trans/emoji_sjis_kddi.bundle | |
1: CC enc/trans/emoji_sjis_softbank.c | |
1: LDSHARED enc/trans/emoji_sjis_softbank.bundle | |
1: CC enc/trans/escape.c | |
1: LDSHARED enc/trans/escape.bundle | |
1: CC enc/trans/gb18030.c | |
1: LDSHARED enc/trans/gb18030.bundle | |
1: CC enc/trans/gbk.c | |
1: LDSHARED enc/trans/gbk.bundle | |
1: CC enc/trans/iso2022.c | |
1: LDSHARED enc/trans/iso2022.bundle | |
1: CC enc/trans/japanese.c | |
1: LDSHARED enc/trans/japanese.bundle | |
1: CC enc/trans/japanese_euc.c | |
1: LDSHARED enc/trans/japanese_euc.bundle | |
1: CC enc/trans/japanese_sjis.c | |
1: LDSHARED enc/trans/japanese_sjis.bundle | |
1: CC enc/trans/korean.c | |
1: LDSHARED enc/trans/korean.bundle | |
1: CC enc/trans/newline.c | |
1: LDSHARED enc/trans/newline.bundle | |
1: CC enc/trans/single_byte.c | |
1: LDSHARED enc/trans/single_byte.bundle | |
1: CC enc/trans/utf8_mac.c | |
1: LDSHARED enc/trans/utf8_mac.bundle | |
1: CC enc/trans/utf_16_32.c | |
1: LDSHARED enc/trans/utf_16_32.bundle | |
Running 198 tasks using 4 parallel threads | |
2: CXX vm/arguments.cpp3: CXX vm/auxiliary_threads.cpp | |
4: CXX vm/builtin/access_variable.cpp | |
5: CXX vm/accessor_primitives.cpp | |
2: CXX vm/builtin/alias.cpp | |
4: CXX vm/builtin/array.cpp | |
3: CXX vm/builtin/atomic.cpp | |
2: CXX vm/builtin/autoload.cpp | |
3: CXX vm/builtin/basic_object.cpp | |
4: CXX vm/builtin/bignum.cpp | |
2: CXX vm/builtin/block_as_method.cpp | |
3: CXX vm/builtin/block_environment.cpp | |
4: CXX vm/builtin/byte_array.cpp | |
5: CXX vm/builtin/call_custom_cache.cpp | |
2: CXX vm/builtin/call_site.cpp | |
4: CXX vm/builtin/call_unit.cpp | |
5: CXX vm/builtin/call_unit_adapter.cpp | |
3: CXX vm/builtin/channel.cpp | |
2: CXX vm/builtin/character.cpp | |
4: CXX vm/builtin/class.cpp | |
5: CXX vm/builtin/compact_lookup_table.cpp | |
3: CXX vm/builtin/compiled_code.cpp | |
2: CXX vm/builtin/constant_cache.cpp | |
4: CXX vm/builtin/constant_scope.cpp | |
5: CXX vm/builtin/constant_table.cpp | |
2: CXX vm/builtin/data.cpp | |
4: CXX vm/builtin/dir.cpp | |
5: CXX vm/builtin/encoding.cpp | |
3: CXX vm/builtin/exception.cpp | |
2: CXX vm/builtin/executable.cpp | |
4: CXX vm/builtin/ffi_pointer.cpp | |
2: CXX vm/builtin/fiber.cpp | |
5: CXX vm/builtin/find_object.cpp | |
3: CXX vm/builtin/fixnum.cpp | |
4: CXX vm/builtin/float.cpp | |
2: CXX vm/builtin/fsevent.cpp | |
3: CXX vm/builtin/heap_dump.cpp | |
5: CXX vm/builtin/immediates.cpp | |
4: CXX vm/builtin/integer.cpp | |
2: CXX vm/builtin/io.cpp | |
5: CXX vm/builtin/iseq.cpp | |
3: CXX vm/builtin/jit.cpp | |
4: CXX vm/builtin/list.cpp | |
5: CXX vm/builtin/location.cpp | |
4: CXX vm/builtin/logger.cpp | |
2: CXX vm/builtin/lookup_table.cpp | |
5: CXX vm/builtin/method_table.cpp | |
3: CXX vm/builtin/module.cpp | |
4: CXX vm/builtin/mono_inline_cache.cpp | |
2: CXX vm/builtin/native_function.cpp | |
5: CXX vm/builtin/native_method.cpp | |
3: CXX vm/builtin/object.cpp | |
4: CXX vm/builtin/pack.cpp | |
2: CXX vm/builtin/packed_object.cpp | |
5: CXX vm/builtin/poly_inline_cache.cpp | |
3: CXX vm/builtin/proc.cpp | |
2: CXX vm/builtin/randomizer.cpp | |
4: CXX vm/builtin/regexp.cpp | |
5: CXX vm/builtin/respond_to_cache.cpp | |
3: CXX vm/builtin/stat.cpp | |
2: CXX vm/builtin/string.cpp | |
5: CXX vm/builtin/symbol.cpp | |
3: CXX vm/builtin/system.cpp | |
4: CXX vm/builtin/thread.cpp | |
2: CXX vm/builtin/thread_state.cpp | |
5: CXX vm/builtin/thunk.cpp | |
4: CXX vm/builtin/time.cpp | |
2: CXX vm/builtin/tuple.cpp | |
5: CXX vm/builtin/unpack.cpp | |
4: CXX vm/builtin/variable_scope.cpp | |
3: CXX vm/builtin/weakref.cpp | |
2: CXX vm/bytecode_verification.cpp | |
5: CXX vm/call_frame.cpp | |
4: CXX vm/capi/array.cpp | |
3: CXX vm/capi/bignum.cpp | |
2: CXX vm/capi/capi.cpp | |
5: CXX vm/capi/class.cpp | |
4: CXX vm/capi/complex.cpp | |
3: CXX vm/capi/data.cpp | |
2: CXX vm/capi/encoding.cpp | |
4: CXX vm/capi/enumerator.cpp | |
3: CXX vm/capi/exception.cpp | |
5: CXX vm/capi/file.cpp | |
4: CXX vm/capi/fixnum.cpp | |
2: CXX vm/capi/float.cpp | |
3: CXX vm/capi/gc.cpp | |
5: CXX vm/capi/globals.cpp | |
4: CXX vm/capi/handle.cpp | |
2: CXX vm/capi/handles.cpp | |
3: CXX vm/capi/hash.cpp | |
5: CXX vm/capi/integer.cpp | |
4: CXX vm/capi/io.cpp | |
3: CXX vm/capi/kernel.cpp | |
2: CXX vm/capi/marshal.cpp | |
5: CXX vm/capi/module.cpp | |
2: CXX vm/capi/mutex.cpp | |
4: CXX vm/capi/numeric.cpp | |
3: CXX vm/capi/object.cpp | |
5: CXX vm/capi/proc.cpp | |
2: CXX vm/capi/range.cpp | |
4: CXX vm/capi/rational.cpp | |
3: CXX vm/capi/regexp.cpp | |
2: CXX vm/capi/string.cpp | |
5: CXX vm/capi/struct.cpp | |
4: CXX vm/capi/symbol.cpp | |
3: CXX vm/capi/thread.cpp | |
5: CXX vm/capi/time.cpp | |
2: CXX vm/capi/util.cpp | |
4: CXX vm/compiled_file.cpp | |
3: CXX vm/config_parser.cpp | |
5: CXX vm/console.cpp | |
2: CXX vm/dispatch.cpp | |
4: CXX vm/drivers/cli.cpp | |
3: CXX vm/environment.cpp | |
5: CXX vm/exception.cpp | |
2: CXX vm/exception_point.cpp | |
4: CXX vm/ffi.cpp | |
5: CXX vm/ffi_util.cpp | |
5: CXX vm/fiber_data.cpp | |
2: CXX vm/fiber_stack.cpp | |
4: CXX vm/gc/baker.cpp | |
3: CXX vm/gc/code_manager.cpp | |
5: CXX vm/gc/debug.cpp | |
2: CXX vm/gc/finalize.cpp | |
3: CXX vm/gc/gc.cpp | |
5: CXX vm/gc/heap.cpp | |
4: CXX vm/gc/immix.cpp | |
2: CXX vm/gc/immix_marker.cpp | |
5: CXX vm/gc/inflated_headers.cpp | |
3: CXX vm/gc/managed.cpp | |
2: CXX vm/gc/mark_sweep.cpp | |
5: CXX vm/gc/object_mark.cpp | |
4: CXX vm/gc/root.cpp | |
3: CXX vm/gc/walker.cpp | |
5: CXX vm/gc/write_barrier.cpp | |
4: CXX vm/global_cache.cpp | |
2: CXX vm/helpers.cpp | |
3: CXX vm/instructions.cpp | |
5: CXX vm/instruments/rbxti.cpp | |
4: CXX vm/instruments/tooling.cpp | |
2: CXX vm/invoke_primitives.cpp | |
5: CXX vm/jit_primitives.cpp | |
4: CXX vm/linkedlist.cpp | |
4: CXX vm/llvm/autotypes.cpp | |
4: CXX vm/llvm/detection.cpp | |
2: CXX vm/llvm/disassembler.cpp | |
4: CXX vm/llvm/inline.cpp | |
5: CXX vm/llvm/inline_block.cpp | |
2: CXX vm/llvm/inline_primitive.cpp | |
5: CXX vm/llvm/jit_block.cpp | |
4: CXX vm/llvm/jit_builder.cpp | |
3: CXX vm/llvm/jit_compiler.cpp | |
5: CXX vm/llvm/jit_context.cpp | |
2: CXX vm/llvm/jit_inline_block.cpp | |
3: CXX vm/llvm/jit_inline_method.cpp | |
5: CXX vm/llvm/jit_memory_manager.cpp | |
2: CXX vm/llvm/jit_method.cpp | |
5: CXX vm/llvm/jit_runtime.cpp | |
3: CXX vm/llvm/jit_util.cpp | |
4: CXX vm/llvm/method_info.cpp | |
5: CXX vm/llvm/passes.cpp | |
2: CXX vm/llvm/state.cpp | |
3: CXX vm/llvm/types.cpp | |
4: CXX vm/lock.cpp | |
5: CXX vm/machine_code.cpp | |
4: CXX vm/marshal.cpp | |
3: CXX vm/method_primitives.cpp | |
2: CXX vm/metrics.cpp | |
4: CC vm/missing/crypt.c | |
4: CC vm/missing/setproctitle.c | |
4: CXX vm/missing/string.cpp | |
4: CXX vm/object_memory.cpp | |
5: CXX vm/missing/windows.cpp | |
5: CXX vm/ontology.cpp | |
5: CXX vm/oop.cpp | |
2: CXX vm/park.cpp | |
4: CXX vm/shared_state.cpp | |
5: CXX vm/signal.cpp | |
2: CXX vm/stack_variables.cpp | |
2: CXX vm/state.cpp | |
5: CXX vm/symbol_table.cpp | |
2: CXX vm/type_info.cpp | |
4: CXX vm/unwind_info.cpp | |
5: CXX vm/util/file.cpp | |
5: CXX vm/util/logger.cpp | |
4: CXX vm/util/murmur_hash3.cpp | |
4: CC vm/util/random.c | |
4: CC vm/util/sha1.c | |
4: CC vm/util/siphash.c | |
4: CXX vm/util/spinlock.cpp | |
4: CC vm/util/strftime.c | |
5: CC vm/util/time64.c | |
5: CXX vm/util/timer.cpp | |
4: CC vm/util/timing.c | |
4: CC vm/util/utf8.c | |
3: CC vm/util/vsnprintf.c | |
4: CXX vm/vm.cpp | |
5: CXX vm/vm_thread_state.cpp | |
Build time: 61.591435 seconds | |
1: LD vm/vm | |
ld: warning: could not create compact unwind for _ffi_call_unix64: does not use RBP or RSP based frame | |
GEN runtime/signature | |
RBC kernel/bootstrap/basic_object.rb | |
RBC kernel/bootstrap/logger.rb | |
RBC kernel/bootstrap/alias.rb | |
RBC kernel/bootstrap/mirror.rb | |
RBC kernel/bootstrap/array_mirror.rb | |
RBC kernel/bootstrap/array.rb | |
RBC kernel/bootstrap/atomic.rb | |
RBC kernel/bootstrap/bignum.rb | |
RBC kernel/bootstrap/block_environment.rb | |
RBC kernel/bootstrap/byte_array.rb | |
RBC kernel/bootstrap/call_site.rb | |
RBC kernel/bootstrap/call_custom_cache.rb | |
RBC kernel/bootstrap/channel.rb | |
RBC kernel/bootstrap/character.rb | |
RBC kernel/bootstrap/class.rb | |
RBC kernel/bootstrap/compact_lookup_table.rb | |
RBC kernel/bootstrap/compiled_code.rb | |
RBC kernel/bootstrap/configuration.rb | |
RBC kernel/bootstrap/constant_cache.rb | |
RBC kernel/bootstrap/constant_scope.rb | |
RBC kernel/bootstrap/constant_table.rb | |
RBC kernel/bootstrap/dir.rb | |
RBC kernel/bootstrap/encoding.rb | |
RBC kernel/bootstrap/exception.rb | |
RBC kernel/bootstrap/executable.rb | |
RBC kernel/bootstrap/false.rb | |
RBC kernel/bootstrap/fixnum.rb | |
RBC kernel/bootstrap/gc.rb | |
RBC kernel/bootstrap/io.rb | |
RBC kernel/bootstrap/iseq.rb | |
RBC kernel/bootstrap/jit.rb | |
RBC kernel/bootstrap/kernel.rb | |
RBC kernel/bootstrap/lookup_table.rb | |
RBC kernel/bootstrap/method_table.rb | |
RBC kernel/bootstrap/mono_inline_cache.rb | |
RBC kernel/bootstrap/nil.rb | |
RBC kernel/bootstrap/proc.rb | |
RBC kernel/bootstrap/process.rb | |
RBC kernel/bootstrap/poly_inline_cache.rb | |
RBC kernel/bootstrap/regexp.rb | |
RBC kernel/bootstrap/respond_to_cache.rb | |
RBC kernel/bootstrap/rubinius.rb | |
RBC kernel/bootstrap/stat.rb | |
RBC kernel/bootstrap/string.rb | |
RBC kernel/bootstrap/symbol.rb | |
RBC kernel/bootstrap/thread.rb | |
RBC kernel/bootstrap/thunk.rb | |
RBC kernel/bootstrap/time.rb | |
RBC kernel/bootstrap/true.rb | |
RBC kernel/bootstrap/tuple.rb | |
RBC kernel/bootstrap/type.rb | |
RBC kernel/bootstrap/variable_scope.rb | |
RBC kernel/bootstrap/vm.rb | |
RBC kernel/bootstrap/weakref.rb | |
RBC kernel/platform/ffi.rb | |
RBC kernel/platform/enum.rb | |
RBC kernel/platform/library.rb | |
RBC kernel/platform/pointer_accessors.rb | |
RBC kernel/platform/pointer.rb | |
RBC kernel/platform/env.rb | |
RBC kernel/platform/file.rb | |
RBC kernel/platform/math.rb | |
RBC kernel/platform/posix.rb | |
RBC kernel/platform/struct.rb | |
RBC kernel/platform/union.rb | |
RBC kernel/common/basic_object.rb | |
RBC kernel/common/string_mirror.rb | |
RBC kernel/common/class.rb | |
RBC kernel/common/autoload.rb | |
RBC kernel/common/module.rb | |
RBC kernel/common/binding.rb | |
RBC kernel/common/proc.rb | |
RBC kernel/common/enumerable.rb | |
RBC kernel/common/enumerator.rb | |
RBC kernel/common/argf.rb | |
RBC kernel/common/tuple.rb | |
RBC kernel/common/exception.rb | |
RBC kernel/common/undefined.rb | |
RBC kernel/common/type.rb | |
RBC kernel/common/hash.rb | |
RBC kernel/common/hash_hamt.rb | |
RBC kernel/common/array.rb | |
RBC kernel/common/kernel.rb | |
RBC kernel/common/identity_map.rb | |
RBC kernel/common/loaded_features.rb | |
RBC kernel/common/global.rb | |
RBC kernel/common/backtrace.rb | |
RBC kernel/common/comparable.rb | |
RBC kernel/common/numeric.rb | |
RBC kernel/common/ctype.rb | |
RBC kernel/common/integer.rb | |
RBC kernel/common/bignum.rb | |
RBC kernel/common/block_environment.rb | |
RBC kernel/common/byte_array.rb | |
RBC kernel/common/channel.rb | |
RBC kernel/common/executable.rb | |
RBC kernel/common/constant_scope.rb | |
RBC kernel/common/hook.rb | |
RBC kernel/common/code_loader.rb | |
RBC kernel/common/compiled_code.rb | |
RBC kernel/common/continuation.rb | |
RBC kernel/common/delegated_method.rb | |
RBC kernel/common/fixnum.rb | |
RBC kernel/common/lru_cache.rb | |
RBC kernel/common/encoding.rb | |
RBC kernel/common/env.rb | |
RBC kernel/common/errno.rb | |
RBC kernel/common/eval.rb | |
RBC kernel/common/false.rb | |
RBC kernel/common/fiber.rb | |
RBC kernel/common/io.rb | |
RBC kernel/common/file.rb | |
RBC kernel/common/dir.rb | |
RBC kernel/common/dir_glob.rb | |
RBC kernel/common/file_test.rb | |
RBC kernel/common/stat.rb | |
RBC kernel/common/float.rb | |
RBC kernel/common/immediate.rb | |
RBC kernel/common/location.rb | |
RBC kernel/common/lookup_table.rb | |
RBC kernel/common/main.rb | |
RBC kernel/common/marshal.rb | |
RBC kernel/common/math.rb | |
RBC kernel/common/method.rb | |
RBC kernel/common/method_equality.rb | |
RBC kernel/common/method_table.rb | |
RBC kernel/common/missing_method.rb | |
RBC kernel/common/native_method.rb | |
RBC kernel/common/nil.rb | |
RBC kernel/common/object_space.rb | |
RBC kernel/common/string.rb | |
RBC kernel/common/range.rb | |
RBC kernel/common/struct.rb | |
RBC kernel/common/process.rb | |
RBC kernel/common/process_mirror.rb | |
RBC kernel/common/random.rb | |
RBC kernel/common/regexp.rb | |
RBC kernel/common/signal.rb | |
RBC kernel/common/splitter.rb | |
RBC kernel/common/sprinter.rb | |
RBC kernel/common/symbol.rb | |
RBC kernel/common/mutex.rb | |
RBC kernel/common/thread.rb | |
RBC kernel/common/thread_group.rb | |
RBC kernel/common/throw_catch.rb | |
RBC kernel/common/time.rb | |
RBC kernel/common/true.rb | |
RBC kernel/common/variable_scope.rb | |
RBC kernel/common/capi.rb | |
RBC kernel/common/rational.rb | |
RBC kernel/common/rationalizer.rb | |
RBC kernel/common/complex.rb | |
RBC kernel/common/complexifier.rb | |
RBC kernel/common/gc.rb | |
RBC kernel/delta/ctype.rb | |
RBC kernel/delta/exception.rb | |
RBC kernel/delta/file.rb | |
RBC kernel/delta/rubinius.rb | |
RBC kernel/delta/runtime.rb | |
RBC kernel/delta/module.rb | |
RBC kernel/delta/class.rb | |
RBC kernel/delta/file_test.rb | |
RBC kernel/delta/kernel.rb | |
RBC kernel/delta/math.rb | |
RBC kernel/delta/options.rb | |
RBC kernel/delta/stats.rb | |
RBC kernel/delta/signal.rb | |
RBC kernel/delta/struct.rb | |
RBC kernel/delta/thread.rb | |
RBC kernel/delta/code_loader.rb | |
RBC kernel/delta/fsevent.rb | |
RBC kernel/delta/console.rb | |
RBC kernel/delta/ffi.rb | |
RBC kernel/delta/ruby_constants.rb | |
RBC kernel/delta/pack.rb | |
RBC kernel/delta/metrics.rb | |
RBC kernel/signature.rb | |
RBC kernel/alpha.rb | |
RBC kernel/loader.rb | |
RBC kernel/delta/converter_paths.rb | |
RBC library/rbconfig.rb | |
RBC library/rubinius/build_config.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/constants.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/control_flow.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/data.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/definitions.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/encoding.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/exceptions.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/file.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/grapher.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/literals.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/node.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/operators.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/self.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/sends.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/transforms.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/values.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/variables.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-ast-2.3.1/lib/rubinius/ast/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/compiled_file.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/compiler.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/evaluator.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/generator.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/generator_methods.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/iseq.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/locals.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/opcodes.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/printers.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/stages.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-compiler-2.3.1/lib/rubinius/compiler/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-melbourne-2.3.1.0/ext/rubinius/melbourne/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-melbourne-2.3.1.0/ext/rubinius/melbourne/node_types.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-melbourne-2.3.1.0/lib/rubinius/melbourne.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-melbourne-2.3.1.0/lib/rubinius/melbourne/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-processor-2.3.0/lib/rubinius/processor.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-processor-2.3.0/lib/rubinius/processor/processor.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-processor-2.3.0/lib/rubinius/processor/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-toolset-2.3.1/lib/rubinius/toolset.rb | |
RBC /Users/at/src/private/ruby/rubinius/staging/runtime/gems/rubinius-toolset-2.3.1/lib/rubinius/toolset/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/ffi2-generators-0.1.1/lib/ffi2/generators.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/ffi2-generators-0.1.1/lib/ffi2/generators/constants.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/ffi2-generators-0.1.1/lib/ffi2/generators/file_processor.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/ffi2-generators-0.1.1/lib/ffi2/generators/structures.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/ffi2-generators-0.1.1/lib/ffi2/generators/types.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/ffi2-generators-0.1.1/lib/ffi2/generators/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/ext/psych/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/class_loader.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/coder.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/core_ext.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/deprecated.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/exception.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/handler.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/handlers/document_stream.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/handlers/recorder.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/json/ruby_events.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/json/stream.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/json/tree_builder.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/json/yaml_events.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes/alias.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes/document.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes/mapping.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes/node.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes/scalar.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes/sequence.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/nodes/stream.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/omap.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/parser.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/scalar_scanner.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/set.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/stream.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/streaming.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/syntax_error.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/tree_builder.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/visitors.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/visitors/depth_first.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/visitors/emitter.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/visitors/json_tree.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/visitors/to_ruby.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/visitors/visitor.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/visitors/yaml_tree.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/psych-2.0.10/lib/psych/y.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-date-2.0.9/lib/date.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-date-2.0.9/lib/date/delta.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-date-2.0.9/lib/date/delta/parser.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-date-2.0.9/lib/date/format.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-date-2.0.9/lib/rubysl/date.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-date-2.0.9/lib/rubysl/date/date.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-date-2.0.9/lib/rubysl/date/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-delegate-2.0.1/lib/delegate.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-delegate-2.0.1/lib/rubysl/delegate.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-delegate-2.0.1/lib/rubysl/delegate/delegate.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-delegate-2.0.1/lib/rubysl/delegate/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/ext/rubysl/digest/bubblebabble/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/ext/rubysl/digest/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/ext/rubysl/digest/md5/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/ext/rubysl/digest/rmd160/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/ext/rubysl/digest/sha1/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/ext/rubysl/digest/sha2/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/digest.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/digest/bubblebabble.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/digest/hmac.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/digest/md5.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/digest/rmd160.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/digest/sha1.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/digest/sha2.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/rubysl/digest.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/rubysl/digest/digest.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-digest-2.0.3/lib/rubysl/digest/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-etc-2.0.3/lib/etc.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-etc-2.0.3/lib/rubysl/etc.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-etc-2.0.3/lib/rubysl/etc/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-etc-2.0.3/lib/rubysl/etc/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fcntl-2.0.4/lib/fcntl.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fcntl-2.0.4/lib/rubysl/fcntl.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fcntl-2.0.4/lib/rubysl/fcntl/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fcntl-2.0.4/lib/rubysl/fcntl/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fileutils-2.0.3/lib/fileutils.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fileutils-2.0.3/lib/rubysl/fileutils.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fileutils-2.0.3/lib/rubysl/fileutils/fileutils.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-fileutils-2.0.3/lib/rubysl/fileutils/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-mkmf-2.0.1/lib/mkmf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-mkmf-2.0.1/lib/rubysl/mkmf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-mkmf-2.0.1/lib/rubysl/mkmf/mkmf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-mkmf-2.0.1/lib/rubysl/mkmf/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-monitor-2.0.0/lib/monitor.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-monitor-2.0.0/lib/rubysl/monitor.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-monitor-2.0.0/lib/rubysl/monitor/monitor.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-monitor-2.0.0/lib/rubysl/monitor/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/ext/rubysl/openssl/deprecation.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/ext/rubysl/openssl/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl/bn.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl/buffering.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl/cipher.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl/config.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl/digest.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl/ssl.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/openssl/x509.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/rubysl/openssl.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-openssl-2.2.1/lib/rubysl/openssl/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/optparse.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/optparse/ac.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/optparse/date.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/optparse/shellwords.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/optparse/time.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/optparse/uri.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/optparse/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/rubysl/optparse.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/rubysl/optparse/optparse.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-optparse-2.0.1/lib/rubysl/optparse/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-shellwords-2.0.0/lib/rubysl/shellwords.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-shellwords-2.0.0/lib/rubysl/shellwords/shellwords.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-shellwords-2.0.0/lib/rubysl/shellwords/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-shellwords-2.0.0/lib/shellwords.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-stringio-2.0.0/lib/rubysl/stringio.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-stringio-2.0.0/lib/rubysl/stringio/stringio.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-stringio-2.0.0/lib/rubysl/stringio/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-stringio-2.0.0/lib/stringio.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-strscan-2.0.0/lib/rubysl/strscan.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-strscan-2.0.0/lib/rubysl/strscan/strscan.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-strscan-2.0.0/lib/rubysl/strscan/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-strscan-2.0.0/lib/strscan.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tempfile-2.0.1/lib/rubysl/tempfile.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tempfile-2.0.1/lib/rubysl/tempfile/tempfile.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tempfile-2.0.1/lib/rubysl/tempfile/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tempfile-2.0.1/lib/tempfile.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-thread-2.0.2/lib/rubysl/thread.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-thread-2.0.2/lib/rubysl/thread/thread.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-thread-2.0.2/lib/rubysl/thread/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-thread-2.0.2/lib/thread.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tmpdir-2.0.1/lib/rubysl/tmpdir.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tmpdir-2.0.1/lib/rubysl/tmpdir/tmpdir.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tmpdir-2.0.1/lib/rubysl/tmpdir/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-tmpdir-2.0.1/lib/tmpdir.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/rubysl/uri.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/rubysl/uri/uri.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/rubysl/uri/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/common.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/ftp.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/generic.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/http.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/https.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/ldap.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/ldaps.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-uri-2.0.0/lib/uri/mailto.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-yaml-2.1.0/lib/rubysl/yaml.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-yaml-2.1.0/lib/rubysl/yaml/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-yaml-2.1.0/lib/yaml.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-yaml-2.1.0/lib/yaml/dbm.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-yaml-2.1.0/lib/yaml/store.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-zlib-2.0.1/ext/rubysl/zlib/extconf.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-zlib-2.0.1/lib/rubysl/zlib.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-zlib-2.0.1/lib/rubysl/zlib/version.rb | |
RBC /Users/at/src/private/ruby/rubinius/bootstrap/gems/rubysl-zlib-2.0.1/lib/zlib.rb | |
/Users/at/src/private/ruby/rubinius/staging/bin/rbx ./extconf.rbc | |
make && make install | |
compiling encoding_compat.cpp | |
compiling grammar.cpp | |
compiling melbourne.cpp | |
compiling node_types.cpp | |
compiling symbols.cpp | |
compiling var_table.cpp | |
compiling visitor.cpp | |
linking shared-object melbourne.bundle | |
ld: warning: directory not found for option '-L/Users/at/src/private/ruby/rubinius/staging/lib' | |
/Users/at/src/private/ruby/rubinius/staging/bin/rbx extconf.rb | |
An exception occurred loading the compiler: | |
undefined local variable or method `message' on an instance of Rubinius::Loader. (NameError) | |
Backtrace: | |
Kernel(Rubinius::Loader)#message (method_missing) at kernel/delta/kernel.rb:78 | |
Rubinius::Loader#load_compiler at kernel/loader.rb:558 | |
Rubinius::Loader#main at kernel/loader.rb:798 | |
rake aborted! | |
Command failed with status (1): [/Users/at/src/private/ruby/rubinius/stagin...] | |
/Users/at/src/private/ruby/rubinius/rakelib/gems.rake:5:in `bootstrap_rubinius' | |
/Users/at/src/private/ruby/rubinius/rakelib/gems.rake:68:in `block (4 levels) in <top (required)>' | |
/Users/at/src/private/ruby/rubinius/rakelib/gems.rake:67:in `chdir' | |
/Users/at/src/private/ruby/rubinius/rakelib/gems.rake:67:in `block (3 levels) in <top (required)>' | |
/Users/at/src/private/ruby/rubinius/rakelib/gems.rake:66:in `block (2 levels) in <top (required)>' | |
Tasks: TOP => install => build:build => gems:extensions | |
(See full trace by running task with --trace) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This page (particularly your configure options ./configure --prefix=$HOME/.rbenv/versions/rbx-2.5.2-git --cc=clang --cxx=clang++ --llvm-config=/usr/local/Cellar/llvm/3.5.1/bin/llvm-config) is the ONLY source I found while trying to figure out how to install Rubinius 2.5.2 on Ubuntu.
Thank you!