diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2009-03-01 22:40:19 +0100 |
---|---|---|
committer | Clark Williams <williams@redhat.com> | 2009-03-27 09:37:46 -0500 |
commit | 1fd15ebc8f804ae8eb3702a753d30596cf6a8a02 (patch) | |
tree | 56c7de7e23f4c93f46d47d9bb9e9135b1d7a40c7 /py | |
parent | 28027fc26d5258efe5034bb975157a3f61dfcfec (diff) | |
download | mock-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-x | py/mock.py | 4 | ||||
-rw-r--r-- | py/mock/plugins/root_cache.py | 12 |
2 files changed, 12 insertions, 4 deletions
@@ -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 ) |