author | Dario Sestito <darios@symbian.org> |
Tue, 09 Mar 2010 13:05:26 +0000 | |
changeset 72 | 50ab3bef1c6a |
parent 71 | f7ba24a607f8 |
child 73 | 457adde87bbd |
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 |
|
69
82b5ad2f2024
By default take project and config from the web
Dario Sestito <darios@symbian.org>
parents:
68
diff
changeset
|
29 |
my $sFbfProjectRepo = "http://developer.symbian.org/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 = ''; |
69
82b5ad2f2024
By default take project and config from the web
Dario Sestito <darios@symbian.org>
parents:
68
diff
changeset
|
36 |
my $sFbfConfigRepo="http://developer.symbian.org/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, |
60
6e2dd2cc846d
Fix --sbsconfig option should take a string as argument
Dario Sestito <darios@symbian.org>
parents:
59
diff
changeset
|
52 |
'sbsconfig=s' => \$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, |
65
d0bd2fd2c468
Fix --disableav option is not declared boolean
Dario Sestito <darios@symbian.org>
parents:
61
diff
changeset
|
60 |
'disableav!' => \$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"; |
69
82b5ad2f2024
By default take project and config from the web
Dario Sestito <darios@symbian.org>
parents:
68
diff
changeset
|
72 |
print "\t--projectrepo=REPO[#REV] Use repository REPO at revision REV for the project (instead of http://developer.symbian.org/oss/FCL/interim/fbf/projects/packages)\n"; |
31
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"; |
69
82b5ad2f2024
By default take project and config from the web
Dario Sestito <darios@symbian.org>
parents:
68
diff
changeset
|
76 |
print "\t--configrepo=REPO[#REV] Use repository REPO at revision REV for the config (instead of http://developer.symbian.org/oss/FCL/interim/fbf/configs/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"; |
72
50ab3bef1c6a
No more check for drive space if given --hudson as this makes the builds fail most of the time unnecessarily
Dario Sestito <darios@symbian.org>
parents:
71
diff
changeset
|
80 |
print "\t--hudson Clean up all job dirs after the build)\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 |
|
70
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
102 |
# check that $sLETTERS_FILE exists, otherwise create it |
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
103 |
if (!-f "$sWORKING_DRIVE\\$sLETTERS_FILE") |
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
104 |
{ |
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
105 |
open FILE, ">$sWORKING_DRIVE\\$sLETTERS_FILE"; |
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
106 |
print FILE "\n"; |
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
107 |
close FILE; |
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
108 |
} |
450398a72180
Move creation of letter file before Hudson space check, otherwise check could fail (if no file at all is present on the working drive)
Dario Sestito <darios@symbian.org>
parents:
69
diff
changeset
|
109 |
|
24
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
110 |
my $sFbfProjectRev = ''; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
111 |
if ($sFbfProjectRepo =~ m,(.*)#(.*),) |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
112 |
{ |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
113 |
$sFbfProjectRepo = $1; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
114 |
$sFbfProjectRev = $2; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
115 |
} |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
116 |
my $sFbfConfigRev = ''; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
117 |
if ($sFbfConfigRepo =~ m,(.*)#(.*),) |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
118 |
{ |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
119 |
$sFbfConfigRepo = $1; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
120 |
$sFbfConfigRev = $2; |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
121 |
} |
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
122 |
|
49
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
123 |
my $sHlmDefineOpt = ''; |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
124 |
for (keys %hHlmDefines) |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
125 |
{ |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
126 |
$sHlmDefineOpt .= "-D$_=$hHlmDefines{$_} "; |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
127 |
} |
07eb981b2b45
Support for passing -D options to Helium
Dario Sestito <darios@symbian.org>
parents:
48
diff
changeset
|
128 |
|
28
bf45384632b0
Add support for --testbuild and --nopublish options
Dario Sestito <darios@symbian.org>
parents:
27
diff
changeset
|
129 |
my $sNoPublishOpt = ""; |
bf45384632b0
Add support for --testbuild and --nopublish options
Dario Sestito <darios@symbian.org>
parents:
27
diff
changeset
|
130 |
$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
|
131 |
$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
|
132 |
|
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
133 |
my $sJobLabel = 'job'; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
134 |
if ($sSubProject) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
135 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
136 |
$sSubProject =~ m,^([^/]+)/[^/]+/([^/]+)$,; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
137 |
$sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
138 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
139 |
elsif ($sFbfProjectRepo) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
140 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
141 |
$sFbfProjectRepo =~ m,(.*[\\/])?([^\\^/]+),; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
142 |
$sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
143 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
144 |
elsif ($sFbfProjectDir) |
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 |
$sFbfProjectDir =~ m,(.*[\\/])?([^\\^/]+),; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
147 |
$sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
148 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
149 |
#elsif ($sSourcesFile) |
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 |
# $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
|
152 |
# $sJobLabel = $2; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
153 |
# $sSourcesFile =~ m,(.*[\\/])?([^\\^/]+),; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
154 |
# $sJobLabel = $2 if (!$sJobLabel); |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
155 |
#} |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
156 |
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
|
157 |
my $sJobDir = mkdir_unique("$sWORKING_DRIVE\\$sJOB_BASE_DIR\\$sJobLabel"); |
71
f7ba24a607f8
Remove the correct job directory after the build, otherwise concurrent builds of the same package if run at the same time will have their jobdir removed and hence fail
Dario Sestito <darios@symbian.org>
parents:
70
diff
changeset
|
158 |
print "Created project dir $sJobDir\n"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
159 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
160 |
print("cd $sBOOTSTRAP_DIR\n"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
161 |
chdir("$sBOOTSTRAP_DIR"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
162 |
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
|
163 |
my $sConfigArg = "-Dsf.config.repo=$sFbfConfigRepo"; |
24
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
164 |
$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
|
165 |
$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
|
166 |
my $sProjectArg = "-Dsf.project.repo=$sFbfProjectRepo"; |
24
ed4e68942437
Allow revisions for projects and configs
Dario Sestito <darios@symbian.org>
parents:
22
diff
changeset
|
167 |
$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
|
168 |
$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
|
169 |
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
|
170 |
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
|
171 |
system($sBootstrapCmd); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
172 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
173 |
# 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
|
174 |
if (!-f $sNUMBERS_FILE) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
175 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
176 |
open FILE, ">$sNUMBERS_FILE"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
177 |
print FILE "\n"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
178 |
close FILE; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
179 |
} |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
180 |
|
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
|
181 |
my $sJobNumberKey = ''; |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
182 |
my $sPackage = ''; |
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
183 |
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
|
184 |
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
|
185 |
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
|
186 |
{ |
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
|
187 |
$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
|
188 |
} |
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
|
189 |
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
|
190 |
{ |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
191 |
if ($sSubProject) |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
192 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
193 |
# 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
|
194 |
$sSubProject =~ m,^([^/]+)/[^/]+/([^/]+)$,; |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
195 |
$sPackage = $2; |
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
196 |
$sPlatform = $1; |
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
197 |
$sJobNumberKey = "$2_$1"; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
198 |
} |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
199 |
else |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
200 |
{ |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
201 |
# 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
|
202 |
my $sRevZeroHash = get_rev_zero_hash($sFbfProjectRepo); |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
203 |
$sJobNumberKey = $sRevZeroHash; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
204 |
} |
28
bf45384632b0
Add support for --testbuild and --nopublish options
Dario Sestito <darios@symbian.org>
parents:
27
diff
changeset
|
205 |
$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
|
206 |
} |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
207 |
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
|
208 |
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
|
209 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
210 |
# acquire drive letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
211 |
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
|
212 |
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
|
213 |
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
|
214 |
|
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
215 |
# 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
|
216 |
# 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
|
217 |
# 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
|
218 |
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
|
219 |
{ |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
220 |
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
|
221 |
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
|
222 |
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
|
223 |
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
|
224 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
225 |
|
33
4d7642508510
Pass the job rootdir as parameter to helium
Dario Sestito <darios@symbian.org>
parents:
32
diff
changeset
|
226 |
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
|
227 |
|
31
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
228 |
my $sSubProjArg = ''; |
7d05cbb136ad
Enable package builds from one common repository
Dario Sestito <darios@symbian.org>
parents:
29
diff
changeset
|
229 |
$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
|
230 |
my $sVariantArg = ''; |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
231 |
$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
|
232 |
my $sSBSConfigArg = ''; |
806b67128bee
Removed --rvct4 option and introduced a more generic --sbsconfig option
Dario Sestito <darios@symbian.org>
parents:
57
diff
changeset
|
233 |
$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
|
234 |
my $sAllTags = ''; |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
235 |
$sAllTags = $sDiamondsTag if ($sDiamondsTag); |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
236 |
$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
|
237 |
$sAllTags .= $sSubprojVariant if ($sSubprojVariant); |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
238 |
my $sTagsArg = ""; |
0d56e5b89632
Add support for subproject variant. Add support for RVCT4 build
Dario Sestito <darios@symbian.org>
parents:
53
diff
changeset
|
239 |
$sTagsArg = "-Dsf.spec.publish.diamonds.tag=\"$sAllTags\"" if ($sAllTags); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
240 |
print("cd $sJobDir\\sf-config\n"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
241 |
chdir("$sJobDir\\sf-config"); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
242 |
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
|
243 |
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
|
244 |
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
|
245 |
system($sPreparationCmd); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
246 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
247 |
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
|
248 |
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
|
249 |
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
|
250 |
system($sBuildallCmd); |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
251 |
|
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
|
252 |
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
|
253 |
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
|
254 |
|
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
255 |
# 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
|
256 |
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
|
257 |
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
|
258 |
print "drive letter $sDriveLetter released (and drive unsubsted)\n"; |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
259 |
|
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
|
260 |
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
|
261 |
{ |
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
|
262 |
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
|
263 |
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
|
264 |
{ |
71
f7ba24a607f8
Remove the correct job directory after the build, otherwise concurrent builds of the same package if run at the same time will have their jobdir removed and hence fail
Dario Sestito <darios@symbian.org>
parents:
70
diff
changeset
|
265 |
print "rmdir /S /Q $sJobDir\n"; |
f7ba24a607f8
Remove the correct job directory after the build, otherwise concurrent builds of the same package if run at the same time will have their jobdir removed and hence fail
Dario Sestito <darios@symbian.org>
parents:
70
diff
changeset
|
266 |
system("rmdir /S /Q $sJobDir"); |
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
|
267 |
} |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
268 |
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
|
269 |
{ |
39
d6975a94a893
Dump console output to files and upload them to \\bishare
Dario Sestito <darios@symbian.org>
parents:
38
diff
changeset
|
270 |
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
|
271 |
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
|
272 |
} |
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
|
273 |
} |
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
|
274 |
|
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
|
275 |
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
|
276 |
{ |
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
|
277 |
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
|
278 |
|
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
|
279 |
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
|
280 |
{ |
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
|
281 |
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
|
282 |
} |
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
|
283 |
|
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
|
284 |
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
|
285 |
} |
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
|
286 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
287 |
sub mkdir_unique |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
288 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
289 |
my ($sBaseDir) = @_; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
290 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
291 |
# 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
|
292 |
$sBaseDir =~ m,(.*[\\/])?(.*),; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
293 |
mkpath($1) if ($1 && !-d $1); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
294 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
295 |
my $nI = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
296 |
my $sNewDirName = "$sBaseDir"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
297 |
while(!mkdir($sNewDirName)) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
298 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
299 |
$nI++; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
300 |
$sNewDirName = "$sBaseDir.$nI"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
301 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
302 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
303 |
return $sNewDirName; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
304 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
305 |
|
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
|
306 |
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
|
307 |
{ |
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
|
308 |
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
|
309 |
|
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
|
310 |
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
|
311 |
|
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
|
312 |
# 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
|
313 |
$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
|
314 |
$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
|
315 |
|
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
|
316 |
# 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
|
317 |
$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
|
318 |
|
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
|
319 |
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
|
320 |
} |
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 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
322 |
sub get_job_number |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
323 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
324 |
my ($sKey) = @_; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
325 |
|
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
326 |
$sKey=lc($sKey); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
327 |
|
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
328 |
my %hnNumbers = (); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
329 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
330 |
my $nAttempts = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
331 |
my $bGotNumber = 0; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
332 |
do |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
333 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
334 |
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
|
335 |
if ( flock(FILE, 6) ) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
336 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
337 |
my $sLine; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
338 |
while ($sLine = <FILE>) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
339 |
{ |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
340 |
$hnNumbers{lc($1)} = $2 if ($sLine =~ m%(.*),(.*)%); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
341 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
342 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
343 |
$hnNumbers{$sKey} = 0 if (! $hnNumbers{$sKey} ); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
344 |
$hnNumbers{$sKey} = $hnNumbers{$sKey} + 1; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
345 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
346 |
seek(FILE, 0, 0); |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
347 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
348 |
for my $sStr ( keys(%hnNumbers) ) |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
349 |
{ |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
350 |
print FILE "$sStr,$hnNumbers{$sStr}\n"; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
351 |
} |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
352 |
truncate(FILE,tell(FILE)); |
11
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
353 |
|
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
354 |
$bGotNumber = 1; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
355 |
} |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
356 |
else |
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 |
$nAttempts ++; |
f3475510d60c
Added script to automate package build steps
BuildAdmin@LON-ENGBUILD89
parents:
diff
changeset
|
359 |
sleep(3); |
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 |
close(FILE); |
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 |
until ( $bGotNumber or $nAttempts == $nLOCK_FILE_MAX_ATTEMPTS ); |
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 |
return $hnNumbers{$sKey}; |
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 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
368 |
sub acquire_drive_letter |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
369 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
370 |
my %hsPidsAndTimestamps = (); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
371 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
372 |
my $sLetterToRelease = ''; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
373 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
374 |
my $nAttempts = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
375 |
my $bAcquired = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
376 |
do |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
377 |
{ |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
378 |
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
|
379 |
if ( flock(FILE, 6) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
380 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
381 |
my $sLine; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
382 |
while ($sLine = <FILE>) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
383 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
384 |
if ($sLine =~ m%([^,]*),(.*)%) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
385 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
386 |
my $sLetter=$1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
387 |
my $sString=$2; |
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 |
$sString=~m%([^,]*),(.*)%; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
390 |
my $nPid=$1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
391 |
my $nTimestamp=$2; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
392 |
|
61
cfb15e4d62a4
In letters file allow timestamp=0 to have the drive left alone
Dario Sestito <darios@symbian.org>
parents:
60
diff
changeset
|
393 |
if (time()-$nTimestamp<=$nMAX_LETTER_AGE_SECONDS or $nTimestamp == 0 or $nTimestamp == -1) |
13
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
394 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
395 |
$hsPidsAndTimestamps{$sLetter} = $sString; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
396 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
397 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
398 |
{ |
19
472feb69d0c9
Changed location of default config repo, added --testbuild option, extended help
Dario Sestito <darios@symbian.org>
parents:
17
diff
changeset
|
399 |
# 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
|
400 |
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
|
401 |
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
|
402 |
} |
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 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
405 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
406 |
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
|
407 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
408 |
if (! $hsPidsAndTimestamps{$sNewLetter}) |
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 |
my $sTimestamp = time(); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
411 |
$hsPidsAndTimestamps{$sNewLetter} = "$$,$sTimestamp"; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
412 |
$sLetterToRelease = $sNewLetter; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
413 |
last; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
414 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
415 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
416 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
417 |
seek(FILE, 0, 0); |
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 |
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
|
420 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
421 |
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
|
422 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
423 |
truncate(FILE,tell(FILE)); |
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 |
$bAcquired = 1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
426 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
427 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
428 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
429 |
$nAttempts ++; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
430 |
sleep(3); |
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 |
close(FILE); |
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 |
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
|
435 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
436 |
return $sLetterToRelease; |
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 |
|
59
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
439 |
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
|
440 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
441 |
my ($sLetterToRelease) = @_; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
442 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
443 |
my %hsPidsAndTimestamps = (); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
444 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
445 |
my $nAttempts = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
446 |
my $bAcquired = 0; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
447 |
do |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
448 |
{ |
32
11821242bc3e
Make G: the working drive (unless not ready) and D: the second option
Dario Sestito <darios@symbian.org>
parents:
31
diff
changeset
|
449 |
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
|
450 |
if ( flock(FILE, 6) ) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
451 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
452 |
my $sLine; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
453 |
while ($sLine = <FILE>) |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
454 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
455 |
$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
|
456 |
} |
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 |
delete $hsPidsAndTimestamps{$sLetterToRelease}; |
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 |
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
|
461 |
|
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
462 |
# 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
|
463 |
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
|
464 |
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
|
465 |
{ |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
466 |
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
|
467 |
{ |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
468 |
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
|
469 |
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
|
470 |
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
|
471 |
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
|
472 |
} |
d41d4cdb97ad
Add --disableav option to disable the antivirus for the duration of the build
Dario Sestito <darios@symbian.org>
parents:
58
diff
changeset
|
473 |
} |
13
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 |
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
|
476 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
477 |
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
|
478 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
479 |
truncate(FILE,tell(FILE)); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
480 |
|
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
481 |
$bAcquired = 1; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
482 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
483 |
else |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
484 |
{ |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
485 |
$nAttempts ++; |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
486 |
sleep(3); |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
487 |
} |
85202f272e4a
Changes to make build_package.pl allocate drive and build number automatically
darios@symbian.org
parents:
12
diff
changeset
|
488 |
close(FILE); |
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 |
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
|
491 |
} |