aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/requirements
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/requirements')
-rw-r--r--Library/Homebrew/requirements/arch_requirement.rb21
-rw-r--r--Library/Homebrew/requirements/gpg2_requirement.rb12
-rw-r--r--Library/Homebrew/requirements/language_module_requirement.rb63
-rw-r--r--Library/Homebrew/requirements/xcode_requirement.rb39
4 files changed, 60 insertions, 75 deletions
diff --git a/Library/Homebrew/requirements/arch_requirement.rb b/Library/Homebrew/requirements/arch_requirement.rb
new file mode 100644
index 000000000..0ff52dfa8
--- /dev/null
+++ b/Library/Homebrew/requirements/arch_requirement.rb
@@ -0,0 +1,21 @@
+require "requirement"
+
+class ArchRequirement < Requirement
+ fatal true
+
+ def initialize(arch)
+ @arch = arch.pop
+ super
+ end
+
+ satisfy(build_env: false) do
+ case @arch
+ when :x86_64 then MacOS.prefer_64_bit?
+ when :intel, :ppc then Hardware::CPU.type == @arch
+ end
+ end
+
+ def message
+ "This formula requires an #{@arch} architecture."
+ end
+end
diff --git a/Library/Homebrew/requirements/gpg2_requirement.rb b/Library/Homebrew/requirements/gpg2_requirement.rb
deleted file mode 100644
index 04097f9be..000000000
--- a/Library/Homebrew/requirements/gpg2_requirement.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-require "requirement"
-require "gpg"
-
-class GPG2Requirement < Requirement
- fatal true
- default_formula "gnupg"
-
- # GPGTools installs GnuPG 2.0.x as a `gpg` symlink pointing
- # to `gpg2`. Our `gnupg` installs only a non-symlink `gpg`.
- # The aim is to retain support for any version above 2.0.
- satisfy(build_env: false) { Gpg.available? }
-end
diff --git a/Library/Homebrew/requirements/language_module_requirement.rb b/Library/Homebrew/requirements/language_module_requirement.rb
deleted file mode 100644
index 5ddce7a66..000000000
--- a/Library/Homebrew/requirements/language_module_requirement.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require "requirement"
-
-class LanguageModuleRequirement < Requirement
- fatal true
-
- def initialize(language, module_name, import_name = nil)
- @language = language
- @module_name = module_name
- @import_name = import_name || module_name
- super([language, module_name, import_name])
- end
-
- satisfy(build_env: false) { quiet_system(*the_test) }
-
- def message
- s = <<~EOS
- Unsatisfied dependency: #{@module_name}
- Homebrew does not provide special #{@language.to_s.capitalize} dependencies; install with:
- `#{command_line} #{@module_name}`
- EOS
-
- unless [:python, :perl, :ruby].include? @language
- s += <<~EOS
- You may need to: `brew install #{@language}`
-
- EOS
- end
-
- s
- end
-
- def the_test
- case @language
- when :lua
- ["/usr/bin/env", "luarocks-5.2", "show", @import_name.to_s]
- when :lua51
- ["/usr/bin/env", "luarocks-5.1", "show", @import_name.to_s]
- when :perl
- ["/usr/bin/env", "perl", "-e", "use #{@import_name}"]
- when :python
- ["/usr/bin/env", "python", "-c", "import #{@import_name}"]
- when :python3
- ["/usr/bin/env", "python3", "-c", "import #{@import_name}"]
- when :ruby
- ["/usr/bin/env", "ruby", "-rubygems", "-e", "require '#{@import_name}'"]
- end
- end
-
- def command_line
- case @language
- when :lua then "luarocks-5.2 install"
- when :lua51 then "luarocks-5.1 install"
- when :perl then "cpan -i"
- when :python then "pip install"
- when :python3 then "pip3 install"
- when :ruby then "gem install"
- end
- end
-
- def display_s
- "#{@module_name} (#{@language} module)"
- end
-end
diff --git a/Library/Homebrew/requirements/xcode_requirement.rb b/Library/Homebrew/requirements/xcode_requirement.rb
new file mode 100644
index 000000000..ff167c6fd
--- /dev/null
+++ b/Library/Homebrew/requirements/xcode_requirement.rb
@@ -0,0 +1,39 @@
+require "requirement"
+
+class XcodeRequirement < Requirement
+ fatal true
+
+ satisfy(build_env: false) { xcode_installed_version }
+
+ def initialize(tags)
+ @version = tags.find { |tag| tags.delete(tag) if tag =~ /(\d\.)+\d/ }
+ super
+ end
+
+ def xcode_installed_version
+ return false unless MacOS::Xcode.installed?
+ return true unless @version
+ MacOS::Xcode.version >= @version
+ end
+
+ def message
+ version = " #{@version}" if @version
+ message = <<~EOS
+ A full installation of Xcode.app#{version} is required to compile this software.
+ Installing just the Command Line Tools is not sufficient.
+ EOS
+ if MacOS.version >= :lion
+ message + <<~EOS
+ Xcode can be installed from the App Store.
+ EOS
+ else
+ message + <<~EOS
+ Xcode can be installed from #{Formatter.url("https://developer.apple.com/download/more/")}.
+ EOS
+ end
+ end
+
+ def inspect
+ "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>"
+ end
+end