summaryrefslogtreecommitdiffstats
path: root/openpower/scripts/op-target-dependencies
blob: c99c69d28cd924bc7f573e82dc595bf341a31ac7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/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;
}
OpenPOWER on IntegriCloud