From b578a47bb9fda8043d7bcff730dc5bf951df41c7 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 15 Mar 2013 00:28:18 +0000 Subject: [PATCH] brew-info: specify whether poured or built. - Store in the tab if a bottle was poured for the build. - Add an additional line of output to `brew info` outputting whether the formula was built from source or poured from a bottle. Closes Homebrew/homebrew#18430. Closes Homebrew/homebrew#18475. --- Library/Homebrew/cmd/info.rb | 7 +++++++ Library/Homebrew/formula.rb | 3 ++- Library/Homebrew/formula_installer.rb | 4 ++++ Library/Homebrew/tab.rb | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index 655cbdeea8..46857d1d7c 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -103,6 +103,13 @@ module Homebrew extend self print " *" if keg.linked? puts tab = Tab.for_keg keg + + # Intentionally print no message if this is nil because it's unknown. + case tab.poured_from_bottle + when true then puts "Poured from bottle" + when false then puts "Built from source" + end + unless tab.used_options.empty? puts " Installed with: #{tab.used_options*', '}" end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 490b517a6a..54da64fead 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -503,7 +503,8 @@ class Formula hsh["installed"] << { "version" => keg.basename.to_s, "used_options" => tab.used_options.map(&:flag), - "built_as_bottle" => tab.built_bottle + "built_as_bottle" => tab.built_bottle, + "poured_from_bottle" => tab.poured_from_bottle } end end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 2eadc8c639..f41eeffdb0 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -97,6 +97,10 @@ class FormulaInstaller if pour_bottle? pour @poured_bottle = true + tab = Tab.for_keg f.prefix + tab.poured_from_bottle = true + tab.tabfile.delete rescue nil + tab.write end rescue opoo "Bottle installation failed: building from source." diff --git a/Library/Homebrew/tab.rb b/Library/Homebrew/tab.rb index 15b0b59ea9..b4a85b64e4 100644 --- a/Library/Homebrew/tab.rb +++ b/Library/Homebrew/tab.rb @@ -21,6 +21,7 @@ class Tab < OpenStruct :unused_options => f.build.unused_options, :tabfile => f.prefix.join(FILENAME), :built_as_bottle => !!ARGV.build_bottle?, + :poured_from_bottle => false, :tapped_from => f.tap, :time => Time.now.to_i, # to_s would be better but Ruby has no from_s function :P :HEAD => sha @@ -53,6 +54,7 @@ class Tab < OpenStruct Tab.new :used_options => [], :unused_options => (f.build.as_flags rescue []), :built_as_bottle => false, + :poured_from_bottle => false, :tapped_from => "", :time => nil, :HEAD => nil @@ -93,6 +95,7 @@ class Tab < OpenStruct :used_options => used_options.to_a, :unused_options => unused_options.to_a, :built_as_bottle => built_as_bottle, + :poured_from_bottle => poured_from_bottle, :tapped_from => tapped_from, :time => time, :HEAD => send("HEAD")})