bc_tools/la_filter.pl
author andy simpson <andrews@symbian.org>
Fri, 15 Oct 2010 16:47:51 +0100
changeset 299 c0fb460d1a21
parent 278 247cb9582bd0
permissions -rw-r--r--
add id for s^4 kits
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     1
#!/usr/bin/perl
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     2
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     3
# Copyright (c) 2009 Symbian Foundation Ltd
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     4
# This component and the accompanying materials are made available
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     6
# which accompanies this distribution, and is available
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     8
#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
     9
# Initial Contributors:
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    11
#	Maciej Seroka, maciejs@symbian.org
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    12
#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    13
# Description:
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    14
#   This is a tool for filtering static BC libraries reports.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    15
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    16
use strict;
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    17
use Getopt::Long;
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    18
use XML::Simple;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    19
use Tie::File;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    20
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    21
my $report;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    22
my $xref_file;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    23
my $destfile;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    24
my $missing_destfile;
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    25
my $pkg_destfile;
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    26
my @lines;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    27
my $line;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    28
my $n;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    29
my $m;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    30
my $counter;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    31
my $short_name;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    32
my $del_ok_issues = 1; # This variable determines whether to delete OK issues first.
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
    33
my $del_non_public = 1; # This variable determines whether to delete non-public API issues.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
    34
my $gen_missing_report = 0; # This variable determines whether to produce report for missing libraries.
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    35
my $issues_num;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    36
my $issue_name;
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    37
my ($xref_name, $xref_type, $xref_line, $xref_hdr, $xref_def);
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    38
my $delete_node;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    39
my @non_public_list;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    40
my $current_item;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    41
my $check_against_xref;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    42
my $temp_lib_num;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    43
my $temp_counter;
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
    44
my $sub_reports = 0; # This variable determines whether to generate sub-reports per package.
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    45
my @lines_to_ignore = ("\\\\build\\\\", "\\\\compsupp\\\\", "\\\\uc_dll."); # This is the list of key words based on which a line potentially containing a package name will be ignored (skipped).
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    46
my @pkgs;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    47
my $baselinedlldir;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    48
my $lib_name;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    49
my $map_name;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    50
my $map_found;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    51
my ($layer_name, $package_name);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    52
my $pkg_found;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    53
my $pkgs_num;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    54
my $add_pkg;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    55
my $nomap;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    56
my $help;
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    57
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    58
sub usage($);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    59
sub help();
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    60
sub usage_error();
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    61
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    62
my %optmap = (  'libraries-report' => \$report,
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    63
			    'xref-file' => \$xref_file,
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    64
			    'baseline-dll-dir' => \$baselinedlldir,
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    65
				'help' => \$help);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    66
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    67
GetOptions(\%optmap,
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    68
          'libraries-report=s',
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    69
          'xref-file=s',
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    70
          'baseline-dll-dir=s',
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    71
		  'help!') 
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    72
          or usage_error();
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    73
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    74
if ($help) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    75
	help();
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    76
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    77
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    78
# --libraries-report is mandatory.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    79
usage_error(), unless (defined($report));
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    80
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    81
# --xref-file is mandatory.
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
    82
usage_error(), unless ((defined($xref_file)) or (!($del_non_public)));
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    83
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    84
# Define output files based on the libraries report name.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    85
$destfile = "filtered_" . $report;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    86
$missing_destfile = "missing_" . $report;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
    87
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    88
# Parse the input XMLs into hashrefs.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    89
print "Parsing " . $report . "... ";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    90
my $current_report = XMLin("./$report", keeproot => 1,
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    91
    forcearray => [ 'header', 'baselineversion', 'currentversion', 'timestamp', 'day', 'month', 'year', 'hour', 'minute', 'second', #
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    92
	'laversion', 'formatversion', 'cmdlineparms', 'parm', 'pname', 'pvalue', 'knownissuesversion', 'os', 'version', 'buildweek', 'issuelist',#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    93
	'library', 'name', 'comparefilename', 'shortname', 'baseplatform', 'currentplatform', 'issue', 'typeinfo', 'typeid', 'funcname', 'newfuncname', 'newfuncpos', #
223
38294310f88b Fixed issue in la_filter.pl of saving comments as separate elements in xml file
Maciej Seroka <maciejs@symbian.org>
parents: 220
diff changeset
    94
	'bc_severity', 'sc_severity', 'status', 'comment', 'funcpos' ], keyattr => [] );
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    95
print "complete \n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    96
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    97
# Get number of libraries.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    98
my $lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
    99
print "Number of all libraries with issues: $lib_num \n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   100
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   101
# Delete known issues.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   102
if ($del_ok_issues) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   103
	$n = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   104
	while ($n < $lib_num) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   105
		$issues_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}};
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   106
		$m = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   107
		while ($m < $issues_num) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   108
			if ($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'status'}->[0]) { # I.e. if any status set (OK / _OK_).
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   109
				splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}},$m, 1);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   110
				$issues_num--;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   111
				print "Known issue in: $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'shortname'}->[0] ...deleted\n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   112
			} else {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   113
				$m++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   114
			}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   115
		}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   116
		if ($issues_num == 0) { # If all issues deleted - remove the whole entry.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   117
			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}},$n, 1);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   118
			$lib_num--;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   119
		} else {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   120
			$n++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   121
		}	
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   122
	}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   123
	# Get number of libraries again.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   124
	$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   125
	print "Number of remaining libraries with issues: $lib_num \n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   126
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   127
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   128
# Delete non-public API issues.
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   129
if ($del_non_public) {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   130
	$n = 0;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   131
	$counter = 1;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   132
	$temp_counter = 0;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   133
	$temp_lib_num = $lib_num;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   134
	# Temporary variables - namespace fix.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   135
	my $count;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   136
	my $temp_issue;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   137
	while ($n < $lib_num) {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   138
		print "Processing library: $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'shortname'}->[0] ( $counter out of $temp_lib_num )\n";
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   139
		$issues_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}};
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   140
		$m = 0;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   141
		while ($m < $issues_num) {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   142
			$delete_node = 1;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   143
			$issue_name = "";
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   144
			# Get issue name based on funcname or newfuncname (If both available get newfuncname).
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   145
			if ($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'newfuncname'}->[0]) {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   146
				$issue_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'newfuncname'}->[0];
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   147
#				print "newfuncname - $issue_name \n";
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   148
			} elsif ($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'funcname'}->[0]) {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   149
				$issue_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'funcname'}->[0];
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   150
#				print "funcname - $issue_name \n";
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   151
			}
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   152
			if ($issue_name) {
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   153
			# Leave only Class name - modified to fix namespace issue.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   154
#			$issue_name =~ s/::.*//;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   155
			# Find '(' and delete all characters following it.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   156
			$issue_name =~ s/\(.*//;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   157
			# Count the number of '::'.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   158
			$count = () = $issue_name =~ /::/g;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   159
			if ($count > 1) { # Means the following format: xx::yy::zz/
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   160
				# Get the 2nd part (yy).
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   161
				($temp_issue, $issue_name) = split /:+/,$issue_name;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   162
			} else { # Means the following format: xx::yy
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   163
				# For 'non-virtual thunk to ' (always refering to a method) - 1st part should be left in.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   164
				$issue_name =~ s/^non-virtual.* //; # Results in no more spaces left in the string.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   165
				# For vtable/typeinfo issues like: typeinfo for CommsFW::TCFDeregisterHookSignal get rid of the 1st part.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   166
				$issue_name =~ s/^.* .*:://; 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   167
				# Leave only the 1st part (xx) for other issues.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   168
				$issue_name =~ s/::.*//;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   169
			}
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   170
				# Find '<' and delete all characters following it, e.g. TMeta<CommsDat
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   171
				$issue_name =~ s/<.*//;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   172
				# Delete for example: 'typeinfo for ', 'vtable for ', etc. - will only be done for the likes of vtable for CTransportSelfSender (without '::').
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   173
				$issue_name =~ s/^.* //; 
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   174
#				print $issue_name . "\n";
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   175
				# Check if Class/Macro already on the internal non-public API list.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   176
				$check_against_xref = 1;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   177
				foreach $current_item (@non_public_list) {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   178
					if (lc($issue_name) eq lc($current_item)) {	# Keep the node to be deleted and skip checking against the xref file.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   179
						$check_against_xref = 0;
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   180
						last;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   181
					}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   182
				}
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   183
				if ($check_against_xref) {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   184
					# Load xref file.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   185
					open FILE, "<$xref_file" or die("Failed to read $xref_file: $!\n");
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   186
					while ($line = <FILE>)
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   187
					{
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   188
						chomp $line;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   189
						($xref_name, $xref_type, $xref_line, $xref_hdr, $xref_def) = split /\s+/,$line;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   190
						if (lc($issue_name) eq lc($xref_name)) { # Mark the node to NOT be deleted.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   191
							# Insert reference to header file.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   192
							$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'refheaderfile'}->[0] = $xref_hdr;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   193
							$delete_node = 0;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   194
							print "Found issue: $issue_name in public header file: $xref_hdr\n";
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   195
							last;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   196
						}
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   197
					}
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   198
					# Close xref file.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   199
					close FILE;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   200
				}
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   201
			} else { # No newfuncname/funcname available (e.g. typeinfo only for missing DLLs or typeid only for not shown ones).
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   202
#				print "Unclassified issue in $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'shortname'}->[0] \n";
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   203
			}
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   204
			if ($delete_node) { # Delete the issue (Not public API-related).
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   205
				splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}},$m, 1);
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   206
				$issues_num--;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   207
				if (($issue_name) && ($check_against_xref)) { # Looked for not found in the xref file - add the issue to the internal non-public API list.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   208
					push @non_public_list, $issue_name;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   209
				}
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   210
				$temp_counter++; # To count how many issues deleted.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   211
			} else {
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   212
				$m++;
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   213
			}
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   214
		}
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   215
		if ($issues_num == 0) { # If all issues deleted - remove the whole entry.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   216
			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}},$n, 1);
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   217
			$lib_num--;
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   218
		} else {
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   219
			$n++;
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   220
		}
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   221
		$counter++;
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   222
	}
