summaryrefslogtreecommitdiff
path: root/smoketestoo_native/smoketest.pl
diff options
context:
space:
mode:
Diffstat (limited to 'smoketestoo_native/smoketest.pl')
-rwxr-xr-xsmoketestoo_native/smoketest.pl1279
1 files changed, 0 insertions, 1279 deletions
diff --git a/smoketestoo_native/smoketest.pl b/smoketestoo_native/smoketest.pl
deleted file mode 100755
index f5ef32f31bcb..000000000000
--- a/smoketestoo_native/smoketest.pl
+++ /dev/null
@@ -1,1279 +0,0 @@
-:
-eval 'exec perl -wS $0 ${1+"$@"}'
- if 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.
-#
-#*************************************************************************
-
-#
-# smoketest - do the smoketest
-#
-
-use lib ("$ENV{SOLARENV}/bin/modules");
-
-use File::Basename;
-use File::Path;
-use File::Copy;
-use Getopt::Long;
-use SourceConfig;
-
-########################
-# #
-# Globale Variablen #
-# #
-#########################
-$is_debug = 0; # run without executing commands
-$is_command_infos = 0; # print command details before exec
-$is_protocol_test = 0;
-$is_remove_on_error = 0;
-$is_remove_at_end = 1;
-$is_do_deinstall = 0;
-$is_without_msiexec = 1;
-$is_oo = 1;
-
-$sourceconfig_obj;
-$gui = $ENV{GUI};
-$temp_path = $ENV{TEMP};
-$vcsid = $ENV{VCSID};
-$sversion_saved = 0;
-$FileURLPrefix = "file:///";
-$userinstalldir = "UserInstallation";
-$cygwin = "cygwin";
-$prefered_lang = "en-US";
-$global_instset_mask = "";
-$smoketest_install = $ENV{SMOKETESTINSTALLSET};
-
-if (!defined($gui)) {
- print "The workstamp is missing. Please use setsolar\n";
- exit(1);
-}
-
-if (($gui eq "WNT") and ($ENV{USE_SHELL} ne "4nt")) {
- $gui = $cygwin;
-}
-
-if (!defined($temp_path) and (($gui eq "UNX") or ($gui eq $cygwin))) {
- $temp_path = $ENV{TMPDIR};
- if (!defined($temp_path) and (-d "/tmp")) {
- $temp_path = "/tmp";
- }
-}
-
-if (defined($ENV{INSTALLPATH_SMOKETEST})) {
- $installpath_without = $ENV{INSTALLPATH_SMOKETEST};
-}
-else {
- $installpath_without = $temp_path;
-}
-
-if (!defined($installpath_without)) {
- print "Your temp value is missing. Please set your temp-variable or define INSTALLPATH_SMOKETEST\n\n";
- exit(1);
-}
-
-if (!((defined($ENV{UPDATER})) and ($ENV{UPDATER} eq "YES") and !defined($ENV{CWS_WORK_STAMP})) ) {
- $is_protocol_test = 0;
-}
-
-if ($gui eq "WNT") {
- $PathSeparator = '\\';
- $NewPathSeparator = ';';
- $dos = "$ENV{COMSPEC} -c";
- $PERL = "$dos $ENV{PERL}";
- $REMOVE_DIR = "$dos del /qsxyz";
- $REMOVE_FILE = "$dos del";
- $LIST_DIR = "$dos ls";
- $COPY_FILE = "$dos copy";
- $COPY_DIR = "$dos copy /s";
- $MK_DIR = "md";
- $RENAME_FILE = "ren";
- $nul = '> NUL';
- $RESPFILE="response_fat_wnt";
- $SVERSION_INI = $ENV{USERPROFILE} . $PathSeparator . "Anwendungsdaten" . $PathSeparator . "sversion.ini";
- $SOFFICEBIN = "soffice.exe";
- $bootstrapini = "bootstrap.ini";
- $bootstrapiniTemp = $bootstrapini . "_";
- $packpackage = "msi";
- $installpath_without =~ s/\//\\/g;
-}
-elsif ($gui eq "UNX") {
- $is_do_deinstall = 0;
- $PathSeparator = '/';
- $NewPathSeparator = ':';
- $dos = "";
- $PERL = "$ENV{PERL}";
- $REMOVE_DIR = "rm -rf";
- $REMOVE_FILE = "rm -f";
- $LIST_DIR = "ls";
- $COPY_FILE = "cp -f";
- $MK_DIR = "mkdir";
- $RENAME_FILE = "mv";
- $nul = '> /dev/null';
- $RESPFILE="response_fat_unx";
- $SVERSION_INI = $ENV{HOME} . $PathSeparator . ".sversionrc";
- $bootstrapini = "bootstraprc";
- $bootstrapiniTemp = $bootstrapini . "_";
- $packpackage = $ENV{PKGFORMAT};
- $SOFFICEBIN = "soffice";
- if ($ENV{OS} eq "MACOSX") {
- $COPY_DIR = "cp -RPfp";
- }
- else {
- $COPY_DIR = "cp -rf";
- }
-}
-elsif ($gui eq $cygwin) {
- $PathSeparator = '/';
- $NewPathSeparator = ':';
- $dos = "";
- $PERL = "$ENV{PERL}";
- $REMOVE_DIR = "rm -rf";
- $REMOVE_FILE = "rm -f";
- $LIST_DIR = "ls";
- $COPY_FILE = "cp -f";
- $COPY_DIR = "cp -rf";
- $MK_DIR = "mkdir";
- $RENAME_FILE = "mv";
- $nul = '> /dev/null';
- $RESPFILE="response_fat_wnt";
- $SVERSION_INI = $ENV{USERPROFILE} . $PathSeparator . "Anwendungsdaten" . $PathSeparator . "sversion.ini";
- $SOFFICEBIN = "soffice";
- $bootstrapini = "bootstrap.ini";
- $bootstrapiniTemp = $bootstrapini . "_";
- $CygwinLineends = $/;
- $WinLineends = "\r\n";
- $packpackage = "msi";
- $installpath_without =~ s/\\/\//g;
-}
-else {
- print_error ("not supported system\n",1);
-}
-
-if ($is_without_msiexec) {
- require installer::windows::admin; import installer::windows::admin;
- $installer::globals::logfilename = $ENV{DMAKE_WORK_DIR} . $PathSeparator . $ENV{OUTPATH} . $ENV{PROEXT} . $PathSeparator . "misc" . $PathSeparator . "installer.log";
- $installer::globals::exithandler = \&install_error;
-}
-
-if ($is_oo) {
- @install_list = ( 'instsetoo_native'
- );
-}
-else {
- @install_list = ( 'instset_native'
- );
-}
-
-@error_messages = ( '',
- 'lock flag for pkgadd still exist. Installation not possible!',
- 'Error during installation!',
- 'Error: patching configuration failed!',
- 'Error: starting office failed or office crashed!',
- 'Error during testing',
- 'can not copy extension',
- 'Error in setup log',
- 'installationsset is not complete',
- 'can not copy all basic scripts',
- 'can not patch bottstrapini',
- 'msiexec failed. Maybe you have got an installed version',
- 'deinstallation is incomplete',
- 'this packformat is not supported for this environment',
- 'can not set execute permission'
-);
-
-my $show_NoMessage = 0;
-my $show_Message = 1;
-
-my $error_logflag = 1;
-my $error_setup = 2;
-my $error_patchConfig = 3;
-my $error_startOffice = 4;
-my $error_testResult = 5;
-my $error_copyExtension = 6;
-my $error_setup_log = 7;
-my $error_installset = 8;
-my $error_copyBasic = 9;
-my $error_patchBootstrap = 10;
-my $error_msiexec = 11;
-my $error_deinst = 12;
-my $error_packformat = 13;
-my $error_permission = 14;
-
-my $command_normal = 0;
-my $command_withoutErrorcheck = 1;
-my $command_withoutOutput = 2;
-
-if ($is_oo) {
- $PRODUCT="OpenOffice";
-}
-else {
- $PRODUCT="StarOffice";
-}
-
-if (($ENV{PKGFORMAT} eq "installed") and (!defined ($ENV{FORCE2ARCHIVE}))) {
- $packpackage = $ENV{PKGFORMAT}; # take it for all environments
-}
-elsif (defined ($ENV{FORCE2ARCHIVE})) {
- $packpackage = "archive"; # take it for all environments
-}
-$StandDir = $ENV{SOLARSRC} . $PathSeparator;
-$SHIP = defined $ENV{SHIPDRIVE} ? $ENV{SHIPDRIVE} . $PathSeparator : "shipdrive_not_set";
-$PORDUCT = "$SHIP$ENV{INPATH}$PathSeparator$PRODUCT$PathSeparator$packpackage$PathSeparator";
-$DATA="$ENV{DMAKE_WORK_DIR}$PathSeparator" . "data$PathSeparator";
-$WORK_STAMP_LC=$ENV{WORK_STAMP};
-$WORK_STAMP_LC =~ tr/A-Z/a-z/;
-$ENV{DBGSV_INIT} = $DATA . "dbgsv.ini";
-$ExtensionDir = $ENV{DMAKE_WORK_DIR} . $PathSeparator . $ENV{OUTPATH} . $ENV{PROEXT} . $PathSeparator . "bin" . $PathSeparator;
-
-if (defined($vcsid)) {
- $installpath_without .= $PathSeparator . $vcsid;
-}
-if (!$is_oo) {
- $installpath_without .= $PathSeparator . "StarOffice";
-}
-else {
- $installpath_without .= $PathSeparator . "OpenOffice";
-}
-
-$installpath = $installpath_without . $PathSeparator;
-$installpath = glob $installpath;
-
-$ENV{STAR_REGISTRY}="";
-$milestone = "";
-
-#### options ####
-
-$opt_nr = 0;
-GetOptions('nr');
-
-if ($opt_nr) {
- $is_remove_at_end = 0; # do not remove installation
-}
-if ( $ARGV[0] ) {
- $milestone = $ARGV[0];
-}
-if ( $ARGV[1] ) {
- $buildid = $ARGV[1];
-}
-
-
-#### script id #####
-
-( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
-
-$id_str = ' $Revision: 1.35 $ ';
-$id_str =~ /Revision:\s+(\S+)\s+\$/
- ? ($script_rev = $1) : ($script_rev = "-");
-
-print "$script_name -- version: $script_rev\n";
-
-
-#### main ####
-
-if (!$is_debug) {
- if ($is_do_deinstall) {
- deinstallInstallation ($installpath);
- }
- removeOldInstallation($installpath);
- save_sversion ($SVERSION_INI);
-}
-
-($INSTSETNAME, $INSTALLSET) = getInstset();
-
-print "Install: $INSTALLSET$INSTSETNAME\n";
-prepare();
-doTest();
-
-if (!$is_debug) {
- restore_sversion ($SVERSION_INI);
- if ($is_remove_at_end) {
- if ($is_do_deinstall) {
- deinstallInstallation ($installpath);
- }
- removeInstallation($installpath);
- }
- else {
- print_notRemoved ($installpath);
- }
-}
-print "smoketest successful!\n";
-exit (0);
-
-#########################
-# #
-# Procedures #
-# #
-#########################
-
-sub getSubFiles {
- my ($startDir, $DirArray_ref, $mask) = @_;
- my ($dir);
- opendir(DIR,"$startDir");
- while($dir = readdir(DIR)) {
- if (($dir =~ /\.$/) or ($dir !~ /$mask/)) {
- next;
- }
- push (@{$DirArray_ref}, "$dir");
- }
- closedir(DIR);
-
-}
-
-sub getSubDirs {
- my ($startDir, $DirArray_ref) = @_;
- my ($dir);
- opendir(DIR,"$startDir");
- while($dir = readdir(DIR)) {
- if (($dir !~ /\.$/) and ( -d "$startDir$dir") ) {
- push (@{$DirArray_ref}, "$dir");
- }
- }
- closedir(DIR);
-
-}
-
-sub getSubDirsFullPath {
- my ($startDir, $DirArray_ref) = @_;
- my ($dir);
- opendir(DIR,"$startDir");
- while($dir = readdir(DIR)) {
- if (($dir !~ /\.$/) and ( -d "$startDir$dir") ) {
- push (@{$DirArray_ref}, "$startDir$dir");
- }
- }
- closedir(DIR);
-
-}
-
-sub findSubDir {
- my ($DirArray_ref) = @_;
- my (@sortedArray, $dir, $instdir);
- @sortedArray = sort langsort @{$DirArray_ref};
- print "Langs: @sortedArray\n" if $is_command_infos;
- foreach $dir (@sortedArray) {
- if ($dir =~ /log$/) {
- next;
- }
- $instdir = "$dir";
- return $instdir;
- }
- return "";
-}
-
-sub findMultiple {
- my ($base, $name) = @_;
- my ($f, @s, @res);
- opendir(DIR, $base) or die "cannot open dir $base";
- while ($f = readdir(DIR)) {
- push @res, "$base" if $f eq $name;
- push @s, $f if
- -d "$base$f" && ! -l "$base$f" && $f ne '.' && $f ne '..';
- }
- closedir(DIR);
- foreach $f (@s) {
- push @res, findMultiple("$base$f$PathSeparator", $name);
- }
- return @res;
-}
-
-sub findUnique {
- my ($base, $name) = @_;
- my @res = findMultiple($base, $name);
- die "no unique $name in $base" unless @res == 1;
- return $res[0];
-}
-
-sub prepare {
- if ($gui eq "UNX") {
- $ENV{ignore_patch_check}="t";
- $ENV{OOO_FORCE_DESKTOP} = "none";
- }
-
-}
-
-sub is_Installset_ok {
- my ($installpath, $installname) = @_;
- my ($is_ok, $infile);
- $is_ok = 1;
- $infile = $INSTALLSET. "log$PathSeparator";
- $infile =~ s/_pre_//;
- $infile =~ s/[\/\\]normal[\/\\]//;
- $infile =~ s/\.(\d+)$/_$1\.html/;
- #if ($installname =~ /(?:_pre_){0,1}(.*)\.(\d+)/) {
- # $infile .= "$1_$2.html";
- # print "protocol: $infile\n" if $is_debug;
- #}
- open INTABLE, "<$infile" or return errorFromOpen ($infile);
- while(<INTABLE>) {
- $line = $_;
- if ( $line =~ />(error)(.*)</ ) {
- print "ERROR: $1$2\n";
- $is_ok = 0;
- }
- }
- close INTABLE;
- return $is_ok;
-}
-
-sub errorFromOpen {
- my ($file) = @_;
- print "ERROR: can't open $file\n";
- return 0;
-}
-
-sub doTest {
- my ($Command);
- my (@Params, $basedir, $basisdir, $branddir);
-
- # check installset (error 8)
-
- if (($INSTSETNAME ne "") and $is_protocol_test) {
- if (!is_Installset_ok ("$PORDUCT", $INSTSETNAME)) {
- print_error ($error_messages[$error_installset], $error_installset);
- }
- }
-
- # install office (error 2)
-
- $basedir = doInstall ("$INSTALLSET$INSTSETNAME$PathSeparator", $installpath);
- $basisdir = findUnique($basedir, 'ure-link');
- $branddir = findUnique($basedir, 'basis-link');
- if ( (defined($ENV{OS})) && ($ENV{OS} eq "MACOSX") ) {
- $programpath = "$branddir". "MacOS$PathSeparator";
- }
- else {
- $programpath = "$branddir". "program$PathSeparator";
- }
- $userinstallpath_without = $installpath . $userinstalldir;
- $userinstallpath = $userinstallpath_without . $PathSeparator;
- $userpath = "$userinstallpath" . "user$PathSeparator";
- $basicpath = $userpath . "basic$PathSeparator";
- $standardbasicpath = "$basisdir" . "presets$PathSeparator" . "basic$PathSeparator";
- $LOGPATH="$userinstallpath" . "user" . $PathSeparator . "temp";
-
- if ($gui eq "UNX") {
- $Command = "chmod -R 777 \"$basedir\"*";
- execute_system ("$Command");
- }
-
- # check setup log file (error 7)
-
-# $Command = "$PERL check_setup.pl \"$programpath" . "setup.log\"";
-# execute_Command ($Command, $error_setup_log, $show_Message, $command_normal );
-
- # patch config (error 3)
-
- $Command = "$PERL config.pl \"$branddir\" \"$userinstallpath\" \"$buildid\"";
- execute_Command ($Command, $error_patchConfig, $show_Message, $command_normal );
-
- # copy basicscripts (error 9)
-
- $Command = "$COPY_FILE \"$DATA" . "scripts$PathSeparator" . "\"*.x* \"$standardbasicpath" . "Standard$PathSeparator\"";
- execute_Command ($Command, $error_copyBasic, $show_Message, $command_withoutOutput);
-
- createPath("$basicpath", $error_copyBasic);
- $Command = "$COPY_DIR \"$standardbasicpath\"* \"$basicpath\"";
- execute_Command ($Command, $error_copyBasic, $show_Message, $command_withoutOutput);
-
- # patching bootstrap (error 11)
-
- if (!patch_bootstrap ("$programpath$bootstrapini", "$programpath$bootstrapiniTemp")) {
- print_error ($error_messages[$error_patchBootstrap], $error_patchBootstrap);
- }
-
- # copy extension (error 6)
-
- createPath ($LOGPATH, $error_copyExtension);
- $Command = "$COPY_FILE \"$ExtensionDir" . "TestExtension.oxt\" " . "\"$LOGPATH$PathSeparator\"";
- execute_Command ($Command, $error_copyExtension, $show_Message, $command_withoutOutput);
-
-
- # start office (error 4)
-
- print "starting office ($INSTSETNAME)\n";
-
- $Command = "\"$programpath" . "$SOFFICEBIN\" -norestore -nocrashreport macro:///Standard.Global.StartTestWithDefaultOptions";
- if ( (defined($ENV{OS})) && ($ENV{OS} eq "MACOSX") ) {
- $Command = "cd \"$programpath\"; " . $Command;
- }
- execute_Command ($Command, $error_startOffice, $show_Message, $command_normal);
-
- # test if smoketest is ok (error 5)
-
- $Command = "$PERL testlog.pl \"$LOGPATH\"";
- execute_Command ($Command, $error_testResult, $show_Message, $command_normal);
-
- # deinstall office (error 6)
-
- if ($is_remove_at_end) {
- print "Deinstalling Office\n";
- }
-# $Command = "$PERL deinstall.pl \"$LOGPATH\" \"$installpath\"";
-# execute_Command ($Command, $error_deinstall, $show_NoMessage, $command_normal);
-}
-
-sub install_error {
- print_error ($error_messages[$error_setup], $error_setup);
-}
-
-sub doInstall {
- my ($installsetpath, $dest_installdir) = @_;
- my ($DirArray, $mask, $file, $Command, $optdir, $rpmdir, $system, $mach, $basedir, $output_ref, $olddir, $newdir);
- if (($ENV{PKGFORMAT} eq "installed") and (!defined($ENV{FORCE2ARCHIVE}))) {
- createPath ($dest_installdir, $error_setup);
- $Command = "$COPY_DIR \"$installsetpath\" \"$dest_installdir\"";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- @DirArray = ();
- getSubDirsFullPath ($dest_installdir, \@DirArray);
- if ($#DirArray == 0) {
- $basedir = $DirArray[0] . $PathSeparator;
- }
- elsif ($#DirArray == -1) {
- print_error ($error_setup, $show_Message);
- }
- else {
- $basedir = $dest_installdir;
- }
- }
- elsif (($gui eq "WNT") or ($gui eq $cygwin)) {
- if (defined($ENV{FORCE2ARCHIVE})) {
- print_error ($error_messages[$error_packformat], $error_packformat);
- }
- $mask = "\\.msi\$";
- getSubFiles ("$installsetpath", \@DirArray, $mask);
- if ($#DirArray == -1) {
- print_error ("Installationset in $installsetpath is incomplete", 2);
- }
- foreach $file (@DirArray) {
- if ($is_without_msiexec) {
- if ($is_debug) {
- print "Debugmode: no installation from $installsetpath\n";
- }
- else {
- createPath ($dest_installdir, $error_setup);
- installer::windows::admin::make_admin_install ($installsetpath . $file, $dest_installdir);
- if ($gui eq $cygwin) {
- $Command = "find $dest_installdir \\( -name \"installhelper\" -prune -o -name \"*.exe\" -o -name \"*.dll\" -o -name \"*.manifest\" -o -name \"*.bin\" -o -name \"*.jar\" \\) -exec chmod a+x {} \\;";
- execute_Command ($Command, $error_permission, $show_Message, $command_normal);
- }
- }
- }
- else
- {
- if ($gui eq $cygwin) {
- my $convertinstallset = ConvertCygwinToWin_Shell("$installsetpath$file");
- my $convertdestdir = ConvertCygwinToWin_Shell($dest_installdir);
- $_inst_cmd=$ENV{SMOKETEST_SOINSTCMD};
- if ( defined($_inst_cmd) ) {
- $Command = $_inst_cmd . " $convertinstallset -qn TARGETDIR=$convertdestdir";
- }
- else {
- $Command = "msiexec.exe /a $convertinstallset -qn TARGETDIR=$convertdestdir ALLUSERS=2";
- }
- }
- else {
- $_inst_cmd=$ENV{SMOKETEST_SOINSTCMD};
- if ( defined($_inst_cmd) ) {
- $Command = $_inst_cmd . " $installsetpath$file -qn TARGETDIR=$dest_installdir";
- }
- else {
- $Command = "msiexec.exe /a $installsetpath$file -qn TARGETDIR=$dest_installdir ALLUSERS=2";
- }
- }
- execute_Command ($Command, $error_msiexec, $show_Message, $command_normal);
- }
- }
- $basedir = $dest_installdir;
- }
- elsif ($gui eq "UNX") {
- $system = `uname -s`;
- chomp $system;
- $mach = `uname -m`;
- chomp $mach;
- if (defined ($ENV{EPM}) && ($ENV{EPM} eq 'NO')) { # do the install ourselves ...
-# FIXME - this tool should work nicely without such hacks
-# cut/paste from ooo-build/bin/ooinstall
- my $instoo_dir = "$ENV{SRC_ROOT}/instsetoo_native";
-
- if ( $ENV{'SYSTEM_MOZILLA'} eq 'YES' ) {
- if (defined $ENV{'LD_LIBRARY_PATH'}) {
- $ENV{'LD_LIBRARY_PATH'} =
- "$ENV{'LD_LIBRARY_PATH'}:$ENV{'MOZ_LIB'}";
- } else {
- $ENV{'LD_LIBRARY_PATH'} = $ENV{'MOZ_LIB'};
- }
- }
- $ENV{'PYTHONPATH'} = "$ENV{SRC_ROOT}/instsetoo_native/$ENV{INPATH}/bin:$ENV{SOLARVERSION}/$ENV{INPATH}/lib";
- $ENV{OUT} = "../$ENV{INPATH}";
- $ENV{LOCAL_OUT} = "../$ENV{INPATH}";
- $ENV{LOCAL_COMMON_OUT} = "../$ENV{INPATH}";
- my $sane_destdir = $dest_installdir;
- $sane_destdir .= "oootest";
- createPath ($sane_destdir, $error_setup);
- $Command = "cd $instoo_dir/util ; perl -w $ENV{SOLARENV}/bin/make_installer.pl " .
- "-f openoffice.lst -l en-US -p OpenOffice " .
- "-buildid \"smoketestoo\" -simple $sane_destdir";
-# FIXME - this tool should work nicely without such evil
- execute_Command ($Command, $error_setup, $show_Message, $command_normal);
- return "$sane_destdir/"
-
- } elsif ( (defined($system)) && ($system eq "Linux") ) {
- if (defined ($ENV{FORCE2ARCHIVE}) and ($ENV{FORCE2ARCHIVE} eq "TRUE")) {
- $optdir = $dest_installdir; #needed for getting work dir at the end
- $mask = "\\.tar\\.gz\$";
- getSubFiles ("$installsetpath", \@DirArray, $mask);
- if ($#DirArray == -1) {
- print_error ("Installationset in $installsetpath is incomplete", 2);
- }
- elsif ($#DirArray == 0) {
- createPath ($dest_installdir, $error_setup);
- $Command = "cd \"$dest_installdir\" && tar xzvf \"$installsetpath$DirArray[0]\"";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- }
- else {
- print_error ($error_setup, $show_Message);
- }
- }
- elsif ($ENV{PKGFORMAT} eq "deb") { # default is rpm
- $installsetpath .= "DEBS$PathSeparator";
- $optdir = "$dest_installdir" . "opt" . $PathSeparator;
- createPath ($optdir, $error_setup);
- $mask = "\\.deb\$";
- getSubFiles ("$installsetpath", \@DirArray, $mask);
- if ($#DirArray == -1) {
- print_error ("Installationset in $installsetpath is incomplete", 2);
- }
- foreach $file (@DirArray) {
- if ( ($file =~ /-menus-/) or ($file =~ /^adabas/) or (/^j2re-/) or ($file =~ /-gnome-/) ) {
- next;
- }
- $Command = "dpkg-deb -x $installsetpath$file $dest_installdir";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutErrorcheck | $command_withoutOutput);
- }
- }
- else {
- $installsetpath .= "RPMS$PathSeparator";
- $optdir = "$dest_installdir" . "opt" . $PathSeparator;
- $rpmdir = "$dest_installdir" . "rpm" . $PathSeparator;
- createPath ($optdir, $error_setup);
- createPath ($rpmdir, $error_setup);
- my $ld_library_backup = $ENV{LD_LIBRARY_PATH};
- if ( defined $ENV{SYSBASE}) {
- my $sysbase=$ENV{SYSBASE};
- if ( "$ld_library_backup" eq "" ) {
- $ENV{LD_LIBRARY_PATH} = "$sysbase/usr/lib";
- } else {
- $ENV{LD_LIBRARY_PATH} = "$ld_library_backup:$sysbase/lib";
- }
- }
- $Command = "rpm --initdb --define \"_dbpath $rpmdir\"";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- $mask = "\\.rpm\$";
- getSubFiles ("$installsetpath", \@DirArray, $mask);
- if ($#DirArray == -1) {
- print_error ("Installationset in $installsetpath is incomplete", 2);
- }
- foreach $file (@DirArray) {
- if ( ($file =~ /-menus-/) or ($file =~ /^adabas/) or (/^j2re-/) or ($file =~ /-gnome-/) ) {
- next;
- }
- $Command = "rpm ";
- $Command .= "--ignorearch " if (defined $ENV{HOSTTYPE} && ($ENV{HOSTTYPE} eq 'x86_64-linux'));
- $Command .= "--define \"_dbpath $rpmdir\" --install --ignoresize --nodeps -vh --relocate /opt=${dest_installdir}opt $installsetpath$file";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutErrorcheck | $command_withoutOutput);
- }
- $ENV{LD_LIBRARY_PATH}=$ld_library_backup;
- }
- }
- elsif ( (defined($system)) && ($system eq "SunOS") ) {
- if (defined($ENV{FORCE2ARCHIVE})) {
- print_error ($error_messages[$error_packformat], $error_packformat);
- }
- @DirArray = ();
- $mask = "^.ai.pkg.zone.lock";
- getSubFiles ("/tmp", \@DirArray, $mask);
- if ($#DirArray >= 0) {
- foreach $file (@DirArray) {
- $Command = "$REMOVE_FILE /tmp/$file";
- execute_Command ($Command, $error_logflag, $show_Message, $command_withoutOutput);
- }
- }
- if ($mach eq sun4u) {
- $solarisdata = $DATA . "solaris$PathSeparator" . "sparc$PathSeparator";
- }
- else {
- $solarisdata = $DATA . "solaris$PathSeparator" . "x86$PathSeparator";
- }
- $installsetpath .= "packages$PathSeparator";
- $optdir = "$dest_installdir" . "opt" . $PathSeparator;
- createPath ($optdir, $error_setup);
- createPath ($dest_installdir . "usr$PathSeparator" . "bin", $error_setup);
- @DirArray = ();
- getSubDirs ("$installsetpath", \@DirArray);
- my $ld_preload = $ENV{LD_PRELOAD};
- $ENV{LD_PRELOAD} = $solarisdata . "getuid.so";
- if ($#DirArray == -1) {
- print_error ("Installationset in $installsetpath is incomplete", 2);
- }
- foreach $file (@DirArray) {
- if ( ($file =~ /-gnome/) or ($file =~ /-cde/) or ($file =~ /adabas/) or ($file =~ /j3/) or ($file =~ /-desktop-/) ) {
- next;
- }
- $Command = "pkgparam -d $installsetpath $file BASEDIR";
- $output_ref = execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- if (($#{@$output_ref} > -1) and ($$output_ref[0] ne "") ) {
- createPath ("$dest_installdir$$output_ref[0]", $error_setup);
- }
- $Command = "pkgadd -a $solarisdata" . "admin -d $installsetpath -R $dest_installdir $file";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutErrorcheck | $command_withoutOutput);
- }
- my $pkgadd_tmpfile = "/tmp/.ai.pkg.zone.lock*";
- $Command = "$REMOVE_FILE $pkgadd_tmpfile";
- execute_Command ($Command, $error_setup, $show_NoMessage, $command_withoutErrorcheck | $command_withoutOutput);
- $ENV{LD_PRELOAD} = $ld_preload;
- }
- elsif ( (defined($ENV{OS})) && ($ENV{OS} eq "MACOSX") ) {
- if (defined($ENV{FORCE2ARCHIVE})) {
- print_error ($error_messages[$error_packformat], $error_packformat);
- }
- @DirArray = ();
- my $install_dmg;
- getSubFiles ("$installsetpath", \@DirArray, "^[a-zA-Z0-9].*\\.dmg\$");
- if ($#DirArray == 0) {
- $install_dmg = "$installsetpath" . $DirArray[0];
- }
- elsif ($#DirArray > 0) {
- print_error ("more than one installset found in $installsetpath", 2);
- }
- else {
- print_error ("no installset found in $installsetpath", 2);
- }
- $Command = "hdiutil attach " . $install_dmg;
- my $output_ref;
- $output_ref = execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- my $volumeinfo = $$output_ref[$#{@{$output_ref}}];
- if (!$volumeinfo =~ /OpenOffice/) {
- print_error ("mount of $install_dmg failed", 2);
- }
- $volumeinfo =~ s/\s{2,}/;/g;
- my @volumeinfos = split(/;/,$volumeinfo);
- my $detachpath = $volumeinfos[0];
- my $newinstallsetpath = $volumeinfos[2] . $PathSeparator;
- createPath ($dest_installdir, $error_setup);
- $Command = "$COPY_DIR \"$newinstallsetpath\" \"$dest_installdir\"";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- $Command = "hdiutil detach " . $detachpath;
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- @DirArray = ();
- getSubFiles ("$dest_installdir", \@DirArray, "\\.app");
- if ($#DirArray == 0) {
- $optdir = "$dest_installdir" . $DirArray[0] . $PathSeparator;
- my $PListFile = "Info.plist";
- my $officeDir = "$optdir" . "Contents" . $PathSeparator;
- my $programmDir = "$officeDir" . "MacOS" . $PathSeparator;
- $Command = "$COPY_FILE \"$officeDir$PListFile\" \"$programmDir$PListFile\"";
- execute_Command ($Command, $error_setup, $show_Message, $command_withoutOutput);
- }
- else {
- print_error ("Installation in $dest_installdir is incomplete", 2);
- }
- }
- else {
- print_error ("Plattform is not supported", 2);
- }
- @DirArray = ();
- getSubDirsFullPath ($optdir, \@DirArray);
- if ($#DirArray == 0) {
- $basedir = $DirArray[0] . $PathSeparator;
- }
- elsif ($#DirArray == -1) {
- print_error ($error_setup, $show_Message);
- }
- else {
- $basedir = $optdir;
- }
- }
- return ($basedir);
-}
-
-sub langsort {
- if ($a eq $prefered_lang) {
- return -1;
- }
- elsif ($b eq $prefered_lang) {
- return 1;
- }
- else {
- $a cmp $b;
- }
-}
-
-sub getInstset {
- my ($INSTSET, $NEWINSTSET);
- my (@DirArray, $InstDir, $RootDir, $TestDir1, $TestDir2);
-
- if (defined ($ENV{EPM}) && ($ENV{EPM} eq 'NO') && ($gui eq "UNX")) { # we do the install ourselves ...
- return ();
- }
-
- print "get Instset\n" if $is_debug;
- $NEWINSTSET = "";
- if (defined($smoketest_install)) {
- my $mask = "\\" . $PathSeparator . "\$";
- $smoketest_install =~ s/$mask//;
- my ($sufix);
- ($NEWINSTSET, $INSTSET, $sufix) = fileparse ($smoketest_install);
- return ($NEWINSTSET, $INSTSET);
- }
- if (!isLocalEnv() and !defined($ENV{CWS_WORK_STAMP}) and (-e $SHIP)) {
- ($NEWINSTSET, $INSTSET) = getSetFromServer();
- }
- else {
- $InstDir="";
- $RootDir=$ENV{DMAKE_WORK_DIR};
- $RootDir=~s/\w+$//;
- foreach $project (@install_list) {
- @DirArray=();
- $TestDir1 = "$RootDir$project$PathSeparator$ENV{INPATH}$PathSeparator$PRODUCT$PathSeparator$packpackage$PathSeparator" . "install$PathSeparator";
- if (-e "$TestDir1") {
- $InstDir= $TestDir1;
- }
- else {
- $sourceconfig_obj = SourceConfig->new() if (!defined ($sourceconfig_obj));
- my $module_path = $sourceconfig_obj->get_module_path($project);
- # only if module exists
- if (defined ($module_path)) {
- $TestDir2 = "$module_path$PathSeparator$ENV{INPATH}$PathSeparator$PRODUCT$PathSeparator$packpackage$PathSeparator" . "install$PathSeparator";
- }
- else {
- $TestDir2 = $module_path;
- }
- if (defined ($TestDir2) && -e "$TestDir2") {
- $InstDir="$TestDir2";
- }
- }
- if ($InstDir eq "") {
- next;
- }
- getSubDirs ("$InstDir", \@DirArray);
- $INSTSET = findSubDir (\@DirArray);
- print "Lang-Sel: $INSTSET\n" if $is_command_infos;
-;
- if ($INSTSET ne "") {
- $NEWINSTSET = $INSTSET;
- $INSTSET = $InstDir;
- print "new: $INSTSET\n";
- }
- if (($INSTSET ne "") and (-e $INSTSET)) {
- return ($NEWINSTSET, $INSTSET);
- }
- }
- print_error ("no installationset found\n",2);
- }
- return ($NEWINSTSET, $INSTSET);
-}
-
-sub isLocalEnv {
- my $returnvalue = 0;
- if (defined ($ENV{SOL_TMP}) && defined ($ENV{SOLARVERSION})) {
- my $mask = $ENV{SOL_TMP};
- $mask =~ s/\\/\\\\/;
- print "Mask: $mask\n" if $is_debug;
- if ($ENV{SOLARVERSION}=~ /$mask/) {
- $returnvalue = 1;
- }
- }
- return $returnvalue;
-}
-
-sub get_productcode {
- my ( $installpath ) = @_;
- my ($path, $productcode);
- $productcode = "";
- $path = "$installpath" . "setup.ini";
- print "$path\n" if $is_debug;
- if ( !open(SETUP,$path) ) {
- print "FATAL: can't open $path\n" if ($is_command_infos);
- return ($productcode);
- }
-
- if (!eof(SETUP)) {
- while (<SETUP>) {
- chomp;
- if ( /productcode=(\{[\d\w-]+\})/ ) {
- $productcode = $1;
- }
- }
-
- close(SETUP);
- }
- return ($productcode);
-}
-
-sub InstsetSort {
- my ($a1, $b1);
- if ($a =~ /$global_instset_mask/) {
- $a1 = $1;
- }
- if ($b =~ /$global_instset_mask/) {
- $b1 = $1;
- }
- $a1 <=> $b1;
-}
-
-sub getSetFromServer {
- my ($DirName, $SetupFullPath);
- my $workspace = $ENV{WORK_STAMP};
- my $platform = $ENV{INPATH};
- my $latestset;
- my (@DirArray, $mask);
- $SetupFullPath = $PORDUCT;
- if ( ! ( $workspace && $platform ) ) {
- print_error ( "Error: environment not set correctly.", 1);
- }
- if (!defined($milestone)) {
- print_error ("Milestone ist not defined!", 2);
- }
- if (!defined($buildid)) {
- print_error ("Build-ID ist not defined!", 2);
- }
-
-# if ( $SetupFullPath =~ /^\/s.*\/install\// ) {
-# if ( $gui eq "UNX" ) {
-# $SetupFullPath = "/net/jumbo.germany" . $SetupFullPath;
-# } else {
-# $SetupFullPath = "\\\\jumbo" . $SetupFullPath;
-# }
-# }
-
-# my $ws_lc = lc $workspace;
- $mask = "^$workspace" . "_" . $milestone . "_native_packed-(\\d+)_en-US\\.$buildid";
- $global_instset_mask = $mask;
- getSubFiles ($SetupFullPath, \@DirArray, $mask);
- @DirArray = sort InstsetSort @DirArray;
- if ($#DirArray > -1) {
- $latestset = $DirArray [$#DirArray];
- $DirName = $latestset;
- }
- else {
- print_error ("Cannot find install set $SetupFullPath for $workspace $milestone", 2);
- }
- print "Latest install sets: $latestset\n" if $is_debug;
-
- print "$DirName\t $SetupFullPath\n" if $is_debug;
-
- # compare with file system
- # at the moment just the existence is checked. For security reasons it might be
- # better to additionally check whether there are newer sets (this must not happen,
- # but who knows ...)
- if ( -d $SetupFullPath ) {
- return ($DirName, $SetupFullPath);
- } else {
- print_error ("Cannot find install set $SetupFullPath for $workspace $milestone", 2);
- }
-}
-
-sub patch_bootstrap {
- my ($sourcefile, $destfile) = @_;
- my (@convert_split, $line);
- my ($Error) = 1;
- my ($lineend);
-
- if ($is_debug) {
- print "patching bootstrap $sourcefile ...\n";
- return 1;
- }
-
- $Error &= move ("$sourcefile", "$destfile");
-
- open OUTFILE, ">$sourcefile" or return errorFromOpen ($sourcefile);
- open INFILE, "<$destfile" or return errorFromOpen ($destfile);
- binmode(OUTFILE);
- binmode(INFILE);
- while(<INFILE>) {
- $line = $_;
-
- if ( $line =~ /UserInstallation/ ) {
- if ($line =~ /(\r\n)/) {
- $lineend = $1;
- }
- elsif ($line =~ /(\n)/) {
- $lineend = $1;
- }
- else {
- $lineend = $/;
- }
- @convert_split = split "=", $line;
- $line = $convert_split[0];
- $line .= "=";
- if ($gui eq $cygwin) {
- $line .= ConvertToFileURL(ConvertCygwinToWin($userinstallpath_without));
- }
- else {
- $line .= ConvertToFileURL($userinstallpath_without);
- }
- $line .= $lineend;
- }
- print OUTFILE "$line";
-
- }
-
- close OUTFILE;
- close INFILE;
- $Error &= unlink ($destfile);
- return ($Error);
-}
-
-sub SetWinLineends () {
- $/ = $WinLineends;
-}
-
-sub SetCygwinLineends () {
- $/ = $CygwinLineends;
-}
-
-sub ConvertToFileURL {
- my ($filename) = @_;
- my ($FileURL);
-
- $FileURL = $FileURLPrefix . $filename;
- $FileURL =~ s/\\/\//g;
- $FileURL =~ s/\/\/\/\//\/\/\//; # 4 slashes to 3 slashes
- return ($FileURL);
-}
-
-sub ConvertCygwinToWin_Shell {
- my ($cygwinpath) = @_;
- my ($winpath);
- $winpath = ConvertCygwinToWin ($cygwinpath);
- $winpath =~ s/\\/\\\\/g;
- return ($winpath);
-}
-
-sub ConvertCygwinToWin {
- my ($cygwinpath) = @_;
- my ($winpath);
- my ($last_lineends) = $/;
- SetCygwinLineends();
- $winpath=`cygpath --windows $cygwinpath`;
- chomp($winpath);
- $/ = $last_lineends;
- return ($winpath);
-}
-
-sub createPath {
- my ($path, $Error) = @_;
- if (!-d "$path") {
- if (!$is_debug) {
- eval {mkpath("$path", 0, 0777)};
- if ($@) {
- print_error ($error_messages[$Error], $Error);
- }
- }
- else {
- print "mkpath($path, 0, 0777)\n";
- }
- }
-}
-
-sub save_sversion {
- my ($sversion) = @_;
- my ($sversion_bak) = $sversion . "_";
- if (-e $sversion) {
- if (-e $sversion_bak) {
- execute_system("$REMOVE_FILE \"$sversion_bak\"");
- }
- execute_system("$COPY_FILE \"$sversion\" \"$sversion_bak\"");
- execute_system("$REMOVE_FILE \"$sversion\"");
- $sversion_saved = 1;
- }
-}
-
-sub restore_sversion {
- my ($sversion) = @_;
- my ($sversion_bak) = $sversion . "_";
- if ($sversion_saved) {
- if (-e $sversion) {
- execute_system("$REMOVE_FILE \"$sversion\"");
- }
- execute_system("$COPY_FILE \"$sversion_bak\" \"$sversion\"");
- execute_system("$REMOVE_FILE \"$sversion_bak\"");
- $sversion_saved = 0;
- }
-}
-
-sub removeOldInstallation {
- my ($installpath) = @_;
- if (!$is_debug) {
- if (-e $installpath) {
- execute_system("$REMOVE_DIR \"$installpath\"");
- }
- if (-e $installpath) {
- print_error ("can not clear old installation in $installpath\n", 3);
- }
- }
-}
-
-sub removeInstallation {
- my ($installpath) = @_;
- if (!$is_debug) {
- if (-e $installpath) {
- execute_system("$REMOVE_DIR \"$installpath\"");
- }
- }
-}
-
-sub deinstallInstallation {
- my ($installpath) = @_;
- my ($productcode);
- if ($gui eq "UNX") { return; }
- if (!$is_debug) {
- if (-e $installpath) {
- $productcode = get_productcode ($installpath);
- print "Productcode: $productcode\n" if ($is_command_infos);
- if ($productcode ne "") {
- print "deinstalling $productcode ...\n";
- $Command = "msiexec.exe -x $productcode -qn";
- execute_Command ($Command, $error_deinst, $show_Message, $command_withoutErrorcheck | $command_withoutOutput);
- }
- }
- }
-}
-
-sub setInstallpath {
- my ($infile, $outfile, $installpath) = @_;
- if (-e $outfile) {
- execute_system ("$REMOVE_FILE \"$outfile\"");
-
- }
- open OUTTABLE, ">$outfile" or die "Error: can\'t open solarfile $outfile";
- open INTABLE, "<$infile" or die "Error: can\'t open solarfile $infile";
- while(<INTABLE>) {
- $line = $_;
- if ( $line =~ /^DESTINATIONPATH=officeinstallpath/ ) {
- $line =~ s/officeinstallpath/$installpath/;
- }
- print OUTTABLE "$line";
- }
- close INTABLE;
- close OUTTABLE;
-}
-
-sub execute_Command {
- my ($Command, $Errorcode, $showMessage, $command_action) = @_;
- my ($Returncode, $output_ref);
- if (!$is_debug) {
- if ( ($command_action & $command_withoutOutput) == $command_withoutOutput) {
- ($Returncode, $output_ref) = execute_system ("$Command");
- }
- else {
- print "$Command\n" if $is_command_infos;
- $Returncode = system ("$Command");
- }
- if ($Returncode) {
- if ($showMessage) {
- if (($command_action & $command_withoutErrorcheck) == $command_withoutErrorcheck) {
- print_warning ($error_messages[$Errorcode], $Errorcode);
- }
- else {
- print_error ($error_messages[$Errorcode], $Errorcode);
- }
- }
- else {
- if (($command_action & $command_withoutErrorcheck) != $command_withoutErrorcheck) {
- do_exit ($Errorcode);
- }
- }
- }
- }
- else {
- print "$Command\n";
- }
- return $output_ref;
-}
-
-sub execute_system {
- my ($command) = shift;
- my (@output_array, $line);
- if ( $is_command_infos ) {
- print STDERR "TRACE_SYSTEM: $command\n";
- }
- open( COMMAND, "$command 2>&1 |");
- while ($line = <COMMAND>) {
- chomp $line;
- push (@output_array, $line);
- }
- close(COMMAND);
- return $?, \@output_array;
-}
-
-sub print_warning
-{
- my $message = shift;
-
- print STDERR "$script_name: ";
- print STDERR "WARNING $message\n";
- return;
-}
-
-sub print_error
-{
- my $message = shift;
- my $error_code = shift;
-
- print STDERR "$script_name: ";
- print STDERR "ERROR: $message\n";
-
- do_exit($error_code);
-}
-
-sub print_notRemoved {
- my ($installpath) = @_;
- print "no deinstallation from $installpath\n";
-}
-
-sub do_exit
-{
- my $error_code = shift;
-
- if ($sversion_saved) {
- restore_sversion ($SVERSION_INI);
- }
- if ($is_remove_on_error) {
- if ($is_do_deinstall) {
- deinstallInstallation ($installpath);
- }
- removeInstallation($installpath);
- }
- else {
- print_notRemoved ($installpath);
- }
- if ( $error_code ) {
- print STDERR "\nFAILURE: $script_name aborted.\n";
- }
- exit($error_code);
-
-}