summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Fischer <af@apache.org>2014-02-12 08:14:20 +0000
committerAndre Fischer <af@apache.org>2014-02-12 08:14:20 +0000
commit40b2568f81c3a7bbcd5864122332aefe345f3ec5 (patch)
treea47e04e1480aef221a06a8b0b5b083b31c9532af
parent23b2b0b395537f4b5d0226f9ebb19dc38029ee55 (diff)
123531: Installer can handle new languages.
Notes
Notes: ignore: aoo
-rw-r--r--solenv/bin/make_installer.pl41
-rw-r--r--solenv/bin/modules/installer/windows/msiglobal.pm6
-rw-r--r--solenv/bin/release_prepare.pl36
3 files changed, 61 insertions, 22 deletions
diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index 6731bd0bf1f1..eca442f435b2 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -1711,16 +1711,37 @@ for (;1;last)
if ($installer::globals::is_release
&& $installer::globals::iswindowsbuild)
{
- $installer::logger::Info->printf("preparing MSI object for source version %s\n",
- $installer::globals::source_version);
- my $source_version_string = join(
- "",
- installer::patch::Version::StringToNumberArray($installer::globals::source_version));
- $installer::globals::source_msi = installer::patch::Msi->FindAndCreate(
- $installer::globals::source_version,
- 0,
- $$languagestringref,
- $installer::globals::product);
+ my $releases = installer::patch::ReleasesList::Instance()->{$installer::globals::source_version};
+ if ( ! defined $releases)
+ {
+ $installer::logger::Info->printf(
+ "there is no recorded information about previous version %s\n",
+ $installer::globals::source_version);
+ $installer::logger::Info->printf(" reverting to non-release build\n");
+ $installer::globals::is_release = 0;
+ }
+ elsif ( ! defined $releases->{'msi'}->{installer::languages::get_normalized_language($$languagestringref)})
+ {
+ $installer::logger::Info->printf(
+ "there is no recorded information about language '%s' in previous version %s\n",
+ $$languagestringref,
+ $installer::globals::source_version);
+ $installer::logger::Info->printf(" reverting to non-release build\n");
+ $installer::globals::is_release = 0;
+ }
+ else
+ {
+ $installer::logger::Info->printf("preparing MSI object for source version %s\n",
+ $installer::globals::source_version);
+ my $source_version_string = join(
+ "",
+ installer::patch::Version::StringToNumberArray($installer::globals::source_version));
+ $installer::globals::source_msi = installer::patch::Msi->FindAndCreate(
+ $installer::globals::source_version,
+ 0,
+ $$languagestringref,
+ $installer::globals::product);
+ }
}
############################################################
diff --git a/solenv/bin/modules/installer/windows/msiglobal.pm b/solenv/bin/modules/installer/windows/msiglobal.pm
index 3604a9b9b082..db0791468d76 100644
--- a/solenv/bin/modules/installer/windows/msiglobal.pm
+++ b/solenv/bin/modules/installer/windows/msiglobal.pm
@@ -1512,7 +1512,11 @@ sub get_source_codes ($)
{
my ($languagesref) = @_;
- if ( ! defined $installer::globals::source_version)
+ if ( ! $installer::globals::is_release)
+ {
+ return (undef, undef);
+ }
+ elsif ( ! defined $installer::globals::source_version)
{
$installer::logger::Lang->printf("no source version defined\n");
return (undef, undef);
diff --git a/solenv/bin/release_prepare.pl b/solenv/bin/release_prepare.pl
index 432adf22a52b..ca473080df14 100644
--- a/solenv/bin/release_prepare.pl
+++ b/solenv/bin/release_prepare.pl
@@ -115,17 +115,31 @@ sub ProcessLanguage ($$$$$)
$installer::logger::Info->printf("%s\n", $language);
$installer::logger::Info->increase_indentation();
- # For every language we need
- # 1. have downloadable installation set available (download if missing)
- # 2. unpack it to get access to .cab and .msi
- # 3. unpack .cab so that msimsp.exe can be run
-
- installer::patch::InstallationSet::ProvideUnpackedCab(
- $version,
- $is_current_version,
- $language,
- $package_format,
- $product_name);
+ if ( ! defined installer::patch::ReleasesList::Instance()
+ ->{$version}
+ ->{$package_format}
+ ->{$language})
+ {
+ $installer::logger::Info->printf(
+ "there is no recorded information about language '%s' in version '%s'\n",
+ $language,
+ $version);
+ $installer::logger::Info->printf(" skipping\n");
+ }
+ else
+ {
+ # For every language we need
+ # 1. have downloadable installation set available (download if missing)
+ # 2. unpack it to get access to .cab and .msi
+ # 3. unpack .cab so that msimsp.exe can be run
+
+ installer::patch::InstallationSet::ProvideUnpackedCab(
+ $version,
+ $is_current_version,
+ $language,
+ $package_format,
+ $product_name);
+ }
$installer::logger::Info->decrease_indentation();
}