releaseAutomation/packageComparison.pl
author Simon Howkins <simonh@symbian.org>
Mon, 09 Nov 2009 14:27:03 +0000
changeset 105 1350a673dd5f
child 106 be1e3961af1c
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:
105
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     1
#!perl -w
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     2
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     3
# Copyright (c) 2009 Symbian Foundation Ltd
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     4
# This component and the accompanying materials are made available
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     6
# which accompanies this distribution, and is available
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     8
#
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
     9
# Initial Contributors:
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    10
# Symbian Foundation Ltd - initial contribution.
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    11
# 
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    12
# Contributors:
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    13
#
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    14
# Description:
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    15
# Automates the creation of part of the PDK Release Notes: "Mercurial Comparison with PDK XXXXX"
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    16
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    17
use strict;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    18
use XML::Parser;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    19
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    20
my $sourcesCsv = shift or die "First argument must be sources.csv file for build being built/released\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    21
my $sysDef = shift or die  "Second argument must be system definition file\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    22
my $previousPdkLabel = shift or die "Third argument must be hg tag to compare against\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    23
defined shift and die "No more than three arguments please\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    24
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    25
my $packages = { current => {}, previous => {} };
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    26
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    27
# Load current manifest
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    28
open(my $manifest, "<", $sourcesCsv) or die;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    29
my @manifest = <$manifest>;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    30
close $manifest;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    31
populate($packages->{current}, @manifest);
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    32
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    33
# Load prev manifest
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    34
@manifest = `hg cat -r $previousPdkLabel $sourcesCsv`;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    35
populate($packages->{previous}, @manifest);
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    36
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    37
my $xml = XML::Parser->new(Style => "Objects") or die;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    38
# Load current names from current system definition
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    39
my $tree = $xml->parsefile($sysDef);
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    40
populateNames($packages->{current}, $tree);
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    41
# Load previous names from previous system definition
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    42
eval { $tree = $xml->parsestring(scalar `hg cat -r $previousPdkLabel $sysDef`) } or die $!;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    43
populateNames($packages->{previous}, $tree);
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    44
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    45
# Output release note info...
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    46
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    47
my $currPackageCount = scalar keys %{$packages->{current}};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    48
my $prevPackageCount = scalar keys %{$packages->{previous}};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    49
print <<EOT;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    50
== Packages ==
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    51
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    52
This section provides general information on the packages included in this PDK release compared to '''$previousPdkLabel'''.
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    53
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    54
Number total of packages in this PDK release is: '''$currPackageCount'''
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    55
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    56
Number total of packages in $previousPdkLabel is: '''$prevPackageCount'''
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    57
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    58
EOT
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    59
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    60
my @addedPackages = sort { packageSort($packages->{current}) } grep { !exists $packages->{previous}->{$_} } keys %{$packages->{current}};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    61
my $addedPackageCount = scalar @addedPackages;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    62
print <<EOT;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    63
=== Packages added ===
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    64
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    65
Number total of packages added is: '''$addedPackageCount'''
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    66
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    67
EOT
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    68
foreach (@addedPackages)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    69
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    70
	print "==== $packages->{current}->{$_}->{name} ([$packages->{current}->{$_}->{url} $packages->{current}->{$_}->{path}]) ====\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    71
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    72
print "\n" if @addedPackages;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    73
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    74
my @removedPackages = sort { packageSort($packages->{previous}) } grep { !exists $packages->{current}->{$_} } keys %{$packages->{previous}};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    75
my $removedPackageCount = scalar @removedPackages;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    76
print <<EOT;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    77
=== Packages removed ===
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    78
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    79
Number total of packages removed is: '''$removedPackageCount'''
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    80
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    81
EOT
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    82
foreach (@removedPackages)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    83
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    84
	print "==== $packages->{previous}->{$_}->{name} ([$packages->{previous}->{$_}->{url} $packages->{previous}->{$_}->{path}]) ====\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    85
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    86
print "\n" if @removedPackages;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    87
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    88
my @movedPackages = sort { packageSort($packages->{current}) } grep { inPrev($_) && $packages->{current}->{$_}->{path} ne $packages->{previous}->{$_}->{path} } keys %{$packages->{current}};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    89
my $movedPackageCount = scalar @movedPackages;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    90
print <<EOT;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    91
=== Packages moved ===
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    92
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    93
Number total of packages moved is: '''$movedPackageCount'''
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    94
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    95
EOT
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    96
foreach (@movedPackages)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    97
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    98
	print "==== $packages->{current}->{$_}->{name} ([$packages->{previous}->{$_}->{url} $packages->{previous}->{$_}->{path}] to [$packages->{current}->{$_}->{url} $packages->{current}->{$_}->{path}]) ====\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
    99
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   100
print "\n" if @movedPackages;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   101
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   102
my @openedPackages = sort { packageSort($packages->{current}) } grep { inPrev($_) && $packages->{current}->{$_}->{license} eq "oss" && $packages->{previous}->{$_}->{license} eq "sfl" } keys %{$packages->{current}};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   103
my $openedPackageCount = scalar @openedPackages;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   104
if ($openedPackageCount)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   105
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   106
	print <<EOT;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   107
