Add a small DSL for setting requirement options
This commit is contained in:
parent
a358bee8e2
commit
f8d253950f
@ -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'
|
||||||
|
@ -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'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user