X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/cf807efd13ca47672871d0c50d23274fe34c3114..fca1e2883934a6d918878c05ddbea9aadb91b2a5:/scripts/gen_deps.pl?ds=sidebyside diff --git a/scripts/gen_deps.pl b/scripts/gen_deps.pl index e7daf1886..0fc80aae8 100755 --- a/scripts/gen_deps.pl +++ b/scripts/gen_deps.pl @@ -14,7 +14,6 @@ my $makefile; my %conf; my %pkg; my %prereq; -my $prereq; my %dep; my %options; my $opt; @@ -29,15 +28,22 @@ while ($line = <>) { $line =~ /^Source-Makefile: \s*(.+\/([^\/]+)\/Makefile)\s*$/ and do { $makefile = $1; $src = $2; + defined $pkg{$src} or $pkg{$src} = {}; + $pkg{$src}->{src} = $src; }; $line =~ /^Package: \s*(.+)\s*$/ and do { $name = $1; defined $pkg{$name} or $pkg{$name} = {}; $pkg{$name}->{src} = $src; }; + $line =~ /^Provides: \s*(.+)\s*$/ and do { + foreach my $vpkg (split /\s+/, $1) { + defined $pkg{$vpkg} or $pkg{$vpkg} = {}; + $pkg{$vpkg}->{virtual} = 1; + } + }; $line =~ /^Prereq-Check:/ and !defined $prereq{$src} and do { - $prereq{$src} = 1; - $prereq .= "package-prereq += $src\n"; + $pkg{$name}->{prereq} = 1; }; $line =~ /^(Build-)?Depends: \s*(.+)\s*$/ and do { $pkg{$name}->{depends} ||= []; @@ -52,17 +58,27 @@ while ($line = <>) { $line=""; foreach $name (sort {uc($a) cmp uc($b)} keys %pkg) { + my $config; + + next if defined $pkg{$name}->{virtual}; if ($options{SDK}) { - $conf{$pkg{$name}->{src}} or print "package-m += $pkg{$name}->{src}\n"; - $conf{$pkg{$name}->{src}} = 1; + $conf{$pkg{$name}->{src}} or do { + $config = 'm'; + $conf{$pkg{$name}->{src}} = 1; + }; } else { - print "package-\$(CONFIG_PACKAGE_$name) += $pkg{$name}->{src}\n"; + $config = "\$(CONFIG_PACKAGE_$name)" + } + if ($config) { + print "package-$config += $pkg{$name}->{src}\n"; + $pkg{$name}->{prereq} and print "prereq-$config += $pkg{$name}->{src}\n"; } my $hasdeps = 0; my $depline = ""; foreach my $dep (@{$pkg{$name}->{depends}}) { my $idx; + next if defined $pkg{$dep}->{virtual}; if (defined $pkg{$dep}->{src}) { ($pkg{$name}->{src} ne $pkg{$dep}->{src}) and $idx = $pkg{$dep}->{src}; } elsif (defined($pkg{$dep}) && !$options{SDK}) { @@ -81,5 +97,5 @@ foreach $name (sort {uc($a) cmp uc($b)} keys %pkg) { } if ($line ne "") { - print "\n$line\n$prereq"; + print "\n$line"; }