aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/keg_fix_install_names.rb
diff options
context:
space:
mode:
authorJack Nagel2013-12-14 09:35:57 -0600
committerJack Nagel2013-12-14 09:35:57 -0600
commitcde2a8ee1c70731dc331cc5c5729c5d5b3cb3620 (patch)
tree89710e2e0ec4f48677b42252a08ab235b8cc5aea /Library/Homebrew/keg_fix_install_names.rb
parentfab1edb889ab0f2f86d9dcf1e67c7ce4390cd8ff (diff)
downloadhomebrew-cde2a8ee1c70731dc331cc5c5729c5d5b3cb3620.tar.bz2
keg: yield install names successively instead of all at once
Every caller of install_names_for loops over the yielded array. Now that we have separated the dylib id calculation and update, we can eliminate the need for a separate loop and yield each install name individually. Rename this method to "each_install_name_for" for clarity.
Diffstat (limited to 'Library/Homebrew/keg_fix_install_names.rb')
-rw-r--r--Library/Homebrew/keg_fix_install_names.rb30
1 files changed, 11 insertions, 19 deletions
diff --git a/Library/Homebrew/keg_fix_install_names.rb b/Library/Homebrew/keg_fix_install_names.rb
index e23c162e3..13d6dac45 100644
--- a/Library/Homebrew/keg_fix_install_names.rb
+++ b/Library/Homebrew/keg_fix_install_names.rb
@@ -7,13 +7,9 @@ class Keg
file.ensure_writable do
change_dylib_id(dylib_id_for(file, options), file) if file.dylib?
- install_names_for(file) do |bad_names|
- bad_names.each do |bad_name|
- new_name = fixed_name(file, bad_name)
- unless new_name == bad_name
- change_install_name(bad_name, new_name, file)
- end
- end
+ each_install_name_for(file) do |bad_name|
+ new_name = fixed_name(file, bad_name)
+ change_install_name(bad_name, new_name, file) unless new_name == bad_name
end
end
end
@@ -27,18 +23,14 @@ class Keg
change_dylib_id(id, file)
end
- install_names_for(file, relocate_reject_proc(old_cellar)) do |old_cellar_names|
- old_cellar_names.each do |old_cellar_name|
- new_cellar_name = old_cellar_name.sub(old_cellar, new_cellar)
- change_install_name(old_cellar_name, new_cellar_name, file)
- end
+ each_install_name_for(file, relocate_reject_proc(old_cellar)) do |old_cellar_name|
+ new_cellar_name = old_cellar_name.sub(old_cellar, new_cellar)
+ change_install_name(old_cellar_name, new_cellar_name, file)
end
- install_names_for(file, relocate_reject_proc(old_prefix)) do |old_prefix_names|
- old_prefix_names.each do |old_prefix_name|
- new_prefix_name = old_prefix_name.sub(old_prefix, new_prefix)
- change_install_name(old_prefix_name, new_prefix_name, file)
- end
+ each_install_name_for(file, relocate_reject_proc(old_prefix)) do |old_prefix_name|
+ new_prefix_name = old_prefix_name.sub(old_prefix, new_prefix)
+ change_install_name(old_prefix_name, new_prefix_name, file)
end
end
end
@@ -123,7 +115,7 @@ class Keg
Proc.new { |fn| not fn.start_with?(path) }
end
- def install_names_for file, reject_proc=default_reject_proc
+ def each_install_name_for file, reject_proc=default_reject_proc, &block
ENV['HOMEBREW_MACH_O_FILE'] = file.to_s # solves all shell escaping problems
install_names = `#{MacOS.locate("otool")} -L "$HOMEBREW_MACH_O_FILE"`.split "\n"
@@ -137,7 +129,7 @@ class Keg
install_names.reject!{ |fn| fn =~ /^@(loader_|executable_|r)path/ }
install_names.reject!{ |fn| reject_proc.call(fn) }
- yield install_names
+ install_names.each(&block)
end
def dylib_id_for file, options={}