summaryrefslogtreecommitdiffstats
path: root/py
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2009-03-01 22:40:19 +0100
committerClark Williams <williams@redhat.com>2009-03-27 09:37:46 -0500
commit1fd15ebc8f804ae8eb3702a753d30596cf6a8a02 (patch)
tree56c7de7e23f4c93f46d47d9bb9e9135b1d7a40c7 /py
parent28027fc26d5258efe5034bb975157a3f61dfcfec (diff)
downloadmock-1fd15ebc8f804ae8eb3702a753d30596cf6a8a02.tar.gz
mock-1fd15ebc8f804ae8eb3702a753d30596cf6a8a02.tar.xz
mock-1fd15ebc8f804ae8eb3702a753d30596cf6a8a02.zip
Support configurable root cache compression
This patch adds configuration options that influence how is the root cache compressed: config_opts['plugin_conf']['root_cache_opts']['compress_program'] = "gzip" config_opts['plugin_conf']['root_cache_opts']['extension'] = ".gz" Motivation to do this was to be able to use lzma compression. While it takes a long time to compress, for me it was more than two times faster than gzip when decompressing. Since I only seldom regenerate the root cache while doing a lot of builds, I was able to gain a considerable speed up.
Diffstat (limited to 'py')
-rwxr-xr-xpy/mock.py4
-rw-r--r--py/mock/plugins/root_cache.py12
2 files changed, 12 insertions, 4 deletions
diff --git a/py/mock.py b/py/mock.py
index dd5d1af..c5f057b 100755
--- a/py/mock.py
+++ b/py/mock.py
@@ -248,7 +248,9 @@ def setup_default_config_opts(config_opts, unprivUid):
'root_cache_enable': True,
'root_cache_opts': {
'max_age_days': 15,
- 'dir': "%(cache_topdir)s/%(root)s/root_cache/"},
+ 'dir': "%(cache_topdir)s/%(root)s/root_cache/",
+ 'compress_program': 'gzip',
+ 'extension': '.gz'},
'bind_mount_enable': True,
'bind_mount_opts': {'dirs': [
# specify like this:
diff --git a/py/mock/plugins/root_cache.py b/py/mock/plugins/root_cache.py
index f69f28f..8756c01 100644
--- a/py/mock/plugins/root_cache.py
+++ b/py/mock/plugins/root_cache.py
@@ -28,8 +28,14 @@ class RootCache(object):
self.rootObj = rootObj
self.root_cache_opts = conf
self.rootSharedCachePath = self.root_cache_opts['dir'] % self.root_cache_opts
- self.rootCacheFile = os.path.join(self.rootSharedCachePath, "cache.tar.gz")
+ self.rootCacheFile = os.path.join(self.rootSharedCachePath, "cache.tar")
self.rootCacheLock = None
+ self.compressProgram = self.root_cache_opts['compress_program']
+ if self.compressProgram:
+ self.compressArgs = ['--use-compress-program', self.compressProgram]
+ self.rootCacheFile = self.rootCacheFile + self.root_cache_opts['extension']
+ else:
+ self.compressArgs = []
self.state = rootObj.state
rootObj.rootCacheObj = self
rootObj.addHook("preinit", self._rootCachePreInitHook)
@@ -85,7 +91,7 @@ class RootCache(object):
self.state("unpacking root cache")
self._rootCacheLock()
mock.util.do(
- ["tar", "xzf", self.rootCacheFile, "-C", self.rootObj.makeChrootPath()],
+ ["tar"] + self.compressArgs + ["-xf", self.rootCacheFile, "-C", self.rootObj.makeChrootPath()],
shell=False
)
self._rootCacheUnlock()
@@ -105,7 +111,7 @@ class RootCache(object):
if self.rootObj.chrootWasCleaned:
self.state("creating cache")
mock.util.do(
- ["tar", "czf", self.rootCacheFile,
+ ["tar"] + self.compressArgs + ["-cf", self.rootCacheFile,
"-C", self.rootObj.makeChrootPath(), "."],
shell=False
)