Merge pull request #14437 from hyuraku/apply-extend/os-to-migrate_gcc_dependents_if_needed

apply extend/os to `migrate_gcc_dependents_if_needed`
This commit is contained in:
Mike McQuaid 2023-02-02 10:45:09 +00:00 committed by GitHub
commit 28e1135c92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 25 deletions

View File

@ -9,6 +9,7 @@ require "description_cache_store"
require "cli/parser"
require "settings"
require "linuxbrew-core-migration"
require "extend/os/cmd/update-report"
module Homebrew
extend T::Sig
@ -293,31 +294,7 @@ module Homebrew
end
def migrate_gcc_dependents_if_needed
# TODO: Refactor and move to extend/os
return if OS.mac? # rubocop:disable Homebrew/MoveToExtendOS
return if Settings.read("gcc-rpaths.fixed") == "true"
Formula.installed.each do |formula|
next unless formula.tap&.core_tap?
recursive_runtime_dependencies = Dependency.expand(
formula,
cache_key: "update-report",
) do |_, dependency|
Dependency.prune if dependency.build? || dependency.test?
end
next unless recursive_runtime_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
# do nothing
end
end

View File

@ -0,0 +1,4 @@
# typed: strict
# frozen_string_literal: true
require "extend/os/linux/cmd/update-report" if OS.linux?

View File

@ -0,0 +1,34 @@
# typed: false
# frozen_string_literal: true
module Homebrew
extend T::Sig
module_function
def migrate_gcc_dependents_if_needed
return if Settings.read("gcc-rpaths.fixed") == "true"
Formula.installed.each do |formula|
next unless formula.tap&.core_tap?
recursive_runtime_dependencies = Dependency.expand(
formula,
cache_key: "update-report",
) do |_, dependency|
Dependency.prune if dependency.build? || dependency.test?
end
next unless recursive_runtime_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