Merge pull request #3748 from MikeMcQuaid/pin-more-robust
Make pinning more robust
This commit is contained in:
commit
af8f8f11e3
@ -1,7 +1,6 @@
|
||||
#: * `pin` <formulae>:
|
||||
#: Pin the specified <formulae>, preventing them from being upgraded when
|
||||
#: issuing the `brew upgrade <formulae>` command (but can still be upgraded
|
||||
#: as dependencies for other formulae). See also `unpin`.
|
||||
#: issuing the `brew upgrade <formulae>` command. See also `unpin`.
|
||||
|
||||
require "formula"
|
||||
|
||||
|
@ -46,6 +46,16 @@ module Homebrew
|
||||
rm_pin rack
|
||||
else
|
||||
kegs.each do |keg|
|
||||
begin
|
||||
f = Formulary.from_rack(rack)
|
||||
if f.pinned?
|
||||
onoe "#{f.full_name} is pinned. You must unpin it to uninstall."
|
||||
next
|
||||
end
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
|
||||
keg.lock do
|
||||
puts "Uninstalling #{keg}... (#{keg.abv})"
|
||||
keg.unlink
|
||||
|
@ -50,11 +50,8 @@ module Homebrew
|
||||
exit 1 if outdated.empty?
|
||||
end
|
||||
|
||||
unless upgrade_pinned?
|
||||
pinned = outdated.select(&:pinned?)
|
||||
outdated -= pinned
|
||||
end
|
||||
|
||||
formulae_to_install = outdated.map(&:latest_formula)
|
||||
|
||||
if formulae_to_install.empty?
|
||||
@ -64,8 +61,8 @@ module Homebrew
|
||||
puts formulae_to_install.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", "
|
||||
end
|
||||
|
||||
unless upgrade_pinned? || pinned.empty?
|
||||
oh1 "Not upgrading #{Formatter.pluralize(pinned.length, "pinned package")}:"
|
||||
unless pinned.empty?
|
||||
onoe "Not upgrading #{Formatter.pluralize(pinned.length, "pinned package")}:"
|
||||
puts pinned.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", "
|
||||
end
|
||||
|
||||
@ -95,10 +92,6 @@ module Homebrew
|
||||
end
|
||||
end
|
||||
|
||||
def upgrade_pinned?
|
||||
!ARGV.named.empty?
|
||||
end
|
||||
|
||||
def upgrade_formula(f)
|
||||
if f.opt_prefix.directory?
|
||||
keg = Keg.new(f.opt_prefix.resolved_path)
|
||||
@ -143,13 +136,6 @@ module Homebrew
|
||||
|
||||
fi.install
|
||||
fi.finish
|
||||
|
||||
# If the formula was pinned, and we were force-upgrading it, unpin and
|
||||
# pin it again to get a symlink pointing to the correct keg.
|
||||
if f.pinned?
|
||||
f.unpin
|
||||
f.pin
|
||||
end
|
||||
rescue FormulaInstallationAlreadyAttemptedError
|
||||
# We already attempted to upgrade f as part of the dependency tree of
|
||||
# another formula. In that case, don't generate an error, just move on.
|
||||
|
@ -371,8 +371,7 @@ With `--verbose` or `-v`, many commands print extra debugging information. Note
|
||||
|
||||
* `pin` `formulae`:
|
||||
Pin the specified `formulae`, preventing them from being upgraded when
|
||||
issuing the `brew upgrade `formulae command (but can still be upgraded
|
||||
as dependencies for other formulae). See also `unpin`.
|
||||
issuing the `brew upgrade `formulae command. See also `unpin`.
|
||||
|
||||
* `postinstall` `formula`:
|
||||
Rerun the post-install steps for `formula`.
|
||||
|
@ -384,7 +384,7 @@ If \fB\-\-fetch\-HEAD\fR is passed, fetch the upstream repository to detect if t
|
||||
.
|
||||
.TP
|
||||
\fBpin\fR \fIformulae\fR
|
||||
Pin the specified \fIformulae\fR, preventing them from being upgraded when issuing the \fBbrew upgrade <formulae>\fR command (but can still be upgraded as dependencies for other formulae)\. See also \fBunpin\fR\.
|
||||
Pin the specified \fIformulae\fR, preventing them from being upgraded when issuing the \fBbrew upgrade <formulae>\fR command\. See also \fBunpin\fR\.
|
||||
.
|
||||
.TP
|
||||
\fBpostinstall\fR \fIformula\fR
|
||||
|
Loading…
x
Reference in New Issue
Block a user