Filename | /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer.pm |
Statements | Executed 14462 statements in 5.66s |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 288ms | 288ms | CORE:backtick (opcode) | installer::
3 | 3 | 1 | 60.3ms | 60.3ms | CORE:print (opcode) | installer::
1 | 1 | 1 | 29.5ms | 60.2ms | BEGIN@41 | installer::
110 | 2 | 1 | 22.0ms | 22.0ms | CORE:ftdir (opcode) | installer::
1 | 1 | 1 | 18.9ms | 19.8ms | BEGIN@75 | installer::
1 | 1 | 1 | 18.6ms | 19.4ms | BEGIN@74 | installer::
1 | 1 | 1 | 17.6ms | 79.2ms | BEGIN@32 | installer::
1 | 1 | 1 | 15.5ms | 20.7ms | BEGIN@33 | installer::
1 | 1 | 1 | 15.5ms | 29.0ms | BEGIN@76 | installer::
1 | 1 | 1 | 12.8ms | 28.5ms | BEGIN@34 | installer::
1 | 1 | 1 | 9.83ms | 20.6ms | BEGIN@68 | installer::
1 | 1 | 1 | 7.76ms | 8.23ms | BEGIN@77 | installer::
1 | 1 | 1 | 7.58ms | 11.0ms | BEGIN@39 | installer::
1 | 1 | 1 | 7.55ms | 10.6ms | BEGIN@57 | installer::
1 | 1 | 1 | 6.80ms | 7.49ms | BEGIN@50 | installer::
1 | 1 | 1 | 6.33ms | 6.81ms | BEGIN@80 | installer::
1 | 1 | 1 | 6.31ms | 309ms | BEGIN@35 | installer::
1 | 1 | 1 | 6.25ms | 6.89ms | BEGIN@45 | installer::
1 | 1 | 1 | 5.94ms | 6.44ms | BEGIN@65 | installer::
1 | 1 | 1 | 5.90ms | 6.52ms | BEGIN@46 | installer::
1 | 1 | 1 | 5.11ms | 5.99ms | BEGIN@66 | installer::
1 | 1 | 1 | 4.79ms | 8.81ms | BEGIN@30 | installer::
1 | 1 | 1 | 4.68ms | 5.11ms | BEGIN@63 | installer::
1 | 1 | 1 | 4.60ms | 5.04ms | BEGIN@79 | installer::
1 | 1 | 1 | 3.29ms | 22.4ms | BEGIN@61 | installer::
1 | 1 | 1 | 3.02ms | 3.47ms | BEGIN@73 | installer::
1 | 1 | 1 | 2.73ms | 3.26ms | BEGIN@52 | installer::
1 | 1 | 1 | 2.48ms | 2.94ms | BEGIN@59 | installer::
1 | 1 | 1 | 2.44ms | 2.89ms | BEGIN@83 | installer::
1 | 1 | 1 | 2.37ms | 2.94ms | BEGIN@67 | installer::
1 | 1 | 1 | 2.28ms | 8.83ms | BEGIN@53 | installer::
1 | 1 | 1 | 2.19ms | 2.79ms | BEGIN@81 | installer::
1 | 1 | 1 | 2.05ms | 2.87ms | BEGIN@38 | installer::
3 | 3 | 1 | 1.94ms | 1.94ms | CORE:open (opcode) | installer::
1 | 1 | 1 | 1.94ms | 2.35ms | BEGIN@64 | installer::
1 | 1 | 1 | 1.89ms | 2.27ms | BEGIN@40 | installer::
1 | 1 | 1 | 1.88ms | 2.31ms | BEGIN@72 | installer::
1 | 1 | 1 | 1.69ms | 2.11ms | BEGIN@78 | installer::
1 | 1 | 1 | 1.29ms | 1.77ms | BEGIN@70 | installer::
1 | 1 | 1 | 1.13ms | 1.53ms | BEGIN@62 | installer::
1 | 1 | 1 | 61µs | -8913s | main | installer::
1 | 1 | 1 | 20µs | 22µs | BEGIN@51 | installer::
1 | 1 | 1 | 19µs | 22µs | BEGIN@36 | installer::
1 | 1 | 1 | 19µs | 21µs | BEGIN@60 | installer::
1 | 1 | 1 | 19µs | 20µs | BEGIN@42 | installer::
1 | 1 | 1 | 18µs | 21µs | BEGIN@49 | installer::
1 | 1 | 1 | 18µs | 20µs | BEGIN@47 | installer::
1 | 1 | 1 | 17µs | 19µs | BEGIN@37 | installer::
1 | 1 | 1 | 17µs | 20µs | BEGIN@84 | installer::
1 | 1 | 1 | 17µs | 19µs | BEGIN@69 | installer::
1 | 1 | 1 | 16µs | 19µs | BEGIN@82 | installer::
1 | 1 | 1 | 16µs | 18µs | BEGIN@43 | installer::
1 | 1 | 1 | 16µs | 18µs | BEGIN@85 | installer::
1 | 1 | 1 | 16µs | 18µs | BEGIN@54 | installer::
1 | 1 | 1 | 16µs | 18µs | BEGIN@44 | installer::
1 | 1 | 1 | 15µs | 71µs | BEGIN@58 | installer::
1 | 1 | 1 | 15µs | 56µs | BEGIN@48 | installer::
1 | 1 | 1 | 14µs | 16µs | BEGIN@71 | installer::
1 | 1 | 1 | 14µs | 44µs | BEGIN@56 | installer::
1 | 1 | 1 | 14µs | 14µs | CORE:subst (opcode) | installer::
3 | 3 | 1 | 14µs | 14µs | CORE:match (opcode) | installer::
1 | 1 | 1 | 13µs | 16µs | BEGIN@55 | installer::
1 | 1 | 1 | -7726s | -8913s | run | installer::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | #************************************************************************* | ||||
2 | # | ||||
3 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | ||||
4 | # | ||||
5 | # Copyright 2000, 2010 Oracle and/or its affiliates. | ||||
6 | # | ||||
7 | # OpenOffice.org - a multi-platform office productivity suite | ||||
8 | # | ||||
9 | # This file is part of OpenOffice.org. | ||||
10 | # | ||||
11 | # OpenOffice.org is free software: you can redistribute it and/or modify | ||||
12 | # it under the terms of the GNU Lesser General Public License version 3 | ||||
13 | # only, as published by the Free Software Foundation. | ||||
14 | # | ||||
15 | # OpenOffice.org is distributed in the hope that it will be useful, | ||||
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
18 | # GNU Lesser General Public License version 3 for more details | ||||
19 | # (a copy is included in the LICENSE file that accompanied this code). | ||||
20 | # | ||||
21 | # You should have received a copy of the GNU Lesser General Public License | ||||
22 | # version 3 along with OpenOffice.org. If not, see | ||||
23 | # <http://www.openoffice.org/license.html> | ||||
24 | # for a copy of the LGPLv3 License. | ||||
25 | # | ||||
26 | #************************************************************************* | ||||
27 | |||||
28 | package installer; | ||||
29 | |||||
30 | 2 | 2.80ms | 2 | 12.5ms | # spent 8.81ms (4.79+4.02) within installer::BEGIN@30 which was called:
# once (4.79ms+4.02ms) by main::BEGIN@33 at line 30 # spent 8.81ms making 1 call to installer::BEGIN@30
# spent 3.69ms making 1 call to base::import |
31 | |||||
32 | 2 | 2.47ms | 2 | 79.3ms | # spent 79.2ms (17.6+61.6) within installer::BEGIN@32 which was called:
# once (17.6ms+61.6ms) by main::BEGIN@33 at line 32 # spent 79.2ms making 1 call to installer::BEGIN@32
# spent 90µs making 1 call to Exporter::import |
33 | 2 | 2.55ms | 2 | 20.8ms | # spent 20.7ms (15.5+5.24) within installer::BEGIN@33 which was called:
# once (15.5ms+5.24ms) by main::BEGIN@33 at line 33 # spent 20.7ms making 1 call to installer::BEGIN@33
# spent 66µs making 1 call to Exporter::import |
34 | 2 | 2.63ms | 2 | 28.6ms | # spent 28.5ms (12.8+15.7) within installer::BEGIN@34 which was called:
# once (12.8ms+15.7ms) by main::BEGIN@33 at line 34 # spent 28.5ms making 1 call to installer::BEGIN@34
# spent 78µs making 1 call to Exporter::import |
35 | 2 | 1.12ms | 2 | 309ms | # spent 309ms (6.31+303) within installer::BEGIN@35 which was called:
# once (6.31ms+303ms) by main::BEGIN@33 at line 35 # spent 309ms making 1 call to installer::BEGIN@35
# spent 7µs making 1 call to UNIVERSAL::import |
36 | 2 | 59µs | 2 | 25µs | # spent 22µs (19+3) within installer::BEGIN@36 which was called:
# once (19µs+3µs) by main::BEGIN@33 at line 36 # spent 22µs making 1 call to installer::BEGIN@36
# spent 3µs making 1 call to UNIVERSAL::import |
37 | 2 | 62µs | 2 | 21µs | # spent 19µs (17+2) within installer::BEGIN@37 which was called:
# once (17µs+2µs) by main::BEGIN@33 at line 37 # spent 19µs making 1 call to installer::BEGIN@37
# spent 2µs making 1 call to UNIVERSAL::import |
38 | 2 | 1.48ms | 2 | 2.88ms | # spent 2.87ms (2.05+823µs) within installer::BEGIN@38 which was called:
# once (2.05ms+823µs) by main::BEGIN@33 at line 38 # spent 2.87ms making 1 call to installer::BEGIN@38
# spent 3µs making 1 call to UNIVERSAL::import |
39 | 2 | 1.09ms | 2 | 11.0ms | # spent 11.0ms (7.58+3.44) within installer::BEGIN@39 which was called:
# once (7.58ms+3.44ms) by main::BEGIN@33 at line 39 # spent 11.0ms making 1 call to installer::BEGIN@39
# spent 6µs making 1 call to UNIVERSAL::import |
40 | 2 | 1.06ms | 2 | 2.27ms | # spent 2.27ms (1.89+376µs) within installer::BEGIN@40 which was called:
# once (1.89ms+376µs) by main::BEGIN@33 at line 40 # spent 2.27ms making 1 call to installer::BEGIN@40
# spent 3µs making 1 call to UNIVERSAL::import |
41 | 2 | 1.04ms | 2 | 60.2ms | # spent 60.2ms (29.5+30.7) within installer::BEGIN@41 which was called:
# once (29.5ms+30.7ms) by main::BEGIN@33 at line 41 # spent 60.2ms making 1 call to installer::BEGIN@41
# spent 11µs making 1 call to UNIVERSAL::import |
42 | 2 | 55µs | 2 | 22µs | # spent 20µs (19+2) within installer::BEGIN@42 which was called:
# once (19µs+2µs) by main::BEGIN@33 at line 42 # spent 20µs making 1 call to installer::BEGIN@42
# spent 2µs making 1 call to UNIVERSAL::import |
43 | 2 | 53µs | 2 | 19µs | # spent 18µs (16+1) within installer::BEGIN@43 which was called:
# once (16µs+1µs) by main::BEGIN@33 at line 43 # spent 18µs making 1 call to installer::BEGIN@43
# spent 2µs making 1 call to UNIVERSAL::import |
44 | 2 | 53µs | 2 | 21µs | # spent 18µs (16+3) within installer::BEGIN@44 which was called:
# once (16µs+3µs) by main::BEGIN@33 at line 44 # spent 18µs making 1 call to installer::BEGIN@44
# spent 2µs making 1 call to UNIVERSAL::import |
45 | 2 | 1.17ms | 2 | 6.90ms | # spent 6.89ms (6.25+643µs) within installer::BEGIN@45 which was called:
# once (6.25ms+643µs) by main::BEGIN@33 at line 45 # spent 6.89ms making 1 call to installer::BEGIN@45
# spent 10µs making 1 call to UNIVERSAL::import |
46 | 2 | 1.42ms | 2 | 6.53ms | # spent 6.52ms (5.90+624µs) within installer::BEGIN@46 which was called:
# once (5.90ms+624µs) by main::BEGIN@33 at line 46 # spent 6.52ms making 1 call to installer::BEGIN@46
# spent 7µs making 1 call to UNIVERSAL::import |
47 | 2 | 55µs | 2 | 23µs | # spent 20µs (18+3) within installer::BEGIN@47 which was called:
# once (18µs+3µs) by main::BEGIN@33 at line 47 # spent 20µs making 1 call to installer::BEGIN@47
# spent 3µs making 1 call to UNIVERSAL::import |
48 | 2 | 52µs | 2 | 96µs | # spent 56µs (15+41) within installer::BEGIN@48 which was called:
# once (15µs+41µs) by main::BEGIN@33 at line 48 # spent 56µs making 1 call to installer::BEGIN@48
# spent 41µs making 1 call to Exporter::import |
49 | 2 | 57µs | 2 | 23µs | # spent 21µs (18+2) within installer::BEGIN@49 which was called:
# once (18µs+2µs) by main::BEGIN@33 at line 49 # spent 21µs making 1 call to installer::BEGIN@49
# spent 2µs making 1 call to UNIVERSAL::import |
50 | 2 | 1.47ms | 2 | 7.50ms | # spent 7.49ms (6.80+694µs) within installer::BEGIN@50 which was called:
# once (6.80ms+694µs) by main::BEGIN@33 at line 50 # spent 7.49ms making 1 call to installer::BEGIN@50
# spent 9µs making 1 call to UNIVERSAL::import |
51 | 2 | 56µs | 2 | 24µs | # spent 22µs (20+2) within installer::BEGIN@51 which was called:
# once (20µs+2µs) by main::BEGIN@33 at line 51 # spent 22µs making 1 call to installer::BEGIN@51
# spent 2µs making 1 call to UNIVERSAL::import |
52 | 2 | 1.09ms | 2 | 3.27ms | # spent 3.26ms (2.73+527µs) within installer::BEGIN@52 which was called:
# once (2.73ms+527µs) by main::BEGIN@33 at line 52 # spent 3.26ms making 1 call to installer::BEGIN@52
# spent 4µs making 1 call to UNIVERSAL::import |
53 | 2 | 1.02ms | 2 | 8.83ms | # spent 8.83ms (2.28+6.55) within installer::BEGIN@53 which was called:
# once (2.28ms+6.55ms) by main::BEGIN@33 at line 53 # spent 8.83ms making 1 call to installer::BEGIN@53
# spent 3µs making 1 call to UNIVERSAL::import |
54 | 2 | 53µs | 2 | 20µs | # spent 18µs (16+2) within installer::BEGIN@54 which was called:
# once (16µs+2µs) by main::BEGIN@33 at line 54 # spent 18µs making 1 call to installer::BEGIN@54
# spent 2µs making 1 call to UNIVERSAL::import |
55 | 2 | 51µs | 2 | 18µs | # spent 16µs (13+3) within installer::BEGIN@55 which was called:
# once (13µs+3µs) by main::BEGIN@33 at line 55 # spent 16µs making 1 call to installer::BEGIN@55
# spent 2µs making 1 call to UNIVERSAL::import |
56 | 2 | 52µs | 2 | 74µs | # spent 44µs (14+30) within installer::BEGIN@56 which was called:
# once (14µs+30µs) by main::BEGIN@33 at line 56 # spent 44µs making 1 call to installer::BEGIN@56
# spent 30µs making 1 call to Exporter::import |
57 | 2 | 1.10ms | 2 | 10.6ms | # spent 10.6ms (7.55+3.08) within installer::BEGIN@57 which was called:
# once (7.55ms+3.08ms) by main::BEGIN@33 at line 57 # spent 10.6ms making 1 call to installer::BEGIN@57
# spent 6µs making 1 call to UNIVERSAL::import |
58 | 2 | 57µs | 2 | 127µs | # spent 71µs (15+56) within installer::BEGIN@58 which was called:
# once (15µs+56µs) by main::BEGIN@33 at line 58 # spent 71µs making 1 call to installer::BEGIN@58
# spent 56µs making 1 call to Exporter::import |
59 | 2 | 1.09ms | 2 | 2.95ms | # spent 2.94ms (2.48+461µs) within installer::BEGIN@59 which was called:
# once (2.48ms+461µs) by main::BEGIN@33 at line 59 # spent 2.94ms making 1 call to installer::BEGIN@59
# spent 10µs making 1 call to UNIVERSAL::import |
60 | 2 | 56µs | 2 | 23µs | # spent 21µs (19+2) within installer::BEGIN@60 which was called:
# once (19µs+2µs) by main::BEGIN@33 at line 60 # spent 21µs making 1 call to installer::BEGIN@60
# spent 2µs making 1 call to UNIVERSAL::import |
61 | 2 | 1.20ms | 2 | 22.4ms | # spent 22.4ms (3.29+19.1) within installer::BEGIN@61 which was called:
# once (3.29ms+19.1ms) by main::BEGIN@33 at line 61 # spent 22.4ms making 1 call to installer::BEGIN@61
# spent 5µs making 1 call to UNIVERSAL::import |
62 | 2 | 1.06ms | 2 | 1.53ms | # spent 1.53ms (1.13+392µs) within installer::BEGIN@62 which was called:
# once (1.13ms+392µs) by main::BEGIN@33 at line 62 # spent 1.53ms making 1 call to installer::BEGIN@62
# spent 3µs making 1 call to UNIVERSAL::import |
63 | 2 | 1.04ms | 2 | 5.12ms | # spent 5.11ms (4.68+438µs) within installer::BEGIN@63 which was called:
# once (4.68ms+438µs) by main::BEGIN@33 at line 63 # spent 5.11ms making 1 call to installer::BEGIN@63
# spent 4µs making 1 call to UNIVERSAL::import |
64 | 2 | 1.04ms | 2 | 2.36ms | # spent 2.35ms (1.94+418µs) within installer::BEGIN@64 which was called:
# once (1.94ms+418µs) by main::BEGIN@33 at line 64 # spent 2.35ms making 1 call to installer::BEGIN@64
# spent 4µs making 1 call to UNIVERSAL::import |
65 | 2 | 1.15ms | 2 | 6.45ms | # spent 6.44ms (5.94+502µs) within installer::BEGIN@65 which was called:
# once (5.94ms+502µs) by main::BEGIN@33 at line 65 # spent 6.44ms making 1 call to installer::BEGIN@65
# spent 8µs making 1 call to UNIVERSAL::import |
66 | 2 | 1.65ms | 2 | 6.00ms | # spent 5.99ms (5.11+883µs) within installer::BEGIN@66 which was called:
# once (5.11ms+883µs) by main::BEGIN@33 at line 66 # spent 5.99ms making 1 call to installer::BEGIN@66
# spent 8µs making 1 call to UNIVERSAL::import |
67 | 2 | 1.46ms | 2 | 2.95ms | # spent 2.94ms (2.37+569µs) within installer::BEGIN@67 which was called:
# once (2.37ms+569µs) by main::BEGIN@33 at line 67 # spent 2.94ms making 1 call to installer::BEGIN@67
# spent 5µs making 1 call to UNIVERSAL::import |
68 | 2 | 1.22ms | 2 | 20.6ms | # spent 20.6ms (9.83+10.8) within installer::BEGIN@68 which was called:
# once (9.83ms+10.8ms) by main::BEGIN@33 at line 68 # spent 20.6ms making 1 call to installer::BEGIN@68
# spent 6µs making 1 call to UNIVERSAL::import |
69 | 2 | 52µs | 2 | 22µs | # spent 19µs (17+3) within installer::BEGIN@69 which was called:
# once (17µs+3µs) by main::BEGIN@33 at line 69 # spent 19µs making 1 call to installer::BEGIN@69
# spent 2µs making 1 call to UNIVERSAL::import |
70 | 2 | 1.20ms | 2 | 1.78ms | # spent 1.77ms (1.29+481µs) within installer::BEGIN@70 which was called:
# once (1.29ms+481µs) by main::BEGIN@33 at line 70 # spent 1.77ms making 1 call to installer::BEGIN@70
# spent 3µs making 1 call to UNIVERSAL::import |
71 | 2 | 51µs | 2 | 18µs | # spent 16µs (14+2) within installer::BEGIN@71 which was called:
# once (14µs+2µs) by main::BEGIN@33 at line 71 # spent 16µs making 1 call to installer::BEGIN@71
# spent 2µs making 1 call to UNIVERSAL::import |
72 | 2 | 1.05ms | 2 | 2.31ms | # spent 2.31ms (1.88+428µs) within installer::BEGIN@72 which was called:
# once (1.88ms+428µs) by main::BEGIN@33 at line 72 # spent 2.31ms making 1 call to installer::BEGIN@72
# spent 4µs making 1 call to UNIVERSAL::import |
73 | 2 | 1.10ms | 2 | 3.48ms | # spent 3.47ms (3.02+449µs) within installer::BEGIN@73 which was called:
# once (3.02ms+449µs) by main::BEGIN@33 at line 73 # spent 3.47ms making 1 call to installer::BEGIN@73
# spent 4µs making 1 call to UNIVERSAL::import |
74 | 2 | 1.06ms | 2 | 19.4ms | # spent 19.4ms (18.6+757µs) within installer::BEGIN@74 which was called:
# once (18.6ms+757µs) by main::BEGIN@33 at line 74 # spent 19.4ms making 1 call to installer::BEGIN@74
# spent 7µs making 1 call to UNIVERSAL::import |
75 | 2 | 1.18ms | 2 | 19.8ms | # spent 19.8ms (18.9+818µs) within installer::BEGIN@75 which was called:
# once (18.9ms+818µs) by main::BEGIN@33 at line 75 # spent 19.8ms making 1 call to installer::BEGIN@75
# spent 9µs making 1 call to UNIVERSAL::import |
76 | 2 | 1.41ms | 2 | 29.0ms | # spent 29.0ms (15.5+13.5) within installer::BEGIN@76 which was called:
# once (15.5ms+13.5ms) by main::BEGIN@33 at line 76 # spent 29.0ms making 1 call to installer::BEGIN@76
# spent 9µs making 1 call to UNIVERSAL::import |
77 | 2 | 1.48ms | 2 | 8.24ms | # spent 8.23ms (7.76+475µs) within installer::BEGIN@77 which was called:
# once (7.76ms+475µs) by main::BEGIN@33 at line 77 # spent 8.23ms making 1 call to installer::BEGIN@77
# spent 5µs making 1 call to UNIVERSAL::import |
78 | 2 | 1.09ms | 2 | 2.11ms | # spent 2.11ms (1.69+419µs) within installer::BEGIN@78 which was called:
# once (1.69ms+419µs) by main::BEGIN@33 at line 78 # spent 2.11ms making 1 call to installer::BEGIN@78
# spent 4µs making 1 call to UNIVERSAL::import |
79 | 2 | 1.06ms | 2 | 5.04ms | # spent 5.04ms (4.60+434µs) within installer::BEGIN@79 which was called:
# once (4.60ms+434µs) by main::BEGIN@33 at line 79 # spent 5.04ms making 1 call to installer::BEGIN@79
# spent 4µs making 1 call to UNIVERSAL::import |
80 | 2 | 1.13ms | 2 | 6.82ms | # spent 6.81ms (6.33+475µs) within installer::BEGIN@80 which was called:
# once (6.33ms+475µs) by main::BEGIN@33 at line 80 # spent 6.81ms making 1 call to installer::BEGIN@80
# spent 7µs making 1 call to UNIVERSAL::import |
81 | 2 | 1.11ms | 2 | 2.79ms | # spent 2.79ms (2.19+603µs) within installer::BEGIN@81 which was called:
# once (2.19ms+603µs) by main::BEGIN@33 at line 81 # spent 2.79ms making 1 call to installer::BEGIN@81
# spent 4µs making 1 call to UNIVERSAL::import |
82 | 2 | 57µs | 2 | 22µs | # spent 19µs (16+3) within installer::BEGIN@82 which was called:
# once (16µs+3µs) by main::BEGIN@33 at line 82 # spent 19µs making 1 call to installer::BEGIN@82
# spent 3µs making 1 call to UNIVERSAL::import |
83 | 2 | 1.09ms | 2 | 2.89ms | # spent 2.89ms (2.44+448µs) within installer::BEGIN@83 which was called:
# once (2.44ms+448µs) by main::BEGIN@33 at line 83 # spent 2.89ms making 1 call to installer::BEGIN@83
# spent 4µs making 1 call to UNIVERSAL::import |
84 | 2 | 54µs | 2 | 22µs | # spent 20µs (17+3) within installer::BEGIN@84 which was called:
# once (17µs+3µs) by main::BEGIN@33 at line 84 # spent 20µs making 1 call to installer::BEGIN@84
# spent 3µs making 1 call to UNIVERSAL::import |
85 | 2 | 16.5ms | 2 | 21µs | # spent 18µs (16+3) within installer::BEGIN@85 which was called:
# once (16µs+3µs) by main::BEGIN@33 at line 85 # spent 18µs making 1 call to installer::BEGIN@85
# spent 2µs making 1 call to UNIVERSAL::import |
86 | |||||
87 | 1 | 5µs | our @EXPORT_OK = qw(main); | ||
88 | |||||
89 | # spent -8913s (61µs+-8913) within installer::main which was called:
# once (61µs+-8913s) by main::RUNTIME at line 35 of /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/make_installer.pl | ||||
90 | 6 | 27µs | 1 | 4µs | installer::logger::starttime(); # spent 4µs making 1 call to installer::logger::starttime |
91 | |||||
92 | my $exit_code = 0; | ||||
93 | |||||
94 | 1 | 5µs | eval { | ||
95 | 1 | -8913s | run(); # spent - 8913s making 1 call to installer::run | ||
96 | }; | ||||
97 | if ($@) { | ||||
98 | warn "$@\n"; | ||||
99 | $exit_code = -1; | ||||
100 | } | ||||
101 | |||||
102 | 1 | 238µs | installer::logger::stoptime(); # spent 238µs making 1 call to installer::logger::stoptime | ||
103 | |||||
104 | return $exit_code; | ||||
105 | } | ||||
106 | |||||
107 | # spent -8913s (-7726+-1188) within installer::run which was called:
# once (-7726s+-1188s) by installer::main at line 95 | ||||
108 | 112 | 1.21s | 1 | 25µs | installer::logger::print_message( "... checking environment variables ...\n" ); # spent 25µs making 1 call to installer::logger::print_message |
109 | 1 | 39µs | my $environmentvariableshashref = installer::control::check_system_environment(); # spent 39µs making 1 call to installer::control::check_system_environment | ||
110 | |||||
111 | 1 | 35µs | installer::environment::set_global_environment_variables($environmentvariableshashref); # spent 35µs making 1 call to installer::environment::set_global_environment_variables | ||
112 | |||||
113 | ################################# | ||||
114 | # Check and output of parameter | ||||
115 | ################################# | ||||
116 | |||||
117 | 1 | 144µs | installer::parameter::saveparameter(); # spent 144µs making 1 call to installer::parameter::saveparameter | ||
118 | 1 | 44µs | installer::parameter::getparameter(); # spent 44µs making 1 call to installer::parameter::getparameter | ||
119 | |||||
120 | 1 | 4µs | installer::parameter::control_fundamental_parameter(); # spent 4µs making 1 call to installer::parameter::control_fundamental_parameter | ||
121 | 1 | 227ms | installer::parameter::setglobalvariables(); # spent 227ms making 1 call to installer::parameter::setglobalvariables | ||
122 | 1 | 214ms | installer::parameter::control_required_parameter(); # spent 214ms making 1 call to installer::parameter::control_required_parameter | ||
123 | |||||
124 | 1 | 37µs | if (!($installer::globals::languages_defined_in_productlist)) { installer::languages::analyze_languagelist(); } # spent 37µs making 1 call to installer::languages::analyze_languagelist | ||
125 | 1 | 355µs | installer::parameter::outputparameter(); # spent 355µs making 1 call to installer::parameter::outputparameter | ||
126 | |||||
127 | $installer::globals::build = uc($installer::globals::build); # using "SRC680" instead of "src680" | ||||
128 | |||||
129 | ###################################### | ||||
130 | # Creating the log directory | ||||
131 | ###################################### | ||||
132 | |||||
133 | 1 | 2.22ms | my $loggingdir = installer::systemactions::create_directories("logging", ""); # spent 2.22ms making 1 call to installer::systemactions::create_directories | ||
134 | $loggingdir = $loggingdir . $installer::globals::separator; | ||||
135 | $installer::globals::exitlog = $loggingdir; | ||||
136 | |||||
137 | my $installdir = ""; | ||||
138 | 1 | 14µs | my $currentdir = cwd(); # spent 14µs making 1 call to Cwd::__ANON__[Cwd.pm:406] | ||
139 | my $shipinstalldir = ""; | ||||
140 | my $current_install_number = ""; | ||||
141 | |||||
142 | ###################################### | ||||
143 | # Checking the system requirements | ||||
144 | ###################################### | ||||
145 | |||||
146 | 1 | 10µs | installer::logger::print_message( "... checking required files ...\n" ); # spent 10µs making 1 call to installer::logger::print_message | ||
147 | 1 | 2.60s | installer::control::check_system_path(); # spent 2.60s making 1 call to installer::control::check_system_path | ||
148 | |||||
149 | 1 | 46µs | my $pathvariableshashref = installer::environment::create_pathvariables($environmentvariableshashref); # spent 46µs making 1 call to installer::environment::create_pathvariables | ||
150 | |||||
151 | ############################################### | ||||
152 | # Checking saved setting for Windows patches | ||||
153 | ############################################### | ||||
154 | |||||
155 | if (( $installer::globals::iswindowsbuild ) && ( $installer::globals::prepare_winpatch )) { installer::windows::msiglobal::read_saved_mappings(); } | ||||
156 | |||||
157 | ################################################### | ||||
158 | # Analyzing the settings and variables in zip.lst | ||||
159 | ################################################### | ||||
160 | |||||
161 | 1 | 77µs | installer::logger::globallog("zip list file: $installer::globals::ziplistname"); # spent 77µs making 1 call to installer::logger::globallog | ||
162 | |||||
163 | 1 | 1.96ms | my $ziplistref = installer::files::read_file($installer::globals::ziplistname); # spent 1.96ms making 1 call to installer::files::read_file | ||
164 | |||||
165 | 1 | 9µs | installer::logger::print_message( "... analyzing $installer::globals::ziplistname ... \n" ); # spent 9µs making 1 call to installer::logger::print_message | ||
166 | |||||
167 | 1 | 4.98ms | my ($productblockref, $parent) = installer::ziplist::getproductblock($ziplistref, $installer::globals::product, 1); # product block from zip.lst # spent 4.98ms making 1 call to installer::ziplist::getproductblock | ||
168 | |||||
169 | 1 | 1.03ms | my ($settingsblockref, undef) = installer::ziplist::getproductblock($productblockref, "Settings", 0); # settings block from zip.lst # spent 1.03ms making 1 call to installer::ziplist::getproductblock | ||
170 | |||||
171 | 1 | 2.01ms | $settingsblockref = installer::ziplist::analyze_settings_block($settingsblockref); # select data from settings block in zip.lst # spent 2.01ms making 1 call to installer::ziplist::analyze_settings_block | ||
172 | |||||
173 | 1 | 1.22ms | my $allsettingsarrayref = installer::ziplist::get_settings_from_ziplist($settingsblockref); # spent 1.22ms making 1 call to installer::ziplist::get_settings_from_ziplist | ||
174 | |||||
175 | 1 | 1.41ms | my $allvariablesarrayref = installer::ziplist::get_variables_from_ziplist($settingsblockref); # spent 1.41ms making 1 call to installer::ziplist::get_variables_from_ziplist | ||
176 | |||||
177 | 1 | 4.72ms | my ($globalproductblockref, undef) = installer::ziplist::getproductblock($ziplistref, $installer::globals::globalblock, 0); # global product block from zip.lst # spent 4.72ms making 1 call to installer::ziplist::getproductblock | ||
178 | |||||
179 | while (defined $parent) | ||||
180 | { | ||||
181 | my $parentproductblockref; | ||||
182 | ($parentproductblockref, $parent) = installer::ziplist::getproductblock( | ||||
183 | $ziplistref, $parent, 1); | ||||
184 | my ($parentsettingsblockref, undef) = installer::ziplist::getproductblock( | ||||
185 | $parentproductblockref, "Settings", 0); | ||||
186 | $parentsettingsblockref = installer::ziplist::analyze_settings_block( | ||||
187 | $parentsettingsblockref); | ||||
188 | my $allparentsettingsarrayref = | ||||
189 | installer::ziplist::get_settings_from_ziplist($parentsettingsblockref); | ||||
190 | my $allparentvariablesarrayref = | ||||
191 | installer::ziplist::get_variables_from_ziplist($parentsettingsblockref); | ||||
192 | $allsettingsarrayref = | ||||
193 | installer::converter::combine_arrays_from_references_first_win( | ||||
194 | $allsettingsarrayref, $allparentsettingsarrayref) | ||||
195 | if $#{$allparentsettingsarrayref} > -1; | ||||
196 | $allvariablesarrayref = | ||||
197 | installer::converter::combine_arrays_from_references_first_win( | ||||
198 | $allvariablesarrayref, $allparentvariablesarrayref) | ||||
199 | if $#{$allparentvariablesarrayref} > -1; | ||||
200 | } | ||||
201 | |||||
202 | 6 | 50µs | if ( $#{$globalproductblockref} > -1 ) | ||
203 | { | ||||
204 | 1 | 817µs | my ($globalsettingsblockref, undef) = installer::ziplist::getproductblock($globalproductblockref, "Settings", 0); # settings block from zip.lst # spent 817µs making 1 call to installer::ziplist::getproductblock | ||
205 | |||||
206 | 1 | 1.50ms | $globalsettingsblockref = installer::ziplist::analyze_settings_block($globalsettingsblockref); # select data from settings block in zip.lst # spent 1.50ms making 1 call to installer::ziplist::analyze_settings_block | ||
207 | |||||
208 | 1 | 830µs | my $allglobalsettingsarrayref = installer::ziplist::get_settings_from_ziplist($globalsettingsblockref); # spent 830µs making 1 call to installer::ziplist::get_settings_from_ziplist | ||
209 | |||||
210 | 1 | 1.19ms | my $allglobalvariablesarrayref = installer::ziplist::get_variables_from_ziplist($globalsettingsblockref); # spent 1.19ms making 1 call to installer::ziplist::get_variables_from_ziplist | ||
211 | |||||
212 | if ( $#{$allglobalsettingsarrayref} > -1 ) { $allsettingsarrayref = installer::converter::combine_arrays_from_references_first_win($allsettingsarrayref, $allglobalsettingsarrayref); } | ||||
213 | 1 | 1.05ms | if ( $#{$allglobalvariablesarrayref} > -1 ) { $allvariablesarrayref = installer::converter::combine_arrays_from_references_first_win($allvariablesarrayref, $allglobalvariablesarrayref); } # spent 1.05ms making 1 call to installer::converter::combine_arrays_from_references_first_win | ||
214 | } | ||||
215 | |||||
216 | 1 | 942µs | $allsettingsarrayref = installer::ziplist::remove_multiples_from_ziplist($allsettingsarrayref); # the settings from the zip.lst # spent 942µs making 1 call to installer::ziplist::remove_multiples_from_ziplist | ||
217 | |||||
218 | 1 | 39.0ms | $allvariablesarrayref = installer::ziplist::remove_multiples_from_ziplist($allvariablesarrayref); # spent 39.0ms making 1 call to installer::ziplist::remove_multiples_from_ziplist | ||
219 | |||||
220 | 1 | 1.41ms | installer::ziplist::replace_variables_in_ziplist_variables($allvariablesarrayref); # spent 1.41ms making 1 call to installer::ziplist::replace_variables_in_ziplist_variables | ||
221 | |||||
222 | 1 | 726µs | my $allvariableshashref = installer::converter::convert_array_to_hash($allvariablesarrayref); # the variables from the zip.lst # spent 726µs making 1 call to installer::converter::convert_array_to_hash | ||
223 | |||||
224 | 1 | 6µs | installer::ziplist::set_default_productversion_if_required($allvariableshashref); # spent 6µs making 1 call to installer::ziplist::set_default_productversion_if_required | ||
225 | |||||
226 | 1 | 50µs | installer::ziplist::add_variables_to_allvariableshashref($allvariableshashref); # spent 50µs making 1 call to installer::ziplist::add_variables_to_allvariableshashref | ||
227 | |||||
228 | 1 | 15µs | installer::ziplist::overwrite_branding( $allvariableshashref ); # spent 15µs making 1 call to installer::ziplist::overwrite_branding | ||
229 | |||||
230 | |||||
231 | ######################################################## | ||||
232 | # Check if this is simple packaging mechanism | ||||
233 | ######################################################## | ||||
234 | |||||
235 | 1 | 7µs | installer::simplepackage::check_simple_packager_project($allvariableshashref); # spent 7µs making 1 call to installer::simplepackage::check_simple_packager_project | ||
236 | |||||
237 | #################################################################### | ||||
238 | # setting global variables | ||||
239 | #################################################################### | ||||
240 | |||||
241 | 1 | 15µs | installer::control::set_addsystemintegration($allvariableshashref); # spent 15µs making 1 call to installer::control::set_addsystemintegration | ||
242 | |||||
243 | ######################################################## | ||||
244 | # Re-define logging dir, after all variables are set | ||||
245 | ######################################################## | ||||
246 | |||||
247 | my $oldloggingdir = $loggingdir; | ||||
248 | 1 | 942µs | installer::systemactions::remove_complete_directory($oldloggingdir); # spent 942µs making 1 call to installer::systemactions::remove_complete_directory | ||
249 | 1 | 1.23ms | $loggingdir = installer::systemactions::create_directories("logging", ""); # spent 1.23ms making 1 call to installer::systemactions::create_directories | ||
250 | $loggingdir = $loggingdir . $installer::globals::separator; | ||||
251 | $installer::globals::exitlog = $loggingdir; | ||||
252 | |||||
253 | # checking, whether this is an opensource product | ||||
254 | |||||
255 | 1 | 12µs | if (!($installer::globals::is_copy_only_project)) { installer::ziplist::set_manufacturer($allvariableshashref); } # spent 12µs making 1 call to installer::ziplist::set_manufacturer | ||
256 | |||||
257 | ############################################## | ||||
258 | # Checking version of makecab.exe | ||||
259 | ############################################## | ||||
260 | |||||
261 | 1 | 120ms | if ( $installer::globals::iswindowsbuild && (!defined($ENV{'CROSS_COMPILING'}) || $ENV{'CROSS_COMPILING'} ne 'YES' || $installer::globals::packageformat eq 'msi')) { installer::control::check_makecab_version(); } # spent 120ms making 1 call to installer::control::check_makecab_version | ||
262 | |||||
263 | ########################################################## | ||||
264 | # Getting the include path from the settings in zip list | ||||
265 | ########################################################## | ||||
266 | |||||
267 | 1 | 186µs | my $includepathref = installer::ziplist::getinfofromziplist($allsettingsarrayref, "include"); # spent 186µs making 1 call to installer::ziplist::getinfofromziplist | ||
268 | if ( $$includepathref eq "" ) | ||||
269 | { | ||||
270 | installer::exiter::exit_program("ERROR: Definition for \"include\" not found in $installer::globals::ziplistname", "Main"); | ||||
271 | } | ||||
272 | |||||
273 | 1 | 65µs | my $includepatharrayref = installer::converter::convert_stringlist_into_array($includepathref, ","); # spent 65µs making 1 call to installer::converter::convert_stringlist_into_array | ||
274 | |||||
275 | 1 | 4.22ms | installer::ziplist::replace_all_variables_in_paths($includepatharrayref, $pathvariableshashref); # spent 4.22ms making 1 call to installer::ziplist::replace_all_variables_in_paths | ||
276 | |||||
277 | 1 | 182µs | installer::ziplist::replace_minor_in_paths($includepatharrayref); # spent 182µs making 1 call to installer::ziplist::replace_minor_in_paths | ||
278 | |||||
279 | 1 | 101µs | installer::ziplist::replace_packagetype_in_paths($includepatharrayref); # spent 101µs making 1 call to installer::ziplist::replace_packagetype_in_paths | ||
280 | |||||
281 | 1 | 2.31ms | installer::ziplist::resolve_relative_paths($includepatharrayref); # spent 2.31ms making 1 call to installer::ziplist::resolve_relative_paths | ||
282 | |||||
283 | 1 | 477µs | installer::ziplist::remove_ending_separator($includepatharrayref); # spent 477µs making 1 call to installer::ziplist::remove_ending_separator | ||
284 | |||||
285 | ############################################## | ||||
286 | # Collecting all files from all include | ||||
287 | # paths in global hashes. | ||||
288 | ############################################## | ||||
289 | |||||
290 | 1 | 2.67s | installer::worker::collect_all_files_from_includepaths($includepatharrayref); # spent 2.67s making 1 call to installer::worker::collect_all_files_from_includepaths | ||
291 | |||||
292 | ############################################## | ||||
293 | # Analyzing languages in zip.lst if required | ||||
294 | # Probably no longer used. | ||||
295 | ############################################## | ||||
296 | |||||
297 | if ($installer::globals::languages_defined_in_productlist) { installer::languages::get_info_about_languages($allsettingsarrayref); } | ||||
298 | |||||
299 | ##################################### | ||||
300 | # Windows requires the encoding list | ||||
301 | ##################################### | ||||
302 | |||||
303 | 1 | 5.11ms | if ( $installer::globals::iswindowsbuild ) { installer::control::read_encodinglist($includepatharrayref); } # spent 5.11ms making 1 call to installer::control::read_encodinglist | ||
304 | |||||
305 | ##################################################################### | ||||
306 | # Including additional inc files for variable settings, if defined | ||||
307 | ##################################################################### | ||||
308 | |||||
309 | 1 | 1.61ms | if ( $allvariableshashref->{'ADD_INCLUDE_FILES'} ) { installer::worker::add_variables_from_inc_to_hashref($allvariableshashref, $includepatharrayref); } # spent 1.61ms making 1 call to installer::worker::add_variables_from_inc_to_hashref | ||
310 | |||||
311 | ##################################### | ||||
312 | # Analyzing the setup script | ||||
313 | ##################################### | ||||
314 | |||||
315 | 1 | 153µs | if ($installer::globals::setupscript_defined_in_productlist) { installer::setupscript::set_setupscript_name($allsettingsarrayref, $includepatharrayref); } # spent 153µs making 1 call to installer::setupscript::set_setupscript_name | ||
316 | |||||
317 | 1 | 53µs | installer::logger::globallog("setup script file: $installer::globals::setupscriptname"); # spent 53µs making 1 call to installer::logger::globallog | ||
318 | |||||
319 | 1 | 16µs | installer::logger::print_message( "... analyzing script: $installer::globals::setupscriptname ... \n" ); # spent 16µs making 1 call to installer::logger::print_message | ||
320 | |||||
321 | 1 | 527ms | my $setupscriptref = installer::files::read_file($installer::globals::setupscriptname); # Reading the setup script file # spent 527ms making 1 call to installer::files::read_file | ||
322 | |||||
323 | # Resolving variables defined in the zip list file into setup script | ||||
324 | # All the variables are defined in $allvariablesarrayref | ||||
325 | |||||
326 | 1 | 468ms | installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref); # spent 468ms making 1 call to installer::scpzipfiles::replace_all_ziplistvariables_in_file | ||
327 | |||||
328 | # Resolving %variables defined in the installation object | ||||
329 | |||||
330 | 1 | 304µs | my $allscriptvariablesref = installer::setupscript::get_all_scriptvariables_from_installation_object($setupscriptref); # spent 304µs making 1 call to installer::setupscript::get_all_scriptvariables_from_installation_object | ||
331 | |||||
332 | 1 | 442µs | installer::setupscript::add_lowercase_productname_setupscriptvariable($allscriptvariablesref); # spent 442µs making 1 call to installer::setupscript::add_lowercase_productname_setupscriptvariable | ||
333 | |||||
334 | 1 | 550µs | installer::setupscript::resolve_lowercase_productname_setupscriptvariable($allscriptvariablesref); # spent 550µs making 1 call to installer::setupscript::resolve_lowercase_productname_setupscriptvariable | ||
335 | |||||
336 | 1 | 1.03s | $setupscriptref = installer::setupscript::replace_all_setupscriptvariables_in_script($setupscriptref, $allscriptvariablesref); # spent 1.03s making 1 call to installer::setupscript::replace_all_setupscriptvariables_in_script | ||
337 | |||||
338 | # Adding all variables defined in the installation object into the hash of all variables. | ||||
339 | # This is needed if variables are defined in the installation object, but not in the zip list file. | ||||
340 | # If there is a definition in the zip list file and in the installation object, the installation object is more important | ||||
341 | |||||
342 | 1 | 402µs | installer::setupscript::add_installationobject_to_variables($allvariableshashref, $allscriptvariablesref); # spent 402µs making 1 call to installer::setupscript::add_installationobject_to_variables | ||
343 | |||||
344 | # Adding also all variables, that must be included into the $allvariableshashref. | ||||
345 | 1 | 24µs | installer::setupscript::add_forced_properties($allvariableshashref); # spent 24µs making 1 call to installer::setupscript::add_forced_properties | ||
346 | |||||
347 | # Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME) | ||||
348 | 1 | 20µs | installer::setupscript::replace_preset_properties($allvariableshashref); # spent 20µs making 1 call to installer::setupscript::replace_preset_properties | ||
349 | |||||
350 | 1 | 475ms | installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref); # spent 475ms making 1 call to installer::scpzipfiles::replace_all_ziplistvariables_in_file | ||
351 | |||||
352 | |||||
353 | 1 | 522µs | installer::logger::log_hashref($allvariableshashref); # spent 522µs making 1 call to installer::logger::log_hashref | ||
354 | |||||
355 | 1 | 21µs | installer::logger::print_message( "... analyzing directories ... \n" ); # spent 21µs making 1 call to installer::logger::print_message | ||
356 | |||||
357 | # Collect all directories in the script to get the destination dirs | ||||
358 | |||||
359 | 1 | 1.14s | my $dirsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Directory"); # spent 1.14s making 1 call to installer::setupscript::get_all_items_from_script | ||
360 | |||||
361 | if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_hostname($dirsinproductarrayref); } | ||||
362 | if ( $installer::globals::patch ) { installer::scriptitems::use_patch_hostname($dirsinproductarrayref); } | ||||
363 | |||||
364 | if ( $allvariableshashref->{'SHIFT_BASIS_INTO_BRAND_LAYER'} ) { $dirsinproductarrayref = installer::scriptitems::shift_basis_directory_parents($dirsinproductarrayref); } | ||||
365 | if ( $allvariableshashref->{'OFFICEDIRECTORYNAME'} ) { installer::scriptitems::set_officedirectory_name($dirsinproductarrayref, $allvariableshashref->{'OFFICEDIRECTORYNAME'}); } | ||||
366 | |||||
367 | |||||
368 | 1 | 81.3ms | installer::scriptitems::resolve_all_directory_names($dirsinproductarrayref); # spent 81.3ms making 1 call to installer::scriptitems::resolve_all_directory_names | ||
369 | |||||
370 | 1 | 24µs | installer::logger::print_message( "... analyzing files ... \n" ); # spent 24µs making 1 call to installer::logger::print_message | ||
371 | |||||
372 | 1 | 1.42s | my $filesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "File"); # spent 1.42s making 1 call to installer::setupscript::get_all_items_from_script | ||
373 | |||||
374 | if (( ! $installer::globals::iswindowsbuild ) && | ||||
375 | ( ! $installer::globals::isrpmbuild ) && | ||||
376 | ( ! $installer::globals::isdebbuild ) && | ||||
377 | ( ! $installer::globals::issolarispkgbuild ) && | ||||
378 | ( $installer::globals::packageformat ne "installed" ) && | ||||
379 | ( $installer::globals::packageformat ne "dmg" ) && | ||||
380 | ( $installer::globals::packageformat ne "archive" )) | ||||
381 | { installer::control::check_oxtfiles($filesinproductarrayref); } | ||||
382 | |||||
383 | 1 | 6.06ms | if (! $installer::globals::languagepack) # spent 6.06ms making 1 call to installer::scriptitems::remove_Languagepacklibraries_from_Installset | ||
384 | { | ||||
385 | $filesinproductarrayref = installer::scriptitems::remove_Languagepacklibraries_from_Installset($filesinproductarrayref); | ||||
386 | } | ||||
387 | |||||
388 | 1 | 5.68ms | if (! $installer::globals::helppack) # spent 5.68ms making 1 call to installer::scriptitems::remove_Helppacklibraries_from_Installset | ||
389 | { | ||||
390 | $filesinproductarrayref = installer::scriptitems::remove_Helppacklibraries_from_Installset($filesinproductarrayref); | ||||
391 | } | ||||
392 | |||||
393 | 1 | 5.53ms | if (! $installer::globals::patch) # spent 5.53ms making 1 call to installer::scriptitems::remove_patchonlyfiles_from_Installset | ||
394 | { | ||||
395 | $filesinproductarrayref = installer::scriptitems::remove_patchonlyfiles_from_Installset($filesinproductarrayref); | ||||
396 | } | ||||
397 | |||||
398 | 1 | 22µs | installer::logger::print_message( "... analyzing scpactions ... \n" ); # spent 22µs making 1 call to installer::logger::print_message | ||
399 | |||||
400 | 1 | 1.05s | my $scpactionsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ScpAction"); # spent 1.05s making 1 call to installer::setupscript::get_all_items_from_script | ||
401 | |||||
402 | if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_copy_scpaction($scpactionsinproductarrayref); } | ||||
403 | if ( $installer::globals::helppack ) { installer::scriptitems::use_langpack_copy_scpaction($scpactionsinproductarrayref); } | ||||
404 | if ( $allvariableshashref->{'PRODUCTNAME'} eq "LibO-dev" ) { installer::scriptitems::use_devversion_copy_scpaction($scpactionsinproductarrayref); } | ||||
405 | if ( $installer::globals::patch ) { installer::scriptitems::use_patch_copy_scpaction($scpactionsinproductarrayref); } | ||||
406 | |||||
407 | 1 | 13µs | installer::scriptitems::change_keys_of_scpactions($scpactionsinproductarrayref); # spent 13µs making 1 call to installer::scriptitems::change_keys_of_scpactions | ||
408 | |||||
409 | 1 | 24µs | installer::logger::print_message( "... analyzing shortcuts ... \n" ); # spent 24µs making 1 call to installer::logger::print_message | ||
410 | |||||
411 | 1 | 1.05s | my $linksinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Shortcut"); # spent 1.05s making 1 call to installer::setupscript::get_all_items_from_script | ||
412 | |||||
413 | 1 | 26µs | installer::logger::print_message( "... analyzing unix links ... \n" ); # spent 26µs making 1 call to installer::logger::print_message | ||
414 | |||||
415 | 1 | 1.06s | my $unixlinksinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Unixlink"); # spent 1.06s making 1 call to installer::setupscript::get_all_items_from_script | ||
416 | |||||
417 | 1 | 26µs | installer::logger::print_message( "... analyzing profile ... \n" ); # spent 26µs making 1 call to installer::logger::print_message | ||
418 | |||||
419 | 1 | 1.06s | my $profilesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Profile"); # spent 1.06s making 1 call to installer::setupscript::get_all_items_from_script | ||
420 | |||||
421 | 1 | 25µs | installer::logger::print_message( "... analyzing profileitems ... \n" ); # spent 25µs making 1 call to installer::logger::print_message | ||
422 | |||||
423 | 1 | 1.07s | my $profileitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ProfileItem"); # spent 1.07s making 1 call to installer::setupscript::get_all_items_from_script | ||
424 | |||||
425 | my $folderinproductarrayref; | ||||
426 | my $folderitemsinproductarrayref; | ||||
427 | my $registryitemsinproductarrayref; | ||||
428 | my $windowscustomactionsarrayref; | ||||
429 | my $mergemodulesarrayref; | ||||
430 | |||||
431 | 13 | 136µs | if ( $installer::globals::iswindowsbuild ) # Windows specific items: Folder, FolderItem, RegistryItem, WindowsCustomAction | ||
432 | { | ||||
433 | 1 | 24µs | installer::logger::print_message( "... analyzing folders ... \n" ); # spent 24µs making 1 call to installer::logger::print_message | ||
434 | |||||
435 | 1 | 1.06s | $folderinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Folder"); # spent 1.06s making 1 call to installer::setupscript::get_all_items_from_script | ||
436 | |||||
437 | 1 | 25µs | installer::logger::print_message( "... analyzing folderitems ... \n" ); # spent 25µs making 1 call to installer::logger::print_message | ||
438 | |||||
439 | 1 | 1.09s | $folderitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "FolderItem"); # spent 1.09s making 1 call to installer::setupscript::get_all_items_from_script | ||
440 | |||||
441 | 1 | 91µs | installer::setupscript::add_predefined_folder($folderitemsinproductarrayref, $folderinproductarrayref); # spent 91µs making 1 call to installer::setupscript::add_predefined_folder | ||
442 | |||||
443 | 1 | 1.92ms | installer::setupscript::prepare_non_advertised_files($folderitemsinproductarrayref, $filesinproductarrayref); # spent 1.92ms making 1 call to installer::setupscript::prepare_non_advertised_files | ||
444 | |||||
445 | 1 | 18µs | installer::logger::print_message( "... analyzing registryitems ... \n" ); # spent 18µs making 1 call to installer::logger::print_message | ||
446 | |||||
447 | 1 | 1.84s | $registryitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "RegistryItem"); # spent 1.84s making 1 call to installer::setupscript::get_all_items_from_script | ||
448 | |||||
449 | 1 | 9.46ms | $registryitemsinproductarrayref = installer::scriptitems::remove_uninstall_regitems_from_script($registryitemsinproductarrayref); # spent 9.46ms making 1 call to installer::scriptitems::remove_uninstall_regitems_from_script | ||
450 | |||||
451 | 1 | 23µs | installer::logger::print_message( "... analyzing Windows custom actions ... \n" ); # spent 23µs making 1 call to installer::logger::print_message | ||
452 | |||||
453 | 1 | 1.08s | $windowscustomactionsarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "WindowsCustomAction"); # spent 1.08s making 1 call to installer::setupscript::get_all_items_from_script | ||
454 | |||||
455 | 1 | 20µs | installer::logger::print_message( "... analyzing Windows merge modules ... \n" ); # spent 20µs making 1 call to installer::logger::print_message | ||
456 | |||||
457 | 1 | 1.05s | $mergemodulesarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "MergeModule"); # spent 1.05s making 1 call to installer::setupscript::get_all_items_from_script | ||
458 | } | ||||
459 | |||||
460 | my $modulesinproductarrayref; | ||||
461 | |||||
462 | 9 | 138µs | if (!($installer::globals::is_copy_only_project)) | ||
463 | { | ||||
464 | 1 | 22µs | installer::logger::print_message( "... analyzing modules ... \n" ); # spent 22µs making 1 call to installer::logger::print_message | ||
465 | |||||
466 | 1 | 3.82s | $modulesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Module"); # spent 3.82s making 1 call to installer::setupscript::get_all_items_from_script | ||
467 | |||||
468 | 1 | 34.5ms | installer::scriptitems::resolve_assigned_modules($modulesinproductarrayref); # spent 34.5ms making 1 call to installer::scriptitems::resolve_assigned_modules | ||
469 | |||||
470 | 1 | 11.3ms | $modulesinproductarrayref = installer::scriptitems::remove_template_modules($modulesinproductarrayref); # spent 11.3ms making 1 call to installer::scriptitems::remove_template_modules | ||
471 | |||||
472 | 1 | 100ms | installer::scriptitems::set_children_flag($modulesinproductarrayref); # spent 100ms making 1 call to installer::scriptitems::set_children_flag | ||
473 | |||||
474 | 1 | 280ms | installer::scriptitems::collect_all_languagemodules($modulesinproductarrayref); # spent 280ms making 1 call to installer::scriptitems::collect_all_languagemodules | ||
475 | |||||
476 | # Assigning the modules to the items | ||||
477 | |||||
478 | 1 | 193ms | installer::scriptitems::assigning_modules_to_items($modulesinproductarrayref, $filesinproductarrayref, "Files"); # spent 193ms making 1 call to installer::scriptitems::assigning_modules_to_items | ||
479 | |||||
480 | 1 | 1.96ms | installer::scriptitems::assigning_modules_to_items($modulesinproductarrayref, $unixlinksinproductarrayref, "Unixlinks"); # spent 1.96ms making 1 call to installer::scriptitems::assigning_modules_to_items | ||
481 | |||||
482 | 1 | 17.0ms | installer::scriptitems::assigning_modules_to_items($modulesinproductarrayref, $dirsinproductarrayref, "Dirs"); # spent 17.0ms making 1 call to installer::scriptitems::assigning_modules_to_items | ||
483 | } | ||||
484 | |||||
485 | ################################################# | ||||
486 | # Part 1b: The language dependent part | ||||
487 | # (still platform independent) | ||||
488 | ################################################# | ||||
489 | |||||
490 | # Now starts the language dependent part, if more than one product is defined on the command line | ||||
491 | # Example -l en-US,de#es,fr,it defines two multilingual products | ||||
492 | |||||
493 | ############################################################################### | ||||
494 | # Beginning of language dependent part | ||||
495 | # The for iterates over all products, separated by an # in the language list | ||||
496 | ############################################################################### | ||||
497 | |||||
498 | 119 | 377ms | for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ ) | ||
499 | { | ||||
500 | 1 | 2.78ms | my $languagesarrayref = installer::languages::get_all_languages_for_one_product($installer::globals::languageproducts[$n], $allvariableshashref); # spent 2.78ms making 1 call to installer::languages::get_all_languages_for_one_product | ||
501 | |||||
502 | 1 | 158µs | my $languagestringref = installer::languages::get_language_string($languagesarrayref); # spent 158µs making 1 call to installer::languages::get_language_string | ||
503 | 1 | 19µs | installer::logger::print_message( "------------------------------------\n" ); # spent 19µs making 1 call to installer::logger::print_message | ||
504 | 1 | 9µs | installer::logger::print_message( "... languages $$languagestringref ... \n" ); # spent 9µs making 1 call to installer::logger::print_message | ||
505 | |||||
506 | if ( $installer::globals::patch ) | ||||
507 | { | ||||
508 | $installer::globals::addlicensefile = 0; # no license files for patches | ||||
509 | $installer::globals::makedownload = 0; | ||||
510 | } | ||||
511 | |||||
512 | if ( $installer::globals::languagepack ) | ||||
513 | { | ||||
514 | $installer::globals::addsystemintegration = 0; | ||||
515 | $installer::globals::addlicensefile = 0; | ||||
516 | $installer::globals::makedownload = 1; | ||||
517 | } | ||||
518 | |||||
519 | if ( $installer::globals::helppack ) | ||||
520 | { | ||||
521 | $installer::globals::addsystemintegration = 0; | ||||
522 | $installer::globals::addlicensefile = 0; | ||||
523 | $installer::globals::makedownload = 1; | ||||
524 | } | ||||
525 | |||||
526 | ############################################################ | ||||
527 | # Beginning of language specific logging mechanism | ||||
528 | # Until now only global logging into default: logfile.txt | ||||
529 | ############################################################ | ||||
530 | |||||
531 | @installer::globals::logfileinfo = (); # new logfile array and new logfile name | ||||
532 | 1 | 459µs | installer::logger::copy_globalinfo_into_logfile(); # spent 459µs making 1 call to installer::logger::copy_globalinfo_into_logfile | ||
533 | $installer::globals::globalinfo_copied = 1; | ||||
534 | |||||
535 | my $logminor = ""; | ||||
536 | $logminor = $installer::globals::minor; | ||||
537 | |||||
538 | my $loglanguagestring = $$languagestringref; | ||||
539 | my $loglanguagestring_orig = $loglanguagestring; | ||||
540 | 4 | 288ms | if (length($loglanguagestring) > $installer::globals::max_lang_length) | ||
541 | { | ||||
542 | 1 | 827µs | my $number_of_languages = installer::systemactions::get_number_of_langs($loglanguagestring); # spent 827µs making 1 call to installer::systemactions::get_number_of_langs | ||
543 | 1 | 288ms | chomp(my $shorter = `echo $loglanguagestring | md5sum | sed -e "s/ .*//g"`); # spent 288ms making 1 call to installer::CORE:backtick | ||
544 | my $id = substr($shorter, 0, 8); # taking only the first 8 digits | ||||
545 | $loglanguagestring = "lang_" . $number_of_languages . "_id_" . $id; | ||||
546 | } | ||||
547 | |||||
548 | $installer::globals::logfilename = "log_" . $installer::globals::build; | ||||
549 | if ( $logminor ne "" ) { $installer::globals::logfilename .= "_" . $logminor; } | ||||
550 | $installer::globals::logfilename .= "_" . $loglanguagestring; | ||||
551 | $installer::globals::logfilename .= ".log"; | ||||
552 | $loggingdir = $loggingdir . $loglanguagestring . $installer::globals::separator; | ||||
553 | 1 | 1.32ms | installer::systemactions::create_directory($loggingdir); # spent 1.32ms making 1 call to installer::systemactions::create_directory | ||
554 | |||||
555 | 6 | 1.73ms | if ($loglanguagestring ne $loglanguagestring_orig) { | ||
556 | 1 | 14µs | (my $dir = $loggingdir) =~ s!/$!!; # spent 14µs making 1 call to installer::CORE:subst | ||
557 | 1 | 562µs | open(my $F1, "> $dir.dir"); # spent 562µs making 1 call to installer::CORE:open | ||
558 | 1 | 496µs | open(my $F2, "> " . $loggingdir . $installer::globals::logfilename . '.file'); # spent 496µs making 1 call to installer::CORE:open | ||
559 | my @s = map { "$_\n" } split('_', $loglanguagestring_orig); | ||||
560 | 1 | 15µs | print $F1 @s; # spent 15µs making 1 call to installer::CORE:print | ||
561 | 1 | 13µs | print $F2 @s; # spent 13µs making 1 call to installer::CORE:print | ||
562 | } | ||||
563 | |||||
564 | $installer::globals::exitlog = $loggingdir; | ||||
565 | |||||
566 | ################################################################### | ||||
567 | # Reading an existing msi database, to prepare update and patch | ||||
568 | ################################################################### | ||||
569 | |||||
570 | my $refdatabase = ""; | ||||
571 | my $uniquefilename = ""; | ||||
572 | my $revuniquefilename = ""; | ||||
573 | my $revshortfilename = ""; | ||||
574 | my $allupdatesequences = ""; | ||||
575 | my $allupdatecomponents = ""; | ||||
576 | my $allupdatefileorder = ""; | ||||
577 | my $allupdatecomponentorder = ""; | ||||
578 | my $shortdirname = ""; | ||||
579 | my $componentid = ""; | ||||
580 | my $componentidkeypath = ""; | ||||
581 | my $alloldproperties = ""; | ||||
582 | my $allupdatelastsequences = ""; | ||||
583 | my $allupdatediskids = ""; | ||||
584 | |||||
585 | 1 | 4µs | if ( $installer::globals::iswindowsbuild || $installer::globals::packageformat eq 'msi' ) | ||
586 | { | ||||
587 | 3 | 14µs | if ( $allvariableshashref->{'UPDATE_DATABASE'} ) | ||
588 | { | ||||
589 | 1 | 21µs | installer::logger::print_message( "... analyzing update database ...\n" ); # spent 21µs making 1 call to installer::logger::print_message | ||
590 | 1 | 697µs | $refdatabase = installer::windows::update::readdatabase($allvariableshashref, $languagestringref, $includepatharrayref); # spent 697µs making 1 call to installer::windows::update::readdatabase | ||
591 | |||||
592 | if ( $installer::globals::updatedatabase ) | ||||
593 | { | ||||
594 | ($uniquefilename, $revuniquefilename, $revshortfilename, $allupdatesequences, $allupdatecomponents, $allupdatefileorder, $allupdatecomponentorder, $shortdirname, $componentid, $componentidkeypath, $alloldproperties, $allupdatelastsequences, $allupdatediskids) = installer::windows::update::create_database_hashes($refdatabase); | ||||
595 | if ( $mergemodulesarrayref > -1 ) { installer::windows::update::readmergedatabase($mergemodulesarrayref, $languagestringref, $includepatharrayref); } | ||||
596 | } | ||||
597 | } | ||||
598 | } | ||||
599 | |||||
600 | ############################################## | ||||
601 | # Setting global code variables for Windows | ||||
602 | ############################################## | ||||
603 | |||||
604 | 1 | 124ms | if (!($installer::globals::is_copy_only_project)) # spent 124ms making 1 call to installer::windows::msiglobal::set_global_code_variables | ||
605 | { | ||||
606 | if ((( $installer::globals::iswindowsbuild ) && ( $installer::globals::packageformat ne "archive" ) && ( $installer::globals::packageformat ne "installed" ) ) || $installer::globals::packageformat eq 'msi' ) | ||||
607 | { | ||||
608 | installer::windows::msiglobal::set_global_code_variables($languagesarrayref, $languagestringref, $allvariableshashref, $alloldproperties); | ||||
609 | } | ||||
610 | } | ||||
611 | |||||
612 | ################################################ | ||||
613 | # Resolving include paths (language dependent) | ||||
614 | ################################################ | ||||
615 | |||||
616 | 1 | 221µs | $includepatharrayref_lang = installer::ziplist::replace_languages_in_paths($includepatharrayref, $languagesarrayref); # spent 221µs making 1 call to installer::ziplist::replace_languages_in_paths | ||
617 | |||||
618 | if ( $installer::globals::refresh_includepaths ) { installer::worker::collect_all_files_from_includepaths($includepatharrayref_lang); } | ||||
619 | |||||
620 | 1 | 342µs | installer::ziplist::list_all_files_from_include_path($includepatharrayref_lang); # spent 342µs making 1 call to installer::ziplist::list_all_files_from_include_path | ||
621 | |||||
622 | ############################################## | ||||
623 | # Analyzing spellchecker languages | ||||
624 | ############################################## | ||||
625 | |||||
626 | 1 | 4.64ms | if ( $allvariableshashref->{'SPELLCHECKERFILE'} ) { installer::worker::set_spellcheckerlanguages($languagesarrayref, $allvariableshashref); } # spent 4.64ms making 1 call to installer::worker::set_spellcheckerlanguages | ||
627 | |||||
628 | ##################################### | ||||
629 | # Language dependent directory part | ||||
630 | ##################################### | ||||
631 | |||||
632 | 1 | 2.67s | my $dirsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($dirsinproductarrayref, $languagesarrayref); # spent 2.67s making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
633 | |||||
634 | # A new directory array is needed ($dirsinproductlanguageresolvedarrayref instead of $dirsinproductarrayref) | ||||
635 | # because $dirsinproductarrayref is needed in get_Destination_Directory_For_Item_From_Directorylist | ||||
636 | |||||
637 | 1 | 64.1ms | installer::scriptitems::changing_name_of_language_dependent_keys($dirsinproductlanguageresolvedarrayref); # spent 64.1ms making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
638 | |||||
639 | 1 | 7.27ms | installer::scriptitems::checking_directories_with_corrupt_hostname($dirsinproductlanguageresolvedarrayref, $languagesarrayref); # spent 7.27ms making 1 call to installer::scriptitems::checking_directories_with_corrupt_hostname | ||
640 | |||||
641 | 1 | 11.7ms | installer::scriptitems::set_global_directory_hostnames($dirsinproductlanguageresolvedarrayref, $allvariableshashref); # spent 11.7ms making 1 call to installer::scriptitems::set_global_directory_hostnames | ||
642 | |||||
643 | ##################################### | ||||
644 | # files part, language dependent | ||||
645 | ##################################### | ||||
646 | |||||
647 | 1 | 22µs | installer::logger::print_message( "... analyzing files ...\n" ); # spent 22µs making 1 call to installer::logger::print_message | ||
648 | |||||
649 | 1 | 24.9s | my $filesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($filesinproductarrayref, $languagesarrayref); # spent 24.9s making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
650 | |||||
651 | 1 | 55.7ms | if ( ! $installer::globals::set_office_start_language ) # spent 55.7ms making 1 call to installer::scriptitems::remove_office_start_language_files | ||
652 | { | ||||
653 | $filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_office_start_language_files($filesinproductlanguageresolvedarrayref); | ||||
654 | } | ||||
655 | |||||
656 | 1 | 374ms | installer::scriptitems::changing_name_of_language_dependent_keys($filesinproductlanguageresolvedarrayref); # spent 374ms making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
657 | |||||
658 | 1 | 6µs | if ( $installer::globals::iswin and $^O =~ /MSWin/i ) { installer::converter::convert_slash_to_backslash($filesinproductlanguageresolvedarrayref); } # spent 6µs making 1 call to installer::CORE:match | ||
659 | |||||
660 | 1 | 43.7ms | $filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_non_existent_languages_in_productlists($filesinproductlanguageresolvedarrayref, $languagestringref, "Name", "file"); # spent 43.7ms making 1 call to installer::scriptitems::remove_non_existent_languages_in_productlists | ||
661 | |||||
662 | 1 | 800ms | installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($filesinproductlanguageresolvedarrayref, $dirsinproductarrayref); # spent 800ms making 1 call to installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist | ||
663 | |||||
664 | 1 | 439ms | installer::scriptitems::get_Source_Directory_For_Files_From_Includepathlist($filesinproductlanguageresolvedarrayref, $includepatharrayref_lang, $dirsinproductlanguageresolvedarrayref, "Files"); # spent 439ms making 1 call to installer::scriptitems::get_Source_Directory_For_Files_From_Includepathlist | ||
665 | |||||
666 | 1 | 23.9ms | $filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_Files_Without_Sourcedirectory($filesinproductlanguageresolvedarrayref); # spent 23.9ms making 1 call to installer::scriptitems::remove_Files_Without_Sourcedirectory | ||
667 | |||||
668 | if ($installer::globals::languagepack) | ||||
669 | { | ||||
670 | $filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_Files_For_Languagepacks($filesinproductlanguageresolvedarrayref); | ||||
671 | } | ||||
672 | |||||
673 | 1 | 114ms | if ( ! $allvariableshashref->{'NO_README_IN_ROOTDIR'} ) # spent 114ms making 1 call to installer::scriptitems::add_License_Files_into_Installdir | ||
674 | { | ||||
675 | $filesinproductlanguageresolvedarrayref = installer::scriptitems::add_License_Files_into_Installdir($filesinproductlanguageresolvedarrayref, $dirsinproductlanguageresolvedarrayref, $languagesarrayref); | ||||
676 | } | ||||
677 | |||||
678 | 1 | 56.5ms | installer::scriptitems::make_filename_language_specific($filesinproductlanguageresolvedarrayref); # spent 56.5ms making 1 call to installer::scriptitems::make_filename_language_specific | ||
679 | |||||
680 | ###################################################################################### | ||||
681 | # Unzipping files with flag ARCHIVE and putting all included files into the file list | ||||
682 | ###################################################################################### | ||||
683 | |||||
684 | 1 | 23µs | installer::logger::print_message( "... analyzing files with flag ARCHIVE ...\n" ); # spent 23µs making 1 call to installer::logger::print_message | ||
685 | |||||
686 | my @additional_paths_from_zipfiles = (); | ||||
687 | |||||
688 | 1 | 50.0s | $filesinproductlanguageresolvedarrayref = installer::archivefiles::resolving_archive_flag($filesinproductlanguageresolvedarrayref, \@additional_paths_from_zipfiles, $languagestringref, $loggingdir); # spent 50.0s making 1 call to installer::archivefiles::resolving_archive_flag | ||
689 | |||||
690 | # packed files sometimes contain a "$" in their name: HighlightText$1.class. For epm the "$" has to be quoted by "$$" | ||||
691 | |||||
692 | if (!( $installer::globals::iswindowsbuild || $installer::globals::simple ) ) | ||||
693 | { | ||||
694 | installer::scriptitems::quoting_illegal_filenames($filesinproductlanguageresolvedarrayref); | ||||
695 | } | ||||
696 | |||||
697 | ##################################### | ||||
698 | # Files with flag SUBST_FILENAME | ||||
699 | ##################################### | ||||
700 | |||||
701 | 1 | 23µs | installer::logger::print_message( "... analyzing files with flag SUBST_FILENAME ...\n" ); # spent 23µs making 1 call to installer::logger::print_message | ||
702 | |||||
703 | 1 | 407ms | installer::substfilenamefiles::resolving_subst_filename_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, $languagestringref); # spent 407ms making 1 call to installer::substfilenamefiles::resolving_subst_filename_flag | ||
704 | |||||
705 | ##################################### | ||||
706 | # Files with flag SCPZIP_REPLACE | ||||
707 | ##################################### | ||||
708 | |||||
709 | 1 | 26µs | installer::logger::print_message( "... analyzing files with flag SCPZIP_REPLACE ...\n" ); # spent 26µs making 1 call to installer::logger::print_message | ||
710 | |||||
711 | # Editing files with flag SCPZIP_REPLACE. | ||||
712 | |||||
713 | 1 | 1.13s | installer::scpzipfiles::resolving_scpzip_replace_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref); # spent 1.13s making 1 call to installer::scpzipfiles::resolving_scpzip_replace_flag | ||
714 | |||||
715 | ##################################### | ||||
716 | # Files with flag PATCH_SO_NAME | ||||
717 | ##################################### | ||||
718 | |||||
719 | 1 | 21µs | installer::logger::print_message( "... analyzing files with flag PATCH_SO_NAME ...\n" ); # spent 21µs making 1 call to installer::logger::print_message | ||
720 | |||||
721 | # Editing files with flag PATCH_SO_NAME. | ||||
722 | |||||
723 | 1 | 443ms | installer::scppatchsoname::resolving_patchsoname_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref); # spent 443ms making 1 call to installer::scppatchsoname::resolving_patchsoname_flag | ||
724 | |||||
725 | ##################################### | ||||
726 | # Files with flag HIDDEN | ||||
727 | ##################################### | ||||
728 | |||||
729 | 1 | 26µs | installer::logger::print_message( "... analyzing files with flag HIDDEN ...\n" ); # spent 26µs making 1 call to installer::logger::print_message | ||
730 | |||||
731 | 1 | 401ms | installer::worker::resolving_hidden_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref); # spent 401ms making 1 call to installer::worker::resolving_hidden_flag | ||
732 | |||||
733 | ############################################ | ||||
734 | # Collecting directories for epm list file | ||||
735 | ############################################ | ||||
736 | |||||
737 | 1 | 25µs | installer::logger::print_message( "... analyzing all directories for this product ...\n" ); # spent 25µs making 1 call to installer::logger::print_message | ||
738 | |||||
739 | # There are two ways for a directory to be included into the epm directory list: | ||||
740 | # 1. Looking for all destination paths in the files array | ||||
741 | # 2. Looking for directories with CREATE flag in the directory array | ||||
742 | # Advantage: Many paths are hidden in zip files, they are not defined in the setup script. | ||||
743 | # It will be possible, that in the setup script only those directoies have to be defined, | ||||
744 | # that have a CREATE flag. All other directories are created, if they contain at least one file. | ||||
745 | |||||
746 | 1 | 2.51s | my ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref); # spent 2.51s making 1 call to installer::scriptitems::collect_directories_from_filesarray | ||
747 | |||||
748 | 1 | 102ms | ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_with_create_flag_from_directoryarray($dirsinproductlanguageresolvedarrayref, $alldirectoryhash); # spent 102ms making 1 call to installer::scriptitems::collect_directories_with_create_flag_from_directoryarray | ||
749 | |||||
750 | ######################################################### | ||||
751 | # language dependent scpactions part | ||||
752 | ######################################################### | ||||
753 | |||||
754 | 1 | 13µs | my $scpactionsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($scpactionsinproductarrayref, $languagesarrayref); # spent 13µs making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
755 | |||||
756 | 1 | 7µs | installer::scriptitems::changing_name_of_language_dependent_keys($scpactionsinproductlanguageresolvedarrayref); # spent 7µs making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
757 | |||||
758 | 1 | 162µs | installer::scriptitems::get_Source_Directory_For_Files_From_Includepathlist($scpactionsinproductlanguageresolvedarrayref, $includepatharrayref_lang, $dirsinproductlanguageresolvedarrayref, "ScpActions"); # spent 162µs making 1 call to installer::scriptitems::get_Source_Directory_For_Files_From_Includepathlist | ||
759 | |||||
760 | # Editing scpactions with flag SCPZIP_REPLACE and PATCH_SO_NAME. | ||||
761 | |||||
762 | 1 | 289ms | installer::scpzipfiles::resolving_scpzip_replace_flag($scpactionsinproductlanguageresolvedarrayref, $allvariableshashref, "ScpAction", $languagestringref); # spent 289ms making 1 call to installer::scpzipfiles::resolving_scpzip_replace_flag | ||
763 | |||||
764 | 1 | 292ms | installer::scppatchsoname::resolving_patchsoname_flag($scpactionsinproductlanguageresolvedarrayref, $allvariableshashref, "ScpAction", $languagestringref); # spent 292ms making 1 call to installer::scppatchsoname::resolving_patchsoname_flag | ||
765 | |||||
766 | ######################################################### | ||||
767 | # language dependent links part | ||||
768 | ######################################################### | ||||
769 | |||||
770 | 1 | 19µs | installer::logger::print_message( "... analyzing links ...\n" ); # spent 19µs making 1 call to installer::logger::print_message | ||
771 | |||||
772 | 1 | 16µs | my $linksinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($linksinproductarrayref, $languagesarrayref); # spent 16µs making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
773 | |||||
774 | 1 | 7µs | installer::scriptitems::changing_name_of_language_dependent_keys($linksinproductlanguageresolvedarrayref); # spent 7µs making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
775 | |||||
776 | 1 | 13µs | installer::scriptitems::get_destination_file_path_for_links($linksinproductlanguageresolvedarrayref, $filesinproductlanguageresolvedarrayref); # spent 13µs making 1 call to installer::scriptitems::get_destination_file_path_for_links | ||
777 | |||||
778 | 1 | 8µs | installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($linksinproductlanguageresolvedarrayref, $dirsinproductarrayref); # spent 8µs making 1 call to installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist | ||
779 | |||||
780 | # Now taking all links that have no FileID but a ShortcutID, linking to another link | ||||
781 | |||||
782 | 1 | 10µs | installer::scriptitems::get_destination_link_path_for_links($linksinproductlanguageresolvedarrayref); # spent 10µs making 1 call to installer::scriptitems::get_destination_link_path_for_links | ||
783 | |||||
784 | 1 | 9µs | $linksinproductlanguageresolvedarrayref = installer::scriptitems::remove_workstation_only_items($linksinproductlanguageresolvedarrayref); # spent 9µs making 1 call to installer::scriptitems::remove_workstation_only_items | ||
785 | |||||
786 | 1 | 8µs | installer::scriptitems::resolve_links_with_flag_relative($linksinproductlanguageresolvedarrayref); # spent 8µs making 1 call to installer::scriptitems::resolve_links_with_flag_relative | ||
787 | |||||
788 | ######################################################### | ||||
789 | # language dependent unix links part | ||||
790 | ######################################################### | ||||
791 | |||||
792 | 1 | 8µs | installer::logger::print_message( "... analyzing unix links ...\n" ); # spent 8µs making 1 call to installer::logger::print_message | ||
793 | |||||
794 | 1 | 7µs | my $unixlinksinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($unixlinksinproductarrayref, $languagesarrayref); # spent 7µs making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
795 | |||||
796 | 1 | 4µs | installer::scriptitems::changing_name_of_language_dependent_keys($unixlinksinproductlanguageresolvedarrayref); # spent 4µs making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
797 | |||||
798 | 1 | 4µs | installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($unixlinksinproductlanguageresolvedarrayref, $dirsinproductarrayref); # spent 4µs making 1 call to installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist | ||
799 | |||||
800 | ######################################################### | ||||
801 | # language dependent part for profiles and profileitems | ||||
802 | ######################################################### | ||||
803 | |||||
804 | my $profilesinproductlanguageresolvedarrayref; | ||||
805 | my $profileitemsinproductlanguageresolvedarrayref; | ||||
806 | |||||
807 | 9 | 37µs | 1 | 4µs | if ((!($installer::globals::is_copy_only_project)) && (!($installer::globals::product =~ /ada/i )) && (!($installer::globals::languagepack)) && (!($installer::globals::helppack))) # spent 4µs making 1 call to installer::CORE:match |
808 | { | ||||
809 | 1 | 9µs | installer::logger::print_message( "... creating profiles ...\n" ); # spent 9µs making 1 call to installer::logger::print_message | ||
810 | |||||
811 | 1 | 62µs | $profilesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($profilesinproductarrayref, $languagesarrayref); # spent 62µs making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
812 | |||||
813 | 1 | 436µs | $profileitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($profileitemsinproductarrayref, $languagesarrayref); # spent 436µs making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
814 | |||||
815 | 1 | 28µs | installer::scriptitems::changing_name_of_language_dependent_keys($profilesinproductlanguageresolvedarrayref); # spent 28µs making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
816 | |||||
817 | 1 | 210µs | installer::scriptitems::changing_name_of_language_dependent_keys($profileitemsinproductlanguageresolvedarrayref); # spent 210µs making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
818 | |||||
819 | 1 | 1.40s | installer::scriptitems::replace_setup_variables($profileitemsinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref); # spent 1.40s making 1 call to installer::scriptitems::replace_setup_variables | ||
820 | |||||
821 | if ( $installer::globals::patch_user_dir ) | ||||
822 | { | ||||
823 | installer::scriptitems::replace_userdir_variable($profileitemsinproductlanguageresolvedarrayref); | ||||
824 | } | ||||
825 | |||||
826 | 1 | 471µs | installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist($profilesinproductlanguageresolvedarrayref, $dirsinproductarrayref); # spent 471µs making 1 call to installer::scriptitems::get_Destination_Directory_For_Item_From_Directorylist | ||
827 | |||||
828 | # Now the Profiles can be created | ||||
829 | |||||
830 | 1 | 397ms | installer::profiles::create_profiles($profilesinproductlanguageresolvedarrayref, $profileitemsinproductlanguageresolvedarrayref, $filesinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref); # spent 397ms making 1 call to installer::profiles::create_profiles | ||
831 | } | ||||
832 | |||||
833 | my $registryitemsinproductlanguageresolvedarrayref; # cannot be defined in the following "if ( $installer::globals::iswindowsbuild )" | ||||
834 | my $folderinproductlanguageresolvedarrayref; # cannot be defined in the following "if ( $installer::globals::iswindowsbuild )" | ||||
835 | my $folderitemsinproductlanguageresolvedarrayref; # cannot be defined in the following "if ( $installer::globals::iswindowsbuild )" | ||||
836 | |||||
837 | 9 | 51µs | if ( $installer::globals::iswindowsbuild ) # Windows specific items: Folder, FolderItem, RegistryItem | ||
838 | { | ||||
839 | ######################################################### | ||||
840 | # language dependent part for folder | ||||
841 | ######################################################### | ||||
842 | |||||
843 | 1 | 22µs | installer::logger::print_message( "... analyzing folder ...\n" ); # spent 22µs making 1 call to installer::logger::print_message | ||
844 | |||||
845 | 1 | 29µs | $folderinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($folderinproductarrayref, $languagesarrayref); # spent 29µs making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
846 | |||||
847 | 1 | 15µs | installer::scriptitems::changing_name_of_language_dependent_keys($folderinproductlanguageresolvedarrayref); # spent 15µs making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
848 | |||||
849 | ######################################################### | ||||
850 | # language dependent part for folderitems | ||||
851 | ######################################################### | ||||
852 | |||||
853 | 1 | 8µs | installer::logger::print_message( "... analyzing folderitems ...\n" ); # spent 8µs making 1 call to installer::logger::print_message | ||
854 | |||||
855 | 1 | 1.40s | $folderitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($folderitemsinproductarrayref, $languagesarrayref); # spent 1.40s making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
856 | |||||
857 | 1 | 68.0ms | installer::scriptitems::changing_name_of_language_dependent_keys($folderitemsinproductlanguageresolvedarrayref); # spent 68.0ms making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
858 | |||||
859 | ######################################################### | ||||
860 | # language dependent part for registryitems | ||||
861 | ######################################################### | ||||
862 | |||||
863 | 1 | 23µs | installer::logger::print_message( "... analyzing registryitems ...\n" ); # spent 23µs making 1 call to installer::logger::print_message | ||
864 | |||||
865 | 1 | 25.7s | $registryitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($registryitemsinproductarrayref, $languagesarrayref); # spent 25.7s making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
866 | |||||
867 | 1 | 756ms | installer::scriptitems::changing_name_of_language_dependent_keys($registryitemsinproductlanguageresolvedarrayref); # spent 756ms making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
868 | } | ||||
869 | |||||
870 | ######################################################### | ||||
871 | # language dependent part for modules | ||||
872 | ######################################################### | ||||
873 | |||||
874 | my $modulesinproductlanguageresolvedarrayref; | ||||
875 | |||||
876 | 6 | 5.64ms | if (!($installer::globals::is_copy_only_project)) | ||
877 | { | ||||
878 | 1 | 32µs | installer::logger::print_message( "... analyzing modules ...\n" ); # spent 32µs making 1 call to installer::logger::print_message | ||
879 | |||||
880 | 1 | 103s | $modulesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($modulesinproductarrayref, $languagesarrayref); # spent 103s making 1 call to installer::scriptitems::resolving_all_languages_in_productlists | ||
881 | |||||
882 | 1 | 3.28s | $modulesinproductlanguageresolvedarrayref = installer::scriptitems::remove_not_required_language_modules($modulesinproductlanguageresolvedarrayref, $languagesarrayref); # spent 3.28s making 1 call to installer::scriptitems::remove_not_required_language_modules | ||
883 | |||||
884 | 2 | 3.11ms | if ( $installer::globals::analyze_spellcheckerlanguage ) | ||
885 | { | ||||
886 | 1 | 119ms | $modulesinproductlanguageresolvedarrayref = installer::scriptitems::remove_not_required_spellcheckerlanguage_modules($modulesinproductlanguageresolvedarrayref); # spent 119ms making 1 call to installer::scriptitems::remove_not_required_spellcheckerlanguage_modules | ||
887 | |||||
888 | 1 | 59.9ms | $filesinproductlanguageresolvedarrayref = installer::scriptitems::remove_not_required_spellcheckerlanguage_files($filesinproductlanguageresolvedarrayref); # spent 59.9ms making 1 call to installer::scriptitems::remove_not_required_spellcheckerlanguage_files | ||
889 | } | ||||
890 | |||||
891 | 1 | 2.30s | installer::scriptitems::changing_name_of_language_dependent_keys($modulesinproductlanguageresolvedarrayref); # spent 2.30s making 1 call to installer::scriptitems::changing_name_of_language_dependent_keys | ||
892 | |||||
893 | 1 | 365ms | installer::scriptitems::select_required_language_strings($modulesinproductlanguageresolvedarrayref); # using english strings # spent 365ms making 1 call to installer::scriptitems::select_required_language_strings | ||
894 | |||||
895 | } | ||||
896 | |||||
897 | # Copy-only projects can now start to copy all items File and ScpAction | ||||
898 | if ( $installer::globals::is_copy_only_project ) { installer::copyproject::copy_project($filesinproductlanguageresolvedarrayref, $scpactionsinproductlanguageresolvedarrayref, $loggingdir, $languagestringref, $shipinstalldir, $allsettingsarrayref); } | ||||
899 | |||||
900 | # Language pack projects can now start to select the required information | ||||
901 | if ( $installer::globals::languagepack ) | ||||
902 | { | ||||
903 | $filesinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($filesinproductlanguageresolvedarrayref, $languagesarrayref, "File"); | ||||
904 | $scpactionsinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($scpactionsinproductlanguageresolvedarrayref, $languagesarrayref, "ScpAction"); | ||||
905 | $linksinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($linksinproductlanguageresolvedarrayref, $languagesarrayref, "Shortcut"); | ||||
906 | $unixlinksinproductlanguageresolvedarrayref = installer::languagepack::select_language_items($unixlinksinproductlanguageresolvedarrayref, $languagesarrayref, "Unixlink"); | ||||
907 | @{$folderitemsinproductlanguageresolvedarrayref} = (); # no folderitems in languagepacks | ||||
908 | |||||
909 | # Collecting the directories again, to include only the language specific directories | ||||
910 | ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref); | ||||
911 | ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_with_create_flag_from_directoryarray($dirsinproductlanguageresolvedarrayref, $alldirectoryhash); | ||||
912 | @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } @$directoriesforepmarrayref; | ||||
913 | |||||
914 | if ( $installer::globals::iswindowsbuild ) | ||||
915 | { | ||||
916 | $registryitemsinproductlanguageresolvedarrayref = installer::worker::select_langpack_items($registryitemsinproductlanguageresolvedarrayref, "RegistryItem"); | ||||
917 | } | ||||
918 | |||||
919 | } | ||||
920 | |||||
921 | # Help pack projects can now start to select the required information | ||||
922 | if ( $installer::globals::helppack ) | ||||
923 | { | ||||
924 | $filesinproductlanguageresolvedarrayref = installer::helppack::select_help_items($filesinproductlanguageresolvedarrayref, $languagesarrayref, "File"); | ||||
925 | $scpactionsinproductlanguageresolvedarrayref = installer::helppack::select_help_items($scpactionsinproductlanguageresolvedarrayref, $languagesarrayref, "ScpAction"); | ||||
926 | $linksinproductlanguageresolvedarrayref = installer::helppack::select_help_items($linksinproductlanguageresolvedarrayref, $languagesarrayref, "Shortcut"); | ||||
927 | $unixlinksinproductlanguageresolvedarrayref = installer::helppack::select_help_items($unixlinksinproductlanguageresolvedarrayref, $languagesarrayref, "Unixlink"); | ||||
928 | @{$folderitemsinproductlanguageresolvedarrayref} = (); # no folderitems in helppacks | ||||
929 | |||||
930 | # Collecting the directories again, to include only the language specific directories | ||||
931 | ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref); | ||||
932 | ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_with_create_flag_from_directoryarray($dirsinproductlanguageresolvedarrayref, $alldirectoryhash); | ||||
933 | @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } @$directoriesforepmarrayref; | ||||
934 | |||||
935 | if ( $installer::globals::iswindowsbuild ) | ||||
936 | { | ||||
937 | $registryitemsinproductlanguageresolvedarrayref = installer::worker::select_helppack_items($registryitemsinproductlanguageresolvedarrayref, "RegistryItem"); | ||||
938 | } | ||||
939 | |||||
940 | } | ||||
941 | |||||
942 | # Collecting all files without flag PATCH (for maintenance reasons) | ||||
943 | if ( $installer::globals::patch ) { installer::worker::collect_all_files_without_patch_flag($filesinproductlanguageresolvedarrayref); } | ||||
944 | |||||
945 | # Patch projects can now start to select the required information | ||||
946 | if (( $installer::globals::patch ) && (( $installer::globals::issolarispkgbuild ) || ( $installer::globals::iswindowsbuild ))) | ||||
947 | { | ||||
948 | $filesinproductlanguageresolvedarrayref = installer::worker::select_patch_items($filesinproductlanguageresolvedarrayref, "File"); | ||||
949 | $scpactionsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($scpactionsinproductlanguageresolvedarrayref, "ScpAction"); | ||||
950 | $linksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($linksinproductlanguageresolvedarrayref, "Shortcut"); | ||||
951 | $unixlinksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($unixlinksinproductlanguageresolvedarrayref, "Unixlink"); | ||||
952 | $folderitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($folderitemsinproductlanguageresolvedarrayref, "FolderItem"); | ||||
953 | # @{$folderitemsinproductlanguageresolvedarrayref} = (); # no folderitems in languagepacks | ||||
954 | |||||
955 | if ( $installer::globals::iswindowsbuild ) | ||||
956 | { | ||||
957 | $registryitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items_without_name($registryitemsinproductlanguageresolvedarrayref, "RegistryItem"); | ||||
958 | |||||
959 | installer::worker::prepare_windows_patchfiles($filesinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref); | ||||
960 | |||||
961 | # For Windows patches, the directories can now be collected again | ||||
962 | ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref); | ||||
963 | |||||
964 | @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } @$directoriesforepmarrayref; | ||||
965 | } | ||||
966 | } | ||||
967 | |||||
968 | ######################################################### | ||||
969 | # Collecting all scp actions | ||||
970 | ######################################################### | ||||
971 | |||||
972 | 1 | 16µs | installer::worker::collect_scpactions($scpactionsinproductlanguageresolvedarrayref); # spent 16µs making 1 call to installer::worker::collect_scpactions | ||
973 | |||||
974 | ########################################################### | ||||
975 | # Simple package projects can now start to create the | ||||
976 | # installation structure by creating Directories, Files | ||||
977 | # Links and ScpActions. This is the last platform | ||||
978 | # independent part. | ||||
979 | ########################################################### | ||||
980 | |||||
981 | if ( $installer::globals::is_simple_packager_project ) | ||||
982 | { | ||||
983 | installer::simplepackage::create_simple_package($filesinproductlanguageresolvedarrayref, $directoriesforepmarrayref, $scpactionsinproductlanguageresolvedarrayref, $linksinproductlanguageresolvedarrayref, $unixlinksinproductlanguageresolvedarrayref, $loggingdir, $languagestringref, $shipinstalldir, $allsettingsarrayref, $allvariableshashref, $includepatharrayref); | ||||
984 | next; # ! leaving the current loop, because no further packaging required. | ||||
985 | } | ||||
986 | |||||
987 | ########################################################### | ||||
988 | # Analyzing the package structure | ||||
989 | ########################################################### | ||||
990 | |||||
991 | 1 | 29µs | installer::logger::print_message( "... analyzing package list ...\n" ); # spent 29µs making 1 call to installer::logger::print_message | ||
992 | |||||
993 | 1 | 10.0s | my $packages = installer::packagelist::collectpackages($modulesinproductlanguageresolvedarrayref, $languagesarrayref); # spent 10.0s making 1 call to installer::packagelist::collectpackages | ||
994 | 1 | 13.4ms | installer::packagelist::check_packagelist($packages); # spent 13.4ms making 1 call to installer::packagelist::check_packagelist | ||
995 | |||||
996 | 1 | 72.6s | $packages = installer::packagelist::analyze_list($packages, $modulesinproductlanguageresolvedarrayref); # spent 72.6s making 1 call to installer::packagelist::analyze_list | ||
997 | 1 | 23.5s | installer::packagelist::remove_multiple_modules_packages($packages); # spent 23.5s making 1 call to installer::packagelist::remove_multiple_modules_packages | ||
998 | |||||
999 | # printing packages content: | ||||
1000 | 1 | 202ms | installer::packagelist::log_packages_content($packages); # spent 202ms making 1 call to installer::packagelist::log_packages_content | ||
1001 | 1 | 2.71s | installer::packagelist::create_module_destination_hash($packages, $allvariableshashref); # spent 2.71s making 1 call to installer::packagelist::create_module_destination_hash | ||
1002 | |||||
1003 | ################################################# | ||||
1004 | # Part 2: The platform dependent part | ||||
1005 | ################################################# | ||||
1006 | |||||
1007 | ################################################# | ||||
1008 | # Part 2a: All non-Windows platforms | ||||
1009 | ################################################# | ||||
1010 | |||||
1011 | ######################################################### | ||||
1012 | # ... creating epm list file ... | ||||
1013 | # Only for non-Windows platforms | ||||
1014 | ######################################################### | ||||
1015 | |||||
1016 | if (!( $installer::globals::iswindowsbuild )) | ||||
1017 | { | ||||
1018 | #################################################### | ||||
1019 | # Writing log file before packages are packed | ||||
1020 | #################################################### | ||||
1021 | |||||
1022 | installer::logger::print_message( "... creating log file " . $loggingdir . $installer::globals::logfilename . "\n" ); | ||||
1023 | installer::files::save_file($loggingdir . $installer::globals::logfilename, \@installer::globals::logfileinfo); | ||||
1024 | |||||
1025 | #################################################### | ||||
1026 | # Creating directories | ||||
1027 | #################################################### | ||||
1028 | |||||
1029 | if ( $allvariableshashref->{'OOODOWNLOADNAME'} ) { installer::download::set_download_filename($languagestringref, $allvariableshashref); } | ||||
1030 | else { installer::download::resolve_variables_in_downloadname($allvariableshashref, "", $languagestringref); } | ||||
1031 | |||||
1032 | $installdir = installer::worker::create_installation_directory($shipinstalldir, $languagestringref, \$current_install_number); | ||||
1033 | |||||
1034 | my $listfiledir = installer::systemactions::create_directories("listfile", $languagestringref); | ||||
1035 | my $installlogdir = installer::systemactions::create_directory_next_to_directory($installdir, "log"); | ||||
1036 | |||||
1037 | #################################################### | ||||
1038 | # Reading for Solaris all package descriptions | ||||
1039 | # from file defined in property PACKAGEMAP | ||||
1040 | #################################################### | ||||
1041 | |||||
1042 | if ( $installer::globals::issolarisbuild ) { installer::epmfile::read_packagemap($allvariableshashref, $includepatharrayref, $languagesarrayref); } | ||||
1043 | |||||
1044 | ########################################### | ||||
1045 | # Checking epm state | ||||
1046 | ########################################### | ||||
1047 | |||||
1048 | my $epmexecutable = ""; | ||||
1049 | if ( $installer::globals::call_epm ) | ||||
1050 | { | ||||
1051 | $epmexecutable = installer::epmfile::find_epm_on_system($includepatharrayref); | ||||
1052 | installer::epmfile::set_patch_state($epmexecutable); # setting $installer::globals::is_special_epm | ||||
1053 | } | ||||
1054 | |||||
1055 | # shuffle array to reduce parallel packaging process in pool | ||||
1056 | installer::worker::shuffle_array($packages) | ||||
1057 | unless $installer::globals::simple; | ||||
1058 | |||||
1059 | # iterating over all packages | ||||
1060 | for my $onepackage ( @{$packages} ) | ||||
1061 | { | ||||
1062 | # checking, if this is a language pack or a project pack. | ||||
1063 | # Creating language packs only, if $installer::globals::languagepack is set. Parameter: -languagepack | ||||
1064 | |||||
1065 | if ( $installer::globals::languagepack ) { installer::languagepack::replace_languagestring_variable($onepackage, $languagestringref); } | ||||
1066 | |||||
1067 | # checking, if this is a help pack | ||||
1068 | # Creating help packs only, if $installer::globals::helppack is set. Parameter: -helppack | ||||
1069 | |||||
1070 | if ( $installer::globals::helppack ) { installer::helppack::replace_languagestring_variable($onepackage, $languagestringref); } | ||||
1071 | |||||
1072 | my $onepackagename = $onepackage->{'module'}; # name of the top module (required) | ||||
1073 | |||||
1074 | my $shellscriptsfilename = ""; | ||||
1075 | if ( $onepackage->{'script'} ) { $shellscriptsfilename = $onepackage->{'script'}; } | ||||
1076 | # no scripts for Solaris patches! | ||||
1077 | if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) { $shellscriptsfilename = ""; } | ||||
1078 | |||||
1079 | ########################### | ||||
1080 | # package name | ||||
1081 | ########################### | ||||
1082 | |||||
1083 | my $packagename = ""; | ||||
1084 | |||||
1085 | if ( $installer::globals::issolarisbuild ) # only for Solaris | ||||
1086 | { | ||||
1087 | if ( $onepackage->{'solarispackagename'} ) { $packagename = $onepackage->{'solarispackagename'}; } | ||||
1088 | } | ||||
1089 | else # not Solaris | ||||
1090 | { | ||||
1091 | if ( $onepackage->{'packagename'} ) { $packagename = $onepackage->{'packagename'}; } | ||||
1092 | } | ||||
1093 | |||||
1094 | if (!($packagename eq "")) | ||||
1095 | { | ||||
1096 | installer::packagelist::resolve_packagevariables(\$packagename, $allvariableshashref, 0); | ||||
1097 | } | ||||
1098 | |||||
1099 | # Debian allows no underline in package name | ||||
1100 | if ( $installer::globals::debian ) { $packagename =~ s/_/-/g; } | ||||
1101 | |||||
1102 | #################################################### | ||||
1103 | # Header for this package into log file | ||||
1104 | #################################################### | ||||
1105 | |||||
1106 | installer::logger::include_header_into_logfile("Creating package: $packagename"); | ||||
1107 | |||||
1108 | ########################################### | ||||
1109 | # Root path, can be defined as parameter | ||||
1110 | ########################################### | ||||
1111 | |||||
1112 | my $packagerootpath = ""; | ||||
1113 | |||||
1114 | if ($installer::globals::rootpath eq "") | ||||
1115 | { | ||||
1116 | $packagerootpath = $onepackage->{'destpath'}; | ||||
1117 | installer::packagelist::resolve_packagevariables(\$packagerootpath, $allvariableshashref, 1); | ||||
1118 | # we put branding and common stuff into the same prefix on unixes => $packagerootpath must be the whole prefix, including the product name | ||||
1119 | if ($installer::globals::isunix) { $packagerootpath .= "/$allvariableshashref->{'UNIXBASISROOTNAME'}"; } | ||||
1120 | if ( $^O =~ /darwin/i ) { $packagerootpath =~ s/\/opt\//\/Applications\//; } | ||||
1121 | } | ||||
1122 | else | ||||
1123 | { | ||||
1124 | $packagerootpath = $installer::globals::rootpath; | ||||
1125 | } | ||||
1126 | |||||
1127 | ############################################# | ||||
1128 | # copying the collectors for each package | ||||
1129 | ############################################# | ||||
1130 | |||||
1131 | my $filesinpackage = installer::converter::copy_collector($filesinproductlanguageresolvedarrayref); | ||||
1132 | my $linksinpackage = installer::converter::copy_collector($linksinproductlanguageresolvedarrayref); | ||||
1133 | my $unixlinksinpackage = installer::converter::copy_collector($unixlinksinproductlanguageresolvedarrayref); | ||||
1134 | my $dirsinpackage = installer::converter::copy_collector($directoriesforepmarrayref); | ||||
1135 | |||||
1136 | ########################################### | ||||
1137 | # setting the root path for the packages | ||||
1138 | ########################################### | ||||
1139 | |||||
1140 | installer::scriptitems::add_rootpath_to_directories($dirsinpackage, $packagerootpath); | ||||
1141 | installer::scriptitems::add_rootpath_to_files($filesinpackage, $packagerootpath); | ||||
1142 | installer::scriptitems::add_rootpath_to_links($linksinpackage, $packagerootpath); | ||||
1143 | installer::scriptitems::add_rootpath_to_files($unixlinksinpackage, $packagerootpath); | ||||
1144 | |||||
1145 | ################################# | ||||
1146 | # collecting items for package | ||||
1147 | ################################# | ||||
1148 | |||||
1149 | $filesinpackage = installer::packagelist::find_files_for_package($filesinpackage, $onepackage); | ||||
1150 | $unixlinksinpackage = installer::packagelist::find_files_for_package($unixlinksinpackage, $onepackage); | ||||
1151 | $linksinpackage = installer::packagelist::find_links_for_package($linksinpackage, $filesinpackage); | ||||
1152 | $dirsinpackage = installer::packagelist::find_dirs_for_package($dirsinpackage, $onepackage); | ||||
1153 | |||||
1154 | ############################################### | ||||
1155 | # nothing to do, if $filesinpackage is empty | ||||
1156 | ############################################### | ||||
1157 | |||||
1158 | if ( ! ( $#{$filesinpackage} > -1 )) | ||||
1159 | { | ||||
1160 | $infoline = "\n\nNo file in package: $packagename \-\> Skipping\n\n"; | ||||
1161 | push(@installer::globals::logfileinfo, $infoline); | ||||
1162 | next; # next package, end of loop ! | ||||
1163 | } | ||||
1164 | |||||
1165 | ################################################################# | ||||
1166 | # nothing to do for Linux patches, if no file has flag PATCH | ||||
1167 | ################################################################# | ||||
1168 | |||||
1169 | # Linux Patch: The complete RPM has to be built, if one file in the RPM has the flag PATCH (also for DEBs) | ||||
1170 | if (( $installer::globals::patch ) && (( $installer::globals::isrpmbuild ) || ( $installer::globals::isdebbuild ))) | ||||
1171 | { | ||||
1172 | my $patchfiles = installer::worker::collect_all_items_with_special_flag($filesinpackage ,"PATCH"); | ||||
1173 | if ( ! ( $#{$patchfiles} > -1 )) | ||||
1174 | { | ||||
1175 | $infoline = "\n\nLinux Patch: No patch file in package: $packagename \-\> Skipping\n\n"; | ||||
1176 | push(@installer::globals::logfileinfo, $infoline); | ||||
1177 | next; | ||||
1178 | } | ||||
1179 | } | ||||
1180 | |||||
1181 | ########################################### | ||||
1182 | # Stripping libraries | ||||
1183 | ########################################### | ||||
1184 | |||||
1185 | # Building for non Windows platforms in cws requires, that all files are stripped before packaging: | ||||
1186 | # 1. copy all files that need to be stripped locally | ||||
1187 | # 2. strip all these files | ||||
1188 | |||||
1189 | if ( $installer::globals::strip ) | ||||
1190 | { | ||||
1191 | strip_libraries($filesinpackage, $languagestringref); | ||||
1192 | } | ||||
1193 | |||||
1194 | if ( $installer::globals::simple ) { | ||||
1195 | installer::worker::install_simple($onepackagename, $$languagestringref, $dirsinpackage, $filesinpackage, $linksinpackage, $unixlinksinpackage); | ||||
1196 | } | ||||
1197 | else { | ||||
1198 | # epm list file format: | ||||
1199 | # type mode owner group destination source options | ||||
1200 | # Example for a file: f 755 root sys /usr/bin/foo foo | ||||
1201 | # Example for a directory: d 755 root sys /var/spool/foo - | ||||
1202 | # Example for a link: l 000 root sys /usr/bin/linkname filename | ||||
1203 | # The source field specifies the file to link to | ||||
1204 | |||||
1205 | my $epmfilename = "epm_" . $onepackagename . ".lst"; | ||||
1206 | |||||
1207 | installer::logger::print_message( "... creating epm list file $epmfilename ... \n" ); | ||||
1208 | |||||
1209 | my $completeepmfilename = $listfiledir . $installer::globals::separator . $epmfilename; | ||||
1210 | |||||
1211 | my @epmfile = (); | ||||
1212 | |||||
1213 | my $epmheaderref = installer::epmfile::create_epm_header($allvariableshashref, $filesinproductlanguageresolvedarrayref, $languagesarrayref, $onepackage); | ||||
1214 | installer::epmfile::adding_header_to_epm_file(\@epmfile, $epmheaderref); | ||||
1215 | |||||
1216 | if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) | ||||
1217 | { | ||||
1218 | $filesinpackage = installer::worker::analyze_patch_files($filesinpackage); | ||||
1219 | |||||
1220 | if ( ! ( $#{$filesinpackage} > -1 )) | ||||
1221 | { | ||||
1222 | $infoline = "\nNo file in package: $packagename \-\> Skipping\n"; | ||||
1223 | push(@installer::globals::logfileinfo, $infoline); | ||||
1224 | next; # next package, end of loop ! | ||||
1225 | } | ||||
1226 | } | ||||
1227 | |||||
1228 | # adding directories, files and links into epm file | ||||
1229 | |||||
1230 | installer::epmfile::put_directories_into_epmfile($dirsinpackage, \@epmfile, $allvariableshashref, $packagerootpath); | ||||
1231 | installer::epmfile::put_files_into_epmfile($filesinpackage, \@epmfile ); | ||||
1232 | installer::epmfile::put_links_into_epmfile($linksinpackage, \@epmfile ); | ||||
1233 | installer::epmfile::put_unixlinks_into_epmfile($unixlinksinpackage, \@epmfile ); | ||||
1234 | |||||
1235 | if ((!( $shellscriptsfilename eq "" )) && (!($installer::globals::iswindowsbuild))) { installer::epmfile::adding_shellscripts_to_epm_file(\@epmfile, $shellscriptsfilename, $packagerootpath, $allvariableshashref, $filesinpackage); } | ||||
1236 | |||||
1237 | installer::files::save_file($completeepmfilename ,\@epmfile); | ||||
1238 | |||||
1239 | # ... splitting the rootpath into a relocatable part and a static part, if possible | ||||
1240 | |||||
1241 | my $staticpath = ""; | ||||
1242 | my $relocatablepath = ""; | ||||
1243 | # relocatable path can be defined in package list | ||||
1244 | if ( $onepackage->{'relocatablepath'} ) { $relocatablepath = $onepackage->{'relocatablepath'}; } | ||||
1245 | # setting fix part and variable part of destination path | ||||
1246 | installer::epmfile::analyze_rootpath($packagerootpath, \$staticpath, \$relocatablepath, $allvariableshashref); | ||||
1247 | |||||
1248 | # ... replacing the variable PRODUCTDIRECTORYNAME in the shellscriptfile by $staticpath | ||||
1249 | |||||
1250 | installer::epmfile::resolve_path_in_epm_list_before_packaging(\@epmfile, $completeepmfilename, "PRODUCTDIRECTORYNAME", $staticpath); | ||||
1251 | installer::epmfile::resolve_path_in_epm_list_before_packaging(\@epmfile, $completeepmfilename, "SOLSUREPACKAGEPREFIX", $allvariableshashref->{'SOLSUREPACKAGEPREFIX'}); | ||||
1252 | installer::epmfile::resolve_path_in_epm_list_before_packaging(\@epmfile, $completeepmfilename, "UREPACKAGEPREFIX", $allvariableshashref->{'UREPACKAGEPREFIX'}); | ||||
1253 | installer::files::save_file($completeepmfilename ,\@epmfile); | ||||
1254 | |||||
1255 | { | ||||
1256 | # changing into the "install" directory to create installation sets | ||||
1257 | |||||
1258 | $currentdir = cwd(); # $currentdir is global in this file | ||||
1259 | |||||
1260 | chdir($installdir); # changing into install directory ($installdir is global in this file) | ||||
1261 | |||||
1262 | ########################################### | ||||
1263 | # Starting epm | ||||
1264 | ########################################### | ||||
1265 | |||||
1266 | # With a patched epm, it is now possible to set the relocatable directory, change | ||||
1267 | # the directory in which the packages are created, setting "requires" and "provides" | ||||
1268 | # (Linux) or creating the "depend" file (Solaris) and finally to begin | ||||
1269 | # the packaging process with standard tooling and standard parameter | ||||
1270 | # Linux: Adding into the spec file: Prefix: /opt | ||||
1271 | # Solaris: Adding into the pkginfo file: BASEDIR=/opt | ||||
1272 | # Attention: Changing of the path can influence the shell scripts | ||||
1273 | |||||
1274 | if (( $installer::globals::is_special_epm ) && ( ($installer::globals::isrpmbuild) || ($installer::globals::issolarispkgbuild) )) # special handling only for Linux RPMs and Solaris Packages | ||||
1275 | { | ||||
1276 | if ( $installer::globals::call_epm ) # only do something, if epm is really executed | ||||
1277 | { | ||||
1278 | # ... now epm can be started, to create the installation sets | ||||
1279 | |||||
1280 | installer::logger::print_message( "... starting patched epm ... \n" ); | ||||
1281 | |||||
1282 | installer::epmfile::call_epm($epmexecutable, $completeepmfilename, $packagename, $includepatharrayref); | ||||
1283 | |||||
1284 | my $newepmdir = installer::epmfile::prepare_packages($loggingdir, $packagename, $staticpath, $relocatablepath, $onepackage, $allvariableshashref, $filesinpackage, $languagestringref); # adding the line for Prefix / Basedir, include rpmdir | ||||
1285 | |||||
1286 | installer::epmfile::create_packages_without_epm($newepmdir, $packagename, $includepatharrayref, $allvariableshashref, $languagestringref); # start to package | ||||
1287 | |||||
1288 | # finally removing all temporary files | ||||
1289 | |||||
1290 | installer::epmfile::remove_temporary_epm_files($newepmdir, $loggingdir, $packagename); | ||||
1291 | |||||
1292 | # Installation: | ||||
1293 | # Install: pkgadd -a myAdminfile -d ./SUNWso8m34.pkg | ||||
1294 | # Install: rpm -i --prefix=/opt/special --nodeps so8m35.rpm | ||||
1295 | |||||
1296 | installer::epmfile::create_new_directory_structure($newepmdir); | ||||
1297 | $installer::globals::postprocess_specialepm = 1; | ||||
1298 | |||||
1299 | # solaris patch not needed anymore | ||||
1300 | } | ||||
1301 | } | ||||
1302 | |||||
1303 | else # this is the standard epm (not relocatable) or ( nonlinux and nonsolaris ) | ||||
1304 | { | ||||
1305 | installer::epmfile::resolve_path_in_epm_list_before_packaging(\@epmfile, $completeepmfilename, "\$\$PRODUCTINSTALLLOCATION", $relocatablepath); | ||||
1306 | installer::files::save_file($completeepmfilename ,\@epmfile); # Warning for pool, content of epm file is changed. | ||||
1307 | |||||
1308 | if ( $installer::globals::call_epm ) | ||||
1309 | { | ||||
1310 | # ... now epm can be started, to create the installation sets | ||||
1311 | |||||
1312 | installer::logger::print_message( "... starting unpatched epm ... \n" ); | ||||
1313 | |||||
1314 | if ( $installer::globals::call_epm ) { installer::epmfile::call_epm($epmexecutable, $completeepmfilename, $packagename, $includepatharrayref); } | ||||
1315 | |||||
1316 | if (($installer::globals::isrpmbuild) || ($installer::globals::issolarispkgbuild) || ($installer::globals::debian)) | ||||
1317 | { | ||||
1318 | $installer::globals::postprocess_standardepm = 1; | ||||
1319 | } | ||||
1320 | } | ||||
1321 | } | ||||
1322 | |||||
1323 | chdir($currentdir); # changing back into start directory | ||||
1324 | |||||
1325 | } | ||||
1326 | |||||
1327 | } # end of "if ( ! $installer::globals::simple ) | ||||
1328 | |||||
1329 | } # end of "for ( @{$packages} )" | ||||
1330 | |||||
1331 | ############################################################## | ||||
1332 | # Post epm functionality, after the last package is packed | ||||
1333 | ############################################################## | ||||
1334 | |||||
1335 | if ( $installer::globals::postprocess_specialepm ) | ||||
1336 | { | ||||
1337 | installer::logger::include_header_into_logfile("Post EPM processes (Patched EPM):"); | ||||
1338 | |||||
1339 | chdir($installdir); | ||||
1340 | |||||
1341 | # Copying the cde, kde and gnome packages into the installation set | ||||
1342 | if ( $installer::globals::addsystemintegration ) { installer::epmfile::put_systemintegration_into_installset($installer::globals::epmoutpath, $includepatharrayref, $allvariableshashref, $modulesinproductarrayref); } | ||||
1343 | |||||
1344 | # Adding license and readme into installation set | ||||
1345 | if ($installer::globals::addlicensefile) { installer::worker::put_scpactions_into_installset("."); } | ||||
1346 | |||||
1347 | # Adding license file into setup | ||||
1348 | if ( $allvariableshashref->{'PUT_LICENSE_INTO_SETUP'} ) { installer::worker::put_license_into_setup(".", $includepatharrayref); } | ||||
1349 | |||||
1350 | # Creating installation set for Unix language packs, that are not part of multi lingual installation sets | ||||
1351 | if ( ( $installer::globals::languagepack ) && ( ! $installer::globals::debian ) && ( ! $installer::globals::makedownload ) ) { installer::languagepack::build_installer_for_languagepack($installer::globals::epmoutpath, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref); } | ||||
1352 | |||||
1353 | # Creating installation set for Unix help packs, that are not part of multi lingual installation sets | ||||
1354 | if ( ( $installer::globals::helppack ) && ( ! $installer::globals::debian ) && ( ! $installer::globals::makedownload ) ) { installer::helppack::build_installer_for_helppack($installer::globals::epmoutpath, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref); } | ||||
1355 | |||||
1356 | # Finalizing patch installation sets | ||||
1357 | if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) { installer::epmfile::finalize_patch($installer::globals::epmoutpath, $allvariableshashref); } | ||||
1358 | if (( $installer::globals::patch ) && ( $installer::globals::isrpmbuild )) { installer::epmfile::finalize_linux_patch($installer::globals::epmoutpath, $allvariableshashref, $includepatharrayref); } | ||||
1359 | |||||
1360 | chdir($currentdir); # changing back into start directory | ||||
1361 | } | ||||
1362 | |||||
1363 | if ( $installer::globals::postprocess_standardepm ) | ||||
1364 | { | ||||
1365 | installer::logger::include_header_into_logfile("Post EPM processes (Standard EPM):"); | ||||
1366 | |||||
1367 | chdir($installdir); | ||||
1368 | |||||
1369 | # determine the destination directory | ||||
1370 | my $newepmdir = installer::epmfile::determine_installdir_ooo(); | ||||
1371 | |||||
1372 | # Copying the cde, kde and gnome packages into the installation set | ||||
1373 | if ( $installer::globals::addsystemintegration ) { installer::epmfile::put_systemintegration_into_installset($newepmdir, $includepatharrayref, $allvariableshashref, $modulesinproductarrayref); } | ||||
1374 | |||||
1375 | # Adding license and readme into installation set | ||||
1376 | if ($installer::globals::addlicensefile) { installer::worker::put_scpactions_into_installset("."); } | ||||
1377 | |||||
1378 | # Adding license file into setup | ||||
1379 | if ( $allvariableshashref->{'PUT_LICENSE_INTO_SETUP'} ) { installer::worker::put_license_into_setup(".", $includepatharrayref); } | ||||
1380 | |||||
1381 | # Creating installation set for Unix language packs, that are not part of multi lingual installation sets | ||||
1382 | if ( ( $installer::globals::languagepack ) && ( ! $installer::globals::debian ) && ( ! $installer::globals::makedownload ) ) { installer::languagepack::build_installer_for_languagepack($newepmdir, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref); } | ||||
1383 | |||||
1384 | # Creating installation set for Unix help packs, that are not part of multi lingual installation sets | ||||
1385 | if ( ( $installer::globals::helppack ) && ( ! $installer::globals::debian ) && ( ! $installer::globals::makedownload ) ) { installer::helppack::build_installer_for_helpepack($newepmdir, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref); } | ||||
1386 | |||||
1387 | chdir($currentdir); # changing back into start directory | ||||
1388 | } | ||||
1389 | |||||
1390 | if (( $installer::globals::issolarispkgbuild ) && ( $allvariableshashref->{'COLLECT_PKGMAP'} )) { installer::worker::collectpackagemaps($installdir, $languagestringref, $allvariableshashref); } | ||||
1391 | |||||
1392 | ####################################################### | ||||
1393 | # Analyzing the log file | ||||
1394 | ####################################################### | ||||
1395 | |||||
1396 | my $is_success = 0; | ||||
1397 | my $finalinstalldir = ""; | ||||
1398 | |||||
1399 | installer::worker::clean_output_tree(); # removing directories created in the output tree | ||||
1400 | ($is_success, $finalinstalldir) = installer::worker::analyze_and_save_logfile($loggingdir, $installdir, $installlogdir, $allsettingsarrayref, $languagestringref, $current_install_number); | ||||
1401 | my $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "downloadname"); | ||||
1402 | |||||
1403 | ####################################################### | ||||
1404 | # Creating download installation set | ||||
1405 | ####################################################### | ||||
1406 | |||||
1407 | if ( $installer::globals::makedownload ) | ||||
1408 | { | ||||
1409 | my $create_download = 0; | ||||
1410 | if ( $$downloadname ne "" ) { $create_download = 1; } | ||||
1411 | if ( $installer::globals::iswindowsbuild ) { $create_download = 0; } | ||||
1412 | if (( $is_success ) && ( $create_download ) && ( $ENV{'ENABLE_DOWNLOADSETS'} )) | ||||
1413 | { | ||||
1414 | my $downloaddir = installer::download::create_download_sets($finalinstalldir, $includepatharrayref, $allvariableshashref, $$downloadname, $languagestringref, $languagesarrayref); | ||||
1415 | installer::worker::analyze_and_save_logfile($loggingdir, $downloaddir, $installlogdir, $allsettingsarrayref, $languagestringref, $current_install_number); | ||||
1416 | } | ||||
1417 | } | ||||
1418 | } # end of "if (!( $installer::globals::iswindowsbuild ))" | ||||
1419 | |||||
1420 | ################################################# | ||||
1421 | # Part 2b: The Windows platform | ||||
1422 | ################################################# | ||||
1423 | |||||
1424 | ##################################################################### | ||||
1425 | # ... creating idt files ... | ||||
1426 | # Only for Windows builds ($installer::globals::compiler is wntmsci) | ||||
1427 | ##################################################################### | ||||
1428 | |||||
1429 | 70 | 9.41ms | if ( $installer::globals::iswindowsbuild ) | ||
1430 | { | ||||
1431 | ########################################### | ||||
1432 | # Stripping libraries | ||||
1433 | ########################################### | ||||
1434 | |||||
1435 | # Building for gcc build in cws requires, that all files are stripped before packaging: | ||||
1436 | # 1. copy all files that need to be stripped locally | ||||
1437 | # 2. strip all these files | ||||
1438 | |||||
1439 | 1 | 5µs | if ( $installer::globals::compiler =~ /wntgcci/ ) # spent 5µs making 1 call to installer::CORE:match | ||
1440 | { | ||||
1441 | installer::windows::strip::strip_binaries($filesinproductlanguageresolvedarrayref, $languagestringref); | ||||
1442 | } | ||||
1443 | |||||
1444 | 1 | 548ms | $installdir = installer::worker::create_installation_directory($shipinstalldir, $languagestringref, \$current_install_number); # spent 548ms making 1 call to installer::worker::create_installation_directory | ||
1445 | |||||
1446 | 1 | 367ms | my $idtdirbase = installer::systemactions::create_directories("idt_files", $languagestringref); # spent 367ms making 1 call to installer::systemactions::create_directories | ||
1447 | 1 | 361ms | $installer::globals::infodirectory = installer::systemactions::create_directories("info_files", $languagestringref); # spent 361ms making 1 call to installer::systemactions::create_directories | ||
1448 | 1 | 1.11ms | my $installlogdir = installer::systemactions::create_directory_next_to_directory($installdir, "log"); # spent 1.11ms making 1 call to installer::systemactions::create_directory_next_to_directory | ||
1449 | |||||
1450 | ################################################################################# | ||||
1451 | # Preparing cabinet files from package definitions | ||||
1452 | ################################################################################# | ||||
1453 | |||||
1454 | 1 | 2.70s | installer::packagelist::prepare_cabinet_files($packages, $allvariableshashref); # spent 2.70s making 1 call to installer::packagelist::prepare_cabinet_files | ||
1455 | # printing packages content: | ||||
1456 | 1 | 9.15ms | installer::packagelist::log_cabinet_assignments(); # spent 9.15ms making 1 call to installer::packagelist::log_cabinet_assignments | ||
1457 | |||||
1458 | ################################################################################# | ||||
1459 | # Begin of functions that are used for the creation of idt files (Windows only) | ||||
1460 | ################################################################################# | ||||
1461 | |||||
1462 | 1 | 23µs | installer::logger::print_message( "... creating idt files ...\n" ); # spent 23µs making 1 call to installer::logger::print_message | ||
1463 | |||||
1464 | 1 | 108µs | installer::logger::include_header_into_logfile("Creating idt files:"); # spent 108µs making 1 call to installer::logger::include_header_into_logfile | ||
1465 | |||||
1466 | my $newidtdir = $idtdirbase . $installer::globals::separator . "00"; # new files into language independent directory "00" | ||||
1467 | 1 | 947µs | installer::systemactions::create_directory($newidtdir); # spent 947µs making 1 call to installer::systemactions::create_directory | ||
1468 | |||||
1469 | my @allfilecomponents = (); | ||||
1470 | my @allregistrycomponents = (); | ||||
1471 | |||||
1472 | # Collecting all files with flag "BINARYTABLE" | ||||
1473 | 1 | 161ms | my $binarytablefiles = installer::worker::collect_all_items_with_special_flag($filesinproductlanguageresolvedarrayref ,"BINARYTABLE"); # spent 161ms making 1 call to installer::worker::collect_all_items_with_special_flag | ||
1474 | |||||
1475 | # Removing all files with flag "BINARYTABLE_ONLY" | ||||
1476 | @installer::globals::binarytableonlyfiles = (); | ||||
1477 | 1 | 176ms | $filesinproductlanguageresolvedarrayref = installer::worker::remove_all_items_with_special_flag($filesinproductlanguageresolvedarrayref ,"BINARYTABLE_ONLY"); # spent 176ms making 1 call to installer::worker::remove_all_items_with_special_flag | ||
1478 | |||||
1479 | # Collecting all profileitems with flag "INIFILETABLE" for table "IniFile" | ||||
1480 | 1 | 838µs | my $inifiletableentries = installer::worker::collect_all_items_with_special_flag($profileitemsinproductlanguageresolvedarrayref ,"INIFILETABLE"); # spent 838µs making 1 call to installer::worker::collect_all_items_with_special_flag | ||
1481 | |||||
1482 | # Creating the important dynamic idt files | ||||
1483 | 1 | 43µs | installer::windows::msiglobal::set_msiproductversion($allvariableshashref); # spent 43µs making 1 call to installer::windows::msiglobal::set_msiproductversion | ||
1484 | 1 | 39.7ms | installer::windows::msiglobal::put_msiproductversion_into_bootstrapfile($filesinproductlanguageresolvedarrayref); # spent 39.7ms making 1 call to installer::windows::msiglobal::put_msiproductversion_into_bootstrapfile | ||
1485 | |||||
1486 | # Add cabinet assignments to files | ||||
1487 | 1 | 191ms | installer::windows::file::assign_cab_to_files($filesinproductlanguageresolvedarrayref); # spent 191ms making 1 call to installer::windows::file::assign_cab_to_files | ||
1488 | 1 | 226ms | installer::windows::file::assign_sequencenumbers_to_files($filesinproductlanguageresolvedarrayref); # spent 226ms making 1 call to installer::windows::file::assign_sequencenumbers_to_files | ||
1489 | |||||
1490 | # Collection all available directory trees | ||||
1491 | 1 | 5.87ms | installer::windows::directory::collectdirectorytrees($directoriesforepmarrayref); # spent 5.87ms making 1 call to installer::windows::directory::collectdirectorytrees | ||
1492 | |||||
1493 | # Attention: The table "Director.idt" contains language specific strings -> parameter: $languagesarrayref ! | ||||
1494 | 1 | -4613s | installer::windows::directory::create_directory_table($directoriesforepmarrayref, $languagesarrayref, $newidtdir, $allvariableshashref, $shortdirname, $loggingdir); # spent - 4613s making 1 call to installer::windows::directory::create_directory_table | ||
1495 | |||||
1496 | 1 | 69.5s | $filesinproductlanguageresolvedarrayref = installer::windows::file::create_files_table($filesinproductlanguageresolvedarrayref, $directoriesforepmarrayref, \@allfilecomponents, $newidtdir, $allvariableshashref, $uniquefilename, $allupdatesequences, $allupdatecomponents, $allupdatefileorder); # spent 69.5s making 1 call to installer::windows::file::create_files_table | ||
1497 | if ( $installer::globals::updatedatabase ) { installer::windows::file::check_file_sequences($allupdatefileorder, $allupdatecomponentorder); } | ||||
1498 | |||||
1499 | # Attention: The table "Registry.idt" contains language specific strings -> parameter: $languagesarrayref ! | ||||
1500 | 1 | 114s | installer::windows::registry::create_registry_table($registryitemsinproductlanguageresolvedarrayref, \@allregistrycomponents, $newidtdir, $languagesarrayref, $allvariableshashref); # spent 114s making 1 call to installer::windows::registry::create_registry_table | ||
1501 | |||||
1502 | 1 | -1757s | installer::windows::component::create_component_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, \@allfilecomponents, \@allregistrycomponents, $newidtdir, $componentid, $componentidkeypath, $allvariableshashref); # spent - 1757s making 1 call to installer::windows::component::create_component_table | ||
1503 | |||||
1504 | # Attention: The table "Feature.idt" contains language specific strings -> parameter: $languagesarrayref ! | ||||
1505 | 1 | 165ms | installer::windows::feature::add_uniquekey($modulesinproductlanguageresolvedarrayref); # spent 165ms making 1 call to installer::windows::feature::add_uniquekey | ||
1506 | 1 | -321s | $modulesinproductlanguageresolvedarrayref = installer::windows::feature::sort_feature($modulesinproductlanguageresolvedarrayref); # spent - 321s making 1 call to installer::windows::feature::sort_feature | ||
1507 | 1 | -154s | installer::windows::feature::create_feature_table($modulesinproductlanguageresolvedarrayref, $newidtdir, $languagesarrayref, $allvariableshashref); # spent - 154s making 1 call to installer::windows::feature::create_feature_table | ||
1508 | |||||
1509 | 1 | 26.1s | installer::windows::featurecomponent::create_featurecomponent_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $newidtdir); # spent 26.1s making 1 call to installer::windows::featurecomponent::create_featurecomponent_table | ||
1510 | |||||
1511 | 1 | 159ms | installer::windows::media::create_media_table($filesinproductlanguageresolvedarrayref, $newidtdir, $allvariableshashref, $allupdatelastsequences, $allupdatediskids); # spent 159ms making 1 call to installer::windows::media::create_media_table | ||
1512 | |||||
1513 | 1 | 112ms | installer::windows::font::create_font_table($filesinproductlanguageresolvedarrayref, $newidtdir); # spent 112ms making 1 call to installer::windows::font::create_font_table | ||
1514 | |||||
1515 | # Attention: The table "Shortcut.idt" contains language specific strings -> parameter: $languagesarrayref ! | ||||
1516 | # Attention: Shortcuts (Folderitems) have icon files, that have to be copied into the Icon directory (last parameter) | ||||
1517 | my @iconfilecollector = (); | ||||
1518 | |||||
1519 | 1 | 2.07s | installer::windows::shortcut::create_shortcut_table($filesinproductlanguageresolvedarrayref, $linksinproductlanguageresolvedarrayref, $folderinproductlanguageresolvedarrayref, $folderitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, $newidtdir, $languagesarrayref, $includepatharrayref, \@iconfilecollector); # spent 2.07s making 1 call to installer::windows::shortcut::create_shortcut_table | ||
1520 | |||||
1521 | 1 | 521ms | installer::windows::inifile::create_inifile_table($inifiletableentries, $filesinproductlanguageresolvedarrayref, $newidtdir); # spent 521ms making 1 call to installer::windows::inifile::create_inifile_table | ||
1522 | |||||
1523 | 1 | 774µs | installer::windows::icon::create_icon_table(\@iconfilecollector, $newidtdir); # creating the icon table with all iconfiles used as shortcuts (FolderItems) # spent 774µs making 1 call to installer::windows::icon::create_icon_table | ||
1524 | |||||
1525 | 1 | 163ms | installer::windows::createfolder::create_createfolder_table($directoriesforepmarrayref, $filesinproductlanguageresolvedarrayref, $newidtdir, $allvariableshashref); # spent 163ms making 1 call to installer::windows::createfolder::create_createfolder_table | ||
1526 | |||||
1527 | 1 | 765µs | installer::windows::upgrade::create_upgrade_table($newidtdir, $allvariableshashref); # spent 765µs making 1 call to installer::windows::upgrade::create_upgrade_table | ||
1528 | |||||
1529 | 4 | 29µs | if (( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) # the following tables not for language packs or help packs | ||
1530 | { | ||||
1531 | 1 | 5.10ms | installer::windows::removefile::create_removefile_table($folderitemsinproductlanguageresolvedarrayref, $newidtdir); # spent 5.10ms making 1 call to installer::windows::removefile::create_removefile_table | ||
1532 | |||||
1533 | # Adding Assemblies into the tables MsiAssembly and MsiAssemblyName dynamically | ||||
1534 | 1 | 168ms | installer::windows::assembly::create_msiassembly_table($filesinproductlanguageresolvedarrayref, $newidtdir); # spent 168ms making 1 call to installer::windows::assembly::create_msiassembly_table | ||
1535 | 1 | 1.06ms | installer::windows::assembly::create_msiassemblyname_table($filesinproductlanguageresolvedarrayref, $newidtdir); # spent 1.06ms making 1 call to installer::windows::assembly::create_msiassemblyname_table | ||
1536 | 1 | 1.33s | installer::windows::assembly::add_assembly_condition_into_component_table($filesinproductlanguageresolvedarrayref, $newidtdir); # spent 1.33s making 1 call to installer::windows::assembly::add_assembly_condition_into_component_table | ||
1537 | } | ||||
1538 | |||||
1539 | $infoline = "\n"; | ||||
1540 | push(@installer::globals::logfileinfo, $infoline); | ||||
1541 | |||||
1542 | # Localizing the language dependent idt files | ||||
1543 | # For every language there will be a localized msi database | ||||
1544 | # For multilingual installation sets, the differences of this | ||||
1545 | # databases have to be stored in transforms. | ||||
1546 | |||||
1547 | 4142 | 43.5ms | for ( my $m = 0; $m <= $#{$languagesarrayref}; $m++ ) | ||
1548 | { | ||||
1549 | my $onelanguage = ${$languagesarrayref}[$m]; | ||||
1550 | |||||
1551 | my $is_rtl = 0; | ||||
1552 | my @rtllanguages = ("ar", "fa", "he", "ug", "ky-CN"); | ||||
1553 | if ( grep {$_ eq $onelanguage} @rtllanguages ) { $is_rtl = 1; } | ||||
1554 | |||||
1555 | my $languageidtdir = $idtdirbase . $installer::globals::separator . $onelanguage; | ||||
1556 | 109 | 21.7ms | if ( -d $languageidtdir ) { installer::systemactions::remove_complete_directory($languageidtdir, 1); } # spent 21.7ms making 109 calls to installer::CORE:ftdir, avg 199µs/call | ||
1557 | 109 | 81.8ms | installer::systemactions::create_directory($languageidtdir); # spent 81.8ms making 109 calls to installer::systemactions::create_directory, avg 751µs/call | ||
1558 | |||||
1559 | # Copy the template idt files and the new created idt files into this language directory | ||||
1560 | |||||
1561 | 109 | 2.24ms | installer::logger::print_message( "... copying idt files ...\n" ); # spent 2.24ms making 109 calls to installer::logger::print_message, avg 21µs/call | ||
1562 | |||||
1563 | 109 | 21.7ms | installer::logger::include_header_into_logfile("Copying idt files to $languageidtdir:"); # spent 21.7ms making 109 calls to installer::logger::include_header_into_logfile, avg 199µs/call | ||
1564 | |||||
1565 | 109 | 26.6s | installer::windows::idtglobal::prepare_language_idt_directory($languageidtdir, $newidtdir, $onelanguage, $filesinproductlanguageresolvedarrayref, \@iconfilecollector, $binarytablefiles, $allvariableshashref); # spent 26.6s making 109 calls to installer::windows::idtglobal::prepare_language_idt_directory, avg 244ms/call | ||
1566 | |||||
1567 | # Now all files are copied into a language specific directory | ||||
1568 | # The template idt files can be translated | ||||
1569 | |||||
1570 | 109 | 2.08ms | installer::logger::print_message( "... localizing idt files (language: $onelanguage) ...\n" ); # spent 2.08ms making 109 calls to installer::logger::print_message, avg 19µs/call | ||
1571 | |||||
1572 | 109 | 19.8ms | installer::logger::include_header_into_logfile("Localizing idt files (Language: $onelanguage):"); # spent 19.8ms making 109 calls to installer::logger::include_header_into_logfile, avg 182µs/call | ||
1573 | |||||
1574 | my @translationfiles = (); # all idt files, that need a translation | ||||
1575 | push(@translationfiles, "ActionTe.idt"); | ||||
1576 | push(@translationfiles, "Control.idt"); | ||||
1577 | push(@translationfiles, "CustomAc.idt"); | ||||
1578 | push(@translationfiles, "Error.idt"); | ||||
1579 | push(@translationfiles, "LaunchCo.idt"); | ||||
1580 | push(@translationfiles, "RadioBut.idt"); | ||||
1581 | push(@translationfiles, "Property.idt"); | ||||
1582 | push(@translationfiles, "UIText.idt"); | ||||
1583 | |||||
1584 | my $oneidtfilename; | ||||
1585 | my $oneidtfile; | ||||
1586 | |||||
1587 | foreach $oneidtfilename (@translationfiles) | ||||
1588 | { | ||||
1589 | 8720 | 3.61s | 872 | 22.6ms | my $languagefilename = installer::windows::idtglobal::get_languagefilename($oneidtfilename, $installer::globals::idtlanguagepath); # spent 22.6ms making 872 calls to installer::windows::idtglobal::get_languagefilename, avg 26µs/call |
1590 | 872 | 29.6s | my $languagefile = installer::files::read_file($languagefilename); # spent 29.6s making 872 calls to installer::files::read_file, avg 34.0ms/call | ||
1591 | |||||
1592 | $oneidtfilename = $languageidtdir . $installer::globals::separator . $oneidtfilename; | ||||
1593 | 872 | 635ms | $oneidtfile = installer::files::read_file($oneidtfilename); # spent 635ms making 872 calls to installer::files::read_file, avg 728µs/call | ||
1594 | |||||
1595 | # Now the substitution can start | ||||
1596 | 872 | 4106s | installer::windows::idtglobal::translate_idtfile($oneidtfile, $languagefile, $onelanguage); # spent 4106s making 872 calls to installer::windows::idtglobal::translate_idtfile, avg 4.71s/call | ||
1597 | |||||
1598 | 872 | 641ms | installer::files::save_file($oneidtfilename, $oneidtfile); # spent 641ms making 872 calls to installer::files::save_file, avg 735µs/call | ||
1599 | |||||
1600 | $infoline = "Translated idt file: $oneidtfilename into language $onelanguage\n"; | ||||
1601 | push(@installer::globals::logfileinfo, $infoline); | ||||
1602 | $infoline = "Used languagefile: $languagefilename\n"; | ||||
1603 | push(@installer::globals::logfileinfo, $infoline); | ||||
1604 | } | ||||
1605 | |||||
1606 | # setting the encoding in every table (replacing WINDOWSENCODINGTEMPLATE) | ||||
1607 | |||||
1608 | 109 | 65.0s | installer::windows::idtglobal::setencoding($languageidtdir, $onelanguage); # spent 65.0s making 109 calls to installer::windows::idtglobal::setencoding, avg 597ms/call | ||
1609 | |||||
1610 | # setting bidi attributes, if required | ||||
1611 | |||||
1612 | 4 | 43.9ms | if ( $is_rtl ) { installer::windows::idtglobal::setbidiattributes($languageidtdir, $onelanguage); } # spent 43.9ms making 4 calls to installer::windows::idtglobal::setbidiattributes, avg 11.0ms/call | ||
1613 | |||||
1614 | # setting the encoding in every table (replacing WINDOWSENCODINGTEMPLATE) | ||||
1615 | 109 | 358ms | installer::windows::idtglobal::set_multilanguageonly_condition($languageidtdir); # spent 358ms making 109 calls to installer::windows::idtglobal::set_multilanguageonly_condition, avg 3.28ms/call | ||
1616 | |||||
1617 | # include the license text into the table Control.idt | ||||
1618 | |||||
1619 | if ( ! $allvariableshashref->{'HIDELICENSEDIALOG'} ) | ||||
1620 | { | ||||
1621 | my $licensefilesource = installer::windows::idtglobal::get_rtflicensefilesource($onelanguage, $includepatharrayref_lang); | ||||
1622 | my $licensefile = installer::files::read_file($licensefilesource); | ||||
1623 | installer::scpzipfiles::replace_all_ziplistvariables_in_rtffile($licensefile, $allvariableshashref); | ||||
1624 | my $controltablename = $languageidtdir . $installer::globals::separator . "Control.idt"; | ||||
1625 | my $controltable = installer::files::read_file($controltablename); | ||||
1626 | installer::windows::idtglobal::add_licensefile_to_database($licensefile, $controltable); | ||||
1627 | installer::files::save_file($controltablename, $controltable); | ||||
1628 | |||||
1629 | $infoline = "Added licensefile $licensefilesource into database $controltablename\n"; | ||||
1630 | push(@installer::globals::logfileinfo, $infoline); | ||||
1631 | } | ||||
1632 | |||||
1633 | # include a component into environment table if required | ||||
1634 | |||||
1635 | 109 | 24.1ms | installer::windows::component::set_component_in_environment_table($languageidtdir, $filesinproductlanguageresolvedarrayref); # spent 24.1ms making 109 calls to installer::windows::component::set_component_in_environment_table, avg 221µs/call | ||
1636 | |||||
1637 | # include the ProductCode and the UpgradeCode from codes-file into the Property.idt | ||||
1638 | |||||
1639 | 109 | 166ms | installer::windows::property::set_codes_in_property_table($languageidtdir); # spent 166ms making 109 calls to installer::windows::property::set_codes_in_property_table, avg 1.53ms/call | ||
1640 | |||||
1641 | # the language specific properties can now be set in the Property.idt | ||||
1642 | |||||
1643 | 109 | 423ms | installer::windows::property::update_property_table($languageidtdir, $onelanguage, $allvariableshashref, $languagestringref); # spent 423ms making 109 calls to installer::windows::property::update_property_table, avg 3.88ms/call | ||
1644 | |||||
1645 | # replacing variables in RegLocat.idt | ||||
1646 | |||||
1647 | 109 | 110ms | installer::windows::msiglobal::update_reglocat_table($languageidtdir, $allvariableshashref); # spent 110ms making 109 calls to installer::windows::msiglobal::update_reglocat_table, avg 1.01ms/call | ||
1648 | |||||
1649 | # replacing variables in RemoveRe.idt (RemoveRegistry.idt) | ||||
1650 | |||||
1651 | 109 | 22.0ms | installer::windows::msiglobal::update_removere_table($languageidtdir); # spent 22.0ms making 109 calls to installer::windows::msiglobal::update_removere_table, avg 202µs/call | ||
1652 | |||||
1653 | # adding language specific properties for multilingual installation sets | ||||
1654 | |||||
1655 | 109 | 127ms | installer::windows::property::set_languages_in_property_table($languageidtdir, $languagesarrayref); # spent 127ms making 109 calls to installer::windows::property::set_languages_in_property_table, avg 1.17ms/call | ||
1656 | |||||
1657 | # adding settings into CheckBox.idt | ||||
1658 | 109 | 768µs | installer::windows::property::update_checkbox_table($languageidtdir, $allvariableshashref); # spent 768µs making 109 calls to installer::windows::property::update_checkbox_table, avg 7µs/call | ||
1659 | |||||
1660 | # adding the files from the binary directory into the binary table | ||||
1661 | 109 | 107ms | installer::windows::binary::update_binary_table($languageidtdir, $filesinproductlanguageresolvedarrayref, $binarytablefiles); # spent 107ms making 109 calls to installer::windows::binary::update_binary_table, avg 983µs/call | ||
1662 | |||||
1663 | # Adding Windows Installer CustomActions | ||||
1664 | |||||
1665 | 109 | 132s | installer::windows::idtglobal::addcustomactions($languageidtdir, $windowscustomactionsarrayref, $filesinproductlanguageresolvedarrayref); # spent 132s making 109 calls to installer::windows::idtglobal::addcustomactions, avg 1.21s/call | ||
1666 | |||||
1667 | # Then the language specific msi database can be created | ||||
1668 | |||||
1669 | 1090 | 40.8ms | if ( $installer::globals::iswin || $installer::globals::packageformat eq 'msi' ) | ||
1670 | { | ||||
1671 | 109 | 4.86ms | my $msidatabasename = installer::windows::msiglobal::get_msidatabasename($allvariableshashref, $onelanguage); # spent 4.86ms making 109 calls to installer::windows::msiglobal::get_msidatabasename, avg 45µs/call | ||
1672 | my $msifilename = $languageidtdir . $installer::globals::separator . $msidatabasename; | ||||
1673 | |||||
1674 | 109 | 1.88ms | installer::logger::print_message( "... creating msi database (language $onelanguage) ... \n" ); # spent 1.88ms making 109 calls to installer::logger::print_message, avg 17µs/call | ||
1675 | |||||
1676 | 109 | 25.6s | installer::windows::msiglobal::set_uuid_into_component_table($languageidtdir, $allvariableshashref); # setting new GUID for the components using the tool uuidgen.exe # spent 25.6s making 109 calls to installer::windows::msiglobal::set_uuid_into_component_table, avg 235ms/call | ||
1677 | 109 | 2.12ms | installer::windows::msiglobal::prepare_64bit_database($languageidtdir, $allvariableshashref); # making last 64 bit changes # spent 2.12ms making 109 calls to installer::windows::msiglobal::prepare_64bit_database, avg 19µs/call | ||
1678 | 109 | 230s | installer::windows::msiglobal::create_msi_database($languageidtdir ,$msifilename); # spent 230s making 109 calls to installer::windows::msiglobal::create_msi_database, avg 2.11s/call | ||
1679 | |||||
1680 | # validating the database # ToDo | ||||
1681 | |||||
1682 | 109 | 288ms | my $languagefile = installer::files::read_file($installer::globals::idtlanguagepath . $installer::globals::separator . "SIS.mlf"); # spent 288ms making 109 calls to installer::files::read_file, avg 2.64ms/call | ||
1683 | |||||
1684 | 109 | 103s | installer::windows::msiglobal::write_summary_into_msi_database($msifilename, $onelanguage, $languagefile, $allvariableshashref); # spent 103s making 109 calls to installer::windows::msiglobal::write_summary_into_msi_database, avg 943ms/call | ||
1685 | |||||
1686 | # copy msi database into installation directory | ||||
1687 | |||||
1688 | my $msidestfilename = $installdir . $installer::globals::separator . $msidatabasename; | ||||
1689 | 109 | 1.31s | installer::systemactions::copy_one_file($msifilename, $msidestfilename); # spent 1.31s making 109 calls to installer::systemactions::copy_one_file, avg 12.0ms/call | ||
1690 | } | ||||
1691 | } | ||||
1692 | |||||
1693 | # Creating transforms, if the installation set has more than one language | ||||
1694 | # renaming the msi database | ||||
1695 | |||||
1696 | 1 | 12µs | my $defaultlanguage = installer::languages::get_default_language($languagesarrayref); # spent 12µs making 1 call to installer::languages::get_default_language | ||
1697 | |||||
1698 | 9 | 428µs | if ( $installer::globals::iswin || $installer::globals::packageformat eq 'msi' ) | ||
1699 | { | ||||
1700 | 1 | 158s | if ( $#{$languagesarrayref} > 0 ) # spent 158s making 1 call to installer::windows::msiglobal::create_transforms | ||
1701 | { | ||||
1702 | installer::windows::msiglobal::create_transforms($languagesarrayref, $defaultlanguage, $installdir, $allvariableshashref); | ||||
1703 | } | ||||
1704 | # if there are Merge Modules, they have to be integrated now | ||||
1705 | 1 | 66µs | my $mergedbname = installer::windows::msiglobal::get_msidatabasename($allvariableshashref, $defaultlanguage); # spent 66µs making 1 call to installer::windows::msiglobal::get_msidatabasename | ||
1706 | my $mergeidtdir = $idtdirbase . $installer::globals::separator . "mergemodules"; | ||||
1707 | 1 | 336µs | if ( -d $mergeidtdir ) { installer::systemactions::remove_complete_directory($mergeidtdir, 1); } # spent 336µs making 1 call to installer::CORE:ftdir | ||
1708 | 1 | 926µs | installer::systemactions::create_directory($mergeidtdir); # spent 926µs making 1 call to installer::systemactions::create_directory | ||
1709 | 1 | 22.0ms | installer::systemactions::copy_one_file($installdir . $installer::globals::separator . $mergedbname, $mergeidtdir . $installer::globals::separator . $mergedbname); # spent 22.0ms making 1 call to installer::systemactions::copy_one_file | ||
1710 | 1 | 101s | $filesinproductlanguageresolvedarrayref = installer::windows::mergemodule::merge_mergemodules_into_msi_database($mergemodulesarrayref, $filesinproductlanguageresolvedarrayref, $mergeidtdir . $installer::globals::separator . $mergedbname, $languagestringref, $allvariableshashref, $includepatharrayref, $allupdatesequences, $allupdatelastsequences, $allupdatediskids); # spent 101s making 1 call to installer::windows::mergemodule::merge_mergemodules_into_msi_database | ||
1711 | 1 | 24.2ms | installer::systemactions::copy_one_file($mergeidtdir . $installer::globals::separator . $mergedbname, $installdir . $installer::globals::separator . $mergedbname); # spent 24.2ms making 1 call to installer::systemactions::copy_one_file | ||
1712 | |||||
1713 | 1 | 71.8ms | installer::windows::msiglobal::rename_msi_database_in_installset($defaultlanguage, $installdir, $allvariableshashref); # spent 71.8ms making 1 call to installer::windows::msiglobal::rename_msi_database_in_installset | ||
1714 | } | ||||
1715 | |||||
1716 | # Analyzing the ScpActions and copying the files into the installation set | ||||
1717 | |||||
1718 | 1 | 26µs | installer::logger::print_message( "... copying files into installation set ...\n" ); # spent 26µs making 1 call to installer::logger::print_message | ||
1719 | |||||
1720 | 1 | 340µs | installer::worker::put_scpactions_into_installset($installdir); # spent 340µs making 1 call to installer::worker::put_scpactions_into_installset | ||
1721 | |||||
1722 | # ... copying MergeModules into installation set | ||||
1723 | |||||
1724 | if ( ! $installer::globals::fix_number_of_cab_files ) { installer::windows::msiglobal::copy_merge_modules_into_installset($installdir); } | ||||
1725 | |||||
1726 | 1 | 10µs | installer::logger::print_message( "... creating ddf files ...\n" ); # spent 10µs making 1 call to installer::logger::print_message | ||
1727 | |||||
1728 | # Creating all needed ddf files and generating a list | ||||
1729 | # for the package process containing all system calls | ||||
1730 | |||||
1731 | 1 | 502ms | my $ddfdir = installer::systemactions::create_directories("ddf", $languagestringref); # spent 502ms making 1 call to installer::systemactions::create_directories | ||
1732 | |||||
1733 | 1 | 4.15s | my $packjobref = installer::windows::msiglobal::generate_cab_file_list($filesinproductlanguageresolvedarrayref, $installdir, $ddfdir, $allvariableshashref); # spent 4.15s making 1 call to installer::windows::msiglobal::generate_cab_file_list | ||
1734 | |||||
1735 | # Update and patch reasons the pack order needs to be saved | ||||
1736 | 1 | 712ms | installer::windows::msiglobal::save_packorder(); # spent 712ms making 1 call to installer::windows::msiglobal::save_packorder | ||
1737 | |||||
1738 | $infoline = "\n"; | ||||
1739 | push(@installer::globals::logfileinfo, $infoline); | ||||
1740 | |||||
1741 | #################################### | ||||
1742 | # Writing log file | ||||
1743 | # before cab files are packed | ||||
1744 | #################################### | ||||
1745 | |||||
1746 | 1 | 24µs | installer::logger::print_message( "... creating log file $installer::globals::logfilename \n" ); # spent 24µs making 1 call to installer::logger::print_message | ||
1747 | |||||
1748 | 1 | 37.8ms | installer::files::save_file($loggingdir . $installer::globals::logfilename, \@installer::globals::logfileinfo); # spent 37.8ms making 1 call to installer::files::save_file | ||
1749 | |||||
1750 | ####################################################### | ||||
1751 | # Finally really create the installation packages, | ||||
1752 | # Only for Windows and only on a windows platform. | ||||
1753 | ####################################################### | ||||
1754 | |||||
1755 | 5 | 49µs | if ( $installer::globals::iswin || $installer::globals::packageformat eq 'msi' ) | ||
1756 | { | ||||
1757 | 1 | 26µs | installer::logger::print_message( "... packaging installation set ... \n" ); # spent 26µs making 1 call to installer::logger::print_message | ||
1758 | 1 | 73.7s | installer::windows::msiglobal::execute_packaging($packjobref, $loggingdir, $allvariableshashref); # spent 73.7s making 1 call to installer::windows::msiglobal::execute_packaging | ||
1759 | 1 | 4.97s | if ( $installer::globals::include_cab_in_msi ) { installer::windows::msiglobal::include_cabs_into_msi($installdir); } # spent 4.97s making 1 call to installer::windows::msiglobal::include_cabs_into_msi | ||
1760 | |||||
1761 | #################################### | ||||
1762 | # Writing log file | ||||
1763 | # after cab files are packed | ||||
1764 | #################################### | ||||
1765 | |||||
1766 | 1 | 30µs | installer::logger::print_message( "\n... creating log file $installer::globals::logfilename \n" ); # spent 30µs making 1 call to installer::logger::print_message | ||
1767 | 1 | 41.5ms | installer::files::save_file($loggingdir . $installer::globals::logfilename, \@installer::globals::logfileinfo); # spent 41.5ms making 1 call to installer::files::save_file | ||
1768 | } | ||||
1769 | |||||
1770 | ####################################################### | ||||
1771 | # Analyzing the log file | ||||
1772 | ####################################################### | ||||
1773 | |||||
1774 | my $is_success = 0; | ||||
1775 | my $finalinstalldir = ""; | ||||
1776 | 1 | 7.38s | installer::worker::clean_output_tree(); # removing directories created in the output tree # spent 7.38s making 1 call to installer::worker::clean_output_tree | ||
1777 | 1 | 2.56s | ($is_success, $finalinstalldir) = installer::worker::analyze_and_save_logfile($loggingdir, $installdir, $installlogdir, $allsettingsarrayref, $languagestringref, $current_install_number); # spent 2.56s making 1 call to installer::worker::analyze_and_save_logfile | ||
1778 | |||||
1779 | ####################################################### | ||||
1780 | # Creating Windows msp patches | ||||
1781 | ####################################################### | ||||
1782 | |||||
1783 | if (( $is_success ) && ( $installer::globals::updatedatabase ) && ( $allvariableshashref->{'CREATE_MSP_INSTALLSET'} )) | ||||
1784 | { | ||||
1785 | # Required: | ||||
1786 | # Temp path for administrative installations: $installer::globals::temppath | ||||
1787 | # Path of new installation set: $finalinstalldir | ||||
1788 | # Path of old installation set: $installer::globals::updatedatabasepath | ||||
1789 | my $mspdir = installer::windows::msp::create_msp_patch($finalinstalldir, $includepatharrayref, $allvariableshashref, $languagestringref, $languagesarrayref, $filesinproductlanguageresolvedarrayref); | ||||
1790 | ($is_success, $finalinstalldir) = installer::worker::analyze_and_save_logfile($loggingdir, $mspdir, $installlogdir, $allsettingsarrayref, $languagestringref, $current_install_number); | ||||
1791 | installer::worker::clean_output_tree(); # removing directories created in the output tree | ||||
1792 | } | ||||
1793 | |||||
1794 | ####################################################### | ||||
1795 | # Creating download installation set | ||||
1796 | ####################################################### | ||||
1797 | |||||
1798 | my $create_download = 0; | ||||
1799 | 1 | 143µs | my $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "downloadname"); # spent 143µs making 1 call to installer::ziplist::getinfofromziplist | ||
1800 | if ( $installer::globals::languagepack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "langpackdownloadname"); } | ||||
1801 | if ( $installer::globals::helppack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "helppackdownloadname"); } | ||||
1802 | if ( $installer::globals::patch ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "patchdownloadname"); } | ||||
1803 | |||||
1804 | if ( $$downloadname ne "" ) { $create_download = 1; } | ||||
1805 | 3 | 15µs | if ( $installer::globals::iswindowsbuild ) | ||
1806 | { | ||||
1807 | $create_download = 0; | ||||
1808 | 1 | 7µs | 1 | 179µs | if ( $allvariableshashref->{'OOODOWNLOADNAME'} ) { $$downloadname = installer::download::set_download_filename($languagestringref, $allvariableshashref); } # spent 179µs making 1 call to installer::download::set_download_filename |
1809 | else { $$downloadname = installer::download::resolve_variables_in_downloadname($allvariableshashref, $$downloadname, $languagestringref); } | ||||
1810 | 1 | 8.26ms | installer::systemactions::rename_one_file( $finalinstalldir . $installer::globals::separator . $installer::globals::shortmsidatabasename, $finalinstalldir . $installer::globals::separator . $$downloadname . ".msi" ); # spent 8.26ms making 1 call to installer::systemactions::rename_one_file | ||
1811 | |||||
1812 | } | ||||
1813 | if (( $is_success ) && ( $create_download ) && ( $ENV{'ENABLE_DOWNLOADSETS'} )) | ||||
1814 | { | ||||
1815 | my $downloaddir = installer::download::create_download_sets($finalinstalldir, $includepatharrayref, $allvariableshashref, $$downloadname, $languagestringref, $languagesarrayref); | ||||
1816 | installer::worker::analyze_and_save_logfile($loggingdir, $downloaddir, $installlogdir, $allsettingsarrayref, $languagestringref, $current_install_number); | ||||
1817 | } | ||||
1818 | |||||
1819 | } # end of "if ( $installer::globals::iswindowsbuild )" | ||||
1820 | |||||
1821 | # saving file_info file for later analysis | ||||
1822 | my $speciallogfilename = $loggingdir . "fileinfo_" . $installer::globals::product . "\.log"; | ||||
1823 | 1 | 881µs | open my $log_fh, '>', $speciallogfilename # spent 881µs making 1 call to installer::CORE:open | ||
1824 | or die "Could not open $speciallogfilename for writing: $!"; | ||||
1825 | 2 | 2.82s | print $log_fh Dumper($filesinproductlanguageresolvedarrayref); # spent 2.76s making 1 call to Data::Dumper::Dumper
# spent 60.3ms making 1 call to installer::CORE:print | ||
1826 | |||||
1827 | } # end of iteration for one language group | ||||
1828 | } | ||||
1829 | |||||
1830 | 1 | 14µs | 1; | ||
# spent 288ms within installer::CORE:backtick which was called:
# once (288ms+0s) by installer::run at line 543 | |||||
sub installer::CORE:ftdir; # opcode | |||||
sub installer::CORE:match; # opcode | |||||
sub installer::CORE:open; # opcode | |||||
sub installer::CORE:print; # opcode | |||||
# spent 14µs within installer::CORE:subst which was called:
# once (14µs+0s) by installer::run at line 556 |