common/tools/generate_system_models.pl
author Simon Howkins <simonh@symbian.org>
Tue, 10 Aug 2010 18:11:17 +0100
changeset 1206 4518bca1baf0
parent 1075 20205e7ab525
child 1253 4fbe6b3c1776
permissions -rw-r--r--
Improved diagnostic output: when the build fails because a package cannot be cloned into the build drive, it says which package and the repo source and destination. Improved caching logic, so that it doesn't depend on network availability as much. Improved indentation.
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";
1067
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    12
system("hg clone http://developer.symbian.org/oss/MCL/sftools/fbf/projects/packages");
1068
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    13
my $updatehifi_cmd = "hg -R packages update -r HighFidelityModel";
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    14
print "$updatehifi_cmd\n";
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    15
system($updatehifi_cmd);
1060
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
1067
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    28
my $packages_changeset = '';
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    29
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    30
# loop over codelines
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    31
for my $codeline (@codelines)
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
	mkdir($codeline);
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
	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
    36
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    37
	# 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
    38
	print "\n\n### GENERATE FULL MODEL ###\n";
1070
ab041f8d7a61 Fix: update back to HighFidelityModel is not possible because there are changed files and it crosses branches
Dario Sestito <darios@symbian.org>
parents: 1069
diff changeset
    39
	my $updatehifi_cmd = "hg -R packages update -r HighFidelityModel -C";
1065
4656372c9b53 Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents: 1063
diff changeset
    40
	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
    41
	system($updatehifi_cmd);
1067
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    42
	if (!$packages_changeset)
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    43
	{
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    44
		$packages_changeset = `hg -R packages identify -i`;
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    45
		chomp $packages_changeset;
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    46
		print "-->$packages_changeset<--\n";
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    47
	}
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    48
	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
    49
	print "$full_cmd\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    50
	system($full_cmd);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    51
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    52
	# Filter the model to remove the test and techview units
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    53
	print "\n\n### REMOVE UNDESIRED UNITS ###\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    54
	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
    55
	print "$filter_cmd\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    56
	system($filter_cmd);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    57
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    58
	# 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
    59
	print "\n\n### DOWNGRADE TO SCHEMA 2.0.1 ###\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    60
	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
    61
	print "$downgrade_cmd\n";
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    62
	system($downgrade_cmd);
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    63
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    64
	print "\n\n### PUSH TO PLATFORMS REPOSITORY (auto) ###\n";
1068
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    65
	mkdir("platforms\\$codeline") if (!-d "platforms\\$codeline");
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    66
	mkdir("platforms\\$codeline\\single") if (!-d "platforms\\$codeline\\single");
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    67
	mkdir("platforms\\$codeline\\single\\sysdefs") if (!-d "platforms\\$codeline\\single\\sysdefs");
1072
48e2f89df0ad change destination directory for auto generated model to sydefs\auto
Andy Simpson<andrew.simpson@symbian.com>
parents: 1071
diff changeset
    68
	mkdir("platforms\\$codeline\\single\\sysdefs\\auto") if (!-d "platforms\\$codeline\\single\\sysdefs\\auto");
48e2f89df0ad change destination directory for auto generated model to sydefs\auto
Andy Simpson<andrew.simpson@symbian.com>
parents: 1071
diff changeset
    69
	my $updatesysdef_cmd = "copy /Y $codeline\\system_model.xml platforms\\$codeline\\single\\sysdefs\\auto\\system_model.xml";
1068
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    70
	print "$updatesysdef_cmd\n";
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    71
	system($updatesysdef_cmd);
1069
96567d7b618a Exec hg add/addremove commands before hg diff
Dario Sestito <darios@symbian.org>
parents: 1068
diff changeset
    72
	system("hg -R platforms add"); # just in case this is a new platform
1068
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    73
	my $diff_cmd = "hg -R platforms diff --stat";
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    74
	print "$diff_cmd\n";
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    75
	my @diff_output = `$diff_cmd`;
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    76
	if (@diff_output)
1060
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    77
	{
1072
48e2f89df0ad change destination directory for auto generated model to sydefs\auto
Andy Simpson<andrew.simpson@symbian.com>
parents: 1071
diff changeset
    78
		system("hg -R platforms add");
1067
bab959d5bc37 Fix some issues
Dario Sestito <darios@symbian.org>
parents: 1066
diff changeset
    79
		system("hg -R platforms commit -m \"Add auto generated $codeline system model (packages\@$packages_changeset)\" -u\"Dario Sestito <darios\@symbian.org>\"");
1068
6f5db200d8d5 Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents: 1067
diff changeset
    80
		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
    81
		
1060
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
}
14f4464f36ae Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff changeset
    84