From c9060c3242c465d1a8f557147c1feb068a0b35f3 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera Date: Wed, 13 Aug 2025 09:42:55 +0800 Subject: [PATCH] Improve test for bottling --- Library/Homebrew/extend/os/linux/keg_relocate.rb | 10 ++++------ Library/Homebrew/extend/os/mac/keg_relocate.rb | 2 +- Library/Homebrew/keg_relocate.rb | 4 ++-- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/extend/os/linux/keg_relocate.rb b/Library/Homebrew/extend/os/linux/keg_relocate.rb index a702d6be79..80d5d01774 100644 --- a/Library/Homebrew/extend/os/linux/keg_relocate.rb +++ b/Library/Homebrew/extend/os/linux/keg_relocate.rb @@ -4,7 +4,7 @@ require "compilers" class Keg - def relocate_dynamic_linkage(relocation) + def relocate_dynamic_linkage(relocation, skip_protodesc_cold: false) # Patching the dynamic linker of glibc breaks it. return if name.match? Version.formula_optionally_versioned_regex(:glibc) @@ -12,20 +12,18 @@ class Keg elf_files.each do |file| file.ensure_writable do - change_rpath!(file, old_prefix, new_prefix) + change_rpath!(file, old_prefix, new_prefix, skip_protodesc_cold:) end end end - def change_rpath!(file, old_prefix, new_prefix) + def change_rpath!(file, old_prefix, new_prefix, skip_protodesc_cold: false) return false if !file.elf? || !file.dynamic_elf? - bottling = old_prefix.to_s.start_with?(HOMEBREW_PREFIX.to_s) - bottling &&= !new_prefix.to_s.start_with?(HOMEBREW_PREFIX.to_s) # Skip relocation of files with `protodesc_cold` sections because patchelf.rb seems to break them, # but only when bottling (as we don't want to break existing bottles that require relocation). # https://github.com/Homebrew/homebrew-core/pull/232490#issuecomment-3161362452 - return false if bottling && file.section_names.include?("protodesc_cold") + return false if skip_protodesc_cold && file.section_names.include?("protodesc_cold") updated = {} old_rpath = file.rpath diff --git a/Library/Homebrew/extend/os/mac/keg_relocate.rb b/Library/Homebrew/extend/os/mac/keg_relocate.rb index 3c0a5d34ae..a2b444134f 100644 --- a/Library/Homebrew/extend/os/mac/keg_relocate.rb +++ b/Library/Homebrew/extend/os/mac/keg_relocate.rb @@ -20,7 +20,7 @@ module OS end end - def relocate_dynamic_linkage(relocation) + def relocate_dynamic_linkage(relocation, skip_protodesc_cold: false) mach_o_files.each do |file| file.ensure_writable do modified = T.let(false, T::Boolean) diff --git a/Library/Homebrew/keg_relocate.rb b/Library/Homebrew/keg_relocate.rb index c4e6621d8a..648297ef68 100644 --- a/Library/Homebrew/keg_relocate.rb +++ b/Library/Homebrew/keg_relocate.rb @@ -78,7 +78,7 @@ class Keg end end - def relocate_dynamic_linkage(_relocation) + def relocate_dynamic_linkage(_relocation, skip_protodesc_cold: false) [] end @@ -104,7 +104,7 @@ class Keg def replace_locations_with_placeholders relocation = prepare_relocation_to_placeholders.freeze - relocate_dynamic_linkage(relocation) + relocate_dynamic_linkage(relocation, skip_protodesc_cold: true) replace_text_in_files(relocation) end