From: hataejun Date: Thu, 7 Mar 2013 10:12:46 +0000 (+0900) Subject: [Title] add register command for pkg-cli X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=137d7fb02c7d42e5168641e13c70a576320c22dc;p=sdk%2Ftools%2Fsdk-build.git [Title] add register command for pkg-cli [Type] [Module] [Priority] [Jira#] [Redmine#] 7082 [Problem] [Cause] [Solution] [TestCase] Change-Id: I160b3a507f0e52606798366ec6b893fd054c3e2a --- diff --git a/build-svr b/build-svr index fc9a98f..12306e9 100755 --- a/build-svr +++ b/build-svr @@ -172,7 +172,7 @@ begin pkgsvr_url = option[:url] pkgsvr_addr = svr_result[0] pkgsvr_port = svr_result[1] - BuildServerController.add_distribution( option[:name], option[:dist], pkgsvr_url, pkgsvr_addr, pkgsvr_port ) + BuildServerController.add_distribution( option[:name], option[:dist], pkgsvr_url, pkgsvr_addr, pkgsvr_port, option[:passwd] ) when "remove-dist" BuildServerController.remove_distribution( option[:name], option[:dist] ) diff --git a/pkg-cli b/pkg-cli index 0a9717c..9917496 100755 --- a/pkg-cli +++ b/pkg-cli @@ -149,6 +149,9 @@ when "install-dep" then ret = ret.strip ret[-3..-1] = "" puts ret +when "register" then + client = Client.new( nil, nil, nil ) + client.register(option[:address], option[:dist], option[:pkg], option[:passwd]) else raise RuntimeError, "Input is incorrect : #{option[:cmd]}" end diff --git a/src/build_server/BuildJob.rb b/src/build_server/BuildJob.rb index 18a98cc..30a3892 100644 --- a/src/build_server/BuildJob.rb +++ b/src/build_server/BuildJob.rb @@ -64,10 +64,12 @@ class BuildJob < CommonJob @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port + @pkgsvr_password = @server.distmgr.get_distribution(project.dist_name).pkgsvr_password else @pkgsvr_url = "" @pkgsvr_ip = "" @pkgsvr_port = "" + @pkgsvr_password = "" end # this item will be initialized on pre-verify @@ -1035,7 +1037,7 @@ class BuildJob < CommonJob # upload u_client = Client.new( @pkgsvr_url, nil, @log ) - snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd) + snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password) if snapshot.nil? then @log.info( "Upload failed...", Log::LV_USER) diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index 041f7ce..e512fac 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -569,7 +569,10 @@ class BuildServer def load_migrate_list if @db_dsn =~ /^Mysql/i then - @db_migrate[2]=["ALTER TABLE jobs CHANGE COLUMN id id INTEGER AUTO_INCREMENT NOT NULL"] + @db_migrate[1]=["ALTER TABLE jobs CHANGE COLUMN id id INTEGER AUTO_INCREMENT NOT NULL", + "ALTER TABLE distributions ADD pkgsvr_password VARCHAR(64)"] + else + @db_migrate[1]=["ALTER TABLE distributions ADD pkgsvr_password VARCHAR(64)"] end end diff --git a/src/build_server/BuildServerController.rb b/src/build_server/BuildServerController.rb index eabded1..8a79443 100644 --- a/src/build_server/BuildServerController.rb +++ b/src/build_server/BuildServerController.rb @@ -337,13 +337,13 @@ class BuildServerController # add distribution - def self.add_distribution( id, dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port ) + def self.add_distribution( id, dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password ) # get server server = get_server(id) migrate_db(server) # add - if server.distmgr.add_distribution( dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port ) then + if server.distmgr.add_distribution( dist_name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password ) then puts "Distribution is added successfully!" return true else diff --git a/src/build_server/BuildServerOptionParser.rb b/src/build_server/BuildServerOptionParser.rb index 455a48b..53f252b 100644 --- a/src/build_server/BuildServerOptionParser.rb +++ b/src/build_server/BuildServerOptionParser.rb @@ -41,7 +41,7 @@ class BuildServerUsage REMOVE_SVR= "build-svr remove-svr -n -d " ADD_OS= "build-svr add-os -n -o " REMOVE_OS="build-svr remove-os -n -o " - ADD_DIST= "build-svr add-dist -n -D -u -d " + ADD_DIST= "build-svr add-dist -n -D -u -d -w " REMOVE_DIST="build-svr remove-dist -n -D " LOCK_DIST="build-svr lock-dist -n -D " UNLOCK_DIST="build-svr unlock-dist -n -D " @@ -118,6 +118,7 @@ def option_error_check( options ) if options[:name].nil? or options[:name].empty? or options[:dist].nil? or options[:dist].empty? or options[:url].nil? or options[:url].empty? or + options[:passwd].nil? or options[:passwd].empty? or options[:domain].nil? or options[:domain].empty? then raise ArgumentError, "Usage: " + BuildServerUsage::ADD_DIST end diff --git a/src/build_server/DistributionManager.rb b/src/build_server/DistributionManager.rb index 2550496..16083ba 100644 --- a/src/build_server/DistributionManager.rb +++ b/src/build_server/DistributionManager.rb @@ -36,14 +36,15 @@ require "RegisterPackageJob.rb" require "packageServer.rb" class PackageDistribution - attr_accessor :name, :pkgsvr_url, :pkgsvr_ip, :pkgsvr_port, :status, :description, :id + attr_accessor :name, :pkgsvr_url, :pkgsvr_ip, :pkgsvr_port, :pkgsvr_password, :status, :description, :id - def initialize( name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, status ) + def initialize( name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password, status ) @id = -1 @name = name @pkgsvr_url = pkgsvr_url @pkgsvr_ip = pkgsvr_ip @pkgsvr_port = pkgsvr_port + @pkgsvr_password = pkgsvr_password @status = status @description = "" end @@ -55,6 +56,7 @@ class PackageDistribution name VARCHAR(32) NOT NULL UNIQUE, pkgsvr_url VARCHAR(256), pkgsvr_addr VARCHAR(64), + pkgsvr_password VARCHAR(64), status VARCHAR(32) NOT NULL DEFAULT 'OPEN', description VARCHAR(256) ) #{post_fix}" end @@ -89,7 +91,7 @@ class PackageDistribution def self.load_row(row) pkgsvr_ip = row['pkgsvr_addr'].split(":")[0] pkgsvr_port = row['pkgsvr_addr'].split(":")[1].to_i - new_obj = new(row['name'], row['pkgsvr_url'], pkgsvr_ip, pkgsvr_port, row['status']) + new_obj = new(row['name'], row['pkgsvr_url'], pkgsvr_ip, pkgsvr_port, row['pkgsvr_password'], row['status']) new_obj.description = row['description'] new_obj.id = row['id'] @@ -101,9 +103,9 @@ class PackageDistribution dist_addr = @pkgsvr_ip + ":" + @pkgsvr_port.to_s row = db.select_one("SELECT * FROM distributions WHERE name='#{@name}'") if row.nil? then - db.do "INSERT INTO distributions(name, pkgsvr_url, pkgsvr_addr, status, description) VALUES ('#{@name}','#{@pkgsvr_url}','#{dist_addr}','#{@status}','#{@description}')" + db.do "INSERT INTO distributions(name, pkgsvr_url, pkgsvr_addr, pkgsvr_password, status, description) VALUES ('#{@name}','#{@pkgsvr_url}','#{dist_addr}','#{@pkgsvr_password}','#{@status}','#{@description}')" else - db.do "UPDATE distributions SET pkgsvr_url='#{@pkgsvr_url}', pkgsvr_addr='#{dist_addr}', status='#{@status}', description='#{@description}' WHERE name='#{@name}'" + db.do "UPDATE distributions SET pkgsvr_url='#{@pkgsvr_url}', pkgsvr_addr='#{dist_addr}', pkgsvr_password='#{@pkgsvr_password}', status='#{@status}', description='#{@description}' WHERE name='#{@name}'" end end @@ -152,14 +154,14 @@ class DistributionManager # add - def add_distribution(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port) + def add_distribution(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password) @server.get_db_connection() do |db| if not get_distribution_internal(name, db).nil? then @server.log.info "The distribution \"#{name}\" already exists on server" @server.log.error "Adding distribution failed!" return false end - new_dist = PackageDistribution.new(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, "OPEN") + new_dist = PackageDistribution.new(name, pkgsvr_url, pkgsvr_ip, pkgsvr_port, pkgsvr_password, "OPEN") new_dist.save(db) end @server.log.info "Added a new distribution \"#{name}\"" diff --git a/src/build_server/MultiBuildJob.rb b/src/build_server/MultiBuildJob.rb index 7eca967..f387cce 100644 --- a/src/build_server/MultiBuildJob.rb +++ b/src/build_server/MultiBuildJob.rb @@ -55,6 +55,7 @@ class MultiBuildJob < CommonJob @pkgsvr_url = nil @pkgsvr_ip = nil @pkgsvr_port = nil + @pkgsvr_password = nil end @@ -129,6 +130,7 @@ class MultiBuildJob < CommonJob @pkgsvr_url = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_url @pkgsvr_ip = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_ip @pkgsvr_port = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_port + @pkgsvr_password = @server.distmgr.get_distribution(first_project.dist_name).pkgsvr_password @pkgsvr_client = Client.new(@pkgsvr_url, @job_working_dir, @log) return true @@ -414,7 +416,7 @@ class MultiBuildJob < CommonJob # upload u_client = Client.new( @pkgsvr_url, nil, @log ) - snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd) + snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password) if snapshot.nil? then @log.info( "Upload failed...", Log::LV_USER) diff --git a/src/build_server/RegisterPackageJob.rb b/src/build_server/RegisterPackageJob.rb index 97efea1..73c5298 100644 --- a/src/build_server/RegisterPackageJob.rb +++ b/src/build_server/RegisterPackageJob.rb @@ -60,10 +60,12 @@ class RegisterPackageJob < CommonJob @pkgsvr_url = @server.distmgr.get_distribution(project.dist_name).pkgsvr_url @pkgsvr_ip = @server.distmgr.get_distribution(project.dist_name).pkgsvr_ip @pkgsvr_port = @server.distmgr.get_distribution(project.dist_name).pkgsvr_port + @pkgsvr_password = @server.distmgr.get_distribution(project.dist_name).pkgsvr_password else @pkgsvr_url = @server.distmgr.get_distribution(dist_name).pkgsvr_url @pkgsvr_ip = @server.distmgr.get_distribution(dist_name).pkgsvr_ip @pkgsvr_port = @server.distmgr.get_distribution(dist_name).pkgsvr_port + @pkgsvr_password = @server.distmgr.get_distribution(dist_name).pkgsvr_password end @local_path=local_path @@ -501,7 +503,7 @@ class RegisterPackageJob < CommonJob # upload u_client = Client.new( @pkgsvr_url, nil, @log ) - snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd) + snapshot = u_client.upload( @pkgsvr_ip, @pkgsvr_port, binpkg_path_list, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd, @pkgsvr_password) if snapshot.nil? then @log.info( "Upload failed...", Log::LV_USER) diff --git a/src/pkg_server/SocketRegisterListener.rb b/src/pkg_server/SocketRegisterListener.rb index 9982274..14ac7a3 100644 --- a/src/pkg_server/SocketRegisterListener.rb +++ b/src/pkg_server/SocketRegisterListener.rb @@ -163,19 +163,20 @@ class SocketRegisterListener BuildCommServer.send_begin(req) tok = line.split("|").map { |x| x.strip } - if tok.count < 3 then + if tok.count < 4 then @log.error "Received Wrong REQ : #{line}" BuildCommServer.send(req, "ERROR|Invalid REQ format") return end dist_name = tok[1].strip + password = tok[2].strip - if tok[2].start_with? "DOCK" then - dock_name = tok[3] - idx = 4 + if tok[3].start_with? "DOCK" then + dock_name = tok[4] + idx = 5 else dock_name = "" - idx = 2 + idx = 3 end file_path_list = [] @@ -188,6 +189,28 @@ class SocketRegisterListener end idx = idx + 1 end + # password check + if @parent_server.passwd.eql? password then + @log.info "Register command password check pass" + else + @log.error "Received register command, but passwd mismatched : [#{password}]" + BuildCommServer.send(req,"ERROR|Password mismatched!") + BuildCommServer.send_end(req) + BuildCommServer.disconnect(req) + return + end + + BuildCommServer.send(req, "WAITFORUPLOAD") + req_line = req.gets + if req_line.nil? or not req_line.strip.eql?("REGISTERCONTINUE") then + BuildCommServer.send(req,"ERROR|Invalid message received : [#{req_line}]") + BuildCommServer.send_end(req) + BuildCommServer.disconnect(req) + return + else + @log.info "register file is received successfully" + end + # register mutex $register_mutex.synchronize do begin @@ -230,7 +253,7 @@ class SocketRegisterListener @log.info "Package server stop flag set" BuildCommServer.send(req,"SUCC") else - @log.info "Received stop command, but passwd mismatched : #{passwd}" + @log.error "Received stop command, but passwd mismatched : #{passwd}" BuildCommServer.send(req,"ERROR|Password mismatched!") end BuildCommServer.send_end(req) diff --git a/src/pkg_server/client.rb b/src/pkg_server/client.rb index c30e0cc..fe53b2b 100644 --- a/src/pkg_server/client.rb +++ b/src/pkg_server/client.rb @@ -361,9 +361,30 @@ class Client return file_local_path end + private + def upload_request(ip, port, dock, transporter, binary_path_list) + binary_path_list.each do |bpath| + client2 = BuildCommClient.create(ip, port, @log) + begin + if client2.nil? then + raise RuntimeError, "Failed to create BuildCommClient instance.." + end + + @log.info "Send ready REQ.. [UPLOAD]" + result = client2.send("UPLOAD|#{dock}") + if not result then + raise RuntimeError, "Failed to send ready REQ.." + end + result = client2.send_file(bpath, transporter) + ensure + client2.terminate + end + end + end + public # upload package - def upload(ip, port, binary_path_list, ftp_addr=nil, ftp_port=nil, ftp_username=nil, ftp_passwd=nil) + def upload(ip, port, binary_path_list, ftp_addr=nil, ftp_port=nil, ftp_username=nil, ftp_passwd=nil, password="") # check ip and port if ip.nil? or port.nil? then @@ -377,88 +398,88 @@ class Client return nil end - # create unique dock number - dock = Utils.create_uniq_name() - - # upload file - binary_list = [] - binary_path_list.each do |bpath| - filename = File.basename(bpath) - client = BuildCommClient.create(ip, port, @log) - - if client.nil? then - @log.error "Failed to create BuildCommClient instance.." - return nil - end - - @log.info "Send ready REQ.. [UPLOAD]" - result = client.send("UPLOAD|#{dock}") - if not result then - @log.error "Failed to send ready REQ.." - return nil - end - - begin - if not ftp_addr.nil? then - transporter=FileTransferFTP.new(@log, ftp_addr, ftp_port, ftp_username, ftp_passwd) - else - transporter=FileTransferDirect.new(@log) - end - - result = client.send_file(bpath, transporter) - rescue => e - @log.error "FTP failed to put file (exception)" - @log.error "#{e.message}" - @log.error e.backtrace.inspect - return nil + begin + if not ftp_addr.nil? then + transporter=FileTransferFTP.new(@log, ftp_addr, ftp_port, ftp_username, ftp_passwd) + else + transporter=FileTransferDirect.new(@log) end - - if not result then - @log.error "FTP failed to put file (result is false)" + rescue => e + @log.error "FTP failed to put file (exception)" + @log.error "#{e.message}" + @log.error e.backtrace.inspect + return nil + end + + binary_list = [] + binary_path_list.each do |binary_path| + if File.exist? binary_path then + binary_list.push(File.basename(binary_path)) + else + @log.error "Binary file does not exist" return nil end + end - client.terminate - binary_list.push(filename) + client = BuildCommClient.create(ip, port, @log) + if client.nil? then + puts "Can't access server #{ip}:#{port}" + return nil end - # register file - if not binary_list.empty? then - client = BuildCommClient.create(ip, port, @log) + begin + # create unique dock number + dock = Utils.create_uniq_name() + dist = get_distribution if dist.empty? then @log.error "Distribution is empty.." return nil end - @log.info "Send register message.. [REGISTER|#{dist}|DOCK|#{dock}|#{binary_list.join("|")}]" + @log.info "Send register message.. [REGISTER|#{dist}|#{password}|DOCK|#{dock}|#{binary_list.join("|")}]" snapshot = nil - if client.send "REGISTER|#{dist}|DOCK|#{dock}|#{binary_list.join("|")}" then - result = client.read_lines do |l| - line = l.split("|") - if line[0].strip == "ERROR" then - @log.error l.strip - break - elsif line[0].strip == "SUCC" then - snapshot = line[1].strip - end - end - if not result or snapshot.nil? then - @log.error "Failed to register! #{client.get_error_msg()}" + client.send "REGISTER|#{dist}|#{password}|DOCK|#{dock}|#{binary_list.join("|")}" + + client.read_lines do |line| + if line.eql?("WAITFORUPLOAD") then + # upload + thread = Thread.new do + begin + upload_request(ip, port, dock, transporter, binary_path_list) + rescue => e + puts "Transfering file failed!" + puts e.message + end + end + + thread.join + client.send("REGISTERCONTINUE") + elsif line.start_with? "SUCC" then + snapshot = line.split("|")[1] + elsif line.start_with? "ERROR" then + @log.error line.strip return nil + else + @log.error "Unknown message received : #{l}" end end - + ensure client.terminate + end + + if not snapshot.nil? and not snapshot.empty? then snapshot = @server_addr + "/snapshots/" + snapshot @log.info "Registered successfully! [#{binary_path_list.join("|")}]" if snapshot.empty? then @log.error "Failed to generate snapshot" end + + return snapshot + else + return nil end - - return snapshot end private @@ -1770,4 +1791,31 @@ class Client if attr[0].strip.upcase.eql? "META" then return true else return false end end + + public + def register(address, distribution, pkg_file_path, password) + # check file exist + if not File.exist? pkg_file_path then + puts "The file does not exist!.. #{pkg_file_path}" + return false + end + + result = Utils.parse_server_addr(address) + if result.nil? then + puts "Server address is incorrect. (#{address})" + puts "Tune as following format." + puts " :" + exit 1 + end + bs_ip = result[0] + bs_port = result[1] + + pkg_file_path_list = [] + pkg_file_path_list.push(pkg_file_path) + # set distribution + @server_addr = distribution + ret = upload(bs_ip, bs_port, pkg_file_path_list, nil, nil, nil, nil, password) + + if ret then @log.info "Snapshot is generated : #{ret}" end + end end diff --git a/src/pkg_server/clientOptParser.rb b/src/pkg_server/clientOptParser.rb index fff8924..9ca926c 100644 --- a/src/pkg_server/clientOptParser.rb +++ b/src/pkg_server/clientOptParser.rb @@ -92,6 +92,12 @@ def option_error_check( options ) raise ArgumentError, "Usage: pkg-cli install-dep -P [-o ]" end + when "register" + if options[:pkg].nil? or options[:pkg].empty? or options[:address].nil? or options[:address].empty? or + options[:dist].nil? or options[:dist].empty? then + raise ArgumentError, "Usage: pkg-svr register -P -d --dist -w " + end + else raise ArgumentError, "Input is incorrect : #{options[:cmd]}" end @@ -131,6 +137,7 @@ def option_parse + "\t" + "pkg-cli list-lpkg [-l ]" + "\n" \ + "\t" + "pkg-cli build-dep -P [-o ]" + "\n" \ + "\t" + "pkg-cli install-dep -P [-o ]" + "\n" \ + + "\t" + "pkg-cli register -P -a -d -w " + "\n" \ + "\n" + "Options:" + "\n" optparse = OptionParser.new(nil, 32, ' '*8) do|opts| @@ -147,6 +154,10 @@ def option_parse options[:os] = os end + opts.on( '-d', '--dist ', 'distribution name' ) do |dist| + options[:dist] = dist + end + opts.on( '-u', '--url ', 'package server url: http://127.0.0.1/dibs/unstable' ) do |url| options[:url] = url end @@ -155,6 +166,14 @@ def option_parse options[:loc] = loc end + opts.on( '-w', '--passwd ', 'password' ) do |passwd| + options[:passwd] = passwd + end + + opts.on( '-a', '--address ', 'package server address : 127.0.0.1:2224' ) do |address| + options[:address] = address + end + opts.on( '--trace', 'enable trace dependent packages' ) do options[:t] = true end @@ -172,6 +191,7 @@ def option_parse puts "DIBS(Distributed Intelligent Build System) version " + Utils.get_version() exit end + end cmd = ARGV[0] @@ -183,6 +203,7 @@ def option_parse cmd.eql? "install-file" or cmd.eql? "clean" or cmd.eql? "upgrade" or cmd.eql? "check-upgrade" or cmd.eql? "build-dep" or cmd.eql? "install-dep" or + cmd.eql? "register" or cmd =~ /(-v)|(--version)/ or cmd =~ /(help)|(-h)|(--help)/ then diff --git a/test/build-server.basic1/buildsvr.init b/test/build-server.basic1/buildsvr.init index 72cf1fe..39fd9ab 100755 --- a/test/build-server.basic1/buildsvr.init +++ b/test/build-server.basic1/buildsvr.init @@ -24,7 +24,7 @@ mysql -u root -p --password=$DB_PASSWD -h localhost < a ${RUBY} ../../../build-svr migrate -n testserver3 --dsn Mysql:testserver3:localhost --dbuser root --dbpassword $DB_PASSWD rm -f a cd .. -${RUBY} ../../build-svr add-dist -n testserver3 -D BASE -u `pwd`/pkgsvr01/unstable -d 127.0.0.1:3333 +${RUBY} ../../build-svr add-dist -n testserver3 -D BASE -u `pwd`/pkgsvr01/unstable -d 127.0.0.1:3333 -w score ${RUBY} ../../build-svr add-svr -n testserver3 -d 127.0.0.1:2224 ${RUBY} ../../build-svr add-os -n testserver3 -o ubuntu-32 ${RUBY} ../../build-svr add-os -n testserver3 -o windows-32 diff --git a/test/build-server.basic1/pkgsvr.init b/test/build-server.basic1/pkgsvr.init index 6973d9e..280ee40 100755 --- a/test/build-server.basic1/pkgsvr.init +++ b/test/build-server.basic1/pkgsvr.init @@ -7,4 +7,4 @@ rm -rf `pwd`/pkgsvr01 ${RUBY} ../../pkg-svr create -n pkgsvr01 -d unstable ${RUBY} ../../pkg-svr add-os -n pkgsvr01 -d unstable -o ubuntu-32 ${RUBY} ../../pkg-svr add-os -n pkgsvr01 -d unstable -o windows-32 -${RUBY} ../../pkg-svr start -n pkgsvr01 -p 3333 +${RUBY} ../../pkg-svr start -n pkgsvr01 -p 3333 -w score