← Index
NYTProf Performance Profile   « block view • line view • sub view »
For C:/lo/libo-master/solenv/bin/make_installer.pl
  Run on Mon Sep 24 00:52:54 2012
Reported on Mon Sep 24 07:34:40 2012

Filename/cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer/download.pm
StatementsExecuted 72 statements in 9.99ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1112.83ms2.85msinstaller::download::::BEGIN@42installer::download::BEGIN@42
111352µs359µsinstaller::download::::BEGIN@30installer::download::BEGIN@30
11189µs179µsinstaller::download::::set_download_filenameinstaller::download::set_download_filename
11130µs67µsinstaller::download::::BEGIN@37installer::download::BEGIN@37
11121µs24µsinstaller::download::::BEGIN@33installer::download::BEGIN@33
11118µs21µsinstaller::download::::BEGIN@40installer::download::BEGIN@40
11117µs20µsinstaller::download::::get_download_architectureinstaller::download::get_download_architecture
11117µs20µsinstaller::download::::BEGIN@39installer::download::BEGIN@39
11116µs16µsinstaller::download::::get_downloadname_productnameinstaller::download::get_downloadname_productname
11116µs19µsinstaller::download::::BEGIN@38installer::download::BEGIN@38
11116µs34µsinstaller::download::::BEGIN@31installer::download::BEGIN@31
11115µs18µsinstaller::download::::BEGIN@34installer::download::BEGIN@34
42115µs15µsinstaller::download::::CORE:matchinstaller::download::CORE:match (opcode)
11113µs16µsinstaller::download::::BEGIN@36installer::download::BEGIN@36
11113µs13µsinstaller::download::::get_install_typeinstaller::download::get_install_type
11113µs16µsinstaller::download::::BEGIN@35installer::download::BEGIN@35
22113µs13µsinstaller::download::::CORE:substinstaller::download::CORE:subst (opcode)
11111µs11µsinstaller::download::::get_downloadname_languageinstaller::download::get_downloadname_language
11110µs10µsinstaller::download::::get_download_versioninstaller::download::get_download_version
1117µs7µsinstaller::download::::get_download_platformnameinstaller::download::get_download_platformname
0000s0sinstaller::download::::call_suminstaller::download::call_sum
0000s0sinstaller::download::::create_download_setsinstaller::download::create_download_sets
0000s0sinstaller::download::::create_tar_gz_file_from_directoryinstaller::download::create_tar_gz_file_from_directory
0000s0sinstaller::download::::determine_scriptfile_nameinstaller::download::determine_scriptfile_name
0000s0sinstaller::download::::get_language_block_from_language_fileinstaller::download::get_language_block_from_language_file
0000s0sinstaller::download::::get_language_string_from_language_blockinstaller::download::get_language_string_from_language_block
0000s0sinstaller::download::::get_path_for_libraryinstaller::download::get_path_for_library
0000s0sinstaller::download::::include_tar_into_scriptinstaller::download::include_tar_into_script
0000s0sinstaller::download::::put_checksum_and_size_into_scriptinstaller::download::put_checksum_and_size_into_script
0000s0sinstaller::download::::put_linenumber_into_scriptinstaller::download::put_linenumber_into_script
0000s0sinstaller::download::::put_productname_into_scriptinstaller::download::put_productname_into_script
0000s0sinstaller::download::::resolve_variables_in_downloadnameinstaller::download::resolve_variables_in_downloadname
0000s0sinstaller::download::::save_script_fileinstaller::download::save_script_file
0000s0sinstaller::download::::tar_packageinstaller::download::tar_package
Call graph for these subroutines as a Graphviz dot language file.
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
28package installer::download;
29
30267µs2366µs
# spent 359µs (352+7) within installer::download::BEGIN@30 which was called: # once (352µs+7µs) by installer::BEGIN@39 at line 30
use strict;
# spent 359µs making 1 call to installer::download::BEGIN@30 # spent 7µs making 1 call to strict::import
31258µs251µs
# spent 34µs (16+18) within installer::download::BEGIN@31 which was called: # once (16µs+18µs) by installer::BEGIN@39 at line 31
use warnings;
# spent 34µs making 1 call to installer::download::BEGIN@31 # spent 18µs making 1 call to warnings::import
32
33267µs227µs
# spent 24µs (21+3) within installer::download::BEGIN@33 which was called: # once (21µs+3µs) by installer::BEGIN@39 at line 33
use File::Spec;
# spent 24µs making 1 call to installer::download::BEGIN@33 # spent 3µs making 1 call to UNIVERSAL::import
34253µs220µs
# spent 18µs (15+3) within installer::download::BEGIN@34 which was called: # once (15µs+3µs) by installer::BEGIN@39 at line 34
use installer::exiter;
# spent 18µs making 1 call to installer::download::BEGIN@34 # spent 3µs making 1 call to UNIVERSAL::import
35251µs218µs
# spent 16µs (13+3) within installer::download::BEGIN@35 which was called: # once (13µs+3µs) by installer::BEGIN@39 at line 35
use installer::files;
# spent 16µs making 1 call to installer::download::BEGIN@35 # spent 2µs making 1 call to UNIVERSAL::import
36251µs218µs
# spent 16µs (13+2) within installer::download::BEGIN@36 which was called: # once (13µs+2µs) by installer::BEGIN@39 at line 36
use installer::globals;
# spent 16µs making 1 call to installer::download::BEGIN@36 # spent 2µs making 1 call to UNIVERSAL::import
37256µs2105µs
# spent 67µs (30+38) within installer::download::BEGIN@37 which was called: # once (30µs+38µs) by installer::BEGIN@39 at line 37
use installer::logger;
# spent 67µs making 1 call to installer::download::BEGIN@37 # spent 38µs making 1 call to Exporter::import
38258µs221µs
# spent 19µs (16+2) within installer::download::BEGIN@38 which was called: # once (16µs+2µs) by installer::BEGIN@39 at line 38
use installer::pathanalyzer;
# spent 19µs making 1 call to installer::download::BEGIN@38 # spent 2µs making 1 call to UNIVERSAL::import
39255µs223µs
# spent 20µs (17+3) within installer::download::BEGIN@39 which was called: # once (17µs+3µs) by installer::BEGIN@39 at line 39
use installer::remover;
# spent 20µs making 1 call to installer::download::BEGIN@39 # spent 3µs making 1 call to UNIVERSAL::import
402122µs223µs
# spent 21µs (18+3) within installer::download::BEGIN@40 which was called: # once (18µs+3µs) by installer::BEGIN@39 at line 40
use installer::systemactions;
# spent 21µs making 1 call to installer::download::BEGIN@40 # spent 3µs making 1 call to UNIVERSAL::import
41
42
# spent 2.85ms (2.83+20µs) within installer::download::BEGIN@42 which was called: # once (2.83ms+20µs) by installer::BEGIN@39 at line 47
BEGIN { # This is needed so that cygwin's perl evaluates ACLs
43 # (needed for correctly evaluating the -x test.)
4432.82ms112µs if( $^O =~ /cygwin/i ) {
# spent 12µs making 1 call to installer::download::CORE:match
4518µs require filetest; import filetest "access";
# spent 8µs making 1 call to filetest::import
46 }
4716.35ms12.85ms}
# spent 2.85ms making 1 call to installer::download::BEGIN@42
48
49##################################################################
50# Including the lowercase product name into the script template
51##################################################################
52
53sub put_productname_into_script
54{
55 my ($scriptfile, $variableshashref) = @_;
56
57 my $productname = $variableshashref->{'PRODUCTNAME'};
58 $productname = lc($productname);
59 $productname =~ s/\.//g; # openoffice.org -> openofficeorg
60 $productname =~ s/\s*//g;
61
62 my $infoline = "Adding productname $productname into download shell script\n";
63 push( @installer::globals::logfileinfo, $infoline);
64
65 for ( my $i = 0; $i <= $#{$scriptfile}; $i++ )
66 {
67 ${$scriptfile}[$i] =~ s/PRODUCTNAMEPLACEHOLDER/$productname/;
68 }
69}
70
71#########################################################
72# Including the linenumber into the script template
73#########################################################
74
75sub put_linenumber_into_script
76{
77 my ( $scriptfile ) = @_;
78
79 my $linenumber = $#{$scriptfile} + 2;
80
81 my $infoline = "Adding linenumber $linenumber into download shell script\n";
82 push( @installer::globals::logfileinfo, $infoline);
83
84 for ( my $i = 0; $i <= $#{$scriptfile}; $i++ )
85 {
86 ${$scriptfile}[$i] =~ s/LINENUMBERPLACEHOLDER/$linenumber/;
87 }
88}
89
90#########################################################
91# Determining the name of the new scriptfile
92#########################################################
93
94sub determine_scriptfile_name
95{
96 my ( $filename ) = @_;
97
98 $installer::globals::downloadfileextension = ".sh";
99 $filename = $filename . $installer::globals::downloadfileextension;
100 $installer::globals::downloadfilename = $filename;
101
102 my $infoline = "Setting download shell script file name to $filename\n";
103 push( @installer::globals::logfileinfo, $infoline);
104
105 return $filename;
106}
107
108#########################################################
109# Saving the script file in the installation directory
110#########################################################
111
112sub save_script_file
113{
114 my ($directory, $newscriptfilename, $scriptfile) = @_;
115
116 $newscriptfilename = $directory . $installer::globals::separator . $newscriptfilename;
117 installer::files::save_file($newscriptfilename, $scriptfile);
118
119 my $infoline = "Saving script file $newscriptfilename\n";
120 push( @installer::globals::logfileinfo, $infoline);
121
122 if ( ! $installer::globals::iswindowsbuild )
123 {
124 chmod 0775, $newscriptfilename;
125 }
126
127 return $newscriptfilename;
128}
129
130#########################################################
131# Including checksum and size into script file
132#########################################################
133
134sub put_checksum_and_size_into_script
135{
136 my ($scriptfile, $sumout) = @_;
137
138 my $checksum = "";
139 my $size = "";
140
141 if ( $sumout =~ /^\s*(\d+)\s+(\d+)\s*$/ )
142 {
143 $checksum = $1;
144 $size = $2;
145 }
146 else
147 {
148 installer::exiter::exit_program("ERROR: Incorrect return value from /usr/bin/sum: $sumout", "put_checksum_and_size_into_script");
149 }
150
151 my $infoline = "Adding checksum $checksum and size $size into download shell script\n";
152 push( @installer::globals::logfileinfo, $infoline);
153
154 for ( my $i = 0; $i <= $#{$scriptfile}; $i++ )
155 {
156 ${$scriptfile}[$i] =~ s/CHECKSUMPLACEHOLDER/$checksum/;
157 ${$scriptfile}[$i] =~ s/DISCSPACEPLACEHOLDER/$size/;
158 }
159
160}
161
162#########################################################
163# Determining checksum and size of tar file
164#########################################################
165
166sub call_sum
167{
168 my ($filename, $getuidlibrary) = @_;
169
170 my $systemcall = "/usr/bin/sum $filename |";
171
172 my $sumoutput = "";
173
174 open (SUM, "$systemcall");
175 $sumoutput = <SUM>;
176 close (SUM);
177
178 my $returnvalue = $?; # $? contains the return value of the systemcall
179
180 my $infoline = "Systemcall: $systemcall\n";
181 push( @installer::globals::logfileinfo, $infoline);
182
183 if ($returnvalue)
184 {
185 $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
186 push( @installer::globals::logfileinfo, $infoline);
187 }
188 else
189 {
190 $infoline = "Success: Executed \"$systemcall\" successfully!\n";
191 push( @installer::globals::logfileinfo, $infoline);
192 }
193
194 $sumoutput =~ s/\s+$filename\s$//;
195 return $sumoutput;
196}
197
198#########################################################
199# Searching for the getuid.so in the solver
200#########################################################
201
202sub get_path_for_library
203{
204 my ($includepatharrayref) = @_;
205
206 my $getuidlibraryname = "getuid.so";
207
208 my $getuidlibraryref = "";
209
210 if ( $installer::globals::include_paths_read )
211 {
212 $getuidlibraryref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$getuidlibraryname, $includepatharrayref, 0);
213 }
214 else
215 {
216 $getuidlibraryref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$getuidlibraryname, $includepatharrayref, 0);
217 }
218
219 if ($$getuidlibraryref eq "") { installer::exiter::exit_program("ERROR: Could not find $getuidlibraryname!", "get_path_for_library"); }
220
221 return $$getuidlibraryref;
222}
223
224#########################################################
225# Include the tar file into the script
226#########################################################
227
228sub include_tar_into_script
229{
230 my ($scriptfile, $temporary_tarfile) = @_;
231
232 my $systemcall = "cat $temporary_tarfile >> $scriptfile && rm $temporary_tarfile";
233 my $returnvalue = system($systemcall);
234
235 my $infoline = "Systemcall: $systemcall\n";
236 push( @installer::globals::logfileinfo, $infoline);
237
238 if ($returnvalue)
239 {
240 $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
241 push( @installer::globals::logfileinfo, $infoline);
242 }
243 else
244 {
245 $infoline = "Success: Executed \"$systemcall\" successfully!\n";
246 push( @installer::globals::logfileinfo, $infoline);
247 }
248 return $returnvalue;
249}
250
251#########################################################
252# Create a tar file from the binary package
253#########################################################
254
255sub tar_package
256{
257 my ( $installdir, $tarfilename, $getuidlibrary) = @_;
258
259 my $ldpreloadstring = "";
260 if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
261
262 my $systemcall = "cd $installdir; $ldpreloadstring tar -cf - * > $tarfilename";
263
264 my $returnvalue = system($systemcall);
265
266 my $infoline = "Systemcall: $systemcall\n";
267 push( @installer::globals::logfileinfo, $infoline);
268
269 if ($returnvalue)
270 {
271 $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
272 push( @installer::globals::logfileinfo, $infoline);
273 }
274 else
275 {
276 $infoline = "Success: Executed \"$systemcall\" successfully!\n";
277 push( @installer::globals::logfileinfo, $infoline);
278 }
279
280 chmod 0775, $tarfilename;
281
282 return ( -s $tarfilename );
283}
284
285#########################################################
286# Setting installation languages
287#########################################################
288
289sub get_downloadname_language
290
# spent 11µs within installer::download::get_downloadname_language which was called: # once (11µs+0s) by installer::download::set_download_filename at line 528
{
291515µs my ($languagestringref) = @_;
292
293 my $languages = $$languagestringref;
294
295 if ( $installer::globals::added_english )
296 {
297 $languages =~ s/en-US_//;
298 $languages =~ s/_en-US//;
299 }
300
301 if ( length ($languages) > $installer::globals::max_lang_length )
302 {
303 $languages = 'multi';
304 }
305
306 return $languages;
307}
308
309#########################################################
310# Setting download name
311#########################################################
312
313sub get_downloadname_productname
314
# spent 16µs within installer::download::get_downloadname_productname which was called: # once (16µs+0s) by installer::download::set_download_filename at line 523
{
3151122µs my ($allvariables) = @_;
316
317 my $start = "LibO";
318
319 if ( $allvariables->{'PRODUCTNAME'} eq "LibreOffice" ) { $start = "LibO"; }
320
321 if ( $allvariables->{'PRODUCTNAME'} eq "LOdev" ) { $start = "LibO-Dev"; }
322
323 if (( $allvariables->{'PRODUCTNAME'} eq "LibreOffice" ) && ( $allvariables->{'POSTVERSIONEXTENSION'} eq "SDK" )) { $start = "LibO-SDK"; }
324
325 if (( $allvariables->{'PRODUCTNAME'} eq "LOdev" ) && ( $allvariables->{'POSTVERSIONEXTENSION'} eq "SDK" )) { $start = "LibO-Dev-SDK"; }
326
327 if (( $allvariables->{'PRODUCTNAME'} eq "LibreOffice" ) && ( $allvariables->{'POSTVERSIONEXTENSION'} eq "TEST" )) { $start = "LibO-Test"; }
328
329 if (( $allvariables->{'PRODUCTNAME'} eq "LOdev" ) && ( $allvariables->{'POSTVERSIONEXTENSION'} eq "TEST" )) { $start = "LibO-Dev-Test"; }
330
331 if ( $allvariables->{'PRODUCTNAME'} eq "URE" ) { $start = "LibO-URE"; }
332
333 if ( $allvariables->{'PRODUCTNAME'} eq "OxygenOffice" ) { $start = "OOOP"; }
334
- -
337 return $start;
338}
339
340#########################################################
341# Setting download version
342#########################################################
343
344sub get_download_version
345
# spent 10µs within installer::download::get_download_version which was called: # once (10µs+0s) by installer::download::set_download_filename at line 524
{
346514µs my ($allvariables) = @_;
347
348 my $version = "";
349
350 $version = $allvariables->{'PRODUCTVERSION'};
351 if (( $allvariables->{'SHORT_PRODUCTEXTENSION'} ) && ( $allvariables->{'SHORT_PRODUCTEXTENSION'} ne "" )) { $version = $version . $allvariables->{'SHORT_PRODUCTEXTENSION'}; }
352
353 return $version;
354}
355
356#################################################################
357# Setting the platform name for download
358#################################################################
359
360sub get_download_platformname
361
# spent 7µs within installer::download::get_download_platformname which was called: # once (7µs+0s) by installer::download::set_download_filename at line 525
{
362312µs my $platformname = "";
363
364 if ( $installer::globals::islinuxbuild )
365 {
366 $platformname = "Linux";
367 }
368 elsif ( $installer::globals::issolarisbuild )
369 {
370 $platformname = "Solaris";
371 }
372 elsif ( $installer::globals::iswindowsbuild )
373 {
374 $platformname = "Win";
375 }
376 elsif ( $installer::globals::isfreebsdbuild )
377 {
378 $platformname = "FreeBSD";
379 }
380 elsif ( $installer::globals::ismacbuild )
381 {
382 $platformname = "MacOS";
383 }
384 else
385 {
386 $platformname = $installer::globals::compiler;
387 }
388
389 return $platformname;
390}
391
392#########################################################
393# Setting the architecture for the download name
394#########################################################
395
396sub get_download_architecture
397
# spent 20µs (17+3) within installer::download::get_download_architecture which was called: # once (17µs+3µs) by installer::download::set_download_filename at line 526
{
398326µs my $arch = "";
399
40033µs if ( $installer::globals::compiler =~ /unxlngi/ )
# spent 3µs making 3 calls to installer::download::CORE:match, avg 1µs/call
401 {
402 $arch = "x86";
403 }
404 elsif ( $installer::globals::compiler =~ /unxlngppc/ )
405 {
406 $arch = "PPC";
407 }
408 elsif ( $installer::globals::compiler =~ /unxlngx/ )
409 {
410 $arch = "x86-64";
411 }
412 elsif ( $installer::globals::issolarissparcbuild )
413 {
414 $arch = "Sparc";
415 }
416 elsif ( $installer::globals::issolarisx86build )
417 {
418 $arch = "x86";
419 }
420 elsif ( $installer::globals::iswindowsbuild )
421 {
422 $arch = "x86";
423 }
424 elsif ( $installer::globals::compiler =~ /^unxmacxi/ )
425 {
426 $arch = "x86";
427 }
428 elsif ( $installer::globals::compiler =~ /^unxmacxp/ )
429 {
430 $arch = "PPC";
431 }
432
433 return $arch;
434}
435
436#########################################################
437# Setting the installation type for the download name
438#########################################################
439
440sub get_install_type
441
# spent 13µs within installer::download::get_install_type which was called: # once (13µs+0s) by installer::download::set_download_filename at line 527
{
442413µs my ($allvariables) = @_;
443
444 my $type = "";
445
44655µs if ( $installer::globals::languagepack )
447 {
448 $type = "langpack";
449
450 if ( $installer::globals::isrpmbuild )
451 {
452 $type = $type . "-rpm";
453 }
454
455 if ( $installer::globals::isdebbuild )
456 {
457 $type = $type . "-deb";
458 }
459
460 if ( $installer::globals::packageformat eq "archive" )
461 {
462 $type = $type . "-arc";
463 }
464 }
465 elsif ( $installer::globals::helppack )
466 {
467 $type = "helppack";
468
469 if ( $installer::globals::isrpmbuild )
470 {
471 $type = $type . "-rpm";
472 }
473
474 if ( $installer::globals::isdebbuild )
475 {
476 $type = $type . "-deb";
477 }
478
479 if ( $installer::globals::packageformat eq "archive" )
480 {
481 $type = $type . "-arc";
482 }
483 }
484 else
485 {
486 $type = "install";
487
488 if ( $installer::globals::isrpmbuild )
489 {
490 $type = $type . "-rpm";
491 }
492
493 if ( $installer::globals::isdebbuild )
494 {
495 $type = $type . "-deb";
496 }
497
498 if ( $installer::globals::packageformat eq "archive" )
499 {
500 $type = $type . "-arc";
501 }
502
503 if (( $allvariables->{'WITHJREPRODUCT'} ) && ( $allvariables->{'WITHJREPRODUCT'} == 1 ))
504 {
505 $type = $type . "-wJRE";
506 }
507
508 }
509
510 return $type;
511}
512
513###############################################################################################
514# Setting the download file name
515# Syntax:
516# (PRODUCTNAME)_(VERSION)_(OS)_(ARCH)_(INSTALLTYPE)_(LANGUAGE).(FILEEXTENSION)
517###############################################################################################
518
519sub set_download_filename
520
# spent 179µs (89+90) within installer::download::set_download_filename which was called: # once (89µs+90µs) by installer::run at line 1808 of /cygdrive/c/lo/libo-master/instsetoo_native/util/C:/lo/libo-master/solenv/bin/modules/installer.pm
{
5211277µs my ($languagestringref, $allvariables) = @_;
522
523116µs my $start = get_downloadname_productname($allvariables);
524110µs my $versionstring = get_download_version($allvariables);
# spent 10µs making 1 call to installer::download::get_download_version
52517µs my $platform = get_download_platformname();
# spent 7µs making 1 call to installer::download::get_download_platformname
526120µs my $architecture = get_download_architecture();
# spent 20µs making 1 call to installer::download::get_download_architecture
527113µs my $type = get_install_type($allvariables);
# spent 13µs making 1 call to installer::download::get_install_type
528111µs my $language = get_downloadname_language($languagestringref);
# spent 11µs making 1 call to installer::download::get_downloadname_language
529
530 # Setting the extension happens automatically
531
532 my $filename = $start . "_" . $versionstring . "_" . "_" . $platform . "_" . $architecture . "_" . $type . "_" . $language;
533
53419µs $filename =~ s/\_\_/\_/g; # necessary, if $versionstring or $platform or $language are empty
# spent 9µs making 1 call to installer::download::CORE:subst
53514µs $filename =~ s/\_\s*$//; # necessary, if $language and $addon are empty
# spent 4µs making 1 call to installer::download::CORE:subst
536
537 $installer::globals::ooodownloadfilename = $filename;
538
539 return $filename;
540}
541
542#########################################################
543# Creating a tar.gz file
544#########################################################
545
546sub create_tar_gz_file_from_directory
547{
548 my ($installdir, $getuidlibrary, $downloaddir, $downloadfilename) = @_;
549
550 my $infoline = "";
551
552 my $packdir = $installdir;
553 installer::pathanalyzer::make_absolute_filename_to_relative_filename(\$packdir);
554 my $changedir = $installdir;
555 installer::pathanalyzer::get_path_from_fullqualifiedname(\$changedir);
556
557 my $ldpreloadstring = "";
558 if ( $getuidlibrary ne "" ) { $ldpreloadstring = "LD_PRELOAD=" . $getuidlibrary; }
559
560 $installer::globals::downloadfileextension = ".tar.gz";
561 $installer::globals::downloadfilename = $downloadfilename . $installer::globals::downloadfileextension;
562 my $targzname = $downloaddir . $installer::globals::separator . $installer::globals::downloadfilename;
563
564 my $systemcall = "cd $changedir; $ldpreloadstring tar -cf - $packdir | gzip > $targzname";
565
566 my $returnvalue = system($systemcall);
567
568 $infoline = "Systemcall: $systemcall\n";
569 push( @installer::globals::logfileinfo, $infoline);
570
571 if ($returnvalue)
572 {
573 $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
574 push( @installer::globals::logfileinfo, $infoline);
575 }
576 else
577 {
578 $infoline = "Success: Executed \"$systemcall\" successfully!\n";
579 push( @installer::globals::logfileinfo, $infoline);
580 }
581
582 return $targzname;
583}
584
585#########################################################
586# Setting the variables in the download name
587#########################################################
588
589sub resolve_variables_in_downloadname
590{
591 my ($allvariables, $downloadname, $languagestringref) = @_;
592
593 # Typical name: soa-{productversion}-{extension}-bin-{os}-{languages}
594
595 my $productversion = "";
596 if ( $allvariables->{'PRODUCTVERSION'} ) { $productversion = $allvariables->{'PRODUCTVERSION'}; }
597 $downloadname =~ s/\{productversion\}/$productversion/;
598
599 my $packageversion = "";
600 if ( $allvariables->{'PACKAGEVERSION'} ) { $packageversion = $allvariables->{'PACKAGEVERSION'}; }
601 $downloadname =~ s/\{packageversion\}/$packageversion/;
602
603 my $extension = "";
604 if ( $allvariables->{'SHORT_PRODUCTEXTENSION'} ) { $extension = $allvariables->{'SHORT_PRODUCTEXTENSION'}; }
605 $extension = lc($extension);
606 $downloadname =~ s/\{extension\}/$extension/;
607
608 my $os = "";
609 if ( $installer::globals::iswindowsbuild ) { $os = "windows"; }
610 elsif ( $installer::globals::issolarissparcbuild ) { $os = "solsparc"; }
611 elsif ( $installer::globals::issolarisx86build ) { $os = "solia"; }
612 elsif ( $installer::globals::islinuxbuild ) { $os = "linux"; }
613 elsif ( $installer::globals::compiler =~ /unxmacxi/ ) { $os = "macosxi"; }
614 elsif ( $installer::globals::compiler =~ /unxmacxp/ ) { $os = "macosxp"; }
615 else { $os = ""; }
616 $downloadname =~ s/\{os\}/$os/;
617
618 my $languages = $$languagestringref;
619 $downloadname =~ s/\{languages\}/$languages/;
620
621 $downloadname =~ s/\-\-\-/\-/g;
622 $downloadname =~ s/\-\-/\-/g;
623 $downloadname =~ s/\-\s*$//;
624
625 return $downloadname;
626}
627
628##############################################################
629# Returning the complete block in all languages
630# for a specified string
631##############################################################
632
633sub get_language_block_from_language_file
634{
635 my ($searchstring, $languagefile) = @_;
636
637 my @language_block = ();
638
639 for ( my $i = 0; $i <= $#{$languagefile}; $i++ )
640 {
641 if ( ${$languagefile}[$i] =~ /^\s*\[\s*$searchstring\s*\]\s*$/ )
642 {
643 my $counter = $i;
644
645 push(@language_block, ${$languagefile}[$counter]);
646 $counter++;
647
648 while (( $counter <= $#{$languagefile} ) && (!( ${$languagefile}[$counter] =~ /^\s*\[/ )))
649 {
650 push(@language_block, ${$languagefile}[$counter]);
651 $counter++;
652 }
653
654 last;
655 }
656 }
657
658 return \@language_block;
659}
660
661##############################################################
662# Returning a specific language string from the block
663# of all translations
664##############################################################
665
666sub get_language_string_from_language_block
667{
668 my ($language_block, $language) = @_;
669
670 my $newstring = "";
671
672 for ( my $i = 0; $i <= $#{$language_block}; $i++ )
673 {
674 if ( ${$language_block}[$i] =~ /^\s*$language\s*\=\s*\"(.*)\"\s*$/ )
675 {
676 $newstring = $1;
677 last;
678 }
679 }
680
681 if ( $newstring eq "" )
682 {
683 $language = "en-US"; # defaulting to english
684
685 for ( my $i = 0; $i <= $#{$language_block}; $i++ )
686 {
687 if ( ${$language_block}[$i] =~ /^\s*$language\s*\=\s*\"(.*)\"\s*$/ )
688 {
689 $newstring = $1;
690 last;
691 }
692 }
693 }
694
695 return $newstring;
696}
697
698####################################################
699# Creating download installation sets
700####################################################
701
702sub create_download_sets
703{
704 my ($installationdir, $includepatharrayref, $allvariableshashref, $downloadname, $languagestringref, $languagesarrayref) = @_;
705
706 my $infoline = "";
707
708 my $force = 1; # print this message even in 'quiet' mode
709 installer::logger::print_message( "\n******************************************\n" );
710 installer::logger::print_message( "... creating download installation set ...\n", $force );
711 installer::logger::print_message( "******************************************\n" );
712
713 installer::logger::include_header_into_logfile("Creating download installation sets:");
714
715 my $firstdir = $installationdir;
716 installer::pathanalyzer::get_path_from_fullqualifiedname(\$firstdir);
717
718 my $lastdir = $installationdir;
719 installer::pathanalyzer::make_absolute_filename_to_relative_filename(\$lastdir);
720
721 if ( $installer::globals::iswindowsbuild && $lastdir =~ /\./ ) { $lastdir =~ s/\./_download_inprogress\./ }
722 else { $lastdir = $lastdir . "_download_inprogress"; }
723
724 # removing existing directory "_native_packed_inprogress" and "_native_packed_witherror" and "_native_packed"
725
726 my $downloaddir = $firstdir . $lastdir;
727
728 if ( -d $downloaddir ) { installer::systemactions::remove_complete_directory($downloaddir); }
729
730 my $olddir = $downloaddir;
731 $olddir =~ s/_inprogress/_witherror/;
732 if ( -d $olddir ) { installer::systemactions::remove_complete_directory($olddir); }
733
734 $olddir = $downloaddir;
735 $olddir =~ s/_inprogress//;
736 if ( -d $olddir ) { installer::systemactions::remove_complete_directory($olddir); }
737
738 # creating the new directory
739
740 installer::systemactions::create_directory($downloaddir);
741
742 $installer::globals::saveinstalldir = $downloaddir;
743
744 # evaluating the name of the download file
745
746 if ( $allvariableshashref->{'OOODOWNLOADNAME'} ) { $downloadname = set_download_filename($languagestringref, $allvariableshashref); }
747 else { $downloadname = resolve_variables_in_downloadname($allvariableshashref, $downloadname, $languagestringref); }
748
749 if ( ! $installer::globals::iswindowsbuild ) # Unix specific part
750 {
751
752 # getting the path of the getuid.so (only required for Solaris and Linux)
753 my $getuidlibrary = "";
754 if (( $installer::globals::issolarisbuild ) || ( $installer::globals::islinuxbuild )) { $getuidlibrary = get_path_for_library($includepatharrayref); }
755
756 if ( $allvariableshashref->{'OOODOWNLOADNAME'} )
757 {
758 my $downloadfile = create_tar_gz_file_from_directory($installationdir, $getuidlibrary, $downloaddir, $downloadname);
759 }
760 else
761 {
762 # find and read setup script template
763 my $scriptfilename = "downloadscript.sh";
764
765 my $scriptref = "";
766
767 if ( $installer::globals::include_paths_read )
768 {
769 $scriptref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$scriptfilename, $includepatharrayref, 0);
770 }
771 else
772 {
773 $scriptref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$scriptfilename, $includepatharrayref, 0);
774 }
775
776 if ($$scriptref eq "") { installer::exiter::exit_program("ERROR: Could not find script file $scriptfilename!", "create_download_sets"); }
777 my $scriptfile = installer::files::read_file($$scriptref);
778
779 $infoline = "Found script file $scriptfilename: $$scriptref \n";
780 push( @installer::globals::logfileinfo, $infoline);
781
782 # add product name into script template
783 put_productname_into_script($scriptfile, $allvariableshashref);
784
785 # replace linenumber in script template
786 put_linenumber_into_script($scriptfile);
787
788 # create tar file
789 my $temporary_tarfile_name = $downloaddir . $installer::globals::separator . 'installset.tar';
790 my $size = tar_package($installationdir, $temporary_tarfile_name, $getuidlibrary);
791 installer::exiter::exit_program("ERROR: Could not create tar file $temporary_tarfile_name!", "create_download_sets") unless $size;
792
793 # calling sum to determine checksum and size of the tar file
794 my $sumout = call_sum($temporary_tarfile_name);
795
796 # writing checksum and size into scriptfile
797 put_checksum_and_size_into_script($scriptfile, $sumout);
798
799 # saving the script file
800 my $newscriptfilename = determine_scriptfile_name($downloadname);
801 $newscriptfilename = save_script_file($downloaddir, $newscriptfilename, $scriptfile);
802
803 installer::logger::print_message( "... including installation set into $newscriptfilename ... \n" );
804 # Append tar file to script
805 include_tar_into_script($newscriptfilename, $temporary_tarfile_name);
806 }
807 }
808
809 return $downloaddir;
810}
811
81218µs1;
 
# spent 15µs within installer::download::CORE:match which was called 4 times, avg 4µs/call: # 3 times (3µs+0s) by installer::download::get_download_architecture at line 400, avg 1µs/call # once (12µs+0s) by installer::download::BEGIN@42 at line 44
sub installer::download::CORE:match; # opcode
# spent 13µs within installer::download::CORE:subst which was called 2 times, avg 6µs/call: # once (9µs+0s) by installer::download::set_download_filename at line 534 # once (4µs+0s) by installer::download::set_download_filename at line 535
sub installer::download::CORE:subst; # opcode