diff options
Diffstat (limited to 'solenv/bin/modules/installer/ziplist.pm')
-rw-r--r-- | solenv/bin/modules/installer/ziplist.pm | 800 |
1 files changed, 0 insertions, 800 deletions
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm deleted file mode 100644 index 78172ffa2..000000000 --- a/solenv/bin/modules/installer/ziplist.pm +++ /dev/null @@ -1,800 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -package installer::ziplist; - -use installer::existence; -use installer::exiter; -use installer::globals; -use installer::logger; -use installer::parameter; -use installer::remover; -use installer::systemactions; - -################################################# -# Getting data from path file and zip list file -################################################# - -sub getproductblock -{ - my ($fileref, $search, $inheritance) = @_; - - my @searchblock = (); - my $searchexists = 0; - my $record = 0; - my $count = 0; - my $line; - my $inh = $inheritance ? '(?::\s*(\S+)\s*)?' : ""; - my $parent; - - for ( my $i = 0; $i <= $#{$fileref}; $i++ ) - { - $line = ${$fileref}[$i]; - - if ( $line =~ /^\s*\Q$search\E\s*$inh$/i ) # case insensitive - { - $record = 1; - $searchexists = 1; - $parent = $1 if $inheritance; - } - - if ($record) - { - push(@searchblock, $line); - } - - if ( ($record) && ($line =~ /\{/) ) - { - $count++; - } - - if ( ($record) && ($line =~ /\}/) ) - { - $count--; - } - - if ( ($record) && ($line =~ /\}/) && ( $count == 0 ) ) - { - $record = 0; - } - } - - if (( ! $searchexists ) && ( $search ne $installer::globals::globalblock )) - { - if ($search eq $installer::globals::product ) - { - installer::exiter::exit_program("ERROR: Product $installer::globals::product not defined in $installer::globals::ziplistname", "getproductblock"); - } - elsif ($search eq $installer::globals::compiler ) - { - installer::exiter::exit_program("ERROR: Compiler $installer::globals::compiler not defined in $installer::globals::pathfilename", "getproductblock"); - } - else # this is not possible - { - installer::exiter::exit_program("ERROR: Unknown value for $search in getproductblock()", "getproductblock"); - } - } - - return (\@searchblock, $parent); -} - -############################################### -# Analyzing the settings in the zip list file -############################################### - -sub analyze_settings_block -{ - my ($blockref) = @_; - - my @newsettingsblock = (); - my $compilerstring = ""; - my $record = 1; - my $counter = 0; - - # Allowed values in settings block: - # "Settings", "Variables", "unix" (for destination path and logfile) - # Furthermore allowed values are $installer::globals::build (srx645) and $installer::globals::compiler (pro and nonpro (unxsols4.pro)) - - # Comment line in settings block begin with "#" or ";" - - if ( $installer::globals::pro ) - { - $compilerstring = $installer::globals::compiler . ".pro"; - } - else - { - $compilerstring = $installer::globals::compiler; - } - - for ( my $i = 0; $i <= $#{$blockref}; $i++ ) - { - my $line = ${$blockref}[$i]; - my $nextline = ""; - - if ( ${$blockref}[$i+1] ) { $nextline = ${$blockref}[$i+1]; } - - # removing comment lines - - if (($line =~ /^\s*\#/) || ($line =~ /^\s*\;/)) - { - next; - } - - # complete blocks of unknows strings are not recorded - - if ((!($line =~ /^\s*\Q$compilerstring\E\s*$/i)) && - (!($line =~ /^\s*\Q$installer::globals::build\E\s*$/i)) && - (!($line =~ /^\s*\bSettings\b\s*$/i)) && - (!($line =~ /^\s*\bVariables\b\s*$/i)) && - (!($line =~ /^\s*\bunix\b\s*$/i)) && - ($nextline =~ /^\s*\{\s*$/i)) - { - $record = 0; - next; # continue with next $i - } - - if (!( $record )) - { - if ($line =~ /^\s*\{\s*$/i) - { - $counter++; - } - - if ($line =~ /^\s*\}\s*$/i) - { - $counter--; - } - - if ($counter == 0) - { - $record = 1; - next; # continue with next $i - } - } - - if ($record) - { - push(@newsettingsblock, $line); - } - } - - return \@newsettingsblock; -} - -######################################## -# Settings in zip list file -######################################## - -sub get_settings_from_ziplist -{ - my ($blockref) = @_; - - my @allsettings = (); - my $isvariables = 0; - my $counter = 0; - my $variablescounter = 0; - - # Take all settings from the settings block - # Do not take the variables from the settings block - # If a setting is defined more than once, take the - # setting with the largest counter (open brackets) - - for ( my $i = 0; $i <= $#{$blockref}; $i++ ) - { - my $line = ${$blockref}[$i]; - my $nextline = ""; - - if ( ${$blockref}[$i+1] ) { $nextline = ${$blockref}[$i+1]; } - - if (($line =~ /^\s*\S+\s*$/i) && - ($nextline =~ /^\s*\{\s*$/i) && - (!($line =~ /^\s*Variables\s*$/i))) - { - next; - } - - if ($line =~ /^\s*Variables\s*$/i) - { - # This is a block of variables - - $isvariables = 1; - next; - } - - if ($line =~ /^\s*\{\s*$/i) - { - if ($isvariables) - { - $variablescounter++; - } - else - { - $counter++; - } - - next; - } - - if ($line =~ /^\s*\}\s*$/i) - { - if ($isvariables) - { - $variablescounter--; - - if ($variablescounter == 0) - { - $isvariables = 0; - } - } - else - { - $counter--; - } - - next; - } - - if ($isvariables) - { - next; - } - - installer::remover::remove_leading_and_ending_whitespaces(\$line); - - $line .= "\t##$counter##\n"; - - push(@allsettings, $line); - } - - return \@allsettings; -} - -####################################### -# Variables from zip list file -####################################### - -sub get_variables_from_ziplist -{ - my ($blockref) = @_; - - my @allvariables = (); - my $isvariables = 0; - my $counter = 0; - my $variablescounter = 0; - my $countersum = 0; - - # Take all variables from the settings block - # Do not take the other settings from the settings block - # If a variable is defined more than once, take the - # variable with the largest counter (open brackets) - - for ( my $i = 0; $i <= $#{$blockref}; $i++ ) - { - my $line = ${$blockref}[$i]; - my $nextline = ${$blockref}[$i+1]; - - if ($line =~ /^\s*Variables\s*$/i) - { - # This is a block of variables - - $isvariables = 1; - next; - } - - if ($line =~ /^\s*\{\s*$/i) - { - if ($isvariables) - { - $variablescounter++; - } - else - { - $counter++; - } - - next; - } - - if ($line =~ /^\s*\}\s*$/i) - { - if ($isvariables) - { - $variablescounter--; - - if ($variablescounter == 0) - { - $isvariables = 0; - } - } - else - { - $counter--; - } - - next; - } - - if (!($isvariables)) - { - next; - } - - $countersum = $counter + $variablescounter; - - installer::remover::remove_leading_and_ending_whitespaces(\$line); - - $line .= "\t##$countersum##\n"; - - push(@allvariables, $line); - } - - return \@allvariables; -} - -####################################################################### -# Removing multiple variables and settings, defined in zip list file -####################################################################### - -sub remove_multiples_from_ziplist -{ - my ($blockref) = @_; - - # remove all definitions of settings and variables - # that occur more than once in the zip list file. - # Take the one with the most open brackets. This - # number is stored at the end of the string. - - my @newarray = (); - my @itemarray = (); - my ($line, $itemname, $itemnumber); - - # first collecting all variables and settings names - - for ( my $i = 0; $i <= $#{$blockref}; $i++ ) - { - $line = ${$blockref}[$i]; - - if ($line =~ /^\s*\b(\S*)\b\s+.*\#\#\d+\#\#\s*$/i) - { - $itemname = $1; - } - - if (! installer::existence::exists_in_array($itemname, \@itemarray)) - { - push(@itemarray, $itemname); - } - } - - # and now all $items can be selected with the highest number - - for ( my $i = 0; $i <= $#itemarray; $i++ ) - { - $itemname = $itemarray[$i]; - - my $itemnumbermax = 0; - my $printline = ""; - - for ( my $j = 0; $j <= $#{$blockref}; $j++ ) - { - $line = ${$blockref}[$j]; - - if ($line =~ /^\s*\Q$itemname\E\s+.*\#\#(\d+)\#\#\s*$/) - { - $itemnumber = $1; - - if ($itemnumber >= $itemnumbermax) - { - $printline = $line; - $itemnumbermax = $itemnumber; - } - } - } - - # removing the ending number from the printline - # and putting it into the array - - $printline =~ s/\#\#\d+\#\#//; - installer::remover::remove_leading_and_ending_whitespaces(\$line); - push(@newarray, $printline); - } - - return \@newarray; -} - -######################################################### -# Reading one variable defined in the zip list file -######################################################### - -sub getinfofromziplist -{ - my ($blockref, $variable) = @_; - - my $searchstring = ""; - my $line; - - for ( my $i = 0; $i <= $#{$blockref}; $i++ ) - { - $line = ${$blockref}[$i]; - - if ( $line =~ /^\s*\Q$variable\E\s+(.+?)\s*$/ ) # "?" for minimal matching - { - $searchstring = $1; - last; - } - } - - return \$searchstring; -} - -#################################################### -# Replacing variables in include path -#################################################### - -sub replace_all_variables_in_pathes -{ - my ( $patharrayref, $variableshashref ) = @_; - - for ( my $i = 0; $i <= $#{$patharrayref}; $i++ ) - { - my $line = ${$patharrayref}[$i]; - - my $key; - - foreach $key (sort { length ($b) <=> length ($a) } keys %{$variableshashref}) - { - my $value = $variableshashref->{$key}; - - if (( $line =~ /\{$key\}/ ) && ( $value eq "" )) { $line = ".\n"; } - - $line =~ s/\{\Q$key\E\}/$value/g; - } - - ${$patharrayref}[$i] = $line; - } -} - -#################################################### -# Replacing minor in include path -#################################################### - -sub replace_minor_in_pathes -{ - my ( $patharrayref ) = @_; - - for ( my $i = 0; $i <= $#{$patharrayref}; $i++ ) - { - my $line = ${$patharrayref}[$i]; - - $line =~ s/\.\{minor\}//g; - $line =~ s/\.\{minornonpre\}//g; - - ${$patharrayref}[$i] = $line; - } -} - -#################################################### -# Replacing packagetype in include path -#################################################### - -sub replace_packagetype_in_pathes -{ - my ( $patharrayref ) = @_; - - for ( my $i = 0; $i <= $#{$patharrayref}; $i++ ) - { - my $line = ${$patharrayref}[$i]; - - if (( $installer::globals::installertypedir ) && ( $line =~ /\{pkgtype\}/ )) - { - $line =~ s/\{pkgtype\}/$installer::globals::installertypedir/g; - } - - ${$patharrayref}[$i] = $line; - } -} - -#################################################### -# Removing ending separators in pathes -#################################################### - -sub remove_ending_separator -{ - my ( $patharrayref ) = @_; - - for ( my $i = 0; $i <= $#{$patharrayref}; $i++ ) - { - my $line = ${$patharrayref}[$i]; - - installer::remover::remove_ending_pathseparator(\$line); - - $line =~ s/\s*$//; - $line = $line . "\n"; - - ${$patharrayref}[$i] = $line; - } -} - -#################################################### -# Replacing languages in include path -#################################################### - -sub replace_languages_in_pathes -{ - my ( $patharrayref, $languagesref ) = @_; - - installer::logger::include_header_into_logfile("Replacing languages in include pathes:"); - - my @patharray = (); - my $infoline = ""; - - for ( my $i = 0; $i <= $#{$patharrayref}; $i++ ) - { - my $line = ${$patharrayref}[$i]; - - if ( $line =~ /\$\(LANG\)/ ) - { - my $originalline = $line; - my $newline = ""; - - for ( my $j = 0; $j <= $#{$languagesref}; $j++ ) - { - my $language = ${$languagesref}[$j]; - $line =~ s/\$\(LANG\)/$language/g; - push(@patharray ,$line); - $newdir = $line; - $line = $originalline; - - installer::remover::remove_leading_and_ending_whitespaces(\$newline); - - # Is it necessary to refresh the global array, containing all files of all include pathes? - if ( -d $newdir ) - { - # Checking if $newdir is empty - if ( ! installer::systemactions::is_empty_dir($newdir) ) - { - $installer::globals::refresh_includepathes = 1; - $infoline = "Directory $newdir exists and is not empty. Refreshing global file array is required.\n"; - push( @installer::globals::logfileinfo, $infoline); - } - else - { - $infoline = "Directory $newdir is empty. No refresh of global file array required.\n"; - push( @installer::globals::logfileinfo, $infoline); - } - } - else - { - $infoline = "Directory $newdir does not exist. No refresh of global file array required.\n"; - push( @installer::globals::logfileinfo, $infoline); - } - } - } - else # not language dependent include path - { - push(@patharray ,$line); - } - } - - return \@patharray; -} - -##################################################### -# Collecting all files from all include paths -##################################################### - -sub list_all_files_from_include_path -{ - my ( $patharrayref) = @_; - - installer::logger::include_header_into_logfile("Include pathes:"); - - for ( my $i = 0; $i <= $#{$patharrayref}; $i++ ) - { - my $path = ${$patharrayref}[$i]; - installer::remover::remove_leading_and_ending_whitespaces(\$path); - my $infoline = "$path\n"; - push( @installer::globals::logfileinfo, $infoline); - } - - push( @installer::globals::logfileinfo, "\n"); - - return \@filesarray; -} - -##################################################### -# Collecting all files from all include paths -##################################################### - -sub set_manufacturer -{ - my ($allvariables) = @_; - - my $openofficeproductname = "LibreOffice"; - my $sunname = ""; - - - if ( $allvariables->{'OPENSOURCE'} && $allvariables->{'OPENSOURCE'} == 1 ) - { - $installer::globals::isopensourceproduct = 1; - $installer::globals::manufacturer = $openofficeproductname; - $installer::globals::longmanufacturer = $openofficeproductname; - } - else - { - $installer::globals::isopensourceproduct = 0; - if (( $allvariables->{'DEFINEDMANUFACTURER'} ) && ( $allvariables->{'DEFINEDMANUFACTURER'} ne "" )) { $sunname = $allvariables->{'DEFINEDMANUFACTURER'}; } - else { installer::exiter::exit_program("ERROR: Property DEFINEDMANUFACTURER has to be set for this product!", "set_manufacturer"); } - $installer::globals::manufacturer = $sunname; - $installer::globals::longmanufacturer = $sunname; - } - - $allvariables->{'MANUFACTURER'} = $installer::globals::manufacturer; -} - -############################################################## -# A ProductVersion has to be defined. If it is not set in -# zip.lst, it is set now to "1" -############################################################## - -sub set_default_productversion_if_required -{ - my ($allvariables) = @_; - - if (!($allvariables->{'PRODUCTVERSION'})) - { - $allvariables->{'PRODUCTVERSION'} = 1; # FAKE - } - - # Creating differentiators for BUILD_SPECIAL in layering - if ( ! $ENV{'BUILD_SPECIAL'} ) - { - if ( $allvariables->{'REGISTRYLAYERNAME'} ) { $allvariables->{'REGISTRYLAYERNAME'} = $allvariables->{'REGISTRYLAYERNAME'} . "_"; } - if (( $installer::globals::iswindowsbuild ) && ( $allvariables->{'BASISROOTNAME'} )) { $allvariables->{'BASISROOTNAME'} = $allvariables->{'BASISROOTNAME'} . "_"; } - } -} - -#################################################### -# Removing .. in pathes -#################################################### - -sub simplify_path -{ - my ( $pathref ) = @_; - - my $oldpath = $$pathref; - - my $change = 0; - - while ( $oldpath =~ /(^.*)(\Q$installer::globals::separator\E.*\w+?)(\Q$installer::globals::separator\E\.\.)(\Q$installer::globals::separator\E.*$)/ ) - { - my $part1 = $1; - my $part2 = $4; - $oldpath = $part1 . $part2; - $change = 1; - } - - if ( $change ) { $$pathref = $oldpath . "\n"; } -} - -#################################################### -# Removing ending separators in pathes -#################################################### - -sub resolve_relative_pathes -{ - my ( $patharrayref ) = @_; - - for ( my $i = 0; $i <= $#{$patharrayref}; $i++ ) - { - installer::parameter::make_path_absolute(\${$patharrayref}[$i]); - simplify_path(\${$patharrayref}[$i]); - } -} - -#################################################### -# Replacing variables inside zip list variables -# Example: {milestone} to be replaced by -# $installer::globals::lastminor -#################################################### - -sub replace_variables_in_ziplist_variables -{ - my ($blockref) = @_; - - my $milestonevariable = $installer::globals::lastminor; - $milestonevariable =~ s/m//; - $milestonevariable =~ s/s/\./; - - my $localminor = $installer::globals::lastminor; - if ( $installer::globals::minor ) { $localminor = $installer::globals::minor; } - - my $buildidstringcws = $installer::globals::build . $localminor . "(Build:" . $installer::globals::buildid . ")"; - - for ( my $i = 0; $i <= $#{$blockref}; $i++ ) - { - if ($installer::globals::lastminor) { ${$blockref}[$i] =~ s/\{milestone\}/$milestonevariable/; } - else { ${$blockref}[$i] =~ s/\{milestone\}//; } - if ( $localminor ) { ${$blockref}[$i] =~ s/\{minor\}/$localminor/; } - else { ${$blockref}[$i] =~ s/\{minor\}//; } - if ( $installer::globals::buildid ) { ${$blockref}[$i] =~ s/\{buildid\}/$installer::globals::buildid/; } - else { ${$blockref}[$i] =~ s/\{buildid\}//; } - if ( $installer::globals::build ) { ${$blockref}[$i] =~ s/\{buildsource\}/$installer::globals::build/; } - else { ${$blockref}[$i] =~ s/\{build\}//; } - ${$blockref}[$i] =~ s/\{buildidcws\}/$buildidstringcws/; - } -} - -########################################################### -# Overwrite the vendor string in openoffice.lst that is defined in configure -########################################################### - -sub overwrite_ooovendor -{ - my ($variableshashref) = @_; - $variableshashref->{'OOOVENDOR'} = $ENV{'OOO_VENDOR'} , if( defined $ENV{'OOO_VENDOR'} && $ENV{'OOO_VENDOR'} ne "" ); -} - -########################################################### -# Adding the lowercase variables into the variableshashref -########################################################### - -sub add_variables_to_allvariableshashref -{ - my ($variableshashref) = @_; - - my $lcvariable = lc($variableshashref->{'PRODUCTNAME'}); - $variableshashref->{'LCPRODUCTNAME'} = $lcvariable; - - if ($variableshashref->{'SHORT_PRODUCTEXTENSION'}) - { - $variableshashref->{'LCPRODUCTEXTENSION'} = "\-" . lc($variableshashref->{'SHORT_PRODUCTEXTENSION'}); # including the "-" ! - } - else - { - $variableshashref->{'LCPRODUCTEXTENSION'} = ""; - } - - if ( $installer::globals::patch ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::patchaddon; } - elsif ( $installer::globals::languagepack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::languagepackaddon; } - elsif ( $installer::globals::helppack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::helppackpackaddon; } - else { $variableshashref->{'PRODUCTADDON'} = ""; } - - my $localbuild = $installer::globals::build; - if ( $localbuild =~ /^\s*(\w+?)(\d+)\s*$/ ) { $localbuild = $2; } # using "680" instead of "src680" - $variableshashref->{'PRODUCTMAJOR'} = $localbuild; - - my $localminor = ""; - if ( $installer::globals::minor ne "" ) { $localminor = $installer::globals::minor; } - else { $localminor = $installer::globals::lastminor; } - if ( $localminor =~ /^\s*\w(\d+)\w*\s*$/ ) { $localminor = $1; } - $variableshashref->{'PRODUCTMINOR'} = $localminor; - - $variableshashref->{'PRODUCTBUILDID'} = $installer::globals::buildid; - $variableshashref->{'SYSTEM_LIBTEXTCAT_DATA'} = $ENV{'SYSTEM_LIBTEXTCAT_DATA'} , if( defined $ENV{'SYSTEM_LIBTEXTCAT_DATA'} && $ENV{'SYSTEM_LIBTEXTCAT_DATA'} ne "" ); -} - -1; |