| 
									
										
										
										
											2018-05-12 11:47:12 -05:00
										 |  |  | require "tempfile" | 
					
						
							|  |  |  | require "utils/shell" | 
					
						
							|  |  |  | require "os/linux/diagnostic" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   module Diagnostic | 
					
						
							|  |  |  |     class Checks | 
					
						
							|  |  |  |       def check_tmpdir_sticky_bit | 
					
						
							|  |  |  |         message = generic_check_tmpdir_sticky_bit | 
					
						
							|  |  |  |         return if message.nil? | 
					
						
							| 
									
										
										
										
											2018-09-17 02:45:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-12 11:47:12 -05:00
										 |  |  |         message + <<~EOS | 
					
						
							|  |  |  |           If you don't have administrative privileges on this machine, | 
					
						
							|  |  |  |           create a directory and set the HOMEBREW_TEMP environment variable, | 
					
						
							|  |  |  |           for example: | 
					
						
							|  |  |  |             install -d -m 1755 ~/tmp
 | 
					
						
							|  |  |  |             #{Utils::Shell.set_variable_in_profile("HOMEBREW_TEMP", "~/tmp")} | 
					
						
							|  |  |  |         EOS | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-14 11:51:18 -07:00
										 |  |  |       def check_tmpdir_executable | 
					
						
							|  |  |  |         f = Tempfile.new(%w[homebrew_check_tmpdir_executable .sh], HOMEBREW_TEMP) | 
					
						
							|  |  |  |         f.write "#!/bin/sh\n" | 
					
						
							|  |  |  |         f.chmod 0700
 | 
					
						
							|  |  |  |         f.close | 
					
						
							|  |  |  |         return if system f.path | 
					
						
							| 
									
										
										
										
											2018-09-17 02:45:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-14 11:51:18 -07:00
										 |  |  |         <<~EOS.undent | 
					
						
							|  |  |  |           The directory #{HOMEBREW_TEMP} does not permit executing | 
					
						
							|  |  |  |           programs. It is likely mounted as "noexec". Please set HOMEBREW_TEMP | 
					
						
							|  |  |  |           in your #{shell_profile} to a different directory, for example: | 
					
						
							|  |  |  |             export HOMEBREW_TEMP=~/tmp
 | 
					
						
							|  |  |  |             echo 'export HOMEBREW_TEMP=~/tmp' >> #{shell_profile} | 
					
						
							|  |  |  |         EOS | 
					
						
							|  |  |  |       ensure | 
					
						
							|  |  |  |         f.unlink | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-12 11:47:12 -05:00
										 |  |  |       def check_xdg_data_dirs | 
					
						
							| 
									
										
										
										
											2018-09-14 17:02:19 +01:00
										 |  |  |         return if ENV["XDG_DATA_DIRS"].blank? | 
					
						
							| 
									
										
										
										
											2018-05-12 11:47:12 -05:00
										 |  |  |         return if ENV["XDG_DATA_DIRS"].split("/").include?(HOMEBREW_PREFIX/"share") | 
					
						
							| 
									
										
										
										
											2018-09-17 02:45:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-12 11:47:12 -05:00
										 |  |  |         <<~EOS | 
					
						
							|  |  |  |           Homebrew's share was not found in your XDG_DATA_DIRS but you have | 
					
						
							|  |  |  |           this variable set to include other locations. | 
					
						
							|  |  |  |           Some programs like `vapigen` may not work correctly. | 
					
						
							|  |  |  |           Consider adding Homebrew's share directory to XDG_DATA_DIRS like so: | 
					
						
							|  |  |  |             #{Utils::Shell.prepend_variable_in_profile("XDG_DATA_DIRS", HOMEBREW_PREFIX/"share")} | 
					
						
							|  |  |  |         EOS | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |