author | Dario Sestito <darios@symbian.org> |
Thu, 11 Jun 2009 12:13:51 +0100 | |
changeset 17 | d75feffe620f |
parent 16 | e1b9f78cef38 |
child 19 | 472feb69d0c9 |
permissions | -rw-r--r-- |
15
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
1 |
# Copyright (c) 2009 Symbian Foundation Ltd |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
2 |
# This component and the accompanying materials are made available |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
3 |
# under the terms of the License "Eclipse Public License v1.0" |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
4 |
# which accompanies this distribution, and is available |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
5 |
# at the URL "http://www.eclipse.org/legal/epl-v10.html". |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
6 |
# |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
7 |
# Initial Contributors: |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
8 |
# Symbian Foundation Ltd - initial contribution. |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
9 |
# |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
10 |
# Contributors: |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
11 |
# |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
12 |
# Description: |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
13 |
# This is a helper script which allocates unique drive letter and build number |
45ed0efeb8a4
Added copyright header to build_package.pl
darios@symbian.org
parents:
14
diff
changeset
|
14 |
# then starts a package build by running FBF bootstrap and build targets |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
15 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
16 |
use strict; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
17 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
18 |
use Getopt::Long; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
19 |
use File::Path; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
20 |
|
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
21 |
my $sBOOTSTRAP_DIR="C:\\Apps\\FBF\\bootstrap"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
22 |
my $sJOB_BASE_DIR="D:\\fbf_project"; |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
23 |
my $nMAX_JOBDIR_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
24 |
my $nLOCK_FILE_MAX_ATTEMPTS = 5; |
17
d75feffe620f
Changed location of numbers file to v800008
Dario Sestito <darios@symbian.org>
parents:
16
diff
changeset
|
25 |
my $sNUMBERS_FILE="\\\\v800008.ad-sfpd.intra\\g\$\\numbers.txt"; |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
26 |
my $sLETTERS_FILE="D:\\letters.txt"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
27 |
my $nMAX_LETTER_AGE_SECONDS = 86400; # max number of seconds after which the letter is forcibly released |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
28 |
|
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
29 |
my $sFbfProjectRepo = ''; |
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
30 |
my $sFbfProjectDir = ''; |
17
d75feffe620f
Changed location of numbers file to v800008
Dario Sestito <darios@symbian.org>
parents:
16
diff
changeset
|
31 |
my $sFbfConfigRepo="\\\\v800008.ad-sfpd.intra\\g\$\\mercurial_development\\oss\\FCL\\interim\\fbf\\configs\\pkgbuild"; |
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
32 |
my $sFbfConfigDir = ''; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
33 |
my $sJobLabel = ''; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
34 |
my $nCmdLineNumber; |
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
35 |
GetOptions(('label:s' => \$sJobLabel, 'configrepo:s' => \$sFbfConfigRepo, 'configdir:s' => \$sFbfConfigDir, 'projectrepo:s' => \$sFbfProjectRepo, 'projectdir:s' => \$sFbfProjectDir, 'number:s' => \$nCmdLineNumber)); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
36 |
|
17
d75feffe620f
Changed location of numbers file to v800008
Dario Sestito <darios@symbian.org>
parents:
16
diff
changeset
|
37 |
if (!$sJobLabel or !($sFbfProjectRepo or $sFbfProjectDir)) |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
38 |
{ |
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
39 |
print "Usage: build_package.pl --label=<label> --projectrepo=<project repo> | --projectdir=<project dir>\n\t[--configrepo=<config repo> | --configdir=<config dir>]\n"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
40 |
exit(0); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
41 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
42 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
43 |
my $sJobDir = mkdir_unique("$sJOB_BASE_DIR\\$sJobLabel"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
44 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
45 |
print("cd $sBOOTSTRAP_DIR\n"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
46 |
chdir("$sBOOTSTRAP_DIR"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
47 |
print "###### BOOTSTRAP ######\n"; |
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
48 |
my $sConfigArg = "-Dsf.config.repo=$sFbfConfigRepo"; |
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
49 |
$sConfigArg = "-Dsf.config.dir=$sFbfConfigDir" if ($sFbfConfigDir); |
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
50 |
my $sProjectArg = "-Dsf.project.repo=$sFbfProjectRepo"; |
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
51 |
$sProjectArg = "-Dsf.project.dir=$sFbfProjectDir" if ($sFbfProjectDir); |
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
52 |
print("hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir\n"); |
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
53 |
system("hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir"); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
54 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
55 |
# check that $sNUMBERS_FILE exists, otherwise create it |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
56 |
if (!-f $sNUMBERS_FILE) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
57 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
58 |
open FILE, ">$sNUMBERS_FILE"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
59 |
print FILE "\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
60 |
close FILE; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
61 |
} |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
62 |
|
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
63 |
my $nUnformattedNumber = ( $nCmdLineNumber ? $nCmdLineNumber : get_job_number($sFbfProjectRepo)); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
64 |
my $nJobNumber = sprintf("%.3d", $nUnformattedNumber); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
65 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
66 |
# check that $sLETTERS_FILE exists, otherwise create it |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
67 |
if (!-f $sLETTERS_FILE) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
68 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
69 |
open FILE, ">$sLETTERS_FILE"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
70 |
print FILE "\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
71 |
close FILE; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
72 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
73 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
74 |
# acquire drive letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
75 |
my $sDriveLetter = acquire_drive_letter(); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
76 |
print "acquired drive letter: $sDriveLetter\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
77 |
die "Could not acquire drive letter" if (! $sDriveLetter); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
78 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
79 |
print("cd $sJobDir\\sf-config\n"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
80 |
chdir("$sJobDir\\sf-config"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
81 |
print "###### BUILD PREPARATION ######\n"; |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
82 |
print("hlm sf-prep -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:\n"); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
83 |
system("hlm sf-prep -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:"); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
84 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
85 |
print "###### EXECUTE BUILD ######\n"; |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
86 |
print("hlm sf-build-all -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:\n"); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
87 |
system("hlm sf-build-all -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter:"); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
88 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
89 |
# release the drive letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
90 |
release_drive_letter($sDriveLetter); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
91 |
system("subst $sDriveLetter: /d"); # this is not required, but it's a good idea to keep things in order |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
92 |
print "drive letter $sDriveLetter released (and drive unsubsted)\n"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
93 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
94 |
sub mkdir_unique |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
95 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
96 |
my ($sBaseDir) = @_; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
97 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
98 |
# check that the path where the new dir must be created exists. |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
99 |
$sBaseDir =~ m,(.*[\\/])?(.*),; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
100 |
mkpath($1) if ($1 && !-d $1); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
101 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
102 |
my $nI = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
103 |
my $sNewDirName = "$sBaseDir"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
104 |
while(!mkdir($sNewDirName)) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
105 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
106 |
$nI++; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
107 |
$sNewDirName = "$sBaseDir.$nI"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
108 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
109 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
110 |
return $sNewDirName; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
111 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
112 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
113 |
sub get_job_number |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
114 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
115 |
my ($sKey) = @_; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
116 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
117 |
$sKey=lc($sKey); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
118 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
119 |
my %hnNumbers = (); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
120 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
121 |
my $nAttempts = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
122 |
my $bGotNumber = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
123 |
do |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
124 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
125 |
open(FILE, "+<$sNUMBERS_FILE") or die("Can't open $sNUMBERS_FILE"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
126 |
if ( flock(FILE, 6) ) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
127 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
128 |
my $sLine; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
129 |
while ($sLine = <FILE>) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
130 |
{ |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
131 |
$hnNumbers{lc($1)} = $2 if ($sLine =~ m%(.*),(.*)%); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
132 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
133 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
134 |
$hnNumbers{$sKey} = 0 if (! $hnNumbers{$sKey} ); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
135 |
$hnNumbers{$sKey} = $hnNumbers{$sKey} + 1; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
136 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
137 |
seek(FILE, 0, 0); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
138 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
139 |
for my $sStr ( keys(%hnNumbers) ) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
140 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
141 |
print FILE "$sStr,$hnNumbers{$sStr}\n"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
142 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
143 |
truncate(FILE,tell(FILE)); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
144 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
145 |
$bGotNumber = 1; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
146 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
147 |
else |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
148 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
149 |
$nAttempts ++; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
150 |
sleep(3); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
151 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
152 |
close(FILE); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
153 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
154 |
until ( $bGotNumber or $nAttempts == $nLOCK_FILE_MAX_ATTEMPTS ); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
155 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
156 |
return $hnNumbers{$sKey}; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
157 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
158 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
159 |
sub acquire_drive_letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
160 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
161 |
my %hsPidsAndTimestamps = (); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
162 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
163 |
my $sLetterToRelease = ''; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
164 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
165 |
my $nAttempts = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
166 |
my $bAcquired = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
167 |
do |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
168 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
169 |
open(FILE, "+<$sLETTERS_FILE") or die("Can't open $sLETTERS_FILE"); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
170 |
if ( flock(FILE, 6) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
171 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
172 |
my $sLine; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
173 |
while ($sLine = <FILE>) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
174 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
175 |
if ($sLine =~ m%([^,]*),(.*)%) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
176 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
177 |
my $sLetter=$1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
178 |
my $sString=$2; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
179 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
180 |
$sString=~m%([^,]*),(.*)%; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
181 |
my $nPid=$1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
182 |
my $nTimestamp=$2; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
183 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
184 |
if (time()-$nTimestamp<=$nMAX_LETTER_AGE_SECONDS) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
185 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
186 |
$hsPidsAndTimestamps{$sLetter} = $sString; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
187 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
188 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
189 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
190 |
# do nothing |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
191 |
print "forced release of letter: $sLetter\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
192 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
193 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
194 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
195 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
196 |
for my $sNewLetter ('H'..'Y') |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
197 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
198 |
if (! $hsPidsAndTimestamps{$sNewLetter}) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
199 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
200 |
my $sTimestamp = time(); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
201 |
$hsPidsAndTimestamps{$sNewLetter} = "$$,$sTimestamp"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
202 |
$sLetterToRelease = $sNewLetter; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
203 |
last; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
204 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
205 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
206 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
207 |
seek(FILE, 0, 0); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
208 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
209 |
for my $sLetter ( keys(%hsPidsAndTimestamps) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
210 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
211 |
print FILE "$sLetter,$hsPidsAndTimestamps{$sLetter}\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
212 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
213 |
truncate(FILE,tell(FILE)); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
214 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
215 |
$bAcquired = 1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
216 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
217 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
218 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
219 |
$nAttempts ++; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
220 |
sleep(3); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
221 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
222 |
close(FILE); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
223 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
224 |
until ( $bAcquired or $nAttempts == $nLOCK_FILE_MAX_ATTEMPTS ); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
225 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
226 |
return $sLetterToRelease; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
227 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
228 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
229 |
sub release_drive_letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
230 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
231 |
my ($sLetterToRelease) = @_; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
232 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
233 |
my %hsPidsAndTimestamps = (); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
234 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
235 |
my $nAttempts = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
236 |
my $bAcquired = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
237 |
do |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
238 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
239 |
open(FILE, "+<$sLETTERS_FILE") or die("Can't open $sLETTERS_FILE"); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
240 |
if ( flock(FILE, 6) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
241 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
242 |
my $sLine; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
243 |
while ($sLine = <FILE>) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
244 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
245 |
$hsPidsAndTimestamps{$1} = $2 if ($sLine =~ m%([^,]*),(.*)%); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
246 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
247 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
248 |
delete $hsPidsAndTimestamps{$sLetterToRelease}; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
249 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
250 |
seek(FILE, 0, 0); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
251 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
252 |
for my $sLetter ( keys(%hsPidsAndTimestamps) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
253 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
254 |
print FILE "$sLetter,$hsPidsAndTimestamps{$sLetter}\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
255 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
256 |
truncate(FILE,tell(FILE)); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
257 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
258 |
$bAcquired = 1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
259 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
260 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
261 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
262 |
$nAttempts ++; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
263 |
sleep(3); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
264 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
265 |
close(FILE); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
266 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
267 |
until ( $bAcquired or $nAttempts == $nLOCK_FILE_MAX_ATTEMPTS ); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
268 |
} |