# check version
if @pkginfo.nil? or o.pkginfo.nil? or
- not (Version.new(@pkginfo.get_version()) == Version.new(o.pkginfo.get_version())) then
+ Version.new(@pkginfo.get_version()) != Version.new(o.pkginfo.get_version()) then
return false
end
db.do "CREATE TABLE IF NOT EXISTS project_os(prj_id INTEGER, os_name VARCHAR(32))"
db.do "CREATE TABLE IF NOT EXISTS users(user_id INTEGER PRIMARY KEY AUTOINCREMENT, email VARCHAR(256), password VARCHAR(256), password_salt VARCHAR(256), user_name VARCHAR(256), group_id VARCHAR(256))"
db.do "CREATE TABLE IF NOT EXISTS groups(group_id INTEGER PRIMARY KEY AUTOINCREMENT, group_name VARCHAR(256))"
- rescue DBI::DatabaseError => e
- puts "DB Creation failed!"
- puts e.errstr
- result = false
- ensure
- db.disconnect if db
+ rescue DBI::DatabaseError => e
+ puts "DB Creation failed!"
+ puts e.errstr
+ result = false
+ ensure
+ db.disconnect if db
+ end
+ return result
+ end
+
+
+ # save
+ def save_db()
+
+ result = true
+ # distribution
+ @distmgr.save_db()
+
+ sqlite_db_file = "DBI:SQLite3:#{BuildServer::CONFIG_ROOT}/#{@id}/server.db"
+ begin
+ # open DB
+ db = DBI.connect(sqlite_db_file)
+
+ # remote_build_servers
+ db.do "DELETE FROM remote_build_servers"
+ @friend_servers.each do |svr|
+ db.do "INSERT INTO remote_build_servers (svr_addr) VALUES('#{svr.ip}:#{svr.port}')"
+ end
+
+ # sync_pkg_servers
+ db.do "DELETE FROM sync_pkg_servers"
+ @remote_pkg_servers.each do |svr|
+ db.do "INSERT INTO sync_pkg_servers (pkgsvr_url,period,dist_name) VALUES('#{svr[0]}','#{@pkg_sync_period}','#{svr[1]}')"
end
- return result
+
+ # supported_os
+ db.do "DELETE FROM supported_os"
+ @supported_os_list.each do |os|
+ db.do "INSERT INTO supported_os VALUES('#{os}')"
end
+ rescue DBI::DatabaseError => e
+ puts "DB update failed!"
+ puts e.errstr
+ result = false
+ ensure
+ db.disconnect if db
+ end
+
+ return result
+ end
+
+
+ # load
+ def load_db()
+
+ result = true
+ # distribution
+ @distmgr.load_db()
+
+ sqlite_db_file = "DBI:SQLite3:#{BuildServer::CONFIG_ROOT}/#{@id}/server.db"
+ begin
+ # open DB
+ db = DBI.connect(sqlite_db_file)
+ #db.results_as_hash = true
+
+ # remote_build_servers
+ @friend_servers = []
+ sth = db.execute "SELECT * FROM remote_build_servers"
+ sth.fetch_hash do |row|
+ add_remote_server(
+ row['svr_addr'].split(":")[0],
+ row['svr_addr'].split(":")[1].to_i)
+ end
+ sth.finish
+ # sync_package_servers
+ @remote_pkg_servers = []
+ sth = db.execute "SELECT * FROM sync_pkg_servers"
+ sth.fetch_hash do |row|
+ add_sync_package_server( row['pkgsvr_url'], row['dist_name'] )
+ @pkg_sync_period = row['period'].to_i
+ end
+ sth.finish
+
+ # supported_os
+ @supported_os_list = []
+ sth = db.execute "SELECT * FROM supported_os"
+ sth.fetch_hash do |row|
+ add_target_os( row['name'] )
+ end
+ sth.finish
+ rescue DBI::DatabaseError => e
+ puts "DB loading failed!"
+ puts e.errstr
+ result = false
+ ensure
+ sth.finish if not sth.finished?
+ db.disconnect if db
+ end
+ return result
+ end
- # save
- def save_db()
-
- result = true
- # distribution
- @distmgr.save_db()
-
- sqlite_db_file = "DBI:SQLite3:#{BuildServer::CONFIG_ROOT}/#{@id}/server.db"
- begin
- # open DB
- db = DBI.connect(sqlite_db_file)
-
- # remote_build_servers
- db.do "DELETE FROM remote_build_servers"
- @friend_servers.each do |svr|
- db.do "INSERT INTO remote_build_servers (svr_addr) VALUES('#{svr.ip}:#{svr.port}')"
- end
-
- # sync_pkg_servers
- db.do "DELETE FROM sync_pkg_servers"
- @remote_pkg_servers.each do |svr|
- db.do "INSERT INTO sync_pkg_servers (pkgsvr_url,period,dist_name) VALUES('#{svr[0]}','#{@pkg_sync_period}','#{svr[1]}')"
- end
-
- # supported_os
- db.do "DELETE FROM supported_os"
- @supported_os_list.each do |os|
- db.do "INSERT INTO supported_os VALUES('#{os}')"
- end
-
- rescue DBI::DatabaseError => e
- puts "DB update failed!"
- puts e.errstr
- result = false
- ensure
- db.disconnect if db
- end
-
- return result
- end
-
-
- # load
- def load_db()
-
- result = true
- # distribution
- @distmgr.load_db()
-
- sqlite_db_file = "DBI:SQLite3:#{BuildServer::CONFIG_ROOT}/#{@id}/server.db"
- begin
- # open DB
- db = DBI.connect(sqlite_db_file)
- #db.results_as_hash = true
-
- # remote_build_servers
- @friend_servers = []
- sth = db.execute "SELECT * FROM remote_build_servers"
- sth.fetch_hash do |row|
- add_remote_server(
- row['svr_addr'].split(":")[0],
- row['svr_addr'].split(":")[1].to_i)
- end
- sth.finish
- # sync_package_servers
- @remote_pkg_servers = []
- sth = db.execute "SELECT * FROM sync_pkg_servers"
- sth.fetch_hash do |row|
- add_sync_package_server( row['pkgsvr_url'], row['dist_name'] )
- @pkg_sync_period = row['period'].to_i
- end
- sth.finish
-
- # supported_os
- @supported_os_list = []
- sth = db.execute "SELECT * FROM supported_os"
- sth.fetch_hash do |row|
- add_target_os( row['name'] )
- end
- sth.finish
- rescue DBI::DatabaseError => e
- puts "DB loading failed!"
- puts e.errstr
- result = false
- ensure
- sth.finish if not sth.finished?
- db.disconnect if db
- end
- return result
- end
-
- end
+end
if client.send "UPGRADE|#{server.password}" then
# recevie & print
mismatched = false
- result = client.read_lines do |l|
- puts l
- if l.include? "Password mismatched!" then
+ result = client.read_lines do |l2|
+ puts l2
+ if l2.include? "Password mismatched!" then
mismatched = true
end
end
prj_id = db.select_one("select last_insert_rowid()")[0]
prj.os_list.each do |os|
db.do "INSERT INTO project_os VALUES('#{prj_id}','#{os}')"
- end
-
- if not prj.save_db() then raise RuntimeError ,"Save project DB is failed!" end
- end
- rescue DBI::DatabaseError => e
- puts "DB update failed!"
- puts e.errstr
- result = false
- ensure
- db.disconnect if db
end
- return result
+
+ if not prj.save_db() then raise RuntimeError ,"Save project DB is failed!" end
end
+ rescue DBI::DatabaseError => e
+ puts "DB update failed!"
+ puts e.errstr
+ result = false
+ ensure
+ db.disconnect if db
+ end
+ return result
+ end
- # load
- def load_db()
- result = true
- @projects = []
-
- sqlite_db_file = "DBI:SQLite3:#{BuildServer::CONFIG_ROOT}/#{@server.id}/server.db"
- begin
- # open DB
- db = DBI.connect(sqlite_db_file)
-
- # distributions
- rs = db.execute "SELECT * FROM projects"
- rs.fetch_hash do |row|
- prj_id = row['id']
- prj_name = row['name']
- prj_type = row['type']
- prj_passwd = row['password']
- prj_dist = row['dist_name']
-
- @server.log.info "Loading project : #{prj_name}"
- # os
- prj_os_list = []
- rs2 = db.execute "SELECT os_name FROM project_os WHERE prj_id = #{prj_id}"
- rs2.fetch do |row2|
- prj_os_list.push row2[0]
- end
- rs2.finish
- if prj_type == "GIT" then
- new_project = GitBuildProject.new(prj_name, @server, prj_os_list, prj_dist)
- else
- new_project = BinaryUploadProject.new(prj_name, @server, prj_os_list, prj_dist)
- end
-
- if not prj_passwd.empty? then
- new_project.passwd = prj_passwd
- end
-
- if not new_project.load_db() then raise RuntimeError, "Project DB load failed!" end
- @projects.push new_project
- end
- rs.finish
- rescue DBI::DatabaseError => e
- puts "DB loading failed!"
- puts e.errstr
- result = false
- ensure
- rs.finish if not rs.finished?
- db.disconnect if db
- end
- return result
- end
+ # load
+ def load_db()
+ result = true
+ @projects = []
+ sqlite_db_file = "DBI:SQLite3:#{BuildServer::CONFIG_ROOT}/#{@server.id}/server.db"
+ begin
+ # open DB
+ db = DBI.connect(sqlite_db_file)
- # write configuration
- def write_configuration(name, repos, branch, passwd, os_list )
- config_file = "#{@project_root}/#{name}/build"
- File.open( config_file, "w" ) do |f|
- f.puts "TYPE=GIT"
- if not passwd.nil? and not passwd.empty? then
- f.puts "PASSWD=#{passwd}"
- end
- f.puts "GIT_REPOSITORY=#{repos}"
- f.puts "GIT_BRANCH=#{branch}"
- f.puts "OS_LIST=#{os_list.join(",")}"
+ # distributions
+ rs = db.execute "SELECT * FROM projects"
+ rs.fetch_hash do |row|
+ prj_id = row['id']
+ prj_name = row['name']
+ prj_type = row['type']
+ prj_passwd = row['password']
+ prj_dist = row['dist_name']
+
+ @server.log.info "Loading project : #{prj_name}"
+ # os
+ prj_os_list = []
+ rs2 = db.execute "SELECT os_name FROM project_os WHERE prj_id = #{prj_id}"
+ rs2.fetch do |row2|
+ prj_os_list.push row2[0]
+ end
+ rs2.finish
+ if prj_type == "GIT" then
+ new_project = GitBuildProject.new(prj_name, @server, prj_os_list, prj_dist)
+ else
+ new_project = BinaryUploadProject.new(prj_name, @server, prj_os_list, prj_dist)
end
+
+ if not prj_passwd.empty? then
+ new_project.passwd = prj_passwd
+ end
+
+ if not new_project.load_db() then raise RuntimeError, "Project DB load failed!" end
+ @projects.push new_project
end
+ rs.finish
+ rescue DBI::DatabaseError => e
+ puts "DB loading failed!"
+ puts e.errstr
+ result = false
+ ensure
+ rs.finish if not rs.finished?
+ db.disconnect if db
+ end
+ return result
+ end
- # write configuration
- def write_configuration_for_binary_project(name, pkg_name, passwd, os_list )
- config_file = "#{@project_root}/#{name}/build"
- File.open( config_file, "w" ) do |f|
- f.puts "TYPE=BINARY"
- if not passwd.nil? and not passwd.empty? then
- f.puts "PASSWD=#{passwd}"
- end
- f.puts "PACKAGE_NAME=#{pkg_name}"
- f.puts "OS_LIST=#{os_list.join(",")}"
- end
+ # write configuration
+ def write_configuration(name, repos, branch, passwd, os_list )
+ config_file = "#{@project_root}/#{name}/build"
+ File.open( config_file, "w" ) do |f|
+ f.puts "TYPE=GIT"
+ if not passwd.nil? and not passwd.empty? then
+ f.puts "PASSWD=#{passwd}"
end
+ f.puts "GIT_REPOSITORY=#{repos}"
+ f.puts "GIT_BRANCH=#{branch}"
+ f.puts "OS_LIST=#{os_list.join(",")}"
+ end
+ end
+
+ # write configuration
+ def write_configuration_for_binary_project(name, pkg_name, passwd, os_list )
+ config_file = "#{@project_root}/#{name}/build"
+ File.open( config_file, "w" ) do |f|
+ f.puts "TYPE=BINARY"
+ if not passwd.nil? and not passwd.empty? then
+ f.puts "PASSWD=#{passwd}"
end
+ f.puts "PACKAGE_NAME=#{pkg_name}"
+ f.puts "OS_LIST=#{os_list.join(",")}"
+ end
+ end
+
+end
result = true
file_name = file_path.split("/")[-1]
msg = "DOWNLOAD|#{dock}|#{file_name}"
- if client.send( msg ) then
- 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.receive_file(file_path, transporter)
- if not result then
- @log.error( "File downloading failed...#{file_name}", Log::LV_USER)
- end
+ if client.send( msg ) then
+ 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.receive_file(file_path, transporter)
+ if not result then
+ @log.error( "File downloading failed...#{file_name}", Log::LV_USER)
+ end
end
#close connections
def == x
(self <=> x) == 0
end
+ def != x
+ (self <=> x) != 0
+ end
def compare x
if self < x then return -1
elsif self == x then return 0