build_package.pl
changeset 19 472feb69d0c9
parent 17 d75feffe620f
child 21 4b02facbff8f
equal deleted inserted replaced
18:27ea4714a2aa 19:472feb69d0c9
    26 my $sLETTERS_FILE="D:\\letters.txt";
    26 my $sLETTERS_FILE="D:\\letters.txt";
    27 my $nMAX_LETTER_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    27 my $nMAX_LETTER_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released
    28 
    28 
    29 my $sFbfProjectRepo = '';
    29 my $sFbfProjectRepo = '';
    30 my $sFbfProjectDir = '';
    30 my $sFbfProjectDir = '';
    31 my $sFbfConfigRepo="\\\\v800008.ad-sfpd.intra\\g\$\\mercurial_development\\oss\\FCL\\interim\\fbf\\configs\\pkgbuild";
    31 my $sFbfConfigRepo="\\\\v800008.ad-sfpd.intra\\g\$\\mercurial_internal\\fbf\\configs\\pkgbuild";
    32 my $sFbfConfigDir = '';
    32 my $sFbfConfigDir = '';
    33 my $sJobLabel = '';
    33 my $sJobLabel = '';
    34 my $nCmdLineNumber;
    34 my $nCmdLineNumber;
    35 GetOptions(('label:s' => \$sJobLabel, 'configrepo:s' => \$sFbfConfigRepo, 'configdir:s' => \$sFbfConfigDir, 'projectrepo:s' => \$sFbfProjectRepo, 'projectdir:s' => \$sFbfProjectDir, 'number:s' => \$nCmdLineNumber));
    35 my $bTestBuild = 0;
       
    36 GetOptions((
       
    37 	'label:s' => \$sJobLabel,
       
    38 	'configrepo:s' => \$sFbfConfigRepo,
       
    39 	'configdir:s' => \$sFbfConfigDir,
       
    40 	'projectrepo:s' => \$sFbfProjectRepo,
       
    41 	'projectdir:s' => \$sFbfProjectDir,
       
    42 	'number:s' => \$nCmdLineNumber,
       
    43 	'testbuild!' => \$bTestBuild
       
    44 ));
    36 
    45 
    37 if (!$sJobLabel or !($sFbfProjectRepo or $sFbfProjectDir))
    46 if (!$sJobLabel or !($sFbfProjectRepo or $sFbfProjectDir))
    38 {
    47 {
    39 	print "Usage: build_package.pl --label=<label> --projectrepo=<project repo> | --projectdir=<project dir>\n\t[--configrepo=<config repo> | --configdir=<config dir>]\n";
    48 	print "Usage: build_package.pl --label=LABEL (--projectrepo=REPO | --projectdir=DIR) OPTIONS\n";
       
    49 	print "\tOPTIONS:\n";
       
    50 	print "\t--configrepo=REPO Use REPO location for the config instead of \\\\v800008\\g\$\\mercurial_development\\oss\\FCL\\interim\\fbf\\config\\pkgbuild\\n";
       
    51 	print "\t--configdir=DIR Use DIR location for the config (exclusive with --configrepo)\n";
       
    52 	print "\t--number=N Force build number to N\n";
       
    53 	print "\t--testbuild Use d:\\numbers_test.txt for numbers and d:\\SF_builds_test to publish results\n";
    40 	exit(0);
    54 	exit(0);
    41 }
    55 }
       
    56 
       
    57 my $sTestBuildOpts = "";
       
    58 $sTestBuildOpts = "-Dsf.spec.publish.networkdrive=d:\\SF_builds_test" if ( $bTestBuild );
       
    59 $sNUMBERS_FILE = "d:\\numbers_test.txt" if ( $bTestBuild );
    42 
    60 
    43 my $sJobDir = mkdir_unique("$sJOB_BASE_DIR\\$sJobLabel");
    61 my $sJobDir = mkdir_unique("$sJOB_BASE_DIR\\$sJobLabel");
    44 
    62 
    45 print("cd $sBOOTSTRAP_DIR\n");
    63 print("cd $sBOOTSTRAP_DIR\n");
    46 chdir("$sBOOTSTRAP_DIR");
    64 chdir("$sBOOTSTRAP_DIR");
    77 die "Could not acquire drive letter" if (! $sDriveLetter);
    95 die "Could not acquire drive letter" if (! $sDriveLetter);
    78 
    96 
    79 print("cd $sJobDir\\sf-config\n");
    97 print("cd $sJobDir\\sf-config\n");
    80 chdir("$sJobDir\\sf-config");
    98 chdir("$sJobDir\\sf-config");
    81 print "###### BUILD PREPARATION ######\n";
    99 print "###### BUILD PREPARATION ######\n";
    82 print("hlm sf-prep -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:\n");
   100 print("hlm sf-prep -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpts\n");
    83 system("hlm sf-prep -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:");
   101 system("hlm sf-prep -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTestBuildOpts");
    84 
   102 
    85 print "###### EXECUTE BUILD ######\n";
   103 print "###### EXECUTE BUILD ######\n";
    86 print("hlm sf-build-all -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:\n");
   104 print("hlm sf-build-all -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:\n");
    87 system("hlm sf-build-all -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:");
   105 system("hlm sf-build-all -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:");
    88 
   106 
   185 					{
   203 					{
   186 						$hsPidsAndTimestamps{$sLetter} = $sString;
   204 						$hsPidsAndTimestamps{$sLetter} = $sString;
   187 					}
   205 					}
   188 					else
   206 					else
   189 					{
   207 					{
   190 						# do nothing
   208 						# lease has expired: unsubst drive letter and don't add to hash
   191 						print "forced release of letter: $sLetter\n";
   209 						system("subst $sLetter: /d");
       
   210 						print "forced release of letter: $sLetter (and drive unsubsted)\n";
   192 					}
   211 					}
   193 				}
   212 				}
   194 			}
   213 			}
   195 			
   214 			
   196 			for my $sNewLetter ('H'..'Y')
   215 			for my $sNewLetter ('H'..'Y')