end
client = BuildCommClient.create( result[0], result[1], nil, 0 )
if not client.nil? then
- client.send "BUILD|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}"
+ client.send "BUILD|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:noreverse]}"
client.print_stream
client.terminate
else
options[:async] = "NO"
opts.on( '--async', 'asynchronous job' ) do
options[:async] = "YES"
+ end
+
+ options[:noreverse] = "NO"
+ opts.on( '--noreverse', 'do not check reverse build' ) do
+ options[:noreverse] = "YES"
end
opts.on( '-j', '--job <job number>', 'job number' ) do|job|
attr_accessor :pkgsvr_client, :thread
attr_accessor :rev_fail_projects, :rev_success_jobs
attr_accessor :pending_ancestor, :cancel_state
+ attr_accessor :no_reverse
# initialize
def initialize (id, project, os, server)
@external_pkgs = []
@force_rebuild = false
+
+ @no_reverse = false
end
@remote_server=server
end
+ def set_no_reverse()
+ @no_reverse = true
+ end
+
def set_internal_job( dock_num )
@is_internal_job = true
# build
if @is_remote_job then
result = builder.build(@project.repository, @source_path, @os,
- @is_rev_build_check_job, @git_commit, local_pkgs)
+ @is_rev_build_check_job, @git_commit, @no_reverse, local_pkgs)
else
result = builder.build(@source_path, @os, use_clean, local_pkgs, false )
end
end
end
- # check reverse dependecy if not sub job
- if not @is_rev_build_check_job and not @is_internal_job and
- not ReverseBuildChecker.check( self, true ).empty? then
- @log.error( "Reverse-build-check failed!" )
- return false
- end
+ # check reverse dependecy if not sub jobs
+
+ if not @no_reverse then
+ if not @is_rev_build_check_job and not @is_internal_job and
+ not ReverseBuildChecker.check( self, true ).empty? then
+ @log.error( "Reverse-build-check failed!" )
+ return false
+ end
+ end
return true
end
# build
- def build( git_repos, source_path, os, is_rev_build, srcinfo, local_pkgs )
+ def build( git_repos, source_path, os, is_rev_build, srcinfo, no_reverse, local_pkgs )
@log.info( "Start to build on remote server...", Log::LV_USER )
# create unique dock number
# send build request
@log.info( "Sending build request to remote server...", Log::LV_USER )
result, result_files = send_build_request(git_repos, os,
- is_rev_build, srcinfo, local_pkgs, dock)
+ is_rev_build, srcinfo, no_reverse, local_pkgs, dock)
@log.info( "Receiving log file from remote server...", Log::LV_USER )
if not receive_file_from_remote( "#{source_path}/../remote_log", dock ) then
# send build request
protected
- def send_build_request(git_repos, os, is_rev_build, commit, local_pkgs, dock = "0")
+ def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock = "0")
result_files = []
client = BuildCommClient.create( @addr, @port, @log )
local_pkg_names = local_pkgs.map { |path| File.basename(path) }
# send
- # format: BUILD|GIT|repository|passwd|os|async|internal|rev-build|commit|pkgs|dock_num
- # value : BUILD|GIT|repository| |os|NO |YES |rev-build|commit|pkgs|dock_num
+ # format: BUILD|GIT|repository|passwd|os|async|no_reverse|internal|rev-build|commit|pkgs|dock_num
+ # value : BUILD|GIT|repository| |os|NO |no_reverse|YES |rev-build|commit|pkgs|dock_num
result = true
commit = commit.nil? ? "":commit
pkg_list = local_pkg_names.join(",")
rev = is_rev_build ? "YES":"NO"
- msg = "BUILD|GIT|#{git_repos}||#{os}|NO|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}"
+ msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}"
if client.send( msg ) then
result = client.read_lines do |l|
# write log first
raise "Invalid request format is used: #{line}"
end
- # Case1. BUILD|GIT|project_name|passwd|os_list|async
- # Case2. BUILD|GIT|git_repos||os|async|internal|rev_build|commit|pkgs|dock_num
+ # Case1. BUILD|GIT|project_name|passwd|os_list|async|no_reverse
+ # Case2. BUILD|GIT|git_repos||os|async|no_reverse|internal|rev_build|commit|pkgs|dock_num
# parse
project_name_list = tok[2].split(",")
passwd = passwd_list[0]
os_list = tok[4].split(",")
async = tok[5].eql? "YES"
- is_internal = tok[6].eql? "YES"
- rev_job = tok[7].eql? "YES"
- git_commit = (not tok[8].nil? and not tok[8].empty?) ? tok[8] : nil
- pkg_files = (not tok[9].nil? and not tok[9].empty?) ? tok[9].split(",") : []
- dock_num = (not tok[10].nil? and not tok[10].empty?) ? tok[10].strip : "0"
+ no_reverse = tok[6].eql? "YES"
+ is_internal = tok[7].eql? "YES"
+ rev_job = tok[8].eql? "YES"
+ git_commit = (not tok[9].nil? and not tok[9].empty?) ? tok[9] : nil
+ pkg_files = (not tok[10].nil? and not tok[10].empty?) ? tok[10].split(",") : []
+ dock_num = (not tok[11].nil? and not tok[11].empty?) ? tok[11].strip : "0"
# check supported os if not internal job
if not is_internal then
raise "No valid jobs!"
end
+ if no_reverse then new_job.set_no_reverse end
+
# create logger and set
logger = JobLog.new( new_job, req )
if not async then new_job.set_logger(logger) end
# "UPLOAD"
def handle_cmd_upload( line, req )
@log.info "Received File transfer REQ : #{line}"
+
tok = line.split("|").map { |x| x.strip }
if tok.count < 2 then
@log.info "Received Wrong REQ: #{line}"