releaseAutomation/packageComparison.pl
changeset 110 718b119bed63
parent 109 8d399d7a7b6b
equal deleted inserted replaced
109:8d399d7a7b6b 110:718b119bed63
    17 use strict;
    17 use strict;
    18 use XML::Parser;
    18 use XML::Parser;
    19 use Getopt::Long;
    19 use Getopt::Long;
    20 
    20 
    21 my $sourcesCsv;		# sources.csv file for this build
    21 my $sourcesCsv;		# sources.csv file for this build
    22 my $sysDef;		# system definition file for this build
    22 my @sysDef;		# system definition files to look in for this build
    23 my $previousPdkLabel;	# hg tag to compare against
    23 my $previousPdkLabel;	# hg tag to compare against
    24 my $prevSourcesCsv;	# sources.csv file for baseline build, if different to this build
    24 my $prevSourcesCsv;	# sources.csv file for baseline build, if different to this build
    25 my $prevSysDef;		# system definition file for baseline build, if different to this build
    25 my $prevSysDef;		# system definition file for baseline build, if different to this build
    26 
    26 
    27 GetOptions((
    27 GetOptions((
    28 	'sources=s' => \$sourcesCsv,
    28 	'sources=s' => \$sourcesCsv,
    29 	'sysdef=s' => \$sysDef,
    29 	'sysdef=s' => \@sysDef,
    30 	'baseline=s' => \$previousPdkLabel,
    30 	'baseline=s' => \$previousPdkLabel,
    31 	'prevSources=s' => \$prevSourcesCsv,
    31 	'prevSources=s' => \$prevSourcesCsv,
    32 	'prevSysdef=s' => \$prevSysDef,
    32 	'prevSysdef=s' => \$prevSysDef,
    33 ));
    33 ));
    34 
    34 
    35 if (!$sourcesCsv || !$sysDef || !$previousPdkLabel)
    35 if (!$sourcesCsv || !@sysDef || !$previousPdkLabel)
    36 {
    36 {
    37 	warn "Necessary argument(s) not supplied\n\n";
    37 	warn "Necessary argument(s) not supplied\n\n";
    38 	usage();
    38 	usage();
    39 	exit (1);
    39 	exit (1);
    40 }
    40 }
    45 	usage();
    45 	usage();
    46 	exit (1);
    46 	exit (1);
    47 }
    47 }
    48 
    48 
    49 $prevSourcesCsv ||= $sourcesCsv;
    49 $prevSourcesCsv ||= $sourcesCsv;
    50 $prevSysDef ||= $sysDef;
       
    51 
    50 
    52 my $packages = { current => {}, previous => {} };
    51 my $packages = { current => {}, previous => {} };
    53 
    52 
    54 # Load current manifest
    53 # Load current manifest
    55 open(my $manifest, "<", $sourcesCsv) or die;
    54 open(my $manifest, "<", $sourcesCsv) or die "Unable to open $sourcesCsv";
    56 my @manifest = <$manifest>;
    55 my @manifest = <$manifest>;
    57 close $manifest;
    56 close $manifest;
    58 populate($packages->{current}, @manifest);
    57 populate($packages->{current}, @manifest);
    59 
    58 
    60 # Load prev manifest
    59 # Load prev manifest
    61 @manifest = `hg cat -r $previousPdkLabel $prevSourcesCsv`;
    60 @manifest = `hg cat -r $previousPdkLabel $prevSourcesCsv`;
    62 populate($packages->{previous}, @manifest);
    61 populate($packages->{previous}, @manifest);
    63 
    62 
    64 my $xml = XML::Parser->new(Style => "Objects") or die;
    63 my $xml = XML::Parser->new(Style => "Objects") or die;
    65 # Load current names from current system definition
    64 foreach my $sysDef (@sysDef)
    66 eval { populateNames($packages->{current}, $xml->parsefile($sysDef) ) };
    65 {
    67 # Load previous names from previous system definition
    66 	# Load current names from current system definition (fails silently)
    68 eval { populateNames($packages->{previous}, $xml->parsestring(scalar `hg cat -r $previousPdkLabel $prevSysDef`) ) };
    67 	eval { populateNames($packages->{current}, $xml->parsefile($sysDef) ) };
       
    68 	# Load previous names from current system definition at earlier revision (fails silently)
       
    69 	eval { populateNames($packages->{previous}, $xml->parsestring(scalar `hg cat -r $previousPdkLabel $sysDef 2> nul:`) ) };
       
    70 }
       
    71 
       
    72 # Load previous names from previous system definition, if supplied
       
    73 populateNames($packages->{previous}, $xml->parsestring(scalar `hg cat -r $previousPdkLabel $prevSysDef`) ) if $prevSysDef;
    69 
    74 
    70 # Output release note info...
    75 # Output release note info...
    71 
    76 
    72 my $currPackageCount = scalar keys %{$packages->{current}};
    77 my $currPackageCount = scalar keys %{$packages->{current}};
    73 my $prevPackageCount = scalar keys %{$packages->{previous}};
    78 my $prevPackageCount = scalar keys %{$packages->{previous}};
   200 	my $itemsUnderThisElement = shift;
   205 	my $itemsUnderThisElement = shift;
   201 	foreach (@$itemsUnderThisElement)
   206 	foreach (@$itemsUnderThisElement)
   202 	{
   207 	{
   203 		if (ref $_)
   208 		if (ref $_)
   204 		{
   209 		{
   205 			if (ref $_ eq "main::block" || ref $_ eq "main::package")
   210 			if (ref $_ eq "main::block" || ref $_ eq "main::package" || ref $_ eq "main::module")
   206 			{
   211 			{
   207 				if (exists $packages->{$_->{name}})
   212 				if (exists $packages->{$_->{name}} && exists $_->{"long-name"})
   208 				{
   213 				{
   209 					$packages->{$_->{name}}->{name} = $_->{"long-name"};
   214 					$packages->{$_->{name}}->{name} = $_->{"long-name"};
   210 					$packages->{$_->{name}}->{sortKey} = lc $_->{"long-name"};
   215 					$packages->{$_->{name}}->{sortKey} = lc $_->{"long-name"};
   211 				}
   216 				}
   212 			}
   217 			}