separate build and test logs
This commit is contained in:
commit
5d603c3e8f
@ -27,7 +27,7 @@ module Homebrew
|
||||
if Sandbox.formula?(formula)
|
||||
sandbox = Sandbox.new
|
||||
formula.logs.mkpath
|
||||
sandbox.record_log(formula.logs/"sandbox.postinstall.log")
|
||||
sandbox.record_log(formula.logs/"postinstall.sandbox.log")
|
||||
sandbox.allow_write_temp_and_cache
|
||||
sandbox.allow_write_log(formula)
|
||||
sandbox.allow_write_cellar(formula)
|
||||
|
||||
@ -63,7 +63,7 @@ module Homebrew
|
||||
if Sandbox.test?
|
||||
sandbox = Sandbox.new
|
||||
f.logs.mkpath
|
||||
sandbox.record_log(f.logs/"sandbox.test.log")
|
||||
sandbox.record_log(f.logs/"test.sandbox.log")
|
||||
sandbox.allow_write_temp_and_cache
|
||||
sandbox.allow_write_log(f)
|
||||
sandbox.allow_write_xcode
|
||||
|
||||
@ -130,6 +130,11 @@ class Formula
|
||||
# @private
|
||||
attr_accessor :local_bottle_path
|
||||
|
||||
# When performing a build, test, or other loggable action, indicates which
|
||||
# log file location to use.
|
||||
# @private
|
||||
attr_reader :active_log_type
|
||||
|
||||
# The {BuildOptions} for this {Formula}. Lists the arguments passed and any
|
||||
# {#options} in the {Formula}. Note that these may differ at different times
|
||||
# during the installation of a {Formula}. This is annoying but the result of
|
||||
@ -735,12 +740,30 @@ class Formula
|
||||
prefix+".bottle"
|
||||
end
|
||||
|
||||
# The directory where the formula's installation logs will be written.
|
||||
# The directory where the formula's installation or test logs will be written.
|
||||
# @private
|
||||
def logs
|
||||
HOMEBREW_LOGS+name
|
||||
end
|
||||
|
||||
# The prefix, if any, to use in filenames for logging current activity
|
||||
def active_log_prefix
|
||||
if active_log_type
|
||||
"#{active_log_type}."
|
||||
else
|
||||
""
|
||||
end
|
||||
end
|
||||
|
||||
# Runs a block with the given log type in effect for its duration
|
||||
def with_logging(log_type)
|
||||
old_log_type = @active_log_type
|
||||
@active_log_type = log_type
|
||||
yield
|
||||
ensure
|
||||
@active_log_type = old_log_type
|
||||
end
|
||||
|
||||
# This method can be overridden to provide a plist.
|
||||
# For more examples read Apple's handy manpage:
|
||||
# https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/plist.5.html
|
||||
@ -861,6 +884,17 @@ class Formula
|
||||
method(:post_install).owner == self.class
|
||||
end
|
||||
|
||||
# @private
|
||||
def run_post_install
|
||||
build = self.build
|
||||
self.build = Tab.for_formula(self)
|
||||
with_logging("post_install") do
|
||||
post_install
|
||||
end
|
||||
ensure
|
||||
self.build = build
|
||||
end
|
||||
|
||||
# Tell the user about any caveats regarding this package.
|
||||
# @return [String]
|
||||
# <pre>def caveats
|
||||
@ -1384,7 +1418,9 @@ class Formula
|
||||
ENV["HOME"] = @testpath
|
||||
setup_home @testpath
|
||||
begin
|
||||
with_logging("test") do
|
||||
test
|
||||
end
|
||||
rescue Exception
|
||||
staging.retain! if ARGV.debug?
|
||||
raise
|
||||
@ -1476,7 +1512,7 @@ class Formula
|
||||
|
||||
@exec_count ||= 0
|
||||
@exec_count += 1
|
||||
logfn = "#{logs}/%02d.%s" % [@exec_count, File.basename(cmd).split(" ").first]
|
||||
logfn = "#{logs}/#{active_log_prefix}%02d.%s" % [@exec_count, File.basename(cmd).split(" ").first]
|
||||
logs.mkpath
|
||||
|
||||
File.open(logfn, "w") do |log|
|
||||
|
||||
@ -597,7 +597,7 @@ class FormulaInstaller
|
||||
if Sandbox.formula?(formula)
|
||||
sandbox = Sandbox.new
|
||||
formula.logs.mkpath
|
||||
sandbox.record_log(formula.logs/"sandbox.build.log")
|
||||
sandbox.record_log(formula.logs/"build.sandbox.log")
|
||||
sandbox.allow_write_temp_and_cache
|
||||
sandbox.allow_write_log(formula)
|
||||
sandbox.allow_write_xcode
|
||||
|
||||
@ -13,7 +13,7 @@ begin
|
||||
|
||||
formula = ARGV.resolved_formulae.first
|
||||
formula.extend(Debrew::Formula) if ARGV.debug?
|
||||
formula.post_install
|
||||
formula.run_post_install
|
||||
rescue Exception => e
|
||||
Marshal.dump(e, error_pipe)
|
||||
error_pipe.close
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user