From 51ca60d6d5faf97f74774ee8366785a6a8d1e168 Mon Sep 17 00:00:00 2001 From: Jarek Wojciechowski Date: Mon, 29 Oct 2018 11:23:32 -0400 Subject: [PATCH] add formula cleanup to install and reinstall --- Library/Homebrew/cmd/install.rb | 4 ++++ Library/Homebrew/cmd/reinstall.rb | 4 ++++ Library/Homebrew/cmd/upgrade.rb | 2 +- Library/Homebrew/test/cmd/upgrade_spec.rb | 13 ------------- docs/Manpage.md | 5 ++--- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index d14eb80c6b..26ef6655e4 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -73,6 +73,9 @@ #: #: If `--git` (or `-g`) is passed, Homebrew will create a Git repository, useful for #: creating patches to the software. +#: +#: If `HOMEBREW_INSTALL_CLEANUP` is set then remove previously installed versions +#: of upgraded . require "missing_formula" require "formula_installer" @@ -254,6 +257,7 @@ module Homebrew formulae.each do |f| Migrator.migrate_if_needed(f) install_formula(f) + Cleanup.new.cleanup_formula(f) if ENV["HOMEBREW_INSTALL_CLEANUP"] end Homebrew.messages.display_messages rescue FormulaUnreadableError, FormulaClassUnavailableError, diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index 8f73846cb0..38adf73e0f 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -3,6 +3,9 @@ #: #: If `--display-times` is passed, install times for each formula are printed #: at the end of the run. +#: +#: If `HOMEBREW_INSTALL_CLEANUP` is set then remove previously installed versions +#: of upgraded . require "formula_installer" require "development_tools" @@ -24,6 +27,7 @@ module Homebrew end Migrator.migrate_if_needed(f) reinstall_formula(f) + Cleanup.new.cleanup_formula(f) if ENV["HOMEBREW_INSTALL_CLEANUP"] end Homebrew.messages.display_messages end diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index 71d702f642..a12ca439e9 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -3,7 +3,7 @@ #: #: Options for the `install` command are also valid here. #: -#: If `--cleanup` is specified, `HOMEBREW_INSTALL_CLEANUP` or `HOMEBREW_UPGRADE_CLEANUP` is set then remove +#: If `--cleanup` is specified or `HOMEBREW_INSTALL_CLEANUP` is set then remove #: previously installed version(s) of upgraded . #: #: If `--fetch-HEAD` is passed, fetch the upstream repository to detect if diff --git a/Library/Homebrew/test/cmd/upgrade_spec.rb b/Library/Homebrew/test/cmd/upgrade_spec.rb index 60ef9b25ca..83afb0cff1 100644 --- a/Library/Homebrew/test/cmd/upgrade_spec.rb +++ b/Library/Homebrew/test/cmd/upgrade_spec.rb @@ -17,17 +17,4 @@ describe "brew upgrade", :integration_test do expect(HOMEBREW_CELLAR/"testball/0.1").to be_a_directory expect(HOMEBREW_CELLAR/"testball/0.0.1").not_to exist end - - it "upgrades a Formula and cleans up old versions when `HOMEBREW_INSTALL_CLEANUP` is set" do - setup_test_formula "testball" - # allow(ENV).to receive(:[]).and_call_original - # allow(ENV).to receive(:[]).with("HOMEBREW_INSTALL_CLEANUP").and_return("1") - ENV["HOMEBREW_INSTALL_CLEANUP"] = "1" - (HOMEBREW_CELLAR/"testball/0.0.1/foo").mkpath - - expect { brew "upgrade" }.to be_a_success - - expect(HOMEBREW_CELLAR/"testball/0.1").to be_a_directory - expect(HOMEBREW_CELLAR/"testball/0.0.1").not_to exist - end end diff --git a/docs/Manpage.md b/docs/Manpage.md index 1d6ba4da8a..5031083f0f 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1243,11 +1243,10 @@ Note that environment variables must have a value set to be detected. For exampl This issue typically occurs when using FileVault or custom SSD configurations. - * `HOMEBREW_UPGRADE_CLEANUP`: - If set, `brew upgrade` always assumes `--cleanup` has been passed. - * `HOMEBREW_INSTALL_CLEANUP`: If set, `brew upgrade` always assumes `--cleanup` has been passed. + Additionally, `brew install` and `brew reinstall` will clean up associated + formulae. * `HOMEBREW_VERBOSE`: If set, Homebrew always assumes `--verbose` when running commands.