diff options
Diffstat (limited to 'solenv/bin/modules/installer/helppack.pm')
-rw-r--r-- | solenv/bin/modules/installer/helppack.pm | 537 |
1 files changed, 0 insertions, 537 deletions
diff --git a/solenv/bin/modules/installer/helppack.pm b/solenv/bin/modules/installer/helppack.pm deleted file mode 100644 index e5b674c93..000000000 --- a/solenv/bin/modules/installer/helppack.pm +++ /dev/null @@ -1,537 +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::helppack; - -use installer::converter; -use installer::existence; -use installer::files; -use installer::globals; -use installer::logger; -use installer::pathanalyzer; -use installer::scpzipfiles; -use installer::scriptitems; -use installer::systemactions; -use installer::worker; - -sub select_help_items -{ - my ( $itemsref, $languagesarrayref, $itemname ) = @_; - - installer::logger::include_header_into_logfile("Selecting items for help pack. Item: $itemname"); - - my @itemsarray = (); - - for ( my $i = 0; $i <= $#{$itemsref}; $i++ ) - { - my $oneitem = ${$itemsref}[$i]; - - my $styles = ""; - if ( $oneitem->{'Styles'} ) { $styles = $oneitem->{'Styles'}; } - - if (( $styles =~ /\bHELPPACK\b/ ) || ( $styles =~ /\bFORCEHELPPACK\b/ )) - { - # Files with style "HELPPACK" and "FORCEHELPPACK" also have to be included into the help pack. - # Files with style "HELPPACK" are only included into help packs. - # Files with style "FORCEHELPPACK" are included into help packs and non help packs. They are - # forced, because otherwise they not not be included into helppacks. - - my $ismultilingual = $oneitem->{'ismultilingual'}; - - if ($ismultilingual) - { - my $specificlanguage = ""; - if ( $oneitem->{'specificlanguage'} ) { $specificlanguage = $oneitem->{'specificlanguage'}; } - - for ( my $j = 0; $j <= $#{$languagesarrayref}; $j++ ) # iterating over all languages - { - my $onelanguage = ${$languagesarrayref}[$j]; - my $locallang = $onelanguage; - $locallang =~ s/-/_/; - - if ( $specificlanguage eq $onelanguage ) - { - push(@itemsarray, $oneitem); - } - } - } - else - { - push(@itemsarray, $oneitem); - } - } - } - - return \@itemsarray; -} - -sub replace_languagestring_variable -{ - my ($onepackageref, $languagestringref) = @_; - - my $key; - - foreach $key (keys %{$onepackageref}) - { - my $value = $onepackageref->{$key}; - $value =~ s/\%LANGUAGESTRING/$$languagestringref/g; - $onepackageref->{$key} = $value; - } -} - -######################################################### -# Including the license text into the script template -######################################################### - -sub put_license_file_into_script -{ - my ($scriptfile, $licensefile) = @_; - - my $infoline = "Adding licensefile into help pack script\n"; - push( @installer::globals::logfileinfo, $infoline); - - my $includestring = ""; - - for ( my $i = 0; $i <= $#{$licensefile}; $i++ ) - { - $includestring = $includestring . ${$licensefile}[$i]; - } - - for ( my $i = 0; $i <= $#{$scriptfile}; $i++ ) - { - ${$scriptfile}[$i] =~ s/LICENSEFILEPLACEHOLDER/$includestring/; - } -} - -######################################################### -# Creating a tar.gz file from a Solaris package -######################################################### - -sub create_tar_gz_file -{ - my ($installdir, $packagename, $packagestring) = @_; - - $packagename =~ s/\.rpm\s*$//; - my $targzname = $packagename . ".tar.gz"; - $systemcall = "cd $installdir; tar -cf - $packagestring | gzip > $targzname"; - installer::logger::print_message( "... $systemcall ...\n" ); - - my $returnvalue = system($systemcall); - - my $infoline = "Systemcall: $systemcall\n"; - push( @installer::globals::logfileinfo, $infoline); - - if ($returnvalue) - { - $infoline = "ERROR: Could not execute \"$systemcall\"!\n"; - push( @installer::globals::logfileinfo, $infoline); - } - else - { - $infoline = "Success: Executed \"$systemcall\" successfully!\n"; - push( @installer::globals::logfileinfo, $infoline); - } - - return $targzname; -} - -######################################################### -# Determining the name of the package file -######################################################### - -sub get_packagename_from_packagelist -{ - my ( $alldirs, $allvariables, $languagestringref ) = @_; - - # my $packagename = ""; - - # for ( my $i = 0; $i <= $#{$alldirs}; $i++ ) - # { - # if ( ${$alldirs}[$i] =~ /-fonts/ ) { next; } - # if ( ${$alldirs}[$i] =~ /-help/ ) { next; } - # if ( ${$alldirs}[$i] =~ /-res/ ) { next; } - # - # $packagename = ${$alldirs}[$i]; - # last; - # } - - # if ( $packagename eq "" ) { installer::exiter::exit_program("ERROR: Could not find base package in directory $installdir!", "get_packagename_from_packagelist"); } - - my $localproductname = $allvariables->{'PRODUCTNAME'}; - $localproductname = lc($localproductname); - $localproductname =~ s/ //g; - $localproductname =~ s/-/_/g; - - my $packagename = $localproductname . "_" . $$languagestringref; - - return $packagename; -} - -######################################################### -# Determining the name of the package file or the rpm -# in the installation directory. For help packs -# there is only one file in this directory -######################################################### - -sub determine_packagename -{ - my ( $installdir, $allvariables, $languagestringref ) = @_; - - my $packagename = ""; - my $allnames = ""; - - if ( $installer::globals::isrpmbuild ) - { - # determining the rpm file in directory $installdir - - my $fileextension = "rpm"; - my $rpmfiles = installer::systemactions::find_file_with_file_extension($fileextension, $installdir); - if ( ! ( $#{$rpmfiles} > -1 )) { installer::exiter::exit_program("ERROR: Could not find package in directory $installdir!", "determine_packagename"); } - my $rpmsav = [@{$rpmfiles}]; - for ( my $i = 0; $i <= $#{$rpmfiles}; $i++ ) { installer::pathanalyzer::make_absolute_filename_to_relative_filename(\${$rpmfiles}[$i]); } - - $packagename = get_packagename_from_packagelist($rpmfiles, $allvariables, $languagestringref); - - my $packagestring = installer::converter::convert_array_to_space_separated_string($rpmfiles); - $packagename = create_tar_gz_file($installdir, $packagename, $packagestring); # only one file - for ( my $i = 0; $i <= $#{$rpmsav}; $i++ ) - { - my $onefile = $installdir . $installer::globals::separator . ${$rpmsav}[$i]; - unlink($onefile); - } - - $allnames = $rpmfiles; - } - - if ( $installer::globals::issolarisbuild ) - { - # determining the Solaris package file in directory $installdir - my $alldirs = installer::systemactions::get_all_directories($installdir); - - if ( ! ( $#{$alldirs} > -1 )) { installer::exiter::exit_program("ERROR: Could not find package in directory $installdir!", "determine_packagename"); } - my $alldirssav = [@{$alldirs}]; - for ( my $i = 0; $i <= $#{$alldirs}; $i++ ) { installer::pathanalyzer::make_absolute_filename_to_relative_filename(\${$alldirs}[$i]); } - - $packagename = get_packagename_from_packagelist($alldirs, $allvariables, $languagestringref); - my $packagestring = installer::converter::convert_array_to_space_separated_string($alldirs); - $packagename = create_tar_gz_file($installdir, $packagename, $packagestring); # only a file (not a directory) can be included into the shell script - for ( my $i = 0; $i <= $#{$alldirssav}; $i++ ) { installer::systemactions::remove_complete_directory(${$alldirssav}[$i], 1); } - $allnames = $alldirs; - } - - my $infoline = "Found package in installation directory $installdir : $packagename\n"; - push( @installer::globals::logfileinfo, $infoline); - - return ( $packagename, $allnames); -} - -######################################################### -# Including the name of the package file or the rpm -# into the script template -######################################################### - -sub put_packagename_into_script -{ - my ($scriptfile, $packagename, $allnames) = @_; - - my $localpackagename = $packagename; - $localpackagename =~ s/\.tar\.gz//; # making "OOOopenoffice-it-ea.tar.gz" to "OOOopenoffice-it-ea" - my $infoline = "Adding packagename $localpackagename into help pack script\n"; - push( @installer::globals::logfileinfo, $infoline); - - my $installline = ""; - - if ( $installer::globals::issolarisbuild ) { $installline = " /usr/sbin/pkgadd -d \$outdir -a \$adminfile"; } - - if ( $installer::globals::isrpmbuild ) { $installline = " rpm --prefix \$PRODUCTINSTALLLOCATION --replacepkgs -i"; } - - for ( my $i = 0; $i <= $#{$allnames}; $i++ ) - { - if ( $installer::globals::issolarisbuild ) { $installline = $installline . " ${$allnames}[$i]"; } - - if ( $installer::globals::isrpmbuild ) { $installline = $installline . " \$outdir/${$allnames}[$i]"; } - } - - for ( my $j = 0; $j <= $#{$scriptfile}; $j++ ) - { - ${$scriptfile}[$j] =~ s/INSTALLLINES/$installline/; - } -} - -################################################################## -# Including the lowercase product name into the script template -################################################################## - -sub put_productname_into_script -{ - my ($scriptfile, $variableshashref) = @_; - - my $productname = $variableshashref->{'PRODUCTNAME'}; - $productname = lc($productname); - $productname =~ s/\.//g; # openoffice.org -> openofficeorg - - my $infoline = "Adding productname $productname into help pack script\n"; - push( @installer::globals::logfileinfo, $infoline); - - for ( my $i = 0; $i <= $#{$scriptfile}; $i++ ) - { - ${$scriptfile}[$i] =~ s/PRODUCTNAMEPLACEHOLDER/$productname/; - } -} - -################################################################## -# Including the full product name into the script template -# (name and version) -################################################################## - -sub put_fullproductname_into_script -{ - my ($scriptfile, $variableshashref) = @_; - - my $productname = $variableshashref->{'PRODUCTNAME'}; - my $productversion = ""; - if ( $variableshashref->{'PRODUCTVERSION'} ) { $productversion = $variableshashref->{'PRODUCTVERSION'}; }; - my $fullproductname = $productname . " " . $productversion; - - my $infoline = "Adding full productname \"$fullproductname\" into help pack script\n"; - push( @installer::globals::logfileinfo, $infoline); - - for ( my $i = 0; $i <= $#{$scriptfile}; $i++ ) - { - ${$scriptfile}[$i] =~ s/FULLPRODUCTNAMELONGPLACEHOLDER/$fullproductname/; - } -} - -################################################################## -# Including the name of the search package (-core01) -# into the script template -################################################################## - -sub put_searchpackage_into_script -{ - my ($scriptfile, $variableshashref) = @_; - - my $basispackageprefix = $variableshashref->{'BASISPACKAGEPREFIX'}; - my $basispackageversion = $variableshashref->{'OOOBASEVERSION'}; - - if ( $installer::globals::issolarisbuild ) { $basispackageversion =~ s/\.//g; } # "3.0" -> "30" - - my $infoline = "Adding basis package prefix $basispackageprefix into help pack script\n"; - push( @installer::globals::logfileinfo, $infoline); - - $infoline = "Adding basis package version $basispackageversion into help pack script\n"; - push( @installer::globals::logfileinfo, $infoline); - - for ( my $i = 0; $i <= $#{$scriptfile}; $i++ ) - { - ${$scriptfile}[$i] =~ s/BASISPACKAGEPREFIXPLACEHOLDER/$basispackageprefix/; - ${$scriptfile}[$i] =~ s/OOOBASEVERSIONPLACEHOLDER/$basispackageversion/; - } - -} - -######################################################### -# Including the linenumber into the script template -######################################################### - -sub put_linenumber_into_script -{ - my ( $scriptfile, $licensefile, $allnames ) = @_; - - my $linenumber = $#{$scriptfile} + $#{$licensefile} + 3; # also adding the content of the license file! - - my $infoline = "Adding linenumber $linenumber into help pack script\n"; - push( @installer::globals::logfileinfo, $infoline); - - for ( my $i = 0; $i <= $#{$scriptfile}; $i++ ) - { - ${$scriptfile}[$i] =~ s/LINENUMBERPLACEHOLDER/$linenumber/; - } -} - -######################################################### -# Determining the name of the new scriptfile -######################################################### - -sub determine_scriptfile_name -{ - my ( $packagename ) = @_; - - my $scriptfilename = $packagename; - -# if ( $installer::globals::isrpmbuild ) { $scriptfilename =~ s/\.rpm\s*$/\.sh/; } -# if ( $installer::globals::issolarisbuild ) { $scriptfilename =~ s/\.tar\.gz\s*$/\.sh/; } - - $scriptfilename =~ s/\.tar\.gz\s*$/\.sh/; - - my $infoline = "Setting help pack script file name to $scriptfilename\n"; - push( @installer::globals::logfileinfo, $infoline); - - return $scriptfilename; -} - -######################################################### -# Saving the script file in the installation directory -######################################################### - -sub save_script_file -{ - my ($installdir, $newscriptfilename, $scriptfile) = @_; - - $newscriptfilename = $installdir . $installer::globals::separator . $newscriptfilename; - installer::files::save_file($newscriptfilename, $scriptfile); - - my $infoline = "Saving script file $newscriptfilename\n"; - push( @installer::globals::logfileinfo, $infoline); - - return $newscriptfilename; -} - -######################################################### -# Including the binary package into the script -######################################################### - -sub include_package_into_script -{ - my ( $scriptfilename, $installdir, $packagename ) = @_; - - my $longpackagename = $installdir . $installer::globals::separator . $packagename; - my $systemcall = "cat $longpackagename >>$scriptfilename"; - - my $returnvalue = system($systemcall); - - my $infoline = "Systemcall: $systemcall\n"; - push( @installer::globals::logfileinfo, $infoline); - - if ($returnvalue) - { - $infoline = "ERROR: Could not execute \"$systemcall\"!\n"; - push( @installer::globals::logfileinfo, $infoline); - } - else - { - $infoline = "Success: Executed \"$systemcall\" successfully!\n"; - push( @installer::globals::logfileinfo, $infoline); - } - - my $localcall = "chmod 775 $scriptfilename \>\/dev\/null 2\>\&1"; - system($localcall); - -} - -######################################################### -# Removing the binary package -######################################################### - -sub remove_package -{ - my ( $installdir, $packagename ) = @_; - - my $remove_package = 1; - - if ( $ENV{'DONT_REMOVE_PACKAGE'} ) { $remove_package = 0; } - - if ( $remove_package ) - { - my $longpackagename = $installdir . $installer::globals::separator . $packagename; - unlink $longpackagename; - - my $infoline = "Removing package: $longpackagename \n"; - push( @installer::globals::logfileinfo, $infoline); - } -} - -#################################################### -# Unix help packs, that are not part of -# multilingual installation sets, need a -# shell script installer -#################################################### - -sub build_installer_for_helppack -{ - my ($installdir, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref) = @_; - - installer::logger::print_message( "... creating shell script installer ...\n" ); - - installer::logger::include_header_into_logfile("Creating shell script installer:"); - - # find and read setup script template - - my $scriptfilename = "langpackscript.sh"; - my $scriptref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$scriptfilename, $includepatharrayref, 0); - if ($$scriptref eq "") { installer::exiter::exit_program("ERROR: Could not find script file $scriptfilename!", "build_installer_for_helppack"); } - my $scriptfile = installer::files::read_file($$scriptref); - - my $infoline = "Found script file $scriptfilename: $$scriptref \n"; - push( @installer::globals::logfileinfo, $infoline); - - # find and read english license file - my $licenselanguage = "en-US"; # always english ! - my $licensefilename = "LICENSE"; # _" . $licenselanguage; - my $licenseincludepatharrayref = installer::worker::get_language_specific_include_pathes($includepatharrayref, $licenselanguage); - - my $licenseref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$licensefilename, $licenseincludepatharrayref, 0); - if ($$licenseref eq "") { installer::exiter::exit_program("ERROR: Could not find License file $licensefilename!", "build_installer_for_helppack"); } - my $licensefile = installer::files::read_file($$licenseref); - - $infoline = "Found licensefile $licensefilename: $$licenseref \n"; - push( @installer::globals::logfileinfo, $infoline); - - # including variables into license file - installer::scpzipfiles::replace_all_ziplistvariables_in_file($licensefile, $allvariableshashref); - - # add license text into script template - put_license_file_into_script($scriptfile, $licensefile); - - # add rpm or package file name into script template - my ( $packagename, $allnames) = determine_packagename($installdir, $allvariableshashref, $languagestringref); - put_packagename_into_script($scriptfile, $packagename, $allnames); - - # add product name into script template - put_productname_into_script($scriptfile, $allvariableshashref); - - # add product name into script template - put_fullproductname_into_script($scriptfile, $allvariableshashref); - - # add product name into script template - put_searchpackage_into_script($scriptfile, $allvariableshashref); - - # replace linenumber in script template - put_linenumber_into_script($scriptfile, $licensefile, $allnames); - - # saving the script file - my $newscriptfilename = determine_scriptfile_name($packagename); - $newscriptfilename = save_script_file($installdir, $newscriptfilename, $scriptfile); - - # include rpm or package into script - include_package_into_script($newscriptfilename, $installdir, $packagename); - - # remove rpm or package - remove_package($installdir, $packagename); -} - -1; |