author | maciejs |
Mon, 12 Apr 2010 11:55:43 +0100 | |
changeset 215 | 74890d706f0c |
child 220 | e662a2267ea5 |
permissions | -rw-r--r-- |
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; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
17 |
use XML::Simple; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
18 |
use File::Copy; |
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 |
use Data::Dumper; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
21 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
22 |
my $report; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
23 |
my $xref_file; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
24 |
my $destfile; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
25 |
my $missing_destfile; |
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. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
33 |
my $gen_missing_report = 1; # This variable determines whether to produce report for missing libraries. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
34 |
my $issues_num; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
35 |
my $issue_name; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
36 |
my $xref_name; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
37 |
my $xref_type; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
38 |
my $xref_line; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
39 |
my $xref_hdr; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
40 |
my $xref_def; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
41 |
my $delete_node; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
42 |
my @non_public_list; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
43 |
my $current_item; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
44 |
my $check_against_xref; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
45 |
my $temp_lib_num; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
46 |
my $temp_counter; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
47 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
48 |
if ($ARGV[1]) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
49 |
$report = $ARGV[0]; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
50 |
$xref_file = $ARGV[1]; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
51 |
$destfile = "filtered_" . $report; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
52 |
$missing_destfile = "missing_" . $report; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
53 |
} else { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
54 |
die "Missing parameter(s). For example: la_filter.pl libraries_report.xml my_xref_file.txt"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
55 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
56 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
57 |
# Parse the input XMLs into hashrefs. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
58 |
print "Parsing " . $report . "... "; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
59 |
my $current_report = XMLin("./$report", keeproot => 1, |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
60 |
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
|
61 |
'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
|
62 |
'library', 'name', 'comparefilename', 'shortname', 'baseplatform', 'currentplatform', 'issue', 'typeinfo', 'typeid', 'funcname', 'newfuncname', 'newfuncpos', # |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
63 |
'bc_severity', 'sc_severity', 'status', 'funcpos' ], keyattr => [] ); |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
64 |
print "complete \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
65 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
66 |
# Get number of libraries. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
67 |
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
|
68 |
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
|
69 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
70 |
# Delete known issues. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
71 |
if ($del_ok_issues) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
72 |
$n = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
73 |
while ($n < $lib_num) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
74 |
$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
|
75 |
$m = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
76 |
while ($m < $issues_num) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
77 |
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
|
78 |
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
|
79 |
$issues_num--; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
80 |
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
|
81 |
} else { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
82 |
$m++; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
83 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
84 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
85 |
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
|
86 |
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
|
87 |
$lib_num--; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
88 |
} else { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
89 |
$n++; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
90 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
91 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
92 |
# Get number of libraries again. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
93 |
$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}}; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
94 |
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
|
95 |
} |
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 |
# Delete non-public API issues. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
98 |
$n = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
99 |
$counter = 1; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
100 |
$temp_counter = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
101 |
$temp_lib_num = $lib_num; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
102 |
# Temporary variables - namespace fix. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
103 |
my $count; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
104 |
my $temp_issue; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
105 |
while ($n < $lib_num) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
106 |
print "Processing library: $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'shortname'}->[0] ( $counter out of $temp_lib_num )\n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
107 |
$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
|
108 |
$m = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
109 |
while ($m < $issues_num) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
110 |
$delete_node = 1; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
111 |
$issue_name = ""; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
112 |
# Get issue name based on funcname or newfuncname (If both available get newfuncname). |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
113 |
if ($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'newfuncname'}->[0]) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
114 |
$issue_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'newfuncname'}->[0]; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
115 |
# print "newfuncname - $issue_name \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
116 |
} elsif ($current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'funcname'}->[0]) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
117 |
$issue_name = $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'funcname'}->[0]; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
118 |
# print "funcname - $issue_name \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
119 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
120 |
if ($issue_name) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
121 |
# 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
|
122 |
# $issue_name =~ s/::.*//; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
123 |
# Find '(' and delete all characters following it. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
124 |
$issue_name =~ s/\(.*//; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
125 |
# Count the number of '::'. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
126 |
$count = () = $issue_name =~ /::/g; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
127 |
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
|
128 |
# Get the 2nd part (yy). |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
129 |
($temp_issue, $issue_name) = split /:+/,$issue_name; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
130 |
} else { # Means the following format: xx::yy |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
131 |
# 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
|
132 |
$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
|
133 |
# 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
|
134 |
$issue_name =~ s/^.* .*:://; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
135 |
# 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
|
136 |
$issue_name =~ s/::.*//; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
137 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
138 |
# Find '<' and delete all characters following it, e.g. TMeta<CommsDat |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
139 |
$issue_name =~ s/<.*//; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
140 |
# Delete for example: 'typeinfo for ', 'vtable for ', etc. - will only be done for the likes of vtable for CTransportSelfSender (without '::'). |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
141 |
$issue_name =~ s/^.* //; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
142 |
# print $issue_name . "\n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
143 |
# Check if Class/Macro already on the internal non-public API list. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
144 |
$check_against_xref = 1; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
145 |
foreach $current_item (@non_public_list) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
146 |
if (lc($issue_name) eq lc($current_item)) { # Keep the node to be deleted and skip checking against the xref file. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
147 |
$check_against_xref = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
148 |
last; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
149 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
150 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
151 |
if ($check_against_xref) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
152 |
# Load xref file. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
153 |
open FILE, "<$xref_file" or print "Failed to read $xref_file: $!\n" and return; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
154 |
while ($line = <FILE>) |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
155 |
{ |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
156 |
chomp $line; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
157 |
($xref_name, $xref_type, $xref_line, $xref_hdr, $xref_def) = split /\s+/,$line; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
158 |
if (lc($issue_name) eq lc($xref_name)) { # Mark the node to NOT be deleted. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
159 |
# Insert reference to header file. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
160 |
$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'issue'}->[$m]->{'refheaderfile'}->[0] = $xref_hdr; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
161 |
$delete_node = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
162 |
print "Found issue: $issue_name in public header file: $xref_hdr\n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
163 |
last; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
164 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
165 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
166 |
# Close xref file. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
167 |
close FILE; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
168 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
169 |
} else { # No newfuncname/funcname available (e.g. typeinfo only for missing DLLs or typeid only for not shown ones). |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
170 |
# print "Unclassified issue in $current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}->[$n]->{'shortname'}->[0] \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
171 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
172 |
if ($delete_node) { # Delete the issue (Not public API-related). |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
173 |
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
|
174 |
$issues_num--; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
175 |
if (($issue_name) && ($check_against_xref)) { # Looked for not found in the xref file - add the issue to the internal non-public API list. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
176 |
push @non_public_list, $issue_name; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
177 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
178 |
$temp_counter++; # To count how many issues deleted. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
179 |
} else { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
180 |
$m++; |
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 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
183 |
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
|
184 |
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
|
185 |
$lib_num--; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
186 |
} else { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
187 |
$n++; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
188 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
189 |
$counter++; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
190 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
191 |
print "$temp_counter issue(s) has been deleted \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
192 |
# Get number of libraries again. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
193 |
$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}}; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
194 |
print "Final number of libraries with public API-related issues: $lib_num \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
195 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
196 |
# Write new XML to dest file. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
197 |
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
|
198 |
print OUT XMLout($current_report, keeproot => 1); |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
199 |
close OUT; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
200 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
201 |
# 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
|
202 |
# <?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?> |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
203 |
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
|
204 |
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
|
205 |
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
|
206 |
untie @lines; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
207 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
208 |
# Produce report for missing libraries. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
209 |
if ($gen_missing_report) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
210 |
# Parse the input XMLs into hashrefs again. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
211 |
print "Parsing " . $report . "... "; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
212 |
my $current_report = XMLin("./$report", keeproot => 1, |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
213 |
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
|
214 |
'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
|
215 |
'library', 'name', 'comparefilename', 'shortname', 'baseplatform', 'currentplatform', 'issue', 'typeinfo', 'typeid', 'funcname', 'newfuncname', 'newfuncpos', # |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
216 |
'bc_severity', 'sc_severity', 'status', 'funcpos' ], keyattr => [] ); |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
217 |
print "complete \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
218 |
print "Generating report for missing libraries... "; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
219 |
# Get number of libraries. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
220 |
$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}}; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
221 |
$n = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
222 |
while ($n < $lib_num) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
223 |
$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
|
224 |
$m = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
225 |
$delete_node = 1; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
226 |
while ($m < $issues_num) { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
227 |
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
|
228 |
($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
|
229 |
# 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
|
230 |
$delete_node = 0; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
231 |
last; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
232 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
233 |
$m++; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
234 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
235 |
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
|
236 |
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
|
237 |
$lib_num--; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
238 |
} else { |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
239 |
$n++; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
240 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
241 |
} |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
242 |
print "complete\n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
243 |
# Get number of libraries again. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
244 |
$lib_num = @{$current_report->{'bbcresults'}->{'issuelist'}->[0]->{'library'}}; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
245 |
print "Number of missing libraries: $lib_num \n"; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
246 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
247 |
# Write new XML to dest file. |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
248 |
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
|
249 |
print OUT XMLout($current_report, keeproot => 1); |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
250 |
close OUT; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
251 |
|
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
252 |
# 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
|
253 |
# <?xml-stylesheet type="text/xsl" href="BBCResults.xsl"?> |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
254 |
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
|
255 |
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
|
256 |
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
|
257 |
untie @lines; |
74890d706f0c
Added tools for filtering bc reports and updating known issues file
maciejs
parents:
diff
changeset
|
258 |
} |