Kaydet (Commit) 7bb64548 authored tarafından Andre Fischer's avatar Andre Fischer

123729: Factored out reading of openoffice.lst to its own function.

üst 4594d7d4
......@@ -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); }
......
......@@ -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"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment