From 95e144a1c8ef809307ea0641050a3265882fe36d Mon Sep 17 00:00:00 2001 From: Shaun Jackman Date: Sat, 25 Feb 2017 10:17:25 -0800 Subject: [PATCH 1/2] Add depends_on :linux and :macos --- Library/Homebrew/dependency_collector.rb | 1 + Library/Homebrew/requirements.rb | 1 + .../Homebrew/requirements/linux_requirement.rb | 9 +++++++++ .../requirements/minimum_macos_requirement.rb | 17 ++++++++++++++--- Library/Homebrew/test/os_requirement_spec.rb | 18 ++++++++++++++++++ 5 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 Library/Homebrew/requirements/linux_requirement.rb create mode 100644 Library/Homebrew/test/os_requirement_spec.rb diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index f855669e0a..09718d1f2e 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -105,6 +105,7 @@ class DependencyCollector case spec when :x11 then X11Requirement.new(spec.to_s, tags) when :xcode then XcodeRequirement.new(tags) + when :linux then LinuxRequirement.new(tags) when :macos then MinimumMacOSRequirement.new(tags) when :mysql then MysqlRequirement.new(tags) when :postgresql then PostgresqlRequirement.new(tags) diff --git a/Library/Homebrew/requirements.rb b/Library/Homebrew/requirements.rb index 553beb2a22..bf677feee4 100644 --- a/Library/Homebrew/requirements.rb +++ b/Library/Homebrew/requirements.rb @@ -2,6 +2,7 @@ require "requirement" require "requirements/fortran_requirement" require "requirements/gpg2_requirement" require "requirements/language_module_requirement" +require "requirements/linux_requirement" require "requirements/minimum_macos_requirement" require "requirements/maximum_macos_requirement" require "requirements/mpi_requirement" diff --git a/Library/Homebrew/requirements/linux_requirement.rb b/Library/Homebrew/requirements/linux_requirement.rb new file mode 100644 index 0000000000..cb4666e562 --- /dev/null +++ b/Library/Homebrew/requirements/linux_requirement.rb @@ -0,0 +1,9 @@ +class LinuxRequirement < Requirement + fatal true + + satisfy(build_env: false) { OS.linux? } + + def message + "Linux is required." + end +end diff --git a/Library/Homebrew/requirements/minimum_macos_requirement.rb b/Library/Homebrew/requirements/minimum_macos_requirement.rb index 2cb63f740a..ffe1d8f4d2 100644 --- a/Library/Homebrew/requirements/minimum_macos_requirement.rb +++ b/Library/Homebrew/requirements/minimum_macos_requirement.rb @@ -3,18 +3,29 @@ require "requirement" class MinimumMacOSRequirement < Requirement fatal true - def initialize(tags) - @version = MacOS::Version.from_symbol(tags.first) + def initialize(tags = []) + @version = MacOS::Version.from_symbol(tags.first) unless tags.empty? super end - satisfy(build_env: false) { MacOS.version >= @version } + 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 diff --git a/Library/Homebrew/test/os_requirement_spec.rb b/Library/Homebrew/test/os_requirement_spec.rb new file mode 100644 index 0000000000..15c1cbb6a7 --- /dev/null +++ b/Library/Homebrew/test/os_requirement_spec.rb @@ -0,0 +1,18 @@ +require "requirements/linux_requirement" +require "requirements/minimum_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 MinimumMacOSRequirement do + describe "#satisfied?" do + it "returns true if OS is macOS" do + expect(subject.satisfied?).to eq(OS.mac?) + end + end +end From 230c87aff006e36bd65bb6dcc8a3877aad2c9290 Mon Sep 17 00:00:00 2001 From: Shaun Jackman Date: Fri, 6 Oct 2017 10:12:09 -0700 Subject: [PATCH 2/2] Rename MinimumMacOSRequirement to MacOSRequirement Move MinimumMacOSRequirement to compat. --- Library/Homebrew/compat/requirements.rb | 1 + Library/Homebrew/dependency_collector.rb | 2 +- Library/Homebrew/requirements.rb | 2 +- .../{minimum_macos_requirement.rb => macos_requirement.rb} | 2 +- Library/Homebrew/test/os_requirement_spec.rb | 4 ++-- 5 files changed, 6 insertions(+), 5 deletions(-) rename Library/Homebrew/requirements/{minimum_macos_requirement.rb => macos_requirement.rb} (93%) diff --git a/Library/Homebrew/compat/requirements.rb b/Library/Homebrew/compat/requirements.rb index 77760d1dc2..3886cd7c7e 100644 --- a/Library/Homebrew/compat/requirements.rb +++ b/Library/Homebrew/compat/requirements.rb @@ -17,3 +17,4 @@ PythonDependency = PythonRequirement TuntapDependency = TuntapRequirement X11Dependency = X11Requirement ConflictsWithBinaryOsxfuse = NonBinaryOsxfuseRequirement +MinimumMacOSRequirement = MacOSRequirement diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index 09718d1f2e..bc0246dd25 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -106,7 +106,7 @@ class DependencyCollector when :x11 then X11Requirement.new(spec.to_s, tags) when :xcode then XcodeRequirement.new(tags) when :linux then LinuxRequirement.new(tags) - when :macos then MinimumMacOSRequirement.new(tags) + when :macos then MacOSRequirement.new(tags) when :mysql then MysqlRequirement.new(tags) when :postgresql then PostgresqlRequirement.new(tags) when :gpg then GPG2Requirement.new(tags) diff --git a/Library/Homebrew/requirements.rb b/Library/Homebrew/requirements.rb index bf677feee4..bac7d57902 100644 --- a/Library/Homebrew/requirements.rb +++ b/Library/Homebrew/requirements.rb @@ -3,7 +3,7 @@ require "requirements/fortran_requirement" require "requirements/gpg2_requirement" require "requirements/language_module_requirement" require "requirements/linux_requirement" -require "requirements/minimum_macos_requirement" +require "requirements/macos_requirement" require "requirements/maximum_macos_requirement" require "requirements/mpi_requirement" require "requirements/osxfuse_requirement" diff --git a/Library/Homebrew/requirements/minimum_macos_requirement.rb b/Library/Homebrew/requirements/macos_requirement.rb similarity index 93% rename from Library/Homebrew/requirements/minimum_macos_requirement.rb rename to Library/Homebrew/requirements/macos_requirement.rb index ffe1d8f4d2..c89144d2c2 100644 --- a/Library/Homebrew/requirements/minimum_macos_requirement.rb +++ b/Library/Homebrew/requirements/macos_requirement.rb @@ -1,6 +1,6 @@ require "requirement" -class MinimumMacOSRequirement < Requirement +class MacOSRequirement < Requirement fatal true def initialize(tags = []) diff --git a/Library/Homebrew/test/os_requirement_spec.rb b/Library/Homebrew/test/os_requirement_spec.rb index 15c1cbb6a7..87f86231c1 100644 --- a/Library/Homebrew/test/os_requirement_spec.rb +++ b/Library/Homebrew/test/os_requirement_spec.rb @@ -1,5 +1,5 @@ require "requirements/linux_requirement" -require "requirements/minimum_macos_requirement" +require "requirements/macos_requirement" describe LinuxRequirement do describe "#satisfied?" do @@ -9,7 +9,7 @@ describe LinuxRequirement do end end -describe MinimumMacOSRequirement do +describe MacOSRequirement do describe "#satisfied?" do it "returns true if OS is macOS" do expect(subject.satisfied?).to eq(OS.mac?)