summaryrefslogtreecommitdiff
path: root/solenv/bin/modules/installer/simplepackage.pm
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin/modules/installer/simplepackage.pm')
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm144
1 files changed, 67 insertions, 77 deletions
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index fdf9fc6fa4c3..518edc683c3d 100644
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -71,9 +71,10 @@ sub get_extensions_dir
my $extensiondir = $subfolderdir . $installer::globals::separator;
if ( $installer::globals::officedirhostname ne "" ) { $extensiondir = $extensiondir . $installer::globals::officedirhostname . $installer::globals::separator; }
- $extensiondir = $extensiondir . "share" . $installer::globals::separator . "extensions";
+ my $extensionsdir = $extensiondir . "share" . $installer::globals::separator . "extensions";
+ my $preregdir = $extensiondir . "share" . $installer::globals::separator . "prereg" . $installer::globals::separator . "bundled";
- return $extensiondir;
+ return ( $extensionsdir, $preregdir );
}
####################################################
@@ -82,21 +83,24 @@ sub get_extensions_dir
sub register_extensions
{
- my ($officedir, $languagestringref) = @_;
+ my ($officedir, $languagestringref, $preregdir) = @_;
+
+ my $infoline = "";
+
+ if ( $preregdir eq "" )
+ {
+ $infoline = "ERROR: Failed to determine directory \"prereg\" for extension registration! Please check your installation set.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ installer::exiter::exit_program($infoline, "register_extensions");
+ }
my $programdir = $officedir . $installer::globals::separator;
- # if ( $installer::globals::sundirhostname ne "" ) { $programdir = $programdir . $installer::globals::sundirhostname . $installer::globals::separator; }
if ( $installer::globals::officedirhostname ne "" ) { $programdir = $programdir . $installer::globals::officedirhostname . $installer::globals::separator; }
$programdir = $programdir . "program";
my $from = cwd();
chdir($programdir);
- my $infoline = "";
-
- # my $unopkgfile = $officedir . $installer::globals::separator . "program" .
- # $installer::globals::separator . $installer::globals::unopkgfile;
-
my $unopkgfile = $installer::globals::unopkgfile;
my $unopkgexists = 1;
@@ -107,87 +111,73 @@ sub register_extensions
push( @installer::globals::logfileinfo, $infoline);
}
- # my $extensiondir = $officedir . $installer::globals::separator . "share" .
- # $installer::globals::separator . "extension" .
- # $installer::globals::separator . "install";
-
- my $extensiondir = ".." . $installer::globals::separator . "share" . $installer::globals::separator . "extension" . $installer::globals::separator . "install";
-
- my $allextensions = installer::systemactions::find_file_with_file_extension("oxt", $extensiondir);
+ if ( ! -f $unopkgfile )
+ {
+ $unopkgexists = 0;
+ $infoline = "Info: File $unopkgfile does not exist! Extensions cannot be registered.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ }
- if (( $#{$allextensions} > -1 ) && ( $unopkgexists ))
+ if ( $unopkgexists )
{
my $currentdir = cwd();
print "... current dir: $currentdir ...\n";
$infoline = "Current dir: $currentdir\n";
push( @installer::globals::logfileinfo, $infoline);
- for ( my $i = 0; $i <= $#{$allextensions}; $i++ )
- {
- my $oneextension = $extensiondir . $installer::globals::separator . ${$allextensions}[$i];
-
- # my $systemcall = $unopkgfile . " add --shared --suppress-license " . "\"" . $oneextension . "\"";
+ if ( ! -f $unopkgfile ) { installer::exiter::exit_program("ERROR: $unopkgfile not found!", "register_extensions"); }
- if ( ! -f $unopkgfile ) { installer::exiter::exit_program("ERROR: $unopkgfile not found!", "register_extensions"); }
- if ( ! -f $oneextension ) { installer::exiter::exit_program("ERROR: $oneextension not found!", "register_extensions"); }
+ my $localtemppath = installer::systemactions::create_directories("uno", $languagestringref);
- my $localtemppath = installer::systemactions::create_directories("uno", $languagestringref);
+ my $slash = "";
- if ( $installer::globals::iswindowsbuild )
+ if ( $installer::globals::iswindowsbuild )
+ {
+ if ( $^O =~ /cygwin/i )
{
- if ( $^O =~ /cygwin/i )
- {
- $localtemppath = $installer::globals::cyg_temppath;
- }
- else
- {
- $windowsslash = "\/";
- }
- $localtemppath =~ s/\\/\//g;
- $localtemppath = "/".$localtemppath;
+ $localtemppath = $installer::globals::cyg_temppath;
+ $preregdir = qx{cygpath -m "$preregdir"};
+ chomp($preregdir);
}
- my $systemcall = $unopkgfile . " add --shared --suppress-license --verbose " . $oneextension . " -env:UserInstallation=file://" . $localtemppath . " 2\>\&1 |";
+ $localtemppath =~ s/\\/\//g;
+ $slash = "/"; # Third slash for Windows. Other OS pathes already start with "/"
+ }
- print "... $systemcall ...\n";
+ $preregdir =~ s/\/\s*$//g;
- $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
+ my $systemcall = $unopkgfile . " sync --verbose -env:BUNDLED_EXTENSIONS_USER=\"file://" . $slash . $preregdir . "\"" . " -env:UserInstallation=file://" . $slash . $localtemppath . " 2\>\&1 |";
- my @unopkgoutput = ();
+ print "... $systemcall ...\n";
- open (UNOPKG, $systemcall);
- while (<UNOPKG>)
- {
- my $lastline = $_;
- push(@unopkgoutput, $lastline);
- }
- close (UNOPKG);
+ $infoline = "Systemcall: $systemcall\n";
+ push( @installer::globals::logfileinfo, $infoline);
- my $returnvalue = $?; # $? contains the return value of the systemcall
+ my @unopkgoutput = ();
- if ($returnvalue)
- {
- # Writing content of @unopkgoutput only in the error case into the log file. Sometimes it
- # contains strings like "Error" even in the case of success. This causes a packaging error
- # when the log file is analyzed at the end, even if there is no real error.
- for ( my $j = 0; $j <= $#unopkgoutput; $j++ ) { push( @installer::globals::logfileinfo, "$unopkgoutput[$j]"); }
+ open (UNOPKG, $systemcall);
+ while (<UNOPKG>)
+ {
+ my $lastline = $_;
+ push(@unopkgoutput, $lastline);
+ }
+ close (UNOPKG);
- $infoline = "ERROR: Could not execute \"$systemcall\"!\nExitcode: '$returnvalue'\n";
- push( @installer::globals::logfileinfo, $infoline);
- installer::exiter::exit_program("ERROR: $systemcall failed!", "register_extensions");
- }
- else
- {
- $infoline = "Success: Executed \"$systemcall\" successfully!\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
+ my $returnvalue = $?; # $? contains the return value of the systemcall
+
+ if ($returnvalue)
+ {
+ # Writing content of @unopkgoutput only in the error case into the log file. Sometimes it
+ # contains strings like "Error" even in the case of success. This causes a packaging error
+ # when the log file is analyzed at the end, even if there is no real error.
+ for ( my $j = 0; $j <= $#unopkgoutput; $j++ ) { push( @installer::globals::logfileinfo, "$unopkgoutput[$j]"); }
+
+ $infoline = "ERROR: Could not execute \"$systemcall\"!\nExitcode: '$returnvalue'\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ installer::exiter::exit_program("ERROR: $systemcall failed!", "register_extensions");
}
- }
- else
- {
- if ( ! ( $#{$allextensions} > -1 ))
+ else
{
- $infoline = "No extensions located in directory $extensiondir.\n";
+ $infoline = "Success: Executed \"$systemcall\" successfully!\n";
push( @installer::globals::logfileinfo, $infoline);
}
}
@@ -662,6 +652,7 @@ sub create_simple_package
if ( $onedir->{'HostName'} )
{
my $destdir = $subfolderdir . $installer::globals::separator . $onedir->{'HostName'};
+
if ( ! -d $destdir )
{
if ( $^O =~ /cygwin/i ) # Cygwin performance check
@@ -787,19 +778,18 @@ sub create_simple_package
system($localcall);
}
- # Registering the extensions
-
- # installer::logger::print_message( "... registering extensions ...\n" );
- # installer::logger::include_header_into_logfile("Registering extensions:");
- # register_extensions($subfolderdir, $languagestringref);
-
installer::logger::print_message( "... removing superfluous directories ...\n" );
installer::logger::include_header_into_logfile("Removing superfluous directories:");
- my $extensionfolder = get_extensions_dir($subfolderdir);
-
+ my ( $extensionfolder, $preregdir ) = get_extensions_dir($subfolderdir);
installer::systemactions::remove_empty_dirs_in_folder($extensionfolder);
+ # Registering the extensions
+
+ installer::logger::print_message( "... registering extensions ...\n" );
+ installer::logger::include_header_into_logfile("Registering extensions:");
+ register_extensions($subfolderdir, $languagestringref, $preregdir);
+
if ( $installer::globals::compiler =~ /^unxmacx/ )
{
installer::worker::put_scpactions_into_installset("$installdir/$packagename");