Skip to content
Snippets Groups Projects
Commit 0fee65bf authored by Robin Neatherway's avatar Robin Neatherway Committed by Xu Cheng
Browse files

link_overwrite if the owning keg no longer exists

parent 4c80bf43
No related branches found
No related tags found
No related merge requests found
......@@ -805,13 +805,24 @@ class Formula
def link_overwrite?(path)
# Don't overwrite files not created by Homebrew.
return false unless path.stat.uid == File.stat(HOMEBREW_BREW_FILE).uid
# Don't overwrite files belong to other keg.
# Don't overwrite files belong to other keg except when that
# keg's formula is deleted.
begin
Keg.for(path)
keg = Keg.for(path)
rescue NotAKegError, Errno::ENOENT
# file doesn't belong to any keg.
else
return false
tap = Tab.for_keg(keg).tap
return false if tap.nil? # this keg doesn't below to any core/tap formula, most likely coming from a DIY install.
begin
Formulary.factory(keg.name)
rescue FormulaUnavailableError
# formula for this keg is deleted, so defer to whitelist
rescue TapFormulaAmbiguityError, TapFormulaWithOldnameAmbiguityError
return false # this keg belongs to another formula
else
return false # this keg belongs to another formula
end
end
to_check = path.relative_path_from(HOMEBREW_PREFIX).to_s
self.class.link_overwrite_paths.any? do |p|
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment