1*b1cdbd2cSJim Jagielski#************************************************************** 2*b1cdbd2cSJim Jagielski# 3*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski# distributed with this work for additional information 6*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski# 11*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski# under the License. 19*b1cdbd2cSJim Jagielski# 20*b1cdbd2cSJim Jagielski#************************************************************** 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielskipackage installer::control; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielskiuse Cwd; 27*b1cdbd2cSJim Jagielskiuse installer::converter; 28*b1cdbd2cSJim Jagielskiuse installer::exiter; 29*b1cdbd2cSJim Jagielskiuse installer::files; 30*b1cdbd2cSJim Jagielskiuse installer::globals; 31*b1cdbd2cSJim Jagielskiuse installer::pathanalyzer; 32*b1cdbd2cSJim Jagielskiuse installer::scriptitems; 33*b1cdbd2cSJim Jagielskiuse installer::systemactions; 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielskiour @ErrorMessages = undef; 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski######################################################### 38*b1cdbd2cSJim Jagielski# Function that can be used for additional controls. 39*b1cdbd2cSJim Jagielski# Search happens in $installer::globals::patharray. 40*b1cdbd2cSJim Jagielski######################################################### 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielskisub check_needed_files_in_path 43*b1cdbd2cSJim Jagielski{ 44*b1cdbd2cSJim Jagielski my ( $filesref ) = @_; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski my $error = 0; 47*b1cdbd2cSJim Jagielski foreach my $onefile ( @{$filesref} ) 48*b1cdbd2cSJim Jagielski { 49*b1cdbd2cSJim Jagielski $installer::logger::Info->printf("...... searching %s ...\n", $onefile); 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$onefile, $installer::globals::patharray , 0); 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski if ( $$fileref eq "" ) 54*b1cdbd2cSJim Jagielski { 55*b1cdbd2cSJim Jagielski $error = 1; 56*b1cdbd2cSJim Jagielski installer::logger::print_error( "$onefile not found\n" ); 57*b1cdbd2cSJim Jagielski } 58*b1cdbd2cSJim Jagielski else 59*b1cdbd2cSJim Jagielski { 60*b1cdbd2cSJim Jagielski $installer::logger::Info->print( "\tFound: $$fileref\n" ); 61*b1cdbd2cSJim Jagielski } 62*b1cdbd2cSJim Jagielski } 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski if ( $error ) 65*b1cdbd2cSJim Jagielski { 66*b1cdbd2cSJim Jagielski installer::exiter::exit_program("ERROR: Could not find all needed files in path!", "check_needed_files_in_path"); 67*b1cdbd2cSJim Jagielski } 68*b1cdbd2cSJim Jagielski} 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski######################################################### 71*b1cdbd2cSJim Jagielski# Checking the local system 72*b1cdbd2cSJim Jagielski# Checking existence of needed files in include path 73*b1cdbd2cSJim Jagielski######################################################### 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielskisub check_system_path 76*b1cdbd2cSJim Jagielski{ 77*b1cdbd2cSJim Jagielski # The following files have to be found in the environment variable PATH 78*b1cdbd2cSJim Jagielski # All platforms: zip 79*b1cdbd2cSJim Jagielski # Windows only: "msiinfo.exe", "msidb.exe", "uuidgen.exe", "makecab.exe", "msitran.exe", "expand.exe" for msi database and packaging 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski my $onefile; 82*b1cdbd2cSJim Jagielski my $error = 0; 83*b1cdbd2cSJim Jagielski my $pathvariable = $ENV{'PATH'}; 84*b1cdbd2cSJim Jagielski my $local_pathseparator = $installer::globals::pathseparator; 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski if( $^O =~ /cygwin/i ) 87*b1cdbd2cSJim Jagielski { # When using cygwin's perl the PATH variable is POSIX style and ... 88*b1cdbd2cSJim Jagielski $pathvariable = qx{cygpath -mp "$pathvariable"} ; 89*b1cdbd2cSJim Jagielski # has to be converted to DOS style for further use. 90*b1cdbd2cSJim Jagielski $local_pathseparator = ';'; 91*b1cdbd2cSJim Jagielski } 92*b1cdbd2cSJim Jagielski if( $^O =~ /os2/i ) 93*b1cdbd2cSJim Jagielski { 94*b1cdbd2cSJim Jagielski # has to be converted to DOS style for further use. 95*b1cdbd2cSJim Jagielski $local_pathseparator = ';'; 96*b1cdbd2cSJim Jagielski } 97*b1cdbd2cSJim Jagielski my $patharrayref = installer::converter::convert_stringlist_into_array(\$pathvariable, $local_pathseparator); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski $installer::globals::patharray = $patharrayref; 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski my @needed_files_in_path = (); 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski if (($installer::globals::iswin) && ($installer::globals::iswindowsbuild)) 104*b1cdbd2cSJim Jagielski { 105*b1cdbd2cSJim Jagielski @needed_files_in_path = ("zip.exe", "msiinfo.exe", "msidb.exe", "uuidgen.exe", "makecab.exe", "msitran.exe", "expand.exe"); 106*b1cdbd2cSJim Jagielski } 107*b1cdbd2cSJim Jagielski elsif ($installer::globals::iswin || $installer::globals::isos2) 108*b1cdbd2cSJim Jagielski { 109*b1cdbd2cSJim Jagielski @needed_files_in_path = ("zip.exe"); 110*b1cdbd2cSJim Jagielski } 111*b1cdbd2cSJim Jagielski else 112*b1cdbd2cSJim Jagielski { 113*b1cdbd2cSJim Jagielski @needed_files_in_path = ("zip"); 114*b1cdbd2cSJim Jagielski } 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski foreach $onefile ( @needed_files_in_path ) 117*b1cdbd2cSJim Jagielski { 118*b1cdbd2cSJim Jagielski $installer::logger::Info->printf("...... searching %s ...\n", $onefile); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$onefile, $patharrayref , 0); 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski if ( $$fileref eq "" ) 123*b1cdbd2cSJim Jagielski { 124*b1cdbd2cSJim Jagielski $error = 1; 125*b1cdbd2cSJim Jagielski installer::logger::print_error( "$onefile not found\n" ); 126*b1cdbd2cSJim Jagielski } 127*b1cdbd2cSJim Jagielski else 128*b1cdbd2cSJim Jagielski { 129*b1cdbd2cSJim Jagielski $installer::logger::Info->print( "\tFound: $$fileref\n" ); 130*b1cdbd2cSJim Jagielski # Saving the absolut path for msitran.exe. This is required for the determination of the checksum. 131*b1cdbd2cSJim Jagielski if ( $onefile eq "msitran.exe" ) { $installer::globals::msitranpath = $$fileref; } 132*b1cdbd2cSJim Jagielski } 133*b1cdbd2cSJim Jagielski } 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski if ( $error ) 136*b1cdbd2cSJim Jagielski { 137*b1cdbd2cSJim Jagielski installer::exiter::exit_program("ERROR: Could not find all needed files in path!", "check_system_path"); 138*b1cdbd2cSJim Jagielski } 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski # checking for epm, which has to be in the path or in the solver 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski if (( $installer::globals::call_epm ) && (!($installer::globals::iswindowsbuild))) 143*b1cdbd2cSJim Jagielski { 144*b1cdbd2cSJim Jagielski my $onefile = "epm"; 145*b1cdbd2cSJim Jagielski my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$onefile, $patharrayref , 0); 146*b1cdbd2cSJim Jagielski if (!( $$fileref eq "" )) 147*b1cdbd2cSJim Jagielski { 148*b1cdbd2cSJim Jagielski $installer::globals::epm_in_path = 1; 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski if ( $$fileref =~ /^\s*\.\/epm\s*$/ ) 151*b1cdbd2cSJim Jagielski { 152*b1cdbd2cSJim Jagielski my $currentdir = cwd(); 153*b1cdbd2cSJim Jagielski $$fileref =~ s/\./$currentdir/; 154*b1cdbd2cSJim Jagielski } 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski $installer::globals::epm_path = $$fileref; 157*b1cdbd2cSJim Jagielski } 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski # checking, if upx can be found in path 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski if ( $installer::globals::iswindowsbuild ) { $installer::globals::upxfile = "upx.exe"; } 163*b1cdbd2cSJim Jagielski else { $installer::globals::upxfile = "upx"; } 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski my $upxfilename = $installer::globals::upxfile; 166*b1cdbd2cSJim Jagielski my $upxfileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$upxfilename, $patharrayref , 0); 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski if (!( $$upxfileref eq "" )) 169*b1cdbd2cSJim Jagielski { 170*b1cdbd2cSJim Jagielski $installer::globals::upx_in_path = 1; 171*b1cdbd2cSJim Jagielski $installer::globals::upxfile = $$upxfileref; 172*b1cdbd2cSJim Jagielski $installer::logger::Info->print( "\tFound: $$upxfileref\n" ); 173*b1cdbd2cSJim Jagielski } 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski} 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski###################################################################### 178*b1cdbd2cSJim Jagielski# Determining the version of file makecab.exe 179*b1cdbd2cSJim Jagielski###################################################################### 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielskisub get_makecab_version 182*b1cdbd2cSJim Jagielski{ 183*b1cdbd2cSJim Jagielski my $makecabversion = -1; 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski my $systemcall = "makecab.exe |"; 186*b1cdbd2cSJim Jagielski my @makecaboutput = (); 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski open (CAB, $systemcall); 189*b1cdbd2cSJim Jagielski while (<CAB>) { push(@makecaboutput, $_); } 190*b1cdbd2cSJim Jagielski close (CAB); 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski my $returnvalue = $?; # $? contains the return value of the systemcall 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski if ($returnvalue) 195*b1cdbd2cSJim Jagielski { 196*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("ERROR: Could not execute \"%s\"!\n", $systemcall); 197*b1cdbd2cSJim Jagielski } 198*b1cdbd2cSJim Jagielski else 199*b1cdbd2cSJim Jagielski { 200*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Success: Executed \"%s\" successfully!\n", $systemcall); 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski my $versionline = ""; 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski for ( my $i = 0; $i <= $#makecaboutput; $i++ ) 205*b1cdbd2cSJim Jagielski { 206*b1cdbd2cSJim Jagielski if ( $makecaboutput[$i] =~ /\bVersion\b/i ) 207*b1cdbd2cSJim Jagielski { 208*b1cdbd2cSJim Jagielski $versionline = $makecaboutput[$i]; 209*b1cdbd2cSJim Jagielski last; 210*b1cdbd2cSJim Jagielski } 211*b1cdbd2cSJim Jagielski } 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("%s\n", $versionline); 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski if ( $versionline =~ /\bVersion\b\s+(\d+[\d\.]+\d+)\s+/ ) 216*b1cdbd2cSJim Jagielski { 217*b1cdbd2cSJim Jagielski $makecabversion = $1; 218*b1cdbd2cSJim Jagielski } 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski # Only using the first number 221*b1cdbd2cSJim Jagielski 222*b1cdbd2cSJim Jagielski if ( $makecabversion =~ /^\s*(\d+?)\D*/ ) 223*b1cdbd2cSJim Jagielski { 224*b1cdbd2cSJim Jagielski $makecabversion = $1; 225*b1cdbd2cSJim Jagielski } 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Using version: %s\n", $makecabversion); 228*b1cdbd2cSJim Jagielski } 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski return $makecabversion; 231*b1cdbd2cSJim Jagielski} 232*b1cdbd2cSJim Jagielski 233*b1cdbd2cSJim Jagielski###################################################################### 234*b1cdbd2cSJim Jagielski# Checking the version of file makecab.exe 235*b1cdbd2cSJim Jagielski###################################################################### 236*b1cdbd2cSJim Jagielski 237*b1cdbd2cSJim Jagielskisub check_makecab_version 238*b1cdbd2cSJim Jagielski{ 239*b1cdbd2cSJim Jagielski # checking version of makecab.exe 240*b1cdbd2cSJim Jagielski # Now it is guaranteed, that makecab.exe is in the path 241*b1cdbd2cSJim Jagielski 242*b1cdbd2cSJim Jagielski my $do_check = 1; 243*b1cdbd2cSJim Jagielski 244*b1cdbd2cSJim Jagielski my $makecabversion = get_makecab_version(); 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Tested version: %s\n", $installer::globals::controlledmakecabversion); 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski if ( $makecabversion < 0 ) { $do_check = 0; } # version could not be determined 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski if ( $do_check ) 251*b1cdbd2cSJim Jagielski { 252*b1cdbd2cSJim Jagielski if ( $makecabversion < $installer::globals::controlledmakecabversion ) 253*b1cdbd2cSJim Jagielski { 254*b1cdbd2cSJim Jagielski # warning for OOo, error for inhouse products 255*b1cdbd2cSJim Jagielski if ( $installer::globals::isopensourceproduct ) 256*b1cdbd2cSJim Jagielski { 257*b1cdbd2cSJim Jagielski installer::logger::print_warning("Old version of makecab.exe. Found version: \"$makecabversion\", tested version: \"$installer::globals::controlledmakecabversion\"!\n"); 258*b1cdbd2cSJim Jagielski } 259*b1cdbd2cSJim Jagielski else 260*b1cdbd2cSJim Jagielski { 261*b1cdbd2cSJim Jagielski installer::exiter::exit_program("makecab.exe too old. Found version: \"$makecabversion\", required version: \"$installer::globals::controlledmakecabversion\"!", "check_makecab_version"); 262*b1cdbd2cSJim Jagielski } 263*b1cdbd2cSJim Jagielski } 264*b1cdbd2cSJim Jagielski } 265*b1cdbd2cSJim Jagielski else 266*b1cdbd2cSJim Jagielski { 267*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Warning: No version check of makecab.exe\n"); 268*b1cdbd2cSJim Jagielski } 269*b1cdbd2cSJim Jagielski} 270*b1cdbd2cSJim Jagielski 271*b1cdbd2cSJim Jagielski###################################################################### 272*b1cdbd2cSJim Jagielski# Reading the environment variables for the pathes in ziplist. 273*b1cdbd2cSJim Jagielski# solarpath, solarenvpath, solarcommonpath, os, osdef, pmiscpath 274*b1cdbd2cSJim Jagielski###################################################################### 275*b1cdbd2cSJim Jagielski 276*b1cdbd2cSJim Jagielskisub check_system_environment 277*b1cdbd2cSJim Jagielski{ 278*b1cdbd2cSJim Jagielski my %variables = (); 279*b1cdbd2cSJim Jagielski my $key; 280*b1cdbd2cSJim Jagielski my $error = 0; 281*b1cdbd2cSJim Jagielski 282*b1cdbd2cSJim Jagielski foreach $key ( @installer::globals::environmentvariables ) 283*b1cdbd2cSJim Jagielski { 284*b1cdbd2cSJim Jagielski my $value = ""; 285*b1cdbd2cSJim Jagielski if ( $ENV{$key} ) { $value = $ENV{$key}; } 286*b1cdbd2cSJim Jagielski $variables{$key} = $value; 287*b1cdbd2cSJim Jagielski 288*b1cdbd2cSJim Jagielski if ( $value eq "" ) 289*b1cdbd2cSJim Jagielski { 290*b1cdbd2cSJim Jagielski installer::logger::print_error( "$key not set in environment\n" ); 291*b1cdbd2cSJim Jagielski $error = 1; 292*b1cdbd2cSJim Jagielski } 293*b1cdbd2cSJim Jagielski } 294*b1cdbd2cSJim Jagielski 295*b1cdbd2cSJim Jagielski if ( $error ) 296*b1cdbd2cSJim Jagielski { 297*b1cdbd2cSJim Jagielski installer::exiter::exit_program("ERROR: Environment variable not set!", "check_system_environment"); 298*b1cdbd2cSJim Jagielski } 299*b1cdbd2cSJim Jagielski 300*b1cdbd2cSJim Jagielski return \%variables; 301*b1cdbd2cSJim Jagielski} 302*b1cdbd2cSJim Jagielski 303*b1cdbd2cSJim Jagielski 304*b1cdbd2cSJim Jagielskisub prepare_error_processing () 305*b1cdbd2cSJim Jagielski{ 306*b1cdbd2cSJim Jagielski @ErrorMessages = (); 307*b1cdbd2cSJim Jagielski} 308*b1cdbd2cSJim Jagielski 309*b1cdbd2cSJim Jagielski=item filter_log_error ($relative_time, $log_id, $process_id, $message) 310*b1cdbd2cSJim Jagielski 311*b1cdbd2cSJim Jagielski Process the given log message. Returns $message unaltered. 312*b1cdbd2cSJim Jagielski 313*b1cdbd2cSJim Jagielski=cut 314*b1cdbd2cSJim Jagielskisub filter_log_error ($$$$) 315*b1cdbd2cSJim Jagielski{ 316*b1cdbd2cSJim Jagielski my ($relative_time, $log_id, $process_id, $message) = @_; 317*b1cdbd2cSJim Jagielski 318*b1cdbd2cSJim Jagielski if ($message =~ /\berror\b/i) 319*b1cdbd2cSJim Jagielski { 320*b1cdbd2cSJim Jagielski # Message contains the word "error". Now we have to find out if it is relevant. 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski # Remove all filenames that contain the word "Error". 323*b1cdbd2cSJim Jagielski my $work_string = $message; 324*b1cdbd2cSJim Jagielski $work_string =~ s/Error\.(idt|mlf|ulf|idl|html|hpp|ipp)//g; 325*b1cdbd2cSJim Jagielski 326*b1cdbd2cSJim Jagielski if ($work_string =~ /\bError\b/i) 327*b1cdbd2cSJim Jagielski { 328*b1cdbd2cSJim Jagielski # This really is an error message. 329*b1cdbd2cSJim Jagielski push @ErrorMessages, {'relative_time' => $relative_time, 330*b1cdbd2cSJim Jagielski 'message' => $message}; 331*b1cdbd2cSJim Jagielski } 332*b1cdbd2cSJim Jagielski } 333*b1cdbd2cSJim Jagielski 334*b1cdbd2cSJim Jagielski return $message; 335*b1cdbd2cSJim Jagielski} 336*b1cdbd2cSJim Jagielski 337*b1cdbd2cSJim Jagielski 338*b1cdbd2cSJim Jagielski 339*b1cdbd2cSJim Jagielski 340*b1cdbd2cSJim Jagielskisub printocessed_error_lines () 341*b1cdbd2cSJim Jagielski{ 342*b1cdbd2cSJim Jagielski my $lines = []; 343*b1cdbd2cSJim Jagielski 344*b1cdbd2cSJim Jagielski foreach my $line (@ErrorMessages) 345*b1cdbd2cSJim Jagielski { 346*b1cdbd2cSJim Jagielski push @$lines, sprintf(" %12.6f : %s", $line->{'relative_time'}, $line->{'message'}); 347*b1cdbd2cSJim Jagielski } 348*b1cdbd2cSJim Jagielski 349*b1cdbd2cSJim Jagielski return $lines; 350*b1cdbd2cSJim Jagielski} 351*b1cdbd2cSJim Jagielski 352*b1cdbd2cSJim Jagielski 353*b1cdbd2cSJim Jagielski 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim Jagielski=item check_logfile() 356*b1cdbd2cSJim Jagielski 357*b1cdbd2cSJim Jagielski Print all error messages (typically at the end) on the console. 358*b1cdbd2cSJim Jagielski 359*b1cdbd2cSJim Jagielski=cut 360*b1cdbd2cSJim Jagielskisub check_logfile () 361*b1cdbd2cSJim Jagielski{ 362*b1cdbd2cSJim Jagielski my ($logfile) = @_; 363*b1cdbd2cSJim Jagielski 364*b1cdbd2cSJim Jagielski my @errors = (); 365*b1cdbd2cSJim Jagielski my @output = (); 366*b1cdbd2cSJim Jagielski 367*b1cdbd2cSJim Jagielski my $ignore_errors = ( ! $installer::globals::pro ) && ( $installer::globals::ignore_error_in_logfile ); 368*b1cdbd2cSJim Jagielski my $contains_errors = scalar @ErrorMessages > 0; 369*b1cdbd2cSJim Jagielski 370*b1cdbd2cSJim Jagielski # Format errors 371*b1cdbd2cSJim Jagielski if ($contains_errors) 372*b1cdbd2cSJim Jagielski { 373*b1cdbd2cSJim Jagielski push(@output, "\n"); 374*b1cdbd2cSJim Jagielski push(@output, "*********************************************************************\n"); 375*b1cdbd2cSJim Jagielski if ($ignore_errors) 376*b1cdbd2cSJim Jagielski { 377*b1cdbd2cSJim Jagielski push(@output, "The following errors in the log file were ignored:\n"); 378*b1cdbd2cSJim Jagielski } 379*b1cdbd2cSJim Jagielski else 380*b1cdbd2cSJim Jagielski { 381*b1cdbd2cSJim Jagielski push(@output, "ERROR: The following errors occured in packaging process:\n"); 382*b1cdbd2cSJim Jagielski } 383*b1cdbd2cSJim Jagielski push(@output, "\n"); 384*b1cdbd2cSJim Jagielski 385*b1cdbd2cSJim Jagielski foreach my $line (@ErrorMessages) 386*b1cdbd2cSJim Jagielski { 387*b1cdbd2cSJim Jagielski push @output, sprintf(" %12.6f : %s", $line->{'relative_time'}, $line->{'message'}); 388*b1cdbd2cSJim Jagielski } 389*b1cdbd2cSJim Jagielski 390*b1cdbd2cSJim Jagielski push(@output, "*********************************************************************\n"); 391*b1cdbd2cSJim Jagielski } 392*b1cdbd2cSJim Jagielski 393*b1cdbd2cSJim Jagielski # Claim success if there where no errors or if errors are treated as warnings. 394*b1cdbd2cSJim Jagielski if ( ! $contains_errors || $ignore_errors) 395*b1cdbd2cSJim Jagielski { 396*b1cdbd2cSJim Jagielski push(@output, "\n"); 397*b1cdbd2cSJim Jagielski push(@output, "***********************************************************\n"); 398*b1cdbd2cSJim Jagielski push(@output, "Successful packaging process!\n"); 399*b1cdbd2cSJim Jagielski push(@output, "***********************************************************\n"); 400*b1cdbd2cSJim Jagielski } 401*b1cdbd2cSJim Jagielski 402*b1cdbd2cSJim Jagielski # Print the summary. 403*b1cdbd2cSJim Jagielski installer::logger::include_header_into_logfile("Summary:"); 404*b1cdbd2cSJim Jagielski my $force = 1; # print this message even in 'quiet' mode 405*b1cdbd2cSJim Jagielski foreach my $line (@output) 406*b1cdbd2cSJim Jagielski { 407*b1cdbd2cSJim Jagielski $installer::logger::Info->print($line, $force); 408*b1cdbd2cSJim Jagielski } 409*b1cdbd2cSJim Jagielski 410*b1cdbd2cSJim Jagielski # Delete the accumulated error messages. The @ErrorMessages will now contain 411*b1cdbd2cSJim Jagielski # lines caused by printing those error messages. 412*b1cdbd2cSJim Jagielski @ErrorMessages = (); 413*b1cdbd2cSJim Jagielski 414*b1cdbd2cSJim Jagielski @installer::globals::errorlogfileinfo = @output; 415*b1cdbd2cSJim Jagielski 416*b1cdbd2cSJim Jagielski return $contains_error && ! $ignore_error; 417*b1cdbd2cSJim Jagielski} 418*b1cdbd2cSJim Jagielski 419*b1cdbd2cSJim Jagielski############################################################# 420*b1cdbd2cSJim Jagielski# Determining the ship installation directory 421*b1cdbd2cSJim Jagielski############################################################# 422*b1cdbd2cSJim Jagielski 423*b1cdbd2cSJim Jagielskisub determine_ship_directory 424*b1cdbd2cSJim Jagielski{ 425*b1cdbd2cSJim Jagielski my ($languagesref) = @_; 426*b1cdbd2cSJim Jagielski 427*b1cdbd2cSJim Jagielski if (!( $ENV{'SHIPDRIVE'} )) { installer::exiter::exit_program("ERROR: SHIPDRIVE must be set for updater!", "determine_ship_directory"); } 428*b1cdbd2cSJim Jagielski 429*b1cdbd2cSJim Jagielski my $shipdrive = $ENV{'SHIPDRIVE'}; 430*b1cdbd2cSJim Jagielski 431*b1cdbd2cSJim Jagielski my $languagestring = installer::languages::get_language_directory_name($$languagesref); 432*b1cdbd2cSJim Jagielski 433*b1cdbd2cSJim Jagielski my $productstring = $installer::globals::product; 434*b1cdbd2cSJim Jagielski my $productsubdir = ""; 435*b1cdbd2cSJim Jagielski 436*b1cdbd2cSJim Jagielski if ( $productstring =~ /^\s*(.+?)\_\_(.+?)\s*$/ ) 437*b1cdbd2cSJim Jagielski { 438*b1cdbd2cSJim Jagielski $productstring = $1; 439*b1cdbd2cSJim Jagielski $productsubdir = $2; 440*b1cdbd2cSJim Jagielski } 441*b1cdbd2cSJim Jagielski 442*b1cdbd2cSJim Jagielski if ( $installer::globals::languagepack ) { $productstring = $productstring . "_languagepack"; } 443*b1cdbd2cSJim Jagielski if ( $installer::globals::patch ) { $productstring = $productstring . "_patch"; } 444*b1cdbd2cSJim Jagielski 445*b1cdbd2cSJim Jagielski my $destdir = $shipdrive . $installer::globals::separator . $installer::globals::compiler . 446*b1cdbd2cSJim Jagielski $installer::globals::productextension . $installer::globals::separator . 447*b1cdbd2cSJim Jagielski $productstring . $installer::globals::separator; 448*b1cdbd2cSJim Jagielski 449*b1cdbd2cSJim Jagielski if ( $productsubdir ) { $destdir = $destdir . $productsubdir . $installer::globals::separator; } 450*b1cdbd2cSJim Jagielski 451*b1cdbd2cSJim Jagielski $destdir = $destdir . $installer::globals::installertypedir . $installer::globals::separator . 452*b1cdbd2cSJim Jagielski $installer::globals::build . "_" . $installer::globals::lastminor . "_" . 453*b1cdbd2cSJim Jagielski "native_inprogress-number_" . $languagestring . "\." . $installer::globals::buildid; 454*b1cdbd2cSJim Jagielski 455*b1cdbd2cSJim Jagielski $installer::logger::Global->print("\n"); 456*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Setting ship directory: %s\n", $destdir); 457*b1cdbd2cSJim Jagielski 458*b1cdbd2cSJim Jagielski return $destdir; 459*b1cdbd2cSJim Jagielski} 460*b1cdbd2cSJim Jagielski 461*b1cdbd2cSJim Jagielski############################################################# 462*b1cdbd2cSJim Jagielski# Controlling if this is an official RE pack process 463*b1cdbd2cSJim Jagielski############################################################# 464*b1cdbd2cSJim Jagielski 465*b1cdbd2cSJim Jagielskisub check_updatepack 466*b1cdbd2cSJim Jagielski{ 467*b1cdbd2cSJim Jagielski my $shipdrive = ""; 468*b1cdbd2cSJim Jagielski my $filename = ""; 469*b1cdbd2cSJim Jagielski my $infoline = ""; 470*b1cdbd2cSJim Jagielski 471*b1cdbd2cSJim Jagielski if ( $ENV{'UPDATER'} ) # the environment variable UPDATER has to be set 472*b1cdbd2cSJim Jagielski { 473*b1cdbd2cSJim Jagielski $installer::logger::Global->print("\n"); 474*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Environment variable UPDATER set\n"); 475*b1cdbd2cSJim Jagielski 476*b1cdbd2cSJim Jagielski if ( ! $ENV{'CWS_WORK_STAMP'} ) # the environment variable CWS_WORK_STAMP must not be set (set only in CWS) 477*b1cdbd2cSJim Jagielski { 478*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Environment variable CWS_WORK_STAMP not set\n"); 479*b1cdbd2cSJim Jagielski 480*b1cdbd2cSJim Jagielski if ( $ENV{'SHIPDRIVE'} ) # the environment variable SHIPDRIVE must be set 481*b1cdbd2cSJim Jagielski { 482*b1cdbd2cSJim Jagielski $shipdrive = $ENV{'SHIPDRIVE'}; 483*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Ship drive defined: %s\n", $shipdrive); 484*b1cdbd2cSJim Jagielski 485*b1cdbd2cSJim Jagielski if ( -d $shipdrive ) # SHIPDRIVE must be a directory 486*b1cdbd2cSJim Jagielski { 487*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Ship drive exists\n"); 488*b1cdbd2cSJim Jagielski 489*b1cdbd2cSJim Jagielski # try to write into $shipdrive 490*b1cdbd2cSJim Jagielski 491*b1cdbd2cSJim Jagielski my $directory = $installer::globals::product . "_" . $installer::globals::compiler . "_" . $installer::globals::buildid . "_" . $installer::globals::languageproduct . "_test_$$"; 492*b1cdbd2cSJim Jagielski $directory =~ s/\,/\_/g; # for the list of languages 493*b1cdbd2cSJim Jagielski $directory =~ s/\-/\_/g; # for en-US, pt-BR, ... 494*b1cdbd2cSJim Jagielski $directory = $shipdrive . $installer::globals::separator . $directory; 495*b1cdbd2cSJim Jagielski 496*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Try to create directory: %s\n", $directory); 497*b1cdbd2cSJim Jagielski 498*b1cdbd2cSJim Jagielski # saving this directory for later removal 499*b1cdbd2cSJim Jagielski $installer::globals::shiptestdirectory = $directory; 500*b1cdbd2cSJim Jagielski 501*b1cdbd2cSJim Jagielski if ( installer::systemactions::try_to_create_directory($directory)) 502*b1cdbd2cSJim Jagielski { 503*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Write access on Ship drive\n"); 504*b1cdbd2cSJim Jagielski $installer::logger::Global->print( 505*b1cdbd2cSJim Jagielski "Ship test directory %s was successfully created\n", 506*b1cdbd2cSJim Jagielski $installer::globals::shiptestdirectory); 507*b1cdbd2cSJim Jagielski my $systemcall = "rmdir $directory"; 508*b1cdbd2cSJim Jagielski my $returnvalue = system($systemcall); 509*b1cdbd2cSJim Jagielski 510*b1cdbd2cSJim Jagielski # 5th condition: No local build environment. 511*b1cdbd2cSJim Jagielski # In this case the content of SOLARENV starts with the content of SOL_TMP 512*b1cdbd2cSJim Jagielski 513*b1cdbd2cSJim Jagielski my $solarenv = ""; 514*b1cdbd2cSJim Jagielski my $sol_tmp; 515*b1cdbd2cSJim Jagielski if ( $ENV{'SOLARENV'} ) { $solarenv = $ENV{'SOLARENV'}; } 516*b1cdbd2cSJim Jagielski 517*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Environment variable SOLARENV: %s\n", $solarenv); 518*b1cdbd2cSJim Jagielski 519*b1cdbd2cSJim Jagielski if ( $ENV{'SOL_TMP'} ) 520*b1cdbd2cSJim Jagielski { 521*b1cdbd2cSJim Jagielski $sol_tmp = $ENV{'SOL_TMP'}; 522*b1cdbd2cSJim Jagielski $infoline = "Environment variable SOL_TMP: $sol_tmp\n"; 523*b1cdbd2cSJim Jagielski } else { 524*b1cdbd2cSJim Jagielski $infoline = "Environment variable SOL_TMP not set\n"; 525*b1cdbd2cSJim Jagielski } 526*b1cdbd2cSJim Jagielski $installer::logger::Global->print($infoline); 527*b1cdbd2cSJim Jagielski 528*b1cdbd2cSJim Jagielski if ( defined $sol_tmp && ( $solarenv =~ /^\s*\Q$sol_tmp\E/ )) 529*b1cdbd2cSJim Jagielski { 530*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Content of SOLARENV starts with the content of SOL_TMP\: Local environment -\> No Updatepack\n"); 531*b1cdbd2cSJim Jagielski } 532*b1cdbd2cSJim Jagielski else 533*b1cdbd2cSJim Jagielski { 534*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Content of SOLARENV does not start with the content of SOL_TMP: No local environment\n"); 535*b1cdbd2cSJim Jagielski 536*b1cdbd2cSJim Jagielski $installer::globals::updatepack = 1; # That's it 537*b1cdbd2cSJim Jagielski } 538*b1cdbd2cSJim Jagielski 539*b1cdbd2cSJim Jagielski # Additional logging information for the temporary ship directory 540*b1cdbd2cSJim Jagielski 541*b1cdbd2cSJim Jagielski if ( -d $installer::globals::shiptestdirectory ) 542*b1cdbd2cSJim Jagielski { 543*b1cdbd2cSJim Jagielski $installer::logger::Global->printf( 544*b1cdbd2cSJim Jagielski "Ship test directory %s still exists. Trying removal later again.\n", 545*b1cdbd2cSJim Jagielski $installer::globals::shiptestdirectory); 546*b1cdbd2cSJim Jagielski } 547*b1cdbd2cSJim Jagielski else 548*b1cdbd2cSJim Jagielski { 549*b1cdbd2cSJim Jagielski $installer::logger::Global->printf( 550*b1cdbd2cSJim Jagielski "Ship test directory %s was successfully removed.\n", 551*b1cdbd2cSJim Jagielski $installer::globals::shiptestdirectory); 552*b1cdbd2cSJim Jagielski } 553*b1cdbd2cSJim Jagielski } 554*b1cdbd2cSJim Jagielski else 555*b1cdbd2cSJim Jagielski { 556*b1cdbd2cSJim Jagielski $installer::logger::Global->print("No write access on Ship drive\n"); 557*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Failed to create directory \n", $directory); 558*b1cdbd2cSJim Jagielski if ( defined $ENV{'BSCLIENT'} && ( uc $ENV{'BSCLIENT'} eq 'TRUE' ) ) 559*b1cdbd2cSJim Jagielski { 560*b1cdbd2cSJim Jagielski installer::exiter::exit_program("ERROR: No write access to SHIPDRIVE allthough BSCLIENT is set.", "check_updatepack"); 561*b1cdbd2cSJim Jagielski } 562*b1cdbd2cSJim Jagielski } 563*b1cdbd2cSJim Jagielski } 564*b1cdbd2cSJim Jagielski else 565*b1cdbd2cSJim Jagielski { 566*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Ship drive not found: No updatepack\n"); 567*b1cdbd2cSJim Jagielski } 568*b1cdbd2cSJim Jagielski } 569*b1cdbd2cSJim Jagielski else 570*b1cdbd2cSJim Jagielski { 571*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Environment variable SHIPDRIVE not set: No updatepack\n"); 572*b1cdbd2cSJim Jagielski } 573*b1cdbd2cSJim Jagielski } 574*b1cdbd2cSJim Jagielski else 575*b1cdbd2cSJim Jagielski { 576*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Environment variable CWS_WORK_STAMP defined: No updatepack\n"); 577*b1cdbd2cSJim Jagielski } 578*b1cdbd2cSJim Jagielski } 579*b1cdbd2cSJim Jagielski 580*b1cdbd2cSJim Jagielski if ( $installer::globals::updatepack ) 581*b1cdbd2cSJim Jagielski { 582*b1cdbd2cSJim Jagielski $installer::logger::Global->print("Setting updatepack true\n"); 583*b1cdbd2cSJim Jagielski $installer::logger::Global->print("\n"); 584*b1cdbd2cSJim Jagielski } 585*b1cdbd2cSJim Jagielski else 586*b1cdbd2cSJim Jagielski { 587*b1cdbd2cSJim Jagielski $installer::logger::Global->print("\n"); 588*b1cdbd2cSJim Jagielski $installer::logger::Global->print("No updatepack\n"); 589*b1cdbd2cSJim Jagielski } 590*b1cdbd2cSJim Jagielski 591*b1cdbd2cSJim Jagielski} 592*b1cdbd2cSJim Jagielski 593*b1cdbd2cSJim Jagielski############################################################# 594*b1cdbd2cSJim Jagielski# Reading the Windows list file for language encodings 595*b1cdbd2cSJim Jagielski############################################################# 596*b1cdbd2cSJim Jagielski 597*b1cdbd2cSJim Jagielskisub read_encodinglist 598*b1cdbd2cSJim Jagielski{ 599*b1cdbd2cSJim Jagielski my ($patharrayref) = @_; 600*b1cdbd2cSJim Jagielski 601*b1cdbd2cSJim Jagielski my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$installer::globals::encodinglistname, $patharrayref , 0); 602*b1cdbd2cSJim Jagielski 603*b1cdbd2cSJim Jagielski if ( $$fileref eq "" ) { installer::exiter::exit_program("ERROR: Did not find Windows encoding list $installer::globals::encodinglistname!", "read_encodinglist"); } 604*b1cdbd2cSJim Jagielski 605*b1cdbd2cSJim Jagielski $installer::logger::Global->printf("Found encoding file: %s\n", $$fileref); 606*b1cdbd2cSJim Jagielski 607*b1cdbd2cSJim Jagielski my $encodinglist = installer::files::read_file($$fileref); 608*b1cdbd2cSJim Jagielski 609*b1cdbd2cSJim Jagielski my %msiencoding = (); 610*b1cdbd2cSJim Jagielski my %msilanguage = (); 611*b1cdbd2cSJim Jagielski 612*b1cdbd2cSJim Jagielski # Controlling the encoding list 613*b1cdbd2cSJim Jagielski 614*b1cdbd2cSJim Jagielski for ( my $i = 0; $i <= $#{$encodinglist}; $i++ ) 615*b1cdbd2cSJim Jagielski { 616*b1cdbd2cSJim Jagielski my $line = ${$encodinglist}[$i]; 617*b1cdbd2cSJim Jagielski 618*b1cdbd2cSJim Jagielski if ( $line =~ /^\s*\#/ ) { next; } # this is a comment line 619*b1cdbd2cSJim Jagielski 620*b1cdbd2cSJim Jagielski if ( $line =~ /^(.*?)(\#.*)$/ ) { $line = $1; } # removing comments after "#" 621*b1cdbd2cSJim Jagielski 622*b1cdbd2cSJim Jagielski if ( $line =~ /^\s*([\w-]+)\s*(\d+)\s*(\d+)\s*$/ ) 623*b1cdbd2cSJim Jagielski { 624*b1cdbd2cSJim Jagielski my $onelanguage = $1; 625*b1cdbd2cSJim Jagielski my $codepage = $2; 626*b1cdbd2cSJim Jagielski my $windowslanguage = $3; 627*b1cdbd2cSJim Jagielski 628*b1cdbd2cSJim Jagielski $msiencoding{$onelanguage} = $codepage; 629*b1cdbd2cSJim Jagielski $msilanguage{$onelanguage} = $windowslanguage; 630*b1cdbd2cSJim Jagielski } 631*b1cdbd2cSJim Jagielski else 632*b1cdbd2cSJim Jagielski { 633*b1cdbd2cSJim Jagielski installer::exiter::exit_program("ERROR: Wrong syntax in Windows encoding list $installer::globals::encodinglistname : en-US 1252 1033 !", "read_encodinglist"); 634*b1cdbd2cSJim Jagielski } 635*b1cdbd2cSJim Jagielski } 636*b1cdbd2cSJim Jagielski 637*b1cdbd2cSJim Jagielski $installer::globals::msiencoding = \%msiencoding; 638*b1cdbd2cSJim Jagielski $installer::globals::msilanguage = \%msilanguage; 639*b1cdbd2cSJim Jagielski 640*b1cdbd2cSJim Jagielski # my $key; 641*b1cdbd2cSJim Jagielski # foreach $key (keys %{$installer::globals::msiencoding}) { print "A Key: $key : Value: $installer::globals::msiencoding->{$key}\n"; } 642*b1cdbd2cSJim Jagielski # foreach $key (keys %{$installer::globals::msilanguage}) { print "B Key: $key : Value: $installer::globals::msilanguage->{$key}\n"; } 643*b1cdbd2cSJim Jagielski 644*b1cdbd2cSJim Jagielski} 645*b1cdbd2cSJim Jagielski 646*b1cdbd2cSJim Jagielski############################################################# 647*b1cdbd2cSJim Jagielski# Only for Windows and Linux (RPM)there is currently 648*b1cdbd2cSJim Jagielski# a reliable mechanism to register extensions during 649*b1cdbd2cSJim Jagielski# installation process. Therefore it is for all other 650*b1cdbd2cSJim Jagielski# platforms forbidden to install oxt files into that 651*b1cdbd2cSJim Jagielski# directory, in which they are searched for registration. 652*b1cdbd2cSJim Jagielski############################################################# 653*b1cdbd2cSJim Jagielski 654*b1cdbd2cSJim Jagielskisub check_oxtfiles 655*b1cdbd2cSJim Jagielski{ 656*b1cdbd2cSJim Jagielski my ( $filesarray ) = @_; 657*b1cdbd2cSJim Jagielski 658*b1cdbd2cSJim Jagielski for ( my $i = 0; $i <= $#{$filesarray}; $i++ ) 659*b1cdbd2cSJim Jagielski { 660*b1cdbd2cSJim Jagielski my $onefile = ${$filesarray}[$i]; 661*b1cdbd2cSJim Jagielski 662*b1cdbd2cSJim Jagielski if (( $onefile->{'Name'} ) && ( $onefile->{'Dir'} )) 663*b1cdbd2cSJim Jagielski { 664*b1cdbd2cSJim Jagielski if (( $onefile->{'Name'} =~ /\.oxt\s*$/ ) && ( $onefile->{'Dir'} eq $installer::globals::extensioninstalldir )) 665*b1cdbd2cSJim Jagielski { 666*b1cdbd2cSJim Jagielski installer::exiter::exit_program("There is currently only for Linux (RPM) and Windows a reliable mechanism to register extensions during installation.\nPlease remove file \"$onefile->{'gid'}\" from your installation set!\nYou can use \"\#ifdef WNT\" and \"\#ifdef LINUX\" in scp.", "check_oxtfiles"); 667*b1cdbd2cSJim Jagielski } 668*b1cdbd2cSJim Jagielski } 669*b1cdbd2cSJim Jagielski } 670*b1cdbd2cSJim Jagielski} 671*b1cdbd2cSJim Jagielski 672*b1cdbd2cSJim Jagielski############################################################# 673*b1cdbd2cSJim Jagielski# Check if Java is available to create xpd installer 674*b1cdbd2cSJim Jagielski############################################################# 675*b1cdbd2cSJim Jagielski 676*b1cdbd2cSJim Jagielskisub check_java_for_xpd 677*b1cdbd2cSJim Jagielski{ 678*b1cdbd2cSJim Jagielski my ( $allvariables ) = @_; 679*b1cdbd2cSJim Jagielski 680*b1cdbd2cSJim Jagielski if ( ! $installer::globals::solarjavaset ) { $allvariables->{'XPDINSTALLER'} = 0; } 681*b1cdbd2cSJim Jagielski} 682*b1cdbd2cSJim Jagielski 683*b1cdbd2cSJim Jagielski#################################################################### 684*b1cdbd2cSJim Jagielski# Setting global variable "$installer::globals::addchildprojects" 685*b1cdbd2cSJim Jagielski#################################################################### 686*b1cdbd2cSJim Jagielski 687*b1cdbd2cSJim Jagielskisub set_addchildprojects 688*b1cdbd2cSJim Jagielski{ 689*b1cdbd2cSJim Jagielski my ($allvariables) = @_; 690*b1cdbd2cSJim Jagielski 691*b1cdbd2cSJim Jagielski if (( $allvariables->{'JAVAPRODUCT'} ) || 692*b1cdbd2cSJim Jagielski ( $allvariables->{'ADAPRODUCT'} ) || 693*b1cdbd2cSJim Jagielski ( $allvariables->{'UREPRODUCT'} ) || 694*b1cdbd2cSJim Jagielski ( $allvariables->{'ADDREQUIREDPACKAGES'} )) { $installer::globals::addchildprojects = 1; } 695*b1cdbd2cSJim Jagielski 696*b1cdbd2cSJim Jagielski if ( $installer::globals::patch ) 697*b1cdbd2cSJim Jagielski { 698*b1cdbd2cSJim Jagielski $installer::globals::addchildprojects = 0; # no child projects for patches 699*b1cdbd2cSJim Jagielski } 700*b1cdbd2cSJim Jagielski 701*b1cdbd2cSJim Jagielski $installer::logger::Global->printf( 702*b1cdbd2cSJim Jagielski "Value of \$installer::globals::addchildprojects: %s\n", 703*b1cdbd2cSJim Jagielski $installer::globals::addchildprojects); 704*b1cdbd2cSJim Jagielski} 705*b1cdbd2cSJim Jagielski 706*b1cdbd2cSJim Jagielski#################################################################### 707*b1cdbd2cSJim Jagielski# Setting global variable "$installer::globals::addjavainstaller" 708*b1cdbd2cSJim Jagielski#################################################################### 709*b1cdbd2cSJim Jagielski 710*b1cdbd2cSJim Jagielskisub set_addjavainstaller 711*b1cdbd2cSJim Jagielski{ 712*b1cdbd2cSJim Jagielski my ($allvariables) = @_; 713*b1cdbd2cSJim Jagielski 714*b1cdbd2cSJim Jagielski if ( $allvariables->{'JAVAINSTALLER'} ) { $installer::globals::addjavainstaller = 1; } 715*b1cdbd2cSJim Jagielski 716*b1cdbd2cSJim Jagielski if ( $installer::globals::patch ) { $installer::globals::addjavainstaller = 0; } 717*b1cdbd2cSJim Jagielski if ( $installer::globals::languagepack ) { $installer::globals::addjavainstaller = 0; } 718*b1cdbd2cSJim Jagielski if ( $allvariableshashref->{'XPDINSTALLER'} ) { $installer::globals::addjavainstaller = 0; } 719*b1cdbd2cSJim Jagielski 720*b1cdbd2cSJim Jagielski $installer::logger::Global->printf( 721*b1cdbd2cSJim Jagielski "Value of \$installer::globals::addjavainstaller: %s\n", 722*b1cdbd2cSJim Jagielski $installer::globals::addjavainstaller); 723*b1cdbd2cSJim Jagielski} 724*b1cdbd2cSJim Jagielski 725*b1cdbd2cSJim Jagielski####################################################################### 726*b1cdbd2cSJim Jagielski# Setting global variable "$installer::globals::addsystemintegration" 727*b1cdbd2cSJim Jagielski####################################################################### 728*b1cdbd2cSJim Jagielski 729*b1cdbd2cSJim Jagielskisub set_addsystemintegration 730*b1cdbd2cSJim Jagielski{ 731*b1cdbd2cSJim Jagielski my ($allvariables) = @_; 732*b1cdbd2cSJim Jagielski 733*b1cdbd2cSJim Jagielski if ( $allvariables->{'ADDSYSTEMINTEGRATION'} ) { $installer::globals::addsystemintegration = 1; } 734*b1cdbd2cSJim Jagielski 735*b1cdbd2cSJim Jagielski if ( $installer::globals::patch ) { $installer::globals::addsystemintegration = 0; } 736*b1cdbd2cSJim Jagielski if ( $installer::globals::languagepack ) { $installer::globals::addsystemintegration = 0; } 737*b1cdbd2cSJim Jagielski if (( $installer::globals::packageformat eq "native" ) || ( $installer::globals::packageformat eq "portable" )) { $installer::globals::addsystemintegration = 0; } 738*b1cdbd2cSJim Jagielski 739*b1cdbd2cSJim Jagielski $installer::logger::Global->printf( 740*b1cdbd2cSJim Jagielski "Value of \$installer::globals::addsystemintegration: %s\n", 741*b1cdbd2cSJim Jagielski $installer::globals::addsystemintegration); 742*b1cdbd2cSJim Jagielski} 743*b1cdbd2cSJim Jagielski 744*b1cdbd2cSJim Jagielski1; 745