=== Packages newly released under a fully Open license ===
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   108
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   109
Number total of packages relicensed is: '''$openedPackageCount'''
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   110
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   111
EOT
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   112
	foreach (@openedPackages)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   113
	{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   114
		print "==== $packages->{current}->{$_}->{name} ([$packages->{current}->{$_}->{url} $packages->{current}->{$_}->{path}]) ====\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   115
	}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   116
	print "\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   117
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   118
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   119
print <<EOT;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   120
== FCLs ==
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   121
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   122
This PDK was built using the FCL versions of the packages listed below: for each one we list the changes in the FCL which are not in the MCL.
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   123
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   124
The previous PDK also involved some FCLs, so we indicate which problems are now fixed in the MCL, and which FCLs are new to this build.
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   125
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   126
Cloning the source from Mercurial is made more awkward by using a mixture of MCLs and FCLs, but we provide a tool to help - see [[How to build the Platform]] for details.
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   127
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   128
EOT
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   129
# Newly from FCL
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   130
foreach (sort { packageSort($packages->{current}) } grep { inPrev($_) && $packages->{previous}->{$_}->{codeline} eq "MCL" && $packages->{current}->{$_}->{codeline} eq "FCL" } keys %{$packages->{current}})
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   131
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   132
	print "==== $packages->{current}->{$_}->{name} ([$packages->{current}->{$_}->{url} $packages->{current}->{$_}->{path}]) -- NEW ====\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   133
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   134
# Still from FCL
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   135
foreach (sort { packageSort($packages->{current}) } grep {inPrev($_) && $packages->{previous}->{$_}->{codeline} eq "FCL" && $packages->{current}->{$_}->{codeline} eq "FCL"} keys %{$packages->{current}})
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   136
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   137
	print "==== $packages->{current}->{$_}->{name} ([$packages->{current}->{$_}->{url} $packages->{current}->{$_}->{path}]) ====\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   138
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   139
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   140
print "\n=== FCLs used in PDK_2.0.0 but no longer needed ===\n\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   141
my @revertedToMCL = sort { packageSort($packages->{current}) } grep { inPrev($_) && $packages->{previous}->{$_}->{codeline} eq "FCL" && $packages->{current}->{$_}->{codeline} eq "MCL" } keys %{$packages->{current}};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   142
print "(none)\n" unless @revertedToMCL;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   143
foreach (@revertedToMCL)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   144
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   145
	print "==== $packages->{current}->{$_}->{name} ([$packages->{current}->{$_}->{url} $packages->{current}->{$_}->{path}]) ====\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   146
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   147
print "\n";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   148
exit(0);
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   149
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   150
sub populate
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   151
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   152
	my $hash = shift;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   153
	my @entries = @_;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   154
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   155
	# Discard the column headings
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   156
	shift @entries;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   157
	
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   158
	foreach my $entry (@entries)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   159
	{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   160
		chomp $entry;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   161
		my ($repo) = $entry =~ m{^(.*?),};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   162
		my ($packageId) = $repo =~ m{/(\w+)/?$};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   163
		my ($codeline) = $repo =~ m{/(MCL|FCL)/};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   164
		# Skip the RnD repos and other complications
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   165
		next unless $codeline;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   166
		my ($license, $path) = $repo =~ m{/([^/\\]*)/$codeline/(.+?)/?$};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   167
		my $url = "http://developer.symbian.org/$license/$codeline/$path";
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   168
		$hash->{$packageId} = {license => $license, codeline => $codeline, path => $path, name => "''$packageId''", url => $url, sortKey => lc $packageId};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   169
	}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   170
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   171
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   172
sub populateNames
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   173
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   174
	my $packages = shift;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   175
	my $itemsUnderThisElement = shift;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   176
	foreach (@$itemsUnderThisElement)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   177
	{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   178
		if (ref $_)
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   179
		{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   180
			if (ref $_ eq "main::block" || ref $_ eq "main::package")
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   181
			{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   182
				if (exists $packages->{$_->{name}})
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   183
				{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   184
					$packages->{$_->{name}}->{name} = $_->{"long-name"};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   185
					$packages->{$_->{name}}->{sortKey} = lc $_->{"long-name"};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   186
				}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   187
			}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   188
			else
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   189
			{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   190
				populateNames($packages, $_->{Kids});
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   191
			}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   192
		}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   193
	}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   194
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   195
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   196
sub inPrev
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   197
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   198
	my $id = shift;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   199
	exists $packages->{previous}->{$id};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   200
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   201
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   202
sub packageSort
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   203
{
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   204
	my $details = shift;
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   205
	$details->{$a}->{sortKey} cmp $details->{$b}->{sortKey};
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   206
}
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   207
1350a673dd5f Alternative script for generating release note information about package changes and FCL usage.
Simon Howkins <simonh@symbian.org>
parents:
diff changeset
   208