summaryrefslogtreecommitdiff
path: root/solenv
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-08-23 14:25:38 +0200
committerMichael Stahl <mstahl@redhat.com>2012-08-23 14:32:55 +0200
commit8098a03d025a0c8fee90322e3835079edb45ade3 (patch)
tree44a269f89f4d76d7036301fb3d4d7a711045afaf /solenv
parentb18c8f72bdff52ca6c49d8f30e3ff0f201b5b4fa (diff)
installer: remove empty directories again:
An "archive" installer contains one empty share/extensions/dict-XY/ directory for every dictionary (except the 3 default ones), causing numerous assertions about missing META-INF/manifest.xml and an extension manager cluttered; this is due to overzealous removal of extension "prereg" code. (regression from 6dcb3d4ef46312729bb6f16c473b433474863f68, partially revert that) Change-Id: I3a063ebfed1012aeb27ec3076cdd5ca545f918a2
Diffstat (limited to 'solenv')
-rwxr-xr-xsolenv/bin/modules/installer/simplepackage.pm19
-rw-r--r--solenv/bin/modules/installer/systemactions.pm47
2 files changed, 66 insertions, 0 deletions
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index d779239c4696..4111378e704a 100755
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -60,6 +60,22 @@ sub check_simple_packager_project
}
}
+####################################################
+# Detecting the directory with extensions
+####################################################
+
+sub get_extensions_dir
+{
+ my ( $subfolderdir ) = @_;
+
+ my $extensiondir = $subfolderdir . $installer::globals::separator;
+ if ( $installer::globals::officedirhostname ne "" ) { $extensiondir = $extensiondir . $installer::globals::officedirhostname . $installer::globals::separator; }
+ my $extensionsdir = $extensiondir . "share" . $installer::globals::separator . "extensions";
+ my $preregdir = $extensiondir . "share" . $installer::globals::separator . "prereg" . $installer::globals::separator . "bundled";
+
+ return ( $extensionsdir, $preregdir );
+}
+
##################################################################
# Collecting all identifier from ulf file
##################################################################
@@ -655,6 +671,9 @@ sub create_simple_package
installer::logger::print_message( "... removing superfluous directories ...\n" );
installer::logger::include_header_into_logfile("Removing superfluous directories:");
+ my ( $extensionfolder, $preregdir ) = get_extensions_dir($subfolderdir);
+ installer::systemactions::remove_empty_dirs_in_folder($extensionfolder);
+
if ( $installer::globals::compiler =~ /^unxmacx/ )
{
installer::worker::put_scpactions_into_installset("$installdir/$packagename");
diff --git a/solenv/bin/modules/installer/systemactions.pm b/solenv/bin/modules/installer/systemactions.pm
index 3c54ed17148b..7f9b2a810064 100644
--- a/solenv/bin/modules/installer/systemactions.pm
+++ b/solenv/bin/modules/installer/systemactions.pm
@@ -1355,4 +1355,51 @@ sub read_full_directory {
return
}
+##############################################################
+# Removing all empty directories below a specified directory
+##############################################################
+
+sub remove_empty_dirs_in_folder
+{
+ my ( $dir ) = @_;
+
+ my @content = ();
+ my $infoline = "";
+
+ $dir =~ s/\Q$installer::globals::separator\E\s*$//;
+
+ if ( -d $dir )
+ {
+ opendir(DIR, $dir);
+ @content = readdir(DIR);
+ closedir(DIR);
+
+ my $oneitem;
+
+ foreach $oneitem (@content)
+ {
+ if ((!($oneitem eq ".")) && (!($oneitem eq "..")))
+ {
+ my $item = $dir . $installer::globals::separator . $oneitem;
+
+ if ( -d $item ) # recursive
+ {
+ remove_empty_dirs_in_folder($item);
+ }
+ }
+ }
+
+ # try to remove empty directory
+ my $returnvalue = rmdir $dir;
+
+ if ( $returnvalue )
+ {
+ $infoline = "Successfully removed empty dir $dir\n";
+ push(@installer::globals::logfileinfo, $infoline);
+ }
+
+ }
+
+}
+
1;