Kaydet (Commit) 8098a03d authored tarafından Michael Stahl's avatar Michael Stahl

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
6dcb3d4e, partially revert that)

Change-Id: I3a063ebfed1012aeb27ec3076cdd5ca545f918a2
üst b18c8f72
...@@ -60,6 +60,22 @@ sub check_simple_packager_project ...@@ -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 # Collecting all identifier from ulf file
################################################################## ##################################################################
...@@ -655,6 +671,9 @@ sub create_simple_package ...@@ -655,6 +671,9 @@ sub create_simple_package
installer::logger::print_message( "... removing superfluous directories ...\n" ); installer::logger::print_message( "... removing superfluous directories ...\n" );
installer::logger::include_header_into_logfile("Removing superfluous directories:"); 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/ ) if ( $installer::globals::compiler =~ /^unxmacx/ )
{ {
installer::worker::put_scpactions_into_installset("$installdir/$packagename"); installer::worker::put_scpactions_into_installset("$installdir/$packagename");
......
...@@ -1355,4 +1355,51 @@ sub read_full_directory { ...@@ -1355,4 +1355,51 @@ sub read_full_directory {
return 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; 1;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment