| 
									
										
										
										
											2013-01-26 20:05:39 -06:00
										 |  |  | require 'requirement' | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | require 'requirements/apr_requirement' | 
					
						
							|  |  |  | require 'requirements/fortran_requirement' | 
					
						
							|  |  |  | require 'requirements/language_module_requirement' | 
					
						
							| 
									
										
										
										
											2013-09-14 11:48:48 +01:00
										 |  |  | require 'requirements/minimum_macos_requirement' | 
					
						
							| 
									
										
										
										
											2014-10-20 21:45:40 +01:00
										 |  |  | require 'requirements/maximum_macos_requirement' | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | require 'requirements/mpi_requirement' | 
					
						
							|  |  |  | require 'requirements/osxfuse_requirement' | 
					
						
							|  |  |  | require 'requirements/python_requirement' | 
					
						
							|  |  |  | require 'requirements/java_requirement' | 
					
						
							| 
									
										
										
										
											2015-04-11 19:18:40 +01:00
										 |  |  | require 'requirements/ruby_requirement' | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | require 'requirements/tuntap_requirement' | 
					
						
							| 
									
										
										
										
											2014-10-20 21:45:40 +01:00
										 |  |  | require 'requirements/unsigned_kext_requirement' | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | require 'requirements/x11_requirement' | 
					
						
							| 
									
										
										
										
											2015-05-08 14:37:15 +08:00
										 |  |  | require 'requirements/emacs_requirement' | 
					
						
							| 
									
										
										
										
											2012-10-24 18:06:00 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | class XcodeRequirement < Requirement | 
					
						
							| 
									
										
										
										
											2012-12-23 19:44:15 -06:00
										 |  |  |   fatal true | 
					
						
							| 
									
										
										
										
											2012-10-24 18:06:00 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-09 09:26:38 +00:00
										 |  |  |   satisfy(:build_env => false) { xcode_installed_version } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def initialize(tags) | 
					
						
							| 
									
										
										
										
											2014-12-09 11:48:00 -05:00
										 |  |  |     @version = tags.find { |t| tags.delete(t) if /(\d\.)+\d/ === t } | 
					
						
							| 
									
										
										
										
											2014-12-09 09:26:38 +00:00
										 |  |  |     super | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def xcode_installed_version | 
					
						
							|  |  |  |     return false unless MacOS::Xcode.installed? | 
					
						
							| 
									
										
										
										
											2014-12-09 11:48:00 -05:00
										 |  |  |     return true unless @version | 
					
						
							| 
									
										
										
										
											2014-12-09 09:26:38 +00:00
										 |  |  |     MacOS::Xcode.version >= @version | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-10-24 18:06:00 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 17:44:43 +01:00
										 |  |  |   def message | 
					
						
							| 
									
										
										
										
											2014-12-09 09:26:38 +00:00
										 |  |  |     version = " #{@version}" if @version | 
					
						
							| 
									
										
										
										
											2013-10-23 17:44:43 +01:00
										 |  |  |     message = <<-EOS.undent
 | 
					
						
							| 
									
										
										
										
											2014-12-09 09:26:38 +00:00
										 |  |  |       A full installation of Xcode.app#{version} is required to compile this software. | 
					
						
							| 
									
										
										
										
											2013-10-23 17:44:43 +01:00
										 |  |  |       Installing just the Command Line Tools is not sufficient. | 
					
						
							| 
									
										
										
										
											2012-10-24 18:06:00 -05:00
										 |  |  |     EOS | 
					
						
							| 
									
										
										
										
											2013-10-23 17:44:43 +01:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2012-10-24 18:06:00 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2015-02-23 23:41:43 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def inspect | 
					
						
							|  |  |  |     "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-10-24 18:06:00 -05:00
										 |  |  | end | 
					
						
							| 
									
										
										
										
											2012-11-05 20:03:26 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | class MysqlRequirement < Requirement | 
					
						
							| 
									
										
										
										
											2012-12-23 19:44:15 -06:00
										 |  |  |   fatal true | 
					
						
							| 
									
										
										
										
											2013-05-10 13:35:38 +01:00
										 |  |  |   default_formula 'mysql' | 
					
						
							| 
									
										
										
										
											2012-11-05 20:03:26 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 20:45:59 -06:00
										 |  |  |   satisfy { which 'mysql_config' } | 
					
						
							| 
									
										
										
										
											2012-11-05 20:03:26 -06:00
										 |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | class PostgresqlRequirement < Requirement | 
					
						
							| 
									
										
										
										
											2012-12-23 19:44:15 -06:00
										 |  |  |   fatal true | 
					
						
							| 
									
										
										
										
											2013-06-02 17:14:42 -05:00
										 |  |  |   default_formula 'postgresql' | 
					
						
							| 
									
										
										
										
											2012-11-05 20:03:26 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 20:45:59 -06:00
										 |  |  |   satisfy { which 'pg_config' } | 
					
						
							| 
									
										
										
										
											2012-11-05 20:03:26 -06:00
										 |  |  | end | 
					
						
							| 
									
										
										
										
											2012-12-13 22:23:06 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | class GPGRequirement < Requirement | 
					
						
							| 
									
										
										
										
											2015-01-18 21:29:57 +08:00
										 |  |  |   fatal true | 
					
						
							|  |  |  |   default_formula "gpg" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   satisfy { which("gpg") || which("gpg2") } | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | class TeXRequirement < Requirement | 
					
						
							| 
									
										
										
										
											2012-12-13 22:23:06 -08:00
										 |  |  |   fatal true | 
					
						
							| 
									
										
										
										
											2014-12-25 20:44:43 +00:00
										 |  |  |   cask "mactex" | 
					
						
							| 
									
										
										
										
											2015-01-04 05:02:27 +01:00
										 |  |  |   download "https://www.tug.org/mactex/" | 
					
						
							| 
									
										
										
										
											2012-12-13 22:23:06 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 20:45:59 -06:00
										 |  |  |   satisfy { which('tex') || which('latex') } | 
					
						
							| 
									
										
										
										
											2012-12-13 22:23:06 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-25 20:44:43 +00:00
										 |  |  |   def message | 
					
						
							|  |  |  |     s = <<-EOS.undent
 | 
					
						
							|  |  |  |       A LaTeX distribution is required for Homebrew to install this formula. | 
					
						
							| 
									
										
										
										
											2012-12-13 22:23:06 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-25 20:44:43 +00:00
										 |  |  |       Make sure that "/usr/texbin", or the location you installed it to, is in | 
					
						
							|  |  |  |       your PATH before proceeding. | 
					
						
							| 
									
										
										
										
											2012-12-13 22:23:06 -08:00
										 |  |  |     EOS | 
					
						
							| 
									
										
										
										
											2014-12-25 20:44:43 +00:00
										 |  |  |     s += super | 
					
						
							|  |  |  |     s | 
					
						
							| 
									
										
										
										
											2012-12-13 22:23:06 -08:00
										 |  |  |   end | 
					
						
							|  |  |  | end | 
					
						
							| 
									
										
										
										
											2013-01-23 00:26:30 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-01 11:53:13 -05:00
										 |  |  | class ArchRequirement < Requirement | 
					
						
							|  |  |  |   fatal true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def initialize(arch) | 
					
						
							| 
									
										
										
										
											2013-05-06 22:49:31 -05:00
										 |  |  |     @arch = arch.pop | 
					
						
							| 
									
										
										
										
											2013-04-01 11:53:13 -05:00
										 |  |  |     super | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-25 23:55:45 -04:00
										 |  |  |   satisfy(:build_env => false) do | 
					
						
							| 
									
										
										
										
											2013-04-01 11:53:13 -05:00
										 |  |  |     case @arch | 
					
						
							|  |  |  |     when :x86_64 then MacOS.prefer_64_bit? | 
					
						
							| 
									
										
										
										
											2013-08-01 19:57:05 -07:00
										 |  |  |     when :intel, :ppc then Hardware::CPU.type == @arch | 
					
						
							| 
									
										
										
										
											2013-04-01 11:53:13 -05:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-02 15:33:35 -05:00
										 |  |  |   def message | 
					
						
							|  |  |  |     "This formula requires an #{@arch} architecture." | 
					
						
							| 
									
										
										
										
											2013-04-01 11:53:13 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | end | 
					
						
							| 
									
										
										
										
											2013-04-17 10:01:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | class MercurialRequirement < Requirement | 
					
						
							| 
									
										
										
										
											2013-04-17 10:01:38 -07:00
										 |  |  |   fatal true | 
					
						
							| 
									
										
										
										
											2013-05-10 13:35:38 +01:00
										 |  |  |   default_formula 'mercurial' | 
					
						
							| 
									
										
										
										
											2013-04-17 10:01:38 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   satisfy { which('hg') } | 
					
						
							|  |  |  | end | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-15 09:56:04 +01:00
										 |  |  | class GitRequirement < Requirement | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  |   fatal true | 
					
						
							|  |  |  |   default_formula 'git' | 
					
						
							| 
									
										
										
										
											2014-03-13 18:07:11 -05:00
										 |  |  |   satisfy { !!which('git') } | 
					
						
							| 
									
										
										
										
											2013-09-28 16:37:05 -05:00
										 |  |  | end | 
					
						
							| 
									
										
										
										
											2014-07-21 02:11:08 -07:00
										 |  |  | 
 |