*** ltib.~1.88.~ 2012-07-23 08:44:40.000000000 -0400 --- ltib 2012-09-28 16:35:12.865806002 -0400 *************** *** 567,572 **** --- 567,651 ---- # get/set the platform directory $cf->{plat_dir} = get_plat_dir() or die; + # Pull in platform dependencies and merge them in. Note that the platform + # dependency file is pulled in with "do", so the last expression in the file + # needs to be a hash that contains (optional) keys CONFIG_DEP, BUILD_DEP, + # and INSTALL_DEP, each a hash that contain package keys and values that are + # an array of package keys. + use List::MoreUtils qw/ uniq /; + + sub merge_dependencies + { + my ($pkg_dep, $config_dep) = @_; + my $x; + my @arry1; + my @arry2; + my @arry3; + + if ( $pkg_dep ) { + foreach my $k ( keys %$pkg_dep ) { + # print "Key: [$k]\n"; + @arry1 = @{$pkg_dep->{$k}}; + if( exists $config_dep->{$k} ) { + # print "Merge key [$k] into config_dep:\n"; + @arry2 = @{$config_dep->{$k}}; + + # print "arry1: @arry1\n"; + # print "arry2: @arry2\n"; + + @arry3 = ( @{$pkg_dep->{$k}}, @{$config_dep->{$k}}); + @arry3 = uniq (@arry3); + # print "arry3: @arry3\n"; + @{$config_dep->{$k}} = uniq ( @arry3 ); + } else { + $config_dep->{$k} = $pkg_dep->{$k}; + } + + # @arry1 = @{$config_dep->{$k}}; + # $x = scalar (@arry1); + # print "arry1 length: $x\n"; + + # foreach my $k2 ( @arry1 ) { + # print "Entry [$k2]\n"; + # } + } + } + } + + sub dump_dependency + { + my ($dep) = @_; + + if ($dep) { + foreach my $k (keys %$dep) { + my @arry = @{$dep->{$k}}; + print "$k: @arry\n"; + } + } + } + + sub get_platform_dependencies + { + my $package_deps; + my $pdef_file = "$cf->{plat_dir}/platform_dep.pl"; + + $package_deps = do "$pdef_file"; + warn "Couldn't parse $pdef_file" if $@; + # warn "Couldn't do $pdef_file" unless defined $package_deps; + # warn "Couldn't run $pdef_file" unless $package_deps; + + if (defined($package_deps)) { + print "merging platform package dependencies from $cf->{plat_dir}\n"; + merge_dependencies($package_deps->{CONFIG_DEPS}, $config_deps); + merge_dependencies($package_deps->{BUILD_DEPS}, $build_deps); + merge_dependencies($package_deps->{INSTALL_DEPS}, $install_deps); + } + + # dump_dependency($config_deps); + } + + get_platform_dependencies(); + my @rl = build_root_list(); foreach my $n (reverse @rl) { print "\nProcessing root number: ", $n+1, " of ", $#rl+1, "\n",