From: donghyuk.yang Date: Mon, 3 Sep 2012 08:31:40 +0000 (+0900) Subject: [Title] Supported to check reverse build when remote building project X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a43ecec63968de96c8dff7c8454210378f23d3b1;p=sdk%2Ftools%2Fsdk-build.git [Title] Supported to check reverse build when remote building project [Type] [Module] [Priority] [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- diff --git a/build-cli b/build-cli index 24e874c..5b439fc 100755 --- a/build-cli +++ b/build-cli @@ -182,7 +182,7 @@ begin 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 diff --git a/src/build_server/BuildClientOptionParser.rb b/src/build_server/BuildClientOptionParser.rb index db7c4ab..0a80ea5 100644 --- a/src/build_server/BuildClientOptionParser.rb +++ b/src/build_server/BuildClientOptionParser.rb @@ -140,6 +140,11 @@ def option_parse 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' ) do|job| diff --git a/src/build_server/BuildJob.rb b/src/build_server/BuildJob.rb index 8051381..2082560 100644 --- a/src/build_server/BuildJob.rb +++ b/src/build_server/BuildJob.rb @@ -49,6 +49,7 @@ class BuildJob 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) @@ -98,6 +99,8 @@ class BuildJob @external_pkgs = [] @force_rebuild = false + + @no_reverse = false end @@ -149,6 +152,10 @@ class BuildJob @remote_server=server end + def set_no_reverse() + @no_reverse = true + end + def set_internal_job( dock_num ) @is_internal_job = true @@ -839,7 +846,7 @@ class BuildJob # 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 @@ -850,12 +857,15 @@ class BuildJob 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 diff --git a/src/build_server/RemoteBuilder.rb b/src/build_server/RemoteBuilder.rb index 951e72d..e3a594b 100644 --- a/src/build_server/RemoteBuilder.rb +++ b/src/build_server/RemoteBuilder.rb @@ -50,7 +50,7 @@ class RemoteBuilder # 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 @@ -69,7 +69,7 @@ class RemoteBuilder # 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 @@ -126,7 +126,7 @@ class RemoteBuilder # 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 ) @@ -139,13 +139,13 @@ class RemoteBuilder 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 diff --git a/src/build_server/SocketJobRequestListener.rb b/src/build_server/SocketJobRequestListener.rb index 4009c72..aaf4ca3 100644 --- a/src/build_server/SocketJobRequestListener.rb +++ b/src/build_server/SocketJobRequestListener.rb @@ -174,8 +174,8 @@ class SocketJobRequestListener 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(",") @@ -183,11 +183,12 @@ class SocketJobRequestListener 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 @@ -247,6 +248,8 @@ class SocketJobRequestListener 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 @@ -663,6 +666,7 @@ class SocketJobRequestListener # "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}"