diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index 89b8f50fca..a2dc75bf97 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -148,6 +148,8 @@ module Homebrew Homebrew.failed = true if ENV["HOMEBREW_UPDATE_FAILED"] return if Homebrew::EnvConfig.disable_load_formula? + migrate_gcc_dependents_if_needed + hub = ReporterHub.new updated_taps = [] @@ -289,6 +291,26 @@ module Homebrew #{e} EOS end + + def migrate_gcc_dependents_if_needed + return if OS.mac? + return if Settings.read("gcc-rpaths.fixed") == "true" + + Formula.installed.each do |formula| + next unless formula.tap&.core_tap? + next unless formula.recursive_dependencies.map(&:name).include? "gcc" + + keg = formula.installed_kegs.last + tab = Tab.for_keg(keg) + # Force reinstallation upon `brew upgrade` to fix the bottle RPATH. + tab.source["versions"]["version_scheme"] = -1 + tab.write + rescue TapFormulaUnavailableError + nil + end + + Settings.write "gcc-rpaths.fixed", true + end end class Reporter