[Title] Fixed log system to be separated from communication
authordonghee yang <donghee.yang@samsung.com>
Thu, 28 Mar 2013 01:24:03 +0000 (10:24 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Thu, 28 Mar 2013 01:24:03 +0000 (10:24 +0900)
21 files changed:
build-cli
src/build_server/BuildJob.rb
src/build_server/CommonJob.rb
src/build_server/GitBuildJob.rb
src/build_server/JobLog.rb
src/build_server/JobManager.rb
src/build_server/MultiBuildJob.rb
src/build_server/PackageSync.rb
src/build_server/RegisterPackageJob.rb
src/build_server/RemoteBuilder.rb
src/build_server/ReverseBuildChecker.rb
src/build_server/SocketJobRequestListener.rb
src/common/execute_with_log.rb
src/common/log.rb
src/pkg_server/packageServer.rb
src/pkg_server/packageServerLog.rb [deleted file]
test/build-server.basic1/build-cli-01.testcase
test/build-server.basic1/build-cli-12.testcase
test/build-server.basic1/build-cli-26.testcase
test/build-server.multi-svr1/01.testcase
test/build-server.multi-svr1/02.testcase

index 0289834b1c216e0eb64434269b6e5a1c3a5e68cf..6b11d1ebb457073e43c422334145d33b633ebbf9 100755 (executable)
--- a/build-cli
+++ b/build-cli
@@ -37,6 +37,7 @@ require "BuildClientOptionParser"
 require "BuildComm"
 require "FileTransferViaFTP"
 require "FileTransferViaDirect"
+require "JobLog"
 
 
 #option parsing
@@ -238,8 +239,20 @@ begin
                                                job_error = data[2]
                                                next
                                        end
+
                                        # print log 
-                                       puts line
+                                       category, level, contents = JobLog.parse_log(line)
+                                       if level < Log::LV_USER then next end
+
+                                       if category == "INFO" then
+                                               puts "Info: #{contents}"
+                                       elsif category == "WARN" then
+                                               puts "Warn: #{contents}"
+                                       elsif category == "ERROR" then
+                                               puts "Error: #{contents}"
+                                       else
+                                               next
+                                       end
                                end
 
                                if not result then
index 83168f496637804a22bc0691658ae2b1f1b16c3f..a92bc1e6bcb0acd92354f8264bdd87a0dbfaa19e 100644 (file)
@@ -36,7 +36,6 @@ require "PackageManifest.rb"
 require "Version.rb"
 require "Builder.rb"
 require "RemoteBuilder.rb"
-require "JobLog.rb"
 require "mail.rb"
 require "utils.rb"
 require "ReverseBuildChecker.rb"
@@ -402,18 +401,9 @@ class BuildJob < CommonJob
        end
 
 
-       def is_connected?
-               return @log.is_connected?
-       end
-
-
        # return the job is asyncronous job
        def is_asynchronous_job?
-               if not @log.has_second_out? then
-                       return true
-               else
-                       return false
-               end
+               return true
        end
 
 
index a3522711a7ed77c80b06f9adf55b1cce4f72a387..3b8f60b732f3f50055b231e27a41e0b81588c5b7 100644 (file)
@@ -31,6 +31,7 @@ require "time"
 $LOAD_PATH.unshift File.dirname(__FILE__)
 $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/common"
 require "utils.rb"
+require "JobLog.rb"
 
 class CommonJob
 
@@ -109,8 +110,8 @@ class CommonJob
 
        # create logger
        public
-       def create_logger( second_out, verbose = false )
-               @log = JobLog.new( self, second_out, verbose )
+       def create_logger( verbose = false )
+               @log = JobLog.new( self, verbose )
                return @log
        end
 
index 34e0dded94be442c583fb4605e1c43648f58a101..87fb076b1c141242b80d30d278f24f0d42898c36 100644 (file)
@@ -121,7 +121,7 @@ class GitBuildJob < BuildJob
 
                # create logger
                if @log.nil? then
-                       @log = JobLog.new(self, nil )
+                       @log = JobLog.new(self)
                end
 
                @log.info( "Initializing job...", Log::LV_USER)
index 2dade4432a0e80e450a75da6689845b6db29bc74..46780f3c76da8ccedf50c0e2f014c243a56dd68a 100644 (file)
@@ -34,7 +34,7 @@ require "BuildComm.rb"
 
 class JobLog < Log
 
-       def initialize(job, stream_out, verbose = false)
+       def initialize(job, verbose = false)
                log_level = (verbose) ?  Log::LV_NORMAL : Log::LV_USER
                if job.nil? then
                        super(nil)
@@ -45,69 +45,18 @@ class JobLog < Log
                        super("#{job.server.path}/jobs/#{job.id}/log",log_level)
                end
                @parent_job=job
-               @second_out = stream_out
        end
 
 
-       def set_second_out( out )
-               @second_out = out
-       end
-
+       def JobLog.parse_log(line)
+               line = line.sub(/^[a-zA-Z], \[.*\][ \t]*/,"")
+               linetok = line.split(" -- : ")
+               if linetok.count != 2 then return "INFO", 1, "" end
+               category = linetok[0]
+               line = linetok[1]
+               level = line[1..1].to_i
+               contents = line[4..-1]
 
-       def close
-               # close communication
-               if not @second_out.nil? then
-                       begin
-                               if  not @second_out.closed? then
-                                       BuildCommServer.send_end(@second_out)
-                               end
-                       rescue
-                       end
-                       BuildCommServer.disconnect(@second_out)
-               end
-
-               @second_out = nil
+               return category, level, contents
        end
-
-
-       def is_connected?
-               if @second_out.nil? or @second_out.closed? then
-                       return false
-               else
-                       return true
-               end
-       end
-
-
-       def has_second_out?
-               if @second_out.nil? then
-                       return false
-               else
-                       return true
-               end
-       end
-
-
-       protected
-
-       # overide
-       def output_extra(msg)
-               begin
-                       if not @second_out.nil? then
-                               BuildCommServer.send( @second_out, msg )
-                       end
-               rescue
-                       # close second_out
-                       @second_out.close
-                       @second_out = nil
-
-                       error "Connection closed by remote client"
-
-                       # cancel parent job
-                       if not @parent_job.nil? and @parent_job.event == "NONE" then
-                               @parent_job.event = "CANCEL"
-                       end
-               end
-       end
-
 end
index f8d890a57b010120158e8f55ac9146b6f7b91fe9..7349199d267de91047962f8328d450e4c9c1c9dd 100644 (file)
@@ -317,17 +317,6 @@ class JobManager
                        if job.status == "JUST_CREATED" then
                                initialize_job( job )
                        end
-
-                       # check the connection if job is not asynchronous job
-                       if ( job.status == "WAITING" or job.status == "REMOTE_WORKING" ) and #or job.status == "PENDING") and
-                               not job.is_asynchronous_job? and
-                               not job.is_connected? then
-
-                               job.status = "ERROR"
-                               save_job_status(job)
-                               dispose_job( job )
-                               @server.log.info "Job \"#{job.id}\" is disconnected by user. Removed!"
-                       end
                end
 
                # reverse build job ->  internal job -> normal job
index 1246de4f8755ebdcc134a2e93b8da43d337971b1..5678a5408ba86c7d75ec51596cadc6d0b0326568 100644 (file)
@@ -80,6 +80,12 @@ class MultiBuildJob < CommonJob
        end
 
 
+       def set_force_rebuild(value)
+               @sub_jobs.each do |sub|
+                       sub.set_force_rebuild(value)
+               end
+       end
+
        #
        def init
                @job_root = "#{@server.path}/jobs/#{@id}"
@@ -92,7 +98,7 @@ class MultiBuildJob < CommonJob
 
                # create logger
                if @log.nil? then
-                       @log = JobLog.new(self, nil )
+                       @log = JobLog.new(self)
                end
 
                @log.info( "Initializing job...", Log::LV_USER)
@@ -307,11 +313,6 @@ class MultiBuildJob < CommonJob
        end
 
 
-       def is_connected?
-               return true
-       end
-
-
        # return the job is asyncronous job
        def is_asynchronous_job?
                return false
index 06953497fb6f7673a7d1768b32bd9cf333a8d947..bec3b913907f6efcc638476044e6ffca90c25221 100644 (file)
@@ -112,7 +112,7 @@ class PackageSyncAction < Action
                                # add job
                                @server.jobmgr.commit_job(new_job)
                                # create logger, this step must be done after 'commit'
-                               new_job.create_logger( nil )
+                               new_job.create_logger()
                                @server.jobmgr.add_job( new_job )
                                registered_jobs.push new_job
                        end
index 53f91044e755e9141c9ade5283c95b12d886049d..741d5a3f72fd20de41916bf9b14aedbe09505806 100644 (file)
@@ -34,11 +34,11 @@ $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/plkg_server"
 require "client.rb"
 require "PackageManifest.rb"
 require "Version.rb"
-require "JobLog.rb"
 require "mail.rb"
 require "utils.rb"
 require "ReverseBuildChecker.rb"
 require "CommonJob.rb"
+require "JobLog.rb"
 
 class RegisterPackageJob < CommonJob
 
@@ -137,7 +137,7 @@ class RegisterPackageJob < CommonJob
 
                # create logger
                if @log.nil? then
-                       @log = JobLog.new(self, nil )
+                       @log = JobLog.new(self)
                end
 
                @log.info( "Initializing job...", Log::LV_USER)
@@ -338,11 +338,6 @@ class RegisterPackageJob < CommonJob
        end
 
 
-       def is_connected?
-               return true
-       end
-
-
        # return the job is asyncronous job
        def is_asynchronous_job?
                return false
index 56b4638fc15fd7064a6e9aa4aaafda73331322b6..38b45a10102d2efb7548bab58ad7e84dd704580e 100644 (file)
@@ -242,8 +242,16 @@ class RemoteBuilder
                        end
 
                        # write log first
-                       line = line.sub(/^[a-zA-Z], \[.*\][ \t]*/,"")
-                       @log.output( line.strip, Log::LV_USER)
+                       category, level, contents = JobLog.parse_log(line)
+                       if category == "INFO" then
+                               @log.info( contents, level )
+                       elsif category == "WARN" then
+                               @log.warn( contents, level )
+                       elsif category == "ERROR" then
+                               @log.error( contents, level )
+                       else
+                               next
+                       end
 
                        # gather result files if not reverse build
                        if not is_rev_build and line =~ /Creating package file \.\.\. (.*)/ then
index 5fe2ea251bc522832ea07942fcec2ff5d1fe4328..cc3d91db02ede929dff24c259c446e1e0b9eca7b 100644 (file)
@@ -32,7 +32,6 @@ $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/common"
 $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/pkg_server"
 require "utils.rb"
 require "client.rb"
-require "JobLog.rb"
 require "PackageManifest.rb"
 
 class ReverseBuildChecker
index ada11b81af7077a52d720fd57aa5bbff392b7a9d..4719f38e16848fc8662dfc0782db1b457b4cf930 100644 (file)
@@ -27,7 +27,6 @@ Contributors:
 =end
 
 $LOAD_PATH.unshift File.dirname(__FILE__)
-require "JobLog.rb"
 require "BuildComm.rb"
 require "BuildServerException.rb"
 
@@ -317,14 +316,15 @@ class SocketJobRequestListener
                @parent_server.jobmgr.commit_job(new_job)
 
                # create logger and disconnect client
-               new_job.create_logger( nil, false)
+               logger = new_job.create_logger(false)
                BuildCommServer.send(req, "=JOB_START,#{new_job.id}")
-               BuildCommServer.send(req,"Info: Added new job \"#{new_job.id}\" for #{new_job.os}!")
+               logger.info("Added new job \"#{new_job.id}\" for #{new_job.os}!", Log::LV_USER)
                if not @parent_server.job_log_url.empty? then
-                       BuildCommServer.send(req,"Info:  * Log URL : #{@parent_server.job_log_url}/#{new_job.id}/log")
+                       logger.info(" * Log URL : #{@parent_server.job_log_url}/#{new_job.id}/log", Log::LV_USER)
                end
 
                if async then
+                       BuildCommServer.send(req,"Info: Added new job \"#{new_job.id}\" for #{new_job.os}!")
                        BuildCommServer.send(req,"Info: Above job(s) will be processed asynchronously!")
                end
                BuildCommServer.send_end(req)
@@ -665,7 +665,10 @@ class SocketJobRequestListener
                @parent_server.jobmgr.commit_job(new_job)
 
                # set logger
-               new_job.create_logger( req ) 
+               new_job.create_logger() 
+
+               BuildCommServer.send_end(req)
+               BuildCommServer.disconnect(req)
 
                # add to job
                @parent_server.jobmgr.add_job( new_job )
@@ -718,7 +721,10 @@ class SocketJobRequestListener
                        check_distribution(dist_name, req)
 
                        new_job = @parent_server.jobmgr.create_new_register_job( file_path, dist_name )
-                       new_job.create_logger( req ) 
+                       new_job.create_logger() 
+
+                       BuildCommServer.send_end(req)
+                       BuildCommServer.disconnect(req)
 
                        # add
                        @parent_server.jobmgr.add_job( new_job )
@@ -780,7 +786,7 @@ class SocketJobRequestListener
                        @parent_server.jobmgr.commit_job(new_job)
 
                        # create logger and set
-                       logger = new_job.create_logger(req)
+                       logger = new_job.create_logger()
 
                        # notify that job has been received
                        logger.info( "Added new job \"#{new_job.id}\" for #{new_job.os}!", Log::LV_USER)
@@ -788,6 +794,9 @@ class SocketJobRequestListener
                                logger.info( " * Log URL : #{@parent_server.job_log_url}/#{new_job.id}/log", Log::LV_USER)
                        end
 
+                       BuildCommServer.send_end(req)
+                       BuildCommServer.disconnect(req)
+
                        # add
                        @parent_server.jobmgr.add_job( new_job )
                else
@@ -993,10 +1002,8 @@ class SocketJobRequestListener
                        elsif @parent_server.supported_os_list.include?(os) then
                                result.push os
                        else
-                               msgs = "#{os}\n\tSupported OS list.\n"
-                               @parent_server.supported_os_list.each do |os_name|
-                                       msgs += "\t * #{os_name}\n"
-                               end
+                               msgs = "#{os}... Use a name in (" +
+                                       @parent_server.supported_os_list.join("|") + ")"
                                raise BuildServerException.new("ERR003"),msgs
                        end
                end
index 58cb9825a6f90520d41225671aa855f6bd75cb8b..1f5bb793398812f47aaa604275167139c49e545a 100755 (executable)
@@ -48,7 +48,7 @@ cmd = Utils.generate_shell_command(cmd, nil)
 # execute and write log
 IO.popen("#{cmd} 2>&1") do  |io|
        io.each do  |line|
-               log.info line
+               log.info "{1} #{line}"
        end
 end
 
index 2933ac86c5d60b5f03d9f7819241b7d969a3b636..7592eab7600ec7415f1616a06fdaf48e1d74d4b5 100644 (file)
@@ -41,15 +41,14 @@ class Log
        def initialize(path, lv=LV_USER)
                @cnt = 0
                @path = path
+               @level = lv
+               @closed = false
                if @path.nil? then
                        @logger = Logger.new(STDOUT)
                else
                        @logger = Logger.new(path, "monthly")
                end
-               # if log level is bigger/equal to second out level
-               # , we will send the log to second-out
-               @second_out_level = lv
-               @second_out = nil
+
                # diable logger format
                @default_formatter = @logger.formatter
                @no_prefix_formatter = proc do |severity, datetime, progname, msg|
@@ -59,54 +58,42 @@ class Log
 
 
        def info(msg, lv=LV_NORMAL)
-               if @path.nil? and not @second_out.nil? then puts "Info: #{msg}"
-               else @logger.info msg end
-               if not @second_out.nil? and lv >= @second_out_level then
-                       output_extra "Info: " + msg
-               end
+               if @path.nil? then puts "Info: #{msg}" else @logger.info "{#{lv}} #{msg}" end
+               output_extra("Info: " + msg, lv)
                @cnt = @cnt + 1
        end
 
        def warn(msg, lv=LV_NORMAL)
-               if @path.nil? and not @second_out.nil? then puts "Warn: #{msg}"
-               else @logger.warn msg end
-               if not @second_out.nil? and lv >= @second_out_level then
-                       output_extra "Warn: " + msg
-               end
+               if @path.nil? then puts "Warn: #{msg}" else @logger.warn "{#{lv}} #{msg}" end
+               output_extra("Warn: " + msg, lv)
                @cnt = @cnt + 1
        end
 
 
        def error(msg, lv=LV_NORMAL)
-               if @path.nil? and not @second_out.nil? then puts "Error: #{msg}"
-               else @logger.error msg end
-               if not @second_out.nil? and lv >= @second_out_level then
-                       output_extra "Error: " + msg
-               end
+               if @path.nil? then puts "Error: #{msg}" else @logger.error "{#{lv}} #{msg}" end
+               output_extra("Error: " + msg, lv)
                @cnt = @cnt + 1
        end
 
 
        def output(msg, lv=LV_NORMAL)
-               if @path.nil? and not @second_out.nil? then puts msg
-               else @logger.info msg end
-               if not @second_out.nil? and lv >= @second_out_level then
-                       output_extra msg
-               end
+               if @path.nil? then puts msg else @logger.info "{#{lv}} #{msg}" end
+               output_extra(msg, lv)
                @cnt = @cnt + 1
        end
 
        def close
-               @second_out= nil
+               @closed = true
        end
 
-       def is_verbose
-               return @second_out_level.eql? Log::LV_NORMAL
-       end
 
+       def is_closed?
+               return @closed
+       end
 
        protected
-       def output_extra(msg)
+       def output_extra(msg, lv)
                #do nothing
        end
 end
@@ -132,15 +119,17 @@ class DummyLog
        end
 end
 
+
 class StandardOutLog < Log
 
        def initialize(path)
                super(path)
-               @second_out = $stdout
        end
 
        protected
-       def output_extra(msg)
-               @second_out.puts msg
+       def output_extra(msg, lv)
+               if lv >= @level then
+                       $stdout.puts msg
+               end
        end
 end
index 5c803b4d38d9be81f4f150a7f1fbfadeed86829f..28c3bca72a278823280a6825dae7bb9b1b3f57f4 100644 (file)
@@ -31,7 +31,6 @@ $LOAD_PATH.unshift File.dirname(__FILE__)
 $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/common"
 $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__))+"/build_server"
 require "BuildComm"
