Merge pull request #3270 from sjackman/os-requirement

Add depends_on :linux and :macos
This commit is contained in:
Mike McQuaid 2017-10-18 09:43:45 +01:00 committed by GitHub
commit c7d21dadfe
7 changed files with 63 additions and 22 deletions

View File

@ -17,3 +17,4 @@ PythonDependency = PythonRequirement
TuntapDependency = TuntapRequirement TuntapDependency = TuntapRequirement
X11Dependency = X11Requirement X11Dependency = X11Requirement
ConflictsWithBinaryOsxfuse = NonBinaryOsxfuseRequirement ConflictsWithBinaryOsxfuse = NonBinaryOsxfuseRequirement
MinimumMacOSRequirement = MacOSRequirement

View File

@ -105,7 +105,8 @@ class DependencyCollector
case spec case spec
when :x11 then X11Requirement.new(spec.to_s, tags) when :x11 then X11Requirement.new(spec.to_s, tags)
when :xcode then XcodeRequirement.new(tags) when :xcode then XcodeRequirement.new(tags)
when :macos then MinimumMacOSRequirement.new(tags) when :linux then LinuxRequirement.new(tags)
when :macos then MacOSRequirement.new(tags)
when :mysql then MysqlRequirement.new(tags) when :mysql then MysqlRequirement.new(tags)
when :postgresql then PostgresqlRequirement.new(tags) when :postgresql then PostgresqlRequirement.new(tags)
when :gpg then GPG2Requirement.new(tags) when :gpg then GPG2Requirement.new(tags)

View File

@ -2,7 +2,8 @@ require "requirement"
require "requirements/fortran_requirement" require "requirements/fortran_requirement"
require "requirements/gpg2_requirement" require "requirements/gpg2_requirement"
require "requirements/language_module_requirement" require "requirements/language_module_requirement"
require "requirements/minimum_macos_requirement" require "requirements/linux_requirement"
require "requirements/macos_requirement"
require "requirements/maximum_macos_requirement" require "requirements/maximum_macos_requirement"
require "requirements/mpi_requirement" require "requirements/mpi_requirement"
require "requirements/osxfuse_requirement" require "requirements/osxfuse_requirement"

View File

@ -0,0 +1,9 @@
class LinuxRequirement < Requirement
fatal true
satisfy(build_env: false) { OS.linux? }
def message
"Linux is required."
end
end

View File

@ -0,0 +1,31 @@
require "requirement"
class MacOSRequirement < Requirement
fatal true
def initialize(tags = [])
@version = MacOS::Version.from_symbol(tags.first) unless tags.empty?
super
end
def minimum_version_specified?
OS.mac? && @version
end
satisfy(build_env: false) do
next MacOS.version >= @version if minimum_version_specified?
next true if OS.mac?
next true if @version
false
end
def message
return "macOS is required." unless minimum_version_specified?
"macOS #{@version.pretty_name} or newer is required."
end
def display_s
return "macOS is required" unless minimum_version_specified?
"macOS >= #{@version}"
end
end

View File

@ -1,20 +0,0 @@
require "requirement"
class MinimumMacOSRequirement < Requirement
fatal true
def initialize(tags)
@version = MacOS::Version.from_symbol(tags.first)
super
end
satisfy(build_env: false) { MacOS.version >= @version }
def message
"macOS #{@version.pretty_name} or newer is required."
end
def display_s
"macOS >= #{@version}"
end
end

View File

@ -0,0 +1,18 @@
require "requirements/linux_requirement"
require "requirements/macos_requirement"
describe LinuxRequirement do
describe "#satisfied?" do
it "returns true if OS is Linux" do
expect(subject.satisfied?).to eq(OS.linux?)
end
end
end
describe MacOSRequirement do
describe "#satisfied?" do
it "returns true if OS is macOS" do
expect(subject.satisfied?).to eq(OS.mac?)
end
end
end