module Pwrake::MasterApplication
a mixin for managing Rake
application.
Public Instance Methods
current_flow()
click to toggle source
# File lib/pwrake/master/master_application.rb, line 16 def current_flow @role.current_flow end
invoke(t,*args)
click to toggle source
# File lib/pwrake/master/master_application.rb, line 86 def invoke(t,*args) if Thread.current == @master.thread @branch.invoke(t,args) else @master.invoke(t,args) end end
load_rakefile()
click to toggle source
Find the rakefile and then load it and any pending imports.
Calls superclass method
# File lib/pwrake/master/master_application.rb, line 58 def load_rakefile if subdirs = pwrake_options['SUBDIR'] subdirs.each do |x| begin Rake.application.current_flow[Fiber.current] = x super ensure Rake.application.current_flow[Fiber.current] = nil end end else super end end
pwrake_options()
click to toggle source
# File lib/pwrake/master/master_application.rb, line 8 def pwrake_options @role.option end
run()
click to toggle source
Run the Pwrake
application.
# File lib/pwrake/master/master_application.rb, line 21 def run standard_exception_handling do init("pwrake") # <- parse options here @role = @master = Master.new t = Pwrake.clock @master.setup_branches load_rakefile begin Log.debug "init: %.6f sec" % (Pwrake.clock-t) t = Pwrake.clock top_level Log.debug "main: %.6f sec" % (Pwrake.clock-t) t = Pwrake.clock @failed = @master.finish Log.debug "finish: %.6f sec" % (Pwrake.clock-t) rescue SystemExit => e @failed = true rescue Exception => e # Exit with error message m = Log.bt(e) if @master.thread m += "\nIn branch thread #{@master.thread}:\n " if bt = @master.thread.backtrace m += bt.join("\n ") end end Log.fatal m $stderr.puts m @master.kill_end("INT") @failed = true end Log.info "pwrake elapsed time: %.3f sec"%(Pwrake.clock-START_CLOCK) Kernel.exit(false) if @failed end end
standard_rake_options()
click to toggle source
Calls superclass method
# File lib/pwrake/master/master_application.rb, line 94 def standard_rake_options opts = super opts.each_with_index do |a,i| if a[0] == '--version' a[3] = lambda { |value| if defined? RAKEVERSION puts "rake, version #{RAKEVERSION}" elsif defined? Rake::VERSION puts "rake, version #{Rake::VERSION}" end puts "pwrake, version #{Pwrake::VERSION}" exit } end end opts.concat( [ ['-F', '--hostfile FILE', "[Pw] Read hostnames from FILE", lambda { |value| options.hostfile = value } ], ['-j', '--jobs [N]', "[Pw] Number of threads at localhost (default: # of processors)", lambda { |value| if value if /^[+-]?\d+$/ =~ value options.num_threads = value.to_i else raise ArgumentError,"Invalid argument for -j: #{value}" end else options.num_threads = 0 end } ], ['-L', '--log', '--log-dir [DIRECTORY]', "[Pw] Write log to DIRECTORY", lambda { |value| if value.kind_of? String options.log_dir = value else options.log_dir = "" end } ], ['--ssh-opt', '--ssh-option OPTION', "[Pw] Option passed to SSH", lambda { |value| options.ssh_option = value } ], ['--filesystem FILESYSTEM', "[Pw] Specify FILESYSTEM (nfs|gfarm2fs)", lambda { |value| options.filesystem = value } ], ['--gfarm', "[Pw] FILESYSTEM=gfarm2fs", lambda { |value| warn 'The --gfarm option may not work correctly. Execute pwrake under gfarm2fs.' options.filesystem = "gfarm2fs" } ], ['-A', '--disable-affinity', "[Pw] Turn OFF affinity (AFFINITY=off)", lambda { |value| options.disable_affinity = true } ], ['-S', '--disable-steal', "[Pw] Turn OFF task steal", lambda { |value| options.disable_steal = true } ], ['-d', '--debug', "[Pw] Output Debug messages", lambda { |value| options.debug = true } ], ['--pwrake-conf [FILE]', "[Pw] Pwrake configuation file in YAML", lambda {|value| options.pwrake_conf = value} ], ['--subdir "dir1 dir2 ..."', "[Pw] Join workflows in subdirectories", lambda { |value| options.subdir = value.split(/[\s,;:]+/) } ], ['--show-conf','--show-config', "[Pw] Show Pwrake configuration options", lambda {|value| options.show_conf = true } ], ['--report [LOGDIR]',"[Pw] Generate `report.html' (Report of workflow statistics) in LOGDIR and exit.", lambda {|value| options.report_dir = value || Dir.pwd } ], ['--report-image IMAGE_TYPE',"[Pw] Gnuplot output format (png,jpg,svg etc.) in report.html.", lambda {|value| options.report_image = value } ], ['--clear-gfarm2fs',"[Pw] Clear gfarm2fs mountpoints left after failure.", lambda { |value| require "pwrake/option/option_gfarm2fs" Option.new.clear_gfarm2fs exit } ], ]) opts end
task_queue()
click to toggle source
# File lib/pwrake/master/master_application.rb, line 12 def task_queue @role.task_queue end