| #!/usr/bin/env perl |
| |
| use strict; |
| my %seen = (); |
| |
| # Generate dependency list for all 'priority' targets. These are targets a |
| # user is likely to build. |
| my @priority_targets = ( "openpower-pnor" ); |
| foreach my $target (@priority_targets) |
| { |
| next if $seen{$target}; |
| |
| print "$target\n"; |
| $seen{$target} = 1; |
| package_deps($target, 0); |
| } |
| |
| # Generate dependency list for all other targets. |
| packages(); |
| |
| # @sub packages |
| # @brief Determine all the packages that can be built. |
| # |
| # Skip host-* (uninteresting) and target-* (buildroot special) packages. |
| sub packages |
| { |
| open TARGETS, "make --directory=`pwd`/buildroot O=`pwd`/output ". |
| "show-targets | sed 's/^make:.*//' |"; |
| |
| while (my $line = <TARGETS>) |
| { |
| chomp $line; |
| next if ($line eq ""); |
| |
| my @targets = split / /,$line; |
| foreach (@targets) |
| { |
| next if ($seen{$_}); |
| next if ($_ =~ m/^host-/); |
| next if ($_ =~ m/^target-/); |
| |
| print $_."\n"; |
| $seen{$_} = 1; |
| package_deps($_, 0); |
| } |
| } |
| |
| close TARGETS |
| |
| } |
| |
| # @sub package_deps |
| # @brief Collect children dependencies for a package. |
| sub package_deps |
| { |
| my $package = shift; |
| my $level = shift; |
| |
| $package =~ s/-rebuild.*//; # Strip off -rebuild* subpass. |
| $package =~ s/linux[0-9]*/linux/; # Strip off linux version. |
| |
| open DEPENDS, "make --directory=`pwd`/buildroot O=`pwd`/output ". |
| "$package-show-depends | sed 's/^make:.*//' |"; |
| |
| while (my $line = <DEPENDS>) |
| { |
| chomp $line; |
| next if ($line eq ""); |
| |
| my @depends = split / /,$line; |
| foreach my $depend (@depends) |
| { |
| foreach (0..$level) |
| { |
| print " "; |
| } |
| print $depend."\n"; |
| |
| next if ($seen{$depend}); |
| $seen{$depend} = 1; |
| package_deps($depend, $level+1); |
| } |
| } |
| |
| close DEPENDS; |
| } |