From 08ab141a95f9abbde5cff58b5cd909b6ff900f2d Mon Sep 17 00:00:00 2001 From: donghee yang Date: Fri, 17 Aug 2012 02:48:43 +0900 Subject: [PATCH] [Title] Fixed a bug that multi-job cannot control build-dependency --- src/build_server/BuildJob.rb | 20 +++++++++++++++----- src/common/PackageManifest.rb | 3 ++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/build_server/BuildJob.rb b/src/build_server/BuildJob.rb index 9962355..f0ac50a 100644 --- a/src/build_server/BuildJob.rb +++ b/src/build_server/BuildJob.rb @@ -1157,13 +1157,23 @@ class BuildJob dep_target_os = @os end - sub_pkgs = @pkgsvr_client.get_install_dependent_packages(dep.package_name, - dep_target_os, false, true) + pkg_names = [ dep.package_name ] + if not @parent.nil? and @parent.type == "MULTIBUILD" then + old_count = 0 + while pkg_names.count != old_count + old_count = pkg_names.count + new_names = [] + pkg_names.each { |p| + @parent.sub_jobs.each { |j| + new_names += j.pkginfo.get_install_dependencies(dep_target_os, p).map {|j| j.package_name} + } + } + pkg_names += new_names + pkg_names.uniq! + end + end # search - pkg_names = [ dep.package_name ] - pkg_names += sub_pkgs - pkg_names.uniq! pkg_names.each { |pkg_name| binpkgs = Dir.glob("#{src_path}/#{pkg_name}_*_#{dep_target_os}.zip") if binpkgs.count > 0 then diff --git a/src/common/PackageManifest.rb b/src/common/PackageManifest.rb index 1737eba..60eba38 100644 --- a/src/common/PackageManifest.rb +++ b/src/common/PackageManifest.rb @@ -87,10 +87,11 @@ class PackageManifest # scan all install dependencies - def get_install_dependencies( target_os ) + def get_install_dependencies( target_os, pkg_name=nil ) # for all list = [] for pkg in @packages + if not pkg_name.nil? and pkg.package_name != pkg_name then next end # only package that used in target os if not pkg.os_list.include?(target_os) next -- 2.34.1