59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "language/python"
 | |
| 
 | |
| class PythonDependency < Requirement
 | |
|   fatal true
 | |
|   default_formula "python"
 | |
| 
 | |
|   satisfy :build_env => false do
 | |
|     python = which_python
 | |
|     next unless python
 | |
|     version = python_short_version
 | |
|     next unless version
 | |
|     # Always use Python 2.7 for consistency on older versions of OSX.
 | |
|     version == Version.new("2.7")
 | |
|   end
 | |
| 
 | |
|   def pour_bottle?
 | |
|     build? || system_python?
 | |
|   end
 | |
| 
 | |
|   def modify_build_environment
 | |
|     if system_python?
 | |
|       if python_binary == "python"
 | |
|         version = python_short_version
 | |
|         ENV["PYTHONPATH"] = "#{HOMEBREW_PREFIX}/lib/python#{version}/site-packages"
 | |
|       end
 | |
|     elsif which_python
 | |
|       ENV.prepend_path "PATH", which_python.dirname
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def python_short_version
 | |
|     @short_version ||= Language::Python.major_minor_version which_python
 | |
|   end
 | |
| 
 | |
|   def which_python
 | |
|     python = which python_binary
 | |
|     return unless python
 | |
|     executable = `#{python} -c "import sys; print(sys.executable)"`.strip
 | |
|     return unless executable
 | |
|     Pathname.new executable
 | |
|   end
 | |
| 
 | |
|   def system_python; "/usr/bin/#{python_binary}" end
 | |
|   def system_python?; system_python == which_python.to_s end
 | |
|   def python_binary; "python" end
 | |
| 
 | |
|   # Deprecated
 | |
|   alias_method :to_s, :python_binary
 | |
| end
 | |
| 
 | |
| class Python3Dependency < PythonDependency
 | |
|   fatal true
 | |
|   default_formula "python3"
 | |
| 
 | |
|   satisfy(:build_env => false) { which_python }
 | |
| 
 | |
|   def python_binary; "python3" end
 | |
| end
 | 
