summaryrefslogtreecommitdiff
path: root/solenv/bin
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin')
-rw-r--r--solenv/bin/createcomponent.xslt51
-rw-r--r--solenv/bin/make_installer.pl39
-rw-r--r--solenv/bin/mhids.pl6
-rw-r--r--solenv/bin/modules/SourceConfigHelper.pm422
-rw-r--r--solenv/bin/modules/installer/environment.pm3
-rw-r--r--solenv/bin/modules/installer/globals.pm12
-rw-r--r--solenv/bin/modules/installer/parameter.pm15
-rw-r--r--solenv/bin/modules/installer/regmerge.pm340
-rw-r--r--solenv/bin/modules/installer/scriptitems.pm42
-rw-r--r--solenv/bin/modules/installer/servicesfile.pm1073
-rw-r--r--solenv/bin/modules/par2script/check.pm49
-rw-r--r--solenv/bin/packcomponents.xslt52
-rw-r--r--solenv/bin/par2script.pl2
-rwxr-xr-xsolenv/bin/subsequenttests39
14 files changed, 582 insertions, 1563 deletions
diff --git a/solenv/bin/createcomponent.xslt b/solenv/bin/createcomponent.xslt
new file mode 100644
index 000000000000..7f7695d533b3
--- /dev/null
+++ b/solenv/bin/createcomponent.xslt
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:uc="http://openoffice.org/2010/uno-components">
+ <xsl:param name="uri"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:template match="uc:component">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:attribute name="uri">
+ <xsl:value-of select="$uri"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="*">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="@*">
+ <xsl:copy/>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index 335ecf961253..d28a2e7e3fa0 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -54,11 +54,9 @@ use installer::packagepool;
use installer::parameter;
use installer::pathanalyzer;
use installer::profiles;
-use installer::regmerge;
use installer::scppatchsoname;
use installer::scpzipfiles;
use installer::scriptitems;
-use installer::servicesfile;
use installer::setupscript;
use installer::simplepackage;
use installer::sorter;
@@ -892,43 +890,6 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
installer::worker::resolving_hidden_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref);
if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles13c.log", $filesinproductlanguageresolvedarrayref); }
- #####################################
- # Creating services.rdb
- #####################################
-
- if ( $allvariableshashref->{'SERVICESPROJEKT'} )
- {
- if (! $installer::globals::languagepack)
- {
- # ATTENTION: For creating the services.rdb it is necessary to execute the native file
- # "regcomp" or "regcomp.exe". Therefore this function can only be executed on the
- # corresponding platform.
-
- if ( $installer::globals::servicesrdb_can_be_created )
- {
- installer::logger::print_message( "... creating preregistered services.rdb ...\n" );
-
- installer::servicesfile::create_services_rdb($allvariableshashref, $filesinproductlanguageresolvedarrayref, $includepatharrayref, $languagestringref);
- if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles14.log", $filesinproductlanguageresolvedarrayref); }
- }
- }
- }
-
- #####################################
- # Calls of regmerge
- #####################################
-
- if (!($installer::globals::is_copy_only_project))
- {
- if (! $installer::globals::languagepack)
- {
- installer::logger::print_message( "... merging files into registry database ...\n" );
-
- installer::regmerge::merge_registration_files($filesinproductlanguageresolvedarrayref, $includepatharrayref, $languagestringref, $allvariableshashref);
- if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles14b.log", $filesinproductlanguageresolvedarrayref); }
- }
- }
-
############################################
# Collecting directories for epm list file
############################################
diff --git a/solenv/bin/mhids.pl b/solenv/bin/mhids.pl
index f0abf2e5cdca..33f873bc386d 100644
--- a/solenv/bin/mhids.pl
+++ b/solenv/bin/mhids.pl
@@ -59,7 +59,10 @@ sub cleandie
print STDERR "$errstring\n";
if ( not $debug ) {
foreach my $i (@cleanuplist) {
- unlink "$workfile$i" if -f "$workfile$i" or print STDERR "ERROR - couldn't remove $workfile$i\n";
+# unlink "$workfile$i" if -f "$workfile$i" or print STDERR "ERROR - couldn't remove $workfile$i\n";
+ if ( -f "$workfile$i" ) {
+ unlink "$workfile$i" or print STDERR "ERROR - couldn't remove $workfile$i\n";
+ }
}
}
die "$erroreval\n";
@@ -387,6 +390,7 @@ rename("$srs/$filebase.hid.$ENV{INPATH}", "$srs/$filebase.hid") or cleandie("ERR
if ( not $debug ) {
foreach my $i (@cleanuplist) {
+ sleep 1;
if ( -f "$workfile$i" ) {
unlink "$workfile$i" or cleandie("");
}
diff --git a/solenv/bin/modules/SourceConfigHelper.pm b/solenv/bin/modules/SourceConfigHelper.pm
new file mode 100644
index 000000000000..84ffbe0ca3f7
--- /dev/null
+++ b/solenv/bin/modules/SourceConfigHelper.pm
@@ -0,0 +1,422 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+#*************************************************************************
+#
+# SourceConfigHelper - Perl extension for parsing general info databases
+#
+# usage: see below
+#
+#*************************************************************************
+
+package SourceConfigHelper;
+
+use strict;
+
+use RepositoryHelper;
+use SourceConfig;
+use Cwd qw (cwd);
+use Carp;
+
+my $debug = 0;
+my @source_config_list; # array of sourceconfig objects
+
+#-----------------------------------------------------------------------
+# Constants
+#-----------------------------------------------------------------------
+
+use constant SOURCE_CONFIG_NONE => 0;
+use constant SOURCE_CONFIG_CURRENT_FIRST => 1;
+use constant SOURCE_CONFIG_ENVIRONMENT_FIRST => 2;
+use constant SOURCE_CONFIG_CURRENT_ONLY => 3;
+use constant SOURCE_CONFIG_ENVIRONMENT_ONLY => 4;
+
+use constant SOURCE_CONFIG_DEFAULT => SOURCE_CONFIG_CURRENT_FIRST;
+
+##### profiling #####
+
+##### ctor #####
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+ my $init_action = shift;
+ my $self = {};
+ my $SourceConfigCurrent;
+ my $SourceConfigEnvironment;
+
+ $init_action = SOURCE_CONFIG_DEFAULT if (!defined ($init_action));
+ if (!eval ($init_action) or ($init_action < SOURCE_CONFIG_NONE) or ($init_action > SOURCE_CONFIG_ENVIRONMENT_ONLY)) {
+ croak("wrong initial parameter: $init_action\n");
+ }
+
+ if ($init_action != SOURCE_CONFIG_NONE) {
+ my $repositoryHash_ref = {};
+ if ($init_action != SOURCE_CONFIG_ENVIRONMENT_ONLY) {
+ my $initial_directory = cwd();
+ my $result = is_repository($initial_directory, $repositoryHash_ref);
+ if ($result) {
+ $SourceConfigCurrent = SourceConfig->new($repositoryHash_ref->{REPOSITORY_ROOT});
+ }
+ }
+ if ($init_action != SOURCE_CONFIG_CURRENT_ONLY) {
+ my $source_config = $ENV{SOURCE_ROOT_DIR} . '/' . SourceConfig::SOURCE_CONFIG_FILE_NAME;
+ if (-f $source_config) {
+ $SourceConfigEnvironment = SourceConfig->new($source_config);
+ }
+ }
+
+ # fill array
+
+ if (($init_action == SOURCE_CONFIG_CURRENT_FIRST) or ($init_action == SOURCE_CONFIG_CURRENT_ONLY)) {
+ if (defined ($SourceConfigCurrent)) {
+ push (@source_config_list, $SourceConfigCurrent);
+ }
+ if ($init_action == SOURCE_CONFIG_CURRENT_FIRST) {
+ if (defined ($SourceConfigEnvironment)) {
+ push (@source_config_list, $SourceConfigEnvironment);
+ }
+ }
+ }
+ elsif (($init_action == SOURCE_CONFIG_ENVIRONMENT_FIRST) or ($init_action == SOURCE_CONFIG_ENVIRONMENT_ONLY)) {
+ if (defined ($SourceConfigEnvironment)) {
+ push (@source_config_list, $SourceConfigEnvironment);
+ }
+ if ($init_action == SOURCE_CONFIG_ENVIRONMENT_FIRST) {
+ if (defined ($SourceConfigCurrent)) {
+ push (@source_config_list, $SourceConfigCurrent);
+ }
+ }
+ }
+ }
+
+ $self->{SOURCE_CONFIG_LIST} = \@source_config_list;
+
+ bless($self, $class);
+ return $self;
+}
+
+##### methods #####
+
+############################################################################################
+
+sub add_SourceConfig {
+ my $self = shift;
+ my $source_config = shift;
+ push (@{$self->{SOURCE_CONFIG_LIST}}, $source_config);
+}
+
+############################################################################################
+
+sub get_SourceConfigList {
+ my $self = shift;
+ return @{$self->{SOURCE_CONFIG_LIST}};
+}
+
+############################################################################################
+
+sub has_SourceConfig {
+ my $self = shift;
+ my $result = 0;
+ my $count = @{$self->{SOURCE_CONFIG_LIST}};
+ $result = 1 if ($count > 0);
+ return $result;
+}
+
+############################################################################################
+
+sub get_module_path {
+ my $self = shift;
+ my $module = shift;
+ my $function = \&SourceConfig::get_module_path;
+ my $result;
+ $result = $self->get_StringResult ($function, $module);
+ return $result;
+}
+
+############################################################################################
+
+sub get_active_modules {
+ my $self = shift;
+ my $parameter; # empty
+ my $function = \&SourceConfig::get_active_modules;
+ my $array_ref;
+ $array_ref = $self->get_ArrayResult ($function, $parameter);
+ return @$array_ref;
+}
+
+############################################################################################
+
+sub get_repositories {
+ my $self = shift;
+ my $parameter; # empty
+ my $function = \&SourceConfig::get_repositories;
+ my $array_ref;
+ $array_ref = $self->get_ArrayResult ($function, $parameter);
+ return @$array_ref;
+}
+
+############################################################################################
+
+sub get_module_repository {
+ my $self = shift;
+ my $module = shift;
+ my $function = \&SourceConfig::get_module_repository;
+ my $result;
+ $result = $self->get_StringResult ($function, $module);
+ return $result;
+}
+
+############################################################################################
+
+sub is_active {
+ my $self = shift;
+ my $module = shift;
+ my $function = \&SourceConfig::is_active;
+ my $result_ref;
+ my $is_active = 0;
+ $result_ref = $self->get_ResultOfList ($function, $module);
+ my $count = @$result_ref;
+ if ($count>0) {
+ foreach my $active (@$result_ref) {
+ if ($active) {
+ $is_active = $active;
+ }
+ }
+ }
+ return $is_active;
+}
+
+##### private methods #####
+
+############################################################################################
+#
+# is_repository () : check if the directory is a valid repository
+#
+# input: - directory
+# - hash reference, where the output will be stored
+#
+# output: 0 = FALSE, the directory is no valid repository
+# 1 = TRUE, the repository root can be found in $repositoryHash_ref->{REPOSITORY_ROOT}
+#
+############################################################################################
+
+sub is_repository {
+ my $directory = shift;
+ my $repositoryHash_ref = shift;
+ $repositoryHash_ref->{INITIAL_DIRECTORY} = $directory;
+ $repositoryHash_ref->{REPOSITORY_ROOT} = undef;
+ $repositoryHash_ref->{REPOSITORY_NAME} = undef;
+ my $result = RepositoryHelper::search_via_build_lst($repositoryHash_ref);
+ chdir $repositoryHash_ref->{INITIAL_DIRECTORY};
+ if (!$result) {
+ $result = RepositoryHelper::search_for_hg($repositoryHash_ref);
+ }
+ return $result;
+}
+
+############################################################################################
+#
+# get_ResultOfList(): give back an array reference from all SourceConfig Objects results
+#
+# input: - function : reference to the called function of each SourceConfig Object
+# - parameter : parameter for the called function
+#
+# output: result : array of all results
+#
+############################################################################################
+
+sub get_ResultOfList {
+ my $self = shift;
+ my $function = shift;
+ my $parameter = shift;
+ my @result;
+ foreach my $source_config (@{$self->{SOURCE_CONFIG_LIST}}) {
+ push (@result, &$function ($source_config, $parameter));
+ }
+ return \@result;
+}
+
+############################################################################################
+#
+# get_StringResult(): give back the first defined result from all SourceConfig Objects
+#
+# input: - function : reference to the called function of each SourceConfig Object
+# - parameter : parameter for the called function
+#
+# output: result : scalar variable (string), undef if no result
+#
+############################################################################################
+
+sub get_StringResult {
+ my $self = shift;
+ my $function = shift;
+ my $parameter = shift;
+ my $result_ref;
+ $result_ref = $self->get_ResultOfList ($function, $parameter);
+ my $count = @$result_ref;
+ if ($count>0) {
+ my $value;
+ my $i = 0;
+ while (($i < $count) and !defined ($value)) { # search the first defined result
+ $value = $$result_ref[$i];
+ $i++;
+ }
+ return $value;
+ }
+ return undef;
+}
+
+############################################################################################
+#
+# get_StringResult(): give back a sorted and uniqe array reference of the results
+# from all SourceConfig Objects
+#
+# input: - function : reference to the called function of each SourceConfig Object
+# - parameter : parameter for the called function
+#
+# output: result : sorted and uniqe array reference
+#
+############################################################################################
+
+sub get_ArrayResult {
+ my $self = shift;
+ my $function = shift;
+ my $parameter = shift;
+ my $result_ref;
+ my @modules;
+ $result_ref = $self->get_ResultOfList ($function, $parameter);
+ my $count = @$result_ref;
+ if ($count>0) {
+ my %moduleHash;
+ foreach my $module (@$result_ref) {
+ $moduleHash{$module}++;
+ }
+ @modules = sort keys %moduleHash;
+ }
+ return \@modules;
+}
+
+ ##### finish #####
+
+1; # needed by use or require
+
+__END__
+
+=head1 NAME
+
+SourceConfigHelper - Perl extension for handling with SourceConfigObjetcs
+
+=head1 SYNOPSIS
+
+ # example that will read source_config file and return the active repositories
+
+ use SourceConfigHelper;
+
+ # Create a new instance:
+ $a = SourceConfigHelper->new();
+
+ # Get repositories for the actual workspace:
+ $a->get_repositories();
+
+=head1 DESCRIPTION
+
+SourceConfigHelper is a perl extension to handle more than one objects of SourceConfig
+to set up a search order for modules.
+
+Methods:
+
+SourceConfigHelper::new()
+
+Creates a new instance of SourceConfigHelper. Can be initialized by: default - empty or with a constant of search order. default: the source_config will be taken first from the current repository and second from the environment
+Possible parameters are:
+SourceConfigHelper::SOURCE_CONFIG_NONE - no SourceConfig Object will be created
+SourceConfigHelper::SOURCE_CONFIG_CURRENT_FIRST - use the current repository first
+SourceConfigHelper::SOURCE_CONFIG_ENVIRONMENT_FIRST - use the repository of the environment first
+SourceConfigHelper::SOURCE_CONFIG_CURRENT_ONLY - use only the current repository
+SourceConfigHelper::SOURCE_CONFIG_ENVIRONMENT_ONLY - use only the repository of the environment
+
+SourceConfigHelper::get_repositories()
+
+Returns sorted list of active repositories for the actual workspace
+
+SourceConfigHelper::get_active_modules()
+
+Returns a sorted list of active modules
+
+SourceConfigHelper::get_all_modules()
+
+Returns sorted list of all modules in active repositories.
+
+SourceConfigHelper::get_module_path($module)
+
+Returns absolute module path. If the module is not active or don't exists, "undef" will be returned.
+
+SourceConfigHelper::get_module_repository($module)
+
+Returns the module's repository. If the module is not active or don't exists, "undef" will be returned.
+
+SourceConfigHelper::is_active()
+
+Returns 1 (TRUE) if a module is active
+Returns 0 (FALSE) if a module is not active
+
+SourceConfigHelper::add_SourceConfig($SourceConfigObject)
+
+Add the SourceConfigObject to the end of the list
+
+SourceConfigHelper::get_SourceConfigList()
+
+Return an array of SourceConfigObjects
+
+SourceConfigHelper::has_SourceConfig()
+
+Returns 1 (TRUE) if one or more SourceConfig Objects is in the list
+Returns 0 (FALSE) if no SourceConfig Object is in the list (can happen if there is no valid repository)
+
+=head2 EXPORT
+
+SourceConfigHelper::new()
+SourceConfigHelper::get_repositories()
+SourceConfigHelper::get_active_modules()
+SourceConfigHelper::get_all_modules()
+SourceConfigHelper::get_module_path($module)
+SourceConfigHelper::get_module_repository($module)
+SourceConfigHelper::is_active($module)
+SourceConfigHelper::add_SourceConfig($SourceConfigObject)
+SourceConfigHelper::get_SourceConfigList()
+SourceConfigHelper::has_SourceConfig()
+
+=head1 AUTHOR
+
+Kurt Zenker, kz@openoffice.org
+
+=head1 SEE ALSO
+
+perl(1).
+
+=cut
diff --git a/solenv/bin/modules/installer/environment.pm b/solenv/bin/modules/installer/environment.pm
index b54912b72616..98bdffb3122a 100644
--- a/solenv/bin/modules/installer/environment.pm
+++ b/solenv/bin/modules/installer/environment.pm
@@ -117,9 +117,6 @@ sub set_global_environment_variables
if ( $ENV{'LAST_MINOR'} ) { $installer::globals::lastminor = $ENV{'LAST_MINOR'}; }
if ( $ENV{'PROEXT'} ) { $installer::globals::pro = 1; }
- if ( $ENV{'SOLAR_JAVA'} ) { $installer::globals::solarjava = 1; }
- if ( $ENV{'JDKLIB'} ) { $installer::globals::jdklib = $ENV{'JDKLIB'}; }
- if ( $ENV{'JREPATH'} ) { $installer::globals::jrepath = $ENV{'JREPATH'}; }
if ( $ENV{'VERBOSE'} && ( (lc $ENV{'VERBOSE'}) eq "false" ) ) { $installer::globals::quiet = 1; }
if ( $ENV{'PREPARE_WINPATCH'} ) { $installer::globals::prepare_winpatch = 1; }
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index 582bd8c708b1..7d6e8c4a9b8f 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -118,8 +118,6 @@ BEGIN
$dounzip = 1;
$languages_defined_in_productlist = 0;
$setupscript_defined_in_productlist = 0;
- $services_rdb_created = 0;
- $servicesrdb_can_be_created = 0;
$islinux = 0;
$issolaris = 0;
$ismacosx = 0;
@@ -238,9 +236,6 @@ BEGIN
$creating_windows_installer_patch = 0;
$strip = 1;
- $solarjava = 0;
- $jdklib = "";
- $jrepath = "";
$globallogging = 0;
$globalloggingform21 = 1;
@@ -409,9 +404,6 @@ BEGIN
%usedtreeconditions = ();
%moduledestination = ();
- $unomaxservices = 1800; # regcomp -c argument length
- $javamaxservices = 15;
-
$one_cab_file = 0;
$fix_number_of_cab_files = 1;
$cab_file_per_component = 0;
@@ -454,8 +446,6 @@ BEGIN
@solarispatchfiles = (".diPatch", "patchinfo");
@environmentvariables = ( "SOLARVERSION", "GUI", "WORK_STAMP", "OUTPATH", "LOCAL_OUT", "LOCAL_COMMON_OUT" );
@packagelistitems = ("module", "solarispackagename", "packagename", "copyright", "vendor", "description" );
- @regcompjars = ( "unoil.jar", "java_uno.jar", "ridl.jar", "jurt.jar", "juh.jar", "xmerge.jar", "commonwizards.jar" );
- @regcompregisterlibs = ( "javavm.uno", "javaloader.uno", "stocservices.uno" );
@languagepackfeature =();
@featurecollector =();
$msiassemblyfiles = "";
@@ -502,7 +492,6 @@ BEGIN
$separator = "/";
$pathseparator = "\:";
$libextension = "\.dll";
- $quote = "\'";
$isunix = 0;
$iswin = 1;
$archiveformat = ".zip";
@@ -527,7 +516,6 @@ BEGIN
$libextension = "\.so";
}
$archiveformat = ".tar.gz";
- $quote = "\'";
$isunix = 1;
$iswin = 0;
}
diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm
index d3ce8a1d3a32..70bc32e36c7c 100644
--- a/solenv/bin/modules/installer/parameter.pm
+++ b/solenv/bin/modules/installer/parameter.pm
@@ -368,19 +368,6 @@ sub setglobalvariables
if ( ! $installer::globals::packageformat ) { $installer::globals::packageformat = "native"; }
- # $installer::globals::servicesrdb_can_be_created can only be set, if regcomp (regcomp.exe) can be executed.
-
- if ( $installer::globals::iswin && $installer::globals::iswindowsbuild ) { $installer::globals::servicesrdb_can_be_created = 1; }
- if ( $installer::globals::islinux && $installer::globals::islinuxbuild ) { $installer::globals::servicesrdb_can_be_created = 1; }
- if ( $installer::globals::issolaris && $installer::globals::issolarisbuild ) { $installer::globals::servicesrdb_can_be_created = 1; }
-
- # ToDo: Needs to be expanded for additional compiler (setting $installer::globals::servicesrdb_can_be_created = 1 for all external platforms)
-
- if ((!($installer::globals::iswindowsbuild)) && (!($installer::globals::islinuxbuild)) && (!($installer::globals::issolarisbuild)))
- {
- $installer::globals::servicesrdb_can_be_created = 1;
- }
-
# extension, if $installer::globals::pro is set
if ($installer::globals::pro) { $installer::globals::productextension = ".pro"; }
@@ -638,8 +625,6 @@ sub outputparameter
if ( $installer::globals::debian ) { push(@output, "Linux: Creating Debian packages\n"); }
if ( $installer::globals::dounzip ) { push(@output, "Unzip ARCHIVE files\n"); }
else { push(@output, "Not unzipping ARCHIVE files\n"); }
- if ( $installer::globals::servicesrdb_can_be_created ) { push(@output, "services.rdb can be created\n"); }
- else { push(@output, "services.rdb cannot be created !\n"); }
if (!($installer::globals::languages_defined_in_productlist))
{
push(@output, "Languages:\n");
diff --git a/solenv/bin/modules/installer/regmerge.pm b/solenv/bin/modules/installer/regmerge.pm
deleted file mode 100644
index 1c2821549131..000000000000
--- a/solenv/bin/modules/installer/regmerge.pm
+++ /dev/null
@@ -1,340 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-package installer::regmerge;
-
-use Cwd;
-use installer::converter;
-use installer::existence;
-use installer::exiter;
-use installer::globals;
-use installer::logger;
-use installer::pathanalyzer;
-use installer::remover;
-use installer::scriptitems;
-use installer::systemactions;
-
-################################################################
-# Collecting all files with content:
-# Regmergefile = "mydatabasepart.rdb";
-################################################################
-
-sub collect_all_regmergefiles
-{
- my ($filesarrayref) = @_;
-
- my @regmergefiles = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- if ( $onefile->{'Regmergefile'} ) { push(@regmergefiles, $onefile); }
- }
-
- return \@regmergefiles;
-}
-
-################################################################
-# Collecting all gids of the databases, that are part of
-# the file definition
-################################################################
-
-sub collect_all_database_gids
-{
- my ($filesarrayref) = @_;
-
- my @databasegids = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
-
- if ( $onefile->{'RegistryID'} )
- {
- my $databasegid = $onefile->{'RegistryID'};
- if (! installer::existence::exists_in_array($databasegid, \@databasegids)) { push(@databasegids, $databasegid); }
- }
- else
- {
- installer::exiter::exit_program("ERROR: File defintion error. File :$onefile->{'gid'} without RegistryID!", "collect_all_database_gids");
- }
- }
-
- return \@databasegids;
-}
-
-################################################################
-# Returning the database file from the files collector. In the
-# future this file does not need to exist, but currently it
-# has to exist already in the files collector.
-################################################################
-
-sub get_database_file
-{
- my ($databasegid, $filesarrayref) = @_;
-
- my $found = 0;
- my $onefile;
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- $onefile = ${$filesarrayref}[$i];
- my $gid = $onefile->{'gid'};
-
- if ( $databasegid eq $gid )
- {
- $found = 1;
- last;
- }
- }
-
- if ( ! $found ) { installer::exiter::exit_program("ERROR: Did not find StarRegistry file $databasegid!", "get_database_file"); }
-
- return $onefile;
-}
-
-################################################################
-# The regmerge file has to be found the in include pathes
-################################################################
-
-sub get_regmerge_file
-{
- my ($includepatharrayref) = @_;
-
- my $searchname;
-
- if ($installer::globals::isunix) { $searchname = "regcomplazy"; }
- else { $searchname = "regcomplazy.exe"; }
-
- my $regmergefileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$searchname, $includepatharrayref, 1);
- if ( $$regmergefileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $searchname for merging the StarRegistry!", "get_regmerge_file"); }
-
- return $$regmergefileref;
-}
-
-################################################################
-# Collecting all files that are merged to one defined
-# StarRegistry database
-################################################################
-
-sub collect_all_files_for_one_registry
-{
- my ($regmergefiles, $databasegid) = @_;
-
- my @regmergefiles = ();
-
- for ( my $i = 0; $i <= $#{$regmergefiles}; $i++ )
- {
- my $onefile = ${$regmergefiles}[$i];
- if ( $onefile->{'RegistryID'} eq $databasegid ) { push(@regmergefiles, $onefile); }
- }
-
- return \@regmergefiles;
-}
-
-################################################################
-# Collecting all particles from the regmerge files
-################################################################
-
-sub collect_all_regmerge_particles
-{
- my ($databaseregisterfiles) = @_;
-
- my @regmergeparticles = ();
-
- for ( my $i = 0; $i <= $#{$databaseregisterfiles}; $i++ )
- {
- my $onefile = ${$databaseregisterfiles}[$i];
- if ( $onefile->{'Regmergefile'} ) { push(@regmergeparticles, $onefile->{'Regmergefile'}); }
- else { installer::exiter::exit_program("ERROR: Could not find entry for \"Regmergefile\" in $onefile->{'gid'}!", "collect_all_regmerge_particles"); }
- }
-
- return \@regmergeparticles;
-}
-
-################################################################
-# Collecting all source pathes of the regmerge particles
-################################################################
-
-sub get_all_source_pathes
-{
- my ($regmergeparticles, $includepatharrayref) = @_;
-
- my @regmergeparticles = ();
-
- for ( my $i = 0; $i <= $#{$regmergeparticles}; $i++ )
- {
- my $filename = ${$regmergeparticles}[$i];
-
- my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$filename, $includepatharrayref, 1);
- if ( $$fileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $filename for merging the StarRegistry!", "get_all_source_pathes"); }
-
- push(@regmergeparticles, $$fileref);
- }
-
- return \@regmergeparticles;
-}
-
-################################################################
-# Merging the rdb files into the StarRegistry database
-################################################################
-
-sub merge_files
-{
- my ($regmergefile, $databasefile, $registerfiles, $databasedir, $allvariableshashref) = @_;
-
- my $databasesource = $databasefile->{'sourcepath'};
- my $databasename = $databasefile->{'Name'};
- my $databasedest = $databasedir . $installer::globals::separator . $databasename;
-
- installer::systemactions::copy_one_file($databasesource, $databasedest);
- $databasefile->{'sourcepath'} = $databasedest; # new sourcepath for the StarRegistry file
-
- # One call for every merge particle. This is only possible, if there are only a few merge particles.
-
- my $prefix = $databasefile->{'NativeServicesURLPrefix'};
- # TODO: "NativeServicesURLPrefix" or "JavaServicesURLPrefix"
-
- my $error_occured = 0;
-
- for ( my $i = 0; $i <= $#{$registerfiles}; $i++ )
- {
- my $registerfile = $databasedir . $installer::globals::separator . $i . ".tmp";
- open (IN, '<', $registerfiles->[$i]) or $error_occured = 1;
- open (OUT, '>', $registerfile) or $error_occured = 1;
- while (<IN>)
- {
- s/^ComponentName=/ComponentName=$prefix/;
- print OUT $_ or $error_occured = 1;
- }
- close IN or $error_occured = 1;
- close OUT or $error_occured = 1;
-
- my $systemcall = $regmergefile . " -v " . $databasedest . " " . $registerfile . " 2\>\&1 |";
-
- my @regmergeoutput = ();
-
- my $var_library_path;
- my $old_library_path;
- if ($installer::globals::isunix) {
- $var_library_path = $installer::globals::ismacosx ?
- 'DYLD_LIBRARY_PATH' : 'LD_LIBRARY_PATH';
- $old_library_path = $ENV{$var_library_path};
- installer::servicesfile::include_libdir_into_ld_library_path(
- $var_library_path, $regmergefile);
- }
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regmergeoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- if (defined $var_library_path) {
- if (defined $old_library_path) {
- $ENV{$var_library_path} = $old_library_path;
- } else {
- delete $ENV{$var_library_path};
- }
- }
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $j = 0; $j <= $#regmergeoutput; $j++ ) { push( @installer::globals::logfileinfo, "$regmergeoutput[$j]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- $error_occured = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- }
-
- return $error_occured;
-}
-
-################################################################
-# Expanding the registry database files by merging rdb files
-# into this registry database files.
-################################################################
-
-sub merge_registration_files
-{
- my ($filesarrayref, $includepatharrayref, $languagestringref, $allvariableshashref) = @_;
-
- installer::logger::include_header_into_logfile("Creating starregistry databases:");
-
- # Test if there is something to do. At least one file has to have the content:
- # Regmergefile = "mydatabasepart.rdb";
-
- my $regmergefiles = collect_all_regmergefiles($filesarrayref);
-
- if ( $#{$regmergefiles} > -1 ) # not empty -> at least one regmerge file
- {
- # prepare registration
-
- my $regmergefile = get_regmerge_file($includepatharrayref); # searching for regmerge (regcomplazy.exe)
-
- my $databasegids = collect_all_database_gids($regmergefiles);
-
- # iterating over all database gids
-
- my $regmergeerror = 0;
-
- for ( my $i = 0; $i <= $#{$databasegids}; $i++ )
- {
- $databasegid = ${$databasegids}[$i];
-
- # my $databasedirname = "starregistryrdb"; <- not unique!
- my $databasedirname = $databasegid . "_rdb"; # <- unique!
- my $databasedir = installer::systemactions::create_directories($databasedirname, $languagestringref);
- push(@installer::globals::removedirs, $databasedir);
-
- my $databasefile = get_database_file($databasegid, $filesarrayref);
- my $databaseregisterfiles = collect_all_files_for_one_registry($regmergefiles, $databasegid);
-
- if ( $#{$databaseregisterfiles} > -1 ) # not empty -> at least one regmerge file
- {
- my $regmergeparticles = collect_all_regmerge_particles($databaseregisterfiles);
- $regmergeparticles = get_all_source_pathes($regmergeparticles, $includepatharrayref);
- my $oneregmergeerror = merge_files($regmergefile, $databasefile, $regmergeparticles, $databasedir, $allvariableshashref);
- if ($oneregmergeerror) { $regmergeerror = 1; }
- }
- }
-
- if ( $regmergeerror ) { installer::exiter::exit_program("ERROR: regmerge !", "merge_registration_files"); }
-
- }
-}
-
-1;
diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm
index 7a2c4cb3f5e3..54d22df1e19e 100644
--- a/solenv/bin/modules/installer/scriptitems.pm
+++ b/solenv/bin/modules/installer/scriptitems.pm
@@ -1223,7 +1223,7 @@ sub get_Source_Directory_For_Files_From_Includepathlist
my $styles = "";
my $file_can_miss = 0;
if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; }
- if (( $styles =~ /\bSTARREGISTRY\b/ ) || ( $styles =~ /\bFILE_CAN_MISS\b/ )) { $file_can_miss = 1; }
+ if ( $styles =~ /\bFILE_CAN_MISS\b/ ) { $file_can_miss = 1; }
if (( $installer::globals::languagepack ) && ( ! $onefile->{'ismultilingual'} ) && ( ! ( $styles =~ /\bFORCELANGUAGEPACK\b/ ))) { $file_can_miss = 1; }
@@ -1352,12 +1352,21 @@ sub remove_Files_Without_Sourcedirectory
if ($sourcepath eq "")
{
my $styles = $onefile->{'Styles'};
+ my $filename = $onefile->{'Name'};
- if ( ! ( $styles =~ /\bSTARREGISTRY\b/ )) # StarRegistry files will be created later
+ if ( ! $installer::globals::languagepack )
{
- my $filename = $onefile->{'Name'};
+ $infoline = "ERROR: Removing file $filename from file list.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+
+ push(@missingfiles, "ERROR: File not found: $filename\n");
+ $error_occured = 1;
- if ( ! $installer::globals::languagepack )
+ next; # removing this file from list, if sourcepath is empty
+ }
+ else # special case for language packs
+ {
+ if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCELANGUAGEPACK\b/ ))
{
$infoline = "ERROR: Removing file $filename from file list.\n";
push( @installer::globals::logfileinfo, $infoline);
@@ -1367,27 +1376,14 @@ sub remove_Files_Without_Sourcedirectory
next; # removing this file from list, if sourcepath is empty
}
- else # special case for language packs
+ else
{
- if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCELANGUAGEPACK\b/ ))
- {
- $infoline = "ERROR: Removing file $filename from file list.\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- push(@missingfiles, "ERROR: File not found: $filename\n");
- $error_occured = 1;
-
- next; # removing this file from list, if sourcepath is empty
- }
- else
- {
- $infoline = "INFO: Removing file $filename from file list. It is not language dependent.\n";
- push( @installer::globals::logfileinfo, $infoline);
- $infoline = "INFO: It is not language dependent and can be ignored in language packs.\n";
- push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "INFO: Removing file $filename from file list. It is not language dependent.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "INFO: It is not language dependent and can be ignored in language packs.\n";
+ push( @installer::globals::logfileinfo, $infoline);
- next; # removing this file from list, if sourcepath is empty
- }
+ next; # removing this file from list, if sourcepath is empty
}
}
}
diff --git a/solenv/bin/modules/installer/servicesfile.pm b/solenv/bin/modules/installer/servicesfile.pm
deleted file mode 100644
index 63e5f44125c8..000000000000
--- a/solenv/bin/modules/installer/servicesfile.pm
+++ /dev/null
@@ -1,1073 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-package installer::servicesfile;
-
-use Cwd;
-use installer::converter;
-use installer::existence;
-use installer::exiter;
-use installer::globals;
-use installer::logger;
-use installer::pathanalyzer;
-use installer::remover;
-use installer::scriptitems;
-use installer::systemactions;
-
-################################################################
-# Adding the newly created file into the files collector
-################################################################
-
-sub add_services_sourcepath_into_filearray
-{
- my ( $filesarrayref, $servicesfile, $servicesname ) = @_;
-
- my $found = 0;
- my $onefile;
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- $onefile = ${$filesarrayref}[$i];
- my $name = $onefile->{'Name'};
-
- if ( $servicesname eq $name )
- {
- $found = 1;
- $onefile->{'sourcepath'} = $servicesfile; # setting the sourcepath!
- last;
- }
- }
-
- if ( ! $found ) { installer::exiter::exit_program("ERROR: Did not find $servicesname in files collector!", "add_services_sourcepath_into_filearray"); }
-
-}
-
-################################################################
-# Generating a file url from a path
-################################################################
-
-sub make_file_url
-{
- my ( $path ) = @_;
-
- my $fileurl = "";
-
- # removing ending slash/backslash
-
- installer::remover::remove_ending_pathseparator(\$path);
-
- if ($installer::globals::iswin)
- {
- $path =~ s/\\/\//g;
- $fileurl = "file\:\/\/\/" . $path;
- }
- else
- {
- $fileurl = "file\:\/\/" . $path;
- }
-
- return $fileurl;
-}
-
-################################################################
-# Determining all sourcepath from the uno components
-################################################################
-
-sub get_all_sourcepathes
-{
- my ( $filesref ) = @_;
-
- my @pathes = ();
-
- for ( my $i = 0; $i <= $#{$filesref}; $i++ )
- {
- my $onefile = ${$filesref}[$i];
- my $path = $onefile->{'sourcepath'};
-
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$path);
-
- if (! installer::existence::exists_in_array($path, \@pathes))
- {
- push(@pathes, $path);
- }
- }
-
- return \@pathes;
-}
-
-################################################################
-# Registering all uno component files in the services.rdb
-################################################################
-
-sub register_unocomponents
-{
- my ($allvariableshashref, $unocomponents, $regcompfileref, $servicesfile, $nativeservicesurlprefix) = @_;
-
- installer::logger::include_header_into_logfile("Registering UNO components:");
-
- my $error_occured = 0;
- my $filestring = "";
- for ( my $i = 0; $i <= $#{$unocomponents}; ++$i )
- {
- my $local_error1_occured = 0;
- my $local_error2_occured = 0;
-
- my $sourcepath = make_file_url(${$unocomponents}[$i]->{'sourcepath'});
- my $urlprefix = ${$unocomponents}[$i]->{'NativeServicesURLPrefix'};
- if (defined($urlprefix))
- {
- $local_error1_occured = call_regcomp($regcompfileref, $servicesfile, $sourcepath, $urlprefix);
- }
- else
- {
- $filestring .= ";" unless $filestring eq "";
- $filestring .= $sourcepath;
- }
- if (length($filestring) > $installer::globals::unomaxservices ||
- ($i == $#{$unocomponents} && $filestring ne ""))
- {
- $local_error2_occured = call_regcomp($regcompfileref, $servicesfile, $filestring, $nativeservicesurlprefix);
- $filestring = "";
- }
-
- if (( $local_error1_occured ) || ( $local_error2_occured )) { $error_occured = 1; }
- }
-
- return $error_occured;
-}
-
-sub call_regcomp
-{
- my ($regcompfileref, $servicesfile, $filestring, $urlprefix) = @_;
- my @regcompoutput = ();
-
- my $error_occured = 0;
-
- my $systemcall = "$installer::globals::wrapcmd $$regcompfileref -register -r ".fix_cygwin_path($servicesfile)." -c " . $installer::globals::quote . $filestring . $installer::globals::quote . " -wop=" . $installer::globals::quote . $urlprefix . $installer::globals::quote . " 2\>\&1 |";
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regcompoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $j = 0; $j <= $#regcompoutput; $j++ ) { push( @installer::globals::logfileinfo, "$regcompoutput[$j]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- $error_occured = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- return $error_occured;
-}
-
-################################################################
-# Registering all java component files in the services.rdb
-################################################################
-
-sub register_javacomponents
-{
- my ($allvariableshashref, $javacomponents, $regcompfileref, $servicesfile, $regcomprdb, $javaservicesurlprefix) = @_;
-
- installer::logger::include_header_into_logfile("Registering Java components:");
-
- my $ridljar_ref = "ridl.jar";
- my $ure_internal_java_dir_ref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$ridljar_ref, "", 1);
- installer::pathanalyzer::get_path_from_fullqualifiedname($ure_internal_java_dir_ref);
- if ( $$ure_internal_java_dir_ref eq "" ) { installer::exiter::exit_program("Could not determine URE_INTERNAL_JAVA_DIR when registering Java components!", "register_javacomponents"); }
-
- my $error_occured = 0;
-
- my $do_register = 1;
- if (!( $installer::globals::solarjava )) { $do_register = 0; }
-
- if ( $do_register )
- {
- my $filestring = "";
-
- for ( my $i = 0; $i <= $#{$javacomponents}; )
- {
- my $sourcepath = ${$javacomponents}[$i++]->{'sourcepath'};
-
- $filestring = $filestring . make_file_url($sourcepath);
-
- if ( $i % $installer::globals::javamaxservices == 0 || $i > $#{$javacomponents} ) # limiting to $installer::globals::maxservices files
- {
- my @regcompoutput = ();
-
- my $systemcall = "$installer::globals::wrapcmd $$regcompfileref -register -br ".fix_cygwin_path($regcomprdb)." -r ".fix_cygwin_path($servicesfile)." -c " . $installer::globals::quote . $filestring . $installer::globals::quote . " -l com.sun.star.loader.Java2 -wop=" . $installer::globals::quote . $javaservicesurlprefix . $installer::globals::quote ." -env:URE_INTERNAL_JAVA_DIR=" . $installer::globals::quote . make_file_url($$ure_internal_java_dir_ref) . $installer::globals::quote . " 2\>\&1 |";
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regcompoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $k = 0; $k <= $#regcompoutput; $k++ ) { push( @installer::globals::logfileinfo, "$regcompoutput[$k]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- $error_occured = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- }
-
- push( @installer::globals::logfileinfo, $infoline);
-
- $filestring = "";
- }
- else
- {
- $filestring = $filestring . ";";
- }
- }
- }
-
- return $error_occured;
-}
-
-
-
-################################################################
-# Helper routine to change cygwin (POSIX) path to DOS notation
-# if needed
-################################################################
-sub fix_cygwin_path
-{
- my ( $path ) = @_;
-
- if ( $installer::globals::iswin eq 1 && $installer::globals::wrapcmd eq "" )
- {
- $path = qx{cygpath -m "$path"};
- chomp($path);
- }
-
- return $path;
-}
-
-
-
-################################################################
-# Registering all uno component files in the services.rdb
-################################################################
-sub get_source_path_cygwin_safe
-{
- my ( $name, $array, $int ) = @_;
-
- my $ret = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$name, $array, $int);
- if ( $installer::globals::iswin eq 1 )
- {
- if( substr( $$ret, 1,1 ) eq ":" )
- {
- chomp($$ret = qx{cygpath -u "$$ret"});
- }
- }
- return $ret;
-}
-
-sub register_pythoncomponents
-{
- my ($pythoncomponents, $regcompfileref, $servicesfile,$includepatharrayref) = @_;
-
- installer::logger::include_header_into_logfile("Registering python UNO components:");
-
- my $error_occured = 0;
- my $counter = 0;
-
- my $systemcall = "";
-
- my $allsourcepathes = get_all_sourcepathes($pythoncomponents);
-
- for ( my $j = 0; $j <= $#{$allsourcepathes}; $j++ )
- {
- my $filestring = "";
- my $onesourcepath = ${$allsourcepathes}[$j];
- my $to = "";
- my $from = cwd();
- if ( $installer::globals::iswin ) { $from =~ s/\//\\/g; }
-
- my $typesrdbname = "types.rdb";
-
- # FIXME: Remove the unneeded
- # get_source_path_cygwin_safe() -> fix_cygwin_path()
- # when WRAPCMD is gone
- my $typesrdbref = get_source_path_cygwin_safe($typesrdbname, $includepatharrayref, 1);
-
- if ( $$typesrdbref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $typesrdbname !", "register_pythoncomponents"); }
-
- my $pyunoservicesrdbname = "pyuno_services.rdb";
- my $pyunoservicesrdbref = get_source_path_cygwin_safe($pyunoservicesrdbname, $includepatharrayref, 1);
-
- if ( $$pyunoservicesrdbref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $pyunoservicesrname !", "register_pythoncomponents"); }
-
- for ( my $i = 0; $i <= $#{$pythoncomponents}; $i++ )
- {
- my $doinclude = 1;
- my $sourcepath = ${$pythoncomponents}[$i]->{'sourcepath'};
-
- $to = $sourcepath;
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$to);
-
- if (!($to eq $onesourcepath)) { $doinclude = 0; }
-
- if ( $doinclude )
- {
- my $filename = ${$pythoncomponents}[$i]->{'Name'};
- $filestring = $filestring . $filename . "\;";
- $counter++;
- }
-
- if ( $counter > 0 )
- {
- $filestring =~ s/\;\s*$//;
- $filestring = substr( $filestring, 0, length($filestring)-3);
- chdir($onesourcepath);
-
- my @regcompoutput = ();
-
- $systemcall = "$installer::globals::wrapcmd $$regcompfileref -register"
- . " -br " . fix_cygwin_path($$typesrdbref)
- . " -br " . fix_cygwin_path($$pyunoservicesrdbref)
- . " -r " . fix_cygwin_path($servicesfile)
- . " -c vnd.openoffice.pymodule:" . $filestring . " -l com.sun.star.loader.Python 2\>\&1 |";
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regcompoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $j = 0; $j <= $#regcompoutput; $j++ ) { push( @installer::globals::logfileinfo, "$regcompoutput[$j]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- $error_occured = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- chdir($from);
-
- $counter = 0;
- $filestring = "";
- }
- }
- }
-
- return $error_occured;
-}
-
-################################################################
-# Iterating over all files, to find all files with the
-# style UNO_COMPONENT. This can be libraries and jar files.
-################################################################
-
-sub register_all_components
-{
- my ( $allvariableshashref, $servicesgid, $filesarrayref, $regcompfileref, $servicesfile, $regcomprdb, $includepatharrayref, $nativeservicesurlprefix, $javaservicesurlprefix ) = @_;
-
- my $registererrorflag = 0;
-
- my @unocomponents = ();
- my @javacomponents = ();
- my @pythoncomponents = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- my $styles = "";
- my $regmergefile = "";
- my $registryid = "";
-
- if ( $onefile->{'RegistryID'} ) { $registryid = $onefile->{'RegistryID'}; }
-
- if ( $servicesgid ne $registryid ) { next; } # only registration for the current $servicesgid
-
- if ( $onefile->{'Regmergefile'} ) { $regmergefile = $onefile->{'Regmergefile'}; }
-
- if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; }
-
- if (( $styles =~ /\bUNO_COMPONENT\b/ ) && ( $regmergefile eq "" )) # regmergefiles will not be registered with regcomp
- {
- my $filename = $onefile->{'Name'};
-
- if ( $filename =~ /\.jar\s*$/ ) # java component
- {
- push(@javacomponents, $onefile);
- }
- elsif( $filename =~ /\.py\s*$/ ) # python_component
- {
- push(@pythoncomponents, $onefile);
- }
- else # uno component
- {
- push(@unocomponents, $onefile);
- }
- }
- }
-
- $uno_error_occured = 0;
- $java_error_occured = 0;
- $python_error_occured = 0;
-
- if ( $#unocomponents > -1 ) { $uno_error_occured = register_unocomponents($allvariableshashref, \@unocomponents, $regcompfileref, $servicesfile, $nativeservicesurlprefix); }
- if ( $#javacomponents > -1 ) { $java_error_occured = register_javacomponents($allvariableshashref, \@javacomponents, $regcompfileref, $servicesfile, $regcomprdb, $javaservicesurlprefix); }
- if ( $#pythoncomponents > -1 ) { $python_error_occured = register_pythoncomponents(\@pythoncomponents, $regcompfileref, $servicesfile, $includepatharrayref); }
-
- if ( $uno_error_occured || $java_error_occured || $python_error_occured ) { $registererrorflag = 1; }
-
- return $registererrorflag;
-}
-
-###################################################
-# Include the solver lib directory into
-# the LD_LIBRARY_PATH for Unix platforms
-###################################################
-
-sub include_libdir_into_ld_library_path
-{
- my ( $var, $binfile ) = @_;
-
- my $ld_library_path = $binfile;
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$ld_library_path);
- $ld_library_path =~ s/\/\s*$//; # removing ending slashes
- $ld_library_path =~ s/\/bin\./\/lib\./;
- $ld_library_path =~ s/\/bin\s*$/\/lib/; # when packing from flat
-
- my $oldldlibrarypathstring = $ENV{$var};
- my $new_ld_library_path = $ld_library_path;
- if ( defined $oldldlibrarypathstring ) {
- $new_ld_library_path = $new_ld_library_path . $installer::globals::pathseparator . $oldldlibrarypathstring;
- }
- if ( $ENV{'SYSTEM_MOZILLA'} && $ENV{'SYSTEM_MOZILLA'} eq "YES" &&
- (!$ENV{'WITH_OPENLDAP'} || $ENV{'WITH_OPENLDAP'} ne "YES")) {
- $new_ld_library_path = $new_ld_library_path . $installer::globals::pathseparator . $ENV{'MOZ_LIB'};
- }
- $ENV{$var} = $new_ld_library_path;
-
- my $infoline = "Setting $var to $ENV{$var}\n";
- push( @installer::globals::logfileinfo, $infoline);
-}
-
-##################################################################
-# Setting the needed jar files into the CLASSPATH
-# They are needed from regcomp.
-# The jar files are defined in @installer::globals::regcompjars
-##################################################################
-
-sub prepare_classpath_for_java_registration
-{
- my ( $includepatharrayref ) = @_;
- my $local_pathseparator = $installer::globals::pathseparator;
-
- if( $^O =~ /cygwin/i )
- { # $CLASSPATH must use DOS separator even when using cygwin's perl
- $local_pathseparator = ';';
- }
-
- for ( my $i = 0; $i <= $#installer::globals::regcompjars; $i++ )
- {
- my $filename = $installer::globals::regcompjars[$i];
-
- my $jarfileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$filename, $includepatharrayref, 1);
-
- if ( $$jarfileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $filename for registering java components!", "prepare_classpath_for_java_registration"); }
-
- my $oldclasspathstring = "";
- if ( $ENV{'CLASSPATH'} ) { $oldclasspathstring = $ENV{'CLASSPATH'}; }
- else { $oldclasspathstring = "\."; }
- my $classpathstring = $$jarfileref . $local_pathseparator . $oldclasspathstring;
- if ( $^O =~ /cygwin/i ) {
- $classpathstring =~ s/\//\\/g; # guw.pl likes '\' in $PATH.
- }
- $ENV{'CLASSPATH'} = $classpathstring;
-
- my $infoline = "Setting CLASSPATH to $ENV{'CLASSPATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Setting the jdk lib into the LD_LIBRARY_PATH (Unix)
-# This is used by regcomp to register Java components.
-# The jdk lib is defined in $installer::globals::jdklib
-##################################################################
-
-sub add_jdklib_into_ld_library_path
-{
- my ($var) = @_;
- if (defined $installer::globals::jdklib) {
- my $oldldlibrarypathstring = $ENV{$var};
- my $new_ld_library_path = $installer::globals::jdklib;
- if (defined $oldldlibrarypathstring) {
- $new_ld_library_path .=
- $installer::globals::pathseparator . $oldldlibrarypathstring;
- }
- $ENV{$var} = $new_ld_library_path;
- my $infoline = "Setting $var to $ENV{$var}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Adding the libraries included in zip files into path variable
-# (for example mozruntime.zip). This is needed to register all
-# libraries successfully.
-##################################################################
-
-sub add_path_to_pathvariable_directory
-{
- my ( $filesarrayref, $searchstring ) = @_;
-
- # determining the path
-
- my $path = "";
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- my $sourcepath = $onefile->{'sourcepath'};
-
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$sourcepath);
- installer::remover::remove_ending_pathseparator(\$sourcepath);
-
- if ( $sourcepath =~ /\Q$searchstring\E\s*$/ )
- {
- $path = $sourcepath;
- last;
- }
- }
-
- # adding the path to the PATH variable
-
- if ( $path ne "" )
- {
- my $oldpath = "";
- if ( $ENV{'PATH'} ) { $oldpath = $ENV{'PATH'}; }
- else { $oldpath = "\."; }
- if ( $^O =~ /cygwin/i ) {
- $path = qx(cygpath -u "$path");
- chomp $path;
- }
- my $newpath = $path . $installer::globals::pathseparator . $oldpath;
- $ENV{'PATH'} = $newpath;
-
- my $infoline = "Setting PATH to $ENV{'PATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Adding the path of a specified library to the path variable
-# (for example msvcr70.dll). This is needed to register all
-# libraries successfully.
-##################################################################
-
-sub add_path_to_pathvariable
-{
- my ( $filesarrayref, $searchstring ) = @_;
-
- # determining the path
-
- my $path = "";
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- my $sourcepath = $onefile->{'sourcepath'};
-
- if ( $sourcepath =~ /\Q$searchstring\E\s*$/ )
- {
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$sourcepath);
- installer::remover::remove_ending_pathseparator(\$sourcepath);
- $path = $sourcepath;
- last;
- }
- }
-
- # adding the path to the PATH variable
-
- if ( $path ne "" )
- {
- my $oldpath = "";
- if ( $ENV{'PATH'} ) { $oldpath = $ENV{'PATH'}; }
- else { $oldpath = "\."; }
- if ( $^O =~ /cygwin/i ) {
- $path = qx(cygpath -u "$path");
- chomp $path;
- }
- my $newpath = $path . $installer::globals::pathseparator . $oldpath;
- $ENV{'PATH'} = $newpath;
-
- my $infoline = "Setting PATH to $ENV{'PATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Setting the jre path into the PATH (Windows only)
-# This is used by regcomp.exe to register Java components.
-# The jre path is saved in $installer::globals::jrepath
-##################################################################
-
-sub add_jrepath_into_path
-{
- my $oldpath = "";
- if ( $ENV{'PATH'} ) { $oldpath = $ENV{'PATH'}; }
- else { $oldpath = "\."; }
-
- if ( $installer::globals::jrepath ne "" )
- {
- my $newpath = $installer::globals::jrepath . $installer::globals::pathseparator . $oldpath;
- $ENV{'PATH'} = $newpath;
-
- my $infoline = "Setting PATH to $ENV{'PATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-#######################################################################################
-# Preparing a registry "regcomp.rdb" which regcomp can work on (types+java services).
-# Copying the "udkapi.rdb", renaming it to "regcomp.rdb" and registering the
-# libraries @installer::globals::regcompregisterlibs, which are javavm.uno.so
-# and javaloader.uno.so or javavm.uno.dll and javaloader.uno.dll
-#######################################################################################
-
-sub prepare_regcomp_rdb
-{
- my ( $regcompfile, $servicesdir, $includepatharrayref) = @_;
-
- # udkapi.rdb has to be found in the sourcepath
-
- my $filename = "udkapi.rdb";
- my $udkapirdbref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$filename, $includepatharrayref, 1);
- if ( $$udkapirdbref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $filename for creating regcomp.rdb!", "prepare_regcomp_rdb"); }
-
- my $regcompfilename = "regcomp.rdb";
- my $regcomprdb = $servicesdir . $installer::globals::separator . $regcompfilename;
-
- # If there is an older version of this file, it has to be removed
- if ( -f $regcomprdb ) { unlink($regcomprdb); }
-
- installer::systemactions::copy_one_file($$udkapirdbref, $regcomprdb);
-
- # now the libraries in @installer::globals::regcompregisterlibs can be registered in the "regcomp.rdb"
-
- for ( my $i = 0; $i <= $#installer::globals::regcompregisterlibs; $i++ )
- {
- my $libfilename = $installer::globals::regcompregisterlibs[$i] . $installer::globals::libextension;
- my $libfileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$libfilename, $includepatharrayref, 1);
- if ( $$libfileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $libfilename for creating regcomp.rdb!", "prepare_regcomp_rdb"); }
-
- my $from = cwd();
- if ( $installer::globals::iswin ) { $from =~ s/\//\\/g; }
-
- my $to = $$libfileref;
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$to);
-
- chdir($to);
-
- my $systemcall = "$installer::globals::wrapcmd $regcompfile -register -s -r " . fix_cygwin_path($regcomprdb) . " -c $libfilename";
-
- my $returnvalue = system($systemcall);
-
- chdir($from);
-
- my $infoline;
- if ($returnvalue) { $infoline = "ERROR: $systemcall\n"; }
- else { $infoline = "SUCCESS: $systemcall\n"; }
-
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- return $regcomprdb;
-}
-
-################################################################
-# Collecting all gids of the databases, that are part of
-# the file definition
-################################################################
-
-sub collect_all_services_gids
-{
- my ($filesarrayref) = @_;
-
- my @databasegids = ();
- my $error_occured = 0;
- my @error_files = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
-
- if ( $onefile->{'RegistryID'} )
- {
- my $databasegid = $onefile->{'RegistryID'};
- if (! installer::existence::exists_in_array($databasegid, \@databasegids)) { push(@databasegids, $databasegid); }
- }
- else
- {
- push(@error_files, $onefile->{'gid'});
- $error_occured = 1;
- }
- }
-
- if ( $error_occured )
- {
- my $infoline = "ERROR: Style UNO_COMPONENT is set, but no RegistryID is assigned!\n";
- push( @installer::globals::logfileinfo, $infoline);
- print $infoline;
-
- for ( my $j = 0; $j <= $#error_files; $j++ )
- {
- $infoline = "$error_files[$j]\n";
- push( @installer::globals::logfileinfo, $infoline);
- print $infoline;
- }
-
- installer::exiter::exit_program("ERROR: File defintion error.", "collect_all_services_gids");
- }
-
- return \@databasegids;
-}
-
-######################################################################
-# All gids in $databasegids are as RegistryID assigned to files.
-# For all this Registry Files a definition has to exist.
-######################################################################
-
-sub check_defintion_of_databasegids
-{
- my ($databasegids, $registryfiles) = @_;
-
- my @registryfiles = ();
-
- # First check: For all assigned Registry files, a definition of
- # a file with flag STARREGISTRY has to exist.
-
- for ( my $i = 0; $i <= $#{$databasegids}; $i++ )
- {
- my $onegid = ${$databasegids}[$i];
- my $gid_defined = 0;
-
- for ( my $j = 0; $j <= $#{$registryfiles}; $j++ )
- {
- my $registrygid = ${$registryfiles}[$j]->{'gid'};
-
- if ( $onegid eq $registrygid )
- {
- $gid_defined = 1;
- last;
- }
- }
-
- if ( ! $gid_defined )
- {
- installer::exiter::exit_program("ERROR: Gid $onegid is assigned to file(s), but not defined!", "check_defintion_of_databasegids");
- }
- }
-
- # Second check: If there is a file defined as StarRegistry, is a file with flag UNO_COMPONENT assigned?
-
- for ( my $j = 0; $j <= $#{$registryfiles}; $j++ )
- {
- my $onefile = ${$registryfiles}[$j];
- my $registrygid = $onefile->{'gid'};
-
- my $gid_assigned = 0;
-
- for ( my $i = 0; $i <= $#{$databasegids}; $i++ )
- {
- my $onegid = ${$databasegids}[$i];
-
- if ( $onegid eq $registrygid )
- {
- $gid_assigned = 1;
- last;
- }
- }
-
- if ( ! $gid_assigned )
- {
- my $infoline = "Warning: $registrygid is defined with flag STARREGISTRY, but no file is assigned to the registry.\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- else
- {
- push(@registryfiles, $onefile);
- }
- }
-
- return \@registryfiles;
-}
-
-################################################################
-# Some files have flag UNO_COMPONENT, but are not registered
-# with regcomp. This files use the regmerge mechanism, that
-# is not used in this perl-file. Therefore this files
-# have to be filtered out here.
-################################################################
-
-sub filter_regmergefiles
-{
- my ($unocomponentfiles) = @_;
-
- my @regcompfiles = ();
-
- for ( my $i = 0; $i <= $#{$unocomponentfiles}; $i++ )
- {
- my $onefile = ${$unocomponentfiles}[$i];
- my $regmergefile = "";
-
- if ( $onefile->{'Regmergefile'} ) { $regmergefile = $onefile->{'Regmergefile'}; }
- if ( $regmergefile ne "" ) { next; }
-
- push(@regcompfiles, $onefile);
- }
-
- return \@regcompfiles;
-}
-
-################################################################
-# Setting defaults for Creating services.rdb file by registering all uno components
-################################################################
-
-sub set_url_prefixes
-{
- my ( $registryfile ) = @_;
-
- my $nativeservicesurlprefix = "";
- my $javaservicesurlprefix = "";
-
- if ( $registryfile->{'NativeServicesURLPrefix'} ) { $nativeservicesurlprefix = $registryfile->{'NativeServicesURLPrefix'}; }
- else { $nativeservicesurlprefix = "vnd.sun.star.expand:\$ORIGIN/"; }
-
- if ( $registryfile->{'JavaServicesURLPrefix'} ) { $javaservicesurlprefix = $registryfile->{'JavaServicesURLPrefix'}; }
- else { $javaservicesurlprefix = "vnd.sun.star.expand:\$UNO_JAVA_COMPONENT_PATH/"; }
-
- return ($nativeservicesurlprefix, $javaservicesurlprefix);
-}
-
-################################################################
-# Creating services.rdb file by registering all uno components
-################################################################
-
-sub create_services_rdb
-{
- my ($allvariableshashref, $filesarrayref, $includepatharrayref, $languagestringref) = @_;
-
- # collecting all services files
- my $unocomponentfiles = installer::worker::collect_all_items_with_special_flag($filesarrayref, "UNO_COMPONENT");
- $unocomponentfiles = filter_regmergefiles($unocomponentfiles);
-
- if ( $#{$unocomponentfiles} > -1 ) # not empty -> at least one file with flag UNO_COMPONENT
- {
- my $databasegids = collect_all_services_gids($unocomponentfiles);
-
- my $registryfiles = installer::worker::collect_all_items_with_special_flag($filesarrayref, "STARREGISTRY");
-
- $registryfiles = check_defintion_of_databasegids($databasegids, $registryfiles);
-
- # Now the creation of all files with flag STARREGISTRY can begin
-
- for ( my $i = 0; $i <= $#{$registryfiles}; $i++ )
- {
- my $registryfile = ${$registryfiles}[$i];
-
- # my $servicesname = "services.rdb";
- my $servicesname = $registryfile->{'Name'}; # not unique!
- my $servicesgid = $registryfile->{'gid'}; # unique
- my $uniquedirname = $servicesgid . "_servicesrdb";
- # my $uniquedirname = $servicesgid;
-
- my ($nativeservicesurlprefix, $javaservicesurlprefix) = set_url_prefixes($registryfile);
-
- installer::logger::include_header_into_logfile("Creating $servicesname ($servicesgid):");
-
- # my $servicesdir = installer::systemactions::create_directories($servicesname, $languagestringref);
- my $servicesdir = installer::systemactions::create_directories($uniquedirname, $languagestringref);
-
-# if ( $^O =~ /cygwin/i )
-# { # $servicesdir is used as a parameter for regcomp and has to be DOS style
-# $servicesdir = qx{cygpath -d "$servicesdir"};
-# chomp($servicesdir);
-# $servicesdir =~ s/\\/\//g;
-# }
-
- push(@installer::globals::removedirs, $servicesdir);
-
- my $servicesfile = $servicesdir . $installer::globals::separator . $servicesname;
-
- # If there is an older version of this file, it has to be removed
- if ( -f $servicesfile ) { unlink($servicesfile); }
-
- # if ((-f $servicesfile) && (!($installer::globals::services_rdb_created))) { $installer::globals::services_rdb_created = 1; }
- # if ((!($installer::globals::services_rdb_created)) && $installer::globals::servicesrdb_can_be_created ) # This has to be done once
- if ( $installer::globals::servicesrdb_can_be_created ) # This has to be done always
- {
- # Creating the services.rdb in directory "inprogress"
- my $origservicesdir = $servicesdir;
- $servicesdir = installer::systemactions::make_numbered_dir("inprogress", $servicesdir);
- $servicesfile = $servicesdir . $installer::globals::separator . $servicesname;
-
- # determining the location of the file regcomp
- # Because the program regcomp.exe (regcomp) is used now, it has to be taken the version
- # from the platform, this script is running. It is not important, for which platform the
- # product is built.
-
- my $searchname;
-
- if ($installer::globals::isunix) { $searchname = "regcomp"; }
- else { $searchname = "regcomp.exe"; }
-
- $regcompfileref = get_source_path_cygwin_safe($searchname, $includepatharrayref, 1);
- if ( $$regcompfileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $searchname for registering uno components!", "create_services_rdb"); }
-
- # For Windows the libraries included into the mozruntime.zip have to be added to the path
- if ($installer::globals::iswin) { add_path_to_pathvariable_directory($filesarrayref, "mozruntime_zip"); }
- if ($installer::globals::iswin) { add_path_to_pathvariable($filesarrayref, "msvcr70.dll"); }
-
- # setting the LD_LIBRARY_PATH, needed by regcomp
- # Linux: Take care of the lock daemon. He has to be started!
- # For windows it is necessary that "msvcp7x.dll" and "msvcr7x.dll" are included into the path !
-
- my $var_library_path;
- my $old_library_path;
- if ( $installer::globals::isunix ) {
- $var_library_path = $installer::globals::ismacosx ?
- 'DYLD_LIBRARY_PATH' : 'LD_LIBRARY_PATH';
- $old_library_path = $ENV{$var_library_path};
- include_libdir_into_ld_library_path(
- $var_library_path, $$regcompfileref);
- }
-
- my $regcomprdb = "";
-
- if ( $installer::globals::solarjava ) # this is needed to register Java components
- {
- prepare_classpath_for_java_registration($includepatharrayref);
-
- if ( $installer::globals::isunix )
- { add_jdklib_into_ld_library_path($var_library_path); }
- else { add_jrepath_into_path(); }
-
- # Preparing a registry which regcomp can work on (types+java services).
- # Copying the "udkapi.rdb", renaming it to "regcomp.rdb" and registering the
- # libraries $(REGISTERLIBS_JAVA), which are javavm.uno.so and javaloader.uno.so
- # or javavm.uno.dll and javaloader.uno.dll
-
- $regcomprdb = prepare_regcomp_rdb($$regcompfileref, $servicesdir, $includepatharrayref);
- }
-
- # and now iteration over all files
-
- # my $error_during_registration = register_all_components($filesarrayref, $regcompfileref, $servicesfile, $regcomprdb, $includepatharrayref);
- my $error_during_registration = register_all_components($allvariableshashref, $servicesgid, $unocomponentfiles, $regcompfileref, $servicesfile, $regcomprdb, $includepatharrayref, $nativeservicesurlprefix, $javaservicesurlprefix);
-
- if (defined $var_library_path) {
- if (defined $old_library_path) {
- $ENV{$var_library_path} = $old_library_path;
- } else {
- delete $ENV{$var_library_path};
- }
- }
-
- # Dependent from the success, the registration directory can be renamed.
-
- if ( $error_during_registration )
- {
- $servicesdir = installer::systemactions::rename_string_in_directory($servicesdir, "inprogress", "witherror");
- push(@installer::globals::removedirs, $servicesdir);
- # and exiting the packaging process
- installer::exiter::exit_program("ERROR: Could not register all components for file $servicesname ($servicesgid)!", "create_services_rdb");
- }
- else
- {
- $servicesdir = installer::systemactions::rename_directory($servicesdir, $origservicesdir);
- }
-
- $servicesfile = $servicesdir . $installer::globals::separator . $servicesname;
- }
- else
- {
- my $infoline;
-
- if (!($installer::globals::servicesrdb_can_be_created))
- {
- $infoline = "Warning: $servicesname was not created. Build platform and compiler do not match. Build platform: $installer::globals::plat, compiler : $installer::globals::compiler\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- if ( $installer::globals::services_rdb_created )
- {
- $infoline = "Info: $servicesname was not created. $servicesfile already exists.\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- if ((!($installer::globals::servicesrdb_can_be_created)) && (!($installer::globals::services_rdb_created)))
- {
- $infoline = "ERROR: $servicesname was not created and does not exist!\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- }
-
- # Adding the new services file source path to the filearray
- $registryfile->{'sourcepath'} = $servicesfile; # setting the sourcepath!
- # add_services_sourcepath_into_filearray( $filesarrayref, $servicesfile, $servicesname );
- }
- }
-
- # Setting the global variable $installer::globals::services_rdb_created
-
- $installer::globals::services_rdb_created = 1;
-}
-
-1;
diff --git a/solenv/bin/modules/par2script/check.pm b/solenv/bin/modules/par2script/check.pm
index 7a975f530445..78808cee9191 100644
--- a/solenv/bin/modules/par2script/check.pm
+++ b/solenv/bin/modules/par2script/check.pm
@@ -139,55 +139,6 @@ sub check_module_existence
}
########################################################
-# If the StarRegistry is not defined in the script,
-# it has to be removed from the file definition.
-########################################################
-
-sub check_registry_at_files
-{
- my %starregistrygid = ();
-
- my $item;
- foreach $item ( keys %{$par2script::globals::definitions{'File'}} )
- {
- if (( exists($par2script::globals::definitions{'File'}->{$item}->{'Styles'}) ) &&
- ( $par2script::globals::definitions{'File'}->{$item}->{'Styles'} =~ /\bSTARREGISTRY\b/ ))
- {
- $starregistrygid{$item} = 1;
- }
- }
-
- foreach $item ( keys %{$par2script::globals::definitions{'File'}} )
- {
- if ( exists($par2script::globals::definitions{'File'}->{$item}->{'RegistryID'}) )
- {
- my $registryid = $par2script::globals::definitions{'File'}->{$item}->{'RegistryID'};
- if ( ! exists($starregistrygid{$registryid}) )
- {
- die "\nERROR: No definition found for $registryid at file $item\n\n";
- }
-
- # if ( ! ( $par2script::globals::definitions{'File'}->{$item}->{'Styles'} =~ /\bUNO_COMPONENT\b/ ))
- # {
- # die "\nERROR: Flag UNO_COMPONENT required for file $item\n\n";
- # }
- # -> also possible, that Regmergefile is defined (does not require flag UNO_COMPONENT)
- }
-
- # and also vice versa
-
- if (( exists($par2script::globals::definitions{'File'}->{$item}->{'Styles'}) ) &&
- ( $par2script::globals::definitions{'File'}->{$item}->{'Styles'} =~ /\bUNO_COMPONENT\b/ ))
- {
- if ( ! exists($par2script::globals::definitions{'File'}->{$item}->{'RegistryID'}) )
- {
- die "\nERROR: Flag UNO_COMPONENT defined, but no file as \"RegistryID\" at file $item !\n\n";
- }
- }
- }
-}
-
-########################################################
# Every script has to contain exactly one root module.
# This module has no ParentID or an empty ParentID.
########################################################
diff --git a/solenv/bin/packcomponents.xslt b/solenv/bin/packcomponents.xslt
new file mode 100644
index 000000000000..6e037a677f73
--- /dev/null
+++ b/solenv/bin/packcomponents.xslt
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:uc="http://openoffice.org/2010/uno-components">
+ <xsl:param name="prefix"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:template match="/">
+ <xsl:element name="components"
+ namespace="http://openoffice.org/2010/uno-components">
+ <xsl:for-each select="list/filename">
+ <xsl:variable name="doc" select="document(concat($prefix, .))"/>
+ <xsl:choose>
+ <xsl:when test="count($doc/uc:component) = 1">
+ <xsl:copy-of select="$doc/uc:component"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>cannot process </xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/solenv/bin/par2script.pl b/solenv/bin/par2script.pl
index 0789c460d510..06928ad68439 100644
--- a/solenv/bin/par2script.pl
+++ b/solenv/bin/par2script.pl
@@ -86,8 +86,6 @@ print "Checking module definitions ...\n";
par2script::check::check_module_existence();
print "Checking module assignments ...\n";
par2script::check::check_moduleid_at_items();
-print "Checking StarRegistry ...\n";
-par2script::check::check_registry_at_files();
print "Checking Root Module ...";
par2script::check::check_rootmodule();
print "Checking Shortcut assignments ...\n";
diff --git a/solenv/bin/subsequenttests b/solenv/bin/subsequenttests
index 3caa84293f3e..8b52f45a6b12 100755
--- a/solenv/bin/subsequenttests
+++ b/solenv/bin/subsequenttests
@@ -30,6 +30,8 @@ eval 'exec "$PERL" -Sw "$0" "$@"'
use lib("$ENV{SOLARENV}/bin/modules");
use SourceConfig;
+my $keep_going = 0;
+my $dry_run = 0;
my $max_running = 1;
while (@ARGV) {
my $arg = shift(@ARGV);
@@ -38,11 +40,29 @@ while (@ARGV) {
} elsif ($arg eq '--') {
last;
} else {
- print STDERR "unknown argument \"$arg\"\n";
- print STDERR "usage: $0 [-P<n>] [-- <args>]\n";
- print STDERR " -P<n> number of parallel dmake invocations\n";
- print STDERR " <args> are passed to dmake invocations\n";
- exit(1);
+ my $n = substr($arg, 0, 1) eq '-' ? 1 : 0;
+ while ($n && $n < length($arg)) {
+ my $c = substr($arg, $n++, 1);
+ if ($c eq 'k') {
+ $keep_going = 1;
+ } elsif ($c eq 'n') {
+ $dry_run = 1;
+ } else {
+ $n = 0;
+ last;
+ }
+ }
+ if (!$n) {
+ print STDERR "unknown argument \"$arg\"\n";
+ print STDERR "usage: $0 [-kn] [-P<n>] [-- <args>]\n";
+ print STDERR " -k continue with other dmake invocations upon\n";
+ print STDERR " failure\n";
+ print STDERR " -n write directories that would be processed\n";
+ print STDERR " to standard output\n";
+ print STDERR " -P<n> number of parallel dmake invocations\n";
+ print STDERR " <args> are passed to dmake invocations\n";
+ exit(1);
+ }
}
}
@@ -82,6 +102,13 @@ foreach $module ($sc->get_active_modules()) {
}
}
+if ($dry_run) {
+ foreach $path (@testpaths) {
+ print "$path\n";
+ }
+ exit(0);
+}
+
my $cmd = 'dmake';
foreach (@ARGV) {
s/'/'\''/g;
@@ -119,8 +146,8 @@ while (@testpaths || $running > 0) {
my $testpath = delete($pids{$pid});
defined($testpath) or die("unmatched PID $pid");
if ($? != 0) {
- @testpaths = ();
push(@failedpaths, $testpath);
+ @testpaths = () unless $keep_going;
}
--$running;
}