From 6195d6592b7374e135440025c82ae19cf37f30af Mon Sep 17 00:00:00 2001 From: ilovezfs Date: Wed, 4 Jan 2017 10:23:15 -0800 Subject: formula: realpath prefix before computing abv versioned prefix is a directory, but unversioned is a symlink, so realpath it before computing abv --- Library/Homebrew/formula.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index eb85f804f..dcee0de85 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -553,7 +553,7 @@ class Formula # called from within the same formula's {#install} or {#post_install} methods. # Otherwise, return the full path to the formula's versioned cellar. def prefix(v = pkg_version) - prefix = rack/v + prefix = FormulaPrefixPathname.new(rack/v) if !@versioned_prefix && prefix.directory? && Keg.new(prefix).optlinked? opt_prefix else @@ -938,7 +938,7 @@ class Formula # formula, as the path is stable even when the software is updated. #
args << "--with-readline=#{Formula["readline"].opt_prefix}" if build.with? "readline"
def opt_prefix
- Pathname.new("#{HOMEBREW_PREFIX}/opt/#{name}")
+ FormulaPrefixPathname.new("#{HOMEBREW_PREFIX}/opt/#{name}")
end
def opt_bin
@@ -2423,4 +2423,10 @@ class Formula
@link_overwrite_paths ||= Set.new
end
end
+
+ class FormulaPrefixPathname < Pathname
+ def abv
+ Pathname.new(realpath).abv
+ end
+ end
end
--
cgit v1.2.3
From a68d38743abc2351a9468dcec70174fdfe38cf94 Mon Sep 17 00:00:00 2001
From: ilovezfs
Date: Wed, 4 Jan 2017 10:27:39 -0800
Subject: formula: make prefix_linked? use versioned prefix
otherwise whenever prefix is unversioned, prefix_Linked will be false
---
Library/Homebrew/formula.rb | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
(limited to 'Library')
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index dcee0de85..cad8a693f 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -574,7 +574,10 @@ class Formula
# Is formula's linked keg points to the prefix.
def prefix_linked?(v = pkg_version)
return false unless linked?
- linked_keg.resolved_path == prefix(v)
+ @versioned_prefix = true
+ result = linked_keg.resolved_path == prefix(v)
+ @versioned_prefix = false
+ result
end
# {PkgVersion} of the linked keg for the formula.
--
cgit v1.2.3
From 6c2b614a04e375eea81490e906fd80a975c76f65 Mon Sep 17 00:00:00 2001
From: Mike McQuaid
Date: Fri, 6 Jan 2017 08:50:20 +0000
Subject: pathname: make compute_disk_usage handle symlinks.
---
Library/Homebrew/extend/pathname.rb | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
(limited to 'Library')
diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb
index 976ea7dd8..cfb028704 100644
--- a/Library/Homebrew/extend/pathname.rb
+++ b/Library/Homebrew/extend/pathname.rb
@@ -26,11 +26,17 @@ module DiskUsageExtension
private
def compute_disk_usage
- if directory?
+ path = if symlink?
+ resolved_path
+ else
+ self
+ end
+
+ if path.directory?
scanned_files = Set.new
@file_count = 0
@disk_usage = 0
- find do |f|
+ path.find do |f|
if f.directory?
@disk_usage += f.lstat.size
else
@@ -47,7 +53,7 @@ module DiskUsageExtension
end
else
@file_count = 1
- @disk_usage = lstat.size
+ @disk_usage = path.lstat.size
end
end
end
--
cgit v1.2.3
From 1a4ff22447f73ddfda069453571bd91f8ebd367a Mon Sep 17 00:00:00 2001
From: Mike McQuaid
Date: Fri, 6 Jan 2017 08:50:35 +0000
Subject: formula: tweak versioned prefix approach.
---
Library/Homebrew/formula.rb | 40 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 21 deletions(-)
(limited to 'Library')
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index cad8a693f..85add1b43 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -198,7 +198,7 @@ class Formula
@build = active_spec.build
@pin = FormulaPin.new(self)
@follow_installed_alias = true
- @versioned_prefix = false
+ @prefix_returns_versioned_prefix = false
end
# @private
@@ -553,11 +553,12 @@ class Formula
# called from within the same formula's {#install} or {#post_install} methods.
# Otherwise, return the full path to the formula's versioned cellar.
def prefix(v = pkg_version)
- prefix = FormulaPrefixPathname.new(rack/v)
- if !@versioned_prefix && prefix.directory? && Keg.new(prefix).optlinked?
+ versioned_prefix = versioned_prefix(v)
+ if !@prefix_returns_versioned_prefix && v == pkg_version &&
+ versioned_prefix.directory? && Keg.new(versioned_prefix).optlinked?
opt_prefix
else
- prefix
+ versioned_prefix
end
end
@@ -574,10 +575,7 @@ class Formula
# Is formula's linked keg points to the prefix.
def prefix_linked?(v = pkg_version)
return false unless linked?
- @versioned_prefix = true
- result = linked_keg.resolved_path == prefix(v)
- @versioned_prefix = false
- result
+ linked_keg.resolved_path == versioned_prefix(v)
end
# {PkgVersion} of the linked keg for the formula.
@@ -941,7 +939,7 @@ class Formula
# formula, as the path is stable even when the software is updated.
# args << "--with-readline=#{Formula["readline"].opt_prefix}" if build.with? "readline"
def opt_prefix
- FormulaPrefixPathname.new("#{HOMEBREW_PREFIX}/opt/#{name}")
+ Pathname.new("#{HOMEBREW_PREFIX}/opt/#{name}")
end
def opt_bin
@@ -1005,7 +1003,7 @@ class Formula
# @private
def run_post_install
- @versioned_prefix = true
+ @prefix_returns_versioned_prefix = true
build = self.build
self.build = Tab.for_formula(self)
old_tmpdir = ENV["TMPDIR"]
@@ -1020,7 +1018,7 @@ class Formula
ENV["TMPDIR"] = old_tmpdir
ENV["TEMP"] = old_temp
ENV["TMP"] = old_tmp
- @versioned_prefix = false
+ @prefix_returns_versioned_prefix = false
end
# Tell the user about any caveats regarding this package.
@@ -1123,7 +1121,7 @@ class Formula
# where staging is a Mktemp staging context
# @private
def brew
- @versioned_prefix = true
+ @prefix_returns_versioned_prefix = true
stage do |staging|
staging.retain! if ARGV.keep_tmp?
prepare_patches
@@ -1138,7 +1136,7 @@ class Formula
end
end
ensure
- @versioned_prefix = false
+ @prefix_returns_versioned_prefix = false
end
# @private
@@ -1640,7 +1638,7 @@ class Formula
# @private
def run_test
- @versioned_prefix = true
+ @prefix_returns_versioned_prefix = true
old_home = ENV["HOME"]
old_curl_home = ENV["CURL_HOME"]
old_tmpdir = ENV["TMPDIR"]
@@ -1672,7 +1670,7 @@ class Formula
ENV["TEMP"] = old_temp
ENV["TMP"] = old_tmp
ENV["TERM"] = old_term
- @versioned_prefix = false
+ @prefix_returns_versioned_prefix = false
end
# @private
@@ -1857,6 +1855,12 @@ class Formula
private
+ # Returns the prefix for a given formula version number.
+ # @private
+ def versioned_prefix(v)
+ rack/v
+ end
+
def exec_cmd(cmd, args, out, logfn)
ENV["HOMEBREW_CC_LOG_PATH"] = logfn
@@ -2426,10 +2430,4 @@ class Formula
@link_overwrite_paths ||= Set.new
end
end
-
- class FormulaPrefixPathname < Pathname
- def abv
- Pathname.new(realpath).abv
- end
- end
end
--
cgit v1.2.3