-require "packageServerLog"
 require "packageServerConfig"
 require "distribution"
 require "SocketRegisterListener"
@@ -39,6 +38,7 @@ require "client"
 require "utils"
 require "mail"
 require "DistSync"
+require "log"
 
 class PackageServer
        attr_accessor :id, :location, :log, :integrity
@@ -71,7 +71,7 @@ class PackageServer
                if not File.exist?( SERVER_ROOT )
                        FileUtils.mkdir_p( SERVER_ROOT )
                end
-               @log = PackageServerLog.new( @log_file_path )
+               @log = StandardOutLog.new( @log_file_path )
 
                server_information_initialize()
        end
@@ -549,7 +549,7 @@ class PackageServer
        end
 
        def self.list_id
-               @@log = PackageServerLog.new("#{SERVER_ROOT}/.log")
+               @@log = StandardOutLog.new("#{SERVER_ROOT}/.log")
 
                d = Dir.new( SERVER_ROOT )
                s = d.select {|f| not f.start_with?(".") }
@@ -570,7 +570,7 @@ class PackageServer
        end
 
        def self.list_dist( id )
-               @@log = PackageServerLog.new( "#{SERVER_ROOT}/.log" )
+               @@log = StandardOutLog.new( "#{SERVER_ROOT}/.log" )
 
                @@log.output( "=== ID [#{id}]'s distribution list ===", Log::LV_USER)
 
