bldsystemtools/commonbldutils/abldcache.pl
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bldsystemtools/commonbldutils/abldcache.pl	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,175 @@
+#!perl
+
+# Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+use File::Path;
+use Data::Dumper;
+
+$Data::Dumper::Deepcopy = 1;
+
+#-----------------GLOBAL VARIABLES------------------------#
+
+my $command;
+my $source;
+my $target;
+my $component;
+my $flag = 0;
+my $plats = 0;
+
+my @temp;
+my %output;
+my %project_platforms;
+my @components;
+
+my $platform;
+
+#--------------------------------------------------------#
+
+#Check that correct number of arguments were specified by the user
+#If not then print out Usage instructions to the command window	
+Usage() if (@ARGV!=1);
+
+$platform = $ARGV[0];
+
+my %logfiles = (
+		"GT2.log" => "M:\\logs\\$platform\\GT2.log",
+		"TV2.log" => "M:\\logs\\$platform\\TV2.log",
+		"JAVA2.log" => "M:\\logs\\$platform\\java2.log",
+	       );
+
+foreach my $file (keys %logfiles)
+{
+	$plats = 0;
+	
+	open(LOGFILE, $logfiles{$file}) || warn "Warning: can't open $logfiles{$file} : $!";
+
+	while(my $line = <LOGFILE>)
+	{
+		my $exists = 0;
+		if($line =~ m%^=== Stage=.*\s==\s(.*)\n%i)
+		{
+			$component = "$1 ";
+		}
+	   
+		if($line =~ m%-- abld -what\s(.*)%i)
+		{
+			foreach my $entry (@components)
+			{
+				$exists = 1 if($entry eq $component);
+			}
+		
+			push @components, $component if ($exists == 0);
+		
+			$command = "$1 -what";
+			$flag = 1;
+			@temp =();
+		}
+	
+		if(($line =~ m%Chdir (M:)?(.*)%i)&&($flag == 1))
+		{
+			$source = "$2 ";
+			$target = $component.$source.$command;
+		}
+	
+		if(($line =~ m%^(\\EPOC32\\.*)\n%i)&&($flag == 1))
+		{
+			push @temp, $1;
+		}
+		# Match ..\..\..\..\..\..\..\..\..\..\epoc32
+		if(($line =~ m%^((\.\.\\){1,}EPOC32\\.*)\n%i)&&($flag == 1))
+		{
+			push @temp, $1;
+		}
+	
+		if(($line =~ m%^\+\+\+ HiRes End%i)&&($flag == 1))
+		{
+			$flag = 0;
+			my @files = @temp;
+			$output{$target} = \@files;
+		}
+	
+		if($line =~ m%^project platforms%i)
+		{
+			$plats = 1;
+			next
+		}
+	
+		if($plats == 1)
+		{
+			$plats = 0;
+			$line =~ s/^\s+//;
+			$line =~ s/\n$//;
+			my @platforms = split(/ /, $line);
+			$project_platforms{$component} = \@platforms;
+		}
+	}
+}
+
+foreach my $comp (@components)
+{
+	$comp =~ s/\s$//;
+	my %abldcache;
+	my %self;
+	my $path;
+	
+	foreach my $hashelement (keys %output)
+	{
+		$hashelement =~ /(.*)\s(\\src.*?)\s/;
+		my $temp_element = $1;
+		if ($temp_element eq $comp)
+		{
+			$path = $2;
+			$path =~ s/\\src/src/;
+			my $newkey = $hashelement;
+			$newkey =~ s/.*\s\\src/\\src/;
+			$newkey = "'".$newkey."'";
+			$abldcache{$newkey} = $output{$hashelement};
+			$abldcache{"'plats'"} = $project_platforms{$comp." "};
+		}
+	}
+	
+	$self{abldcache} = \%abldcache;
+	
+	mkpath ("M:\\abldcache\\$path", 0, 0744);
+		
+	open OUTFILE, "> M:\\abldcache\\$path\\cache"
+		or die "ERROR: Can't open M:\\abldcache\\$path\\cache for output\n$!";
+			
+	print OUTFILE Data::Dumper->Dump(per_key('$self->{abldcache}->', $self{abldcache})), "\n";
+		
+	close OUTFILE;
+}
+
+sub per_key
+{
+	my($name, $href) = @_;
+	my @hkeys = keys %$href;
+	([@$href{@hkeys}], [map {"$name\{$_}"} @hkeys])
+}
+	
+
+sub Usage
+	{
+	 print <<USAGE_EOF;
+	 
+USAGE
+----------
+perl abldcache <platform>
+
+USAGE_EOF
+
+	exit 1;
+	}
\ No newline at end of file