[Libreoffice-commits] .: 10 commits - solenv/bin

Michael Meeks michael at kemper.freedesktop.org
Sat Feb 18 01:46:24 PST 2012


 solenv/bin/make_installer.pl                             |    2 
 solenv/bin/modules/installer/archivefiles.pm             |    9 
 solenv/bin/modules/installer/epmfile.pm                  |    3 
 solenv/bin/modules/installer/existence.pm                |  140 ---------------
 solenv/bin/modules/installer/helppack.pm                 |    1 
 solenv/bin/modules/installer/languagepack.pm             |    1 
 solenv/bin/modules/installer/languages.pm                |    3 
 solenv/bin/modules/installer/profiles.pm                 |    8 
 solenv/bin/modules/installer/scriptitems.pm              |    7 
 solenv/bin/modules/installer/setupscript.pm              |   42 ++--
 solenv/bin/modules/installer/strip.pm                    |    3 
 solenv/bin/modules/installer/systemactions.pm            |    2 
 solenv/bin/modules/installer/windows/binary.pm           |    1 
 solenv/bin/modules/installer/windows/component.pm        |    3 
 solenv/bin/modules/installer/windows/createfolder.pm     |   11 -
 solenv/bin/modules/installer/windows/feature.pm          |    3 
 solenv/bin/modules/installer/windows/featurecomponent.pm |    5 
 solenv/bin/modules/installer/windows/file.pm             |    7 
 solenv/bin/modules/installer/windows/idtglobal.pm        |    1 
 solenv/bin/modules/installer/windows/inifile.pm          |    7 
 solenv/bin/modules/installer/windows/registry.pm         |    2 
 solenv/bin/modules/installer/windows/removefile.pm       |    2 
 solenv/bin/modules/installer/windows/shortcut.pm         |    5 
 solenv/bin/modules/installer/windows/sign.pm             |    1 
 solenv/bin/modules/installer/windows/strip.pm            |    3 
 solenv/bin/modules/installer/worker.pm                   |   14 +
 solenv/bin/modules/installer/xpdinstaller.pm             |    6 
 solenv/bin/modules/installer/ziplist.pm                  |    3 
 solenv/bin/modules/packager/existence.pm                 |   52 -----
 solenv/bin/modules/packager/work.pm                      |   88 ++-------
 solenv/bin/modules/par2script/existence.pm               |   74 -------
 solenv/bin/modules/par2script/work.pm                    |    1 
 solenv/bin/modules/pre2par/existence.pm                  |   74 -------
 solenv/bin/modules/pre2par/language.pm                   |    1 
 solenv/bin/modules/t/installer-setupscript.t             |   76 ++++++++
 solenv/bin/modules/t/packager-work.t                     |   62 ++++++
 36 files changed, 245 insertions(+), 478 deletions(-)

New commits:
commit 1994b8c1d169b02a92c3d8c582d5c161e96ea6d0
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 23:03:29 2012 +0000

    Remove installer::existence.

diff --git a/solenv/bin/modules/installer/archivefiles.pm b/solenv/bin/modules/installer/archivefiles.pm
index a81b0f6..8d682e4 100644
--- a/solenv/bin/modules/installer/archivefiles.pm
+++ b/solenv/bin/modules/installer/archivefiles.pm
@@ -29,7 +29,6 @@ package installer::archivefiles;
 
 use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/epmfile.pm b/solenv/bin/modules/installer/epmfile.pm
index 6a91fb4..1ec035c 100644
--- a/solenv/bin/modules/installer/epmfile.pm
+++ b/solenv/bin/modules/installer/epmfile.pm
@@ -29,7 +29,6 @@ package installer::epmfile;
 
 use Cwd;
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/existence.pm b/solenv/bin/modules/installer/existence.pm
deleted file mode 100644
index cb9ab1d..0000000
--- a/solenv/bin/modules/installer/existence.pm
+++ /dev/null
@@ -1,30 +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::existence;
-
-1;
diff --git a/solenv/bin/modules/installer/helppack.pm b/solenv/bin/modules/installer/helppack.pm
index e4fad37..977b0ba 100644
--- a/solenv/bin/modules/installer/helppack.pm
+++ b/solenv/bin/modules/installer/helppack.pm
@@ -28,7 +28,6 @@
 package installer::helppack;
 
 use installer::converter;
-use installer::existence;
 use installer::files;
 use installer::globals;
 use installer::logger;
diff --git a/solenv/bin/modules/installer/languagepack.pm b/solenv/bin/modules/installer/languagepack.pm
index 9c8e16c..1bfcd8a 100644
--- a/solenv/bin/modules/installer/languagepack.pm
+++ b/solenv/bin/modules/installer/languagepack.pm
@@ -28,7 +28,6 @@
 package installer::languagepack;
 
 use installer::converter;
-use installer::existence;
 use installer::files;
 use installer::globals;
 use installer::logger;
diff --git a/solenv/bin/modules/installer/languages.pm b/solenv/bin/modules/installer/languages.pm
index b6bf0a1..757ea9d 100644
--- a/solenv/bin/modules/installer/languages.pm
+++ b/solenv/bin/modules/installer/languages.pm
@@ -28,7 +28,6 @@
 package installer::languages;
 
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::globals;
 use installer::remover;
diff --git a/solenv/bin/modules/installer/profiles.pm b/solenv/bin/modules/installer/profiles.pm
index 156796e..fba586b 100644
--- a/solenv/bin/modules/installer/profiles.pm
+++ b/solenv/bin/modules/installer/profiles.pm
@@ -28,7 +28,6 @@
 package installer::profiles;
 
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm
index 67db9ef..ac678be 100644
--- a/solenv/bin/modules/installer/scriptitems.pm
+++ b/solenv/bin/modules/installer/scriptitems.pm
@@ -28,7 +28,6 @@
 package installer::scriptitems;
 
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::globals;
 use installer::languages;
diff --git a/solenv/bin/modules/installer/strip.pm b/solenv/bin/modules/installer/strip.pm
index 777b773..154f39b 100644
--- a/solenv/bin/modules/installer/strip.pm
+++ b/solenv/bin/modules/installer/strip.pm
@@ -28,7 +28,6 @@
 package installer::strip;
 
 use installer::converter;
-use installer::existence;
 use installer::globals;
 use installer::logger;
 use installer::pathanalyzer;
diff --git a/solenv/bin/modules/installer/windows/binary.pm b/solenv/bin/modules/installer/windows/binary.pm
index 96ee50e..bc5eeaf 100644
--- a/solenv/bin/modules/installer/windows/binary.pm
+++ b/solenv/bin/modules/installer/windows/binary.pm
@@ -27,7 +27,6 @@
 
 package installer::windows::binary;
 
-use installer::existence;
 use installer::files;
 use installer::globals;
 
