From: Hyoun Jiil Date: Tue, 19 Aug 2014 11:56:39 +0000 (+0900) Subject: Description X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=57fd1766ea7dddd706e26135a809cbce83d02ecf;p=sdk%2Ftools%2Fsdk-build.git Description - multiple package server sync is no good design -- Now package server can sync only one depth Change-Id: Ie516191b0fae1b59f85de2a474a8abfb208001ca Signed-off-by: Hyoun Jiil --- diff --git a/package/changelog b/package/changelog index d9a7cde..4238007 100644 --- a/package/changelog +++ b/package/changelog @@ -1,3 +1,7 @@ +* 2.2.3 +- multiple package server sync is no good design +-- Now package server can sync only one depth +== hyoun jiil 2014-08-19 * 2.2.2 - Fix pkg-svr clean/remove-snapshot bug -- Now changes folder snapshot log also remove diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index 0366a45..2247994 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -1,5 +1,5 @@ Source : dibs -Version :2.2.2 +Version :2.2.3 Maintainer : taejun ha, jiil hyoun , donghyuk yang , donghee yang , sungmin kim Package : tizen-dibs-test diff --git a/src/pkg_server/client.rb b/src/pkg_server/client.rb index 0993b99..7a61e97 100644 --- a/src/pkg_server/client.rb +++ b/src/pkg_server/client.rb @@ -1612,6 +1612,37 @@ class Client return pkg_all_list.sort end + public + # check_syncable_server? + # from_server : if true, update from server + def check_syncable_server?() + ssinfo_file = "snapshot.info" + file_url = File.join(@server_addr, ssinfo_file) + if @is_server_remote then + if not FileDownLoader.download(file_url, @config_dist_path, @log) then + @log.error "Server does not have \"#{ssinfo_file}\" file." + return false + end + else + if File.exist? file_url then + FileUtils.cp(file_url, @config_dist_path) + else + @log.error "Server does not have \"#{ssinfo_file}\" file." + return false + end + end + + file_path = File.join(@config_dist_path, ssinfo_file) + if not File.exist? file_path then return false end + + contents = File.open(file_path, "r").read + + _list = contents.split("\n\n") + snapshot_list = _list.map {|x| x.split("\n").first.split(":")[1].strip } + + return (snapshot_list.index{|x| /sync_.*/ =~ x}.nil?) + end + private def get_build_dependency_arr(pkg_name, os, n) pkg_hash = @pkg_hash_os[os] diff --git a/src/pkg_server/packageServer.rb b/src/pkg_server/packageServer.rb index 950c938..487597a 100644 --- a/src/pkg_server/packageServer.rb +++ b/src/pkg_server/packageServer.rb @@ -130,6 +130,18 @@ class PackageServer create_distribution_struct( dist_name, server_url ) Utils.file_unlock(lock_file) + # remote server check + if (not server_url.empty?) then + client = Client.create(server_url.strip, "#{@location}/binary", @log); + if client.nil? or not client.check_syncable_server? then + # remove configs + FileUtils.rm_rf @location + FileUtils.rm_rf @config_dir + @log.error( "#{server_url} is invalid or not synchronizable package server",Log::LV_USER) + return nil + end + end + @log.output( "package server [#{@id}] created successfully", Log::LV_USER ) @log.output( " - server location : #{@location}", Log::LV_USER ) @log.output( " - server configure file : #{@config_file_path}", Log::LV_USER ) @@ -314,17 +326,22 @@ class PackageServer return end - begin - update, snapshot = distribution.sync(mode, snapshot) - if update then - distribution.generate_snapshot("sync_#{snapshot}", "", false, distribution.last_sync_changes) - end - - @log.output( "package server [#{@id}]'s distribution [#{dist_name}] has been synchronized.", Log::LV_USER ) - rescue => e - @log.error( e.message, Log::LV_USER) - end - end + client = Client.create(distribution.server_url, "#{@location}/binary", @log); + if client.nil? or not client.check_syncable_server? then + @log.error( "#{distribution.server_url} is invalid or not synchronizable package server", Log::LV_USER) + else + begin + update, snapshot = distribution.sync(mode, snapshot) + if update then + distribution.generate_snapshot("sync_#{snapshot}", "", false, distribution.last_sync_changes) + end + + @log.output( "package server [#{@id}]'s distribution [#{dist_name}] has been synchronized.", Log::LV_USER ) + rescue => e + @log.error( e.message, Log::LV_USER) + end + end + end def add_distribution( dist_name, server_url, clone ) lock_file = Utils.file_lock(@server_lock_file_path)