diff options
author | sb <sb@openoffice.org> | 2010-04-07 13:14:23 +0200 |
---|---|---|
committer | sb <sb@openoffice.org> | 2010-04-07 13:14:23 +0200 |
commit | b1158104abbda340bc19d276bc3dc32a71f16293 (patch) | |
tree | e7b41d81ed39297178db6b1dd6384fc6251658ef /solenv/bin | |
parent | ac427da5f24b84bc725733d5b0856116def1f2b2 (diff) | |
parent | 8bfbf472c29017fba913f78e84900950c7589f69 (diff) |
sb118: merged in re/DEV300_next towards DEV300_m76
Diffstat (limited to 'solenv/bin')
-rwxr-xr-x | solenv/bin/build.pl | 99 | ||||
-rw-r--r-- | solenv/bin/make_installer.pl | 5 | ||||
-rw-r--r-- | solenv/bin/modules/SourceConfig.pm | 246 | ||||
-rw-r--r-- | solenv/bin/modules/installer/epmfile.pm | 10 | ||||
-rw-r--r-- | solenv/bin/modules/installer/globals.pm | 4 | ||||
-rw-r--r-- | solenv/bin/modules/installer/setupscript.pm | 49 | ||||
-rw-r--r-- | solenv/bin/modules/installer/simplepackage.pm | 4 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/directory.pm | 1 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/msiglobal.pm | 2 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/property.pm | 2 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/shortcut.pm | 37 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/sign.pm | 2 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/upgrade.pm | 2 | ||||
-rw-r--r-- | solenv/bin/modules/installer/worker.pm | 41 | ||||
-rw-r--r-- | solenv/bin/modules/installer/ziplist.pm | 5 |
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."; } |