diff --git a/solenv/bin/modules/installer/windows/component.pm b/solenv/bin/modules/installer/windows/component.pm
index 7a23080..7238260 100644
--- a/solenv/bin/modules/installer/windows/component.pm
+++ b/solenv/bin/modules/installer/windows/component.pm
@@ -28,7 +28,6 @@
 package installer::windows::component;
 
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/createfolder.pm b/solenv/bin/modules/installer/windows/createfolder.pm
index ab1c4f7..5f42ee7 100644
--- a/solenv/bin/modules/installer/windows/createfolder.pm
+++ b/solenv/bin/modules/installer/windows/createfolder.pm
@@ -27,7 +27,6 @@
 
 package installer::windows::createfolder;
 
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/feature.pm b/solenv/bin/modules/installer/windows/feature.pm
index dbc0efa..80f7954 100644
--- a/solenv/bin/modules/installer/windows/feature.pm
+++ b/solenv/bin/modules/installer/windows/feature.pm
@@ -27,7 +27,6 @@
 
 package installer::windows::feature;
 
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/featurecomponent.pm b/solenv/bin/modules/installer/windows/featurecomponent.pm
index 1079218..580630f 100644
--- a/solenv/bin/modules/installer/windows/featurecomponent.pm
+++ b/solenv/bin/modules/installer/windows/featurecomponent.pm
@@ -28,7 +28,6 @@
 package installer::windows::featurecomponent;
 
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/file.pm b/solenv/bin/modules/installer/windows/file.pm
index a0dee6c..100bf9a 100644
--- a/solenv/bin/modules/installer/windows/file.pm
+++ b/solenv/bin/modules/installer/windows/file.pm
@@ -28,7 +28,6 @@
 package installer::windows::file;
 
 use Digest::MD5;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm
index 76e4988..baa4e77 100644
--- a/solenv/bin/modules/installer/windows/idtglobal.pm
+++ b/solenv/bin/modules/installer/windows/idtglobal.pm
@@ -29,7 +29,6 @@ package installer::windows::idtglobal;
 
 use Cwd;
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/inifile.pm b/solenv/bin/modules/installer/windows/inifile.pm
index 9afe6cd..d13fafc 100644
--- a/solenv/bin/modules/installer/windows/inifile.pm
+++ b/solenv/bin/modules/installer/windows/inifile.pm
@@ -27,7 +27,6 @@
 
 package installer::windows::inifile;
 
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/shortcut.pm b/solenv/bin/modules/installer/windows/shortcut.pm
index cef5020..4b7ff36 100644
--- a/solenv/bin/modules/installer/windows/shortcut.pm
+++ b/solenv/bin/modules/installer/windows/shortcut.pm
@@ -27,7 +27,6 @@
 
 package installer::windows::shortcut;
 
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/windows/sign.pm b/solenv/bin/modules/installer/windows/sign.pm
index 8fb7b3f..a874fa6 100644
--- a/solenv/bin/modules/installer/windows/sign.pm
+++ b/solenv/bin/modules/installer/windows/sign.pm
@@ -29,7 +29,6 @@ package installer::windows::sign;
 
 use Cwd;
 use installer::converter;
-use installer::existence;
 use installer::files;
 use installer::globals;
 use installer::scriptitems;
diff --git a/solenv/bin/modules/installer/windows/strip.pm b/solenv/bin/modules/installer/windows/strip.pm
index 6f9f983..8cccba1 100644
--- a/solenv/bin/modules/installer/windows/strip.pm
+++ b/solenv/bin/modules/installer/windows/strip.pm
@@ -29,7 +29,6 @@ package installer::windows::strip;
 
 use File::Temp qw(tmpnam);
 use installer::converter;
-use installer::existence;
 use installer::globals;
 use installer::logger;
 use installer::pathanalyzer;
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index 13089d5..1d3d19a 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -34,7 +34,6 @@ use File::Temp qw(tmpnam);
 use File::Path;
 use installer::control;
 use installer::converter;
-use installer::existence;
 use installer::exiter;
 use installer::files;
 use installer::globals;
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index d513741..5ee0bb6 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -27,7 +27,6 @@
 
 package installer::ziplist;
 
-use installer::existence;
 use installer::exiter;
 use installer::globals;
 use installer::logger;
commit 26f3aaa28c03baa898030cb894f9a3ad7f1cb10d
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 23:01:27 2012 +0000

    Remove installer::existence::get_specified_file.

diff --git a/solenv/bin/modules/installer/existence.pm b/solenv/bin/modules/installer/existence.pm
index 95ba40d..cb9ab1d 100644
--- a/solenv/bin/modules/installer/existence.pm
+++ b/solenv/bin/modules/installer/existence.pm
@@ -27,40 +27,4 @@
 
 package installer::existence;
 
-#####################################################################
-# Returning a specified file as base for the new
-# configuration file, defined by its "gid"
-#####################################################################
-
-sub get_specified_file
-{
-    my ($filesarrayref, $searchgid) = @_;
-
-    my $foundfile = 0;
-    my $onefile;
-
-    for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
-    {
-        $onefile = ${$filesarrayref}[$i];
-        my $filegid = $onefile->{'gid'};
-
-        if ( $filegid eq $searchgid )
-        {
-            $foundfile = 1;
-            last;
-        }
-    }
-
-    my $errorline = "ERROR: Could not find file $searchgid in list of files!";
-
-    if ( $installer::globals::patch) { $errorline = "ERROR: Could not find file $searchgid in list of files! intro.bmp must be part of every patch. Please assign the flag PATCH in scp2 project."; }
-
-    if (!($foundfile))
-    {
-        installer::exiter::exit_program($errorline, "get_specified_file");
-    }
-
-    return $onefile;
-}
-
 1;
diff --git a/solenv/bin/modules/installer/profiles.pm b/solenv/bin/modules/installer/profiles.pm
index 22e18e6..156796e 100644
--- a/solenv/bin/modules/installer/profiles.pm
+++ b/solenv/bin/modules/installer/profiles.pm
@@ -97,7 +97,10 @@ sub add_profile_into_filelist
 
     my $vclgid = "gid_File_Lib_Vcl";
     if ( $allvariables->{'GLOBALFILEGID'} ) { $vclgid = $allvariables->{'GLOBALFILEGID'}; }
-    my $vclfile = installer::existence::get_specified_file($filesarrayref, $vclgid);
+    my ($vclfile) = grep {$_->{gid} eq $vclgid} @{$filesarrayref};
+    if (! defined $vclfile) {
+        installer::exiter::exit_program("ERROR: Could not find file $vclgid in list of files!", "add_profile_into_filelist");
+    }
 
     # copying all base data
     installer::converter::copy_item_object($vclfile, \%profile);
