From a149f5c5342676b0af0416088b34562be782cd06 Mon Sep 17 00:00:00 2001 From: Michael Cho Date: Thu, 28 May 2026 15:58:50 -0400 Subject: [PATCH] keg: fix any_skip_relocation cellar on Linux --- Library/Homebrew/extend/os/linux/keg_relocate.rb | 2 ++ Library/Homebrew/extend/os/mac/keg.rb | 13 +++---------- Library/Homebrew/keg.rb | 7 ++++++- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/extend/os/linux/keg_relocate.rb b/Library/Homebrew/extend/os/linux/keg_relocate.rb index 55f18e0d359c6..419cab80e1ce9 100644 --- a/Library/Homebrew/extend/os/linux/keg_relocate.rb +++ b/Library/Homebrew/extend/os/linux/keg_relocate.rb @@ -65,8 +65,10 @@ def change_rpath!(file, old_prefix, new_prefix, skip_protodesc_cold: false) old_interpreter.sub old_prefix, new_prefix end updated[:interpreter] = new_interpreter if old_interpreter != new_interpreter + return false if updated.empty? file.patch!(interpreter: updated[:interpreter], rpath: updated[:rpath]) + require_relocation! true end diff --git a/Library/Homebrew/extend/os/mac/keg.rb b/Library/Homebrew/extend/os/mac/keg.rb index 8bbdb28812390..e6ca4fdb1d6ae 100644 --- a/Library/Homebrew/extend/os/mac/keg.rb +++ b/Library/Homebrew/extend/os/mac/keg.rb @@ -39,18 +39,11 @@ def must_be_writable_directories end end - sig { params(path: ::Pathname).void } - def initialize(path) - super - - @require_relocation = T.let(false, T::Boolean) - end - sig { params(id: String, file: MachOShim).returns(T::Boolean) } def change_dylib_id(id, file) return false if file.dylib_id == id - @require_relocation = true + require_relocation! odebug "Changing dylib ID of #{file}\n from #{file.dylib_id}\n to #{id}" file.change_dylib_id(id, strict: false) true @@ -67,7 +60,7 @@ def change_dylib_id(id, file) def change_install_name(old, new, file) return false if old == new - @require_relocation = true + require_relocation! odebug "Changing install name in #{file}\n from #{old}\n to #{new}" file.change_install_name(old, new, strict: false) true @@ -84,7 +77,7 @@ def change_install_name(old, new, file) def change_rpath(old, new, file) return false if old == new - @require_relocation = true + require_relocation! odebug "Changing rpath in #{file}\n from #{old}\n to #{new}" file.change_rpath(old, new, strict: false) true diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 7690eeecb2710..8b189be7395fe 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -212,7 +212,7 @@ def initialize(path) @linked_keg_record = T.let(HOMEBREW_LINKED_KEGS/name, Pathname) @opt_record = T.let(HOMEBREW_PREFIX/"opt/#{name}", Pathname) @oldname_opt_records = T.let([], T::Array[Pathname]) - @require_relocation = false + @require_relocation = T.let(false, T::Boolean) end sig { returns(Pathname) } @@ -259,6 +259,11 @@ def empty_installation? sig { returns(T::Boolean) } def require_relocation? = @require_relocation + sig { void } + def require_relocation! + @require_relocation = true + end + sig { returns(T::Boolean) } def linked? linked_keg_record.symlink? &&