Merge pull request #18768 from Homebrew/revamp_installed_on_request

Revamp installed_on_request handling
This commit is contained in:
Mike McQuaid 2024-11-20 08:29:14 +00:00 committed by GitHub
commit d8242dafd1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 36 additions and 28 deletions

View File

@ -138,7 +138,6 @@ module Homebrew
Homebrew::Reinstall.reinstall_formula( Homebrew::Reinstall.reinstall_formula(
formula, formula,
flags: args.flags_only, flags: args.flags_only,
installed_on_request: args.named.present?,
force_bottle: args.force_bottle?, force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,
@ -156,7 +155,6 @@ module Homebrew
Upgrade.check_installed_dependents( Upgrade.check_installed_dependents(
formulae, formulae,
flags: args.flags_only, flags: args.flags_only,
installed_on_request: args.named.present?,
force_bottle: args.force_bottle?, force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,

View File

@ -220,7 +220,6 @@ module Homebrew
formulae_to_install, formulae_to_install,
flags: args.flags_only, flags: args.flags_only,
dry_run: args.dry_run?, dry_run: args.dry_run?,
installed_on_request: args.named.present?,
force_bottle: args.force_bottle?, force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,
@ -237,7 +236,6 @@ module Homebrew
formulae_to_install, formulae_to_install,
flags: args.flags_only, flags: args.flags_only,
dry_run: args.dry_run?, dry_run: args.dry_run?,
installed_on_request: args.named.present?,
force_bottle: args.force_bottle?, force_bottle: args.force_bottle?,
build_from_source_formulae: args.build_from_source_formulae, build_from_source_formulae: args.build_from_source_formulae,
interactive: args.interactive?, interactive: args.interactive?,

View File

@ -84,7 +84,7 @@ class FormulaInstaller
formula, formula,
link_keg: false, link_keg: false,
installed_as_dependency: false, installed_as_dependency: false,
installed_on_request: true, installed_on_request: false,
show_header: false, show_header: false,
build_bottle: false, build_bottle: false,
skip_post_install: false, skip_post_install: false,

View File

@ -259,6 +259,8 @@ module Homebrew
formula_installer = FormulaInstaller.new( formula_installer = FormulaInstaller.new(
formula, formula,
options: build_options.used_options, options: build_options.used_options,
installed_on_request: true,
installed_as_dependency: false,
build_bottle:, build_bottle:,
force_bottle:, force_bottle:,
bottle_arch:, bottle_arch:,

View File

@ -10,7 +10,6 @@ module Homebrew
def self.reinstall_formula( def self.reinstall_formula(
formula, formula,
flags:, flags:,
installed_on_request: false,
force_bottle: false, force_bottle: false,
build_from_source_formulae: [], build_from_source_formulae: [],
interactive: false, interactive: false,
@ -25,9 +24,16 @@ module Homebrew
if formula.opt_prefix.directory? if formula.opt_prefix.directory?
keg = Keg.new(formula.opt_prefix.resolved_path) keg = Keg.new(formula.opt_prefix.resolved_path)
tab = keg.tab tab = keg.tab
keg_had_linked_opt = true link_keg = keg.linked?
keg_was_linked = keg.linked? installed_as_dependency = tab.installed_as_dependency
installed_on_request = tab.installed_on_request
build_bottle = tab.built_bottle?
backup keg backup keg
else
link_keg = nil
installed_as_dependency = false
installed_on_request = true
build_bottle = false
end end
build_options = BuildOptions.new(Options.create(flags), formula.options) build_options = BuildOptions.new(Options.create(flags), formula.options)
@ -39,10 +45,10 @@ module Homebrew
formula, formula,
**{ **{
options:, options:,
link_keg: keg_had_linked_opt ? keg_was_linked : nil, link_keg:,
installed_as_dependency: tab&.installed_as_dependency, installed_as_dependency:,
installed_on_request: installed_on_request || tab&.installed_on_request, installed_on_request:,
build_bottle: tab&.built_bottle?, build_bottle:,
force_bottle:, force_bottle:,
build_from_source_formulae:, build_from_source_formulae:,
git:, git:,
@ -65,7 +71,7 @@ module Homebrew
rescue FormulaInstallationAlreadyAttemptedError rescue FormulaInstallationAlreadyAttemptedError
nil nil
rescue Exception # rubocop:disable Lint/RescueException rescue Exception # rubocop:disable Lint/RescueException
ignore_interrupts { restore_backup(keg, keg_was_linked, verbose:) } ignore_interrupts { restore_backup(keg, link_keg, verbose:) }
raise raise
else else
begin begin

View File

@ -202,7 +202,7 @@ RSpec.shared_context "integration test" do # rubocop:disable RSpec/ContextWordin
def install_test_formula(name, content = nil, build_bottle: false) def install_test_formula(name, content = nil, build_bottle: false)
setup_test_formula(name, content) setup_test_formula(name, content)
fi = FormulaInstaller.new(Formula[name], build_bottle:) fi = FormulaInstaller.new(Formula[name], build_bottle:, installed_on_request: true)
fi.prelude fi.prelude
fi.fetch fi.fetch
fi.install fi.install

View File

@ -15,7 +15,6 @@ module Homebrew
formulae_to_install, formulae_to_install,
flags:, flags:,
dry_run: false, dry_run: false,
installed_on_request: false,
force_bottle: false, force_bottle: false,
build_from_source_formulae: [], build_from_source_formulae: [],
dependents: false, dependents: false,
@ -55,7 +54,6 @@ module Homebrew
fi = create_formula_installer( fi = create_formula_installer(
formula, formula,
flags:, flags:,
installed_on_request:,
force_bottle:, force_bottle:,
build_from_source_formulae:, build_from_source_formulae:,
interactive:, interactive:,
@ -114,7 +112,6 @@ module Homebrew
private_class_method def self.create_formula_installer( private_class_method def self.create_formula_installer(
formula, formula,
flags:, flags:,
installed_on_request: false,
force_bottle: false, force_bottle: false,
build_from_source_formulae: [], build_from_source_formulae: [],
interactive: false, interactive: false,
@ -126,15 +123,23 @@ module Homebrew
quiet: false, quiet: false,
verbose: false verbose: false
) )
if formula.opt_prefix.directory? keg = if formula.optlinked?
keg = Keg.new(formula.opt_prefix.resolved_path) Keg.new(formula.opt_prefix.resolved_path)
keg_had_linked_opt = true else
keg_was_linked = keg.linked? formula.installed_kegs.find(&:optlinked?)
end end
if formula.opt_prefix.directory? if keg
keg = Keg.new(formula.opt_prefix.resolved_path)
tab = keg.tab tab = keg.tab
link_keg = keg.linked?
installed_as_dependency = tab.installed_as_dependency
installed_on_request = tab.installed_on_request
build_bottle = tab.built_bottle?
else
link_keg = nil
installed_as_dependency = false
installed_on_request = true
build_bottle = false
end end
build_options = BuildOptions.new(Options.create(flags), formula.options) build_options = BuildOptions.new(Options.create(flags), formula.options)
@ -146,10 +151,10 @@ module Homebrew
formula, formula,
**{ **{
options:, options:,
link_keg: keg_had_linked_opt ? keg_was_linked : nil, link_keg:,
installed_as_dependency: tab&.installed_as_dependency, installed_as_dependency:,
installed_on_request: installed_on_request || tab&.installed_on_request, installed_on_request:,
build_bottle: tab&.built_bottle?, build_bottle:,
force_bottle:, force_bottle:,
build_from_source_formulae:, build_from_source_formulae:,
interactive:, interactive:,
@ -338,7 +343,6 @@ module Homebrew
upgrade_formulae( upgrade_formulae(
upgradeable_dependents, upgradeable_dependents,
flags:, flags:,
installed_on_request:,
force_bottle:, force_bottle:,
build_from_source_formulae:, build_from_source_formulae:,
dependents: true, dependents: true,