diff --git a/solenv/bin/modules/installer/windows/createfolder.pm b/solenv/bin/modules/installer/windows/createfolder.pm
index cc3d87e..ab1c4f7 100644
--- a/solenv/bin/modules/installer/windows/createfolder.pm
+++ b/solenv/bin/modules/installer/windows/createfolder.pm
@@ -94,10 +94,14 @@ sub get_createfolder_component
     my $globalfilegid = $allvariableshashref->{'GLOBALFILEGID'};
     if ( $installer::globals::patch ) { $globalfilegid = $allvariableshashref->{'GLOBALPATCHFILEGID'}; }
 
-    my $onefile = "";
+    my $onefile;
     if ( $installer::globals::languagepack ) { $onefile = get_languagepack_file($filesref, $onedir); }
-    elsif ( $installer::globals::helppack ) { $onefile = installer::existence::get_specified_file($filesref, 'gid_File_Help_Common_Zip'); }
-    else { $onefile = installer::existence::get_specified_file($filesref, $globalfilegid); }
+    elsif ( $installer::globals::helppack ) { ($onefile) = grep {$_->{gid} eq 'gid_File_Help_Common_Zip'} @{$filesref} }
+    else { ($onefile) = grep {$_->{gid} eq $globalfilegid} @{$filesref} }
+
+    if (! defined $onefile) {
+        installer::exiter::exit_program("ERROR: Could not find file!", "get_createfolder_component");
+    }
 
     return $onefile->{'componentname'};
 }
diff --git a/solenv/bin/modules/installer/windows/file.pm b/solenv/bin/modules/installer/windows/file.pm
index 044a1af..a0dee6c 100644
--- a/solenv/bin/modules/installer/windows/file.pm
+++ b/solenv/bin/modules/installer/windows/file.pm
@@ -358,7 +358,11 @@ sub get_component_from_assigned_file
 {
     my ($gid, $filesref) = @_;
 
-    my $onefile = installer::existence::get_specified_file($filesref, $gid);
+    my ($onefile) = grep {$_->{gid} eq $gid} @{$filesref};
+    if (! defined $onefile) {
+        installer::exiter::exit_program("ERROR: Could not find file $gid in list of files!", "get_component_from_assigned_file");
+    }
+
     my $componentname = "";
     if ( $onefile->{'componentname'} ) { $componentname = $onefile->{'componentname'}; }
     else { installer::exiter::exit_program("ERROR: No component defined for file: $gid", "get_component_from_assigned_file"); }
diff --git a/solenv/bin/modules/installer/windows/inifile.pm b/solenv/bin/modules/installer/windows/inifile.pm
index de279da..9afe6cd 100644
--- a/solenv/bin/modules/installer/windows/inifile.pm
+++ b/solenv/bin/modules/installer/windows/inifile.pm
@@ -28,6 +28,7 @@
 package installer::windows::inifile;
 
 use installer::existence;
+use installer::exiter;
 use installer::files;
 use installer::globals;
 use installer::windows::idtglobal;
@@ -40,7 +41,10 @@ sub get_profile_for_profileitem
 {
     my ($profileid, $filesref) = @_;
 
-    my $profile = installer::existence::get_specified_file($filesref, $profileid);
+    my ($profile) = grep {$_->{gid} eq $profileid} @{$filesref};
+    if (! defined $profile) {
+        installer::exiter::exit_program("ERROR: Could not find file $profileid in list of files!", "get_profile_for_profileitem");
+    }
 
     return $profile;
 }
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index 6592d08..13089d5 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -718,7 +718,11 @@ sub write_content_into_inf_file
             replace_in_template_file($templatefile, $placeholder, $tooltip);
 
             my $executablegid = $folderitem->{'FileID'};
-            my $exefile = installer::existence::get_specified_file($filesref, $executablegid);
+            my ($exefile) = grep {$_->{gid} eq $executablegid} @{$filesref};
+            if (! defined $exefile) {
+                installer::exiter::exit_program("ERROR: Could not find file $executablegid in list of files!", "write_content_into_inf_file");
+            }
+
             my $exefilename = $exefile->{'Name'};
             $placeholder = "PLACEHOLDER_FOLDERITEM_TARGET_" . $app;
             replace_in_template_file($templatefile, $placeholder, $exefilename);
commit fcac6ce7319af1006f65fcf2e84243c7c93458a4
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 22:29:26 2012 +0000

    Remove installer::existence::get_specified_file_by_name.

diff --git a/solenv/bin/modules/installer/existence.pm b/solenv/bin/modules/installer/existence.pm
index 1346372..95ba40d 100644
--- a/solenv/bin/modules/installer/existence.pm
+++ b/solenv/bin/modules/installer/existence.pm
@@ -63,36 +63,4 @@ sub get_specified_file
     return $onefile;
 }
 
-#####################################################################
-# Returning a specified file as base for a new file,
-# defined by its "Name"
-#####################################################################
-
-sub get_specified_file_by_name
-{
-    my ($filesarrayref, $searchname) = @_;
-
-    my $foundfile = 0;
-    my $onefile;
-
-    for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
-    {
-        $onefile = ${$filesarrayref}[$i];
-        my $filename = $onefile->{'Name'};
-
-        if ( $filename eq $searchname )
-        {
-            $foundfile = 1;
-            last;
-        }
-    }
-
-    if (!($foundfile))
-    {
-        installer::exiter::exit_program("ERROR: Could not find file $searchname in list of files!", "get_specified_file_by_name");
-    }
-
-    return $onefile;
-}
-
 1;
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index be24ff7..6592d08 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -1403,7 +1403,10 @@ sub prepare_windows_patchfiles
     my $winpatchdirname = "winpatch";
     my $winpatchdir = installer::systemactions::create_directories($winpatchdirname, $languagestringref);
 
-    my $patchlistfile = installer::existence::get_specified_file_by_name($filesref, $patchfilename);
+    my ($patchlistfile) = grep {$_->{Name} eq $patchfilename} @{$filesref};
+    if (! defined $patchlistfile) {
+        installer::exiter::exit_program("ERROR: Could not find file $patchfilename in list of files!", "prepare_windows_patchfiles");
+    }
 
     # reorganizing the patchfile content, sorting for directory to decrease the file size
     my $sorteddirectorylist = [ sort keys %patchfiledirectories ];
commit 6e07845a00bceaf66e95b97ea964b7868eff80c0
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 22:00:53 2012 +0000

    Remove installer::existence::exists_in_array.

diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index 47d137c..a823306 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -1920,7 +1920,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
             my $onelanguage = ${$languagesarrayref}[$m];
 
             my $is_rtl = 0;
