solenv/bin/make_installer.pl | 92 ++++++++------- solenv/bin/modules/installer/globals.pm | 5 solenv/bin/modules/installer/scriptitems.pm | 6 solenv/bin/modules/installer/windows/directory.pm | 1 solenv/bin/modules/installer/windows/property.pm | 12 - solenv/bin/modules/installer/ziplist.pm | 134 +++++++++++++++++++++- 6 files changed, 182 insertions(+), 68 deletions(-)
New commits: commit 7bb645484e11308be6c6de5b5de7079cd532a662 Author: Andre Fischer <a...@apache.org> Date: Fri Nov 22 09:36:12 2013 +0000 123729: Factored out reading of openoffice.lst to its own function. diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl index 400949c..463f2d4f9 100644 --- a/solenv/bin/make_installer.pl +++ b/solenv/bin/make_installer.pl @@ -87,6 +87,58 @@ use installer::worker; use installer::xpdinstaller; use installer::ziplist; +use strict; + +sub GetSetupScriptLines ($$$) +{ + my ($allsettingsarrayref, $allvariableshashref, $includepatharrayref) = @_; + + if ($installer::globals::setupscript_defined_in_productlist) + { + installer::setupscript::set_setupscript_name($allsettingsarrayref, $includepatharrayref); + } + + $installer::logger::Info->print( "... analyzing script: $installer::globals::setupscriptname ... \n" ); + installer::logger::globallog("setup script file: $installer::globals::setupscriptname"); + $installer::logger::Info->print( "... analyzing script: $installer::globals::setupscriptname ... \n" ); + + # Reading the setup script file + my $setupscriptref = installer::files::read_file($installer::globals::setupscriptname); + + # Resolving variables defined in the zip list file into setup + # script. All the variables are defined in $allvariablesarrayref + installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref); + + # Resolving %variables defined in the installation object + my $allscriptvariablesref = installer::setupscript::get_all_scriptvariables_from_installation_object( + $setupscriptref, + $installer::globals::setupscriptname); + installer::setupscript::add_lowercase_productname_setupscriptvariable($allscriptvariablesref); + installer::setupscript::resolve_lowercase_productname_setupscriptvariable($allscriptvariablesref); + + $setupscriptref = installer::setupscript::replace_all_setupscriptvariables_in_script( + $setupscriptref, + $allscriptvariablesref); + + # Adding all variables defined in the installation object into the + # hash of all variables. This is needed if variables are defined + # in the installation object, but not in the zip list file. If + # there is a definition in the zip list file and in the + # installation object, the installation object is more important + installer::setupscript::add_installationobject_to_variables($allvariableshashref, $allscriptvariablesref); + + # Adding also all variables, that must be included into the $allvariableshashref. + installer::setupscript::add_forced_properties($allvariableshashref); + + # Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME) + installer::setupscript::replace_preset_properties($allvariableshashref); + + # We did this already. Can this or the other one be removed. + installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref); + + return $setupscriptref; +} + ################################################# # Main program ################################################# @@ -334,43 +386,7 @@ installer::control::check_java_for_xpd($allvariableshashref); # Analyzing the setup script ##################################### -if ($installer::globals::setupscript_defined_in_productlist) { installer::setupscript::set_setupscript_name($allsettingsarrayref, $includepatharrayref); } - -installer::logger::globallog("setup script file: $installer::globals::setupscriptname"); - -$installer::logger::Info->print( "... analyzing script: $installer::globals::setupscriptname ... \n" ); - -my $setupscriptref = installer::files::read_file($installer::globals::setupscriptname); # Reading the setup script file - -# Resolving variables defined in the zip list file into setup script -# All the variables are defined in $allvariablesarrayref - -installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref); - -# Resolving %variables defined in the installation object - -my $allscriptvariablesref = installer::setupscript::get_all_scriptvariables_from_installation_object($setupscriptref); - -installer::setupscript::add_lowercase_productname_setupscriptvariable($allscriptvariablesref); - -installer::setupscript::resolve_lowercase_productname_setupscriptvariable($allscriptvariablesref); - -$setupscriptref = installer::setupscript::replace_all_setupscriptvariables_in_script($setupscriptref, $allscriptvariablesref); - -# Adding all variables defined in the installation object into the hash of all variables. -# This is needed if variables are defined in the installation object, but not in the zip list file. -# If there is a definition in the zip list file and in the installation object, the installation object is more important - -installer::setupscript::add_installationobject_to_variables($allvariableshashref, $allscriptvariablesref); - -# Adding also all variables, that must be included into the $allvariableshashref. -installer::setupscript::add_forced_properties($allvariableshashref); - -# Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME) -installer::setupscript::replace_preset_properties($allvariableshashref); - -installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref); - +my $setupscriptref = GetSetupScriptLines($allsettingsarrayref, $allvariableshashref, $includepatharrayref); installer::logger::log_hashref($allvariableshashref); @@ -656,7 +672,7 @@ for (;1;last) # Resolving include paths (language dependent) ################################################ - $includepatharrayref_lang = installer::ziplist::replace_languages_in_pathes($includepatharrayref, $languagesarrayref); + my $includepatharrayref_lang = installer::ziplist::replace_languages_in_pathes($includepatharrayref, $languagesarrayref); if ( $installer::globals::refresh_includepathes ) { installer::worker::collect_all_files_from_includepathes($includepatharrayref_lang); } diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm index 6673c32..7c66cdd 100644 --- a/solenv/bin/modules/installer/ziplist.pm +++ b/solenv/bin/modules/installer/ziplist.pm @@ -30,6 +30,121 @@ use installer::logger; use installer::parameter; use installer::remover; use installer::systemactions; +use strict; + +=head2 read_openoffice_lst_file (#loggingdir) + Read the settings and variables from the settings file (typically 'openoffice.lst'). +=cut +sub read_openoffice_lst_file ($$;$) +{ + my ($filename, $product_name, $loggingdir) = @_; + + # Read all lines from the settings file. + my $ziplistref = installer::files::read_file($filename); + + # Extract the lines of the settings block for the current product. + my ($productblockref, $parent) = installer::ziplist::getproductblock( + $ziplistref, $product_name, 1); + my ($settingsblockref, undef) = installer::ziplist::getproductblock($productblockref, "Settings", 0); + $settingsblockref = installer::ziplist::analyze_settings_block($settingsblockref); + + # Split into settings and variables. + my $allsettingsarrayref = installer::ziplist::get_settings_from_ziplist($settingsblockref); + my $allvariablesarrayref = installer::ziplist::get_variables_from_ziplist($settingsblockref); + + # global product block from zip.lst + my ($globalproductblockref, undef) = installer::ziplist::getproductblock( + $ziplistref, $installer::globals::globalblock, 0); + + if ($installer::globals::globallogging && defined $loggingdir) + { + installer::files::save_file($loggingdir . "productblock.log", $productblockref); + installer::files::save_file($loggingdir . "settingsblock.log", $settingsblockref); + installer::files::save_file($loggingdir . "allsettings1.log", $allsettingsarrayref); + installer::files::save_file($loggingdir . "allvariables1.log", $allvariablesarrayref); + installer::files::save_file($loggingdir . "globalproductblock.log", $globalproductblockref); + } + + # Integrate parent values. + while (defined $parent) + { + my $parentproductblockref; + ($parentproductblockref, $parent) = installer::ziplist::getproductblock($ziplistref, $parent, 1); + my ($parentsettingsblockref, undef) = installer::ziplist::getproductblock( + $parentproductblockref, "Settings", 0); + $parentsettingsblockref = installer::ziplist::analyze_settings_block($parentsettingsblockref); + my $allparentsettingsarrayref = installer::ziplist::get_settings_from_ziplist($parentsettingsblockref); + my $allparentvariablesarrayref = installer::ziplist::get_variables_from_ziplist($parentsettingsblockref); + if (scalar @$allparentsettingsarrayref > 0) + { + $allsettingsarrayref = installer::converter::combine_arrays_from_references_first_win( + $allsettingsarrayref, + $allparentsettingsarrayref) + } + if (scalar @$allparentvariablesarrayref) + { + $allvariablesarrayref = installer::converter::combine_arrays_from_references_first_win( + $allvariablesarrayref, + $allparentvariablesarrayref) + } + } + + # Integrate global values. + if (scalar @$globalproductblockref) + { + # settings block from zip.lst + my ($globalsettingsblockref, undef) = installer::ziplist::getproductblock( + $globalproductblockref, "Settings", 0); + + # select data from settings block in zip.lst + $globalsettingsblockref = installer::ziplist::analyze_settings_block($globalsettingsblockref); + + my $allglobalsettingsarrayref = installer::ziplist::get_settings_from_ziplist($globalsettingsblockref); + my $allglobalvariablesarrayref = installer::ziplist::get_variables_from_ziplist($globalsettingsblockref); + + if ($installer::globals::globallogging && defined $loggingdir) + { + installer::files::save_file($loggingdir . "globalsettingsblock1.log", $globalsettingsblockref); + installer::files::save_file($loggingdir . "globalsettingsblock2.log", $globalsettingsblockref); + installer::files::save_file($loggingdir . "allglobalsettings1.log", $allglobalsettingsarrayref); + installer::files::save_file($loggingdir . "allglobalvariables1.log", $allglobalvariablesarrayref); + } + + if (scalar @$allglobalsettingsarrayref > 0) + { + $allsettingsarrayref = installer::converter::combine_arrays_from_references_first_win( + $allsettingsarrayref, $allglobalsettingsarrayref); + } + if (scalar @$allglobalvariablesarrayref > 0) + { + $allvariablesarrayref = installer::converter::combine_arrays_from_references_first_win( + $allvariablesarrayref, $allglobalvariablesarrayref); + } + } + + # Remove multiples (and the trailing ##%##). + $allsettingsarrayref = installer::ziplist::remove_multiples_from_ziplist($allsettingsarrayref); + $allvariablesarrayref = installer::ziplist::remove_multiples_from_ziplist($allvariablesarrayref); + installer::ziplist::replace_variables_in_ziplist_variables($allvariablesarrayref); + + # Transform array into hash. + my $allvariableshashref = installer::converter::convert_array_to_hash($allvariablesarrayref); + + # Postprocess the variables. + installer::ziplist::set_default_productversion_if_required($allvariableshashref); + installer::ziplist::add_variables_to_allvariableshashref($allvariableshashref); + installer::ziplist::overwrite_ooovendor($allvariableshashref); + + if ($installer::globals::globallogging && defined $loggingdir) + { + installer::files::save_file($loggingdir . "allsettings2.log" ,$allsettingsarrayref); + installer::files::save_file($loggingdir . "allvariables2.log" ,$allvariablesarrayref); + } + + # Eventually we should fix this so that we don't have to return the raw arrays, only the resulting hashes. + return ($allvariableshashref, $allsettingsarrayref); +} + ################################################# # Getting data from path file and zip list file @@ -571,7 +686,7 @@ sub replace_languages_in_pathes my $language = ${$languagesref}[$j]; $line =~ s/\$\(LANG\)/$language/g; push(@patharray ,$line); - $newdir = $line; + my $newdir = $line; $line = $originalline; installer::remover::remove_leading_and_ending_whitespaces(\$newline); @@ -627,8 +742,6 @@ sub list_all_files_from_include_path } $installer::logger::Lang->print("\n"); - - return \@filesarray; } ##################################################### @@ -780,9 +893,18 @@ sub add_variables_to_allvariableshashref $variableshashref->{'LCPRODUCTEXTENSION'} = ""; } - if ( $installer::globals::patch ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::patchaddon; } - elsif ( $installer::globals::languagepack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::languagepackaddon; } - else { $variableshashref->{'PRODUCTADDON'} = ""; } + if ($installer::globals::patch) + { + $variableshashref->{'PRODUCTADDON'} = $installer::globals::patchaddon; + } + elsif ($installer::globals::languagepack) + { + $variableshashref->{'PRODUCTADDON'} = $installer::globals::languagepackaddon; + } + else + { + $variableshashref->{'PRODUCTADDON'} = ""; + } my $localbuild = $installer::globals::build; if ( $localbuild =~ /^\s*(\w+?)(\d+)\s*$/ ) { $localbuild = $2; } # using "680" instead of "src680" commit 4594d7d4d101dbd0b0ce3debac724fcd82a32ada Author: Andre Fischer <a...@apache.org> Date: Fri Nov 22 09:28:08 2013 +0000 123729: Removed obsolete references to non-opensource builds. diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm index de3887e..04d14ea 100644 --- a/solenv/bin/modules/installer/globals.pm +++ b/solenv/bin/modules/installer/globals.pm @@ -263,7 +263,6 @@ BEGIN $isopensourceproduct = 1; $manufacturer = ""; $longmanufacturer = ""; - $sundirname = "Oracle"; $codefilename = "codes.txt"; $componentfilename = "components.txt"; $productcode = ""; @@ -364,7 +363,6 @@ BEGIN @pcfdiffcomment = (); @epmdifflist = (); $desktoplinkexists = 0; - $sundirexists = 0; $analyze_spellcheckerlanguage = 0; %spellcheckerlanguagehash = (); %spellcheckerfilehash = (); @@ -392,11 +390,8 @@ BEGIN $officedirhostname = ""; $basisdirhostname = ""; $uredirhostname = ""; - $sundirhostname = ""; $officedirgid = ""; $basisdirgid = ""; - $uredirgid = ""; - $sundirgid = ""; %sign_extensions = ("dll" => "1", "exe" => "1", "cab" => "1"); %treestyles = (); diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm index 585fadf..127bcff 100644 --- a/solenv/bin/modules/installer/scriptitems.pm +++ b/solenv/bin/modules/installer/scriptitems.pm @@ -715,12 +715,6 @@ sub set_global_directory_hostnames $installer::globals::officedirgid = $onedir->{'gid'}; $allvariables->{'OFFICEDIRECTORYHOSTNAME'} = $installer::globals::officedirhostname; } - if ( $styles =~ /\bSUNDIRECTORY\b/ ) - { - $installer::globals::sundirhostname = $onedir->{'HostName'}; - $installer::globals::sundirgid = $onedir->{'gid'}; - $allvariables->{'SUNDIRECTORYHOSTNAME'} = $installer::globals::sundirhostname; - } } } diff --git a/solenv/bin/modules/installer/windows/directory.pm b/solenv/bin/modules/installer/windows/directory.pm index e1ee953..5c0368f 100644 --- a/solenv/bin/modules/installer/windows/directory.pm +++ b/solenv/bin/modules/installer/windows/directory.pm @@ -269,7 +269,6 @@ sub create_unique_directorynames if ( $installer::globals::installlocationdirectoryset ) { installer::exiter::exit_program("ERROR: Directory with flag ISINSTALLLOCATION alread set: \"$installer::globals::installlocationdirectory\".", "create_unique_directorynames"); } $installer::globals::installlocationdirectory = $uniquename; $installer::globals::installlocationdirectoryset = 1; - if ( $installer::globals::installlocationdirectory =~ /oracle_/i ) { $installer::globals::sundirexists = 1; } } # setting the sundirectory diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm index eddce82..e93ad04 100644 --- a/solenv/bin/modules/installer/windows/property.pm +++ b/solenv/bin/modules/installer/windows/property.pm @@ -308,12 +308,6 @@ sub set_important_properties $onepropertyline = "DONTOPTIMIZELIBS" . "\t" . "0" . "\n"; push(@{$propertyfile}, $onepropertyline); - if ( $installer::globals::sundirexists ) - { - my $onepropertyline = "SUNDIREXISTS" . "\t" . "1" . "\n"; - push(@{$propertyfile}, $onepropertyline); - } - if ( $installer::globals::officedirhostname ) { my $onepropertyline = "OFFICEDIRHOSTNAME" . "\t" . $installer::globals::officedirhostname . "\n"; @@ -325,12 +319,6 @@ sub set_important_properties push(@{$propertyfile}, $onepropertyline); } - if ( $installer::globals::sundirhostname ) - { - my $onepropertyline = "SUNDIRHOSTNAME" . "\t" . $installer::globals::sundirhostname . "\n"; - push(@{$propertyfile}, $onepropertyline); - } - if ( $installer::globals::desktoplinkexists ) { my $onepropertyline = "DESKTOPLINKEXISTS" . "\t" . "1" . "\n"; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits