brew/Library/Homebrew/cmd/--config.rb
Misty De Meo 7af4622b0f Replace /usr/bin/ruby with full Framework path
Rationale: some users insist on replacing the /usr/bin/ruby symlink
to point to another ruby on their system, which may break homebrew.
Use the full Framework path instead, which is less likely to be tampered with.

This also reorganizes the brew --config checks to reflect the different path.

Fixes Homebrew/homebrew#12009.

Closes Homebrew/homebrew#12333.

Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
2012-06-01 09:24:25 -05:00

125 lines
3.0 KiB
Ruby

require 'hardware'
module Homebrew extend self
def __config
puts config_s
end
def llvm
@llvm ||= MacOS.llvm_build_version
end
def gcc_42
@gcc_42 ||= MacOS.gcc_42_build_version
end
def gcc_40
@gcc_40 ||= MacOS.gcc_40_build_version
end
def clang
@clang ||= MacOS.clang_version
end
def clang_build
@clang_build ||= MacOS.clang_build_version
end
def xcode_version
@xcode_version || MacOS.xcode_version
end
def sha
sha = HOMEBREW_REPOSITORY.cd do
`git rev-parse --verify -q HEAD 2>/dev/null`.chomp
end
if sha.empty? then "(none)" else sha end
end
def describe_x11
return "N/A" unless x11_installed?
return case x11_path = Pathname.new("/usr/X11").realpath.to_s
when "/usr/X11" then "/usr/X11"
else "/usr/X11 => #{x11_path}"
end
end
def describe_perl
perl = which 'perl'
return "N/A" if perl.nil?
real_perl = Pathname.new(perl).realpath
return perl if perl == real_perl
return "#{perl} => #{real_perl}"
end
def describe_python
python = which 'python'
return "N/A" if python.nil?
real_python = Pathname.new(python).realpath
return python if python == real_python
return "#{python} => #{real_python}"
end
def describe_ruby
ruby = which 'ruby'
return "N/A" if ruby.nil?
real_ruby = Pathname.new(ruby).realpath
return ruby if ruby == real_ruby
return "#{ruby} => #{real_ruby}"
end
def real_path a_path
Pathname.new(a_path).realpath.to_s
end
def hardware
"CPU: #{Hardware.cores_as_words}-core #{Hardware.bits}-bit #{Hardware.intel_family}"
end
def kernel
`uname -m`.chomp
end
# we try to keep output minimal
def dump_build_config
puts "HOMEBREW_PREFIX: #{HOMEBREW_PREFIX}" if HOMEBREW_PREFIX.to_s != "/usr/local"
puts "HOMEBREW_CELLAR: #{HOMEBREW_CELLAR}" if HOMEBREW_CELLAR.to_s != "#{HOMEBREW_PREFIX}/Cellar"
puts hardware
puts "MacOS: #{MACOS_FULL_VERSION}-#{kernel}"
puts "Xcode: #{xcode_version}"
puts "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby:\n #{RUBY_VERSION}-#{RUBY_PATCHLEVEL}" if RUBY_VERSION.to_f != 1.8
ponk = macports_or_fink_installed?
puts "MacPorts/Fink: #{ponk}" if ponk
x11 = describe_x11
puts "X11: #{x11}" unless x11 == "/usr/X11"
end
def config_s; <<-EOS.undent
HOMEBREW_VERSION: #{HOMEBREW_VERSION}
HEAD: #{sha}
HOMEBREW_PREFIX: #{HOMEBREW_PREFIX}
HOMEBREW_CELLAR: #{HOMEBREW_CELLAR}
#{hardware}
OS X: #{MACOS_FULL_VERSION}
Kernel Architecture: #{kernel}
Xcode: #{xcode_version}
GCC-4.0: #{gcc_40 ? "build #{gcc_40}" : "N/A"}
GCC-4.2: #{gcc_42 ? "build #{gcc_42}" : "N/A"}
LLVM: #{llvm ? "build #{llvm}" : "N/A"}
Clang: #{clang ? "#{clang} build #{clang_build}" : "N/A"}
MacPorts or Fink? #{macports_or_fink_installed?}
X11: #{describe_x11}
System Ruby: #{RUBY_VERSION}-#{RUBY_PATCHLEVEL}
Which Perl: #{describe_perl}
Which Python: #{describe_python}
Which Ruby: #{describe_ruby}
EOS
end
end