diff options
Diffstat (limited to 'Library/Homebrew/requirements')
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 |