diff --git a/src/pkg_server/packageServerLog.rb b/src/pkg_server/packageServerLog.rb
deleted file mode 100644 (file)
index 1ca1068..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-=begin
-
- packageServerLog.rb
-
-Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
-
-Contact:
-Taejun Ha <taejun.ha@samsung.com>
-Jiil Hyoun <jiil.hyoun@samsung.com>
-Donghyuk Yang <donghyuk.yang@samsung.com>
-DongHee Yang <donghee.yang@samsung.com>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Contributors:
-- S-Core Co., Ltd
-=end
-
-$LOAD_PATH.unshift File.dirname(File.dirname(__FILE__)) + "/common"
-require "log"
-require "logger"
-
-class PackageServerLog < Log
-
-       def initialize(path)
-               super(path)
-               @second_out = $stdout
-       end
-
-       protected
-       def output_extra(msg)
-               @second_out.puts msg
-       end
-
-
-end
index 7602874a1f43f6a4c7db57e7a8b4cf8466209d0d..e839c73749d7546177fe47644d10590ae615c487 100644 (file)
@@ -18,13 +18,13 @@ cancel        Cancel a building project.
 register      Register the package to the build-server.
 
 Subcommand usage:
-build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]
+build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]
 build-cli query -d <server address>
 build-cli query-system -d <server address>
 build-cli query-project -d <server address>
 build-cli query-job -d <server address>
