generate_system_models.pl
author Dario Sestito <darios@symbian.org>
Mon, 17 May 2010 15:34:18 +0100
changeset 1066 e8cf0ceec61a
parent 1065 4656372c9b53
child 1067 bab959d5bc37
permissions -rw-r--r--
Add auto update of package models also for CompilerCompatibility builds
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     1
use strict;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     2
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     3
my $SYSDEFTOOLS_PATH = "packages\\sysdeftools";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     4
my $XALAN_J = "java -jar $SYSDEFTOOLS_PATH\\xalan.jar";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     5
my $XALAN_C = "packages\\sysmodelgen\\rsc\\installed\\Xalan\\Xalan.exe";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     6
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     7
system("rmdir /S /Q tmp") if (-d "tmp");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     8
mkdir("tmp");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
     9
chdir("tmp");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    10
1063
fafd97533066 Use MCL for packages repo
Dario Sestito <darios@symbian.org>
parents: 1062
diff changeset
    11
print "\n\n### CLONE MCL/sftools/fbf/projects/packages REPO ###\n";
fafd97533066 Use MCL for packages repo
Dario Sestito <darios@symbian.org>
parents: 1062
diff changeset
    12
system("hg clone -r HighFidelityModel http://developer.symbian.org/oss/MCL/sftools/fbf/projects/packages");
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    13
my $changeset = `hg -R packages identify -i`;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    14
chomp $changeset;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    15
print "-->$changeset<--\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    16
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    17
my $timestamp = sprintf "%4d%02d%02d%02d%02d%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    18
#print "\n\n### CLONE MCL/sf/os/buildtools REPO ###\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    19
#system("hg clone -r RCL_3 http://developer.symbian.org/oss/MCL/sf/os/buildtools");
1062
242f69b8015f Use MCL for the platforms repo
Dario Sestito <darios@symbian.org>
parents: 1061
diff changeset
    20
print "\n\n### CLONE MCL/sftools/fbf/projects/platforms REPO ###\n";
242f69b8015f Use MCL for the platforms repo
Dario Sestito <darios@symbian.org>
parents: 1061
diff changeset
    21
system("hg clone -r default http://developer.symbian.org/oss/MCL/sftools/fbf/projects/platforms");
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    22
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    23
# get the codelines from the packages repo
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    24
opendir(DIR, "packages");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    25
my @codelines = grep(($_ !~ /^\.\.?$/ and $_ =~ /^symbian/), readdir(DIR));
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    26
close(DIR);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    27
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    28
# loop over codelines
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    29
for my $codeline (@codelines)
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    30
{
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    31
	mkdir($codeline);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    32
	
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    33
	my $ROOT_SYSDEF = "packages\\$codeline\\os\\deviceplatformrelease\\foundation_system\\system_model\\system_definition.xml";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    34
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    35
	# Full model in schema 3.0.0 format, including all of the test units.
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    36
	print "\n\n### GENERATE FULL MODEL ###\n";
1065
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
    37
	my $updatehifi_cmd = "hg -R packages update -r HighFidelityModel";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
    38
	print "$updatehifi_cmd\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
    39
	system($updatehifi_cmd);
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    40
	my $full_cmd = "$XALAN_C -o $codeline\\full_system_model_3.0.xml $ROOT_SYSDEF $SYSDEFTOOLS_PATH\\joinsysdef.xsl";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    41
	print "$full_cmd\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    42
	system($full_cmd);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    43
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    44
	# Filter the model to remove the test and techview units
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    45
	print "\n\n### REMOVE UNDESIRED UNITS ###\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    46
	my $filter_cmd = "$XALAN_C -o $codeline\\system_model_3.0.xml -p filter \"'!test,!techview'\" -p filter-type 'has' $codeline\\full_system_model_3.0.xml $SYSDEFTOOLS_PATH\\filtering.xsl";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    47
	print "$filter_cmd\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    48
	system($filter_cmd);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    49
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    50
	# Downgrade the model to schema 2.0.1 for use with Helium and Raptor
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    51
	print "\n\n### DOWNGRADE TO SCHEMA 2.0.1 ###\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    52
	my $downgrade_cmd = "$XALAN_C -o $codeline\\system_model.xml $codeline\\system_model_3.0.xml $SYSDEFTOOLS_PATH\\sysdefdowngrade.xsl";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    53
	print "$downgrade_cmd\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    54
	system($downgrade_cmd);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    55
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    56
	print "\n\n### PUSH TO PLATFORMS REPOSITORY (auto) ###\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    57
	my $isdifferent = 1;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    58
	#compare to latest
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    59
	if (-d "platforms\\$codeline\\single\\sysdefs\\auto")
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    60
	{
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    61
		opendir(DIR, "platforms\\$codeline\\single\\sysdefs\\auto");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    62
		my @files = grep(($_ !~ /^\.\.?$/ and $_ =~ /^model_/), readdir(DIR));
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    63
		@files = sort { $b cmp $a } @files;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    64
		close(DIR);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    65
		
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    66
		my $mostrecent = shift @files;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    67
		print "mostrecent $mostrecent\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    68
		
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    69
		#compare
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    70
		my $file1 = '';
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    71
		my $file2 = '';
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    72
		{
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    73
			local $/ = undef;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    74
			open(FILE1, "platforms\\$codeline\\single\\sysdefs\\auto\\$mostrecent");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    75
			{
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    76
				$file1 = <FILE1>;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    77
			}
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    78
			close(FILE1);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    79
			open(FILE2, "$codeline\\system_model.xml");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    80
			{
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    81
				$file2 = <FILE2>;
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    82
			}
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    83
			close(FILE2);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    84
		}
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    85
		$isdifferent = 0 if ($file1 eq $file2);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    86
	}
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    87
	if ($isdifferent)
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    88
	{
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    89
		mkdir("platforms\\$codeline") if (!-d "platforms\\$codeline");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    90
		mkdir("platforms\\$codeline\\single") if (!-d "platforms\\$codeline\\single");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    91
		mkdir("platforms\\$codeline\\single\\sysdefs") if (!-d "platforms\\$codeline\\single\\sysdefs");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    92
		mkdir("platforms\\$codeline\\single\\sysdefs\\auto") if (!-d "platforms\\$codeline\\single\\sysdefs\\auto");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    93
		system("copy $codeline\\system_model.xml platforms\\$codeline\\single\\sysdefs\\auto\\model_$timestamp\_$changeset.xml");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    94
		system("hg -R platforms add");
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    95
		system("hg -R platforms commit -m \"Add auto generated $codeline system model (packages\@$changeset)\" -u\"Dario Sestito <darios\@symbian.org>\"");
1062
242f69b8015f Use MCL for the platforms repo
Dario Sestito <darios@symbian.org>
parents: 1061
diff changeset
    96
		system("hg -R platforms push http://darios:symbian696b\@developer.symbian.org/oss/MCL/sftools/fbf/projects/platforms");
1065
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
    97
		
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
    98
		# Split model into package models
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
    99
		print "\n\n### SPLIT MODEL INTO PACKAGE MODELS ###\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   100
		my $updatedefault_cmd = "hg -R packages update -r default";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   101
		print "$updatedefault_cmd\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   102
		system($updatedefault_cmd);
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   103
		my $splitmodel_cmd = "perl ..\\split_sysdef.pl -s $codeline\\system_model.xml -o packages\\$codeline";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   104
		print "$splitmodel_cmd\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   105
		system($splitmodel_cmd);
1066
e8cf0ceec61a Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents: 1065
diff changeset
   106
		if ($codeline eq 'symbian3') # also update CompilerCompatibility
e8cf0ceec61a Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents: 1065
diff changeset
   107
		{
e8cf0ceec61a Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents: 1065
diff changeset
   108
			my $splitmodel2_cmd = "perl ..\\split_sysdef.pl -s $codeline\\system_model.xml -o packages\\CompilerCompatibility";
e8cf0ceec61a Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents: 1065
diff changeset
   109
			print "$splitmodel2_cmd\n";
e8cf0ceec61a Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents: 1065
diff changeset
   110
			system($splitmodel2_cmd);
e8cf0ceec61a Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents: 1065
diff changeset
   111
		}
1065
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   112
		my $diff_cmd = "hg -R packages diff --stat";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   113
		print "$diff_cmd\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   114
		my @diff_output = `$diff_cmd`;
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   115
		if (@diff_output)
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   116
		{
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   117
			my $add_cmd = "hg -R packages add";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   118
			print "$add_cmd\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   119
			system($add_cmd);
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   120
			my $commit_cmd = "hg -R packages commit -m \"Update package models from auto generated system model (packages\@$changeset)\" -u\"Dario Sestito <darios\@symbian.org>\"";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   121
			print "$commit_cmd\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   122
			system($commit_cmd);
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   123
			my $push_cmd = "hg -R packages push http://darios:symbian696b\@developer.symbian.org/oss/MCL/sftools/fbf/projects/packages";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   124
			print "$push_cmd\n";
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   125
			system($push_cmd);
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
   126
		}
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
   127
	}
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
   128
}
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
   129