commit 0d0afde9525ad3b57448d70b693689d84ab87d08
Author: Michal Srb <msrb(a)redhat.com>
Date: Mon Jul 7 10:30:49 2014 +0200
[maven.req] Initial attempt to speed maven.req generator up
depgenerators/maven.req | 54 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 42 insertions(+), 12 deletions(-)
---
diff --git a/depgenerators/maven.req b/depgenerators/maven.req
index 338b6ec..642bbf0 100755
--- a/depgenerators/maven.req
+++ b/depgenerators/maven.req
@@ -39,6 +39,7 @@ import signal
import sys
import traceback
import subprocess
+import pickle
from lxml import etree
@@ -99,19 +100,39 @@ class TagBuilder(object):
self.provided_osgi = []
self.skipped_artifacts = []
if paths:
- # let's first read all metadata files for provided artifacts
self.metadata_dir = os.path.dirname(paths[0])
- metadata_paths = []
- for dirname, _, filenames in os.walk(self.metadata_dir):
- for filename in filenames:
- if filename.endswith(".pom"):
- continue
- metadata_paths.append(os.path.join(dirname, filename))
+ metadata_paths = None
+ metadata = None
- metadata = Metadata(metadata_paths)
- self.provided_artifacts.extend(metadata.get_provided_artifacts())
- self.provided_osgi.extend(metadata.get_osgi_provides())
- self.skipped_artifacts.extend(metadata.get_skipped_artifacts())
+ try:
+ cachefile = open('.provided_artifacts.cache', 'r')
+ self.provided_artifacts = pickle.load(cachefile)
+ cachefile.close()
+ except IOError:
+ metadata_paths = self.gather_metadata_files()
+ metadata = Metadata(metadata_paths)
+ self.provided_artifacts.extend(metadata.get_provided_artifacts())
+ cachefile = open('.provided_artifacts.cache', 'w')
+ pickle.dump(self.provided_artifacts, cachefile)
+ cachefile.close()
+ try:
+ cachefile = open('.provided_osgi.cache', 'r')
+ self.provided_osgi = pickle.load(cachefile)
+ cachefile.close()
+ except IOError:
+ self.provided_osgi.extend(metadata.get_osgi_provides())
+ cachefile = open('.provided_osgi.cache', 'w')
+ pickle.dump(self.provided_artifacts, cachefile)
+ cachefile.close()
+ try:
+ cachefile = open('.skipped_artifacts.cache', 'r')
+ self.skipped_artifacts = pickle.load(cachefile)
+ cachefile.close()
+ except IOError:
+ self.skipped_artifacts.extend(metadata.get_skipped_artifacts())
+ cachefile = open('.skipped_artifacts.cache', 'w')
+ pickle.dump(self.skipped_artifacts, cachefile)
+ cachefile.close()
# list of all installed POM files
# TODO: this should be probably removed
@@ -135,6 +156,15 @@ class TagBuilder(object):
continue
self.print_mvn_requires(path)
+ def gather_metadata_files(self):
+ metadata_paths = []
+ for dirname, _, filenames in os.walk(self.metadata_dir):
+ for filename in filenames:
+ if filename.endswith(".pom"):
+ continue
+ metadata_paths.append(os.path.join(dirname, filename))
+ return metadata_paths
+
# TODO: move functions like this to some POMUtils, or similar module
def __find_poms_for_metadata(self, pom_paths, metadata_path):
poms = []
Show replies by date