Add catalyst.util.create_tarball() helper function and modify snapshot target to...
authorAndrew Gaffney <agaffney@gentoo.org>
Sun, 13 Sep 2009 19:38:10 +0000 (14:38 -0500)
committerAndrew Gaffney <agaffney@gentoo.org>
Sun, 13 Sep 2009 19:38:10 +0000 (14:38 -0500)
ChangeLog
modules/catalyst/target/snapshot.py
modules/catalyst/util.py

index 77a995e9fa1bd0e9d234cd7a172e364a8346f18b..0380a5f91587bd03e8bc181c29e33bfd4a43f096 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,11 @@
 # Distributed under the GPL v2
 # $Id$
 
+  13 Sep 2009; Andrew Gaffney <agaffney@gentoo.org>
+  modules/catalyst/target/snapshot.py, modules/catalyst/util.py:
+  Add catalyst.util.create_tarball() helper function and modify snapshot
+  target to use it
+
   13 Sep 2009; Andrew Gaffney <agaffney@gentoo.org>
   modules/catalyst/target/snapshot.py, modules/catalyst/util.py:
   Create catalyst.util.rsync() helper function
index 3a52530c7f2a99817fb2ffcbf047c62fd175c31f..cbee31fd04e233bf94502a34b5080bad45fbaca9 100644 (file)
@@ -40,7 +40,7 @@ class snapshot_target(catalyst.target.generic.generic_target):
                msg("Creating Portage tree snapshot " + self.settings["version_stamp"] + \
                        " from " + self.settings["portdir"] + "...")
 
-               mytmp=self.settings["tmp_path"]
+               mytmp = self.settings["tmp_path"]
                if not os.path.exists(mytmp):
                        os.makedirs(mytmp)
 
@@ -48,8 +48,7 @@ class snapshot_target(catalyst.target.generic.generic_target):
                        extra_opts="--exclude /distfiles/ --exclude /local/ --exclude CVS/ --exclude .svn --filter=H_**/files/digest-*")
 
                msg("Compressing Portage snapshot tarball...")
-               cmd("tar cjf "+self.settings["snapshot_path"]+" -C "+mytmp+" portage",\
-                       "Snapshot creation failure",env=self.env)
+               catalyst.util.create_tarball(self.settings["snapshot_path"], "portage", mytmp)
 
                catalyst.hash.gen_contents_file(self.settings["snapshot_path"], self.settings)
                catalyst.hash.gen_digest_file(self.settings["snapshot_path"], self.settings)
@@ -62,7 +61,7 @@ class snapshot_target(catalyst.target.generic.generic_target):
                msg("Cleaning up...")
 
        def purge(self):
-               myemp=self.settings["tmp_path"]
+               myemp = self.settings["tmp_path"]
                if os.path.isdir(myemp):
                        msg("Emptying directory " + myemp)
                        catalyst.util.empty_dir(myemp)
index 94240c93760d41feb3c42dc1321856c6efe75eeb..b960227a877e061d200a2ac87042a5777dc6aad8 100644 (file)
@@ -243,4 +243,19 @@ def rsync(src, dest, delete=False, extra_opts=""):
        if retval != 0:
                raise CatalystError("Could not rsync '%s' to '%s'" % (src, dest))
 
+def create_tarball(target, src, working_dir=None, keep_perm=False):
+       pack_cmd = "tar "
+       if keep_perm:
+               pack_cmd += "cjpf "
+       else:
+               pack_cmd += "cjf "
+       pack_cmd += target
+       if working_dir:
+               pack_cmd += " -C " + working_dir
+       pack_cmd += " " + src
+       retval = catalyst.spawn.spawn_bash(pack_cmd)
+       if retval != 0:
+               raise CatalystError("Could not create tarball '%s'" % (target,))
+
+
 # vim: ts=4 sw=4 sta noet sts=4 ai