#!/usr/bin/perl use strict; use File::Path; opendir(DIR,"."); my @l = readdir(DIR); my %pkgs; foreach my $pkg (@l) { next unless $pkg =~ /freehep-(.+)/; $pkgs{$1}={}; } foreach my $pkg (@l) { next unless $pkg =~ /freehep/; my @df = glob "/usr/portage/distfiles/$pkg*"; my $distfile = $df[0]; die("need $distfile") unless -f $distfile; mkdir "fhs"; system("cd fhs; unzip -q $distfile"); my @imports = `find fhs -name '*.java'|xargs grep -H 'import org.freehep'`; my @ext_imports = `find fhs -name '*.java'|xargs grep -H 'import '|grep -v 'import org.freehep.'|grep -v 'import java.'`; for (@imports) { /import org\.freehep\.([^\.]+)\.([\w\.\*]+)/ or die($_); die("dep $1 not mapped") unless $pkgs{$1}; $pkgs{$pkg}->{"freehep-$1"} = 1 unless $pkg eq "freehep-$1"; } my %ei; for (@ext_imports) { /\:import ([^;]+);\s*$/ or next; $ei{$1}=1; } rmtree "fhs"; print "$pkg:\n"; foreach my $dep (keys %{$pkgs{$pkg}}) { print "\t$dep\n"; } print "\tExternal imports:\n\t\t".join("\n\t\t", keys %ei)."\n" if %ei > 0; } closedir DIR;