-            if ( installer::existence::exists_in_array($onelanguage, \@installer::globals::rtllanguages) ) { $is_rtl = 1; }
+            if ( grep {$_ eq $onelanguage} @installer::globals::rtllanguages ) { $is_rtl = 1; }
 
             my $languageidtdir = $idtdirbase . $installer::globals::separator . $onelanguage;
             if ( -d $languageidtdir ) { installer::systemactions::remove_complete_directory($languageidtdir, 1); }
diff --git a/solenv/bin/modules/installer/archivefiles.pm b/solenv/bin/modules/installer/archivefiles.pm
index 21f8f2b..a81b0f6 100644
--- a/solenv/bin/modules/installer/archivefiles.pm
+++ b/solenv/bin/modules/installer/archivefiles.pm
@@ -390,7 +390,7 @@ sub resolving_archive_flag
 
                         if ( $select_files )
                         {
-                            if ( ! installer::existence::exists_in_array($zipname,$selectlistfiles) )
+                            if ( ! grep {$_ eq $zipname} @{$selectlistfiles} )
                             {
                                 $infoline = "Removing from ARCHIVE file $onefilename: $zipname\n";
                                 push( @installer::globals::logfileinfo, $infoline);
@@ -409,7 +409,7 @@ sub resolving_archive_flag
                             # Is this file listed in the Patchfile list?
                             # $zipname (filename including path in zip file has to be listed in patchfile list
 
-                            if ( ! installer::existence::exists_in_array($zipname,$patchlistfiles) )
+                            if ( ! grep {$_ eq $zipname} @{$patchlistfiles} )
                             {
                                 $newfile{'Styles'} =~ s/\bPATCH\b//;    # removing the flag PATCH
                                 $newfile{'Styles'} =~ s/\,\s*\,/\,/;
@@ -476,7 +476,7 @@ sub resolving_archive_flag
 
                     for ( my $k = 0; $k <= $#{$selectlistfiles}; $k++ )
                     {
-                        if ( ! installer::existence::exists_in_array(${$selectlistfiles}[$k],\@keptfiles) )
+                        if ( ! grep {$_ eq ${$selectlistfiles}[$k]} @keptfiles )
                         {
                             push(@warningfiles, ${$selectlistfiles}[$k]);
                         }
@@ -514,7 +514,7 @@ sub resolving_archive_flag
 
                     for ( my $k = 0; $k <= $#{$patchlistfiles}; $k++ )
                     {
-                        if ( ! installer::existence::exists_in_array(${$patchlistfiles}[$k],\@keptpatchflags) )
+                        if ( ! grep {$_ eq ${$patchlistfiles}[$k]} @keptpatchflags )
                         {
                             push(@warningfiles, ${$patchlistfiles}[$k]);
                         }
diff --git a/solenv/bin/modules/installer/epmfile.pm b/solenv/bin/modules/installer/epmfile.pm
index b7299ef..6a91fb4 100644
--- a/solenv/bin/modules/installer/epmfile.pm
+++ b/solenv/bin/modules/installer/epmfile.pm
@@ -1680,7 +1680,7 @@ sub set_tab_into_datafile
                         push(@installer::globals::logfileinfo, $infoline);
 
                         # collecting all new classes
-                        if (! installer::existence::exists_in_array($onefile->{'SolarisClass'}, \@newclasses))
+                        if (! grep {$_ eq $onefile->{'SolarisClass'}} @newclasses)
                         {
                             push(@newclasses, $onefile->{'SolarisClass'});
                         }
diff --git a/solenv/bin/modules/installer/existence.pm b/solenv/bin/modules/installer/existence.pm
index 0581efd..1346372 100644
--- a/solenv/bin/modules/installer/existence.pm
+++ b/solenv/bin/modules/installer/existence.pm
@@ -27,28 +27,6 @@
 
 package installer::existence;
 
-#############################
-# Test of existence
-#############################
-
-sub exists_in_array
-{
-    my ($searchstring, $arrayref) = @_;
-
-    my $alreadyexists = 0;
-
-    for ( my $i = 0; $i <= $#{$arrayref}; $i++ )
-    {
-        if ( ${$arrayref}[$i] eq $searchstring)
-        {
-            $alreadyexists = 1;
-            last;
-        }
-    }
-
-    return $alreadyexists;
-}
-
 #####################################################################
 # Returning a specified file as base for the new
 # configuration file, defined by its "gid"
diff --git a/solenv/bin/modules/installer/languages.pm b/solenv/bin/modules/installer/languages.pm
index 82ac7d0..b6bf0a1 100644
--- a/solenv/bin/modules/installer/languages.pm
+++ b/solenv/bin/modules/installer/languages.pm
@@ -98,7 +98,7 @@ sub all_elements_of_array1_in_array2
 
     for ( my $i = 0; $i <= $#{$array1}; $i++ )
     {
-        if (! installer::existence::exists_in_array(${$array1}[$i], $array2))
+        if (! grep {$_ eq ${$array1}[$i]} @{$array2})
         {
             $array2_contains_all_elements_of_array1 = 0;
             last;
diff --git a/solenv/bin/modules/installer/profiles.pm b/solenv/bin/modules/installer/profiles.pm
index 2b794ce..22e18e6 100644
--- a/solenv/bin/modules/installer/profiles.pm
+++ b/solenv/bin/modules/installer/profiles.pm
@@ -59,7 +59,7 @@ sub sorting_profile
         {
             my $section = $1;
 
-            if (!(installer::existence::exists_in_array($section, \@definedsections)))
+            if (! grep {$_ eq $section} @definedsections)
             {
                 my $sectionline = $section . "\n";
                 push(@definedsections, $section);
diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm
index 4614c3f..67db9ef 100644
--- a/solenv/bin/modules/installer/scriptitems.pm
+++ b/solenv/bin/modules/installer/scriptitems.pm
@@ -776,7 +776,7 @@ sub collect_language_specific_names
 
             if (( $language ne "" ) && ( $language eq $specificlanguage ))
             {
-                if (! installer::existence::exists_in_array($oneitem->{'Name'}, \@installer::globals::languagenames ))
+                if (! grep {$_ eq $oneitem->{'Name'}} @installer::globals::languagenames )
                 {
                     push(@installer::globals::languagenames, $oneitem->{'Name'});
                 }
@@ -2627,7 +2627,7 @@ sub collect_all_parent_feature
 
         if ( $parentgid ne "" )
         {
-            if (! installer::existence::exists_in_array($parentgid, \@allparents))
+            if (! grep {$_ eq $parentgid} @allparents)
             {
                 push(@allparents, $parentgid);
             }
@@ -2668,7 +2668,7 @@ sub set_children_flag
 
         # is this gid a parent?
 
-        if ( installer::existence::exists_in_array($gid, $allparents) )
+        if ( grep {$_ eq $gid} @{$allparents} )
         {
             $onefeature->{'has_children'} = 1;
         }
diff --git a/solenv/bin/modules/installer/strip.pm b/solenv/bin/modules/installer/strip.pm
index a954187..777b773 100644
--- a/solenv/bin/modules/installer/strip.pm
+++ b/solenv/bin/modules/installer/strip.pm
@@ -94,7 +94,7 @@ sub strip_libraries
 
     my $strippeddirbase = installer::systemactions::create_directories("stripped", $languagestringref);
 
-    if (! installer::existence::exists_in_array($strippeddirbase, \@installer::globals::removedirs))
+    if (! grep {$_ eq $strippeddirbase} @installer::globals::removedirs)
     {
         push(@installer::globals::removedirs, $strippeddirbase);
     }
diff --git a/solenv/bin/modules/installer/systemactions.pm b/solenv/bin/modules/installer/systemactions.pm
index 559953a..899ad24 100644
--- a/solenv/bin/modules/installer/systemactions.pm
+++ b/solenv/bin/modules/installer/systemactions.pm
@@ -1295,7 +1295,7 @@ sub find_new_content_in_directory
         if (( -f $completeentry ) || ( -d $completeentry ))
         {
             push(@allcontent, $completeentry);
-            if (! installer::existence::exists_in_array($completeentry, $oldcontent))
+            if (! grep {$_ eq $completeentry} @{$oldcontent})
             {
                 push(@newcontent, $completeentry);
             }
diff --git a/solenv/bin/modules/installer/windows/component.pm b/solenv/bin/modules/installer/windows/component.pm
index da11997..7a23080 100644
--- a/solenv/bin/modules/installer/windows/component.pm
+++ b/solenv/bin/modules/installer/windows/component.pm
@@ -467,7 +467,7 @@ sub get_component_name_from_modulegid
             my $filemodules = $onefile->{'modules'};
             my $filemodulesarrayref = installer::converter::convert_stringlist_into_array_without_newline(\$filemodules, ",");
 
-            if (installer::existence::exists_in_array($modulegid, $filemodulesarrayref))
+            if (grep {$_ eq $modulegid} @{$filemodulesarrayref})
             {
                 $componentname = $onefile->{'componentname'};
                 last;
diff --git a/solenv/bin/modules/installer/windows/feature.pm b/solenv/bin/modules/installer/windows/feature.pm
index 92d8cfe..dbc0efa 100644
--- a/solenv/bin/modules/installer/windows/feature.pm
+++ b/solenv/bin/modules/installer/windows/feature.pm
@@ -409,7 +409,7 @@ sub create_feature_table
             push(@featuretable, $oneline);
 
             # collecting all feature in global feature collector (so that properties can be set in property table)
-            if ( ! installer::existence::exists_in_array($feature{'feature'}, \@installer::globals::featurecollector) )
+            if ( ! grep {$_ eq $feature{'feature'}} @installer::globals::featurecollector )
             {
                 push(@installer::globals::featurecollector, $feature{'feature'});
             }
diff --git a/solenv/bin/modules/installer/windows/featurecomponent.pm b/solenv/bin/modules/installer/windows/featurecomponent.pm
index 8e9ebee..1079218 100644
--- a/solenv/bin/modules/installer/windows/featurecomponent.pm
+++ b/solenv/bin/modules/installer/windows/featurecomponent.pm
@@ -78,7 +78,7 @@ sub create_featurecomponent_table_from_files_collector
 
             # control of uniqueness
 
-            if (! installer::existence::exists_in_array($oneline, $featurecomponenttableref))
+            if (! grep {$_ eq $oneline} @{$featurecomponenttableref})
             {
                 push(@{$featurecomponenttableref}, $oneline);
             }
@@ -124,7 +124,7 @@ sub create_featurecomponent_table_from_registry_collector
 
         # control of uniqueness
 
-        if (! installer::existence::exists_in_array($oneline, $featurecomponenttableref))
+        if (! grep {$_ eq $oneline} @{$featurecomponenttableref})
         {
             push(@{$featurecomponenttableref}, $oneline);
         }
diff --git a/solenv/bin/modules/installer/windows/registry.pm b/solenv/bin/modules/installer/windows/registry.pm
index ba9f7a8..8312e56 100644
--- a/solenv/bin/modules/installer/windows/registry.pm
+++ b/solenv/bin/modules/installer/windows/registry.pm
@@ -401,7 +401,7 @@ sub create_registry_table
             $registry{'Component_'} = get_registry_component($oneregistry, $allvariableshashref);
 
             # Collecting all components
-            if (!(installer::existence::exists_in_array($registry{'Component_'}, $allregistrycomponentsref)))
+            if (! grep {$_ eq $registry{'Component_'}} @{$allregistrycomponentsref})
             {
                 push(@{$allregistrycomponentsref}, $registry{'Component_'});
             }
diff --git a/solenv/bin/modules/installer/windows/removefile.pm b/solenv/bin/modules/installer/windows/removefile.pm
index ec2a614..ec12636 100644
--- a/solenv/bin/modules/installer/windows/removefile.pm
+++ b/solenv/bin/modules/installer/windows/removefile.pm
@@ -122,7 +122,7 @@ sub create_removefile_table
 
         if ( $onelink->{'used'} == 0 ) { next; }
 
-        if ( installer::existence::exists_in_array($onelink->{'directory'}, \@directorycollector)) { next; }
+        next if grep {$_ eq $onelink->{'directory'}} @directorycollector;
 
         push(@directorycollector, $onelink->{'directory'});
 
diff --git a/solenv/bin/modules/installer/windows/shortcut.pm b/solenv/bin/modules/installer/windows/shortcut.pm
index 6c73f77..cef5020 100644
--- a/solenv/bin/modules/installer/windows/shortcut.pm
+++ b/solenv/bin/modules/installer/windows/shortcut.pm
@@ -516,7 +516,7 @@ sub get_folderitem_icon
 
     my $sourcepath = $onefile->{'sourcepath'};
 
-    if (! installer::existence::exists_in_array($sourcepath, $iconfilecollector))
+    if (! grep {$_ eq $sourcepath} @{$iconfilecollector})
     {
         push(@{$iconfilecollector}, $sourcepath);
     }
@@ -674,7 +674,7 @@ sub create_shortcut_table
 
         if ($$sourcepathref eq "") { installer::exiter::exit_program("ERROR: Could not find $sofficefile as icon!", "create_shortcut_table"); }
 
-        if (! installer::existence::exists_in_array($$sourcepathref, $iconfilecollector))
+        if (! grep {$_ eq $$sourcepathref} @{$iconfilecollector})
         {
             unshift(@{$iconfilecollector}, $$sourcepathref);
             $installer::globals::sofficeiconadded = 1;
diff --git a/solenv/bin/modules/installer/windows/strip.pm b/solenv/bin/modules/installer/windows/strip.pm
index 79b1046..6f9f983 100644
--- a/solenv/bin/modules/installer/windows/strip.pm
+++ b/solenv/bin/modules/installer/windows/strip.pm
@@ -97,7 +97,7 @@ sub strip_binaries
 
     my $strippeddirbase = installer::systemactions::create_directories("stripped", $languagestringref);
 
-    if (! installer::existence::exists_in_array($strippeddirbase, \@installer::globals::removedirs))
+    if (! grep {$_ eq $strippeddirbase} @installer::globals::removedirs)
     {
         push(@installer::globals::removedirs, $strippeddirbase);
     }
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index 6f6801a..be24ff7 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -636,7 +636,7 @@ sub collect_all_modules
         $registryitem = ${$registryitemsref}[$i];
         my $module = $registryitem->{'ModuleID'};
 
-        if ( ! installer::existence::exists_in_array($module, \@allmodules) )
+        if ( ! grep {$_ eq $module} @allmodules )
         {
             push(@allmodules, $module);
         }
diff --git a/solenv/bin/modules/installer/xpdinstaller.pm b/solenv/bin/modules/installer/xpdinstaller.pm
index ac38b64..26059a7 100644
--- a/solenv/bin/modules/installer/xpdinstaller.pm
+++ b/solenv/bin/modules/installer/xpdinstaller.pm
@@ -1602,7 +1602,7 @@ sub create_xpd_file
         {
             my $create_missing_parent = is_empty_parent($parentgid, $allpackages);
 
-            if (( $create_missing_parent ) && ( ! installer::existence::exists_in_array($parentgid, \@installer::globals::createdxpdfiles) ))
+            if ($create_missing_parent && ( ! grep {$_ eq $parentgid} @installer::globals::createdxpdfiles ))
             {
                 $grandpagid = create_emptyparents_xpd_file($parentgid, $modulesarrayref, $xpddir);
             }
@@ -1612,7 +1612,7 @@ sub create_xpd_file
         {
             my $create_missing_parent = is_empty_parent($grandpagid, $allpackages);
 
-            if (( $create_missing_parent ) && ( ! installer::existence::exists_in_array($grandpagid, \@installer::globals::createdxpdfiles) ))
+            if ($create_missing_parent && ( ! grep {$_ eq $grandpagid} @installer::globals::createdxpdfiles ))
             {
                 create_emptyparents_xpd_file($grandpagid, $modulesarrayref, $xpddir);
              }
@@ -1657,7 +1657,7 @@ sub create_xpd_file_for_childproject
     {
         my $create_missing_parent = 1; # -> Always missing parent by child projects!
         # Parent is now created, if it was not created before. Attention: Parent module must not come later.
-        if (( $create_missing_parent ) && ( ! installer::existence::exists_in_array($parentgid, \@installer::globals::createdxpdfiles) ))
+        if ($create_missing_parent && ( ! grep {$_ eq $parentgid} @installer::globals::createdxpdfiles ))
         {
             create_emptyparents_xpd_file($parentgid, $modulesarrayref, $installer::globals::xpddir);
         }
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index 3219e71..d513741 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -383,7 +383,7 @@ sub remove_multiples_from_ziplist
             $itemname = $1;
         }
 
-        if (! installer::existence::exists_in_array($itemname, \@itemarray))
+        if (! grep {$_ eq $itemname} @itemarray)
         {
             push(@itemarray, $itemname);
         }
commit 94446db8dff61687ad6100b9fd03f2170be37919
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 21:09:29 2012 +0000

    Remove installer::existence::exists_in_array_of_hashes.

diff --git a/solenv/bin/modules/installer/existence.pm b/solenv/bin/modules/installer/existence.pm
index 1f362f7..0581efd 100644
--- a/solenv/bin/modules/installer/existence.pm
+++ b/solenv/bin/modules/installer/existence.pm
@@ -49,26 +49,6 @@ sub exists_in_array
     return $alreadyexists;
 }
 
-sub exists_in_array_of_hashes
-{
-    my ($searchkey, $searchvalue, $arrayref) = @_;
-
-    my $valueexists = 0;
-
-    for ( my $i = 0; $i <= $#{$arrayref}; $i++ )
-    {
-        my $hashref = ${$arrayref}[$i];
-
-        if ( $hashref->{$searchkey} eq $searchvalue )
-        {
-            $valueexists = 1;
-            last;
-        }
-    }
-
-    return $valueexists;
-}
-
 #####################################################################
 # Returning a specified file as base for the new
 # configuration file, defined by its "gid"
diff --git a/solenv/bin/modules/installer/setupscript.pm b/solenv/bin/modules/installer/setupscript.pm
index cbd2cbd..2275cd1 100644
--- a/solenv/bin/modules/installer/setupscript.pm
+++ b/solenv/bin/modules/installer/setupscript.pm
@@ -29,7 +29,6 @@ package installer::setupscript;
 
 use base 'Exporter';
 
-use installer::existence;
 use installer::exiter;
 use installer::globals;
 use installer::logger qw(globallog);
@@ -393,23 +392,16 @@ sub add_predefined_folder
 {
     my ( $folderitemref, $folderref ) = @_;
 
-    for ( my $i = 0; $i <= $#{$folderitemref}; $i++ )
-    {
-        my $folderitem = ${$folderitemref}[$i];
-        my $folderid = $folderitem->{'FolderID'};
-
-        if ( $folderid =~ /PREDEFINED_/ )
-        {
-            if (! installer::existence::exists_in_array_of_hashes("gid", $folderid, $folderref))
-            {
-                my %folder = ();
-                $folder{'ismultilingual'} = "0";
-                $folder{'Name'} = "";
-                $folder{'gid'} = $folderid;
+    for my $folderid ( map { $_->{FolderID} } @{$folderitemref} ) {
+        # FIXME: Anchor to start of line?
+        next unless ( $folderid =~ /PREDEFINED_/ );
+        next if grep { $_->{gid} eq $folderid } @{$folderref};
 
-                push(@{$folderref}, \%folder);
-            }
-        }
+        push @{$folderref}, {
+            ismultilingual => 0,
+            Name => "",
+            gid => $folderid,
+        };
     }
 }
 
commit e49ebe2f0987a98f3b0b3df18189570020c3e724
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 20:59:20 2012 +0000

    Use Exporter in installer::setupscript and add unit test.

diff --git a/solenv/bin/modules/installer/setupscript.pm b/solenv/bin/modules/installer/setupscript.pm
index 7d590c5..cbd2cbd 100644
--- a/solenv/bin/modules/installer/setupscript.pm
+++ b/solenv/bin/modules/installer/setupscript.pm
@@ -27,6 +27,8 @@
 
 package installer::setupscript;
 
+use base 'Exporter';
+
 use installer::existence;
 use installer::exiter;
 use installer::globals;
@@ -35,6 +37,20 @@ use installer::remover;
 use installer::scriptitems;
 use installer::ziplist;
 
+our @EXPORT_OK = qw(
+    add_forced_properties
+    add_installationobject_to_variables
+    add_lowercase_productname_setupscriptvariable
+    add_predefined_folder
+    get_all_items_from_script
+    get_all_scriptvariables_from_installation_object
+    prepare_non_advertised_files
+    replace_all_setupscriptvariables_in_script
+    replace_preset_properties
+    resolve_lowercase_productname_setupscriptvariable
+    set_setupscript_name
+);
+
 #######################################################
 # Set setup script name, if not defined as parameter
 #######################################################
diff --git a/solenv/bin/modules/t/installer-setupscript.t b/solenv/bin/modules/t/installer-setupscript.t
new file mode 100644
index 0000000..1320d7f
--- /dev/null
+++ b/solenv/bin/modules/t/installer-setupscript.t
@@ -0,0 +1,76 @@
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# [ Copyright (C) 2012 Tim Retout <tim at retout.co.uk> (initial developer) ]
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use lib '.';
+
+BEGIN {
+    use_ok('installer::setupscript', qw(
+        add_forced_properties
+        add_installationobject_to_variables
+        add_lowercase_productname_setupscriptvariable
+        add_predefined_folder
+        get_all_items_from_script
+        get_all_scriptvariables_from_installation_object
+        prepare_non_advertised_files
+        replace_all_setupscriptvariables_in_script
+        replace_preset_properties
+        resolve_lowercase_productname_setupscriptvariable
+        set_setupscript_name
+    ));
+}
+
+my @folders = (
+    { gid => '123' },
+    { gid => 'PREDEFINED_FOO' },
+    { gid => 'PREDEFINED_BAR' },
+);
+
+my @folderitems = (
+    { FolderID => 'PREDEFINED_AUTOSTART' },
+    { FolderID => 'PREDEFINED_BAR' },
+    { FolderID => '456' },
+);
+
+my @expected_folders = (
+    { gid => '123' },
+    { gid => 'PREDEFINED_FOO' },
+    { gid => 'PREDEFINED_BAR' },
+    {
+      ismultilingual => 0,
+      Name => "",
+      gid => 'PREDEFINED_AUTOSTART'
+    },
+);
+
+add_predefined_folder(\@folderitems, \@folders);
+
+is_deeply(\@folders, \@expected_folders);
+
+done_testing();
commit bf6e2d4ccf3baadaedc532b9cd8582ac16352bf2
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 20:23:18 2012 +0000

    Remove packager::existence, and clean up packager::work.

diff --git a/solenv/bin/modules/packager/existence.pm b/solenv/bin/modules/packager/existence.pm
deleted file mode 100644
index 81f1339..0000000
--- a/solenv/bin/modules/packager/existence.pm
+++ /dev/null
@@ -1,52 +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 packager::existence;
-
-#############################
-# Test of existence
-#############################
-
-sub exists_in_array
-{
-    my ($searchstring, $arrayref) = @_;
-
-    my $alreadyexists = 0;
-
-    for ( my $i = 0; $i <= $#{$arrayref}; $i++ )
-    {
-        if ( ${$arrayref}[$i] eq $searchstring)
-        {
-            $alreadyexists = 1;
-            last;
-        }
-    }
-
-    return $alreadyexists;
-}
-
-1;
diff --git a/solenv/bin/modules/packager/work.pm b/solenv/bin/modules/packager/work.pm
index 2481834..cd5a7fc 100644
--- a/solenv/bin/modules/packager/work.pm
+++ b/solenv/bin/modules/packager/work.pm
@@ -28,11 +28,12 @@
 
 package packager::work;
 
+use strict;
+use warnings;
+
 use base 'Exporter';
 
 use packager::exiter;
-use packager::existence;
-use packager::files;
 use packager::globals;
 
 our @EXPORT_OK = qw(
@@ -54,31 +55,6 @@ sub set_global_variable
     $packager::globals::compiler = $compiler;
 }
 
-#############################################################################
-# Converting a string list with separator $listseparator
-# into an array
-#############################################################################
-
-sub convert_stringlist_into_array
-{
-    my ( $includestringref, $listseparator ) = @_;
-
-    my @newarray = ();
-    my $first;
-    my $last = ${$includestringref};
-
-    while ( $last =~ /^\s*(.+?)\Q$listseparator\E(.+)\s*$/) # "$" for minimal matching
-    {
-        $first = $1;
-        $last = $2;
-        push(@newarray, "$first");
-    }
-
-    push(@newarray, "$last");
-
-    return \@newarray;
-}
-
 ###########################################
 # Generating a list of package calls
 # corresponding to the package list
@@ -90,51 +66,29 @@ sub create_package_todos
 
     my @targets = ();   # only used, if the build server is not used
 
-    for ( my $i = 0; $i <= $#{$packagelist}; $i++ )
-    {
-        my $line = ${$packagelist}[$i];
-
-        if ( $line =~ /^\s*\#/ ) { next; }  # comment line
-
-        if ( $line =~ /^\s*(\w+?)\s+(\S+?)\s+(\S+?)\s+(\w+?)\s*$/ )
-        {
-            my $product = $1;
-            my $compilerlist = $2;
-            my $languagelist = $3;
-            my $target = $4;
+    for my $line ( @{$packagelist} ) {
+        next if ($line =~ /^\s*\#/);  # comment line
 
-            $product =~ s/\s//g;
-            $compilerlist =~ s/\s//g;
-            $languagelist =~ s/\s//g;
-            $target =~ s/\s//g;
+        my ($product, $compilerlist, $languagelist, $target) =
+            ($line =~ /^\s*(\w+?)\s+(\S+?)\s+(\S+?)\s+(\w+?)\s*$/);
 
-            my $compilers = convert_stringlist_into_array(\$compilerlist, ",");
+        my @compilers = split ',', $compilerlist;
 
-            # is the compiler of this "build" part of the compiler list in pack.lst ?
+        # is the compiler of this "build" part of the compiler list in pack.lst ?
 
-            if ( packager::existence::exists_in_array($packager::globals::compiler, $compilers) )
-            {
-                # products are separated in pack.lst by "|"
+        next unless grep { $_ eq $packager::globals::compiler } @compilers;
 
-                my $languagesets = convert_stringlist_into_array(\$languagelist, "\|");
+        # products are separated in pack.lst by "|"
+        # now all information is available to create the targets for the systemcalls
+        for my $languagestring (split '\|', $languagelist) {
+            $languagestring =~ s/,/_/g;   # comma in pack.lst becomes "_" in dmake command
 
-                # now all information is available to create the targets for the systemcalls
-
-                for ( my $j = 0; $j <= $#{$languagesets}; $j++ )
-                {
-                    my $languagestring = ${$languagesets}[$j];
-                    $languagestring =~ s/\,/\_/g;   # comma in pack.lst becomes "_" in dmake command
-
-                    my $target = $target . "_" . $languagestring;
-                    push(@targets, $target);
-
-                    my $insertline = $target . "\n";
-                    push( @packager::globals::logfileinfo, $insertline);
-                }
-            }
+            push @targets, $target . '_' . $languagestring;
         }
     }
 
+    push @packager::globals::logfileinfo, map { $_ . "\n" } @targets;
+
     return \@targets;
 }
 
commit c866c25f2646f56afa5a7ecf3a35e62bae0cdb7a
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 20:17:31 2012 +0000

    Use Exporter in packager::work and add unit test.

diff --git a/solenv/bin/modules/packager/work.pm b/solenv/bin/modules/packager/work.pm
index e18b6fb..2481834 100644
--- a/solenv/bin/modules/packager/work.pm
+++ b/solenv/bin/modules/packager/work.pm
@@ -28,11 +28,19 @@
 
 package packager::work;
 
+use base 'Exporter';
+
 use packager::exiter;
 use packager::existence;
 use packager::files;
 use packager::globals;
 
+our @EXPORT_OK = qw(
+    set_global_variable
+    create_package_todos
+    execute_system_calls
+);
+
 ###########################################
 # Setting global variables
 ###########################################
diff --git a/solenv/bin/modules/t/packager-work.t b/solenv/bin/modules/t/packager-work.t
new file mode 100644
index 0000000..af1fe02
--- /dev/null
+++ b/solenv/bin/modules/t/packager-work.t
@@ -0,0 +1,62 @@
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# [ Copyright (C) 2012 Tim Retout <tim at retout.co.uk> (initial developer) ]
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use lib '.';
+
+BEGIN {
+    use_ok('packager::work', qw(
+           set_global_variable
+           create_package_todos
+           execute_system_calls
+    ));
+}
+
+$packager::globals::compiler = 'gcc';
+ at packager::globals::logfileinfo = ();
+
+my $packagelist = <<'END';
+   # Comment
+   some_product  gcc,gcc3.3  en_US,en_GB|fr_FR  some_target
+   other_thing   x           y                  z
+END
+
+my @packagelist = split "\n", $packagelist;
+
+my $targets = create_package_todos( \@packagelist );
+
+is_deeply(\@packager::globals::logfileinfo,
+          ["some_target_en_US_en_GB\n",
+           "some_target_fr_FR\n"]);
+
+is_deeply($targets,
+          ["some_target_en_US_en_GB",
+           "some_target_fr_FR"]);
+
+done_testing();
commit c5f9f099adf968c5b445d1dd7aa50f64d6495339
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 18:31:33 2012 +0000

    Remove unused pre2par::existence.

diff --git a/solenv/bin/modules/pre2par/existence.pm b/solenv/bin/modules/pre2par/existence.pm
deleted file mode 100644
index 1775f1d..0000000
--- a/solenv/bin/modules/pre2par/existence.pm
+++ /dev/null
@@ -1,74 +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 pre2par::existence;
-
-#############################
-# Test of existence
-#############################
-
-sub exists_in_array
-{
-    my ($searchstring, $arrayref) = @_;
-
-    my $alreadyexists = 0;
-
-    for ( my $i = 0; $i <= $#{$arrayref}; $i++ )
-    {
-        if ( ${$arrayref}[$i] eq $searchstring)
-        {
-            $alreadyexists = 1;
-            last;
-        }
-    }
-
-    return $alreadyexists;
-}
-
-sub exists_in_array_of_hashes
-{
-    my ($searchkey, $searchvalue, $arrayref) = @_;
-
-    my $hashref;
-    my $valueexists = 0;
-
-    for ( my $i = 0; $i <= $#{$arrayref}; $i++ )
-    {
-        $hashref = ${$arrayref}[$i];
-
-        if ( $hashref->{$searchkey} eq $searchvalue )
-        {
-            $valueexists = 1;
-            last;
-        }
-    }
-
-    return $valueexists;
-}
-
-1;
diff --git a/solenv/bin/modules/pre2par/language.pm b/solenv/bin/modules/pre2par/language.pm
index a6025e4..13718af 100644
--- a/solenv/bin/modules/pre2par/language.pm
+++ b/solenv/bin/modules/pre2par/language.pm
@@ -28,7 +28,6 @@
 package pre2par::language;
 
 use strict;
-use pre2par::existence;
 
 ##############################################################
 # Returning a specific language string from the block
commit 19bc8814f18065f5024bd6a4a7154ddb9ec7fae2
Author: Tim Retout <tim at retout.co.uk>
Date:   Fri Feb 17 18:30:09 2012 +0000

    Remove unused par2script::existence.

diff --git a/solenv/bin/modules/par2script/existence.pm b/solenv/bin/modules/par2script/existence.pm
deleted file mode 100644
index 08fb8ed..0000000
--- a/solenv/bin/modules/par2script/existence.pm
+++ /dev/null
@@ -1,74 +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 par2script::existence;
-
-#############################
-# Test of existence
-#############################
-
-sub exists_in_array
-{
-    my ($searchstring, $arrayref) = @_;
-
-    my $alreadyexists = 0;
-
-    for ( my $i = 0; $i <= $#{$arrayref}; $i++ )
-    {
-        if ( ${$arrayref}[$i] eq $searchstring)
-        {
-            $alreadyexists = 1;
-            last;
-        }
-    }
-
-    return $alreadyexists;
-}
-
-sub exists_in_array_of_hashes
-{
-    my ($searchkey, $searchvalue, $arrayref) = @_;
-
-    my $hashref;
-    my $valueexists = 0;
-
-    for ( my $i = 0; $i <= $#{$arrayref}; $i++ )
-    {
-        $hashref = ${$arrayref}[$i];
-
-        if ( $hashref->{$searchkey} eq $searchvalue )
-        {
-            $valueexists = 1;
-            last;
-        }
-    }
-
-    return $valueexists;
-}
-
-1;
diff --git a/solenv/bin/modules/par2script/work.pm b/solenv/bin/modules/par2script/work.pm
index 10dd1ea..9fc2aec 100644
--- a/solenv/bin/modules/par2script/work.pm
+++ b/solenv/bin/modules/par2script/work.pm
@@ -28,7 +28,6 @@
 
 package par2script::work;
 
-use par2script::existence;
 use par2script::globals;
 use par2script::remover;
 


More information about the Libreoffice-commits mailing list