278
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   223
	print "$temp_counter issue(s) has been deleted \n";
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   224
	# Get number of libraries again.
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   225
	$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
247cb9582bd0 Updated scripts for filtering BC reports
Maciej Seroka <maciejs@symbian.org>
parents: 223
diff changeset
   226
	print "Final number of libraries with public API-related issues: $lib_num \n";
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   227
}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   228
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   229
# Write new XML to dest file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   230
open OUT,">$destfile" or die("Cannot open file \"$destfile\" for writing. $!\n");
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   231
print OUT XMLout($current_report, keeproot => 1);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   232
close OUT;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   233
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   234
# Free up memory resources.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   235
$current_report = ();
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   236
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   237
# Insert:	<?xml version="1.0" encoding="ASCII" standalone="no" ?>
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   238
#			<?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?>
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   239
tie @lines, 'Tie::File', $destfile or die ("Cannot tie file \"$destfile\". $!\n");
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   240
unshift @lines, "<?xml-stylesheet type=\"text/xsl\" href=\"BBCResults.xsl\"?>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   241
unshift @lines, "<?xml version=\"1.0\" encoding=\"ASCII\" standalone=\"no\" ?>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   242
untie @lines;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   243
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   244
# Produce report for missing libraries.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   245
if ($gen_missing_report) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   246
	# Parse the input XMLs into hashrefs again.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   247
	print "Parsing " . $report . "... ";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   248
	my $current_report = XMLin("./$report", keeproot => 1,
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   249
		forcearray => [ 'header', 'baselineversion', 'currentversion', 'timestamp', 'day', 'month', 'year', 'hour', 'minute', 'second', #
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   250
		'laversion', 'formatversion', 'cmdlineparms', 'parm', 'pname', 'pvalue', 'knownissuesversion', 'os', 'version', 'buildweek', 'issuelist',#
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   251
		'library', 'name', 'comparefilename', 'shortname', 'baseplatform', 'currentplatform', 'issue', 'typeinfo', 'typeid', 'funcname', 'newfuncname', 'newfuncpos', #
223
38294310f88b Fixed issue in la_filter.pl of saving comments as separate elements in xml file
Maciej Seroka <maciejs@symbian.org>
parents: 220
diff changeset
   252
		'bc_severity', 'sc_severity', 'status', 'comment', 'funcpos' ], keyattr => [] );
