Avoid expensive Pathname concatenation
This commit is contained in:
		
							parent
							
								
									841c8bedca
								
							
						
					
					
						commit
						49682e854d
					
				| @ -37,13 +37,13 @@ class CurlDownloadStrategy < AbstractDownloadStrategy | ||||
|     super | ||||
| 
 | ||||
|     if name.to_s.empty? || name == '__UNKNOWN__' | ||||
|       @tarball_path = HOMEBREW_CACHE + File.basename(@url) | ||||
|       @tarball_path = Pathname.new("#{HOMEBREW_CACHE}/#{File.basename(@url)}") | ||||
|     else | ||||
|       @tarball_path = HOMEBREW_CACHE + "#{name}-#{package.version}#{ext}" | ||||
|       @tarball_path = Pathname.new("#{HOMEBREW_CACHE}/#{name}-#{package.version}#{ext}") | ||||
|     end | ||||
| 
 | ||||
|     @mirrors = package.mirrors | ||||
|     @temporary_path = Pathname("#@tarball_path.incomplete") | ||||
|     @temporary_path = Pathname.new("#@tarball_path.incomplete") | ||||
|     @local_bottle_path = nil | ||||
|   end | ||||
| 
 | ||||
| @ -213,7 +213,7 @@ class SubversionDownloadStrategy < AbstractDownloadStrategy | ||||
|     if name.to_s.empty? || name == '__UNKNOWN__' | ||||
|       raise NotImplementedError, "strategy requires a name parameter" | ||||
|     else | ||||
|       @co = HOMEBREW_CACHE + "#{name}--svn" | ||||
|       @co = Pathname.new("#{HOMEBREW_CACHE}/#{name}--svn") | ||||
|     end | ||||
| 
 | ||||
|     @co += "-HEAD" if ARGV.build_head? | ||||
| @ -316,7 +316,7 @@ class GitDownloadStrategy < AbstractDownloadStrategy | ||||
|     if name.to_s.empty? || name == '__UNKNOWN__' | ||||
|       raise NotImplementedError, "strategy requires a name parameter" | ||||
|     else | ||||
|       @clone = HOMEBREW_CACHE + "#{name}--git" | ||||
|       @clone = Pathname.new("#{HOMEBREW_CACHE}/#{name}--git") | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | ||||
| @ -116,16 +116,16 @@ class Formula | ||||
|   end | ||||
| 
 | ||||
|   def linked_keg | ||||
|     HOMEBREW_REPOSITORY/'Library/LinkedKegs'/name | ||||
|     Pathname.new("#{HOMEBREW_LIBRARY}/LinkedKegs/#{name}") | ||||
|   end | ||||
| 
 | ||||
|   def installed_prefix | ||||
|     devel_prefix = unless devel.nil? | ||||
|       HOMEBREW_CELLAR/name/devel.version | ||||
|       Pathname.new("#{HOMEBREW_CELLAR}/#{name}/#{devel.version}") | ||||
|     end | ||||
| 
 | ||||
|     head_prefix = unless head.nil? | ||||
|       HOMEBREW_CELLAR/name/head.version | ||||
|       Pathname.new("#{HOMEBREW_CELLAR}/#{name}/#{head.version}") | ||||
|     end | ||||
| 
 | ||||
|     if active_spec == head || head and head_prefix.directory? | ||||
| @ -143,7 +143,7 @@ class Formula | ||||
|   end | ||||
| 
 | ||||
|   def prefix | ||||
|     HOMEBREW_CELLAR+name+version | ||||
|     Pathname.new("#{HOMEBREW_CELLAR}/#{name}/#{version}") | ||||
|   end | ||||
|   def rack; prefix.parent end | ||||
| 
 | ||||
| @ -185,7 +185,9 @@ class Formula | ||||
|   # Defined and active build-time options. | ||||
|   def build; self.class.build; end | ||||
| 
 | ||||
|   def opt_prefix; HOMEBREW_PREFIX/:opt/name end | ||||
|   def opt_prefix | ||||
|     Pathname.new("#{HOMEBREW_PREFIX}/opt/#{name}") | ||||
|   end | ||||
| 
 | ||||
|   def download_strategy | ||||
|     active_spec.download_strategy | ||||
| @ -350,13 +352,14 @@ class Formula | ||||
|   def self.canonical_name name | ||||
|     name = name.to_s if name.kind_of? Pathname | ||||
| 
 | ||||
|     formula_with_that_name = HOMEBREW_REPOSITORY+"Library/Formula/#{name}.rb" | ||||
|     possible_alias = HOMEBREW_REPOSITORY+"Library/Aliases/#{name}" | ||||
|     possible_cached_formula = HOMEBREW_CACHE_FORMULA+"#{name}.rb" | ||||
|     formula_with_that_name = Pathname.new("#{HOMEBREW_REPOSITORY}/Library/Formula/#{name}.rb") | ||||
|     possible_alias = Pathname.new("#{HOMEBREW_REPOSITORY}/Library/Aliases/#{name}") | ||||
|     possible_cached_formula = Pathname.new("#{HOMEBREW_CACHE_FORMULA}/#{name}.rb") | ||||
| 
 | ||||
