From 879b3360d3c664750dd90571f898c349e21442fb Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Sun, 2 Apr 2017 17:02:56 +0100 Subject: [PATCH] Handle missing receipt on `brew install`. For example if this is for a really old keg, keg where a user has manually removed stuff or used `brew diy`. --- Library/Homebrew/cmd/install.rb | 6 ++++-- Library/Homebrew/tab.rb | 5 ++++- Library/Homebrew/test/tab_spec.rb | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index a32f2ef34e..1808c4d9cf 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -194,8 +194,10 @@ module Homebrew next unless f.opt_prefix.directory? keg = Keg.new(f.opt_prefix.resolved_path) tab = Tab.for_keg(keg) - tab.installed_on_request = true - tab.write + unless tab.installed_on_request + tab.installed_on_request = true + tab.write + end end perform_preinstall_checks diff --git a/Library/Homebrew/tab.rb b/Library/Homebrew/tab.rb index fd59539dfd..db4b1c5853 100644 --- a/Library/Homebrew/tab.rb +++ b/Library/Homebrew/tab.rb @@ -100,11 +100,14 @@ class Tab < OpenStruct def self.for_keg(keg) path = keg.join(FILENAME) - if path.exist? + tab = if path.exist? from_file(path) else empty end + + tab["tabfile"] = path + tab end # Returns a tab for the named formula's installation, diff --git a/Library/Homebrew/test/tab_spec.rb b/Library/Homebrew/test/tab_spec.rb index fec390c28c..1b0836c93f 100644 --- a/Library/Homebrew/test/tab_spec.rb +++ b/Library/Homebrew/test/tab_spec.rb @@ -258,7 +258,7 @@ describe Tab do it "can create a Tab for a non-existant Keg" do f.prefix.mkpath - expect(subject.tabfile).to be nil + expect(subject.tabfile).to eq(f_tab_path) end end