-build-cli query-log -d <server address> -j <job number>
-build-cli cancel -j <job number> -d <server address> [-w <password>]
+build-cli query-log -d <server address> -j <job number> [--output <output file path>]
+build-cli cancel -j <job number> -d <server address> [-w <password>] [-U user-email]
 build-cli register -P <package file> -d <server address>  [-t <ftp server url>] [-w <password>] [-D <distribution name>] [-U user-email]
 
 Options:
@@ -38,6 +38,7 @@ Options:
 -D, --dist <distribution name>   distribution name
 -t, --ftp <ftp server url>       ftp server url: ftp://dibsftp:dibsftp@127.0.0.1
 -U, --user <user email>          user email infomation
+--output <output_path>       output file path
 -V, --verbose                    verbose mode
 -h, --help                       display help
 -v, --version                    display version
index a0b9e6f6204de40a6f323a1275be3f6295c3978b..b523f2a655141e93cf565485bdf1051584949edb 100644 (file)
@@ -5,7 +5,4 @@ echo "wrong os name in build command"
 ../../build-cli build -N testa -d 127.0.0.1:2223 -o wrong_os_name
 #POST-EXEC
 #EXPECT
-Error: Unsupported OS name used!: wrong_os_name
-Supported OS list.
-* ubuntu-32
-* windows-32
+Error: Unsupported OS name used!: wrong_os_name... Use a name in (ubuntu-32|windows-32)
index eb0965cae1d4f6c8e698e1588b05f073cbb3f45f..5cca2ebfd1286c0fa7c61061c5ff56ca33d6e009 100644 (file)
@@ -6,9 +6,10 @@ cd git01;tar xf a_v4.tar.gz
 cd git01;tar xf b_v4.tar.gz
 cd git01;tar xf c_v4.tar.gz
 #EXEC