215
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   253
	print "complete \n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   254
	print "Generating report for missing libraries... ";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   255
	# Get number of libraries.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   256
	$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   257
	$n = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   258
	while ($n < $lib_num) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   259
		$issues_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}};
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   260
		$m = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   261
		$delete_node = 1;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   262
		while ($m < $issues_num) {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   263
			if (($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'typeid'}->[0] eq "13") && #
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   264
				($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'status'}->[0] ne "OK")) { 
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   265
					# If typeid=13 (DLL is missing in current SDK) and unknown issue - keep the node.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   266
					$delete_node = 0;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   267
					last;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   268
				}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   269
			$m++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   270
		}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   271
		if ($delete_node) { # Remove the whole node (i.e. library).
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   272
			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}},$n, 1);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   273
			$lib_num--;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   274
		} else {
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   275
			$n++;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   276
		}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   277
	}
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   278
	print "complete\n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   279
	# Get number of libraries again.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   280
	$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   281
	print "Number of missing libraries: $lib_num \n";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   282
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   283
	# Write new XML to dest file.
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   284
	open OUT,">$missing_destfile" or die("Cannot open file \"$missing_destfile\" for writing. $!\n");
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   285
	print OUT XMLout($current_report, keeproot => 1);
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   286
	close OUT;
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   287
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   288
	# Insert:	<?xml version="1.0" encoding="ASCII" standalone="no" ?>
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   289
	#			<?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?>
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   290
	tie @lines, 'Tie::File', $missing_destfile or die ("Cannot tie file \"$missing_destfile\". $!\n");
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   291
	unshift @lines, "<?xml-stylesheet type=\"text/xsl\" href=\"BBCResults.xsl\"?>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   292
	unshift @lines, "<?xml version=\"1.0\" encoding=\"ASCII\" standalone=\"no\" ?>";
