summaryrefslogtreecommitdiff
path: root/solenv/bin
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@novell.com>2011-09-05 14:17:40 +0100
committerMichael Meeks <michael.meeks@novell.com>2011-09-05 15:25:10 +0100
commit66ec27f69123a308926583180a6f45db80e3d427 (patch)
tree41e43016b59ce65d2b870e72e1d3d52c0f9fe572 /solenv/bin
parent691a15b36a2e29856bd4daa84b93cd7deefeef90 (diff)
elide duplicate dummy dependencies as we concatenate them to a library depfile
Diffstat (limited to 'solenv/bin')
-rwxr-xr-xsolenv/bin/concat-deps.pl50
1 files changed, 50 insertions, 0 deletions
diff --git a/solenv/bin/concat-deps.pl b/solenv/bin/concat-deps.pl
new file mode 100755
index 000000000000..a9788cb0ac3f
--- /dev/null
+++ b/solenv/bin/concat-deps.pl
@@ -0,0 +1,50 @@
+#! /usr/bin/env perl
+
+# reads a list of dependency files from a file, opens and
+# concatenates them, while eliding duplicate nop rules.
+
+sub read_depfiles($)
+{
+ my $name = shift;
+ my $depfh;
+ my @files;
+ open ($depfh, $name) || die "Can't open list of dependencies: $name: $!";
+ while (<$depfh>) {
+ push @files, split(/\s+/, $_);
+ }
+ close ($depfh);
+
+# print STDERR "dep files: " . join ("'", @files) . "\n";
+ return @files;
+}
+
+my @depfiles = read_depfiles (shift @ARGV);
+
+my %rules;
+print "# concatenated, reduced dependencies generated by solenv/bin/concat-deps.pl\n";
+
+for my $fname (@depfiles) {
+ my $fileh;
+
+ next if ($fname eq '');
+ open ($fileh, $fname) || die "Can't open $fname: $!\n";
+
+ my $last = '';
+ while (<$fileh>) {
+ my $line = $_;
+ if ($line eq "\n") {
+ if ($last =~ /^(.*):\s*$/) {
+ if (defined $rules{$1}) {
+ $last = '';
+ next;
+ }
+ $rules{$1} = 1;
+ }
+ }
+ print $last;
+ $last = $line;
+ }
+ print $last;
+
+ close ($fileh);
+}