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::parameter;
29
30use Cwd;
31use installer::exiter;
32use installer::files;
33use installer::globals;
34use installer::logger;
35use installer::remover;
36use installer::systemactions;
37
38############################################
39# Parameter Operations
40############################################
41
42sub usage
43{
44	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::usage"); }
45
46	print <<Ende;
47--------------------------------------------------------------------------------
48$installer::globals::prog
49The following parameter are needed:
50-f: Path to the product list (required)
51-s: Path to the setup script (optional, if defined in product list)
52-i: Install path of the product (/opt/openofficeorg20) (optional)
53-p: Product from product list to be created (required)
54-l: Language of the product (comma and hash) (optional, defined in productlist)
55-b: Build, e.g. srx645 (optional)
56-m: Minor, e.g. m10 (optional)
57-simple: Path to do a simple install to
58-c: Compiler, e.g. wntmsci8, unxlngi5, unxsols4, ... (optional)
59-u: Path, in which zipfiles are unpacked (optional)
60-msitemplate: Source of the msi file templates (Windows compiler only)
61-msilanguage: Source of the msi file templates (Windows compiler only)
62-javalanguage: Source of the Java language files (opt., non-Windows only)
63-buildid: Current BuildID (optional)
64-pro: Product version
65-format: Package format
66-debian: Create Debian packages for Linux
67-dontunzip: do not unzip all files with flag ARCHIVE
68-dontcallepm : do not call epm to create install sets (opt., non-Windows only)
69-ispatchedepm : Usage of a patched (non-standard) epm (opt., non-Windows only)
70-copyproject : is set for projects that are only used for copying (optional)
71-languagepack : do create a languagepack, no product pack (optional)
72-patch : do create a patch (optional)
73-patchinc: Source for the patch include files (Solaris only)
74-dontstrip: No file stripping (Unix only)
75-log : Logging all available information (optional)
76-debug : Collecting debug information
77
78Examples for Windows:
79
80perl make_epmlist.pl -f zip.lst -p OfficeFAT -l en-US
81                     -u /export/unpack -buildid 8712
82                     -msitemplate /export/msi_files
83                     -msilanguage /export/msi_languages
84
85Examples for Non-Windows:
86
87perl make_epmlist.pl -f zip.lst -p OfficeFAT -l en-US -format rpm
88                     -u /export/unpack -buildid 8712 -ispatchedepm
89--------------------------------------------------------------------------------
90Ende
91	exit(-1);
92}
93
94#########################################
95# Writing all parameter into logfile
96#########################################
97
98sub saveparameter
99{
100	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::saveparameter"); }
101
102	my $include = "";
103
104	installer::logger::globallog("Command line arguments:");
105
106	for ( my $i = 0; $i <= $#ARGV; $i++ )
107	{
108		$include = $ARGV[$i] . "\n";
109		push(@installer::globals::globallogfileinfo, $include);
110	}
111
112	# also saving global settings:
113
114	$include = "Separator: $installer::globals::separator\n";
115	push(@installer::globals::globallogfileinfo, $include);
116
117}
118
119#####################################
120# Reading parameter
121#####################################
122
123sub getparameter
124{
125	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::getparameter"); }
126
127	while ( $#ARGV >= 0 )
128	{
129		my $param = shift(@ARGV);
130
131		if ($param eq "-f") { $installer::globals::ziplistname = shift(@ARGV); }
132		elsif ($param eq "-s") { $installer::globals::setupscriptname = shift(@ARGV); }
133		elsif ($param eq "-p") { $installer::globals::product = shift(@ARGV); }
134		elsif ($param eq "-l") { $installer::globals::languagelist = shift(@ARGV); }
135		elsif ($param eq "-b") { $installer::globals::build = shift(@ARGV); }
136		elsif ($param eq "-m") { $installer::globals::minor = shift(@ARGV); }
137		elsif ($param eq "-dontunzip") { $installer::globals::dounzip = 0; }
138		elsif ($param eq "-c") { $installer::globals::compiler = shift(@ARGV); }
139		elsif ($param eq "-pro") { $installer::globals::pro = 1; }
140		elsif ($param eq "-format") { $installer::globals::packageformat = shift(@ARGV); }
141		elsif ($param eq "-log") { $installer::globals::globallogging = 1; }
142		elsif ($param eq "-quiet") { $installer::globals::quiet = 1; }
143		elsif ($param eq "-verbose") { $installer::globals::quiet = 0; }
144		elsif ($param eq "-debug") { $installer::globals::debug = 1; }
145		elsif ($param eq "-tab") { $installer::globals::tab = 1; }
146		elsif ($param eq "-u") { $installer::globals::unpackpath = shift(@ARGV); }
147		elsif ($param eq "-i") { $installer::globals::rootpath = shift(@ARGV); }
148		elsif ($param eq "-dontcallepm") { $installer::globals::call_epm = 0; }
149		elsif ($param eq "-msitemplate") { $installer::globals::idttemplatepath = shift(@ARGV); }
150		elsif ($param eq "-msilanguage") { $installer::globals::idtlanguagepath = shift(@ARGV); }
151		elsif ($param eq "-patchinc") { $installer::globals::patchincludepath = shift(@ARGV); }
152		elsif ($param eq "-javalanguage") { $installer::globals::javalanguagepath = shift(@ARGV); }
153		elsif ($param eq "-buildid") { $installer::globals::buildid = shift(@ARGV); }
154		elsif ($param eq "-copyproject") { $installer::globals::is_copy_only_project = 1; }
155		elsif ($param eq "-languagepack") { $installer::globals::languagepack = 1; }
156		elsif ($param eq "-patch") { $installer::globals::patch = 1; }
157		elsif ($param eq "-debian") { $installer::globals::debian = 1; }
158		elsif ($param eq "-dontstrip") { $installer::globals::strip = 0; }
159		elsif ($param eq "-destdir")	# new parameter for simple installer
160		{
161			$installer::globals::rootpath ne "" && die "must set destdir before -i or -simple";
162			$installer::globals::destdir = shift @ARGV;
163		}
164		elsif ($param eq "-simple")		# new parameter for simple installer
165		{
166			$installer::globals::simple = 1;
167			$installer::globals::call_epm = 0;
168			$installer::globals::makedownload = 0;
169			$installer::globals::makejds = 0;
170			$installer::globals::strip = 0;
171			my $path = shift(@ARGV);
172			$path =~ s/^\Q$installer::globals::destdir\E//;
173			$installer::globals::rootpath = $path;
174		}
175		else
176		{
177			installer::logger::print_error( "unknown parameter: $param" );
178			usage();
179			exit(-1);
180		}
181	}
182
183	# Usage of simple installer (not for Windows):
184	# $PERL -w $SOLARENV/bin/make_installer.pl \
185	# -f openoffice.lst -l en-US -p OpenOffice \
186	# -buildid $BUILD -rpm \
187	# -destdir /tmp/nurk -simple $INSTALL_PATH
188}
189
190############################################
191# Controlling  the fundamental parameter
192# (required for every process)
193############################################
194
195sub control_fundamental_parameter
196{
197	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::control_fundamental_parameter"); }
198
199	if ($installer::globals::product eq "")
200	{
201		installer::logger::print_error( "Product name not set!" );
202		usage();
203		exit(-1);
204	}
205}
206
207##########################################################
208# The path parameters can be relative or absolute.
209# This function creates absolute pathes.
210##########################################################
211
212sub make_path_absolute
213{
214	my ($pathref) = @_;
215
216	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::make_path_absolute : $$pathref"); }
217
218	if ( $installer::globals::isunix )
219	{
220		if (!($$pathref =~ /^\s*\//))	# this is a relative unix path
221		{
222			$$pathref = cwd() . $installer::globals::separator . $$pathref;
223		}
224	}
225
226	if ( $installer::globals::iswin )
227	{
228		if ( $^O =~ /cygwin/i )
229		{
230			if ( $$pathref !~ /^\s*\// && $$pathref !~ /^\s*\w\:/ )	# not an absolute POSIX or DOS path
231			{
232				$$pathref = cwd() . $installer::globals::separator . $$pathref;
233			}
234			my $p = $$pathref;
235			chomp( $p );
236			my $q = '';
237			# Avoid the $(LANG) problem.
238			if ($p =~ /(\A.*)(\$\(.*\Z)/) {
239				$p = $1;
240				$q = $2;
241			}
242			$p =~ s/\\/\\\\/g;
243			chomp( $p = qx{cygpath -w "$p"} );
244			$$pathref = $p.$q;
245			# Use windows paths, but with '/'s.
246			$$pathref =~ s/\\/\//g;
247		}
248		else
249		{
250			if (!($$pathref =~ /^\s*\w\:/))	# this is a relative windows path (no dos drive)
251			{
252				$$pathref = cwd() . $installer::globals::separator . $$pathref;
253
254				$$pathref =~ s/\//\\/g;
255			}
256		}
257	}
258	$$pathref =~ s/[\/\\]\s*$//;	# removing ending slashes
259}
260
261##################################################
262# Setting some global parameters
263# This has to be expanded with furher platforms
264##################################################
265
266sub setglobalvariables
267{
268	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::setglobalvariables"); }
269
270	# Setting the installertype directory corresponding to the environment variable PKGFORMAT
271	# The global variable $installer::globals::packageformat can only contain one package format.
272	# If PKGFORMAT cotains more than one format (for example "rpm deb") this is splitted in the
273	# makefile calling the perl program.
274	$installer::globals::installertypedir = $installer::globals::packageformat;
275
276	if ( $installer::globals::compiler =~ /wnt(msc|gcc)i/ )
277	{
278		$installer::globals::iswindowsbuild = 1;
279	}
280
281	if ( $installer::globals::compiler =~ /unxso[lg][siux]/ )
282	{
283		$installer::globals::issolarisbuild = 1;
284		if ( $installer::globals::packageformat eq "pkg" )
285		{
286			$installer::globals::issolarispkgbuild = 1;
287			$installer::globals::epmoutpath = "packages";
288			$installer::globals::isxpdplatform = 1;
289		}
290	}
291
292	if (( $installer::globals::compiler =~ /unxmacxi/ ) || ( $installer::globals::compiler =~ /unxmacxp/ ))
293	{
294		$installer::globals::ismacbuild = 1;
295
296		if ( $installer::globals::packageformat eq "dmg" )
297		{
298			$installer::globals::ismacdmgbuild = 1;
299		}
300	}
301
302	if ( $installer::globals::compiler =~ /unxfbsd/ )
303	{
304		$installer::globals::isfreebsdbuild = 1;
305
306		if ( $installer::globals::packageformat eq "bsd" )
307		{
308			$installer::globals::epmoutpath = "freebsd";
309			$installer::globals::isfreebsdpkgbuild = 1;
310		}
311	}
312
313	if ( $installer::globals::compiler =~ /unxso[lg]s/ ) { $installer::globals::issolarissparcbuild = 1; }
314
315	if ( $installer::globals::compiler =~ /unxso[lg]i/ ) { $installer::globals::issolarisx86build = 1; }
316
317	if ($ENV{OS} eq 'LINUX')
318	{
319		$installer::globals::islinuxbuild = 1;
320		if ( $installer::globals::packageformat eq "rpm" )
321		{
322			$installer::globals::islinuxrpmbuild = 1;
323			$installer::globals::isxpdplatform = 1;
324			$installer::globals::epmoutpath = "RPMS";
325			if ( $installer::globals::compiler =~ /unxlngi/ )
326			{
327				$installer::globals::islinuxintelrpmbuild = 1;
328			}
329			if ( $installer::globals::compiler =~ /unxlngppc/ )
330			{
331				$installer::globals::islinuxppcrpmbuild = 1;
332			}
333			if ( $installer::globals::compiler =~ /unxlngx/ )
334			{
335				$installer::globals::islinuxx86_64rpmbuild = 1;
336			}
337
338			if ( $installer::globals::rpm eq "" ) { installer::exiter::exit_program("ERROR: Environment variable \"\$RPM\" has to be defined!", "setglobalvariables"); }
339		}
340
341		# Creating Debian packages ?
342		if (( $installer::globals::packageformat eq "deb" ) || ( $installer::globals::debian ))
343		{
344			$installer::globals::debian = 1;
345			$installer::globals::packageformat = "deb";
346			my $message = "Creating Debian packages";
347			installer::logger::print_message( $message );
348			push(@installer::globals::globallogfileinfo, $message);
349			$installer::globals::islinuxrpmbuild = 0;
350			$installer::globals::islinuxdebbuild = 1;
351			$installer::globals::epmoutpath = "DEBS";
352			if ( $installer::globals::compiler =~ /unxlngi/ )
353			{
354				$installer::globals::islinuxinteldebbuild = 1;
355			}
356			if ( $installer::globals::compiler =~ /unxlngppc/ )
357			{
358				$installer::globals::islinuxppcdebbuild = 1;
359			}
360			if ( $installer::globals::compiler =~ /unxlngx/ )
361			{
362				$installer::globals::islinuxx86_64debbuild = 1;
363			}
364		}
365	}
366
367	# Defaulting to native package format for epm
368
369	if ( ! $installer::globals::packageformat ) { $installer::globals::packageformat = "native"; }
370
371	# extension, if $installer::globals::pro is set
372	if ($installer::globals::pro) { $installer::globals::productextension = ".pro"; }
373
374	# no languages defined as parameter
375	if ($installer::globals::languagelist eq "") { $installer::globals::languages_defined_in_productlist = 1; }
376
377	# setting and creating the unpackpath
378
379	if ($installer::globals::unpackpath eq "")	# unpackpath not set
380	{
381		$installer::globals::unpackpath = cwd();
382		if ( $installer::globals::iswin ) { $installer::globals::unpackpath =~ s/\//\\/g; }
383	}
384
385	if ( $installer::globals::localunpackdir ne "" ) { $installer::globals::unpackpath = $installer::globals::localunpackdir; }
386
387	if (!($installer::globals::unpackpath eq ""))
388	{
389		make_path_absolute(\$installer::globals::unpackpath);
390	}
391
392	$installer::globals::unpackpath =~ s/\Q$installer::globals::separator\E\s*$//;
393
394	if (! -d $installer::globals::unpackpath )	# create unpackpath
395	{
396		installer::systemactions::create_directory($installer::globals::unpackpath);
397	}
398
399	# setting jds exclude file list
400
401	if ( $installer::globals::islinuxrpmbuild )
402	{
403		$installer::globals::jdsexcludefilename = "jds_excludefiles_linux.txt";
404	}
405	if ( $installer::globals::issolarissparcbuild )
406	{
407		$installer::globals::jdsexcludefilename = "jds_excludefiles_solaris_sparc.txt";
408	}
409	if ( $installer::globals::issolarisx86build )
410	{
411		$installer::globals::jdsexcludefilename = "jds_excludefiles_solaris_intel.txt";
412	}
413
414	# setting and creating the temppath
415
416	if (( $ENV{'TMP'} ) || ( $ENV{'TEMP'} ) || ( $ENV{'TMPDIR'} ))
417	{
418		if ( $ENV{'TMP'} ) { $installer::globals::temppath = $ENV{'TMP'}; }
419		elsif ( $ENV{'TEMP'} )  { $installer::globals::temppath = $ENV{'TEMP'}; }
420		elsif ( $ENV{'TMPDIR'} )  { $installer::globals::temppath = $ENV{'TMPDIR'}; }
421		$installer::globals::temppath =~ s/\Q$installer::globals::separator\E\s*$//;	# removing ending slashes and backslashes
422		$installer::globals::temppath = $installer::globals::temppath . $installer::globals::separator . $installer::globals::globaltempdirname;
423		installer::systemactions::create_directory_with_privileges($installer::globals::temppath, "777");
424		my $dirsave = $installer::globals::temppath;
425
426		if ( $installer::globals::compiler =~ /^unxmac/ )
427		{
428			my $localcall = "chmod 777 $installer::globals::temppath \>\/dev\/null 2\>\&1";
429			system($localcall);
430		}
431
432		$installer::globals::temppath = $installer::globals::temppath . $installer::globals::separator . "i";
433		$installer::globals::temppath = installer::systemactions::create_pid_directory($installer::globals::temppath);
434		push(@installer::globals::removedirs, $installer::globals::temppath);
435
436		if ( ! -d $installer::globals::temppath ) { installer::exiter::exit_program("ERROR: Failed to create directory $installer::globals::temppath ! Possible reason: Wrong privileges in directory $dirsave .", "setglobalvariables"); }
437
438		$installer::globals::jdstemppath = $installer::globals::temppath;
439		$installer::globals::jdstemppath =~ s/i_/j_/;
440		push(@installer::globals::jdsremovedirs, $installer::globals::jdstemppath);
441		$installer::globals::temppath = $installer::globals::temppath . $installer::globals::separator . $installer::globals::compiler . $installer::globals::productextension;
442		installer::systemactions::create_directory($installer::globals::temppath);
443		if ( $^O =~ /cygwin/i )
444		{
445			$installer::globals::cyg_temppath = $installer::globals::temppath;
446			$installer::globals::cyg_temppath =~ s/\\/\\\\/g;
447			chomp( $installer::globals::cyg_temppath = qx{cygpath -w "$installer::globals::cyg_temppath"} );
448		}
449		$installer::globals::temppathdefined = 1;
450		$installer::globals::jdstemppathdefined = 1;
451	}
452	else
453	{
454		$installer::globals::temppathdefined = 0;
455		$installer::globals::jdstemppathdefined = 0;
456	}
457
458	# only one cab file, if Windows msp patches shall be prepared
459	if ( $installer::globals::prepare_winpatch ) { $installer::globals::number_of_cabfiles = 1; }
460
461}
462
463############################################
464# Controlling  the parameter that are
465# required for special processes
466############################################
467
468sub control_required_parameter
469{
470	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::control_required_parameter"); }
471
472	if (!($installer::globals::is_copy_only_project))
473	{
474		##############################################################################################
475		# idt template path. Only required for Windows build ($installer::globals::compiler =~ /wntmsci/)
476		# for the creation of the msi database.
477		##############################################################################################
478
479		if (($installer::globals::idttemplatepath eq "") && ($installer::globals::iswindowsbuild))
480		{
481			installer::logger::print_error( "idt template path not set (-msitemplate)!" );
482			usage();
483			exit(-1);
484		}
485
486		##############################################################################################
487		# idt language path. Only required for Windows build ($installer::globals::compiler =~ /wntmsci/)
488		# for the creation of the msi database.
489		##############################################################################################
490
491		if (($installer::globals::idtlanguagepath eq "") && ($installer::globals::iswindowsbuild))
492		{
493			installer::logger::print_error( "idt language path not set (-msilanguage)!" );
494			usage();
495			exit(-1);
496		}
497
498		# Analyzing the idt template path
499
500		if (!($installer::globals::idttemplatepath eq ""))	# idttemplatepath set, relative or absolute?
501		{
502			make_path_absolute(\$installer::globals::idttemplatepath);
503		}
504
505		installer::remover::remove_ending_pathseparator(\$installer::globals::idttemplatepath);
506
507		# Analyzing the idt language path
508
509		if (!($installer::globals::idtlanguagepath eq ""))	# idtlanguagepath set, relative or absolute?
510		{
511			make_path_absolute(\$installer::globals::idtlanguagepath);
512		}
513
514		installer::remover::remove_ending_pathseparator(\$installer::globals::idtlanguagepath);
515
516		# In the msi template directory a files "codes.txt" has to exist, in which the ProductCode
517		# and the UpgradeCode for the product are defined.
518		# The name "codes.txt" can be overwritten in Product definition with CODEFILENAME (msiglobal.pm)
519
520		if (( $installer::globals::iswindowsbuild ) && ( $installer::globals::packageformat ne "archive" ) && ( $installer::globals::packageformat ne "installed" ))
521		{
522			$installer::globals::codefilename = $installer::globals::idttemplatepath  . $installer::globals::separator . $installer::globals::codefilename;
523			installer::files::check_file($installer::globals::codefilename);
524			$installer::globals::componentfilename = $installer::globals::idttemplatepath  . $installer::globals::separator . $installer::globals::componentfilename;
525			installer::files::check_file($installer::globals::componentfilename);
526		}
527
528	}
529
530	#######################################
531	# Patch currently only available
532	# for Solaris packages and Linux
533	#######################################
534
535	if (( $installer::globals::patch ) && ( ! $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::islinuxrpmbuild ) && ( ! $installer::globals::islinuxdebbuild ) && ( ! $installer::globals::iswindowsbuild ) && ( ! $installer::globals::ismacdmgbuild ))
536	{
537		installer::logger::print_error( "Sorry, Patch flag currently only available for Solaris pkg, Linux RPM and Windows builds!" );
538		usage();
539		exit(-1);
540	}
541
542	if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::patchincludepath ))
543	{
544		installer::logger::print_error( "Solaris patch requires parameter -patchinc !" );
545		usage();
546		exit(-1);
547	}
548
549	if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ) && ( $installer::globals::patchincludepath ))
550	{
551		make_path_absolute(\$installer::globals::patchincludepath);
552		$installer::globals::patchincludepath = installer::converter::make_path_conform($installer::globals::patchincludepath);
553	}
554
555	#######################################
556	# Testing existence of files
557	# also for copy-only projects
558	#######################################
559
560	if ($installer::globals::ziplistname eq "")
561	{
562		installer::logger::print_error( "ERROR: Zip list file has to be defined (Parameter -f) !" );
563		usage();
564		exit(-1);
565	}
566	else
567	{
568		installer::files::check_file($installer::globals::ziplistname);
569	}
570
571	if ($installer::globals::setupscriptname eq "")	{ $installer::globals::setupscript_defined_in_productlist = 1; }
572	else { installer::files::check_file($installer::globals::setupscriptname); } # if the setupscript file is defined, it has to exist
573
574}
575
576################################################
577# Writing parameter to shell and into logfile
578################################################
579
580sub outputparameter
581{
582	if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::parameter::outputparameter"); }
583
584	my $element;
585
586	my @output = ();
587
588	push(@output, "\n########################################################\n");
589	push(@output, "$installer::globals::prog, version 1.0\n");
590	push(@output, "Product list file: $installer::globals::ziplistname\n");
591	if (!($installer::globals::setupscript_defined_in_productlist))
592	{
593		push(@output, "Setup script: $installer::globals::setupscriptname\n");
594	}
595	else
596	{
597		push(@output, "Taking setup script from solver\n");
598	}
599	push(@output, "Unpackpath: $installer::globals::unpackpath\n");
600	push(@output, "Compiler: $installer::globals::compiler\n");
601	push(@output, "Product: $installer::globals::product\n");
602	push(@output, "BuildID: $installer::globals::buildid\n");
603	push(@output, "Build: $installer::globals::build\n");
604	if ( $installer::globals::minor ) { push(@output, "Minor: $installer::globals::minor\n"); }
605	else  { push(@output, "No minor set\n"); }
606	if ( $installer::globals::pro ) { push(@output, "Product version\n"); }
607	else  { push(@output, "Non-Product version\n"); }
608	if ( $installer::globals::rootpath eq "" ) { push(@output, "Using default installpath\n"); }
609	else { push(@output, "Installpath: $installer::globals::rootpath\n"); }
610	push(@output, "Package format: $installer::globals::packageformat\n");
611	if (!($installer::globals::idttemplatepath eq ""))	{ push(@output, "msi templatepath: $installer::globals::idttemplatepath\n"); }
612	if ((!($installer::globals::idttemplatepath eq "")) && (!($installer::globals::iswindowsbuild))) { push(@output, "msi template path will be ignored for non Windows builds!\n"); }
613	if (!($installer::globals::idtlanguagepath eq ""))	{ push(@output, "msi languagepath: $installer::globals::idtlanguagepath\n"); }
614	if ((!($installer::globals::idtlanguagepath eq "")) && (!($installer::globals::iswindowsbuild))) { push(@output, "msi language path will be ignored for non Windows builds!\n"); }
615	if ((!($installer::globals::iswindowsbuild)) && ( $installer::globals::call_epm )) { push(@output, "Calling epm\n"); }
616	if ((!($installer::globals::iswindowsbuild)) && (!($installer::globals::call_epm))) { push(@output, "Not calling epm\n"); }
617	if (!($installer::globals::javalanguagepath eq "")) { push(@output, "Java language path: $installer::globals::javalanguagepath\n"); }
618	if ((!($installer::globals::javalanguagepath eq "")) && ($installer::globals::iswindowsbuild)) { push(@output, "Java language path will be ignored for Windows builds!\n"); }
619	if ( $installer::globals::patchincludepath ) { push(@output, "Patch include path: $installer::globals::patchincludepath\n"); }
620	if ( $installer::globals::globallogging ) { push(@output, "Complete logging activated\n"); }
621	if ( $installer::globals::debug ) { push(@output, "Debug is activated\n"); }
622	if ( $installer::globals::tab ) { push(@output, "TAB version\n"); }
623	if ( $installer::globals::strip ) { push(@output, "Stripping files\n"); }
624	else { push(@output, "No file stripping\n"); }
625	if ( $installer::globals::debian ) { push(@output, "Linux: Creating Debian packages\n"); }
626	if ( $installer::globals::dounzip ) { push(@output, "Unzip ARCHIVE files\n"); }
627	else  { push(@output, "Not unzipping ARCHIVE files\n"); }
628	if (!($installer::globals::languages_defined_in_productlist))
629	{
630		push(@output, "Languages:\n");
631		foreach $element (@installer::globals::languageproducts) { push(@output, "\t$element\n"); }
632	}
633	else
634	{
635		push(@output, "Languages defined in $installer::globals::ziplistname\n");
636	}
637	if ( $installer::globals::is_copy_only_project ) { push(@output, "This is a copy only project!\n"); }
638	if ( $installer::globals::languagepack ) { push(@output, "Creating language pack!\n"); }
639	if ( $installer::globals::patch ) { push(@output, "Creating patch!\n"); }
640	push(@output, "########################################################\n");
641
642	# output into shell and into logfile
643
644	for ( my $i = 0; $i <= $#output; $i++ )
645	{
646		installer::logger::print_message( $output[$i] );
647		push(@installer::globals::globallogfileinfo, $output[$i]);
648	}
649}
650
6511;
652