From 997ccb044d21fccb1a95ef4eefad0fa892289e02 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Sun, 18 Sep 2016 16:31:58 +0100 Subject: [PATCH] Relocate HOMEBREW_REPOSITORY when necessary. Now that the default from the installer, our CI and soon all users is `/usr/local/Homebrew` it's a lot easier to check if there's references to it (as we cannot look for `/usr/local` as it's a too commonly hardcoded path). --- Library/Homebrew/dev-cmd/bottle.rb | 8 ++++++-- Library/Homebrew/formula_installer.rb | 3 ++- Library/Homebrew/keg_relocate.rb | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index 1a7da8eb9c..0c13d50281 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -177,6 +177,7 @@ module Homebrew tar_path = Pathname.pwd/tar_filename prefix = HOMEBREW_PREFIX.to_s + repository = HOMEBREW_REPOSITORY.to_s cellar = HOMEBREW_CELLAR.to_s ohai "Bottling #{filename}..." @@ -193,7 +194,8 @@ module Homebrew keg.relocate_dynamic_linkage prefix, Keg::PREFIX_PLACEHOLDER, cellar, Keg::CELLAR_PLACEHOLDER keg.relocate_text_files prefix, Keg::PREFIX_PLACEHOLDER, - cellar, Keg::CELLAR_PLACEHOLDER + cellar, Keg::CELLAR_PLACEHOLDER, + repository, Keg::REPOSITORY_PLACEHOLDER end keg.delete_pyc_files! @@ -248,6 +250,7 @@ module Homebrew skip_relocation = true else relocatable = false if keg_contain?(prefix_check, keg, ignores) + relocatable = false if keg_contain?(repository, keg, ignores) relocatable = false if keg_contain?(cellar, keg, ignores) if prefix != prefix_check relocatable = false if keg_contain_absolute_symlink_starting_with?(prefix, keg) @@ -265,7 +268,8 @@ module Homebrew keg.relocate_dynamic_linkage Keg::PREFIX_PLACEHOLDER, prefix, Keg::CELLAR_PLACEHOLDER, cellar keg.relocate_text_files Keg::PREFIX_PLACEHOLDER, prefix, - Keg::CELLAR_PLACEHOLDER, cellar + Keg::CELLAR_PLACEHOLDER, cellar, + Keg::REPOSITORY_PLACEHOLDER, repository end end end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 18267ee787..f64b77026d 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -779,7 +779,8 @@ class FormulaInstaller Keg::CELLAR_PLACEHOLDER, HOMEBREW_CELLAR.to_s end keg.relocate_text_files Keg::PREFIX_PLACEHOLDER, HOMEBREW_PREFIX.to_s, - Keg::CELLAR_PLACEHOLDER, HOMEBREW_CELLAR.to_s + Keg::CELLAR_PLACEHOLDER, HOMEBREW_CELLAR.to_s, + Keg::REPOSITORY_PLACEHOLDER, HOMEBREW_REPOSITORY.to_s Pathname.glob("#{formula.bottle_prefix}/{etc,var}/**/*") do |path| path.extend(InstallRenamed) diff --git a/Library/Homebrew/keg_relocate.rb b/Library/Homebrew/keg_relocate.rb index 053c8b9de0..04f5899847 100644 --- a/Library/Homebrew/keg_relocate.rb +++ b/Library/Homebrew/keg_relocate.rb @@ -1,6 +1,7 @@ class Keg PREFIX_PLACEHOLDER = "@@HOMEBREW_PREFIX@@".freeze CELLAR_PLACEHOLDER = "@@HOMEBREW_CELLAR@@".freeze + REPOSITORY_PLACEHOLDER = "@@HOMEBREW_REPOSITORY@@".freeze def fix_dynamic_linkage symlink_files.each do |file| @@ -18,13 +19,15 @@ class Keg [] end - def relocate_text_files(old_prefix, new_prefix, old_cellar, new_cellar) + def relocate_text_files(old_prefix, new_prefix, old_cellar, new_cellar, + old_repository, new_repository) files = text_files | libtool_files files.group_by { |f| f.stat.ino }.each_value do |first, *rest| s = first.open("rb", &:read) changed = s.gsub!(old_cellar, new_cellar) changed = s.gsub!(old_prefix, new_prefix) || changed + changed = s.gsub!(old_repository, new_repository) || changed next unless changed