equal
deleted
inserted
replaced
37 my $nCmdLineNumber; |
37 my $nCmdLineNumber; |
38 my $bProduction = 0; |
38 my $bProduction = 0; |
39 my $sDiamondsTag = ''; |
39 my $sDiamondsTag = ''; |
40 my $bHudson = 0; |
40 my $bHudson = 0; |
41 my $bPublish = 1; |
41 my $bPublish = 1; |
|
42 my %hHlmDefines = (); |
42 my $bHelp = 0; |
43 my $bHelp = 0; |
43 GetOptions(( |
44 GetOptions(( |
44 'configrepo=s' => \$sFbfConfigRepo, |
45 'configrepo=s' => \$sFbfConfigRepo, |
45 'configdir=s' => \$sFbfConfigDir, |
46 'configdir=s' => \$sFbfConfigDir, |
46 'projectrepo=s' => \$sFbfProjectRepo, |
47 'projectrepo=s' => \$sFbfProjectRepo, |
51 'number=s' => \$nCmdLineNumber, |
52 'number=s' => \$nCmdLineNumber, |
52 'production!' => \$bProduction, |
53 'production!' => \$bProduction, |
53 'tag=s' => \$sDiamondsTag, |
54 'tag=s' => \$sDiamondsTag, |
54 'hudson!' => \$bHudson, |
55 'hudson!' => \$bHudson, |
55 'publish!' => \$bPublish, |
56 'publish!' => \$bPublish, |
|
57 'define=s' => \%hHlmDefines, |
56 'help!' => \$bHelp |
58 'help!' => \$bHelp |
57 )); |
59 )); |
58 |
60 |
59 if ($bHelp or !($sSubProject or $sFbfProjectRepo or $sFbfProjectDir)) |
61 if ($bHelp or !($sSubProject or $sFbfProjectRepo or $sFbfProjectDir)) |
60 { |
62 { |
71 print "\t--number=N Force build number to N\n"; |
73 print "\t--number=N Force build number to N\n"; |
72 print "\t--production Tag this build as 'production' (default: 'test') and use nnn numbering (default: Tnnn)\n"; |
74 print "\t--production Tag this build as 'production' (default: 'test') and use nnn numbering (default: Tnnn)\n"; |
73 print "\t--tag=TAG Apply Diamonds tag TAG to this build (exclusive with --production)\n"; |
75 print "\t--tag=TAG Apply Diamonds tag TAG to this build (exclusive with --production)\n"; |
74 print "\t--hudson Checks that there is at least NUMBER_OF_PROCESSORS X 10 GB available on the working drive\n"; |
76 print "\t--hudson Checks that there is at least NUMBER_OF_PROCESSORS X 10 GB available on the working drive\n"; |
75 print "\t--nopublish Use \\numbers_test.txt for numbers and disable publishing\n"; |
77 print "\t--nopublish Use \\numbers_test.txt for numbers and disable publishing\n"; |
|
78 print "\t--define ATTRIBUTE=VALUE Pass -D statements to the Helium Framework\n"; |
76 exit(0); |
79 exit(0); |
77 } |
80 } |
78 |
81 |
79 if ($sSubProject and $sSubProject !~ m,^([^/]+)/[^/]+/([^/]+)$,) |
82 if ($sSubProject and $sSubProject !~ m,^([^/]+)/[^/]+/([^/]+)$,) |
80 { |
83 { |
121 my $sFbfConfigRev = ''; |
124 my $sFbfConfigRev = ''; |
122 if ($sFbfConfigRepo =~ m,(.*)#(.*),) |
125 if ($sFbfConfigRepo =~ m,(.*)#(.*),) |
123 { |
126 { |
124 $sFbfConfigRepo = $1; |
127 $sFbfConfigRepo = $1; |
125 $sFbfConfigRev = $2; |
128 $sFbfConfigRev = $2; |
|
129 } |
|
130 |
|
131 my $sHlmDefineOpt = ''; |
|
132 for (keys %hHlmDefines) |
|
133 { |
|
134 $sHlmDefineOpt .= "-D$_=$hHlmDefines{$_} "; |
126 } |
135 } |
127 |
136 |
128 my $sTestBuildOpt = ""; |
137 my $sTestBuildOpt = ""; |
129 $sTestBuildOpt = "-Dsf.spec.publish.diamonds.tag=production" if ( $bProduction ); |
138 $sTestBuildOpt = "-Dsf.spec.publish.diamonds.tag=production" if ( $bProduction ); |
130 $sTestBuildOpt = "-Dsf.spec.publish.diamonds.tag=$sDiamondsTag" if ( $sDiamondsTag ); |
139 $sTestBuildOpt = "-Dsf.spec.publish.diamonds.tag=$sDiamondsTag" if ( $sDiamondsTag ); |
237 my $sSubProjArg = ''; |
246 my $sSubProjArg = ''; |
238 $sSubProjArg = "-Dsf.subproject.path=$sSubProject" if ($sSubProject); |
247 $sSubProjArg = "-Dsf.subproject.path=$sSubProject" if ($sSubProject); |
239 print("cd $sJobDir\\sf-config\n"); |
248 print("cd $sJobDir\\sf-config\n"); |
240 chdir("$sJobDir\\sf-config"); |
249 chdir("$sJobDir\\sf-config"); |
241 print "###### BUILD PREPARATION ######\n"; |
250 print "###### BUILD PREPARATION ######\n"; |
242 my $sPreparationCmd = "hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg"; |
251 my $sPreparationCmd = "hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt"; |
243 print("$sPreparationCmd\n"); |
252 print("$sPreparationCmd\n"); |
244 open(LOG, ">console_sfprep_$$.txt"); |
253 open(LOG, ">console_sfprep_$$.txt"); |
245 open(PIPE, "$sPreparationCmd 2>&1 |"); |
254 open(PIPE, "$sPreparationCmd 2>&1 |"); |
246 while(<PIPE>) |
255 while(<PIPE>) |
247 { |
256 { |
250 } |
259 } |
251 close(PIPE); |
260 close(PIPE); |
252 close(LOG); |
261 close(LOG); |
253 |
262 |
254 print "###### EXECUTE BUILD ######\n"; |
263 print "###### EXECUTE BUILD ######\n"; |
255 my $sBuildallCmd = "hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg"; |
264 my $sBuildallCmd = "hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt"; |
256 print("$sBuildallCmd\n"); |
265 print("$sBuildallCmd\n"); |
257 open(LOG, ">console_sfbuildall_$$.txt"); |
266 open(LOG, ">console_sfbuildall_$$.txt"); |
258 open(PIPE, "$sBuildallCmd 2>&1 |"); |
267 open(PIPE, "$sBuildallCmd 2>&1 |"); |
259 while(<PIPE>) |
268 while(<PIPE>) |
260 { |
269 { |
263 } |
272 } |
264 close(PIPE); |
273 close(PIPE); |
265 close(LOG); |
274 close(LOG); |
266 |
275 |
267 print "###### GENERATE BUILD SUMMARY ######\n"; |
276 print "###### GENERATE BUILD SUMMARY ######\n"; |
268 my $sSummaryCmd = "hlm sf-summary -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg"; |
277 my $sSummaryCmd = "hlm sf-summary -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt"; |
269 print("$sSummaryCmd\n"); |
278 print("$sSummaryCmd\n"); |
270 open(LOG, ">console_sfsummary_$$.txt"); |
279 open(LOG, ">console_sfsummary_$$.txt"); |
271 open(PIPE, "$sSummaryCmd 2>&1 |"); |
280 open(PIPE, "$sSummaryCmd 2>&1 |"); |
272 while(<PIPE>) |
281 while(<PIPE>) |
273 { |
282 { |