code_churn/fbf_churn.pl
author Simon Howkins <simonh@symbian.org>
Mon, 09 Nov 2009 14:27:03 +0000
changeset 104 1350a673dd5f
parent 54 7b39c2ae2526
child 157 27cf0a88d449
permissions -rw-r--r--
Alternative script for generating release note information about package changes and FCL usage. Uses the sources.csv and sysdef, so doesn't need to access the release archive to access previous package lists or names, and can work concurrently with other build analysis steps.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     1
#! perl -w
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     2
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     3
# Copyright (c) 2009 Symbian Foundation Ltd
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     4
# This component and the accompanying materials are made available
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     6
# which accompanies this distribution, and is available
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     8
#
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
     9
# Initial Contributors:
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    11
# 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    12
# Contributors:
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    13
#
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    14
# Description:
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    15
#
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    16
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    17
use strict;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    18
use Getopt::Long;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    19
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    20
use FindBin;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    21
#my $churn_core = "D:\\mirror\\churn_core.pl";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    22
my $churn_core = "$FindBin::Bin\\churn_core.pl";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    23
my $churn_output_temp = "$FindBin::Bin\\fbf_churn_output";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    24
mkdir $churn_output_temp;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    25
54
7b39c2ae2526 Located clone_all_packages relative to the location of fbf_churn.
Chetan Kapoor <chetank@symbian.org>
parents: 48
diff changeset
    26
my $path = $FindBin::Bin;
7b39c2ae2526 Located clone_all_packages relative to the location of fbf_churn.
Chetan Kapoor <chetank@symbian.org>
parents: 48
diff changeset
    27
$path =~ s/\//\\/g;
7b39c2ae2526 Located clone_all_packages relative to the location of fbf_churn.
Chetan Kapoor <chetank@symbian.org>
parents: 48
diff changeset
    28
my $clone_packages = "$path\\..\\clone_packages\\clone_all_packages.pl";
7b39c2ae2526 Located clone_all_packages relative to the location of fbf_churn.
Chetan Kapoor <chetank@symbian.org>
parents: 48
diff changeset
    29
7b39c2ae2526 Located clone_all_packages relative to the location of fbf_churn.
Chetan Kapoor <chetank@symbian.org>
parents: 48
diff changeset
    30
48
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    31
sub Usage($)
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    32
  {
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    33
  my ($msg) = @_;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    34
  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    35
  print "$msg\n\n" if ($msg ne "");
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    36
  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    37
	print <<'EOF';
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    38
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    39
	
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    40
fbf_churn.pl - simple script for calculating code churn in between two revisions 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    41
or labels for a package. This script can also be used to calculate code size for 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    42
a package.
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    43
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    44
When used without a package name or filter, this script runs for all the packages
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    45
in the BOM (build-info.xml) file supplied to it. 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    46
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    47
Important: 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    48
  This script uses clone_all_packages.pl which clones all repositories listed in 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    49
  the BOM or pull changes into a previously cloned repository.
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    50
  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    51
  This script uses its accompayning script churn_core.pl - which should be
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    52
  present in the same directory as this script.
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    53
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    54
Limitations:
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    55
  If a BOM is not supplied to the script using the -bom option, then the script 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    56
  runs on the package locations inside both MCL and FCL producing two results
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    57
  for a single package. For running the script for calculating code churn between 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    58
  two release buils (using labels) or for calculating code size for a release build,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    59
  it is essential that a BOM (preferably for the newer build) is passed as an 
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    60
  argument using the -bom option.
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    61
  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    62
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    63
Options:
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    64
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    65
-o --old		old revision or label for a package/respoitory
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    66
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    67
-n --new		new revision or label for a package/respoitory
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    68
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    69
--rev			revision for package/respoitory - Use this while calculating code size for a single package
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    70
			
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    71
--label			revision tag for package or release build - Use this while calculating code size
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    72
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    73
-bom --bom		build-info.xml files supplied with Symbian PDKs
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    74
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    75
-verbose		print the underlying "clone_all_packages" & "hg" commands before executing them
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    76
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    77
-help			print this help information
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    78
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    79
-package <RE>   	only process repositories matching regular expression <RE>
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    80
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    81
-filter <RE>    	only process repositories matching regular expression <RE>
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    82
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    83
EOF
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    84
  exit (1);  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    85
  }
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    86
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    87
print "\n\n==Symbian Foundation Code Churn Tool v1.0==\n\n";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    88
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    89
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    90
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    91
my $old = "null";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    92
my $new = "";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    93
my $filter = "";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    94
my $codeline = "";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    95
my $package = "";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    96
my $licence = "";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    97
my $packagelist = "";
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    98
my $verbose = 0;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
    99
my $help = 0;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   100
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   101
sub do_system
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   102
	{
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   103
	my (@args) = @_;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   104
	print "* ", join(" ", @args), "\n" if ($verbose);
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   105
	return system(@args);
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   106
	}
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   107
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   108
# Analyse the command-line parameters
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   109
if (!GetOptions(
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   110
    "n|new-rev|new-label|label|rev=s" => \$new,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   111
    "o|old-rev|old-label=s" => \$old,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   112
    "f|filter=s" => \$filter,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   113
    "p|package=s" => \$filter,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   114
    "cl|codeline=s" => \$codeline,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   115
    "li|licence=s" => \$licence,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   116
	"bom|bom=s" => \$packagelist,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   117
	"v|verbose" => \$verbose,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   118
	"h|help" => \$help,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   119
    ))
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   120
  {
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   121
  Usage("Invalid argument");
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   122
  }
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   123
  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   124
Usage("") if ($help);
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   125
Usage("Too few arguments....use at least one from -n|new-rev|new-label|label|rev or -bom") if ($new eq "" && $packagelist eq "");
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   126
#Usage("Too many arguments") if ($new ne "" && $packagelist ne "");
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   127
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   128
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   129
if ($old eq 'null')
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   130
  {
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   131
    print "\nCode size calculation....\n";		  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   132
  }
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   133
else
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   134
  {
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   135
    print "\nCode churn calculation....\n";		  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   136
  }
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   137
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   138
  
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   139
my @packagelistopts = ();
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   140
@packagelistopts = ("-packagelist", $packagelist) if ($packagelist ne "");
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   141
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   142
my @verboseopt = ();
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   143
@verboseopt = "-v" if ($verbose);
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   144
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   145
my $new_rev = $new;
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   146
$new_rev = "%REV%" if ($new_rev eq "");
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   147
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   148
#TO_DO: Locate clone_all_packages relative to the location of this script.
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   149
#TO_DO: Remove references to absolute paths, change to relative paths.
54
7b39c2ae2526 Located clone_all_packages relative to the location of fbf_churn.
Chetan Kapoor <chetank@symbian.org>
parents: 48
diff changeset
   150
do_system($clone_packages,@verboseopt,"-mirror","-filter","$licence.*$codeline.*$filter",@packagelistopts,"-exec","--",
48
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   151
   "hg","--config","\"extensions.hgext.extdiff=\"","extdiff","-p",$churn_core,"-o",$churn_output_temp,
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   152
   "-r","$old","-r","$new_rev");
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   153
c0d2a34bf681 Creating "code_churn" directory in utilities, and adding perl scripts for code chrun tool
Chetan Kapoor <chetank@symbian.org>
parents:
diff changeset
   154
exit(0);