[Title] Fixed a bug that multi-job cannot control build-dependency
authordonghee yang <donghee.yang@samsung.com>
Thu, 16 Aug 2012 17:48:43 +0000 (02:48 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Thu, 16 Aug 2012 17:48:43 +0000 (02:48 +0900)
src/build_server/BuildJob.rb
src/common/PackageManifest.rb

index 996235559000fd84c69a8103d0d8a5d87f3e7696..f0ac50a49abeb72fe8268e01f09029b824c5be2b 100644 (file)
@@ -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
index 1737eba1544e04ce49cab942863a53bfcfc78a20..60eba383e9cf1f5b7e22ac81e9548e3b1da33dea 100644 (file)
@@ -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