-../../build-svr fullbuild -n testserver3
+../../build-cli build -N testa,testb,testc,testa1,testd -o all --rebuild -d 127.0.0.1:2223 -w ,,1111,,
 #POST-EXEC
 #EXPECT
+Info: Added new job
 Info: Initializing job...
 Info: Invoking a thread for MULTI-BUILD Job
 Info: New Job
index 21843e1537c3ec3b0d0255d18b27546eb73e1d9a..7e1da68cf0acd7df58c4c16204e5aaf519132b61 100644 (file)
@@ -34,7 +34,6 @@ Info:  *
 Info: Job is completed!
 Info: Job is FINISHED successfully!
 Info: Updating the source info for project "UNNAMED
-Info: Receiving log file from remote server...
 Info: Receiving file from remote server : a_0.0.1_ubuntu-32.zip
 Info: Checking reverse build dependency ...
 Info: Uploading ...
index c9ddc66a86d48848271a7642cd8a7cd3b6f74dea..d8cf450b397d5f002b707c2d3a2c948835bc292a 100644 (file)
@@ -38,7 +38,6 @@ Info:  *
 Info: Job is completed!
 Info: Job is FINISHED successfully!
 Info: Updating the source info for project "UNNAMED
-Info: Receiving log file from remote server...
 Info: Receiving file from remote server : b_0.0.1_ubuntu-32.zip
 Info: Checking reverse build dependency ...
 Info: Uploading ...