author | Dario Sestito <darios@symbian.org> |
Fri, 30 Oct 2009 16:18:37 +0000 | |
changeset 59 | d41d4cdb97ad |
parent 58 | 806b67128bee |
child 60 | 6e2dd2cc846d |
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"; |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
22 |
my $sJOB_BASE_DIR="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; |
51
5db037fb1000
Change location of numbers file to v800020 as builds are published there now
Dario Sestito <darios@symbian.org>
parents:
50
diff
changeset
|
25 |
my $sNUMBERS_FILE="\\\\v800020\\Publish\\SF_builds\\numbers.txt"; |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
26 |
my $sLETTERS_FILE="letters.txt"; |
13
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 |
|
38
6da50515cbeb
Fix start package build with no --subproj option, pointed defaults to mercurial_development
Dario Sestito <darios@symbian.org>
parents:
37
diff
changeset
|
29 |
my $sFbfProjectRepo = "\\\\bishare\\mercurial_development\\oss\\FCL\\interim\\fbf\\projects\\packages"; |
16
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 = ''; |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
31 |
my $sSubProject = ''; |
55
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
32 |
my $sSubprojVariant = ''; |
58
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
33 |
my $sSBSConfig = ''; |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
34 |
#my $sSourcesFile = ''; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
35 |
#my $sModelFile = ''; |
48
5e2200d13067
Location of package build config to fbf/config/default
Dario Sestito <darios@symbian.org>
parents:
47
diff
changeset
|
36 |
my $sFbfConfigRepo="\\\\bishare\\mercurial_development\\oss\\FCL\\interim\\fbf\\configs\\default"; |
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
37 |
my $sFbfConfigDir = ''; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
38 |
my $nCmdLineNumber; |
34
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
39 |
my $sDiamondsTag = ''; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
40 |
my $bHudson = 0; |
28
bf45384632b0
Add support for --testbuild and --nopublish options
Dario Sestito <darios@symbian.org>
parents:
27
diff
changeset
|
41 |
my $bPublish = 1; |
49
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
42 |
my %hHlmDefines = (); |
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
43 |
my $bDisableAntiVirus = 0; |
42 | 44 |
my $bHelp = 0; |
19
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
45 |
GetOptions(( |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
46 |
'configrepo=s' => \$sFbfConfigRepo, |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
47 |
'configdir=s' => \$sFbfConfigDir, |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
48 |
'projectrepo=s' => \$sFbfProjectRepo, |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
49 |
'projectdir=s' => \$sFbfProjectDir, |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
50 |
'subproj=s' => \$sSubProject, |
55
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
51 |
'variant=s' => \$sSubprojVariant, |
58
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
52 |
'sbsconfig!' => \$sSBSConfig, |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
53 |
#'sources=s' => \$sSourcesFile, |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
54 |
#'model=s' => \$sModelFile, |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
55 |
'number=s' => \$nCmdLineNumber, |
34
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
56 |
'tag=s' => \$sDiamondsTag, |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
57 |
'hudson!' => \$bHudson, |
42 | 58 |
'publish!' => \$bPublish, |
49
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
59 |
'define=s' => \%hHlmDefines, |
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
60 |
'disableav=s' => \$bDisableAntiVirus, |
42 | 61 |
'help!' => \$bHelp |
19
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
62 |
)); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
63 |
|
42 | 64 |
if ($bHelp or !($sSubProject or $sFbfProjectRepo or $sFbfProjectDir)) |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
65 |
{ |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
66 |
print "Usage: build_package.pl --subproj=RELPATH [OPTIONS]\n"; |
38
6da50515cbeb
Fix start package build with no --subproj option, pointed defaults to mercurial_development
Dario Sestito <darios@symbian.org>
parents:
37
diff
changeset
|
67 |
print " build_package.pl --projectrepo=REPO [OPTIONS]\n"; |
22
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
68 |
print "where OPTIONS are:\n"; |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
69 |
print "\t--subproj=RELPATH Select subproject located at RELPATH (relative to the root of the project repository)\n"; |
55
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
70 |
print "\t--variant=VARIANT If specified use sources_VARIANT.csv instead of sources.csv and add \"VARIANT\" as tag for this build\n"; |
58
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
71 |
print "\t--sbsconfig=CONFIG Pass on CONFIG as configuration to SBS (can also be a comma separated list, e.g. 'armv5,winscw')\n"; |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
72 |
print "\t--projectrepo=REPO[#REV] Use repository REPO at revision REV for the project (instead of \\\\bishare\\mercurial_internal\\fbf\\projects\\packages)\n"; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
73 |
print "\t--projectdir=DIR Use DIR location for the project (exclusive with --projectrepo).\n"; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
74 |
#print "\t--sources=FILE ...\n"; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
75 |
#print "\t--model=FILE ...\n"; |
48
5e2200d13067
Location of package build config to fbf/config/default
Dario Sestito <darios@symbian.org>
parents:
47
diff
changeset
|
76 |
print "\t--configrepo=REPO[#REV] Use repository REPO at revision REV for the config (instead of \\\\bishare\\mercurial_internal\\fbf\\config\\default)\n"; |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
77 |
print "\t--configdir=DIR Use DIR location for the config (exclusive with --configrepo).\n"; |
19
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
78 |
print "\t--number=N Force build number to N\n"; |
52
511dcb217499
Remove --production option. Remove .T numbering scheme
Dario Sestito <darios@symbian.org>
parents:
51
diff
changeset
|
79 |
print "\t--tag=TAG Apply Diamonds tag TAG to this build\n"; |
34
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
80 |
print "\t--hudson Checks that there is at least NUMBER_OF_PROCESSORS X 10 GB available on the working drive\n"; |
45
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
81 |
print "\t--nopublish Use \\numbers_test.txt for numbers and disable publishing\n"; |
49
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
82 |
print "\t--define ATTRIBUTE=VALUE Pass -D statements to the Helium Framework\n"; |
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
83 |
print "\t--disableav Disable Anti-Virus for the duration of the build (also sync with other concurrent package builds)\n"; |
22
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
84 |
exit(0); |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
85 |
} |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
86 |
|
38
6da50515cbeb
Fix start package build with no --subproj option, pointed defaults to mercurial_development
Dario Sestito <darios@symbian.org>
parents:
37
diff
changeset
|
87 |
if ($sSubProject and $sSubProject !~ m,^([^/]+)/[^/]+/([^/]+)$,) |
22
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
88 |
{ |
34
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
89 |
print "ERROR: Option --subproj must be in the format codeline/layer/package (e.g. MCL/os/boardsupport)\n"; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
90 |
exit(0); |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
91 |
} |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
92 |
|
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
93 |
#if (!$sFbfProjectRepo and !$sFbfProjectDir and (!$sSourcesFile or !$sModelFile)) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
94 |
#{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
95 |
# print "Error: If you don't provide --projectrepo or --projectdir then you have to provide both --sources and --model\n"; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
96 |
# exit(0); |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
97 |
#} |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
98 |
|
45
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
99 |
my $sWORKING_DRIVE = find_working_drive(); |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
100 |
print "Will use drive $sWORKING_DRIVE as working drive for this build\n"; |
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
101 |
|
34
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
102 |
if ($bHudson) |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
103 |
{ |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
104 |
my $nProcessors = $ENV{'NUMBER_OF_PROCESSORS'}; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
105 |
my $diroutput = `dir /-C $sWORKING_DRIVE`; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
106 |
my $nBytesFree = 0; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
107 |
$nBytesFree = $1 if ($diroutput =~ /(\d+) bytes free/); |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
108 |
my $nNeededSpace = 10*$nProcessors*1073741824; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
109 |
#print "Needed space is $nNeededSpace\n"; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
110 |
if ($nBytesFree < $nNeededSpace) |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
111 |
{ |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
112 |
print "ERROR: Available disk space on working drive ($nBytesFree bytes) is not enough to run a package build with Hudson.\n"; |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
113 |
exit(1); |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
114 |
} |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
115 |
} |
d156d56b00c2
Add --hudson option to check availability of space on working drive. Add --tag option to allow arbitrary Diamonds tags
Dario Sestito <darios@symbian.org>
parents:
33
diff
changeset
|
116 |
|
24
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
117 |
my $sFbfProjectRev = ''; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
118 |
if ($sFbfProjectRepo =~ m,(.*)#(.*),) |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
119 |
{ |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
120 |
$sFbfProjectRepo = $1; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
121 |
$sFbfProjectRev = $2; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
122 |
} |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
123 |
my $sFbfConfigRev = ''; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
124 |
if ($sFbfConfigRepo =~ m,(.*)#(.*),) |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
125 |
{ |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
126 |
$sFbfConfigRepo = $1; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
127 |
$sFbfConfigRev = $2; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
128 |
} |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
129 |
|
49
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
130 |
my $sHlmDefineOpt = ''; |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
131 |
for (keys %hHlmDefines) |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
132 |
{ |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
133 |
$sHlmDefineOpt .= "-D$_=$hHlmDefines{$_} "; |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
134 |
} |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
135 |
|
28
bf45384632b0
Add support for --testbuild and --nopublish options
Dario Sestito <darios@symbian.org>
parents:
27
diff
changeset
|
136 |
my $sNoPublishOpt = ""; |
bf45384632b0
Add support for --testbuild and --nopublish options
Dario Sestito <darios@symbian.org>
parents:
27
diff
changeset
|
137 |
$sNoPublishOpt = "-Dsf.spec.publish.enable=false" if ( !$bPublish ); |
45
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
138 |
$sNUMBERS_FILE = "$sWORKING_DRIVE\\numbers_test.txt" if ( !$bPublish ); |
19
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
139 |
|
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
140 |
my $sJobLabel = 'job'; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
141 |
if ($sSubProject) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
142 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
143 |
$sSubProject =~ m,^([^/]+)/[^/]+/([^/]+)$,; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
144 |
$sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
145 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
146 |
elsif ($sFbfProjectRepo) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
147 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
148 |
$sFbfProjectRepo =~ m,(.*[\\/])?([^\\^/]+),; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
149 |
$sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
150 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
151 |
elsif ($sFbfProjectDir) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
152 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
153 |
$sFbfProjectDir =~ m,(.*[\\/])?([^\\^/]+),; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
154 |
$sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
155 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
156 |
#elsif ($sSourcesFile) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
157 |
#{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
158 |
# $sSourcesFile =~ m,/(adaptation|app|mw|os|ostools|tools)[\\/]([^\\^/]+),i; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
159 |
# $sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
160 |
# $sSourcesFile =~ m,(.*[\\/])?([^\\^/]+),; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
161 |
# $sJobLabel = $2 if (!$sJobLabel); |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
162 |
#} |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
163 |
mkdir("$sWORKING_DRIVE\\$sJOB_BASE_DIR") if (!-d "$sWORKING_DRIVE\\$sJOB_BASE_DIR"); |
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
164 |
my $sJobDir = mkdir_unique("$sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel"); |
35
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
165 |
print "Created project dir $sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobDir\n"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
166 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
167 |
print("cd $sBOOTSTRAP_DIR\n"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
168 |
chdir("$sBOOTSTRAP_DIR"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
169 |
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
|
170 |
my $sConfigArg = "-Dsf.config.repo=$sFbfConfigRepo"; |
24
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
171 |
$sConfigArg .= " -Dsf.config.rev=$sFbfConfigRev" if ($sFbfConfigRev); |
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
172 |
$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
|
173 |
my $sProjectArg = "-Dsf.project.repo=$sFbfProjectRepo"; |
24
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
174 |
$sProjectArg .= " -Dsf.project.rev=$sFbfProjectRev" if ($sFbfProjectRev); |
16
e1b9f78cef38
Project spec and config to be taken from a dir instead of from a repo
darios@symbian.org
parents:
15
diff
changeset
|
175 |
$sProjectArg = "-Dsf.project.dir=$sFbfProjectDir" if ($sFbfProjectDir); |
40
6661369591af
Build console output must be redirected to file but must also go to console
Dario Sestito <darios@symbian.org>
parents:
39
diff
changeset
|
176 |
my $sBootstrapCmd = "hlm -f bootstrap.xml $sConfigArg $sProjectArg -Dsf.target.dir=$sJobDir"; |
6661369591af
Build console output must be redirected to file but must also go to console
Dario Sestito <darios@symbian.org>
parents:
39
diff
changeset
|
177 |
print("$sBootstrapCmd\n"); |
50
e8b76d25d90c
Remove dump of stdout/stderr to files as no longer required for brag computation
Dario Sestito <darios@symbian.org>
parents:
49
diff
changeset
|
178 |
system($sBootstrapCmd); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
179 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
180 |
# 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
|
181 |
if (!-f $sNUMBERS_FILE) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
182 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
183 |
open FILE, ">$sNUMBERS_FILE"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
184 |
print FILE "\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
185 |
close FILE; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
186 |
} |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
187 |
|
35
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
188 |
my $sJobNumberKey = ''; |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
189 |
my $sPackage = ''; |
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
190 |
my $sPlatform = ''; |
22
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
191 |
my $nUnformattedNumber = 0; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
192 |
if ($nCmdLineNumber) |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
193 |
{ |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
194 |
$nUnformattedNumber = $nCmdLineNumber; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
195 |
} |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
196 |
elsif ($sFbfProjectRepo) |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
197 |
{ |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
198 |
if ($sSubProject) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
199 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
200 |
# key = <package>_<codeline>, e.g. for subproj=MCL/os/boardsupport -> key=boardsupport_MCL |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
201 |
$sSubProject =~ m,^([^/]+)/[^/]+/([^/]+)$,; |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
202 |
$sPackage = $2; |
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
203 |
$sPlatform = $1; |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
204 |
$sJobNumberKey = "$2_$1"; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
205 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
206 |
else |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
207 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
208 |
# key = hash of the rev.0 of the package project repo |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
209 |
my $sRevZeroHash = get_rev_zero_hash($sFbfProjectRepo); |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
210 |
$sJobNumberKey = $sRevZeroHash; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
211 |
} |
28
bf45384632b0
Add support for --testbuild and --nopublish options
Dario Sestito <darios@symbian.org>
parents:
27
diff
changeset
|
212 |
$nUnformattedNumber = get_job_number($sJobNumberKey); |
22
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
213 |
} |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
214 |
my $nJobNumber = sprintf("%.3d", $nUnformattedNumber); |
35
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
215 |
print "For build key $sJobNumberKey got assigned number \"$nJobNumber\"\n"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
216 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
217 |
# check that $sLETTERS_FILE exists, otherwise create it |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
218 |
if (!-f "$sWORKING_DRIVE\\$sLETTERS_FILE") |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
219 |
{ |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
220 |
open FILE, ">$sWORKING_DRIVE\\$sLETTERS_FILE"; |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
221 |
print FILE "\n"; |
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 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
225 |
# acquire drive letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
226 |
my $sDriveLetter = acquire_drive_letter(); |
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
227 |
die "Could not acquire drive letter" if (!$sDriveLetter); |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
228 |
print "acquired drive letter: $sDriveLetter\n"; |
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
229 |
|
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
230 |
# disable antivirus: |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
231 |
# done after the acquisition of the drive letter as letter file |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
232 |
# is used as a means to sync with concurrent package builds |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
233 |
if ($bDisableAntiVirus) |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
234 |
{ |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
235 |
print "disabling anti-virus\n"; |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
236 |
my $disableav_cmd = "av.bat /stop"; |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
237 |
print "$disableav_cmd\n"; |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
238 |
system($disableav_cmd); |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
239 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
240 |
|
33
4d7642508510
Pass the job rootdir as parameter to helium
Dario Sestito <darios@symbian.org>
parents:
32
diff
changeset
|
241 |
my $sJobRootDirArg = "-Dsf.spec.job.rootdir=$sWORKING_DRIVE\\fbf_job"; |
4d7642508510
Pass the job rootdir as parameter to helium
Dario Sestito <darios@symbian.org>
parents:
32
diff
changeset
|
242 |
|
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
243 |
my $sSubProjArg = ''; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
244 |
$sSubProjArg = "-Dsf.subproject.path=$sSubProject" if ($sSubProject); |
55
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
245 |
my $sVariantArg = ''; |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
246 |
$sVariantArg = "-Dsf.spec.sourcesync.sourcespecfile=sources_$sSubprojVariant.csv" if ($sSubprojVariant); |
58
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
247 |
my $sSBSConfigArg = ''; |
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
248 |
$sSBSConfigArg = "-Dsf.spec.sbs.config=\"$sSBSConfig\"" if ($sSBSConfig); |
55
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
249 |
my $sAllTags = ''; |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
250 |
$sAllTags = $sDiamondsTag if ($sDiamondsTag); |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
251 |
$sAllTags .= ',' if ($sAllTags and $sSubprojVariant); |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
252 |
$sAllTags .= $sSubprojVariant if ($sSubprojVariant); |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
253 |
my $sTagsArg = ""; |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
254 |
$sTagsArg = "-Dsf.spec.publish.diamonds.tag=\"$sAllTags\"" if ($sAllTags); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
255 |
print("cd $sJobDir\\sf-config\n"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
256 |
chdir("$sJobDir\\sf-config"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
257 |
print "###### BUILD PREPARATION ######\n"; |
58
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
258 |
my $sPreparationCmd = "hlm sf-prep -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTagsArg $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt $sVariantArg $sSBSConfigArg"; |
40
6661369591af
Build console output must be redirected to file but must also go to console
Dario Sestito <darios@symbian.org>
parents:
39
diff
changeset
|
259 |
print("$sPreparationCmd\n"); |
50
e8b76d25d90c
Remove dump of stdout/stderr to files as no longer required for brag computation
Dario Sestito <darios@symbian.org>
parents:
49
diff
changeset
|
260 |
system($sPreparationCmd); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
261 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
262 |
print "###### EXECUTE BUILD ######\n"; |
58
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
263 |
my $sBuildallCmd = "hlm sf-build-all -Dsf.project.type=package $sSubProjArg -Dsf.spec.job.number=$nJobNumber -Dsf.spec.job.drive=$sDriveLetter: $sTagsArg $sNoPublishOpt $sJobRootDirArg $sHlmDefineOpt $sVariantArg $sSBSConfigArg"; |
40
6661369591af
Build console output must be redirected to file but must also go to console
Dario Sestito <darios@symbian.org>
parents:
39
diff
changeset
|
264 |
print("$sBuildallCmd\n"); |
50
e8b76d25d90c
Remove dump of stdout/stderr to files as no longer required for brag computation
Dario Sestito <darios@symbian.org>
parents:
49
diff
changeset
|
265 |
system($sBuildallCmd); |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
266 |
|
37
2e0ebeeeaf52
Change back to bootstrap dir after the build to allow removal of project dir
Dario Sestito <darios@symbian.org>
parents:
36
diff
changeset
|
267 |
print("cd $sBOOTSTRAP_DIR\n"); |
2e0ebeeeaf52
Change back to bootstrap dir after the build to allow removal of project dir
Dario Sestito <darios@symbian.org>
parents:
36
diff
changeset
|
268 |
chdir("$sBOOTSTRAP_DIR"); |
2e0ebeeeaf52
Change back to bootstrap dir after the build to allow removal of project dir
Dario Sestito <darios@symbian.org>
parents:
36
diff
changeset
|
269 |
|
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
270 |
# release the drive letter and optionally re-enable the AV |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
271 |
release_drive_letter_and_reenable_av($sDriveLetter); |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
272 |
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
|
273 |
print "drive letter $sDriveLetter released (and drive unsubsted)\n"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
274 |
|
35
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
275 |
if ($bHudson) |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
276 |
{ |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
277 |
print "cleaning job directories...\n"; |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
278 |
if (-d "$sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel") # project dir |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
279 |
{ |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
280 |
print "rmdir /S $sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel\n"; |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
281 |
system("rmdir /S /Q $sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel"); |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
282 |
} |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
283 |
if (-d "$sWORKING_DRIVE\\fbf_job\\$sPackage\_$sPlatform.$nJobNumber") # build drive |
35
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
284 |
{ |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
285 |
print "rmdir /S $sWORKING_DRIVE\\fbf_job\\$sPackage\_$sPlatform.$nJobNumber\n"; |
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
286 |
system("rmdir /S /Q $sWORKING_DRIVE\\fbf_job\\$sPackage\_$sPlatform.$nJobNumber"); |
35
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
287 |
} |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
288 |
} |
4d500511bf5a
Add removal of job directories if build is run from build management system (i.e. --hudson is given)
Dario Sestito <darios@symbian.org>
parents:
34
diff
changeset
|
289 |
|
45
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
290 |
sub find_working_drive |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
291 |
{ |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
292 |
my @drive_list = ('E', 'G', 'D', 'C'); |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
293 |
|
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
294 |
for my $drive (@drive_list) |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
295 |
{ |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
296 |
return "$drive:" if (-d "$drive:/"); |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
297 |
} |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
298 |
|
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
299 |
die "Could not find suitable working drive."; |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
300 |
} |
61887c5ee9db
Include drive E in the search for a working drive. Make copy of console output files conditional on --publish
Dario Sestito <darios@symbian.org>
parents:
44
diff
changeset
|
301 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
302 |
sub mkdir_unique |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
303 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
304 |
my ($sBaseDir) = @_; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
305 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
306 |
# 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
|
307 |
$sBaseDir =~ m,(.*[\\/])?(.*),; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
308 |
mkpath($1) if ($1 && !-d $1); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
309 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
310 |
my $nI = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
311 |
my $sNewDirName = "$sBaseDir"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
312 |
while(!mkdir($sNewDirName)) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
313 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
314 |
$nI++; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
315 |
$sNewDirName = "$sBaseDir.$nI"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
316 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
317 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
318 |
return $sNewDirName; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
319 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
320 |
|
22
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
321 |
sub get_rev_zero_hash |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
322 |
{ |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
323 |
my ($sFbfProjectRepo) = @_; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
324 |
|
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
325 |
my $sOutput = `hg -R $sFbfProjectRepo identify -r0`; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
326 |
|
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
327 |
# remove leading and trailing spaces |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
328 |
$sOutput =~ s,^\s+,,; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
329 |
$sOutput =~ s,\s+$,,; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
330 |
|
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
331 |
# remove tags e.g. "1fc39a7e9d79 tip" |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
332 |
$sOutput =~ s,([0-9a-z]+)\s+.*,$1,; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
333 |
|
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
334 |
return $sOutput; |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
335 |
} |
7a9425957569
Label to be retrieved automatically from project repo path, numbers file indexed by revision zero hash
Dario Sestito <darios@symbian.org>
parents:
21
diff
changeset
|
336 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
337 |
sub get_job_number |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
338 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
339 |
my ($sKey) = @_; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
340 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
341 |
$sKey=lc($sKey); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
342 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
343 |
my %hnNumbers = (); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
344 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
345 |
my $nAttempts = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
346 |
my $bGotNumber = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
347 |
do |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
348 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
349 |
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
|
350 |
if ( flock(FILE, 6) ) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
351 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
352 |
my $sLine; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
353 |
while ($sLine = <FILE>) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
354 |
{ |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
355 |
$hnNumbers{lc($1)} = $2 if ($sLine =~ m%(.*),(.*)%); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
356 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
357 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
358 |
$hnNumbers{$sKey} = 0 if (! $hnNumbers{$sKey} ); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
359 |
$hnNumbers{$sKey} = $hnNumbers{$sKey} + 1; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
360 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
361 |
seek(FILE, 0, 0); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
362 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
363 |
for my $sStr ( keys(%hnNumbers) ) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
364 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
365 |
print FILE "$sStr,$hnNumbers{$sStr}\n"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
366 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
367 |
truncate(FILE,tell(FILE)); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
368 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
369 |
$bGotNumber = 1; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
370 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
371 |
else |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
372 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
373 |
$nAttempts ++; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
374 |
sleep(3); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
375 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
376 |
close(FILE); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
377 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
378 |
until ( $bGotNumber or $nAttempts == $nLOCK_FILE_MAX_ATTEMPTS ); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
379 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
380 |
return $hnNumbers{$sKey}; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
381 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
382 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
383 |
sub acquire_drive_letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
384 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
385 |
my %hsPidsAndTimestamps = (); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
386 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
387 |
my $sLetterToRelease = ''; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
388 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
389 |
my $nAttempts = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
390 |
my $bAcquired = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
391 |
do |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
392 |
{ |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
393 |
open(FILE, "+<$sWORKING_DRIVE\\$sLETTERS_FILE") or die("Can't open $sWORKING_DRIVE\\$sLETTERS_FILE"); |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
394 |
if ( flock(FILE, 6) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
395 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
396 |
my $sLine; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
397 |
while ($sLine = <FILE>) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
398 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
399 |
if ($sLine =~ m%([^,]*),(.*)%) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
400 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
401 |
my $sLetter=$1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
402 |
my $sString=$2; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
403 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
404 |
$sString=~m%([^,]*),(.*)%; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
405 |
my $nPid=$1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
406 |
my $nTimestamp=$2; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
407 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
408 |
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
|
409 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
410 |
$hsPidsAndTimestamps{$sLetter} = $sString; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
411 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
412 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
413 |
{ |
19
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
414 |
# lease has expired: unsubst drive letter and don't add to hash |
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
415 |
system("subst $sLetter: /d"); |
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
416 |
print "forced release of letter: $sLetter (and drive unsubsted)\n"; |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
417 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
418 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
419 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
420 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
421 |
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
|
422 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
423 |
if (! $hsPidsAndTimestamps{$sNewLetter}) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
424 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
425 |
my $sTimestamp = time(); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
426 |
$hsPidsAndTimestamps{$sNewLetter} = "$$,$sTimestamp"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
427 |
$sLetterToRelease = $sNewLetter; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
428 |
last; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
429 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
430 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
431 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
432 |
seek(FILE, 0, 0); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
433 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
434 |
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
|
435 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
436 |
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
|
437 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
438 |
truncate(FILE,tell(FILE)); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
439 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
440 |
$bAcquired = 1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
441 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
442 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
443 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
444 |
$nAttempts ++; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
445 |
sleep(3); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
446 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
447 |
close(FILE); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
448 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
449 |
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
|
450 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
451 |
return $sLetterToRelease; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
452 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
453 |
|
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
454 |
sub release_drive_letter_and_reenable_av |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
455 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
456 |
my ($sLetterToRelease) = @_; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
457 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
458 |
my %hsPidsAndTimestamps = (); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
459 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
460 |
my $nAttempts = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
461 |
my $bAcquired = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
462 |
do |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
463 |
{ |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
464 |
open(FILE, "+<$sWORKING_DRIVE\\$sLETTERS_FILE") or die("Can't open $sWORKING_DRIVE\\$sLETTERS_FILE"); |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
465 |
if ( flock(FILE, 6) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
466 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
467 |
my $sLine; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
468 |
while ($sLine = <FILE>) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
469 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
470 |
$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
|
471 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
472 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
473 |
delete $hsPidsAndTimestamps{$sLetterToRelease}; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
474 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
475 |
seek(FILE, 0, 0); |
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
476 |
|
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
477 |
# if there are no other builds at this time then enable back the antivirus |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
478 |
my $nConcurrentBuilds = scalar(keys(%hsPidsAndTimestamps)); |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
479 |
if ($nConcurrentBuilds == 0) |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
480 |
{ |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
481 |
if ($bDisableAntiVirus) |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
482 |
{ |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
483 |
print "enabling anti-virus\n"; |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
484 |
my $enableav_cmd = "av.bat /start"; |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
485 |
print "$enableav_cmd\n"; |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
486 |
system($enableav_cmd); |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
487 |
} |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
488 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
489 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
490 |
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
|
491 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
492 |
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
|
493 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
494 |
truncate(FILE,tell(FILE)); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
495 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
496 |
$bAcquired = 1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
497 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
498 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
499 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
500 |
$nAttempts ++; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
501 |
sleep(3); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
502 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
503 |
close(FILE); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
504 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
505 |
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
|
506 |
} |