Reorganize compat

This commit is contained in:
Jack Nagel 2013-05-09 23:53:26 -05:00
parent 290a93ea75
commit 3be67f7252
12 changed files with 153 additions and 177 deletions

View File

@ -0,0 +1,7 @@
require 'compat/env'
require 'compat/fails_with_llvm'
require 'compat/formula'
require 'compat/hardware'
require 'compat/macos'
require 'compat/md5'
require 'compat/version'

View File

@ -1,167 +0,0 @@
def x11_installed?
MacOS::X11.installed?
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'
opoo 'Use Formula.canonical_name instead.'
# Don't resolve paths or URLs
return name if name.include?("/")
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
class << self
def bottle_sha1 val=nil
val.nil? ? @bottle_sha1 : @bottle_sha1 = val
end
end
def self.all
opoo "Formula.all is deprecated, use Formula.map instead"
map
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

View File

@ -0,0 +1,13 @@
module HomebrewEnvExtension
def use_clang?
compiler == :clang
end
def use_gcc?
compiler == :gcc
end
def use_llvm?
compiler == :llvm
end
end

View File

@ -0,0 +1,17 @@
class Formula
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
end

View File

@ -0,0 +1,29 @@
module FormulaCompat
def x11_installed?
MacOS::X11.installed?
end
def snow_leopard_64?
MacOS.prefer_64_bit?
end
end
class Formula
include FormulaCompat
extend FormulaCompat
def std_cmake_parameters
"-DCMAKE_INSTALL_PREFIX='#{prefix}' -DCMAKE_BUILD_TYPE=None -DCMAKE_FIND_FRAMEWORK=LAST -Wno-dev"
end
def self.bottle_sha1(*)
end
def self.all
opoo "Formula.all is deprecated, use Formula.map instead"
map
end
end
class UnidentifiedFormula < Formula
end

View File

@ -0,0 +1,56 @@
module MacOS
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?
version == 10.5
end
def snow_leopard?
version >= 10.6
end
alias_method :snow_leopard_or_newer?, :snow_leopard?
def lion?
version >= 10.7
end
alias_method :lion_or_newer?, :lion?
def mountain_lion?
version >= 10.8
end
alias_method :mountain_lion_or_newer?, :mountain_lion?
def macports_or_fink_installed?
not MacOS.macports_or_fink.empty?
end
end

View File

@ -0,0 +1,23 @@
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

View File

@ -0,0 +1,6 @@
class Version
def slice *args
opoo "Calling slice on versions is deprecated, use: to_s.slice"
to_s.slice(*args)
end
end

View File

@ -93,9 +93,6 @@ FORMULA_META_FILES = Metafiles.new
ISSUES_URL = "https://github.com/mxcl/homebrew/wiki/troubleshooting"
HOMEBREW_PULL_URL_REGEX = 'https:\/\/github.com\/(\w+)\/homebrew(-\w+)?\/(pull\/(\d+)|commit\/\w{4,40})'
unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT']
$:.unshift(File.expand_path("#{__FILE__}/../compat"))
require 'compatibility'
end
require 'compat' unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT']
ORIGINAL_PATHS = ENV['PATH'].split(':').map{ |p| Pathname.new(p).expand_path rescue nil }.compact.freeze

View File

@ -1,5 +1,3 @@
require 'hardware_compat'
class Hardware
module CPU extend self
def type

View File

@ -67,10 +67,7 @@ def shutup
end
end
unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT']
$:.unshift(File.expand_path("#{ABS__FILE__}/../../compat"))
require 'compatibility'
end
require 'compat' unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT']
require 'test/unit' # must be after at_exit
require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser