require 'requirement' require 'requirements/apr_dependency' require 'requirements/fortran_dependency' require 'requirements/language_module_dependency' require 'requirements/minimum_macos_requirement' require 'requirements/maximum_macos_requirement' require 'requirements/mpi_dependency' require 'requirements/osxfuse_dependency' require 'requirements/python_dependency' require 'requirements/tuntap_dependency' require 'requirements/unsigned_kext_requirement' require 'requirements/x11_dependency' class XcodeDependency < Requirement fatal true satisfy(:build_env => false) { xcode_installed_version } def initialize(tags) @version = tags.find { |t| tags.delete(t) if /(\d\.)+\d/ === t } 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.undent 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.undent Xcode can be installed from the App Store. EOS else message += <<-EOS.undent Xcode can be installed from https://developer.apple.com/downloads/ EOS end end def inspect "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" end end class MysqlDependency < Requirement fatal true default_formula 'mysql' satisfy { which 'mysql_config' } end class PostgresqlDependency < Requirement fatal true default_formula 'postgresql' satisfy { which 'pg_config' } end class GPGDependency < Requirement fatal true default_formula "gpg" satisfy { which("gpg") || which("gpg2") } end class TeXDependency < Requirement fatal true cask "mactex" download "https://www.tug.org/mactex/" satisfy { which('tex') || which('latex') } def message s = <<-EOS.undent A LaTeX distribution is required for Homebrew to install this formula. Make sure that "/usr/texbin", or the location you installed it to, is in your PATH before proceeding. EOS s += super s end end class ArchRequirement < Requirement fatal true def initialize(arch) @arch = arch.pop super end satisfy 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 class MercurialDependency < Requirement fatal true default_formula 'mercurial' satisfy { which('hg') } end class GitDependency < Requirement fatal true default_formula 'git' satisfy { !!which('git') } end class JavaDependency < Requirement fatal true cask "java" download "http://www.oracle.com/technetwork/java/javase/downloads/index.html" satisfy { java_version } env do java_home = Pathname.new(@java_home) ENV["JAVA_HOME"] = java_home ENV.prepend_path "PATH", java_home/"bin" if (java_home/"include").exist? # Oracle JVM ENV.append_to_cflags "-I#{java_home}/include" ENV.append_to_cflags "-I#{java_home}/include/darwin" else # Apple JVM ENV.append_to_cflags "-I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/" end end def initialize(tags) @version = tags.shift if /(\d\.)+\d/ === tags.first super end def java_version args = %w[--failfast] args << "--version" << "#{@version}+" if @version @java_home = Utils.popen_read("/usr/libexec/java_home", *args).chomp $?.success? end def message version_string = " #{@version}" if @version s = "Java#{version_string} is required to install this formula." s += super s end def inspect "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" end end