|
1 use strict; |
|
2 |
|
3 my $SYSDEFTOOLS_PATH = "packages\\sysdeftools"; |
|
4 my $XALAN_J = "java -jar $SYSDEFTOOLS_PATH\\xalan.jar"; |
|
5 my $XALAN_C = "packages\\sysmodelgen\\rsc\\installed\\Xalan\\Xalan.exe"; |
|
6 |
|
7 system("rmdir /S /Q tmp") if (-d "tmp"); |
|
8 mkdir("tmp"); |
|
9 chdir("tmp"); |
|
10 |
|
11 print "\n\n### CLONE FCL/sftools/fbf/projects/packages REPO ###\n"; |
|
12 system("hg clone -r HighFidelityModel http://developer.symbian.org/oss/FCL/sftools/fbf/projects/packages"); |
|
13 my $changeset = `hg -R packages identify -i`; |
|
14 chomp $changeset; |
|
15 print "-->$changeset<--\n"; |
|
16 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); |
|
17 my $timestamp = sprintf "%4d%02d%02d%02d%02d%02d",$year+1900,$mon+1,$mday,$hour,$min,$sec; |
|
18 #print "\n\n### CLONE MCL/sf/os/buildtools REPO ###\n"; |
|
19 #system("hg clone -r RCL_3 http://developer.symbian.org/oss/MCL/sf/os/buildtools"); |
|
20 print "\n\n### CLONE FCL/sftools/fbf/projects/platforms REPO ###\n"; |
|
21 system("hg clone -r default http://developer.symbian.org/oss/FCL/sftools/fbf/projects/platforms"); |
|
22 |
|
23 # get the codelines from the packages repo |
|
24 opendir(DIR, "packages"); |
|
25 my @codelines = grep(($_ !~ /^\.\.?$/ and $_ =~ /^symbian/), readdir(DIR)); |
|
26 close(DIR); |
|
27 |
|
28 # loop over codelines |
|
29 for my $codeline (@codelines) |
|
30 { |
|
31 mkdir($codeline); |
|
32 |
|
33 my $ROOT_SYSDEF = "packages\\$codeline\\os\\deviceplatformrelease\\foundation_system\\system_model\\system_definition.xml"; |
|
34 |
|
35 # Full model in schema 3.0.0 format, including all of the test units. |
|
36 print "\n\n### GENERATE FULL MODEL ###\n"; |
|
37 my $full_cmd = "$XALAN_C -o $codeline\\full_system_model_3.0.xml $ROOT_SYSDEF $SYSDEFTOOLS_PATH\\joinsysdef.xsl"; |
|
38 print "$full_cmd\n"; |
|
39 system($full_cmd); |
|
40 |
|
41 # Filter the model to remove the test and techview units |
|
42 print "\n\n### REMOVE UNDESIRED UNITS ###\n"; |
|
43 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"; |
|
44 print "$filter_cmd\n"; |
|
45 system($filter_cmd); |
|
46 |
|
47 # Downgrade the model to schema 2.0.1 for use with Helium and Raptor |
|
48 print "\n\n### DOWNGRADE TO SCHEMA 2.0.1 ###\n"; |
|
49 my $downgrade_cmd = "$XALAN_C -o $codeline\\system_model.xml $codeline\\system_model_3.0.xml $SYSDEFTOOLS_PATH\\sysdefdowngrade.xsl"; |
|
50 print "$downgrade_cmd\n"; |
|
51 system($downgrade_cmd); |
|
52 |
|
53 print "\n\n### PUSH TO PLATFORMS REPOSITORY (auto) ###\n"; |
|
54 my $isdifferent = 1; |
|
55 #compare to latest |
|
56 if (-d "platforms\\$codeline\\single\\sysdefs\\auto") |
|
57 { |
|
58 opendir(DIR, "platforms\\$codeline\\single\\sysdefs\\auto"); |
|
59 my @files = grep(($_ !~ /^\.\.?$/ and $_ =~ /^model_/), readdir(DIR)); |
|
60 @files = sort { $b cmp $a } @files; |
|
61 close(DIR); |
|
62 |
|
63 my $mostrecent = shift @files; |
|
64 print "mostrecent $mostrecent\n"; |
|
65 |
|
66 #compare |
|
67 my $file1 = ''; |
|
68 my $file2 = ''; |
|
69 { |
|
70 local $/ = undef; |
|
71 open(FILE1, "platforms\\$codeline\\single\\sysdefs\\auto\\$mostrecent"); |
|
72 { |
|
73 $file1 = <FILE1>; |
|
74 } |
|
75 close(FILE1); |
|
76 open(FILE2, "$codeline\\system_model.xml"); |
|
77 { |
|
78 $file2 = <FILE2>; |
|
79 } |
|
80 close(FILE2); |
|
81 } |
|
82 $isdifferent = 0 if ($file1 eq $file2); |
|
83 } |
|
84 if ($isdifferent) |
|
85 { |
|
86 mkdir("platforms\\$codeline") if (!-d "platforms\\$codeline"); |
|
87 mkdir("platforms\\$codeline\\single") if (!-d "platforms\\$codeline\\single"); |
|
88 mkdir("platforms\\$codeline\\single\\sysdefs") if (!-d "platforms\\$codeline\\single\\sysdefs"); |
|
89 mkdir("platforms\\$codeline\\single\\sysdefs\\auto") if (!-d "platforms\\$codeline\\single\\sysdefs\\auto"); |
|
90 system("copy $codeline\\system_model.xml platforms\\$codeline\\single\\sysdefs\\auto\\model_$timestamp\_$changeset.xml"); |
|
91 system("hg -R platforms add"); |
|
92 system("hg -R platforms commit -m \"Add auto generated $codeline system model (packages\@$changeset)\" -u\"Dario Sestito <darios\@symbian.org>\""); |
|
93 #system("hg -R platforms push http://darios:symbian696b\@developer.symbian.org/oss/FCL/sftools/fbf/projects/platforms"); |
|
94 } |
|
95 } |
|
96 |