| 
									
										
										
										
											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? \ | 
					
						
							| 
									
										
										
										
											2013-01-27 19:22:56 +00:00
										 |  |  |     and f.pour_bottle? \ | 
					
						
							| 
									
										
										
										
											2013-01-23 00:26:20 -06:00
										 |  |  |     and f.build.used_options.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 \ | 
					
						
							| 
									
										
										
										
											2013-01-27 18:58:50 +00:00
										 |  |  |     and filename.match(bottle_regex) | 
					
						
							| 
									
										
										
										
											2012-04-30 15:10:51 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   bottle_ext = filename.match(bottle_native_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 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-18 20:37:10 +13:00
										 |  |  | def bottle_base_url | 
					
						
							|  |  |  |   "https://downloads.sf.net/project/machomebrew/Bottles/" | 
					
						
							|  |  |  | end |