tools/packages_in_rom.pl
changeset 6 d48e90a0206b
parent 5 c42508d52961
child 11 9fac6902f40b
equal deleted inserted replaced
5:c42508d52961 6:d48e90a0206b
    15 # dir /s/b build_info\logs\releaseables\*.tsv | perl packages_in_rom.pl romfile.dir -
    15 # dir /s/b build_info\logs\releaseables\*.tsv | perl packages_in_rom.pl romfile.dir -
    16 
    16 
    17 use strict;
    17 use strict;
    18 
    18 
    19 my %romfiles;
    19 my %romfiles;
       
    20 my %ibyfiles;
    20 
    21 
    21 sub scan_rom_dir_file($)
    22 sub scan_rom_dir_file($)
    22 	{
    23 	{
    23 	my ($romdirfile) = @_;
    24 	my ($romdirfile) = @_;
    24 	
    25 	
    27   while ($line = <FILE>)
    28   while ($line = <FILE>)
    28   	{
    29   	{
    29   	next if ($line !~ /\t/);
    30   	next if ($line !~ /\t/);
    30   	
    31   	
    31   	chomp $line;
    32   	chomp $line;
    32   	my ($romdest,$srcfile) = split /\t/,$line;
    33   	my ($romdest,$srcfile,$ibyfile) = split /\t/,$line;
    33   	$romdest =~ s/\s*$//;		# strip off trailing spaces
    34   	$romdest =~ s/\s*$//;		# strip off trailing spaces
       
    35   	$romdest =~ s/\//\\/g; 	# convert to EPOC directory separators
       
    36   	
    34     $srcfile =~ s/\\/\//g;	# Unix directory separators please
    37     $srcfile =~ s/\\/\//g;	# Unix directory separators please
    35     
    38     $srcfile =~ s/^"(.*)"$/$1/; 	# Remove quotes
       
    39     $srcfile =~ s/\/\//\//g; 	# Convert // to /
    36     $srcfile =~ s/^\[0x[0-9a-fA-F]+\]//;	# remove HVID, if present
    40     $srcfile =~ s/^\[0x[0-9a-fA-F]+\]//;	# remove HVID, if present
       
    41     $srcfile =~ s/mbm_rom$/mbm/i; 	# use original name of derived file
    37     $srcfile = lc $srcfile; 	# sigh...
    42     $srcfile = lc $srcfile; 	# sigh...
    38     
    43     
       
    44     $ibyfile =~ s/\\/\//g;	# Unix directory separators please
       
    45     $ibyfile =~ s/^.*\/rom\/include\///; 	# normalise path to rom\include
       
    46     
    39   	$romfiles{$srcfile} = $romdest;
    47   	$romfiles{$srcfile} = $romdest;
       
    48   	$ibyfiles{$romdest} = $ibyfile;
    40 		}
    49 		}
    41 	close FILE;
    50 	close FILE;
    42 	}
    51 	}
    43 
    52 
    44 my %packages;
    53 my %packages;
    80     $tsvfile =~ s/\\/\//g;
    89     $tsvfile =~ s/\\/\//g;
    81     scan_tsv($tsvfile);
    90     scan_tsv($tsvfile);
    82     }
    91     }
    83   }
    92   }
    84 
    93 
    85 print "File\tPackage\n";
    94 print "ROM file,Host file,Iby file,Package,In/Out,Who,Why\n";
    86 my $unknowns = 0;
    95 my $unknowns = 0;
    87 foreach my $file (sort keys %romfiles)
    96 foreach my $file (sort keys %romfiles)
    88 	{
    97 	{
       
    98 	my $romfile = $romfiles{$file};
       
    99 	my $ibyfile = $ibyfiles{$romfile};
    89 	my $package = $package_by_romfile{$file};
   100 	my $package = $package_by_romfile{$file};
       
   101 
    90 	if (!defined $package)
   102 	if (!defined $package)
    91 		{
   103 		{
    92 		$package = "(unknown)";
   104 		$package = "(unknown)";
    93 		$package_by_romfile{$file} = $package;
   105 		$package_by_romfile{$file} = $package;
    94 		$unknowns += 1;
   106 		$unknowns += 1;
    95 		}
   107 		}
    96 	printf "%s\t%s\n", $file, $package;
   108 	print join(",", $romfile, $file, $ibyfile, $package, "","",""), "\n";
    97 	}
   109 	}
    98 printf "\n%d files in %s, %d unknowns\n", scalar keys %romfiles, $romlisting, $unknowns;
   110 printf STDERR "\n%d files in %s, %d unknowns\n", scalar keys %romfiles, $romlisting, $unknowns;