build_package.pl
changeset 49 07eb981b2b45
parent 48 5e2200d13067
child 50 e8b76d25d90c
equal deleted inserted replaced
48:5e2200d13067 49:07eb981b2b45
    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 {