|     if name.include? "/" | ||||
|       if name =~ %r{(.+)/(.+)/(.+)} | ||||
|         tapd = HOMEBREW_REPOSITORY/"Library/Taps"/"#$1-#$2".downcase | ||||
|         tap_name = "#$1-#$2".downcase | ||||
|         tapd = Pathname.new("#{HOMEBREW_REPOSITORY}/Library/Taps/#{tap_name}") | ||||
|         tapd.find_formula do |relative_pathname| | ||||
|           return "#{tapd}/#{relative_pathname}" if relative_pathname.stem.to_s == $3 | ||||
|         end if tapd.directory? | ||||
| @ -472,7 +475,7 @@ class Formula | ||||
|   end | ||||
| 
 | ||||
|   def self.path name | ||||
|     HOMEBREW_REPOSITORY+"Library/Formula/#{name.downcase}.rb" | ||||
|     Pathname.new("#{HOMEBREW_REPOSITORY}/Library/Formula/#{name.downcase}.rb") | ||||
|   end | ||||
| 
 | ||||
|   def deps;         self.class.dependencies.deps;         end | ||||
|  | ||||
| @ -33,15 +33,15 @@ module MacOS::Xcode extend self | ||||
|   def prefix | ||||
|     @prefix ||= begin | ||||
|       path = Pathname.new(folder) | ||||
|       if path.absolute? and (path/'usr/bin/make').executable? | ||||
|       if path.absolute? and File.executable? "#{path}/usr/bin/make" | ||||
|         path | ||||
|       elsif File.executable? '/Developer/usr/bin/make' | ||||
|         # we do this to support cowboys who insist on installing | ||||
|         # only a subset of Xcode | ||||
|         Pathname.new '/Developer' | ||||
|       elsif (V4_BUNDLE_PATH/'Contents/Developer/usr/bin/make').executable? | ||||
|         Pathname.new('/Developer') | ||||
|       elsif File.executable? "#{V4_BUNDLE_PATH}/Contents/Developer/usr/bin/make" | ||||
|         # fallback for broken Xcode 4.3 installs | ||||
|         V4_BUNDLE_PATH/'Contents/Developer' | ||||
|         Pathname.new("#{V4_BUNDLE_PATH}/Contents/Developer") | ||||
|       else | ||||
|         # Ask Spotlight where Xcode is. If the user didn't install the | ||||
|         # helper tools and installed Xcode in a non-conventional place, this | ||||
| @ -51,7 +51,7 @@ module MacOS::Xcode extend self | ||||
| 
 | ||||
|         unless path.nil? | ||||
|           path += "Contents/Developer" | ||||
|           path if (path/'usr/bin/make').executable? | ||||
|           path if File.executable? "#{path}/usr/bin/make" | ||||
|         end | ||||
|       end | ||||
|     end | ||||
| @ -76,7 +76,7 @@ module MacOS::Xcode extend self | ||||
| 
 | ||||
|     # this shortcut makes version work for people who don't realise you | ||||
|     # need to install the CLI tools | ||||
|     xcode43build = prefix/'usr/bin/xcodebuild' | ||||
|     xcode43build = Pathname.new("#{prefix}/usr/bin/xcodebuild") | ||||
|     if xcode43build.file? | ||||
|       `#{xcode43build} -version 2>/dev/null` =~ /Xcode (\d(\.\d)*)/ | ||||
|       return $1 if $1 | ||||
|  | ||||
| @ -70,27 +70,27 @@ module MacOS::X11 extend self | ||||
|   # Confusingly, executables (e.g. config scripts) are only found under | ||||
|   # /opt/X11/bin or /usr/X11/bin in all cases. | ||||
|   def bin | ||||
|     prefix/'bin' | ||||
|     Pathname.new("#{prefix}/bin") | ||||
|   end | ||||
| 
 | ||||
|   def include | ||||
|     @include ||= if use_sdk? | ||||
|       MacOS.sdk_path/'usr/X11/include' | ||||
|       Pathname.new("#{MacOS.sdk_path}/usr/X11/include") | ||||
|     else | ||||
|       prefix/'include' | ||||
|       Pathname.new("#{prefix}/include") | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def lib | ||||
|     @lib ||= if use_sdk? | ||||
|       MacOS.sdk_path/'usr/X11/lib' | ||||
|       Pathname.new("#{MacOS.sdk_path}/usr/X11/lib") | ||||
|     else | ||||
|       prefix/'lib' | ||||
|       Pathname.new("#{prefix}/lib") | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def share | ||||
|     prefix/'share' | ||||
|     Pathname.new("#{prefix}/share") | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jack Nagel
						Jack Nagel