Add a small DSL for setting requirement options

This commit is contained in:
Jack Nagel 2012-12-23 19:44:15 -06:00
parent a358bee8e2
commit f8d253950f
2 changed files with 21 additions and 16 deletions

View File

@ -159,7 +159,9 @@ class Requirement
# Should return true if this requirement is met. # Should return true if this requirement is met.
def satisfied?; false; end def satisfied?; false; end
# Should return true if not meeting this requirement should fail the build. # Should return true if not meeting this requirement should fail the build.
def fatal?; false; end def fatal?
self.class.fatal || false
end
# The message to show when the requirement is not met. # The message to show when the requirement is not met.
def message; ""; end def message; ""; end
@ -174,6 +176,12 @@ class Requirement
def hash def hash
message.hash message.hash
end end
class << self
def fatal(val=nil)
val.nil? ? @fatal : @fatal = val
end
end
end end
require 'requirements' require 'requirements'

View File

@ -1,13 +1,13 @@
# A dependency on a language-specific module. # A dependency on a language-specific module.
class LanguageModuleDependency < Requirement class LanguageModuleDependency < Requirement
fatal true
def initialize language, module_name, import_name=nil def initialize language, module_name, import_name=nil
@language = language @language = language
@module_name = module_name @module_name = module_name
@import_name = import_name || module_name @import_name = import_name || module_name
end end
def fatal?; true; end
def satisfied? def satisfied?
quiet_system(*the_test) quiet_system(*the_test)
end end
@ -53,14 +53,14 @@ class X11Dependency < Requirement
include Comparable include Comparable
attr_reader :min_version attr_reader :min_version
fatal true
def initialize(*tags) def initialize(*tags)
tags.flatten! tags.flatten!
@min_version = tags.shift if /(\d\.)+\d/ === tags.first @min_version = tags.shift if /(\d\.)+\d/ === tags.first
super super
end end
def fatal?; true; end
def satisfied? def satisfied?
MacOS::XQuartz.installed? and (@min_version.nil? or @min_version <= MacOS::XQuartz.version) MacOS::XQuartz.installed? and (@min_version.nil? or @min_version <= MacOS::XQuartz.version)
end end
@ -100,14 +100,14 @@ class MPIDependency < Requirement
attr_reader :lang_list attr_reader :lang_list
fatal true
def initialize *lang_list def initialize *lang_list
@lang_list = lang_list @lang_list = lang_list
@non_functional = [] @non_functional = []
@unknown_langs = [] @unknown_langs = []
end end
def fatal?; true; end
def mpi_wrapper_works? compiler def mpi_wrapper_works? compiler
compiler = which compiler compiler = which compiler
return false if compiler.nil? or not compiler.executable? return false if compiler.nil? or not compiler.executable?
@ -170,13 +170,15 @@ class MPIDependency < Requirement
EOS EOS
end end
end end
end end
# This requirement added by the `conflicts_with` DSL method. # This requirement added by the `conflicts_with` DSL method.
class ConflictRequirement < Requirement class ConflictRequirement < Requirement
attr_reader :formula attr_reader :formula
# The user can chose to force installation even in the face of conflicts.
fatal !ARGV.force?
def initialize formula, name, opts={} def initialize formula, name, opts={}
@formula = formula @formula = formula
@name = name @name = name
@ -199,15 +201,10 @@ class ConflictRequirement < Requirement
keg = Formula.factory(@formula).prefix keg = Formula.factory(@formula).prefix
not keg.exist? && Keg.new(keg).linked? not keg.exist? && Keg.new(keg).linked?
end end
# The user can chose to force installation even in the face of conflicts.
def fatal?
not ARGV.force?
end
end end
class XcodeDependency < Requirement class XcodeDependency < Requirement
def fatal?; true; end fatal true
def satisfied? def satisfied?
MacOS::Xcode.installed? MacOS::Xcode.installed?
@ -221,7 +218,7 @@ class XcodeDependency < Requirement
end end
class MysqlInstalled < Requirement class MysqlInstalled < Requirement
def fatal?; true; end fatal true
def satisfied? def satisfied?
which 'mysql_config' which 'mysql_config'
@ -244,7 +241,7 @@ class MysqlInstalled < Requirement
end end
class PostgresqlInstalled < Requirement class PostgresqlInstalled < Requirement
def fatal?; true; end fatal true
def satisfied? def satisfied?
which 'pg_config' which 'pg_config'