74890d706f0c Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff changeset
   293
	untie @lines;
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   294
}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   295
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   296
if (($sub_reports) && ($gen_missing_report)) { # Generate sub-reports per package.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   297
	# Parse the input XMLs into hashrefs again.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   298
	print "Parsing " . $missing_destfile . "... ";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   299
	my $current_report = XMLin("./$missing_destfile", keeproot => 1,
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   300
		forcearray => [ 'header', 'baselineversion', 'currentversion', 'timestamp', 'day', 'month', 'year', 'hour', 'minute', 'second', #
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   301
		'laversion', 'formatversion', 'cmdlineparms', 'parm', 'pname', 'pvalue', 'knownissuesversion', 'os', 'version', 'buildweek', 'issuelist',#
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   302
		'library', 'name', 'comparefilename', 'shortname', 'baseplatform', 'currentplatform', 'issue', 'typeinfo', 'typeid', 'funcname', 'newfuncname', 'newfuncpos', #
223
38294310f88b Fixed issue in la_filter.pl of saving comments as separate elements in xml file
Maciej Seroka <maciejs@symbian.org>
parents: 220
diff changeset
   303
		'bc_severity', 'sc_severity', 'status', 'comment', 'funcpos' ], keyattr => [] );
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   304
	print "complete \n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   305
	$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   306
	if (!defined($baselinedlldir)) { # Define baselinedlldir.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   307
		$n = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   308
		foreach (@{$current_report->{'bbcresults'}->{'header'}->[0]->{'cmdlineparms'}->[0]->{'parm'}}) { # Find baselinedlldir.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   309
			if ($current_report->{'bbcresults'}->{'header'}->[0]->{'cmdlineparms'}->[0]->{'parm'}->[$n]->{'pname'}->[0] eq "baselinedlldir") {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   310
				$baselinedlldir = $current_report->{'bbcresults'}->{'header'}->[0]->{'cmdlineparms'}->[0]->{'parm'}->[$n]->{'pvalue'}->[0];
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   311
				last;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   312
			}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   313
			$n++;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   314
		}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   315
	}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   316
	print "baselinedlldir: $baselinedlldir\n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   317
	# Create the list of packages that link to missing libraries and generate sub-report for no-map file libraries.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   318
	$nomap = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   319
	$n = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   320
	while ($n < $lib_num) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   321
		$lib_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'shortname'}->[0];
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   322
		$map_name = $baselinedlldir . "\\" . $lib_name . ".map";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   323
		$map_found = 1;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   324
		# Find and open corresponding map file (.map or .dll.map).
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   325
		open (FILE, "<$map_name") or $map_name = $baselinedlldir . "\\" . $lib_name . ".dll.map" and open (FILE, "<$map_name") or print "No map file found for $lib_name\n" and $map_found = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   326
		if ($map_found) { 
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   327
#			print "Found: $map_name for $lib_name\n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   328
			$pkg_found = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   329
			while ($line = <FILE>)
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   330
			{
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   331
				chomp $line;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   332
				# Get rid of spaces at the beginning.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   333
				$line =~ s/^\s+//;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   334
				if ($line =~ m/\\sf\\/) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   335
					$pkg_found = 1; # Package potentially found.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   336
					# Check against lines_to_ignore.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   337
					foreach $current_item (@lines_to_ignore) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   338
						if ($line =~ m/($current_item)/) { # Skip the line.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   339
							$pkg_found = 0; # Change it back to not found.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   340
							last;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   341
						}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   342
					}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   343
				}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   344
				if ($pkg_found) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   345
					# Get rid of \sf\ and the part it follows.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   346
					$line =~ s/^.*\\sf\\//;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   347
					# Get only the package name (in between \ and \).
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   348
					($layer_name, $package_name) = split /\\/,$line;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   349
					print "Package: $package_name found for: $lib_name (based on $map_name)\n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   350
					$pkgs_num = @pkgs;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   351
					if ($pkgs_num == 0) { # Add the first package name by default.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   352
						push @pkgs, $package_name;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   353
					} else {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   354
						$add_pkg = 1;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   355
						$m = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   356
						while ($m < $pkgs_num) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   357
							if ($package_name eq @pkgs[$m]) { # Do not add a new package name.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   358
								$add_pkg = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   359
							}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   360
							$m++;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   361
						}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   362
						if ($add_pkg) { # Add the new package name.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   363
							push @pkgs, $package_name;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   364
						}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   365
					}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   366
					last;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   367
				}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   368
			}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   369
			close FILE;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   370
			# Delete the node (to generate sub-report for libraries with no map file.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   371
			splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}},$n, 1);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   372
			$lib_num--;					
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   373
		} else {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   374
			$nomap++;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   375
			$n++;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   376
		}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   377
	}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   378
	print "Number of libraries with no map file (most likely not a part of Public API): " . $nomap . "\n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   379
	if ($nomap > 0) { # Save sub-report for no-map file libraries.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   380
		# Write new XML to dest file.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   381
		$pkg_destfile = "missing_with_no_map_file_" . $report;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   382
		open OUT,">$pkg_destfile" or die("Cannot open file \"$pkg_destfile\" for writing. $!\n");
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   383
		print OUT XMLout($current_report, keeproot => 1);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   384
		close OUT;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   385
		# Insert:	<?xml version="1.0" encoding="ASCII" standalone="no" ?>
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   386
		#			<?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?>
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   387
		tie @lines, 'Tie::File', $pkg_destfile or die ("Cannot tie file \"$pkg_destfile\". $!\n");
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   388
		unshift @lines, "<?xml-stylesheet type=\"text/xsl\" href=\"BBCResults.xsl\"?>";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   389
		unshift @lines, "<?xml version=\"1.0\" encoding=\"ASCII\" standalone=\"no\" ?>";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   390
		untie @lines;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   391
	}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   392
	print "Number of packages: " . @pkgs . "\n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   393
	# Generate sub reports for all packages.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   394
	foreach $current_item (@pkgs) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   395
	# Parse the input XMLs into hashrefs again.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   396
		print "Parsing " . $missing_destfile . "... ";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   397
		my $current_report = XMLin("./$missing_destfile", keeproot => 1,
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   398
			forcearray => [ 'header', 'baselineversion', 'currentversion', 'timestamp', 'day', 'month', 'year', 'hour', 'minute', 'second', #
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   399
			'laversion', 'formatversion', 'cmdlineparms', 'parm', 'pname', 'pvalue', 'knownissuesversion', 'os', 'version', 'buildweek', 'issuelist',#
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   400
			'library', 'name', 'comparefilename', 'shortname', 'baseplatform', 'currentplatform', 'issue', 'typeinfo', 'typeid', 'funcname', 'newfuncname', 'newfuncpos', #
223
38294310f88b Fixed issue in la_filter.pl of saving comments as separate elements in xml file
Maciej Seroka <maciejs@symbian.org>
parents: 220
diff changeset
   401
			'bc_severity', 'sc_severity', 'status', 'comment', 'funcpos' ], keyattr => [] );
