brew/Library/Homebrew/compat/compatibility.rb

227 lines
4.3 KiB
Ruby
Raw Normal View History

## Compatibility layer introduced in 0.8 (refactor)
# maybe never used by anyone, but alas it must continue to exist
def versions_of(keg_name)
`/bin/ls #{HOMEBREW_CELLAR}/#{keg_name}`.collect { |version| version.strip }.reverse
end
def dump_config
require 'cmd/--config'
Homebrew.__config
end
def dump_build_env env
require 'cmd/--env'
Homebrew.dump_build_env env
end
def default_cc
MacOS.default_cc
end
def gcc_42_build
MacOS.gcc_42_build_version
end
alias :gcc_build :gcc_42_build
def gcc_40_build
MacOS.gcc_40_build_version
end
def llvm_build
MacOS.llvm_build_version
end
def x11_installed?
MacOS::X11.installed?
end
def macports_or_fink_installed?
MacOS.macports_or_fink_installed?
end
def outdated_brews
require 'cmd/outdated'
Homebrew.outdated_brews
end
def search_brews text
require 'cmd/search'
Homebrew.search_brews text
end
def snow_leopard_64?
MacOS.prefer_64_bit?
end
class Formula
# in compatability because the naming is somewhat confusing
def self.resolve_alias name
opoo 'Formula.resolve_alias is deprecated and will eventually be removed'
2012-04-30 16:22:34 +10:00
opoo 'Use Formula.canonical_name instead.'
# Don't resolve paths or URLs
return name if name.include?("/")
2010-12-31 11:00:15 -08:00
aka = HOMEBREW_REPOSITORY+"Library/Aliases"+name
if aka.file?
aka.realpath.basename('.rb').to_s
else
name
end
end
# This used to be called in "def install", but should now be used
# up in the DSL section.
def fails_with_llvm msg=nil, data=nil
opoo "Calling fails_with_llvm in the install method is deprecated"
puts "Use the fails_with DSL instead"
end
def fails_with_llvm?
fails_with? :llvm
end
def self.fails_with_llvm msg=nil, data={}
case msg when Hash then data = msg end
failure = CompilerFailure.new(:llvm) { build(data.delete(:build).to_i) }
@cc_failures ||= Set.new
@cc_failures << failure
end
def std_cmake_parameters
"-DCMAKE_INSTALL_PREFIX='#{prefix}' -DCMAKE_BUILD_TYPE=None -DCMAKE_FIND_FRAMEWORK=LAST -Wno-dev"
end
2012-04-05 21:09:24 -05:00
class << self
def bottle_sha1 val=nil
val.nil? ? @bottle_sha1 : @bottle_sha1 = val
end
2012-04-05 21:09:24 -05:00
end
# These methods return lists of Formula objects.
# They are eprecated in favor of Dependency::expand_dependencies
# and Formula#recursive_dependencies, which return lists of
# Dependency objects instead.
def self.expand_deps f
f.deps.map do |dep|
f_dep = Formula.factory dep.to_s
expand_deps(f_dep) << f_dep
end
end
def recursive_deps
Formula.expand_deps(self).flatten.uniq
end
end
class UnidentifiedFormula < Formula
end
module HomebrewEnvExtension extend self
def use_clang?
compiler == :clang
end
def use_gcc?
compiler == :gcc
end
def use_llvm?
compiler == :llvm
end
end
# TODO eventually some of these should print deprecation warnings
module MacOS extend self
def xcode_folder
Xcode.folder
end
def xcode_prefix
Xcode.prefix
end
def xcode_installed?
Xcode.installed?
end
def xcode_version
Xcode.version
end
def clt_installed?
CLT.installed?
end
def clt_version?
CLT.version
end
def x11_installed?
X11.installed?
end
def x11_prefix
X11.prefix
end
def leopard?
10.5 == MACOS_VERSION
end
def snow_leopard?
10.6 <= MACOS_VERSION # Actually Snow Leopard or newer
end
alias_method :snow_leopard_or_newer?, :snow_leopard?
def lion?
10.7 <= MACOS_VERSION # Actually Lion or newer
end
alias_method :lion_or_newer?, :lion?
def mountain_lion?
10.8 <= MACOS_VERSION # Actually Mountain Lion or newer
end
alias_method :mountain_lion_or_newer?, :mountain_lion?
def macports_or_fink_installed?
not MacOS.macports_or_fink.empty?
end
end
class Version
def slice *args
opoo "Calling slice on versions is deprecated, use: to_s.slice"
to_s.slice(*args)
end
end
# MD5 support
class Formula
def self.md5(val)
@stable ||= SoftwareSpec.new
@stable.md5(val)
end
end
class SoftwareSpec
def md5(val)
@checksum = Checksum.new(:md5, val)
end
end
class Pathname
def md5
require 'digest/md5'
opoo <<-EOS.undent
MD5 support is deprecated and will be removed in a future version.
Please switch this formula to #{Checksum::TYPES.map { |t| t.to_s.upcase } * ' or '}.
EOS
incremental_hash(Digest::MD5)
end
end