common/tools/analysis/analyse_components.pl
author MattD <mattd@symbian.org>
Fri, 07 Aug 2009 15:54:52 +0100
changeset 309 8b5fb484a920
parent 160 09e24be89e4b
permissions -rw-r--r--
catchup merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
131
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     1
#!/usr/bin/perl
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     2
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     3
# Copyright (c) 2009 Symbian Foundation Ltd
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     4
# This component and the accompanying materials are made available
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     6
# which accompanies this distribution, and is available
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     8
#
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
     9
# Initial Contributors:
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    11
# 
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    12
# Contributors:
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    13
#
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    14
# Description:
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    15
# Adds info form a file to a CSV
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    16
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    17
use strict;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    18
use HTTP::Date;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    19
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    20
my $srccsvfile = shift @ARGV;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    21
my $whatlogfile = shift @ARGV;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    22
my @sysmodelfiles = @ARGV;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    23
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    24
if(! -e $srccsvfile)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    25
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    26
  die "cannot find $srccsvfile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    27
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    28
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    29
if(! -e $whatlogfile)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    30
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    31
  die "cannot find $whatlogfile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    32
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    33
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    34
foreach my $sysmodelfile (@sysmodelfiles)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    35
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    36
	if(! -e $sysmodelfile)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    37
	{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    38
	  die "cannot find $sysmodelfile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    39
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    40
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    41
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    42
# Search for timestamp threshold in whatlog file
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    43
# It corresponds to the first timestamp for which the target was genuinly rebuilt
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    44
# Every target that has a timestamp below is considered as not rebuilt properly
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    45
open(WHATLOG,"<$whatlogfile") or die "Error: Couldn't open $whatlogfile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    46
my %bldtimes;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    47
my $timestampLimit = 0;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    48
while (my $line = <WHATLOG>)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    49
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    50
	if($line =~ m/,\s*(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})\s*$/){
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    51
		$bldtimes{str2time($1)} = $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    52
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    53
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    54
my $previoustime = 0;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    55
foreach my $decimaltime (sort(keys %bldtimes))
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    56
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    57
  if ($previoustime == 0) {$previoustime = $decimaltime;}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    58
  if ( ($decimaltime - (30*60) ) > $previoustime )
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    59
  {
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    60
	$timestampLimit = $bldtimes{$decimaltime};
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    61
	print "Timestamp Threshold found: $timestampLimit\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    62
	last;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    63
  }
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    64
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    65
close(WHATLOG);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    66
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    67
# Create the Package List from sources.csv
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    68
# And assign license type
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    69
# Everything that is not found FCL or MCL are considered RND
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    70
my @pkgList;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    71
open(SRCCSV,"<$srccsvfile") or die "Error: Couldn't open $srccsvfile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    72
while (my $line = <SRCCSV>)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    73
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    74
	if ($line =~ m/^source,/) {next;}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    75
	if ($line =~ m/^([^,]+),\/([^,]+),/){
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    76
		my $pkglicense = $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    77
		my $pkgpath=$2;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    78
		if ($pkglicense =~ m/^[^,]+\/(\w+)\/(MCL|FCL)\/\w+/i) {$pkglicense = uc($1);}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    79
		else {$pkglicense = "RND";}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    80
		push @pkgList, "$pkgpath,$pkglicense";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    81
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    82
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    83
print "Number of Packages to analyse: $#pkgList\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    84
close(SRCCSV);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    85
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    86
# Create System Definition Component List
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    87
my @sysdefcomplist;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    88
foreach my $sysdeffile (@sysmodelfiles)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    89
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    90
	open(SYSDEF,"<$sysdeffile") or die "Error: Couldn't open $sysdeffile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    91
	while (my $line = <SYSDEF>)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    92
	{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    93
		if ($line =~ m/(\s*)<!--\s*(<.*?>)\s*-->/) {next;}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    94
		if ($line =~m/bldFile=\"([^"]*)"/i)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    95
		{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    96
			#push @sysdefcomplist, &getComponentInfo($1);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    97
			push @sysdefcomplist, $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    98
		}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
    99
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   100
	close(SYSDEF);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   101
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   102
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   103
# For each package in the list, process the whatlog to verify if it's built clean
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   104
# And build the final summary log
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   105
open(WHATLOG,"<$whatlogfile") or die "Error: Couldn't open $whatlogfile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   106
my @whatlogs = <WHATLOG>;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   107
my @outputList;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   108
foreach my $package (@pkgList)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   109
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   110
	my $corruptbldinfcount = 0;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   111
	# Write a CSV entry for pkgpath, license
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   112
	my $pkgline = "$package";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   113
	# Search whatlog and match -> extract bldfiles -> clean vs not_clean
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   114
	$package =~ s/,.*//;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   115
	foreach my $whatlog (@whatlogs)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   116
	{	
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   117
		if ($whatlog =~ /^[^,]+,($package\/[^,]+),[^,]*,[^,]*,[^,]*,[^,]*(,([^,]*))?(,([^,]*))?/)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   118
		{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   119
			my $bldfilepath = $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   120
			my $status = $3;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   121
			my $timestamp = $5;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   122
			if (($status =~ /fail/i) || ($status eq "") ||
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   123
				(($status =~ /untouched/i) and ($timestamp ne "") and (str2time($timestamp) < str2time($timestampLimit))) )
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   124
			{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   125
				chomp($status);chomp($timestamp);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   126
				$status = "KO ($status - $timestamp)";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   127
			}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   128
			else {$status = "OK"; }
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   129
			#if ($status =~ /KO/ ) {print "$pkgline,$bldfilepath,$status\n";}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   130
			push @outputList, "$pkgline,$bldfilepath,$status\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   131
		}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   132
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   133
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   134
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   135
# Write the Full Analysis log
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   136
open(OUTPUT,">PkgComponentAnalysisFull.csv") or die "Error: Couldn't open PkgComponentAnalysisFull.csv for writing\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   137
print OUTPUT "Package Path (from Sources.csv), License, BldFile (from whatlog), Status\n"; 
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   138
print OUTPUT @outputList;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   139
close(OUTPUT);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   140
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   141
# Keep only uniq bldfile in the list
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   142
# And calculate final status
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   143
#my @uniq = keys %{{ map { $_ => 1 } @outputList }};
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   144
my %seen = ();
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   145
my $value; my $remains; my $status;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   146
foreach my $item (@outputList) {
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   147
	$item =~ /^([^,]+,[^,]+,([^,]+)),([^,]+)/;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   148
	$remains = $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   149
	$value = $2;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   150
	$status = $3;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   151
	chomp($status);
145
430173497dd4 Reorder the PkgComponentAnalysisSummary.csv columns, and change "KO" to "Bad".
William Roberts <williamr@symbian.org>
parents: 131
diff changeset
   152
	if ($status ne "OK") {$status = "Bad"};
131
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   153
    if ($seen{$value}) 
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   154
	{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   155
		$seen{$value} =~ /^[^,]+,([^,]+)/;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   156
		my $currentstatus = $1;
145
430173497dd4 Reorder the PkgComponentAnalysisSummary.csv columns, and change "KO" to "Bad".
William Roberts <williamr@symbian.org>
parents: 131
diff changeset
   157
		if ($currentstatus eq "Bad")
131
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   158
		{
145
430173497dd4 Reorder the PkgComponentAnalysisSummary.csv columns, and change "KO" to "Bad".
William Roberts <williamr@symbian.org>
parents: 131
diff changeset
   159
			$status = "Bad";
131
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   160
		}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   161
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   162
	$seen{$value} = "$remains,$status\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   163
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   164
my @uniq = values(%seen);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   165
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   166
# Prepend system model info (block name, component name)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   167
foreach my $line (@uniq)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   168
{
145
430173497dd4 Reorder the PkgComponentAnalysisSummary.csv columns, and change "KO" to "Bad".
William Roberts <williamr@symbian.org>
parents: 131
diff changeset
   169
  chomp $line;
131
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   170
	if ($line =~ /^[^,]+,[^,]+,([^,]+),/)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   171
	{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   172
		my $bldfile = $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   173
		my $sysmodelinfo = &getSysModelInfo($bldfile);
145
430173497dd4 Reorder the PkgComponentAnalysisSummary.csv columns, and change "KO" to "Bad".
William Roberts <williamr@symbian.org>
parents: 131
diff changeset
   174
		$line = "$line, $sysmodelinfo\n";
131
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   175
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   176
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   177
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   178
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   179
# Write the summary log
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   180
open(OUTPUT,">PkgComponentAnalysisSummary.csv") or die "Error: Couldn't open PkgComponentAnalysisSummary.csv for writing\n";
160
09e24be89e4b Add the missing column heading in PkgComponentAnalysisSummary.csv
William Roberts <williamr@symbian.org>
parents: 145
diff changeset
   181
print OUTPUT "Source Path (from Sources.csv), License, BldFile (from whatlog), Status, Package Name, Component Name\n"; 
131
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   182
print OUTPUT @uniq;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   183
close(OUTPUT);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   184
close(WHATLOG);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   185
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   186
# Status statistics
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   187
my $componentOkCount = 0;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   188
my $componentKoCount = 0;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   189
my $totalcompCount = 0;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   190
foreach my $line (@uniq)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   191
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   192
	if ($line =~ /OK$/) {$componentOkCount++;}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   193
	else {$componentKoCount++;}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   194
	$totalcompCount++;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   195
}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   196
print "Total number of Components: $totalcompCount\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   197
print "Number of Components Cleanly rebuilt: $componentOkCount\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   198
print "Number of Components not rebuilt properly: $componentKoCount\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   199
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   200
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   201
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   202
sub getSysModelInfo
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   203
{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   204
	my $bldfilepath = shift;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   205
	
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   206
	# remove prepending sf dir, and trailing bld.inf
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   207
	$bldfilepath =~ s/^sf\///;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   208
	$bldfilepath =~ s/\/bld.inf$//i;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   209
	#print "Looking for bldfile path: $bldfilepath ...\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   210
	
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   211
	my $packageName = "";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   212
	my $componentName = "";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   213
	
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   214
	MODEL_LOOP:	foreach my $sysmodelfile (@sysmodelfiles)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   215
	{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   216
		open(SYSFILE,"<$sysmodelfile") or die "Error: Couldn't open $sysmodelfile\n";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   217
		my @model_lines = <SYSFILE>;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   218
		foreach my $line (@model_lines)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   219
		{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   220
			$line =~ s/\\/\//g;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   221
			
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   222
			if ($line =~ m/bldFile=\"$bldfilepath"/i)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   223
			{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   224
				#print "Component $packageName/$componentName found in model $sysmodelfile\n"; 
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   225
				last MODEL_LOOP;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   226
			}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   227
			elsif ($line =~ m/<component/)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   228
			{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   229
				$line =~m/\slong-name="([^"]*)"/;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   230
				$componentName = $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   231
			}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   232
			elsif ($line=~ m/<\/component/)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   233
			{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   234
				$componentName = "";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   235
			}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   236
			elsif ($line =~ m/<block/)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   237
			{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   238
				$line =~m/\slong-name="([^"]*)"/;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   239
				$packageName = $1;
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   240
			}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   241
			elsif ($line=~ m/<\/block/)
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   242
			{
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   243
				$packageName = "";				
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   244
			}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   245
		}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   246
		close(SYSFILE);
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   247
	}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   248
	
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   249
	# One mode file remains open if match found
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   250
	if ($packageName ne "") { close(SYSFILE)}
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   251
	
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   252
	return "$packageName, $componentName";
1f3285cd5668 Added analyse_components.pl and related call to build.xml
thomase
parents:
diff changeset
   253
}