2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								require 'tab'
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 13:08:24 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								require 'macos'
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								require 'extend/ARGV'
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-03 11:43:41 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								def bottle_filename f, bottle_version=nil
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  name = f.name.downcase
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-05 21:09:24 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  version = f.stable.version
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  bottle_version ||= f.bottle.revision.to_i
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-17 12:51:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  "#{name}-#{version}#{bottle_native_suffix(bottle_version)}"
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								def install_bottle? f
							 | 
						
					
						
							
								
									
										
										
										
											2012-12-04 12:06:02 +00:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  return true if ARGV.include? '--install-bottle' and MacOS.bottles_supported?(true)
							 | 
						
					
						
							
								
									
										
										
										
											2012-12-01 15:38:05 +00:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  return true if f.downloader and defined? f.downloader.local_bottle_path \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    and f.downloader.local_bottle_path
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 11:49:26 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  not ARGV.build_from_source? \
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 13:08:24 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    and MacOS.bottles_supported? \
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 11:51:37 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    and ARGV.used_options(f).empty? \
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 11:49:26 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    and bottle_current?(f)
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 11:31:57 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								def built_as_bottle? f
							 | 
						
					
						
							
								
									
										
										
										
											2012-07-22 16:07:20 +01:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  f = Formula.factory f unless f.kind_of? Formula
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  return false unless f.installed?
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 11:31:57 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  tab = Tab.for_keg(f.installed_prefix)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  # Need to still use the old "built_bottle" until all bottles are updated.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  tab.built_as_bottle or tab.built_bottle
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								def bottle_current? f
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 13:08:24 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  f.bottle and f.bottle.url \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    and (not f.bottle.checksum.empty?) \
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    and (f.bottle.version == f.stable.version)
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-30 15:10:51 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								def bottle_file_outdated? f, file
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  filename = file.basename.to_s
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 13:39:53 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  return nil unless f and f.bottle and f.bottle.url \
							 | 
						
					
						
							
								
									
										
										
										
											2012-08-25 13:08:24 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    and (filename.match(bottle_regex) or filename.match(old_bottle_regex))
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-30 15:10:51 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  bottle_ext = filename.match(bottle_native_regex).captures.first rescue nil
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  bottle_ext ||= filename.match(old_bottle_regex).captures.first rescue nil
							 | 
						
					
						
							
								
									
										
										
										
											2012-07-04 23:15:45 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  bottle_url_ext = f.bottle.url.match(bottle_native_regex).captures.first rescue nil
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  bottle_url_ext ||= f.bottle.url.match(old_bottle_regex).captures.first rescue nil
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-30 15:10:51 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  bottle_ext && bottle_url_ext && bottle_ext != bottle_url_ext
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-03 11:43:41 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								def bottle_new_version f
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-04 15:43:29 +10:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  return 0 unless bottle_current? f
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-05 21:09:24 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  f.bottle.revision + 1
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-03 11:43:41 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-17 12:51:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								def bottle_native_suffix version=nil
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  ".#{MacOS.cat}#{bottle_suffix(version)}"
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-17 12:51:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								def bottle_suffix version=nil
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  version = version.to_i > 0 ? ".#{version}" : ""
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  ".bottle#{version}.tar.gz"
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								def bottle_native_regex
							 | 
						
					
						
							
								
									
										
										
										
											2012-04-30 14:42:18 +10:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  /(\.#{MacOS.cat}\.bottle\.(\d+\.)?tar\.gz)$/
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								def bottle_regex
							 | 
						
					
						
							
								
									
										
										
										
											2012-07-05 20:29:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  Pathname::BOTTLE_EXTNAME_RX
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-07 21:30:03 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								def old_bottle_regex
							 | 
						
					
						
							
								
									
										
										
										
											2012-07-05 20:29:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								  Pathname::OLD_BOTTLE_EXTNAME_RX
							 | 
						
					
						
							
								
									
										
										
										
											2012-03-18 20:37:10 +13:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								end
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								def bottle_base_url
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								  "https://downloads.sf.net/project/machomebrew/Bottles/"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								end
							 |