diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-08-23 14:25:38 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-08-23 14:32:55 +0200 |
commit | 8098a03d025a0c8fee90322e3835079edb45ade3 (patch) | |
tree | 44a269f89f4d76d7036301fb3d4d7a711045afaf /solenv | |
parent | b18c8f72bdff52ca6c49d8f30e3ff0f201b5b4fa (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-x | solenv/bin/modules/installer/simplepackage.pm | 19 | ||||
-rw-r--r-- | solenv/bin/modules/installer/systemactions.pm | 47 |
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; |