diff options
author | Release Engineering <releng@openoffice.org> | 2011-02-18 11:14:19 +0100 |
---|---|---|
committer | Release Engineering <releng@openoffice.org> | 2011-02-18 11:14:19 +0100 |
commit | ba345960da447d921db9b557a5dc9bf62929ba9e (patch) | |
tree | b58431e2088e0247ea6b71d848011031b2d7d0c8 /solenv | |
parent | 60b42a87ec54fef439122509d2599673a95e8cde (diff) | |
parent | 94f7fa3c8166270923f8013a848e569adb2752f6 (diff) |
merged DEV300
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/bin/cws.pl | 74 | ||||
-rw-r--r-- | solenv/bin/make_installer.pl | 3 | ||||
-rw-r--r-- | solenv/bin/modules/CwsConfig.pm | 107 | ||||
-rw-r--r-- | solenv/bin/modules/installer/globals.pm | 7 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/component.pm | 16 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/directory.pm | 107 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/file.pm | 232 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/idtglobal.pm | 22 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/msiglobal.pm | 109 | ||||
-rw-r--r-- | solenv/config/sdev300.ini | 11 | ||||
-rw-r--r-- | solenv/gbuild/AllLangResTarget.mk | 2 | ||||
-rwxr-xr-x | solenv/gbuild/platform/linux.mk | 2 | ||||
-rw-r--r-- | solenv/inc/_cppunit.mk | 20 | ||||
-rw-r--r-- | solenv/inc/cppunit.mk | 2 | ||||
-rw-r--r-- | solenv/inc/extension_post.mk | 15 | ||||
-rw-r--r-- | solenv/inc/langlist.mk | 2 | ||||
-rw-r--r-- | solenv/inc/settings.mk | 2 |
17 files changed, 539 insertions, 194 deletions
diff --git a/solenv/bin/cws.pl b/solenv/bin/cws.pl index bf9ce9508d38..c613d13bcbb1 100644 --- a/solenv/bin/cws.pl +++ b/solenv/bin/cws.pl @@ -75,7 +75,7 @@ my %valid_options_hash = ( 'help' => ['help'], 'create' => ['help', 'milestone', 'migration', 'hg'], 'fetch' => ['help', 'milestone', 'childworkspace','platforms','noautocommon', - 'quiet', 'onlysolver'], + 'quiet', 'onlysolver', 'additionalrepositories'], 'query' => ['help', 'milestone','masterworkspace','childworkspace'], 'task' => ['help'], 'setcurrent' => ['help', 'milestone'], @@ -120,6 +120,7 @@ sub parse_command_line 'profile', 'commit|C', 'platforms|p=s', + 'additionalrepositories|r=s', 'noautocommon|x=s', 'onlysolver|o', 'quiet|q', @@ -399,20 +400,23 @@ sub hg_clone_cws_or_milestone my ($hg_local_source, $hg_lan_source, $hg_remote_source); my $config = CwsConfig->new(); - if ( $rep_type eq 'ooo') { - $hg_local_source = $config->get_ooo_hg_local_source(); - $hg_lan_source = $config->get_ooo_hg_lan_source(); - $hg_remote_source = $config->get_ooo_hg_remote_source(); - } - else { - $hg_local_source = $config->get_so_hg_local_source(); - $hg_lan_source = $config->get_so_hg_lan_source(); - $hg_remote_source = $config->get_so_hg_remote_source(); - } + + $hg_local_source = $config->get_hg_source(uc $rep_type, 'LOCAL'); + $hg_lan_source = $config->get_hg_source(uc $rep_type, 'LAN'); + $hg_remote_source = $config->get_hg_source(uc $rep_type, 'REMOTE'); my $masterws = $cws->master(); - my $master_local_source = "$hg_local_source/" . $masterws; - my $master_lan_source = "$hg_lan_source/" . $masterws; + my ($master_local_source, $master_lan_source); + if ($rep_type eq "ooo" || $rep_type eq "so") + { + $master_local_source = "$hg_local_source/" . $masterws; + $master_lan_source = "$hg_lan_source/" . $masterws; + } + else + { + $master_local_source = "$hg_local_source/master_".$rep_type."/".$masterws; + $master_lan_source = "$hg_lan_source/master_".$rep_type."/".$masterws; + } my $milestone_tag; if ( $clone_milestone_only ) { @@ -434,7 +438,15 @@ sub hg_clone_cws_or_milestone my $pull_from_remote = 0; my $cws_remote_source; if ( !$clone_milestone_only ) { - $cws_remote_source = "$hg_remote_source/cws/" . $cws->child(); + if ($rep_type eq "ooo" || $rep_type eq "so") + { + $cws_remote_source = "$hg_remote_source/cws/" . $cws->child(); + } + # e.g. cws_l10n + else + { + $cws_remote_source = "$hg_remote_source/cws_".$rep_type."/" . $cws->child(); + } # The outgoing repository might not yet be available. Which is not # an error. Since pulling from the cws outgoing URL results in an ugly @@ -446,7 +458,8 @@ sub hg_clone_cws_or_milestone require LWP::Simple; my $content = LWP::Simple::get($cws_remote_source); my $pattern = "<title>cws/". $cws->child(); - if ( $content && $content =~ /$pattern/ ) { + my $pattern2 = "<title>cws_".$rep_type."/". $cws->child(); + if ( $content && ($content =~ /$pattern/ || $content =~ /$pattern2/) ) { $pull_from_remote = 1; } else { @@ -1456,10 +1469,10 @@ sub do_help } elsif ($arg eq 'fetch') { print STDERR "fetch: fetch a milestone or CWS\n"; - print STDERR "usage: fetch [-q] [-p platforms] [-o] <-m milestone> <workspace>\n"; - print STDERR "usage: fetch [-q] [-p platforms] [-o] <-c cws> <workspace>\n"; - print STDERR "usage: fetch [-q] [-x platforms] [-o] <-m milestone> <workspace>\n"; - print STDERR "usage: fetch [-q] [-x platforms] [-o] <-c cws> <workspace>\n"; + print STDERR "usage: fetch [-q] [-p platforms] [-r additionalrepositories] [-o] <-m milestone> <workspace>\n"; + print STDERR "usage: fetch [-q] [-p platforms] [-r additionalrepositories] [-o] <-c cws> <workspace>\n"; + print STDERR "usage: fetch [-q] [-x platforms] [-r additionalrepositories] [-o] <-m milestone> <workspace>\n"; + print STDERR "usage: fetch [-q] [-x platforms] [-r additionalrepositories] [-o] <-c cws> <workspace>\n"; print STDERR "usage: fetch [-q] <-m milestone> <workspace>\n"; print STDERR "usage: fetch [-q] <-c cws> <workspace>\n"; print STDERR "\t-m milestone: Checkout milestone <milestone> to workspace <workspace>\n"; @@ -1475,6 +1488,8 @@ sub do_help print STDERR "\t-x platform: Copy one or more prebuilt platforms 'platform'. \n"; print STDERR "\t Separate multiple platforms with commas.\n"; print STDERR "\t Does not automatically adds 'common[.pro]'.\n"; + print STDERR "\t-r additionalrepositories Checkout additional repositories. \n"; + print STDERR "\t Separate multiple repositories with commas.\n"; print STDERR "\t--noautocommon platform: Same as -x\n"; print STDERR "\t-o: Omit checkout of sources, copy only solver. \n"; print STDERR "\t--onlysolver: Same as -o\n"; @@ -1582,6 +1597,8 @@ sub do_fetch } my $milestone_opt = $options_ref->{'milestone'}; + my $additional_repositories_opt = $options_ref->{'additionalrepositories'}; + $additional_repositories_opt = "", if ( !defined $additional_repositories_opt ); my $child = $options_ref->{'childworkspace'}; my $platforms = $options_ref->{'platforms'}; my $noautocommon = $options_ref->{'noautocommon'}; @@ -1718,8 +1735,23 @@ sub do_fetch if ( !mkdir($work_master) ) { print_error("Can't create directory '$work_master': $!.", 8); } + + my %unique = map { $_ => 1 } split( /,/ , $additional_repositories_opt); + my @unique_repo_list = keys %unique; + + if (defined($additional_repositories_opt)) + { + foreach my $repo(@unique_repo_list) + { + # do not double clone ooo and sun + hg_clone_cws_or_milestone($repo, $cws, "$work_master/".$repo, $clone_milestone_only), if $repo ne "ooo" && $repo ne "sun"; + } + + } + hg_clone_cws_or_milestone('ooo', $cws, "$work_master/ooo", $clone_milestone_only); hg_clone_cws_or_milestone('so', $cws, "$work_master/sun", $clone_milestone_only); + if ( get_source_config_for_milestone($masterws, $milestone) ) { # write source_config file my $source_config_file = "$work_master/source_config"; @@ -1729,6 +1761,10 @@ sub do_fetch print SOURCE_CONFIG "[repositories]\n"; print SOURCE_CONFIG "ooo=active\n"; print SOURCE_CONFIG "sun=active\n"; + foreach my $repo(@unique_repo_list) + { + print SOURCE_CONFIG $repo."=active\n", if $repo ne "ooo" || $repo ne "sun"; + } close(SOURCE_CONFIG); } else { diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl index d28a2e7e3fa0..c85aaffcde07 100644 --- a/solenv/bin/make_installer.pl +++ b/solenv/bin/make_installer.pl @@ -1955,7 +1955,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ ) installer::windows::registry::create_registry_table($registryitemsinproductlanguageresolvedarrayref, \@allregistrycomponents, $newidtdir, $languagesarrayref, $allvariableshashref); if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems4.log", $registryitemsinproductlanguageresolvedarrayref); } - installer::windows::component::create_component_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, \@allfilecomponents, \@allregistrycomponents, $newidtdir, $componentid, $componentidkeypath); + installer::windows::component::create_component_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, \@allfilecomponents, \@allregistrycomponents, $newidtdir, $componentid, $componentidkeypath, $allvariableshashref); if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles19.log", $filesinproductlanguageresolvedarrayref); } if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems5.log", $registryitemsinproductlanguageresolvedarrayref); } @@ -2166,6 +2166,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ ) installer::logger::print_message( "... creating msi database (language $onelanguage) ... \n" ); installer::windows::msiglobal::set_uuid_into_component_table($languageidtdir, $allvariableshashref); # setting new GUID for the components using the tool uuidgen.exe + installer::windows::msiglobal::prepare_64bit_database($languageidtdir, $allvariableshashref); # making last 64 bit changes installer::windows::msiglobal::create_msi_database($languageidtdir ,$msifilename); # validating the database # ToDo diff --git a/solenv/bin/modules/CwsConfig.pm b/solenv/bin/modules/CwsConfig.pm index 6121691e1e7f..1ba12fecac1d 100644 --- a/solenv/bin/modules/CwsConfig.pm +++ b/solenv/bin/modules/CwsConfig.pm @@ -343,94 +343,59 @@ sub get_so_svn_server #### HG methods #### -sub get_ooo_hg_local_source +sub _get_hg_source { - my $self = shift; - - if ( !defined($self->{HG_LOCAL_SOURCE}) ) { + my $self = shift; + my $repository_source = shift; + if ( !defined($self->{$repository_source}) ) { my $config_file = $self->get_config_file(); - my $source = $config_file->{CWS_CONFIG}->{'HG_LOCAL_SOURCE'}; + my $source = $config_file->{CWS_CONFIG}->{$repository_source}; if ( !defined($source) ) { $source = ""; } - $self->{HG_LOCAL_SOURCE} = $source; + $self->{$repository_source} = $source; } - return $self->{HG_LOCAL_SOURCE} ? $self->{HG_LOCAL_SOURCE} : undef; -} - -sub get_ooo_hg_lan_source -{ - my $self = shift; + return $self->{$repository_source} ? $self->{$repository_source} : undef; - if ( !defined($self->{HG_LAN_SOURCE}) ) { - my $config_file = $self->get_config_file(); - my $source = $config_file->{CWS_CONFIG}->{'HG_LAN_SOURCE'}; - if ( !defined($source) ) { - $source = ""; - } - $self->{HG_LAN_SOURCE} = $source; - } - return $self->{HG_LAN_SOURCE} ? $self->{HG_LAN_SOURCE} : undef; } -sub get_ooo_hg_remote_source +sub get_hg_source { - my $self = shift; + my $self = shift; + my $repository = shift; + my $location = shift; - if ( !defined($self->{HG_REMOTE_SOURCE}) ) { - my $config_file = $self->get_config_file(); - my $source = $config_file->{CWS_CONFIG}->{'HG_REMOTE_SOURCE'}; - if ( !defined($source) ) { - $source = ""; + #Special prefix handling, see cwsrc + if ($repository eq "OOO") + { + if ($location eq "LOCAL") + { + return $self->_get_hg_source('HG_LOCAL_SOURCE'); } - $self->{HG_REMOTE_SOURCE} = $source; - } - return $self->{HG_REMOTE_SOURCE} ? $self->{HG_REMOTE_SOURCE} : undef; -} - -sub get_so_hg_local_source -{ - my $self = shift; - - if ( !defined($self->{SO_HG_LOCAL_SOURCE}) ) { - my $config_file = $self->get_config_file(); - my $source = $config_file->{CWS_CONFIG}->{'SO_HG_LOCAL_SOURCE'}; - if ( !defined($source) ) { - $source = ""; + elsif ($location eq "LAN") + { + return $self->_get_hg_source('HG_LAN_SOURCE'); } - $self->{SO_HG_LOCAL_SOURCE} = $source; - } - return $self->{SO_HG_LOCAL_SOURCE} ? $self->{SO_HG_LOCAL_SOURCE} : undef; -} - -sub get_so_hg_lan_source -{ - my $self = shift; - - if ( !defined($self->{SO_HG_LAN_SOURCE}) ) { - my $config_file = $self->get_config_file(); - my $source = $config_file->{CWS_CONFIG}->{'SO_HG_LAN_SOURCE'}; - if ( !defined($source) ) { - $source = ""; + elsif ($location eq "REMOTE") + { + return $self->_get_hg_source('HG_REMOTE_SOURCE'); } - $self->{SO_HG_LAN_SOURCE} = $source; } - return $self->{SO_HG_LAN_SOURCE} ? $self->{SO_HG_LAN_SOURCE} : undef; -} - -sub get_so_hg_remote_source -{ - my $self = shift; - - if ( !defined($self->{SO_HG_REMOTE_SOURCE}) ) { - my $config_file = $self->get_config_file(); - my $source = $config_file->{CWS_CONFIG}->{'SO_HG_REMOTE_SOURCE'}; - if ( !defined($source) ) { - $source = ""; + else + { + if ($location eq "LOCAL") + { + return $self->_get_hg_source($repository.'_HG_LOCAL_SOURCE'); + } + elsif ($location eq "LAN") + { + return $self->_get_hg_source($repository.'_HG_LAN_SOURCE'); + } + elsif ($location eq "REMOTE") + { + return $self->_get_hg_source($repository.'_HG_REMOTE_SOURCE'); } - $self->{SO_HG_REMOTE_SOURCE} = $source; } - return $self->{SO_HG_REMOTE_SOURCE} ? $self->{SO_HG_REMOTE_SOURCE} : undef; } #### Prebuild binaries configuration #### diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm index 144cf4c88a4b..1536cb993db0 100644 --- a/solenv/bin/modules/installer/globals.pm +++ b/solenv/bin/modules/installer/globals.pm @@ -87,7 +87,8 @@ BEGIN "oc", "ml", "as", - "ast" + "ast", + "ht" ); @items_at_modules = ("Files", "Dirs", "Unixlinks"); @asianlanguages = ("ja", "ko", "zh-CN", "zh-TW"); @@ -374,6 +375,10 @@ BEGIN %spellcheckerlanguagehash = (); %spellcheckerfilehash = (); $registryrootcomponent = ""; + %allcomponents = (); + %allcomponents_in_this_database = (); + %allshortcomponents = (); + %alluniquedirectorynames = (); $installlocationdirectory = ""; $installlocationdirectoryset = 0; diff --git a/solenv/bin/modules/installer/windows/component.pm b/solenv/bin/modules/installer/windows/component.pm index 38989858a4b6..4ab5aac68954 100644 --- a/solenv/bin/modules/installer/windows/component.pm +++ b/solenv/bin/modules/installer/windows/component.pm @@ -193,7 +193,7 @@ sub get_registry_component_directory sub get_file_component_attributes { - my ($componentname, $filesref) = @_; + my ($componentname, $filesref, $allvariables) = @_; my $attributes; @@ -240,6 +240,9 @@ sub get_file_component_attributes $attributes = 4; # Files in shellnew dir and in non advertised startmenu entries must have user registry key as KeyPath } + # Adding 256, if this is a 64 bit installation set. + if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes = $attributes + 256; } + return $attributes } @@ -251,12 +254,15 @@ sub get_file_component_attributes sub get_registry_component_attributes { - my ($componentname) = @_; + my ($componentname, $allvariables) = @_; my $attributes; $attributes = 4; + # Adding 256, if this is a 64 bit installation set. + if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes = $attributes + 256; } + if ( exists($installer::globals::dontdeletecomponents{$componentname}) ) { $attributes = $attributes + 16; } return $attributes @@ -381,7 +387,7 @@ sub get_component_keypath sub create_component_table { - my ($filesref, $registryref, $dirref, $allfilecomponentsref, $allregistrycomponents, $basedir, $componentidhashref, $componentidkeypathhashref) = @_; + my ($filesref, $registryref, $dirref, $allfilecomponentsref, $allregistrycomponents, $basedir, $componentidhashref, $componentidkeypathhashref, $allvariables) = @_; my @componenttable = (); @@ -402,7 +408,7 @@ sub create_component_table $onecomponent{'guid'} = get_component_guid($onecomponent{'name'}, $componentidhashref); $onecomponent{'directory'} = get_file_component_directory($onecomponent{'name'}, $filesref, $dirref); if ( $onecomponent{'directory'} eq "IGNORE_COMP" ) { next; } - $onecomponent{'attributes'} = get_file_component_attributes($onecomponent{'name'}, $filesref); + $onecomponent{'attributes'} = get_file_component_attributes($onecomponent{'name'}, $filesref, $allvariables); $onecomponent{'condition'} = get_file_component_condition($onecomponent{'name'}, $filesref); $onecomponent{'keypath'} = get_component_keypath($onecomponent{'name'}, $filesref, $componentidkeypathhashref); @@ -421,7 +427,7 @@ sub create_component_table $onecomponent{'name'} = ${$allregistrycomponents}[$i]; $onecomponent{'guid'} = get_component_guid($onecomponent{'name'}, $componentidhashref); $onecomponent{'directory'} = get_registry_component_directory(); - $onecomponent{'attributes'} = get_registry_component_attributes($onecomponent{'name'}); + $onecomponent{'attributes'} = get_registry_component_attributes($onecomponent{'name'}, $allvariables); $onecomponent{'condition'} = get_component_condition($onecomponent{'name'}); $onecomponent{'keypath'} = get_component_keypath($onecomponent{'name'}, $registryref, $componentidkeypathhashref); diff --git a/solenv/bin/modules/installer/windows/directory.pm b/solenv/bin/modules/installer/windows/directory.pm index ba6f9a3b75bd..f7b13747e3bf 100644 --- a/solenv/bin/modules/installer/windows/directory.pm +++ b/solenv/bin/modules/installer/windows/directory.pm @@ -77,19 +77,78 @@ sub overwrite_programfilesfolder } ############################################################## +# Maximum length of directory name is 72. +# Taking care of underlines, which are the separator. +############################################################## + +sub make_short_dir_version +{ + my ($longstring, $length, $displayname) = @_; + + my $shortstring = ""; + my $infoline = ""; + my $savestring = $longstring; + + # Splitting the string at each "underline" and allowing only $length characters per directory name. + # Checking also uniqueness and length. + + my $stringarray = installer::converter::convert_stringlist_into_array_without_newline(\$longstring, "_"); + + foreach my $onestring ( @{$stringarray} ) + { + my $partstring = ""; + + if ( $onestring =~ /\-/ ) + { + my $localstringarray = installer::converter::convert_stringlist_into_array_without_newline(\$onestring, "-"); + foreach my $onelocalstring ( @{$localstringarray} ) + { + if ( length($onelocalstring) > $length ) { $onelocalstring = substr($onelocalstring, 0, $length); } + $partstring = $partstring . "-" . $onelocalstring; + } + $partstring =~ s/^\s*\-//; + } + else + { + if ( length($onestring) > $length ) { $partstring = substr($onestring, 0, $length); } + else { $partstring = $onestring; } + } + + $shortstring = $shortstring . "_" . $partstring; + } + + $shortstring =~ s/^\s*\_//; + + if ( length($shortstring) > 72 ) + { + my $shortlength = length($shortstring); + $infoline = "WARNING: Failed to create unique directory name with less than 72 characters: \"$displayname\" ($shortstring ($shortlength)).\n"; + push(@installer::globals::logfileinfo, $infoline); + } + + return $shortstring; +} + +############################################################## # Adding unique directory names to the directory collection ############################################################## sub create_unique_directorynames { - my ($directoryref) = @_; + my ($directoryref, $allvariables) = @_; $installer::globals::officeinstalldirectoryset = 0; + my %conversionhash = (); + my $infoline = ""; + my $errorcount = 0; + for ( my $i = 0; $i <= $#{$directoryref}; $i++ ) { my $onedir = ${$directoryref}[$i]; - my $uniquename = $onedir->{'HostName'}; + my $hostname = $onedir->{'HostName'}; + + my $uniquename = $hostname; my $styles = ""; if ( $onedir->{'Styles'} ) { $styles = $onedir->{'Styles'}; } # get_path_from_fullqualifiedname(\$uniqueparentname); @@ -101,6 +160,42 @@ sub create_unique_directorynames $uniquename =~ s/\_//g; # removing existing underlines $uniquename =~ s/\.//g; # removing dots in directoryname $uniquename =~ s/\Q$installer::globals::separator\E/\_/g; # replacing slash and backslash with underline + $uniquename =~ s/OpenOffice/OO/g; + $uniquename =~ s/_registry/_rgy/g; + $uniquename =~ s/_registration/_rgn/g; + $uniquename =~ s/_extension/_ext/g; + $uniquename =~ s/_frame/_frm/g; + $uniquename =~ s/_table/_tbl/g; + $uniquename =~ s/_chart/_crt/g; + + my $startlength = 5; + + if ( ! $allvariables->{'NOSHORTDIRECTORYNAMES'} ) + { + # This process does not work for SDK, because of its long and similar pathes + $uniquename = make_short_dir_version($uniquename, $startlength, $hostname); # taking care of underlines! + } + + if ( exists($installer::globals::alluniquedirectorynames{$uniquename}) ) + { + # This is an error, that must stop the packaging process + $errorcount++; + + $infoline = "$errorcount: Already existing unique directory: $uniquename\n"; + push( @installer::globals::logfileinfo, $infoline); + $infoline = "$errorcount: First full directory: $conversionhash{$uniquename}\n"; + push( @installer::globals::logfileinfo, $infoline); + $infoline = "$errorcount: Current full directory: $hostname\n"; + push( @installer::globals::logfileinfo, $infoline); + } + + $conversionhash{$uniquename} = $hostname; + + $installer::globals::alluniquedirectorynames{$uniquename} = 1; + + # Important: The unique parent is generated from the string $uniquename. Therefore counters + # like adding "_1" is not allowed to achive uniqueness, because this depends from other directories + # and does not deliver always the same result. my $uniqueparentname = $uniquename; @@ -147,6 +242,11 @@ sub create_unique_directorynames $installer::globals::vendordirectoryset = 1; } } + + if ( $errorcount > 0 ) + { + installer::exiter::exit_program("ERROR: Failed to create unique directory names.", "create_unique_directorynames"); + } } ##################################################### @@ -434,8 +534,9 @@ sub create_directory_table my $infoline; overwrite_programfilesfolder($allvariableshashref); - create_unique_directorynames($directoryref); if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforidt_local_1.log", $directoryref); } + create_unique_directorynames($directoryref, $allvariableshashref); + if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforidt_local_1a.log", $directoryref); } create_defaultdir_directorynames($directoryref, $shortdirnamehashref); # only destdir! if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforidt_local_2.log", $directoryref); } set_installlocation_directory($directoryref, $allvariableshashref); diff --git a/solenv/bin/modules/installer/windows/file.pm b/solenv/bin/modules/installer/windows/file.pm index 10666be7460c..b679d8b46e2b 100644 --- a/solenv/bin/modules/installer/windows/file.pm +++ b/solenv/bin/modules/installer/windows/file.pm @@ -170,6 +170,40 @@ sub assign_sequencenumbers_to_files } } +######################################################### +# Create a shorter version of a long component name, +# because maximum length in msi database is 72. +# Attention: In multi msi installation sets, the short +# names have to be unique over all packages, because +# this string is used to create the globally unique id +# -> no resetting of +# %installer::globals::allshortcomponents +# after a package was created. +######################################################### + +sub generate_new_short_componentname +{ + my ($componentname) = @_; + + my $shortcomponentname = ""; + my $counter = 1; + + my $startversion = substr($componentname, 0, 60); # taking only the first 60 characters + $startversion = $startversion . "_"; + + $shortcomponentname = $startversion . $counter; + + while ( exists($installer::globals::allshortcomponents{$shortcomponentname}) ) + { + $counter++; + $shortcomponentname = $startversion . $counter; + } + + $installer::globals::allshortcomponents{$shortcomponentname} = 1; + + return $shortcomponentname; +} + ############################################### # Generating the component name from a file ############################################### @@ -178,77 +212,139 @@ sub get_file_component_name { my ($fileref, $filesref) = @_; - # In this function exists the rule to create components from files - # Rule: - # Two files get the same componentid, if: - # both have the same destination directory. - # both have the same "gid" -> both were packed in the same zip file - # All other files are included into different components! - - # my $componentname = $fileref->{'gid'} . "_" . $fileref->{'Dir'}; - - # $fileref->{'Dir'} is not sufficient! All files in a zip file have the same $fileref->{'Dir'}, - # but can be in different subdirectories. - # Solution: destination=share\Scripts\beanshell\Capitalise\capitalise.bsh - # in which the filename (capitalise.bsh) has to be removed and all backslashes (slashes) are - # converted into underline. - - my $destination = $fileref->{'destination'}; - installer::pathanalyzer::get_path_from_fullqualifiedname(\$destination); - $destination =~ s/\s//g; - $destination =~ s/\\/\_/g; - $destination =~ s/\//\_/g; - $destination =~ s/\_\s*$//g; # removing ending underline - - my $componentname = $fileref->{'gid'} . "__" . $destination; - - # Files with different languages, need to be packed into different components. - # Then the installation of the language specific component is determined by a language condition. - - if ( $fileref->{'ismultilingual'} ) - { - my $officelanguage = $fileref->{'specificlanguage'}; - $componentname = $componentname . "_" . $officelanguage; - } - - $componentname = lc($componentname); # componentnames always lowercase - - $componentname =~ s/\-/\_/g; # converting "-" to "_" - $componentname =~ s/\./\_/g; # converting "-" to "_" - - # Attention: Maximum length for the componentname is 72 - - $componentname =~ s/gid_file_/g_f_/g; - $componentname =~ s/_extra_/_e_/g; - $componentname =~ s/_config_/_c_/g; - $componentname =~ s/_org_openoffice_/_o_o_/g; - $componentname =~ s/_program_/_p_/g; - $componentname =~ s/_typedetection_/_td_/g; - $componentname =~ s/_linguistic_/_l_/g; - $componentname =~ s/_module_/_m_/g; - $componentname =~ s/_optional_/_opt_/g; - $componentname =~ s/_packages/_pack/g; - $componentname =~ s/_menubar/_mb/g; - $componentname =~ s/_common_/_cm_/g; - $componentname =~ s/_export_/_exp_/g; - $componentname =~ s/_table_/_tb_/g; - $componentname =~ s/_sofficecfg_/_sc_/g; - $componentname =~ s/_startmodulecommands_/_smc_/g; - $componentname =~ s/_drawimpresscommands_/_dic_/g; - $componentname =~ s/_basiccommands_/_bac_/g; - $componentname =~ s/_basicidecommands_/_baic_/g; - $componentname =~ s/_genericcommands_/_genc_/g; - $componentname =~ s/_bibliographycommands_/_bibc_/g; - $componentname =~ s/_share_/_s_/g; - $componentname =~ s/_modules_/_ms_/g; - $componentname =~ s/_uiconfig_zip_/_ucz_/g; - $componentname =~ s/_soffice_cfg_/_sc_/g; - - # All this is not necessary for files, which have the flag ASSIGNCOMPOMENT + my $componentname = ""; + + # Special handling for files with ASSIGNCOMPOMENT my $styles = ""; if ( $fileref->{'Styles'} ) { $styles = $fileref->{'Styles'}; } - if ( $styles =~ /\bASSIGNCOMPOMENT\b/ ) { $componentname = get_component_from_assigned_file($fileref->{'AssignComponent'}, $filesref); } + if ( $styles =~ /\bASSIGNCOMPOMENT\b/ ) + { + $componentname = get_component_from_assigned_file($fileref->{'AssignComponent'}, $filesref); + } + else + { + # In this function exists the rule to create components from files + # Rule: + # Two files get the same componentid, if: + # both have the same destination directory. + # both have the same "gid" -> both were packed in the same zip file + # All other files are included into different components! + + # my $componentname = $fileref->{'gid'} . "_" . $fileref->{'Dir'}; + + # $fileref->{'Dir'} is not sufficient! All files in a zip file have the same $fileref->{'Dir'}, + # but can be in different subdirectories. + # Solution: destination=share\Scripts\beanshell\Capitalise\capitalise.bsh + # in which the filename (capitalise.bsh) has to be removed and all backslashes (slashes) are + # converted into underline. + + my $destination = $fileref->{'destination'}; + installer::pathanalyzer::get_path_from_fullqualifiedname(\$destination); + $destination =~ s/\s//g; + $destination =~ s/\\/\_/g; + $destination =~ s/\//\_/g; + $destination =~ s/\_\s*$//g; # removing ending underline + + $componentname = $fileref->{'gid'} . "__" . $destination; + + # Files with different languages, need to be packed into different components. + # Then the installation of the language specific component is determined by a language condition. + + if ( $fileref->{'ismultilingual'} ) + { + my $officelanguage = $fileref->{'specificlanguage'}; + $componentname = $componentname . "_" . $officelanguage; + } + + $componentname = lc($componentname); # componentnames always lowercase + + $componentname =~ s/\-/\_/g; # converting "-" to "_" + $componentname =~ s/\./\_/g; # converting "-" to "_" + + # Attention: Maximum length for the componentname is 72 + # %installer::globals::allcomponents_in_this_database : resetted for each database + # %installer::globals::allcomponents : not resetted for each database + # Component strings must be unique for the complete product, because they are used for + # the creation of the globally unique identifier. + + my $fullname = $componentname; # This can be longer than 72 + + if (( exists($installer::globals::allcomponents{$fullname}) ) && ( ! exists($installer::globals::allcomponents_in_this_database{$fullname}) )) + { + # This is not allowed: One component cannot be installed with different packages. + installer::exiter::exit_program("ERROR: Component \"$fullname\" is already included into another package. This is not allowed.", "get_file_component_name"); + } + + if ( exists($installer::globals::allcomponents{$fullname}) ) + { + $componentname = $installer::globals::allcomponents{$fullname}; + } + else + { + if ( length($componentname) > 72 ) + { + # Using md5sum needs much time + # chomp(my $shorter = `echo $componentname | md5sum | sed -e "s/ .*//g"`); + # $componentname = "comp_$shorter"; + $componentname = generate_new_short_componentname($componentname); # This has to be unique for the complete product, not only one package + } + + $installer::globals::allcomponents{$fullname} = $componentname; + $installer::globals::allcomponents_in_this_database{$fullname} = 1; + } + + # $componentname =~ s/gid_file_/g_f_/g; + # $componentname =~ s/_extra_/_e_/g; + # $componentname =~ s/_config_/_c_/g; + # $componentname =~ s/_org_openoffice_/_o_o_/g; + # $componentname =~ s/_program_/_p_/g; + # $componentname =~ s/_typedetection_/_td_/g; + # $componentname =~ s/_linguistic_/_l_/g; + # $componentname =~ s/_module_/_m_/g; + # $componentname =~ s/_optional_/_opt_/g; + # $componentname =~ s/_packages/_pack/g; + # $componentname =~ s/_menubar/_mb/g; + # $componentname =~ s/_common_/_cm_/g; + # $componentname =~ s/_export_/_exp_/g; + # $componentname =~ s/_table_/_tb_/g; + # $componentname =~ s/_sofficecfg_/_sc_/g; + # $componentname =~ s/_soffice_cfg_/_sc_/g; + # $componentname =~ s/_startmodulecommands_/_smc_/g; + # $componentname =~ s/_drawimpresscommands_/_dic_/g; + # $componentname =~ s/_basiccommands_/_bac_/g; + # $componentname =~ s/_basicidecommands_/_baic_/g; + # $componentname =~ s/_genericcommands_/_genc_/g; + # $componentname =~ s/_bibliographycommands_/_bibc_/g; + # $componentname =~ s/_gentiumbookbasicbolditalic_/_gbbbi_/g; + # $componentname =~ s/_share_/_s_/g; + # $componentname =~ s/_extension_/_ext_/g; + # $componentname =~ s/_extensions_/_exs_/g; + # $componentname =~ s/_modules_/_ms_/g; + # $componentname =~ s/_uiconfig_zip_/_ucz_/g; + # $componentname =~ s/_productivity_/_pr_/g; + # $componentname =~ s/_wizard_/_wz_/g; + # $componentname =~ s/_import_/_im_/g; + # $componentname =~ s/_javascript_/_js_/g; + # $componentname =~ s/_template_/_tpl_/g; + # $componentname =~ s/_tplwizletter_/_twl_/g; + # $componentname =~ s/_beanshell_/_bs_/g; + # $componentname =~ s/_presentation_/_bs_/g; + # $componentname =~ s/_columns_/_cls_/g; + # $componentname =~ s/_python_/_py_/g; + + # $componentname =~ s/_tools/_ts/g; + # $componentname =~ s/_transitions/_trs/g; + # $componentname =~ s/_scriptbinding/_scrb/g; + # $componentname =~ s/_spreadsheet/_ssh/g; + # $componentname =~ s/_publisher/_pub/g; + # $componentname =~ s/_presenter/_pre/g; + # $componentname =~ s/_registry/_reg/g; + + # $componentname =~ s/screen/sc/g; + # $componentname =~ s/wordml/wm/g; + # $componentname =~ s/openoffice/oo/g; + } return $componentname; } diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm index 64dc2f34a12a..453464a3ae36 100644 --- a/solenv/bin/modules/installer/windows/idtglobal.pm +++ b/solenv/bin/modules/installer/windows/idtglobal.pm @@ -90,10 +90,8 @@ sub get_next_free_number } until (!($alreadyexists)); - if (( $counter > 9 ) && ( length($name) > 6 )) - { - $dontsave = 1; - } + if (( $counter > 9 ) && ( length($name) > 6 )) { $dontsave = 1; } + if (( $counter > 99 ) && ( length($name) > 5 )) { $dontsave = 1; } if (!($dontsave)) { @@ -192,6 +190,14 @@ sub make_eight_three_conform $name =~ s/\s*$//; # removing ending whitespaces $name = $name . "\~"; $number = get_next_free_number($name, $shortnamesref); + + if ( $number > 99 ) + { + $name = substr($name, 0, 4); # name, offset, length + $name =~ s/\s*$//; # removing ending whitespaces + $name = $name . "\~"; + $number = get_next_free_number($name, $shortnamesref); + } } $name = $name . "$number"; @@ -224,6 +230,14 @@ sub make_eight_three_conform $name =~ s/\s*$//; # removing ending whitespaces $name = $name . "\~"; $number = get_next_free_number($name, $shortnamesref); + + if ( $number > 99 ) + { + $name = substr($name, 0, 4); # name, offset, length + $name =~ s/\s*$//; # removing ending whitespaces + $name = $name . "\~"; + $number = get_next_free_number($name, $shortnamesref); + } } $name = $name . "$number"; diff --git a/solenv/bin/modules/installer/windows/msiglobal.pm b/solenv/bin/modules/installer/windows/msiglobal.pm index 716f63499a02..dbb6e051aa29 100644 --- a/solenv/bin/modules/installer/windows/msiglobal.pm +++ b/solenv/bin/modules/installer/windows/msiglobal.pm @@ -785,11 +785,16 @@ sub get_codepage_for_sis sub get_template_for_sis { - my ( $language ) = @_; + my ( $language, $allvariables ) = @_; my $windowslanguage = installer::windows::language::get_windows_language($language); - my $value = "\"Intel;" . $windowslanguage; # adding the Windows language + my $architecture = "Intel"; + + # Adding 256, if this is a 64 bit installation set. + if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $architecture = "x64"; } + + my $value = "\"" . $architecture . ";" . $windowslanguage; # adding the Windows language $value = $value . "\""; # adding ending '"' @@ -927,7 +932,7 @@ sub write_summary_into_msi_database my $msiversion = get_msiversion_for_sis(); my $codepage = get_codepage_for_sis($language); - my $template = get_template_for_sis($language); + my $template = get_template_for_sis($language, $allvariableshashref); my $guid = get_packagecode_for_sis(); my $title = get_title_for_sis($sislanguage,$languagefile, "OOO_SIS_TITLE"); my $author = get_author_for_sis(); @@ -1669,6 +1674,104 @@ sub set_uuid_into_component_table } +######################################################################### +# Adding final 64 properties into msi database, if required. +# RegLocator : +16 in type column to search in 64 bit registry. +# All conditions: "VersionNT" -> "VersionNT64" (several tables). +# Already done: "+256" in Attributes column of table "Component". +# Still following: Setting "x64" instead of "Intel" in Summary +# Information Stream of msi database in "get_template_for_sis". +######################################################################### + +sub prepare_64bit_database +{ + my ($basedir, $allvariables) = @_; + + my $infoline = ""; + + if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) + { + # 1. Beginning with table "RegLocat.idt". Adding "16" to the type. + + my $reglocatfile = ""; + my $reglocatfilename = $basedir . $installer::globals::separator . "RegLocat.idt"; + + if ( -f $reglocatfilename ) + { + my $saving_required = 0; + $reglocatfile = installer::files::read_file($reglocatfilename); + + for ( my $i = 3; $i <= $#{$reglocatfile}; $i++ ) # ignoring the first three lines + { + my $oneline = ${$reglocatfile}[$i]; + + if ( $oneline =~ /^\s*\#/ ) { next; } # this is a comment line + if ( $oneline =~ /^\s*$/ ) { next; } + + if ( $oneline =~ /^\s*(.*?)\t(.*?)\t(.*?)\t(.*?)\t(\d+)\s*$/ ) + { + # Syntax: Signature_ Root Key Name Type + my $sig = $1; + my $root = $2; + my $key = $3; + my $name = $4; + my $type = $5; + + $type = $type + 16; + + my $newline = $sig . "\t" . $root . "\t" . $key . "\t" . $name . "\t" . $type . "\n"; + ${$reglocatfile}[$i] = $newline; + + $saving_required = 1; + } + } + + if ( $saving_required ) + { + # Saving the files + installer::files::save_file($reglocatfilename ,$reglocatfile); + $infoline = "Making idt file 64 bit conform: $reglocatfilename\n"; + push(@installer::globals::logfileinfo, $infoline); + } + } + + # 2. Replacing all occurences of "VersionNT" by "VersionNT64" + + my @versionnt_files = ("Componen.idt", "InstallE.idt", "InstallU.idt", "LaunchCo.idt"); + + foreach my $onefile ( @versionnt_files ) + { + my $fullfilename = $basedir . $installer::globals::separator . $onefile; + + if ( -f $fullfilename ) + { + my $saving_required = 0; + $filecontent = installer::files::read_file($fullfilename); + + for ( my $i = 3; $i <= $#{$filecontent}; $i++ ) # ignoring the first three lines + { + my $oneline = ${$filecontent}[$i]; + + if ( $oneline =~ /\bVersionNT\b/ ) + { + ${$filecontent}[$i] =~ s/\bVersionNT\b/VersionNT64/g; + $saving_required = 1; + } + } + + if ( $saving_required ) + { + # Saving the files + installer::files::save_file($fullfilename ,$filecontent); + $infoline = "Making idt file 64 bit conform: $fullfilename\n"; + push(@installer::globals::logfileinfo, $infoline); + } + } + } + } + +} + ################################################################# # Include all cab files into the msi database. # This works only on Windows diff --git a/solenv/config/sdev300.ini b/solenv/config/sdev300.ini index 3b096337d5d7..c5dc61f7de69 100644 --- a/solenv/config/sdev300.ini +++ b/solenv/config/sdev300.ini @@ -96,6 +96,7 @@ common PROEXT .pro PROFULLSWITCH product=full } + r_only { LU_RFLAG r_only @@ -116,7 +117,7 @@ common SRC_ROOT UPDATER } - order minorext common:2 common:3 pro:0 pro:1 common common:0 cwsname common:1 tmp crashdump maxproc hg r_only nosource + order minorext common:2 common:3 pro:0 pro:1 common common:0 cwsname common:1 tmp crashdump maxproc hg r_only nosource reset { ALT_L10N_MODULE @@ -216,9 +217,13 @@ finish *o: cd %SOLARSRC% ALT_L10N_MODULE $expand(%SOLARSRC%/..)/sun/l10n_so TARFILE_LOCATION %SOURCE_ROOT_DIR%/ext_sources - gb_REPOS %SOURCE_ROOT_DIR%/ooo %SOURCE_ROOT_DIR%/sun + gb_REPOS %SRC_ROOT% %SOURCE_ROOT_DIR%/sun gb_LOCALBUILDDIR %SOL_TMP%/gb_%CWS_WORK_STAMP%/%WORK_STAMP% } + common_setrepo:0 IF X%WITH_LANG%X != XX + { + gb_REPOS %gb_REPOS% %SOURCE_ROOT_DIR%/l10n + } common_jre:0 IF %JREPATH% == { HIER set @@ -299,7 +304,7 @@ finish JAVA_TARGET_FLAG -target 1.6 } } - order cwsname:0 cwsname:1 cwsname:2 common_0:0 common_0:1 common_0:2 common_0:3 jdk14 jdk15 ojdk16 common_1 common_2:0 l10n common_jre:0 common_jre:1 cax cap common_a + order cwsname:0 cwsname:1 cwsname:2 common_0:0 common_0:1 common_0:2 common_0:3 jdk14 jdk15 ojdk16 common_1 common_2:0 l10n common_jre:0 common_jre:1 cax cap common_a common_setrepo:0 switches { cwsname CWS_WORK_STAMP diff --git a/solenv/gbuild/AllLangResTarget.mk b/solenv/gbuild/AllLangResTarget.mk index 3bf50bd4e988..f8770dc5158d 100644 --- a/solenv/gbuild/AllLangResTarget.mk +++ b/solenv/gbuild/AllLangResTarget.mk @@ -32,7 +32,7 @@ gb_SrsPartMergeTarget_TRANSEXAUXDEPS := $(call gb_Library_get_target,tl) $(call # gb_SrsPartMergeTarget_TRANSEXPRECOMMAND is set by the platforms gb_SrsPartMergeTarget_TRANSEXCOMMAND := $(gb_SrsPartMergeTarget_TRANSEXPRECOMMAND) $(gb_SrsPartMergeTarget_TRANSEXTARGET) -gb_SrsPartMergeTarget_SDFLOCATION := $(SRCDIR)/l10n/$(INPATH)/misc/sdf/ +gb_SrsPartMergeTarget_SDFLOCATION := $(LOCDIR)/l10n/$(INPATH)/misc/sdf/ gb_SrsPartMergeTarget_REPOS := $(gb_REPOS) define gb_SrsPartMergeTarget__command diff --git a/solenv/gbuild/platform/linux.mk b/solenv/gbuild/platform/linux.mk index a000f8bfad1f..2cbeca889001 100755 --- a/solenv/gbuild/platform/linux.mk +++ b/solenv/gbuild/platform/linux.mk @@ -122,7 +122,7 @@ gb_LinkTarget_NOEXCEPTIONFLAGS := \ gb_LinkTarget_LDFLAGS := \ -Wl,--sysroot=$(SYSBASE) \ - -Wl,-rpath-link=$(SOLARLIBDIR):$(SYSBASE)/lib:$(SYSBASE)/usr/lib \ + -Wl,-rpath-link,$(SYSBASE)/lib:$(SYSBASE)/usr/lib \ -Wl,-z,combreloc \ -Wl,-z,defs \ $(subst -L../lib , ,$(SOLARLIB)) \ diff --git a/solenv/inc/_cppunit.mk b/solenv/inc/_cppunit.mk index 8d9e45d33331..85804dd41ac6 100644 --- a/solenv/inc/_cppunit.mk +++ b/solenv/inc/_cppunit.mk @@ -1,7 +1,7 @@ # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL1TARGET)"!="" +.IF "$(SHL1TARGETN)"!="" ALLTAR : test1 test1 .PHONY : $(SHL1TARGETN) @echo ---------------------------------------------------------- @@ -13,7 +13,7 @@ test1 .PHONY : $(SHL1TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL2TARGET)"!="" +.IF "$(SHL2TARGETN)"!="" ALLTAR : test2 test2 .PHONY : $(SHL2TARGETN) @echo ---------------------------------------------------------- @@ -25,7 +25,7 @@ test2 .PHONY : $(SHL2TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL3TARGET)"!="" +.IF "$(SHL3TARGETN)"!="" ALLTAR : test3 test3 .PHONY : $(SHL3TARGETN) @echo ---------------------------------------------------------- @@ -37,7 +37,7 @@ test3 .PHONY : $(SHL3TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL4TARGET)"!="" +.IF "$(SHL4TARGETN)"!="" ALLTAR : test4 test4 .PHONY : $(SHL4TARGETN) @echo ---------------------------------------------------------- @@ -49,7 +49,7 @@ test4 .PHONY : $(SHL4TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL5TARGET)"!="" +.IF "$(SHL5TARGETN)"!="" ALLTAR : test5 test5 .PHONY : $(SHL5TARGETN) @echo ---------------------------------------------------------- @@ -61,7 +61,7 @@ test5 .PHONY : $(SHL5TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL6TARGET)"!="" +.IF "$(SHL6TARGETN)"!="" ALLTAR : test6 test6 .PHONY : $(SHL6TARGETN) @echo ---------------------------------------------------------- @@ -73,7 +73,7 @@ test6 .PHONY : $(SHL6TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL7TARGET)"!="" +.IF "$(SHL7TARGETN)"!="" ALLTAR : test7 test7 .PHONY : $(SHL7TARGETN) @echo ---------------------------------------------------------- @@ -85,7 +85,7 @@ test7 .PHONY : $(SHL7TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL8TARGET)"!="" +.IF "$(SHL8TARGETN)"!="" ALLTAR : test8 test8 .PHONY : $(SHL8TARGETN) @echo ---------------------------------------------------------- @@ -97,7 +97,7 @@ test8 .PHONY : $(SHL8TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL9TARGET)"!="" +.IF "$(SHL9TARGETN)"!="" ALLTAR : test9 test9 .PHONY : $(SHL9TARGETN) @echo ---------------------------------------------------------- @@ -109,7 +109,7 @@ test9 .PHONY : $(SHL9TARGETN) # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL10TARGET)"!="" +.IF "$(SHL10TARGETN)"!="" ALLTAR : test10 test10 .PHONY : $(SHL10TARGETN) @echo ---------------------------------------------------------- diff --git a/solenv/inc/cppunit.mk b/solenv/inc/cppunit.mk index 2173f1a9ff9a..b30ca7152700 100644 --- a/solenv/inc/cppunit.mk +++ b/solenv/inc/cppunit.mk @@ -44,7 +44,7 @@ # unroll begin # ---- create the test libraries ------------------------------------ -.IF "$(SHL$(TNR)TARGET)"!="" +.IF "$(SHL$(TNR)TARGETN)"!="" ALLTAR : test$(TNR) test$(TNR) .PHONY : $(SHL$(TNR)TARGETN) @echo ---------------------------------------------------------- diff --git a/solenv/inc/extension_post.mk b/solenv/inc/extension_post.mk index f221ff7ebe4a..7b8c99b37fe8 100644 --- a/solenv/inc/extension_post.mk +++ b/solenv/inc/extension_post.mk @@ -69,10 +69,22 @@ $(COMPONENT_JARFILES) : $(CLASSDIR)/$$(@:f) .ENDIF # "$(COMPONENT_JARFILES)"!="" .IF "$(COMPONENT_LIBRARIES)"!="" +PACK_RUNTIME!:=TRUE # TODO(Q3): strip the binary? $(COMPONENT_LIBRARIES) : $(DLLDEST)/$$(@:f) @@-$(MKDIRHIER) $(@:d) $(COMMAND_ECHO)$(COPY) $< $@ +.ENDIF # "$(COMPONENT_LIBRARIES)"!="" + +.IF "$(PACK_RUNTIME)"!="" +PACK_RUNTIME_FLAG:=$(MISC)/$(TARGET)_pack_runtime.flag +$(EXTENSION_TARGET) : $(PACK_RUNTIME_FLAG) + +$(EXTENSIONDIR) : + @@-$(MKDIRHIER) $(@:d) + +$(PACK_RUNTIME_FLAG) : $(EXTENSIONDIR) + @@-$(MKDIRHIER) $(@:d) .IF "$(OS)$(CPU)"=="WNTI" .IF "$(COM)"=="GCC" $(GNUCOPY) $(SOLARBINDIR)/mingwm10.dll $(EXTENSIONDIR) @@ -120,7 +132,8 @@ $(COMPONENT_LIBRARIES) : $(DLLDEST)/$$(@:f) .ENDIF # "$(PACKMS)"!="" .ENDIF #"$(COM)"=="GCC" .ENDIF # "$(OS)$(CPU)"=="WNTI" -.ENDIF # "$(COMPONENT_LIBRARIES)"!="" + @$(TOUCH) $@ +.ENDIF # "$(PACK_RUNTIME)"!="" IMPLEMENTATION_IDENTIFIER*="com.sun.star.$(EXTENSIONNAME)-$(PLATFORMID)" diff --git a/solenv/inc/langlist.mk b/solenv/inc/langlist.mk index 32045cbf6262..e3ac2e5065ff 100644 --- a/solenv/inc/langlist.mk +++ b/solenv/inc/langlist.mk @@ -25,7 +25,6 @@ # #************************************************************************* - completelangiso=af \ ar \ as \ @@ -69,6 +68,7 @@ he \ hi \ hi-IN \ hr \ +ht \ hu \ is \ it \ diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk index a095b7762fbe..b0872169bfc6 100644 --- a/solenv/inc/settings.mk +++ b/solenv/inc/settings.mk @@ -810,7 +810,7 @@ SOLARCOMMONSDFDIR=$(SOLARSDFDIR) .EXPORT : SOLARBINDIR -L10N_MODULE*=$(SOLARSRC)$/l10n +L10N_MODULE*=$(SOURCE_ROOT_DIR)/l10n/l10n ALT_L10N_MODULE*=$(SOLARSRC)$/l10n_so .IF "$(WITH_LANG)"!="" |