220
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   402
		print "complete \n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   403
		$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   404
		$n = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   405
		print "Processing libraries for $current_item... ";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   406
		while ($n < $lib_num) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   407
			$lib_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'shortname'}->[0];
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   408
			$map_name = $baselinedlldir . "\\" . $lib_name . ".map";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   409
			$map_found = 1;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   410
			# Find and open corresponding map file (.map or .dll.map).
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   411
			open (FILE, "<$map_name") or $map_name = $baselinedlldir . "\\" . $lib_name . ".dll.map" and open (FILE, "<$map_name") or $map_found = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   412
			if ($map_found) { 
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   413
				$pkg_found = 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   414
				while ($line = <FILE>)
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   415
				{
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   416
					chomp $line;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   417
					# Get rid of spaces at the beginning.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   418
					$line =~ s/^\s+//;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   419
					if ($line =~ m/\\sf\\/) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   420
						$pkg_found = 1; # Package potentially found.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   421
						# Check against lines_to_ignore.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   422
						foreach $current_item (@lines_to_ignore) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   423
							if ($line =~ m/($current_item)/) { # Skip the line.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   424
								$pkg_found = 0; # Change it back to not found.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   425
								last;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   426
							}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   427
						}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   428
					}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   429
					if ($pkg_found) {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   430
						# Get rid of \sf\ and the part it follows.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   431
						$line =~ s/^.*\\sf\\//;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   432
						# Get only the package name (in between \ and \).
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   433
						($layer_name, $package_name) = split /\\/,$line;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   434
						last;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   435
					}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   436
				}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   437
				close FILE;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   438
				if ($package_name ne $current_item) { # Remove the node from the report for the current package.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   439
					splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}},$n, 1);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   440
					$lib_num--;					
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   441
				} else {
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   442
					$n++;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   443
				}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   444
			} else { # Delete the node (library with no-map file).
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   445
				splice(@{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}},$n, 1);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   446
				$lib_num--;					
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   447
			}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   448
		}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   449
		# Write new XML to dest file.
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   450
		$pkg_destfile = $current_item . "_" . $missing_destfile;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   451
		open OUT,">$pkg_destfile" or die("Cannot open file \"$pkg_destfile\" for writing. $!\n");
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   452
		print OUT XMLout($current_report, keeproot => 1);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   453
		close OUT;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   454
		# Insert:	<?xml version="1.0" encoding="ASCII" standalone="no" ?>
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   455
		#			<?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?>
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   456
		tie @lines, 'Tie::File', $pkg_destfile or die ("Cannot tie file \"$pkg_destfile\". $!\n");
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   457
		unshift @lines, "<?xml-stylesheet type=\"text/xsl\" href=\"BBCResults.xsl\"?>";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   458
		unshift @lines, "<?xml version=\"1.0\" encoding=\"ASCII\" standalone=\"no\" ?>";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   459
		untie @lines;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   460
		print "complete \n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   461
		$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}};
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   462
		print "Number of missing libraries in $current_item package: $lib_num\n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   463
	}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   464
}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   465
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   466
exit 0;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   467
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   468
sub usage($)
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   469
{
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   470
    my $error = shift;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   471
    my $fh = $error == 0 ? *STDOUT : *STDERR;
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   472
    print $fh "la_filter.pl\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   473
            "Specify the libraries report and xref file\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   474
            "synopsis:\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   475
            "  la_filter.pl --help\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   476
            "  la_filter.pl [--libraries-report=XML_FILE] [--xref-file=TXT_FILE] [--baseline-dll-dir=PATH] \n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   477
            "options:\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   478
            "  --help                        Display this help and exit.\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   479
            "  --libraries-report=XML_FILE   XML_FILE is the name of the libraries report xml file.\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   480
            "  --xref-file=TXT_FILE          TXT_FILE is the file containing the index of source code definitions generated by Ctags.\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   481
            "  --baseline-dll-dir=PATH       PATH is the full path to the directory containing map files (e.g. \\epoc32\\release\\armv5\\urel).\n" .
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   482
			"                                If not specified then the baselinedlldir param from the libraries report will be used.\n";
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   483
    exit $error;            
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   484
}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   485
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   486
sub help()
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   487
{
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   488
    usage(0);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   489
}
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   490
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   491
sub usage_error()
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   492
{
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   493
    usage(1);
e662a2267ea5 Implemented feature to generate sub-reports for missing libraries in la_filter.pl
Maciej Seroka <maciejs@symbian.org>
parents: 215
diff changeset
   494
}