From 4d4531c19d195d218830f305a1cb697eb8393f59 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Thu, 14 Nov 2024 15:00:33 +0000 Subject: [PATCH] Revamp installed_on_request handling - `reinstall` and `upgrade` no longer mark as installed on request, with or without names specified, but preserve the version from the tab instead - default `install_on_request` to `false` rather than `true` - only set installed in request in a tab if it's missing rather than false Co-authored-by: Michael Cho --- Library/Homebrew/cmd/reinstall.rb | 2 -- Library/Homebrew/cmd/upgrade.rb | 2 -- Library/Homebrew/formula_installer.rb | 2 +- Library/Homebrew/install.rb | 2 ++ Library/Homebrew/reinstall.rb | 22 ++++++++----- .../spec/shared_context/integration_test.rb | 2 +- Library/Homebrew/upgrade.rb | 32 +++++++++++-------- 7 files changed, 36 insertions(+), 28 deletions(-) diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index bacf33beaac90..6c660560076d3 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -138,7 +138,6 @@ def run Homebrew::Reinstall.reinstall_formula( formula, flags: args.flags_only, - installed_on_request: args.named.present?, force_bottle: args.force_bottle?, build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, @@ -156,7 +155,6 @@ def run Upgrade.check_installed_dependents( formulae, flags: args.flags_only, - installed_on_request: args.named.present?, force_bottle: args.force_bottle?, build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index cf17914f10d53..5511cd71e0d4d 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -220,7 +220,6 @@ def upgrade_outdated_formulae(formulae) formulae_to_install, flags: args.flags_only, dry_run: args.dry_run?, - installed_on_request: args.named.present?, force_bottle: args.force_bottle?, build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, @@ -237,7 +236,6 @@ def upgrade_outdated_formulae(formulae) formulae_to_install, flags: args.flags_only, dry_run: args.dry_run?, - installed_on_request: args.named.present?, force_bottle: args.force_bottle?, build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index c26e12b424013..e28e83d0bd94c 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -84,7 +84,7 @@ def initialize( formula, link_keg: false, installed_as_dependency: false, - installed_on_request: true, + installed_on_request: false, show_header: false, build_bottle: false, skip_post_install: false, diff --git a/Library/Homebrew/install.rb b/Library/Homebrew/install.rb index bf03c18c070fb..aea4eba02e88d 100644 --- a/Library/Homebrew/install.rb +++ b/Library/Homebrew/install.rb @@ -259,6 +259,8 @@ def install_formulae( formula_installer = FormulaInstaller.new( formula, options: build_options.used_options, + installed_on_request: true, + installed_as_dependency: false, build_bottle:, force_bottle:, bottle_arch:, diff --git a/Library/Homebrew/reinstall.rb b/Library/Homebrew/reinstall.rb index 6e5ba2613144e..25e27bcc141a8 100644 --- a/Library/Homebrew/reinstall.rb +++ b/Library/Homebrew/reinstall.rb @@ -10,7 +10,6 @@ module Reinstall def self.reinstall_formula( formula, flags:, - installed_on_request: false, force_bottle: false, build_from_source_formulae: [], interactive: false, @@ -25,9 +24,16 @@ def self.reinstall_formula( if formula.opt_prefix.directory? keg = Keg.new(formula.opt_prefix.resolved_path) tab = keg.tab - keg_had_linked_opt = true - keg_was_linked = keg.linked? + link_keg = keg.linked? + installed_as_dependency = tab.installed_as_dependency + installed_on_request = tab.installed_on_request + build_bottle = tab.built_bottle? backup keg + else + link_keg = nil + installed_as_dependency = false + installed_on_request = true + build_bottle = false end build_options = BuildOptions.new(Options.create(flags), formula.options) @@ -39,10 +45,10 @@ def self.reinstall_formula( formula, **{ options:, - link_keg: keg_had_linked_opt ? keg_was_linked : nil, - installed_as_dependency: tab&.installed_as_dependency, - installed_on_request: installed_on_request || tab&.installed_on_request, - build_bottle: tab&.built_bottle?, + link_keg:, + installed_as_dependency:, + installed_on_request:, + build_bottle:, force_bottle:, build_from_source_formulae:, git:, @@ -65,7 +71,7 @@ def self.reinstall_formula( rescue FormulaInstallationAlreadyAttemptedError nil rescue Exception # rubocop:disable Lint/RescueException - ignore_interrupts { restore_backup(keg, keg_was_linked, verbose:) } + ignore_interrupts { restore_backup(keg, link_keg, verbose:) } raise else begin diff --git a/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb b/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb index 21d23905f87af..9981aabadad59 100644 --- a/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb +++ b/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb @@ -202,7 +202,7 @@ class #{Formulary.class_s(name)} < Formula def install_test_formula(name, content = nil, build_bottle: false) 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.fetch fi.install diff --git a/Library/Homebrew/upgrade.rb b/Library/Homebrew/upgrade.rb index 8fa8df49adfaa..8a25927fcdfb7 100644 --- a/Library/Homebrew/upgrade.rb +++ b/Library/Homebrew/upgrade.rb @@ -15,7 +15,6 @@ def self.upgrade_formulae( formulae_to_install, flags:, dry_run: false, - installed_on_request: false, force_bottle: false, build_from_source_formulae: [], dependents: false, @@ -55,7 +54,6 @@ def self.upgrade_formulae( fi = create_formula_installer( formula, flags:, - installed_on_request:, force_bottle:, build_from_source_formulae:, interactive:, @@ -114,7 +112,6 @@ def self.upgrade_formulae( private_class_method def self.create_formula_installer( formula, flags:, - installed_on_request: false, force_bottle: false, build_from_source_formulae: [], interactive: false, @@ -126,15 +123,23 @@ def self.upgrade_formulae( quiet: false, verbose: false ) - if formula.opt_prefix.directory? - keg = Keg.new(formula.opt_prefix.resolved_path) - keg_had_linked_opt = true - keg_was_linked = keg.linked? + keg = if formula.optlinked? + Keg.new(formula.opt_prefix.resolved_path) + else + formula.installed_kegs.find(&:optlinked?) end - if formula.opt_prefix.directory? - keg = Keg.new(formula.opt_prefix.resolved_path) + if keg 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 build_options = BuildOptions.new(Options.create(flags), formula.options) @@ -146,10 +151,10 @@ def self.upgrade_formulae( formula, **{ options:, - link_keg: keg_had_linked_opt ? keg_was_linked : nil, - installed_as_dependency: tab&.installed_as_dependency, - installed_on_request: installed_on_request || tab&.installed_on_request, - build_bottle: tab&.built_bottle?, + link_keg:, + installed_as_dependency:, + installed_on_request:, + build_bottle:, force_bottle:, build_from_source_formulae:, interactive:, @@ -338,7 +343,6 @@ def self.check_installed_dependents( upgrade_formulae( upgradeable_dependents, flags:, - installed_on_request:, force_bottle:, build_from_source_formulae:, dependents: true,