- Add patches speeding up install:
* 0001-Speed-up-languagepack-installation.patch * libreoffice-no-destdircheck.patch OBS-URL: https://build.opensuse.org/package/show/LibreOffice:Factory/libreoffice?expand=0&rev=756
This commit is contained in:
parent
761ec2c0ad
commit
86080bf006
147
0001-Speed-up-languagepack-installation.patch
Normal file
147
0001-Speed-up-languagepack-installation.patch
Normal file
@ -0,0 +1,147 @@
|
||||
From d2763829435b7a30baebab939e1e04a94cce722b Mon Sep 17 00:00:00 2001
|
||||
From: Michael Schroeder <mls@suse.de>
|
||||
Date: Mon, 25 Feb 2019 13:28:14 +0100
|
||||
Subject: [PATCH] Speed up languagepack installation
|
||||
|
||||
Reorder the order the filelists are initialized per package.
|
||||
Optimize speed of find_files_for_package:
|
||||
We can simply check if the modules entry is the same as last time.
|
||||
The code uses iterators instead of that C-ish for loops.
|
||||
Create a hash from the packagemodules to speed up the check if
|
||||
a module is included in the hash.
|
||||
|
||||
Change-Id: I1e8ae394634a527880e08ef8ff333d94d04f49fd
|
||||
Before: 12s per language/package
|
||||
After: <1s per language/package
|
||||
---
|
||||
solenv/bin/modules/installer.pm | 26 +++++------
|
||||
solenv/bin/modules/installer/packagelist.pm | 52 ++++++++++-----------
|
||||
2 files changed, 37 insertions(+), 41 deletions(-)
|
||||
|
||||
diff --git a/solenv/bin/modules/installer.pm b/solenv/bin/modules/installer.pm
|
||||
index 88ec4e9394f9..f7983673f2e8 100644
|
||||
--- a/solenv/bin/modules/installer.pm
|
||||
+++ b/solenv/bin/modules/installer.pm
|
||||
@@ -998,14 +998,23 @@ sub run {
|
||||
$packagerootpath = $installer::globals::rootpath;
|
||||
}
|
||||
|
||||
+ #################################
|
||||
+ # collecting items for package
|
||||
+ #################################
|
||||
+
|
||||
+ my $filesinpackage = installer::packagelist::find_files_for_package($filesinproductlanguageresolvedarrayref, $onepackage);
|
||||
+ my $unixlinksinpackage = installer::packagelist::find_files_for_package($unixlinksinproductlanguageresolvedarrayref, $onepackage);
|
||||
+ my $linksinpackage = installer::packagelist::find_links_for_package($linksinproductlanguageresolvedarrayref, $onepackage);
|
||||
+ my $dirsinpackage = installer::packagelist::find_dirs_for_package($directoriesforepmarrayref, $onepackage);
|
||||
+
|
||||
#############################################
|
||||
# copying the collectors for each package
|
||||
#############################################
|
||||
|
||||
- my $filesinpackage = installer::converter::copy_collector($filesinproductlanguageresolvedarrayref);
|
||||
- my $linksinpackage = installer::converter::copy_collector($linksinproductlanguageresolvedarrayref);
|
||||
- my $unixlinksinpackage = installer::converter::copy_collector($unixlinksinproductlanguageresolvedarrayref);
|
||||
- my $dirsinpackage = installer::converter::copy_collector($directoriesforepmarrayref);
|
||||
+ $filesinpackage = installer::converter::copy_collector($filesinpackage);
|
||||
+ $linksinpackage = installer::converter::copy_collector($linksinpackage);
|
||||
+ $unixlinksinpackage = installer::converter::copy_collector($unixlinksinpackage);
|
||||
+ $dirsinpackage = installer::converter::copy_collector($dirsinpackage);
|
||||
|
||||
###########################################
|
||||
# setting the root path for the packages
|
||||
@@ -1016,15 +1025,6 @@ sub run {
|
||||
installer::scriptitems::add_rootpath_to_links($linksinpackage, $packagerootpath);
|
||||
installer::scriptitems::add_rootpath_to_files($unixlinksinpackage, $packagerootpath);
|
||||
|
||||
- #################################
|
||||
- # collecting items for package
|
||||
- #################################
|
||||
-
|
||||
- $filesinpackage = installer::packagelist::find_files_for_package($filesinpackage, $onepackage);
|
||||
- $unixlinksinpackage = installer::packagelist::find_files_for_package($unixlinksinpackage, $onepackage);
|
||||
- $linksinpackage = installer::packagelist::find_links_for_package($linksinpackage, $filesinpackage);
|
||||
- $dirsinpackage = installer::packagelist::find_dirs_for_package($dirsinpackage, $onepackage);
|
||||
-
|
||||
###############################################
|
||||
# nothing to do, if $filesinpackage is empty
|
||||
###############################################
|
||||
diff --git a/solenv/bin/modules/installer/packagelist.pm b/solenv/bin/modules/installer/packagelist.pm
|
||||
index 14daf9907507..a0e1da760b44 100644
|
||||
--- a/solenv/bin/modules/installer/packagelist.pm
|
||||
+++ b/solenv/bin/modules/installer/packagelist.pm
|
||||
@@ -239,47 +239,43 @@ sub find_files_for_package
|
||||
{
|
||||
my ($filelist, $onepackage) = @_;
|
||||
|
||||
- my @newfilelist = ();
|
||||
+ my @newfilelist;
|
||||
+ my $lastmodules = '';
|
||||
+ my $lastincludefile = 0;
|
||||
|
||||
- for ( my $i = 0; $i <= $#{$filelist}; $i++ )
|
||||
+ my %packagemodules = map {$_ => 1} @{$onepackage->{'allmodules'}};
|
||||
+
|
||||
+ for my $onefile (@$filelist)
|
||||
{
|
||||
- my $onefile = ${$filelist}[$i];
|
||||
my $modulesstring = $onefile->{'modules'}; # comma separated modules list
|
||||
+
|
||||
+ # check if the modules string is the same as in the last file
|
||||
+ if ($modulesstring eq $lastmodules)
|
||||
+ {
|
||||
+ push(@newfilelist, $onefile) if $lastincludefile;
|
||||
+ next;
|
||||
+ }
|
||||
+
|
||||
my $moduleslist = installer::converter::convert_stringlist_into_array(\$modulesstring, ",");
|
||||
|
||||
my $includefile = 0;
|
||||
|
||||
# iterating over all modules of this file
|
||||
-
|
||||
- for ( my $j = 0; $j <= $#{$moduleslist}; $j++ )
|
||||
- {
|
||||
- if ( $includefile ) { next; }
|
||||
- my $filemodule = ${$moduleslist}[$j];
|
||||
+ for my $filemodule (@$moduleslist) {
|
||||
installer::remover::remove_leading_and_ending_whitespaces(\$filemodule);
|
||||
-
|
||||
- # iterating over all modules of the package
|
||||
-
|
||||
- my $packagemodules = $onepackage->{'allmodules'};
|
||||
-
|
||||
- for ( my $k = 0; $k <= $#{$packagemodules}; $k++ )
|
||||
- {
|
||||
- if ( $includefile ) { next; }
|
||||
- my $packagemodule = ${$packagemodules}[$k];
|
||||
-
|
||||
- if ( $filemodule eq $packagemodule )
|
||||
- {
|
||||
- $includefile = 1;
|
||||
- last;
|
||||
- }
|
||||
+ if ($packagemodules{$filemodule}) {
|
||||
+ $includefile = 1;
|
||||
+ last;
|
||||
}
|
||||
}
|
||||
|
||||
- if ( $includefile )
|
||||
- {
|
||||
- push(@newfilelist, $onefile);
|
||||
- }
|
||||
- }
|
||||
+ push(@newfilelist, $onefile) if $includefile;
|
||||
+
|
||||
+ # cache last result for this modules list
|
||||
+ $lastmodules = $modulesstring;
|
||||
+ $lastincludefile = $includefile;
|
||||
|
||||
+ }
|
||||
return \@newfilelist;
|
||||
}
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
27
libreoffice-no-destdircheck.patch
Normal file
27
libreoffice-no-destdircheck.patch
Normal file
@ -0,0 +1,27 @@
|
||||
diff --git a/bin/distro-install-clean-up b/bin/distro-install-clean-up
|
||||
index 701c9ffa0972..0d0fc27246ff 100755
|
||||
--- a/bin/distro-install-clean-up
|
||||
+++ b/bin/distro-install-clean-up
|
||||
@@ -71,22 +71,3 @@ for dir in $DESTDIR$DOCDIR $DESTDIR$INSTALLDIR/sdk/examples ; do
|
||||
-name "manifest.mf" \) -exec chmod 644 {} \;
|
||||
fi
|
||||
done
|
||||
-
|
||||
-if test "z$DESTDIR" != "z" ; then
|
||||
- echo "Checking for DESTDIR inside installed files..."
|
||||
- found_destdir=
|
||||
- for file in `find $DESTDIR -type f` ; do
|
||||
- grep -q "$DESTDIR" $file && echo "$file: includes the string \"$DESTDIR\"" && found_destdir=1
|
||||
- done
|
||||
- if test "z$found_destdir" != "z" ; then
|
||||
- echo "!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!"
|
||||
- echo "The path DESTDIR:$DESTDIR was found inside some"
|
||||
- echo "installed files. It is probably a bug."
|
||||
- echo
|
||||
- echo "Especially, if the DESTDIR is set to \$RPM_BUILD_ROOT"
|
||||
- echo "when creating RPM packages. Even it could be a security hole"
|
||||
- echo "if the application searches /var/tmp for binaries or"
|
||||
- echo "config files because the directory is world-writable."
|
||||
- echo "!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!"
|
||||
- fi
|
||||
-fi
|
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 25 12:55:35 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
||||
|
||||
- Add patches speeding up install:
|
||||
* 0001-Speed-up-languagepack-installation.patch
|
||||
* libreoffice-no-destdircheck.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 22 09:53:08 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
||||
|
||||
|
@ -99,9 +99,12 @@ Patch1: scp2-user-config-suse.diff
|
||||
# FIXME: the right fix is to compile the help and produce the .db_, .ht_, and other files
|
||||
Patch2: nlpsolver-no-broken-help.diff
|
||||
Patch3: mediawiki-no-broken-help.diff
|
||||
Patch4: 0001-Speed-up-languagepack-installation.patch
|
||||
Patch5: old-boost.patch
|
||||
# try to save space by using hardlinks
|
||||
Patch990: install-with-hardlinks.diff
|
||||
# save time by relying on rpm check rather than doing stupid find+grep
|
||||
Patch991: libreoffice-no-destdircheck.patch
|
||||
BuildRequires: %{name}-share-linker
|
||||
BuildRequires: ant
|
||||
BuildRequires: autoconf
|
||||
@ -960,7 +963,9 @@ Provides %{langname} translations and additional resources (help files, etc.) fo
|
||||
%endif # Leap 42/SLE-12
|
||||
%patch2
|
||||
%patch3
|
||||
%patch4 -p1
|
||||
%patch990 -p1
|
||||
%patch991 -p1
|
||||
|
||||
# Disable some of the failing tests (some are random)
|
||||
%if 0%{?suse_version} < 1330
|
||||
|
Loading…
x
Reference in New Issue
Block a user