build_package.pl
changeset 39 d6975a94a893
parent 38 6da50515cbeb
child 40 6661369591af
equal deleted inserted replaced
38:6da50515cbeb 39:d6975a94a893
    20 
    20 
    21 my $sBOOTSTRAP_DIR="C:\\Apps\\FBF\\bootstrap";
    21 my $sBOOTSTRAP_DIR="C:\\Apps\\FBF\\bootstrap";
    22 my $sJOB_BASE_DIR="fbf_project";
    22 my $sJOB_BASE_DIR="fbf_project";
    23 my $nMAX_JOBDIR_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    23 my $nMAX_JOBDIR_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    24 my $nLOCK_FILE_MAX_ATTEMPTS = 5;
    24 my $nLOCK_FILE_MAX_ATTEMPTS = 5;
       
    25 my $sREMOTE_LOG_ARCHIVE="\\\\bishare\SF_builds";
    25 my $sNUMBERS_FILE="\\\\bishare\\SF_builds\\numbers2.txt";
    26 my $sNUMBERS_FILE="\\\\bishare\\SF_builds\\numbers2.txt";
    26 my $sLETTERS_FILE="letters.txt";
    27 my $sLETTERS_FILE="letters.txt";
    27 my $nMAX_LETTER_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    28 my $nMAX_LETTER_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    28 
    29 
    29 my $sFbfProjectRepo = "\\\\bishare\\mercurial_development\\oss\\FCL\\interim\\fbf\\projects\\packages";
    30 my $sFbfProjectRepo = "\\\\bishare\\mercurial_development\\oss\\FCL\\interim\\fbf\\projects\\packages";
   166 $sConfigArg = "-Dsf.config.dir=$sFbfConfigDir" if ($sFbfConfigDir);
   167 $sConfigArg = "-Dsf.config.dir=$sFbfConfigDir" if ($sFbfConfigDir);
   167 my $sProjectArg = "-Dsf.project.repo=$sFbfProjectRepo";
   168 my $sProjectArg = "-Dsf.project.repo=$sFbfProjectRepo";
   168 $sProjectArg .= " -Dsf.project.rev=$sFbfProjectRev" if ($sFbfProjectRev);
   169 $sProjectArg .= " -Dsf.project.rev=$sFbfProjectRev" if ($sFbfProjectRev);
   169 $sProjectArg = "-Dsf.project.dir=$sFbfProjectDir" if ($sFbfProjectDir);
   170 $sProjectArg = "-Dsf.project.dir=$sFbfProjectDir" if ($sFbfProjectDir);
   170 print("hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir\n");
   171 print("hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir\n");
   171 system("hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir");
   172 system("hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir >console_bootstrap_$$.txt 2>&1");
   172 
   173 
   173 # check that $sNUMBERS_FILE exists, otherwise create it
   174 # check that $sNUMBERS_FILE exists, otherwise create it
   174 if (!-f $sNUMBERS_FILE)
   175 if (!-f $sNUMBERS_FILE)
   175 {
   176 {
   176 	open FILE, ">$sNUMBERS_FILE";
   177 	open FILE, ">$sNUMBERS_FILE";
   177 	print FILE "\n";
   178 	print FILE "\n";
   178 	close FILE;
   179 	close FILE;
   179 }
   180 }
   180 
   181 
   181 my $sJobNumberKey = '';
   182 my $sJobNumberKey = '';
       
   183 my $sPackage = '';
       
   184 my $sPlatform = '';
   182 my $nUnformattedNumber = 0;
   185 my $nUnformattedNumber = 0;
   183 if ($nCmdLineNumber)
   186 if ($nCmdLineNumber)
   184 {
   187 {
   185 	$nUnformattedNumber = $nCmdLineNumber;
   188 	$nUnformattedNumber = $nCmdLineNumber;
   186 }
   189 }
   188 {
   191 {
   189 	if ($sSubProject)
   192 	if ($sSubProject)
   190 	{
   193 	{
   191 		# key = <package>_<codeline>, e.g. for subproj=MCL/os/boardsupport -> key=boardsupport_MCL
   194 		# key = <package>_<codeline>, e.g. for subproj=MCL/os/boardsupport -> key=boardsupport_MCL
   192 		$sSubProject =~ m,^([^/]+)/[^/]+/([^/]+)$,;
   195 		$sSubProject =~ m,^([^/]+)/[^/]+/([^/]+)$,;
       
   196 		$sPackage = $2;
       
   197 		$sPlatform = $1;
   193 		$sJobNumberKey = "$2_$1";
   198 		$sJobNumberKey = "$2_$1";
   194 	}
   199 	}
   195 	else
   200 	else
   196 	{
   201 	{
   197 		# key = hash of the rev.0 of the package project repo
   202 		# key = hash of the rev.0 of the package project repo
   224 $sSubProjArg = "-Dsf.subproject.path=$sSubProject" if ($sSubProject);
   229 $sSubProjArg = "-Dsf.subproject.path=$sSubProject" if ($sSubProject);
   225 print("cd $sJobDir\\sf-config\n");
   230 print("cd $sJobDir\\sf-config\n");
   226 chdir("$sJobDir\\sf-config");
   231 chdir("$sJobDir\\sf-config");
   227 print "###### BUILD PREPARATION ######\n";
   232 print "###### BUILD PREPARATION ######\n";
   228 print("hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg\n");
   233 print("hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg\n");
   229 system("hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg");
   234 system("hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg >console_sfprep_$$.txt 2>&1");
   230 
   235 
   231 print "###### EXECUTE BUILD ######\n";
   236 print "###### EXECUTE BUILD ######\n";
   232 print("hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg\n");
   237 print("hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg\n");
   233 system("hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg");
   238 system("hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpt $sNoPublishOpt $sJobRootDirArg >console_sfbuildall_$$.txt 2>&1");
       
   239 
       
   240 # copy console outputs to remote log archive
       
   241 if (-d "$sREMOTE_LOG_ARCHIVE\\$sPackage\\builds\\$sPlatform\\$sPackage\_$sPlatform.$nJobNumber\\logs")
       
   242 {
       
   243 	my $sTgtDir = "$sREMOTE_LOG_ARCHIVE\\$sPackage\\builds\\$sPlatform\\$sPackage\_$sPlatform.$nJobNumber\\logs\\console";
       
   244 	system("mkdir $sTgtDir");
       
   245 	system("copy /Y $sBOOTSTRAP_DIR\\console_bootstrap_$$.txt $sTgtDir");
       
   246 	system("del $sBOOTSTRAP_DIR\\console_bootstrap_$$.txt");
       
   247 	system("copy $sJobDir\\sf-config\\console_sfprep_$$.txt $sTgtDir");
       
   248 	system("copy $sJobDir\\sf-config\\console_sfbuildall_$$.txt $sTgtDir");
       
   249 }
   234 
   250 
   235 print("cd $sBOOTSTRAP_DIR\n");
   251 print("cd $sBOOTSTRAP_DIR\n");
   236 chdir("$sBOOTSTRAP_DIR");
   252 chdir("$sBOOTSTRAP_DIR");
   237 
   253 
   238 # release the drive letter
   254 # release the drive letter
   246 	if (-d "$sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel") # project dir
   262 	if (-d "$sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel") # project dir
   247 	{
   263 	{
   248 		print "rmdir /S $sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel\n";
   264 		print "rmdir /S $sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel\n";
   249 		system("rmdir /S /Q $sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel");
   265 		system("rmdir /S /Q $sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel");
   250 	}
   266 	}
   251 	my $sBuildLabel = $sJobNumberKey;
   267 	if (-d "$sWORKING_DRIVE\\fbf_job\\$sPackage\_$sPlatform.$nJobNumber") # build drive
   252 	$sBuildLabel =~ s/\.T$//;
   268 	{
   253 	if (-d "$sWORKING_DRIVE\\fbf_job\\$sBuildLabel.$nJobNumber") # build drive
   269 		print "rmdir /S $sWORKING_DRIVE\\fbf_job\\$sPackage\_$sPlatform.$nJobNumber\n";
   254 	{
   270 		system("rmdir /S /Q $sWORKING_DRIVE\\fbf_job\\$sPackage\_$sPlatform.$nJobNumber");
   255 		print "rmdir /S $sWORKING_DRIVE\\fbf_job\\$sBuildLabel.$nJobNumber\n";
       
   256 		system("rmdir /S /Q $sWORKING_DRIVE\\fbf_job\\$sBuildLabel.$nJobNumber");
       
   257 	}
   271 	}
   258 }
   272 }
   259 
   273 
   260 sub mkdir_unique
   274 sub mkdir_unique
   261 {
   275 {