 2b547583a3
			
		
	
	
		2b547583a3
		
	
	
	
	
		
			
			Only the top-level directories inside it. We don't want formulae writing random junk in e.g. `/usr/local` even in `postinstall`.
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| #:  * `postinstall` <formula>:
 | |
| #:    Rerun the post-install steps for <formula>.
 | |
| 
 | |
| require "sandbox"
 | |
| 
 | |
| module Homebrew
 | |
|   module_function
 | |
| 
 | |
|   def postinstall
 | |
|     ARGV.resolved_formulae.each { |f| run_post_install(f) if f.post_install_defined? }
 | |
|   end
 | |
| 
 | |
|   def run_post_install(formula)
 | |
|     args = %W[
 | |
|       nice #{RUBY_PATH}
 | |
|       -W0
 | |
|       -I #{HOMEBREW_LOAD_PATH}
 | |
|       --
 | |
|       #{HOMEBREW_LIBRARY_PATH}/postinstall.rb
 | |
|       #{formula.path}
 | |
|     ].concat(ARGV.options_only)
 | |
| 
 | |
|     if formula.head?
 | |
|       args << "--HEAD"
 | |
|     elsif formula.devel?
 | |
|       args << "--devel"
 | |
|     end
 | |
| 
 | |
|     Sandbox.print_sandbox_message if Sandbox.formula?(formula)
 | |
| 
 | |
|     Utils.safe_fork do
 | |
|       if Sandbox.formula?(formula)
 | |
|         sandbox = Sandbox.new
 | |
|         formula.logs.mkpath
 | |
|         sandbox.record_log(formula.logs/"postinstall.sandbox.log")
 | |
|         sandbox.allow_write_temp_and_cache
 | |
|         sandbox.allow_write_log(formula)
 | |
|         sandbox.allow_write_xcode
 | |
|         sandbox.deny_write_homebrew_repository
 | |
|         sandbox.allow_write_cellar(formula)
 | |
|         Keg::TOP_LEVEL_DIRECTORIES.each do |dir|
 | |
|           sandbox.allow_write_path "#{HOMEBREW_PREFIX}/#{dir}"
 | |
|         end
 | |
|         sandbox.exec(*args)
 | |
|       else
 | |
|         exec(*args)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |