tools/filter_obyfile.pl
author William Roberts <williamr@symbian.org>
Tue, 02 Nov 2010 10:32:18 +0000
changeset 99 e23a8d7ea8bb
parent 80 3ab0df073c86
child 100 6dfa3bdbdfba
permissions -rw-r--r--
Update filter_obyfile.pl to report the "minimal ROM" executables Update bulk_marking.pl to handle lists of exes both with and without the -x option Update summarise_kerneltrace.pl to deal with the interspersed "DTimer::Create" information, and update summary.txt
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     1
# Copyright (c) 2010 Symbian Foundation Ltd.
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     2
# All rights reserved.
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     3
# This component and the accompanying materials are made available
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     4
# under the terms of the License "Eclipse Public License v1.0"
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     5
# which accompanies this distribution, and is available
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     6
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     7
#
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     8
# Initial Contributors:
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
     9
# Symbian Foundation - initial contribution.
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    10
#
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    11
# Contributors:
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    12
#
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    13
# Description: 
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    14
# This script filters an OBY file given a rom_content.csv and a static_dependencies.txt
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    15
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    16
use strict;
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    17
use Getopt::Long;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    18
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    19
my $deleted_lines_oby = "filtered.oby";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    20
my $deletion_details_file = "filter.log";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    21
GetOptions(
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    22
  "d|deleted=s" => \$deleted_lines_oby,   # file to hold the deleted lines
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    23
  "l|log=s" => \$deletion_details_file,   # log of whats deleted and why
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    24
  );
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    25
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    26
if (scalar @ARGV < 2)
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    27
	{
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    28
	die ("Must specify at least two arguments: rom_content.csv and static_dependencies.txt");
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    29
	}
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    30
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    31
my $rom_content_csv = shift @ARGV;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    32
my $static_dependencies_txt = shift @ARGV;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    33
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    34
open ROM_CONTENT, "<$rom_content_csv" or die("Cannot read $rom_content_csv: $!\n");
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    35
my @rom_content = <ROM_CONTENT>;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    36
close ROM_CONTENT;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    37
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    38
my $rom_content_header = shift @rom_content;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    39
die("Not a valid rom_content.csv file") if ($rom_content_header !~ /^ROM file,/);
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    40
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    41
# read through the rom_content_csv looking for direct instructions
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    42
my %stem_substitutions;
78
7271390ae2c2 Remember more information from rom_content.csv, to add IBY and package information to filter.log
William Roberts <williamr@symbian.org>
parents: 77
diff changeset
    43
my %rom_origins;
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    44
my %deletions;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    45
my %must_have;
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    46
my %check_import_details;
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    47
foreach my $line (@rom_content)
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    48
	{
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    49
	my ($romfile,$hostfile,$ibyfile,$package,$cmd,@rest) = split /,/, $line;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    50
	
78
7271390ae2c2 Remember more information from rom_content.csv, to add IBY and package information to filter.log
William Roberts <williamr@symbian.org>
parents: 77
diff changeset
    51
	$rom_origins{$romfile} = "$ibyfile,$package";
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    52
	next if ($cmd eq "");
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    53
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    54
	$cmd = lc $cmd;
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    55
	if ($cmd eq "slim")
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    56
		{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    57
		$check_import_details{$romfile} = "";
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    58
		$stem_substitutions{$romfile} = $hostfile;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    59
		$must_have{$romfile} = 1;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    60
		next;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    61
		}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    62
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    63
	if ($cmd eq "stem")
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    64
		{
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    65
		$stem_substitutions{$romfile} = $hostfile;
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
    66
		$must_have{$romfile} = 1;
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    67
		next;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    68
		}
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    69
	
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    70
	if ($cmd eq "out")
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    71
		{
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
    72
		# print STDERR "Deletion request for >$romfile<\n";
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
    73
		$deletions{$romfile} = "out";
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    74
		next;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    75
		}
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    76
	
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    77
	if ($cmd eq "in")
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    78
		{
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    79
		$must_have{$romfile} = 1;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    80
		next;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    81
		}
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    82
	}
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    83
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    84
printf STDERR "%d in (including %d slim and %d stem), %d out\n", 
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    85
	scalar keys %must_have,
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    86
	scalar keys %check_import_details,
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    87
	(scalar keys %stem_substitutions) - (scalar keys %check_import_details), 
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
    88
	scalar keys %deletions; 
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    89
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
    90
# read static dependencies file
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
    91
my %exe_to_romfile;     # exe -> original romfile
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
    92
my %exe_dependencies;   # exe -> list of romfile
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
    93
my %exe_prerequisites;  # exe -> list of exe
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
    94
my %exe_ordinals;       # exe -> list of valid ordinals
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
    95
my %lc_romfiles;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
    96
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
    97
my $line;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
    98
open STATIC_DEPENDENCIES, "<$static_dependencies_txt" or die ("Cannot read $static_dependencies_txt: $!\n");
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
    99
while ($line = <STATIC_DEPENDENCIES>)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   100
	{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   101
	chomp $line;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   102
	my ($romfile, $hostfile, $stuff) = split /\t/, $line;
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   103
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   104
	next if ($romfile eq "x");	# pre-inverted dependency information
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   105
	
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   106
	if (defined $stem_substitutions{$romfile})
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   107
		{
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   108
		if ($hostfile !~ /\/stem_/)
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   109
			{
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   110
			# print STDERR "Ignoring dependencies of $hostfile because of stem substitution of $romfile\n";
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   111
			next;
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   112
			}
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   113
		}
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   114
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   115
	$lc_romfiles{lc $romfile} = $romfile;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   116
	
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   117
	my $romexe = "";
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   118
	if ($romfile =~ /^sys.bin.(.*)$/i)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   119
		{
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   120
		$romexe = lc $1;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   121
		$exe_to_romfile{$romexe} = $romfile;
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   122
		}
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   123
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   124
	my @prerequisite_exes = ();
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   125
	foreach my $prerequisite (split /:/,$stuff)
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   126
		{
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   127
		next if ($prerequisite =~ /^sid=/);	# not a real file
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   128
		if ($prerequisite =~ /^exports=(.*)$/)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   129
			{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   130
			my $ordinals = $1;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   131
			if (defined $check_import_details{$romfile})
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   132
				{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   133
				$exe_ordinals{$romexe} = $ordinals;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   134
				}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   135
			next;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   136
			}
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   137
		$prerequisite =~ s/^sys.bin.//;	# remove leading sys/bin, if present
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   138
		if ($prerequisite !~ /\\/)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   139
			{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   140
			my $exe = lc $prerequisite;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   141
			$exe =~ s/\[\S+\]//;	# ignore the UIDs for now
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   142
		
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   143
			push @prerequisite_exes, $exe;
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   144
			$exe =~ s/@.*$//; 	# remove the ordinals, though they remain in the prerequisite exes
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   145
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   146
			if (!defined $exe_dependencies{$exe})
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   147
				{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   148
				my @dependents = ($romfile);
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   149
				$exe_dependencies{$exe} = \@dependents;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   150
				}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   151
			else
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   152
				{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   153
				push @{$exe_dependencies{$exe}}, $romfile;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   154
				}
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   155
			}
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   156
		}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   157
	if ($romexe ne "")
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   158
		{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   159
		$exe_prerequisites{$romexe} = \@prerequisite_exes;
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   160
		}
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   161
	}
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   162
close STATIC_DEPENDENCIES;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   163
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   164
# Add static dependencies for aliases
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   165
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   166
my @obylines = <>;	# read the oby file
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   167
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   168
foreach my $line (@obylines)
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   169
	{
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   170
	if ($line =~ /^\s*alias\s+(\S+)\s+(\S+)\s*$/)
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   171
		{
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   172
		my $romfile = $1;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   173
		my $newname = $2;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   174
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   175
		$romfile =~ s/^\\sys/sys/;	# remove leading \, to match $romfile convention
22
76c5e260003e Calculate the inverted dependency table in filter_obyfile.pl, and make it optional (-i) in static_dependencies.pl
William Roberts <williamr@symbian.org>
parents: 19
diff changeset
   176
		next if (!defined $lc_romfiles{lc $romfile});		# ignore aliases to non-executables
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   177
		$romfile = $lc_romfiles{lc $romfile};
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   178
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   179
		$newname =~ s/^\\sys/sys/;	# remove leading \, to match $romfile convention
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   180
		$lc_romfiles{lc $newname} = $newname;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   181
		
78
7271390ae2c2 Remember more information from rom_content.csv, to add IBY and package information to filter.log
William Roberts <williamr@symbian.org>
parents: 77
diff changeset
   182
		$rom_origins{$newname} = "alias to $romfile";
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   183
		if ($romfile =~ /^sys.bin.(\S+)$/i)
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   184
			{
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   185
			my $realexe = lc $1;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   186
			push @{$exe_dependencies{$realexe}}, $newname;		# the alias is a dependent of the real file
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   187
			
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   188
			if ($newname =~ /^sys.bin.(\S+)$/i)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   189
				{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   190
				my $newexe = lc $1;
78
7271390ae2c2 Remember more information from rom_content.csv, to add IBY and package information to filter.log
William Roberts <williamr@symbian.org>
parents: 77
diff changeset
   191
				$exe_to_romfile{$newexe} = $newname;
7271390ae2c2 Remember more information from rom_content.csv, to add IBY and package information to filter.log
William Roberts <williamr@symbian.org>
parents: 77
diff changeset
   192
				$rom_origins{$newname} = "alias " . $rom_origins{$romfile};
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   193
				my @prerequisite_exes = ($realexe);
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   194
				$exe_prerequisites{$newexe} = \@prerequisite_exes;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   195
				}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   196
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   197
			# print STDERR "added $newname as a dependent of $realexe\n"
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   198
			}
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   199
		}
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   200
	}
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   201
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   202
if (0)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   203
	{
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   204
	foreach my $exe ("libopenvg.dll", "libopenvg_sw.dll", "backend.dll", "qtgui.dll")
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   205
		{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   206
		printf STDERR "Dependents of %s = %s\n", $exe, join(", ", @{$exe_dependencies{$exe}});
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   207
		}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   208
	}
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   209
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   210
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   211
my @details;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   212
sub print_detail($)
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   213
	{
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   214
	my ($message) = @_;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   215
	push @details, $message;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   216
	print STDERR $message, "\n";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   217
	}
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   218
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   219
# check the dependents of "slim" DLLs to see if they get eliminated by missing ordinals
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   220
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   221
sub expand_list($$)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   222
	{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   223
	my ($hashref, $list) = @_;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   224
	foreach my $range (split /\./, $list)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   225
		{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   226
		if ($range =~ /^(\d+)-(\d+)$/)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   227
			{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   228
			foreach my $ordinal ($1 .. $2)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   229
				{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   230
				$$hashref{$ordinal} = 1;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   231
				}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   232
			}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   233
		else
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   234
			{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   235
			$$hashref{$range} = 1;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   236
			}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   237
		}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   238
	}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   239
sub check_list($$)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   240
	{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   241
	my ($hashref, $list) = @_;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   242
	foreach my $range (split /\./, $list)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   243
		{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   244
		if ($range =~ /^(\d+)-(\d+)$/)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   245
			{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   246
			foreach my $ordinal ($1 .. $2)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   247
				{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   248
				if (!defined $$hashref{$ordinal})
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   249
					{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   250
					return "Missing ordinal $ordinal";
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   251
					}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   252
				}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   253
			}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   254
		else
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   255
			{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   256
			return "Missing ordinal $range" if (!defined $$hashref{$range});
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   257
			}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   258
		}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   259
	return "OK";
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   260
	}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   261
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   262
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   263
foreach my $romexe (keys %exe_ordinals)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   264
	{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   265
	my $exported_ordinals = $exe_ordinals{$romexe};
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   266
	my %exports;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   267
	expand_list(\%exports, $exported_ordinals);
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   268
	my $namelength = length($romexe);
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   269
	foreach my $dependent (@{$exe_dependencies{$romexe}})
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   270
		{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   271
		next if (defined $deletions{$dependent});   # already 
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   272
		
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   273
		if ($dependent =~ /^sys.bin.(.*)$/i)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   274
			{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   275
			my $depexe = lc $1;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   276
			my $imports;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   277
			foreach my $prerequisite (@{$exe_prerequisites{$depexe}})
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   278
				{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   279
				if (substr($prerequisite, 0, $namelength) eq $romexe)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   280
					{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   281
					$imports = substr($prerequisite, $namelength+1);	# skip name and "@"
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   282
					last;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   283
					}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   284
				}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   285
			if (!defined $imports)
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   286
				{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   287
				printf STDERR "Failed to find ordinals imported from %s by %s (in %s)\n", 
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   288
					$romexe, $dependent, join(":",@{$exe_prerequisites{$depexe}});
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   289
				next;
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   290
				}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   291
			my $compatible = check_list(\%exports,$imports);
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   292
			if ($compatible ne "OK")
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   293
				{
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   294
				$deletions{$dependent} = "$romexe $compatible";
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   295
				# print_detail("Deleting $dependent because of slimmed $romexe ($compatible)");
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   296
				}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   297
			}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   298
		}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   299
	}
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   300
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   301
# process the "out" commands to recursively expand the deletions
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   302
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   303
my @problems;	# list of romtrails which will be a problem
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   304
sub delete_dependents($$$)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   305
	{
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   306
	my ($romtrail,$original_reason,$listref) = @_;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   307
	my ($romfile,$trail) = split /\t/, $romtrail;
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   308
	
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   309
	if (defined $deletions{$romfile})
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   310
		{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   311
		# already marked for deletion
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   312
		return;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   313
		}
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   314
	
19
b1cc137d8adb Update filter_obyfile.pl to support the "In" command, which detects conflicts with the scope of removals
William Roberts <williamr@symbian.org>
parents: 18
diff changeset
   315
	if (defined $must_have{$romfile})
b1cc137d8adb Update filter_obyfile.pl to support the "In" command, which detects conflicts with the scope of removals
William Roberts <williamr@symbian.org>
parents: 18
diff changeset
   316
		{
b1cc137d8adb Update filter_obyfile.pl to support the "In" command, which detects conflicts with the scope of removals
William Roberts <williamr@symbian.org>
parents: 18
diff changeset
   317
		# Problem! We won't be able to build this ROM
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   318
		print_detail("WARNING: $romfile is being kept, but will fail to link because of deletion trail $trail");
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   319
		push @problems, $romtrail;
19
b1cc137d8adb Update filter_obyfile.pl to support the "In" command, which detects conflicts with the scope of removals
William Roberts <williamr@symbian.org>
parents: 18
diff changeset
   320
		# keep that file and see what happens anyway
b1cc137d8adb Update filter_obyfile.pl to support the "In" command, which detects conflicts with the scope of removals
William Roberts <williamr@symbian.org>
parents: 18
diff changeset
   321
		return;
b1cc137d8adb Update filter_obyfile.pl to support the "In" command, which detects conflicts with the scope of removals
William Roberts <williamr@symbian.org>
parents: 18
diff changeset
   322
		}
b1cc137d8adb Update filter_obyfile.pl to support the "In" command, which detects conflicts with the scope of removals
William Roberts <williamr@symbian.org>
parents: 18
diff changeset
   323
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   324
	push @details, sprintf "deleting %s (%s)", scalar $romfile, $trail;
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   325
	
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   326
	$deletions{$romfile} = $original_reason;	# this ensures that it gets deleted
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   327
	if ($romfile =~ /^sys.bin.(.*)$/i)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   328
		{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   329
		my $exe = lc $1;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   330
		if (!defined $exe_dependencies{$exe})
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   331
			{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   332
			# print STDERR "No dependencies for $exe ($romfile)\n";
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   333
			return;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   334
			}
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   335
		foreach my $dependent (@{$exe_dependencies{$exe}})
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   336
			{
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   337
			if (!defined $deletions{$dependent})
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   338
				{
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   339
		  	push @{$listref}, "$dependent\t$romfile $trail";
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   340
		  	}
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   341
		  elsif ($deletions{$romfile} eq "out")
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   342
				{
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   343
				print_detail("NOTE: direct deletion of $romfile is not needed - it would be removed by $original_reason");
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   344
				}
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   345
			}
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   346
		}
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   347
	}
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   348
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   349
my @delete_cmds = sort keys %deletions;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   350
foreach my $romfile (@delete_cmds)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   351
	{
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   352
	push @details, "", "===Deleting $romfile", "";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   353
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   354
	my $reason = $deletions{$romfile};
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   355
	delete $deletions{$romfile}; 	# so that delete_dependents will iterate properly
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   356
	my @delete_list = ("$romfile\t$reason");
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   357
	while (scalar @delete_list > 0)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   358
		{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   359
		my $next_victim = shift @delete_list;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   360
		delete_dependents($next_victim, $romfile, \@delete_list);
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   361
		}
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   362
	}
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   363
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   364
# read the oby file and apply the commands
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   365
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   366
my $stem_count = 0;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   367
my $deletion_count = 0;
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   368
my @deleted_lines;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   369
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   370
foreach my $line (@obylines)
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   371
	{
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   372
	chomp $line;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   373
	if ($line =~ /^(.*=)(\S+\s+)(\S+)(\s.*)?$/)
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   374
		{
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   375
		my $romcmd = $1;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   376
		my $hostfile = $2;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   377
		my $romfile = $3;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   378
		my $rest = $4;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   379
		$rest = "" if (!defined $rest);
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   380
		
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   381
		if ($romfile =~ /^"(.*)"$/)
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   382
			{
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   383
			$romfile = $1;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   384
			$hostfile .= '"';
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   385
			$rest = '"'. $rest;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   386
			}
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   387
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   388
		$lc_romfiles{lc $romfile} = $romfile;
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   389
		
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   390
		if ($deletions{$romfile})
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   391
			{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   392
			$deletion_count++;
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   393
			push @deleted_lines, $line;
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   394
			next;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   395
			}
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   396
		
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   397
		if (defined $stem_substitutions{$romfile})
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   398
			{
41
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   399
			if ($hostfile =~ /^(.*(\/|\\))([^\\\/]+)$/)
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   400
				{
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   401
				my $path=$1;
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   402
				my $filename=$3;
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   403
				if ($filename !~ /^stem_/)
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   404
					{
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   405
					# print STDERR "Applying stem_ prefix to $hostfile in $line\n";
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   406
					$hostfile = "${path}stem_$filename";
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   407
					$stem_count++;
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   408
					}
c57a6c85ccdc Fix up the filter_obyfile.pl to make it not double "stem_" things
Tom Pritchard <tomp@symbian.org>
parents: 27
diff changeset
   409
				}
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   410
			}
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   411
		print $romcmd, $hostfile, $romfile, $rest, "\n";
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   412
		next;
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   413
		}
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   414
	
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   415
	# __ECOM_PLUGIN(emulator directory, file rom dir, dataz_, resource rom dir, filename, resource filename)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   416
	if ($line =~ /__ECOM_PLUGIN\(([^)]+)\)/)
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   417
		{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   418
		my ($emudir, $romdir, $dataz, $resourcedir, $exename, $rscname) = split /\s*,\s*/, $1;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   419
		my $romfile = $romdir. "\\". $exename;
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   420
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   421
		if ($deletions{$romfile})
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   422
			{
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   423
			# print STDERR "Deleted __ECOM_PLUGIN for $romfile\n";
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   424
			$deletion_count++;
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   425
			push @deleted_lines, $line;
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   426
			next;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   427
			}		
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   428
		}
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   429
	if ($line =~ /^\s*alias\s+(\S+)\s+(\S+)\s*$/)
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   430
		{
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   431
		my $romfile = $1;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   432
		my $newname = $2;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   433
		
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   434
		$romfile =~ s/^\\sys/sys/;	# remove leading \, to match $romfile convention
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   435
		$romfile = $lc_romfiles{lc $romfile};
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   436
		if ($deletions{$romfile})
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   437
			{
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   438
			# delete the alias if the real file is marked for deletion
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   439
			$deletion_count++;
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   440
			push @deleted_lines, $line;
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   441
			next;
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   442
			}
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   443
		else
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   444
			{
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   445
			# print STDERR "$romfile is not deleted - saving $line\n";
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   446
			}
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   447
		}
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   448
	
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   449
	# patchdata  sys\bin\eiksrv.dll addr 0x0000c944 4 5
57
a44af1db196f Update buildrom.pm to keep better information for patchdata, with corresponding changes in repair_obyfile.pl and filter_obyfile.pl
William Roberts <williamr@symbian.org>
parents: 41
diff changeset
   450
	# patchdata rawip.dll@KRMtuIPv6 0x578
a44af1db196f Update buildrom.pm to keep better information for patchdata, with corresponding changes in repair_obyfile.pl and filter_obyfile.pl
William Roberts <williamr@symbian.org>
parents: 41
diff changeset
   451
	if ($line =~ /^\s*patchdata\s*(\S+)(\s*@|\s+addr)/i)
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   452
		{
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   453
		my $romfile = $1;
57
a44af1db196f Update buildrom.pm to keep better information for patchdata, with corresponding changes in repair_obyfile.pl and filter_obyfile.pl
William Roberts <williamr@symbian.org>
parents: 41
diff changeset
   454
		$romfile = "sys\\bin\\$romfile" if ($romfile !~ /\\/);
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   455
		$romfile =~ s/^\\//;	# remove leading \, to match $romfile convention
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   456
		$romfile = $lc_romfiles{lc $romfile};
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   457
		
18
142e13d70737 More updates to filter_obyfile.pl, now copes properly with aliases
William Roberts <williamr@symbian.org>
parents: 17
diff changeset
   458
		# print STDERR "deleting patchdata line for $romfile\n";
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   459
		if ($deletions{$romfile})
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   460
			{
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   461
			# don't count these lines as deletions - they are just extra lines relating to deleted files.
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   462
			push @deleted_lines, $line;
17
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   463
			next;
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   464
			}
1d230a71c389 Update filter_obyfile.pl to handle patchdata and some more alias cases.
William Roberts <williamr@symbian.org>
parents: 15
diff changeset
   465
		}
14
4331846fc8cb Add first version of tools\filter_obyfile.pl, which uses rom_content.csv to select "stem_" versions of files.
William Roberts <williamr@symbian.org>
parents:
diff changeset
   466
	print $line,"\n";
15
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   467
	}
330c2ceccdc6 filter_obyfile.pl now handles deletions including ECOM plugins and aliases
William Roberts <williamr@symbian.org>
parents: 14
diff changeset
   468
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   469
print_detail("Applied $stem_count stem substitutions and deleted $deletion_count rom files");
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   470
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   471
# Caculate what else could be removed
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   472
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   473
my %must_have_exes;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   474
sub mark_prerequisites($);	# prototype for recursion
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   475
sub mark_prerequisites($)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   476
	{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   477
	my ($exe) = @_;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   478
	return if (defined $must_have_exes{$exe});	# already marked
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   479
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   480
	$must_have_exes{$exe} = 1;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   481
	if (!defined $exe_prerequisites{$exe})
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   482
		{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   483
		# printf STDERR "$exe has no prerequisites to be marked!\n";
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   484
		return;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   485
		}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   486
	foreach my $prerequisite (@{$exe_prerequisites{$exe}})
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   487
		{
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   488
		$prerequisite =~ s/@.*$//;	# remove any ordinal information
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   489
		mark_prerequisites($prerequisite);
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   490
		}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   491
	}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   492
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   493
foreach my $romfile (keys %must_have)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   494
	{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   495
	if ($romfile =~ /^sys.bin.(.*)$/i)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   496
		{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   497
		my $exe = lc $1;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   498
		mark_prerequisites($exe);
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   499
		}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   500
	}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   501
printf STDERR "Minimum ROM now has %d exes\n", scalar keys %must_have_exes;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   502
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   503
sub count_dependents($$);	# prototype for recursion
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   504
sub count_dependents($$)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   505
	{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   506
	my ($exe, $hashref) = @_;
77
4bb92ff6576a Don't count files already deleted from the ROM in the "Deleting X would remove N files" analysis
William Roberts <williamr@symbian.org>
parents: 76
diff changeset
   507
	return if (defined $deletions{$exe_to_romfile{$exe}});
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   508
	return if (defined $$hashref{$exe});
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   509
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   510
	$$hashref{$exe} = 1;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   511
	foreach my $dependent (@{$exe_dependencies{$exe}})
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   512
		{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   513
		next if ($dependent =~ /^sid=/);
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   514
		if ($dependent =~ /^sys.bin.(.*)$/i)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   515
			{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   516
			my $depexe = lc $1;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   517
			count_dependents($depexe, $hashref);
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   518
			}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   519
		}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   520
	}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   521
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   522
my @deletion_roots;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   523
foreach my $exe (sort keys %exe_dependencies)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   524
	{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   525
	next if (defined $must_have_exes{$exe});
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   526
	my %dependents;
76
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   527
	my $deletion_root = "";
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   528
	foreach my $prerequisite (@{$exe_prerequisites{$exe}})
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   529
		{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   530
		next if (defined $must_have_exes{$prerequisite});
76
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   531
		$deletion_root = $prerequisite;	# at least one prerequisite is not a must_have, so will delete this exe if removed
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   532
		last;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   533
		}
76
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   534
	if (defined $deletions{$exe_to_romfile{$exe}})
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   535
		{
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   536
		if ($deletion_root ne "")
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   537
			{
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   538
			#print STDERR "Explicit deletion of $exe is not efficient - $deletion_root would remove it\n";
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   539
			}
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   540
			next;	# no need to report this one
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   541
		}
af2426f01bab Further tweak to avoid reporting deletion roots already marked as "Out".
William Roberts <williamr@symbian.org>
parents: 75
diff changeset
   542
	next if ($deletion_root ne "");
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   543
	
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   544
	count_dependents($exe, \%dependents);
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   545
	my $count = scalar keys %dependents;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   546
	push @deletion_roots, sprintf "%-4d\t%s", scalar keys %dependents, $exe;
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   547
	}
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   548
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   549
my $deleted_lines_oby = "filtered.oby";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   550
my $deletion_details_file = "filter.log";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   551
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   552
if ($deleted_lines_oby && scalar @deleted_lines)
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   553
	{
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   554
	print STDERR "Writing deleted lines to $deleted_lines_oby\n";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   555
	open FILE, ">$deleted_lines_oby" or die("Unable to write to file $deleted_lines_oby: $!\n");
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   556
	foreach my $line (@deleted_lines)
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   557
		{
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   558
		print FILE $line, "\n";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   559
		}
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   560
	close FILE;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   561
	}
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   562
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   563
if ($deletion_details_file && scalar (@details, @problems, @deletion_roots))
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   564
	{
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   565
	print STDERR "Writing deletion details to $deletion_details_file\n";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   566
	open FILE, ">$deletion_details_file" or die("Unable to write to file $deletion_details_file: $!\n");
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   567
	foreach my $line (@details)
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   568
		{
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   569
		print FILE $line, "\n";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   570
		}
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   571
		
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   572
	print FILE "\n====\n";
80
3ab0df073c86 Add support for "slim", which is "stem" + removal of some exports and checking of import details
William Roberts <williamr@symbian.org>
parents: 78
diff changeset
   573
	printf FILE "Minimum ROM now has %d exes\n", scalar keys %must_have_exes;
99
e23a8d7ea8bb Update filter_obyfile.pl to report the "minimal ROM" executables
William Roberts <williamr@symbian.org>
parents: 80
diff changeset
   574
	print FILE join("\n", sort keys %must_have_exes), "\n";
e23a8d7ea8bb Update filter_obyfile.pl to report the "minimal ROM" executables
William Roberts <williamr@symbian.org>
parents: 80
diff changeset
   575
	
e23a8d7ea8bb Update filter_obyfile.pl to report the "minimal ROM" executables
William Roberts <williamr@symbian.org>
parents: 80
diff changeset
   576
	print FILE "\n====\n";
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   577
	foreach my $deletion_root (sort {$b <=> $a} @deletion_roots)
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   578
		{
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   579
		my ($count,$exe) = split /\s+/, $deletion_root;
78
7271390ae2c2 Remember more information from rom_content.csv, to add IBY and package information to filter.log
William Roberts <williamr@symbian.org>
parents: 77
diff changeset
   580
		printf FILE "Remove %d files by deleting %s (%s)\n", $count, $exe, $rom_origins{$exe_to_romfile{$exe}};
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   581
		}	
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   582
27
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   583
	print FILE "\n====\n";
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   584
	foreach my $problem (sort @problems)
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   585
		{
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   586
		my ($romfile, $trail) = split /\t/, $problem;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   587
		print FILE "$romfile depends on removed files $trail\n"
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   588
		}
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   589
	close FILE;
c29882e1d694 Add filter_obyfile.pl -l filter.log and -d filtered.oby options, to capture details of the deletions
William Roberts <williamr@symbian.org>
parents: 22
diff changeset
   590
	}
75
b0f4d5be8407 Extend filter_obyfile.pl to report on good exes to delete - see new info in filter.log
William Roberts <williamr@symbian.org>
parents: 57
diff changeset
   591