| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-04 17:46:52 -08:00
										 |  |  | module OS | 
					
						
							|  |  |  |   module Linux | 
					
						
							| 
									
										
										
										
											2020-08-25 00:18:36 +02:00
										 |  |  |     # Helper functions for querying `glibc` information. | 
					
						
							|  |  |  |     # | 
					
						
							|  |  |  |     # @api private | 
					
						
							| 
									
										
										
										
											2017-12-04 17:46:52 -08:00
										 |  |  |     module Glibc | 
					
						
							|  |  |  |       module_function | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-29 17:43:47 -07:00
										 |  |  |       sig { returns(Version) } | 
					
						
							| 
									
										
										
										
											2017-12-04 17:46:52 -08:00
										 |  |  |       def system_version | 
					
						
							| 
									
										
										
										
											2021-04-02 10:58:01 -07:00
										 |  |  |         @system_version ||= begin | 
					
						
							|  |  |  |           version = Utils.popen_read("/usr/bin/ldd", "--version")[/ (\d+\.\d+)/, 1] | 
					
						
							|  |  |  |           if version | 
					
						
							|  |  |  |             Version.new version | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             Version::NULL | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2017-12-04 17:46:52 -08:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2019-01-01 15:49:12 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-29 17:43:47 -07:00
										 |  |  |       sig { returns(Version) } | 
					
						
							| 
									
										
										
										
											2021-04-01 22:16:33 -07:00
										 |  |  |       def version | 
					
						
							| 
									
										
										
										
											2021-04-02 10:53:47 -07:00
										 |  |  |         @version ||= begin | 
					
						
							| 
									
										
										
										
											2021-04-02 10:58:01 -07:00
										 |  |  |           version = Utils.popen_read(HOMEBREW_PREFIX/"opt/glibc/bin/ldd", "--version")[/ (\d+\.\d+)/, 1] | 
					
						
							| 
									
										
										
										
											2021-04-02 10:53:47 -07:00
										 |  |  |           if version | 
					
						
							|  |  |  |             Version.new version | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             system_version | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2021-04-02 10:58:01 -07:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2021-04-01 22:16:33 -07:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  |       sig { returns(Version) } | 
					
						
							| 
									
										
										
										
											2019-01-01 15:49:12 -08:00
										 |  |  |       def minimum_version | 
					
						
							| 
									
										
										
										
											2021-01-16 11:49:01 -08:00
										 |  |  |         Version.new(ENV.fetch("HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION")) | 
					
						
							| 
									
										
										
										
											2019-01-01 15:49:12 -08:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-29 17:43:47 -07:00
										 |  |  |       sig { returns(T::Boolean) } | 
					
						
							| 
									
										
										
										
											2019-01-01 15:49:12 -08:00
										 |  |  |       def below_minimum_version? | 
					
						
							|  |  |  |         system_version < minimum_version | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2022-08-25 11:04:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |       sig { returns(T::Boolean) } | 
					
						
							|  |  |  |       def below_ci_version? | 
					
						
							|  |  |  |         system_version < LINUX_GLIBC_CI_VERSION | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2017-12-04 17:46:52 -08:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |