summaryrefslogtreecommitdiff
path: root/solenv/bin
diff options
context:
space:
mode:
authorsb <sb@openoffice.org>2010-04-07 13:14:23 +0200
committersb <sb@openoffice.org>2010-04-07 13:14:23 +0200
commitb1158104abbda340bc19d276bc3dc32a71f16293 (patch)
treee7b41d81ed39297178db6b1dd6384fc6251658ef /solenv/bin
parentac427da5f24b84bc725733d5b0856116def1f2b2 (diff)
parent8bfbf472c29017fba913f78e84900950c7589f69 (diff)
sb118: merged in re/DEV300_next towards DEV300_m76
Diffstat (limited to 'solenv/bin')
-rwxr-xr-xsolenv/bin/build.pl99
-rw-r--r--solenv/bin/make_installer.pl5
-rw-r--r--solenv/bin/modules/SourceConfig.pm246
-rw-r--r--solenv/bin/modules/installer/epmfile.pm10
-rw-r--r--solenv/bin/modules/installer/globals.pm4
-rw-r--r--solenv/bin/modules/installer/setupscript.pm49
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm4
-rw-r--r--solenv/bin/modules/installer/windows/directory.pm1
-rw-r--r--solenv/bin/modules/installer/windows/msiglobal.pm2
-rw-r--r--solenv/bin/modules/installer/windows/property.pm2
-rw-r--r--solenv/bin/modules/installer/windows/shortcut.pm37
-rw-r--r--solenv/bin/modules/installer/windows/sign.pm2
-rw-r--r--solenv/bin/modules/installer/windows/upgrade.pm2
-rw-r--r--solenv/bin/modules/installer/worker.pm41
-rw-r--r--solenv/bin/modules/installer/ziplist.pm5
15 files changed, 375 insertions, 134 deletions
diff --git a/solenv/bin/build.pl b/solenv/bin/build.pl
index 5775468d0ead..442dcba26946 100755
--- a/solenv/bin/build.pl
+++ b/solenv/bin/build.pl
@@ -342,102 +342,19 @@ sub rename_file {
};
sub generate_config_file {
- my $source_config = SourceConfig -> new();
- $source_config_file = $source_config->get_config_file_path();
- my $temp_config_file = File::Temp::tmpnam($ENV{TMP});
- my @config_content_new = ();
- my $addition_message;
- my $removal_message;
- my %present_modules = ();
- if ($source_config_file) {
- open(SOURCE_CONFIG_FILE, $source_config_file);
- my @config_content = <SOURCE_CONFIG_FILE>;
- close SOURCE_CONFIG_FILE;
- my ($module_section, $repository_section);
- foreach (@config_content) {
- if ((!/^\S+/)||(/^\s*#+/)) {
- push(@config_content_new, $_);
- next;
- }
- if (/^\[repositories\]\s*(\s+#)*/) {
- if ($module_section) {
- $addition_message = add_modules_to_source_config(\%add_to_config, \@config_content_new);
- };
- $module_section = 0;
- $repository_section = 1;
- push(@config_content_new, $_);
- next;
- };
- if (/^\[modules\]\s*(\s+#)*/) {
- $module_section = 1;
- $repository_section = 0;
- push(@config_content_new, $_);
- next;
- };
- if ($module_section && /\s*(\S+)=active\s*(\s+#)*/) {
- if ($clear_config || defined $remove_from_config{$1}) {
- delete $remove_from_config{$1};
- $removal_message .= "$1 ";
- } else {
- push(@config_content_new, $_);
- if (defined $add_to_config{$1} && !$prepare) {
- push(@warnings, "Module $1 already activated in $source_config_file\n");
- delete $add_to_config{$1};
- }
- };
- } else {
- push(@config_content_new, $_);
- };
- };
- if (keys %add_to_config) {
- if (!$module_section) {
- push(@config_content_new, "[modules]\n");
- };
- $addition_message = add_modules_to_source_config(\%add_to_config, \@config_content_new);
- };
- } else {
- if ($clear_config || scalar %remove_from_config) {
- print_error('No source config file found');
- };
- $source_config_file = $source_config->get_config_file_default_path();
- push(@config_content_new, "[modules]\n");
- $addition_message = add_modules_to_source_config(\%add_to_config, \@config_content_new);
- };
- die("Cannot open $temp_config_file") if (!open(NEW_CONFIG, ">$temp_config_file"));
- print NEW_CONFIG $_ foreach (@config_content_new);
- close NEW_CONFIG;
- rename_file($temp_config_file, $source_config_file, 1);
- foreach (keys %remove_from_config) {
- push(@warnings, "Module(s) $_ not found in " . $source_config_file . "\n");
- };
- print_warnings();
- print $addition_message if ($addition_message);
- print "Module(s):\n$removal_message\nremoved from $source_config_file\n" if ($removal_message);
+ my $source_config = SourceConfig->new();
+ $source_config->add_active_modules([keys %add_to_config], 1) if (scalar %add_to_config);
+ $source_config->remove_activated_modules([keys %remove_from_config], 1) if (scalar %remove_from_config);
+ $source_config->remove_all_activated_modules() if ($clear_config);
};
-#
-# Add modules from the passed hash to the array of config strigns
-#
-sub add_modules_to_source_config {
- my ($modules_hash_ref, $config_content_new) = @_;
- my $message;
- foreach (keys %$modules_hash_ref) {
- push(@$config_content_new, "$_=active\n");
- $message .= "$_ ";
- };
- if ($message) {
- return "Module(s):\n" .$message . "\nare added to the " . $source_config_file . "\n\n";
- } else {
- return '';
- };
-};
sub start_interactive {
$pid = open(HTML_PIPE, "-|");
print "Pipe is open\n";
if ($pid) { # parent
- # make file handle non-bloking
+ # make file handle non-blocking
my $flags = '';
fcntl(HTML_PIPE, F_GETFL, $flags);
$flags |= O_NONBLOCK;
@@ -1675,7 +1592,7 @@ sub get_options {
};
sub get_module_and_buildlist_paths {
- if ($build_all_parents) {
+ if ($build_all_parents || $checkparents) {
my $source_config = SourceConfig -> new($StandDir);
$source_config_file = $source_config->get_config_file_path();
$active_modules{$_}++ foreach ($source_config->get_active_modules());
@@ -2371,7 +2288,9 @@ sub prepare_incompatible_build {
@modules_built = keys %$deps_hash;
%add_to_config = %$deps_hash;
if ($prepare) {
- generate_config_file() if ((!defined $ENV{UPDATER}) || (defined $ENV{CWS_WORK_STAMP}));
+ if ((!defined $ENV{UPDATER}) || (defined $ENV{CWS_WORK_STAMP})) {
+ SourceConfig->new()->add_active_modules([keys %add_to_config], 0);
+ }
clear_delivered();
}
my $old_output_tree = '';
diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index a2f552eceb8d..bde0763e4564 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -394,9 +394,14 @@ if ( $installer::globals::globallogging ) { installer::files::save_hash($logging
installer::setupscript::add_forced_properties($allvariableshashref);
if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables5.log", $allvariableshashref); }
+# Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME)
+installer::setupscript::replace_preset_properties($allvariableshashref);
+if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables6.log", $allvariableshashref); }
+
installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref);
if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscript3.log" ,$setupscriptref); }
+
installer::logger::log_hashref($allvariableshashref);
installer::logger::print_message( "... analyzing directories ... \n" );
diff --git a/solenv/bin/modules/SourceConfig.pm b/solenv/bin/modules/SourceConfig.pm
index 88aa226f68a9..c3503221b8fa 100644
--- a/solenv/bin/modules/SourceConfig.pm
+++ b/solenv/bin/modules/SourceConfig.pm
@@ -38,10 +38,12 @@ package SourceConfig;
use strict;
use constant SOURCE_CONFIG_FILE_NAME => 'source_config';
+use constant SOURCE_CONFIG_VERSION => 2;
use Carp;
use Cwd;
use File::Basename;
+use File::Temp qw(tmpnam);
my $debug = 0;
@@ -62,20 +64,28 @@ sub new {
} else {
$source_root = $ENV{SOURCE_ROOT_DIR};
};
- $source_root = Cwd::realpath($source_root);
+ $self->{SOURCE_ROOT} = Cwd::realpath($source_root);
$self->{DEBUG} = 0;
- $self->{SOURCE_ROOT} = $source_root;
+ $self->{VERBOSE} = 0;
$self->{REPOSITORIES} = {};
+ $self->{ACTIVATED_REPOSITORIES} = {};
$self->{MODULE_PATHS} = {};
$self->{MODULE_BUILD_LIST_PATHS} = {};
$self->{ACTIVATED_MODULES} = {};
$self->{MODULE_REPOSITORY} = {};
$self->{REAL_MODULES} = {};
+ $self->{NEW_MODULES} = [];
+ $self->{REMOVE_MODULES} = {};
+ $self->{REMOVE_REPOSITORIES} = {};
+ $self->{NEW_REPOSITORIES} = [];
+ $self->{WARNINGS} = [];
+ $self->{REPORT_MESSAGES} = [];
+ $self->{CONFIG_FILE_CONTENT} = [];
if (defined $self->{USER_SOURCE_ROOT}) {
${$self->{REPOSITORIES}}{File::Basename::basename($self->{USER_SOURCE_ROOT})} = $self->{USER_SOURCE_ROOT};
};
- $self->{SOURCE_CONFIG_FILE} = get_config_file($source_root);
- $self->{SOURCE_CONFIG_DEFAULT} = $source_root .'/'.SOURCE_CONFIG_FILE_NAME;
+ $self->{SOURCE_CONFIG_FILE} = get_config_file($self->{SOURCE_ROOT});
+ $self->{SOURCE_CONFIG_DEFAULT} = $self->{SOURCE_ROOT} .'/'.SOURCE_CONFIG_FILE_NAME;
read_config_file($self);
bless($self, $class);
return $self;
@@ -83,6 +93,10 @@ sub new {
##### methods #####
+sub get_version {
+ return SOURCE_CONFIG_VERSION;
+};
+
sub get_repositories
{
my $self = shift;
@@ -249,8 +263,11 @@ sub read_config_file {
my $repository_section = 0;
my $module_section = 0;
my $line = 0;
+ my @file_content = ();
+
if (open(SOURCE_CONFIG_FILE, $self->{SOURCE_CONFIG_FILE})) {
foreach (<SOURCE_CONFIG_FILE>) {
+ push (@{$self->{CONFIG_FILE_CONTENT}}, $_);
$line++;
chomp;
next if (!/^\S+/);
@@ -270,6 +287,10 @@ sub read_config_file {
if (/\s*(\S+)=active\s*(\s+#)*/) {
if ($repository_section) {
${$self->{REPOSITORIES}}{$1} = $self->{SOURCE_ROOT} . "/$1";
+ ${$self->{ACTIVATED_REPOSITORIES}}{$1}++;
+ if (defined $ENV{UPDMINOREXT}) {
+ ${$self->{REPOSITORIES}}{$1} .= $ENV{UPDMINOREXT};
+ };
next;
}
if ($module_section) {
@@ -290,6 +311,187 @@ sub read_config_file {
};
};
+sub remove_all_activated_repositories {
+ my $self = shift;
+ $self->remove_activated_repositories([keys %{$self->{ACTIVATED_REPOSITORIES}}]);
+};
+
+sub remove_activated_repositories {
+ my $self = shift;
+ my $new_repositories_ref = shift;
+ push(@{$self->{WARNINGS}}, "\nWARNING: Empty repository list passed for removing from source_config\n") if (!scalar @$new_repositories_ref);
+ $self->{VERBOSE} = shift;
+ $self->{REMOVE_REPOSITORIES} = {};
+ foreach (@$new_repositories_ref) {
+ if (!defined ${$self->{ACTIVATED_REPOSITORIES}}{$_}) {
+ push (@{$self->{WARNINGS}}, "\nWARNING: repository $_ is not activated in ". $self->get_config_file_default_path()."\n");
+ } else {
+ ${$self->{REMOVE_REPOSITORIES}}{$_}++;
+ delete ${$self->{ACTIVATED_REPOSITORIES}}{$_};
+ };
+ };
+ generate_config_file($self);
+};
+
+sub remove_all_activated_modules {
+ my $self = shift;
+ $self->remove_activated_modules([keys %{$self->{ACTIVATED_MODULES}}]);
+};
+
+sub remove_activated_modules {
+ my $self = shift;
+ my $new_modules_ref = shift;
+ push(@{$self->{WARNINGS}}, "\nWARNING: Empty module list passed for removing from source_config\n") if (!scalar @$new_modules_ref);
+ $self->{VERBOSE} = shift;
+ $self->{REMOVE_MODULES} = {};
+ foreach (@$new_modules_ref) {
+ if (!defined ${$self->{ACTIVATED_MODULES}}{$_}) {
+ push (@{$self->{WARNINGS}}, "\nWARNING: module $_ is not activated in ". $self->get_config_file_default_path()."\n");
+ } else {
+ ${$self->{REMOVE_MODULES}}{$_}++;
+ delete ${$self->{ACTIVATED_MODULES}}{$_};
+ };
+ };
+ generate_config_file($self);
+};
+
+sub add_active_repositories {
+ my $self = shift;
+ $self->{NEW_REPOSITORIES} = shift;
+ croak('Empty module list passed for adding to source_config') if (!scalar @{$self->{NEW_REPOSITORIES}});
+ $self->{VERBOSE} = shift;
+ generate_config_file($self);
+};
+
+sub add_active_modules {
+ my $self = shift;
+ $self->{NEW_MODULES} = shift;
+ croak('Empty module list passed for adding to source_config') if (!scalar @{$self->{NEW_MODULES}});
+ $self->{VERBOSE} = shift;
+ generate_config_file($self);
+};
+
+sub add_content {
+ my $self = shift;
+ my $content = shift;
+ my $entries_to_add = shift;
+ return if (!scalar @$entries_to_add);
+ my $message;
+ my $message_part1;
+ my $warning_message;
+ my $activated_entries;
+
+ if ($entries_to_add == $self->{NEW_MODULES}) {
+ $self->{NEW_MODULES} = [];
+ $message_part1 = "Module(s):\n";
+ $activated_entries = $self->{ACTIVATED_MODULES};
+ } elsif ($entries_to_add == $self->{NEW_REPOSITORIES}) {
+ $self->{NEW_REPOSITORIES} = [];
+ $message_part1 = "Repositories:\n";
+ $activated_entries = $self->{ACTIVATED_REPOSITORIES};
+ };
+ foreach my $entry (@$entries_to_add) {
+ if (defined $$activated_entries{$entry}) {
+ $warning_message .= "$entry "
+ } else {
+ push(@$content, "$entry=active\n");
+ ${$activated_entries}{$entry}++;
+ $message .= "$entry "
+ };
+ };
+
+ push(@{$self->{REPORT_MESSAGES}}, "\n$message_part1 $message\nhave been added to the ". $self->get_config_file_default_path()."\n") if ($message);
+ push (@{$self->{WARNINGS}}, "\nWARNING: $message_part1 $warning_message\nare already added to the ". $self->get_config_file_default_path()."\n") if ($warning_message);
+};
+
+sub generate_config_file {
+ my $self = shift;
+ my @config_content_new = ();
+ my ($module_section, $repository_section);
+ my %removed_modules = ();
+ my %removed_repositories = ();
+ foreach (@{$self->{CONFIG_FILE_CONTENT}}) {
+ if (/^\[repositories\]\s*(\s+#)*/) {
+ if ($module_section) {
+ $self->add_content(\@config_content_new, $self->{NEW_MODULES});
+ };
+ $module_section = 0;
+ $repository_section = 1;
+ };
+ if (/^\[modules\]\s*(\s+#)*/) {
+ if ($repository_section) {
+ $self->add_content(\@config_content_new, $self->{NEW_REPOSITORIES});
+ };
+ $module_section = 1;
+ $repository_section = 0;
+ };
+ if ($module_section && /\s*(\S+)=active\s*(\s+#)*/) {
+ if (defined ${$self->{REMOVE_MODULES}}{$1}) {
+ $removed_modules{$1}++;
+ next;
+ };
+ }
+ if ($repository_section && /\s*(\S+)=active\s*(\s+#)*/) {
+ if (defined ${$self->{REMOVE_REPOSITORIES}}{$1}) {
+ $removed_repositories{$1}++;
+ next;
+ };
+ }
+ push(@config_content_new, $_);
+ };
+ if (scalar @{$self->{NEW_MODULES}}) {
+ push(@config_content_new, "[modules]\n") if (!$module_section);
+ $self->add_content(\@config_content_new, $self->{NEW_MODULES});
+ };
+ if (scalar @{$self->{NEW_REPOSITORIES}}) {
+ push(@config_content_new, "[repositories]\n") if (!$repository_section);
+ $self->add_content(\@config_content_new, $self->{NEW_REPOSITORIES});
+ };
+ if (scalar keys %removed_modules) {
+ my @deleted_modules = keys %removed_modules;
+ push(@{$self->{REPORT_MESSAGES}}, "\nModules: @deleted_modules\nhave been removed from the ". $self->get_config_file_default_path()."\n");
+
+ };
+ if (scalar keys %removed_repositories) {
+ my @deleted_repositories = keys %removed_repositories;
+ push(@{$self->{REPORT_MESSAGES}}, "\nRepositories: @deleted_repositories\nhave been removed from the ". $self->get_config_file_default_path()."\n");
+
+ };
+
+ # Writing file, printing warnings and reports
+
+ #check if we need to write a new file
+ my $write_needed = 0;
+ if ((scalar @{$self->{CONFIG_FILE_CONTENT}}) != (scalar @config_content_new)) {
+ $write_needed++;
+ } else {
+ foreach my $i (0 .. $#{$self->{CONFIG_FILE_CONTENT}}) {
+ if (${$self->{CONFIG_FILE_CONTENT}}[$i] ne $config_content_new[$i]) {
+ $write_needed++;
+ last;
+ };
+ };
+ };
+ if ($write_needed) {
+ my $temp_config_file = File::Temp::tmpnam($ENV{TMP});
+ die("Cannot open $temp_config_file") if (!open(NEW_CONFIG, ">$temp_config_file"));
+ print NEW_CONFIG $_ foreach (@config_content_new);
+ close NEW_CONFIG;
+ rename($temp_config_file, $self->get_config_file_default_path()) or system("mv", $temp_config_file, $self->get_config_file_default_path());
+ if (-e $temp_config_file) {
+ system("rm -rf $temp_config_file") if (!unlink $temp_config_file);
+ };
+ $self->{CONFIG_FILE_CONTENT} = \@config_content_new;
+ };
+ if ($self->{VERBOSE}) {
+ print $_ foreach (@{$self->{WARNINGS}});
+ $self->{VERBOSE} = 0;
+ };
+ $self->{WARNINGS} = [];
+ print $_ foreach (@{$self->{REPORT_MESSAGES}});
+ $self->{REPORT_MESSAGES} = [];
+};
+
##### finish #####
1; # needed by use or require
@@ -325,6 +527,10 @@ SourceConfig::new()
Creates a new instance of SourceConfig. Can't fail.
+SourceConfig::get_version()
+
+Returns version number of the module. Can't fail.
+
SourceConfig::get_repositories()
@@ -364,9 +570,35 @@ SourceConfig::is_active()
Returns 1 (TRUE) if a module is active
Returns 0 (FALSE) if a module is not active
+SourceConfig::add_active_modules($module_array_ref)
+
+Adds modules from the @$module_array_ref as active to the source_config file
+
+SourceConfig::add_active_repositories($repository_array_ref)
+
+Adds repositories from the @$repository_array_ref as active to the source_config file
+
+SourceConfig::remove_activated_modules($module_array_ref)
+
+Removes modules from the @$module_array_ref from the source_config file
+
+SourceConfig::remove_all_activated_modules()
+
+Removes all activated modules from the source_config file
+
+SourceConfig::remove_activated_repositories($repository_array_ref)
+
+Removes repositories from the @$repository_array_ref from the source_config file
+
+SourceConfig::remove_all_activated_repositories()
+
+Removes all activated repositories from the source_config file
+
+
=head2 EXPORT
SourceConfig::new()
+SourceConfig::get_version()
SourceConfig::get_repositories()
SourceConfig::get_active_modules()
SourceConfig::get_all_modules()
@@ -376,6 +608,12 @@ SourceConfig::get_module_repository($module)
SourceConfig::get_config_file_path()
SourceConfig::get_config_file_default_path()
SourceConfig::is_active($module)
+SourceConfig::add_active_modules($module_array_ref)
+SourceConfig::add_active_repositories($repository_array_ref)
+SourceConfig::remove_activated_modules($module_array_ref)
+SourceConfig::remove_all_activated_modules()
+SourceConfig::remove_activated_repositories($repository_array_ref)
+SourceConfig::remove_all_activated_repositories()
=head1 AUTHOR
diff --git a/solenv/bin/modules/installer/epmfile.pm b/solenv/bin/modules/installer/epmfile.pm
index 95f661160a0e..ffe79136b57e 100644
--- a/solenv/bin/modules/installer/epmfile.pm
+++ b/solenv/bin/modules/installer/epmfile.pm
@@ -2544,6 +2544,7 @@ sub create_packages_without_epm
my $dir = getcwd;
my $buildroot = $dir . "/" . $epmdir . "buildroot/";
$buildrootstring = "--buildroot=$buildroot";
+ mkdir($buildroot = $dir . "/" . $epmdir . "BUILD/");
}
my $systemcall = "$rpmcommand -bb --define \"_unpackaged_files_terminate_build 0\" $specfilename --target $target $buildrootstring 2\>\&1 |";
@@ -2719,6 +2720,15 @@ sub remove_temporary_epm_files
my $returnvalue = system($systemcall);
+ $removedir = $epmdir . "BUILD";
+
+ $systemcall = "rm -rf $removedir";
+
+ installer::logger::print_message( "... $systemcall ...\n" );
+
+ $returnvalue = system($systemcall);
+
+
my $infoline = "Systemcall: $systemcall\n";
push( @installer::globals::logfileinfo, $infoline);
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index 1836e451a4be..b646b071dda0 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -180,7 +180,7 @@ BEGIN
$installertypedir = "";
$controlledmakecabversion = "5";
$saved_packages_path = "";
- $max_lang_length = 50;
+ $max_lang_length = 65;
$globalblock = "Globals";
$rootmodulegid = "";
%alllangmodules = ();
@@ -268,7 +268,7 @@ BEGIN
$isopensourceproduct = 1;
$manufacturer = "";
$longmanufacturer = "";
- $sundirname = "Sun";
+ $sundirname = "";
$codefilename = "codes.txt";
$componentfilename = "components.txt";
$productcode = "";
diff --git a/solenv/bin/modules/installer/setupscript.pm b/solenv/bin/modules/installer/setupscript.pm
index e266832e6ba6..9da5340f915f 100644
--- a/solenv/bin/modules/installer/setupscript.pm
+++ b/solenv/bin/modules/installer/setupscript.pm
@@ -156,13 +156,28 @@ sub add_lowercase_productname_setupscriptvariable
push(@{$variablesref} ,$newline);
$value = $original;
$value =~ s/\s/\_/g;
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
$newline = "\%UNIXPRODUCTNAME " . lc($value) . "\n";
push(@{$variablesref} ,$newline);
+ $newline = "\%SYSTEMINTUNIXPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $2 . $4; }
+ $newline = "\%UNIXPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
$value = $original;
$value =~ s/\s/\_/g;
$value =~ s/\.//g;
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
$newline = "\%WITHOUTDOTUNIXPRODUCTNAME " . lc($value) . "\n";
push(@{$variablesref} ,$newline);
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $2 . $4; }
+ $newline = "\%WITHOUTDOTUNIXPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
+ $newline = "\%SOLARISBRANDPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
+ $value = $original;
}
elsif ( $key eq "PRODUCTEXTENSION" )
{
@@ -482,4 +497,38 @@ sub add_forced_properties
}
}
+#####################################################################################
+# Some properties are created automatically. It should be possible to
+# overwrite them, with PRESET properties. For example UNIXPRODUCTNAME
+# with PRESETUNIXPRODUCTNAME, if this is defined and the automatic process
+# does not deliver the desired results.
+#####################################################################################
+
+sub replace_preset_properties
+{
+ my ($allvariables) = @_;
+
+ # SOLARISBRANDPACKAGENAME
+ # needs to be replaced by
+ # PRESETSOLARISBRANDPACKAGENAME
+
+ my @presetproperties = ();
+ push(@presetproperties, "SOLARISBRANDPACKAGENAME");
+ push(@presetproperties, "SYSTEMINTUNIXPACKAGENAME");
+ # push(@presetproperties, "UNIXPACKAGENAME");
+ # push(@presetproperties, "WITHOUTDOTUNIXPACKAGENAME");
+ # push(@presetproperties, "UNIXPRODUCTNAME");
+ # push(@presetproperties, "WITHOUTDOTUNIXPRODUCTNAME");
+
+
+ foreach $property ( @presetproperties )
+ {
+ my $presetproperty = "PRESET" . $property;
+ if (( exists($allvariables->{$presetproperty}) ) && ( $allvariables->{$presetproperty} ne "" ))
+ {
+ $allvariables->{$property} = $allvariables->{$presetproperty};
+ }
+ }
+}
+
1;
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index 043ef72ff386..9afccdbd005d 100644
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -111,7 +111,7 @@ sub register_extensions
{
my $oneextension = $extensiondir . $installer::globals::separator . ${$allextensions}[$i];
- # my $systemcall = $unopkgfile . " add --shared " . "\"" . $oneextension . "\"";
+ # my $systemcall = $unopkgfile . " add --shared --suppress-license " . "\"" . $oneextension . "\"";
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"); }
@@ -131,7 +131,7 @@ sub register_extensions
$localtemppath =~ s/\\/\//g;
$localtemppath = "/".$localtemppath;
}
- my $systemcall = $unopkgfile . " add --shared --verbose " . $oneextension . " -env:UserInstallation=file://" . $localtemppath . " -env:UNO_JAVA_JFW_ENV_JREHOME=true -env:UNO_JAVA_JFW_ENV_CLASSPATH=true 2\>\&1 |";
+ my $systemcall = $unopkgfile . " add --shared --suppress-license --verbose " . $oneextension . " -env:UserInstallation=file://" . $localtemppath . " -env:UNO_JAVA_JFW_ENV_JREHOME=true -env:UNO_JAVA_JFW_ENV_CLASSPATH=true 2\>\&1 |";
print "... $systemcall ...\n";
diff --git a/solenv/bin/modules/installer/windows/directory.pm b/solenv/bin/modules/installer/windows/directory.pm
index 2ad207731b51..2a9463f508a1 100644
--- a/solenv/bin/modules/installer/windows/directory.pm
+++ b/solenv/bin/modules/installer/windows/directory.pm
@@ -320,6 +320,7 @@ sub add_root_directories
if ( $allvariableshashref->{'SUNDIR'} )
{
+ if ( $allvariableshashref->{'SUNDIRNAME'} ) { $installer::globals::sundirname = $allvariableshashref->{'SUNDIRNAME'}; }
$oneline = "sundirectory\t$installer::globals::programfilesfolder\t$installer::globals::sundirname$sourcediraddon\n";
push(@{$directorytableref}, $oneline);
diff --git a/solenv/bin/modules/installer/windows/msiglobal.pm b/solenv/bin/modules/installer/windows/msiglobal.pm
index 66731f860092..9f2d21f8b7f8 100644
--- a/solenv/bin/modules/installer/windows/msiglobal.pm
+++ b/solenv/bin/modules/installer/windows/msiglobal.pm
@@ -58,7 +58,7 @@ sub write_ddf_file_header
push(@{$ddffileref} ,$oneline);
$oneline = ".Set ReservePerCabinetSize=128\n"; # This reserves space for a digital signature.
push(@{$ddffileref} ,$oneline);
- $oneline = ".Set MaxDiskSize=CDROM\n"; # This allows the .cab file to be as large as needed.
+ $oneline = ".Set MaxDiskSize=2147483648\n"; # This allows the .cab file to get a size of 2 GB.
push(@{$ddffileref} ,$oneline);
$oneline = ".Set CompressionType=LZX\n";
push(@{$ddffileref} ,$oneline);
diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm
index 4679e0e19a1b..7b890d06d58f 100644
--- a/solenv/bin/modules/installer/windows/property.pm
+++ b/solenv/bin/modules/installer/windows/property.pm
@@ -540,7 +540,7 @@ sub set_languages_in_property_table
if ($installer::globals::sofficeiconadded) # set in shortcut.pm
{
- $onepropertyline = "ARPPRODUCTICON" . "\t" . "soffice.exe" . "\n";
+ $onepropertyline = "ARPPRODUCTICON" . "\t" . "soffice.ico" . "\n";
push(@{$propertyfile}, $onepropertyline);
}
diff --git a/solenv/bin/modules/installer/windows/shortcut.pm b/solenv/bin/modules/installer/windows/shortcut.pm
index dac740bcd9de..b15c7418352f 100644
--- a/solenv/bin/modules/installer/windows/shortcut.pm
+++ b/solenv/bin/modules/installer/windows/shortcut.pm
@@ -665,40 +665,25 @@ sub create_shortcut_table
}
}
- # if it is part of the product, the soffice.exe has to be included into the icon table
+ # The soffice.ico has to be included into the icon table
# as icon for the ARP applet
- my $sofficefile = "soffice.exe";
- my $onefile = get_file_by_name($filesref, $sofficefile);
+ my $onefile = "";
+ my $sofficefile = "soffice.ico";
- if ( $onefile ne "" )
- {
- my $sourcepath = $onefile->{'sourcepath'};
- if (! installer::existence::exists_in_array($sourcepath, $iconfilecollector))
- {
- unshift(@{$iconfilecollector}, $sourcepath);
- $installer::globals::sofficeiconadded = 1;
- }
- }
+ my $sourcepathref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$sofficefile, $includepatharrayref, 0);
- # For language packs and patches the soffice.exe has to be included, even if it is not part of the product.
- # Also as part of the ARP applet (no substitution needed for ProductName, because the file is not installed!)
+ if ($$sourcepathref eq "") { installer::exiter::exit_program("ERROR: Could not find $sofficefile as icon!", "create_shortcut_table"); }
- if (( $onefile eq "" ) && (( $installer::globals::languagepack ) || ( $installer::globals::patch )))
+ if (! installer::existence::exists_in_array($$sourcepathref, $iconfilecollector))
{
- my $sourcepathref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$sofficefile, $includepatharrayref, 1);
- if ($$sourcepathref eq "") { installer::exiter::exit_program("ERROR: Could not find $sofficefile as icon in language pack!", "create_shortcut_table"); }
-
- if (! installer::existence::exists_in_array($$sourcepathref, $iconfilecollector))
- {
- unshift(@{$iconfilecollector}, $$sourcepathref);
- $installer::globals::sofficeiconadded = 1;
- }
-
- my $localinfoline = "Added icon file $$sourcepathref for language pack into icon file collector.\n";
- push(@installer::globals::logfileinfo, $localinfoline);
+ unshift(@{$iconfilecollector}, $$sourcepathref);
+ $installer::globals::sofficeiconadded = 1;
}
+ my $localinfoline = "Added icon file $$sourcepathref for language pack into icon file collector.\n";
+ push(@installer::globals::logfileinfo, $localinfoline);
+
# Saving the file
my $shortcuttablename = $basedir . $installer::globals::separator . "Shortcut.idt" . "." . $onelanguage;
diff --git a/solenv/bin/modules/installer/windows/sign.pm b/solenv/bin/modules/installer/windows/sign.pm
index 81ba78c8b218..70954bd9f5b1 100644
--- a/solenv/bin/modules/installer/windows/sign.pm
+++ b/solenv/bin/modules/installer/windows/sign.pm
@@ -929,7 +929,7 @@ sub get_ddf_file_header
push(@{$ddffileref} ,$oneline);
$oneline = ".Set ReservePerCabinetSize=128\n"; # This reserves space for a digital signature.
push(@{$ddffileref} ,$oneline);
- $oneline = ".Set MaxDiskSize=CDROM\n"; # This allows the .cab file to be as large as needed.
+ $oneline = ".Set MaxDiskSize=2147483648\n"; # This allows the .cab file to get a size of 2 GB.
push(@{$ddffileref} ,$oneline);
$oneline = ".Set CompressionType=LZX\n";
push(@{$ddffileref} ,$oneline);
diff --git a/solenv/bin/modules/installer/windows/upgrade.pm b/solenv/bin/modules/installer/windows/upgrade.pm
index d9d371fc1b56..49479b26bf49 100644
--- a/solenv/bin/modules/installer/windows/upgrade.pm
+++ b/solenv/bin/modules/installer/windows/upgrade.pm
@@ -47,7 +47,7 @@ sub create_upgrade_table
# fix for problematic OOo 1.9 versions
my $include_ooo_fix = 0;
my $ooomaxnew = "";
- if (($installer::globals::product =~ /OpenOffice/i ) && ( ! ( $installer::globals::product =~ /SDK/i )) && ( ! $installer::globals::languagepack ))
+ if (($installer::globals::product =~ /^\s*OpenOffice/i ) && ( ! ( $installer::globals::product =~ /SDK/i )) && ( ! $installer::globals::languagepack ))
{
$include_ooo_fix = 1;
$ooomaxnew = "34.0.0";
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index b5b6af308d0e..ff1d172c9b8f 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -3022,6 +3022,24 @@ sub key_in_a_is_also_key_in_b
return $returnvalue;
}
+######################################################
+# Getting the first entry from a list of languages
+######################################################
+
+sub get_first_from_list
+{
+ my ( $list ) = @_;
+
+ my $first = $list;
+
+ if ( $list =~ /^\s*(.+?),(.+)\s*$/) # "?" for minimal matching
+ {
+ $first = $1;
+ }
+
+ return $first;
+}
+
################################################
# Setting all spellchecker languages
################################################
@@ -3054,16 +3072,29 @@ sub set_spellcheckerlanguages
{
my $onelang = $1;
my $languagelist = $2;
- $spellcheckhash{$onelang} = $languagelist;
- # Special handling for language packs. Do only include that one language of the language pack, no further language.
- # And this only, if the language of the language pack is also already part of the language list
+ # Special handling for language packs. Only include the first language of the language list.
+ # If no spellchecker shall be included, the keyword "EMPTY" can be used.
if ( $installer::globals::languagepack )
{
- if ( $languagelist =~ /\b$onelang\b/ ) { $spellcheckhash{$onelang} = $onelang; }
- else { $spellcheckhash{$onelang} = ""; }
+ my $first = get_first_from_list($languagelist);
+
+ if ( $first eq "EMPTY" ) # no spellchecker into language pack
+ {
+ $languagelist = "";
+ }
+ else
+ {
+ $languagelist = $first;
+ }
+ }
+ else # no language pack, so EMPTY is not required
+ {
+ $languagelist =~ s/^\s*EMPTY\s*,//; # removing the entry EMPTY
}
+
+ $spellcheckhash{$onelang} = $languagelist;
}
}
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index a434163b0dd9..00de1709473b 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -644,7 +644,8 @@ sub set_manufacturer
my ($allvariables) = @_;
my $openofficeproductname = "OpenOffice.org";
- my $sunname = "Sun Microsystems";
+ my $sunname = "";
+
if ( $allvariables->{'OPENSOURCE'} && $allvariables->{'OPENSOURCE'} == 1 )
{
@@ -655,6 +656,8 @@ sub set_manufacturer
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 . ", Inc.";
}