author | Dario Sestito <darios@symbian.org> |
Wed, 19 May 2010 12:30:24 +0100 | |
changeset 1069 | 96567d7b618a |
parent 1068 | 6f5db200d8d5 |
child 1070 | ab041f8d7a61 |
permissions | -rw-r--r-- |
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 | 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 | 28 |
my $packages_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"; |
1065
4656372c9b53
Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents:
1063
diff
changeset
|
39 |
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
|
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 | 42 |
if (!$packages_changeset) |
43 |
{ |
|
44 |
$packages_changeset = `hg -R packages identify -i`; |
|
45 |
chomp $packages_changeset; |
|
46 |
print "-->$packages_changeset<--\n"; |
|
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"); |
6f5db200d8d5
Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents:
1067
diff
changeset
|
68 |
my $updatesysdef_cmd = "copy /Y $codeline\\system_model.xml platforms\\$codeline\\single\\sysdefs\\system_model.xml"; |
6f5db200d8d5
Auto generate system model into codeline/single/sysdef instead of auto directory. Minor fixes
Dario Sestito <darios@symbian.org>
parents:
1067
diff
changeset
|
69 |
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
|
70 |
system($updatesysdef_cmd); |
1069
96567d7b618a
Exec hg add/addremove commands before hg diff
Dario Sestito <darios@symbian.org>
parents:
1068
diff
changeset
|
71 |
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
|
72 |
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
|
73 |
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
|
74 |
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
|
75 |
if (@diff_output) |
1060
14f4464f36ae
Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff
changeset
|
76 |
{ |
1067 | 77 |
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
|
78 |
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
|
79 |
|
4656372c9b53
Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents:
1063
diff
changeset
|
80 |
# 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
|
81 |
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
|
82 |
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
|
83 |
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
|
84 |
system($updatedefault_cmd); |
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
|
85 |
my $rmdir_cmd = "del /S packages\\symbian3\\package_definition.xml >nul"; |
1067 | 86 |
print "$rmdir_cmd\n"; |
87 |
system($rmdir_cmd); |
|
1065
4656372c9b53
Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents:
1063
diff
changeset
|
88 |
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
|
89 |
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
|
90 |
system($splitmodel_cmd); |
1066
e8cf0ceec61a
Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents:
1065
diff
changeset
|
91 |
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
|
92 |
{ |
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
|
93 |
my $rmdir2_cmd = "del /S packages\\CompilerCompatibility\\package_definition.xml >nul"; |
1067 | 94 |
print "$rmdir2_cmd\n"; |
95 |
system($rmdir2_cmd); |
|
1066
e8cf0ceec61a
Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents:
1065
diff
changeset
|
96 |
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
|
97 |
print "$splitmodel2_cmd\n"; |
e8cf0ceec61a
Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents:
1065
diff
changeset
|
98 |
system($splitmodel2_cmd); |
e8cf0ceec61a
Add auto update of package models also for CompilerCompatibility builds
Dario Sestito <darios@symbian.org>
parents:
1065
diff
changeset
|
99 |
} |
1069
96567d7b618a
Exec hg add/addremove commands before hg diff
Dario Sestito <darios@symbian.org>
parents:
1068
diff
changeset
|
100 |
my $addremove_cmd = "hg -R packages addremove"; |
96567d7b618a
Exec hg add/addremove commands before hg diff
Dario Sestito <darios@symbian.org>
parents:
1068
diff
changeset
|
101 |
print "$addremove_cmd\n"; |
96567d7b618a
Exec hg add/addremove commands before hg diff
Dario Sestito <darios@symbian.org>
parents:
1068
diff
changeset
|
102 |
system($addremove_cmd); |
1065
4656372c9b53
Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents:
1063
diff
changeset
|
103 |
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
|
104 |
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
|
105 |
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
|
106 |
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
|
107 |
{ |
1067 | 108 |
my $commit_cmd = "hg -R packages commit -m \"Update package models from auto generated system model (packages\@$packages_changeset)\" -u\"Dario Sestito <darios\@symbian.org>\""; |
1065
4656372c9b53
Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents:
1063
diff
changeset
|
109 |
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
|
110 |
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
|
111 |
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
|
112 |
print "$push_cmd\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
|
113 |
system($push_cmd); |
1065
4656372c9b53
Add automatic update of package models to the packages repository (default branch)
Dario Sestito <darios@symbian.org>
parents:
1063
diff
changeset
|
114 |
} |
1060
14f4464f36ae
Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff
changeset
|
115 |
} |
14f4464f36ae
Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff
changeset
|
116 |
} |
14f4464f36ae
Add generate_system_models.pl
Dario Sestito <darios@symbian.org>
parents:
diff
changeset
|
117 |