summaryrefslogtreecommitdiff
path: root/pactest/pmpkg.py
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2008-04-17 09:02:11 +0200
committerDan McGee <dan@archlinux.org>2008-04-17 14:29:08 -0500
commitc465d9e848b19b495259c7021a583c29fba92b44 (patch)
tree3860d73280a51a812f9625f5269f4e97b8093240 /pactest/pmpkg.py
parent5e375aa9d387b2ef703dd35f60df1daad6a40237 (diff)
downloadpacman-c465d9e848b19b495259c7021a583c29fba92b44.tar.xz
pactest : Use tarfile module.
Previously, tar was called manually with os.system. This caused one fork per package/db creation, which is costly, especially on cygwin. Besides, it also caused some problems with directory with whitespaces (that could also be fixed with quotes, but well..) Using tarfile module is cleaner and more efficient, and still easy enough. Benchmark (time make check) : - windows / cygwin prepatch: real 6m36.360s user 2m28.914s sys 2m35.866s postpatch: real 5m25.428s user 1m26.029s sys 2m0.006s - linux prepatch: real 1m22.629s user 0m31.498s sys 0m18.899s postpatch: real 1m11.465s user 0m26.382s sys 0m12.986s Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Diffstat (limited to 'pactest/pmpkg.py')
-rwxr-xr-xpactest/pmpkg.py23
1 files changed, 12 insertions, 11 deletions
diff --git a/pactest/pmpkg.py b/pactest/pmpkg.py
index 3ee58156..48d79a35 100755
--- a/pactest/pmpkg.py
+++ b/pactest/pmpkg.py
@@ -20,6 +20,7 @@ import os
import tempfile
import stat
import shutil
+import tarfile
from util import *
@@ -153,25 +154,25 @@ class pmpkg:
for i in self.backup:
data.append("backup = %s" % i)
mkfile(".PKGINFO", "\n".join(data))
- targets = ".PKGINFO"
# .INSTALL
- empty = 1
if len(self.install.values()) > 0:
- empty = 0
- if not empty:
mkinstallfile(".INSTALL", self.install)
- targets += " .INSTALL"
- # package files
- if self.files:
- targets += " *"
-
- #safely create the dir
+ # safely create the dir
mkdir(os.path.dirname(self.path))
# Generate package archive
- os.system("tar zcf %s %s" % (self.path, targets))
+ tar = tarfile.open(self.path, "w:gz")
+
+ # package files
+ for root, dirs, files in os.walk('.'):
+ for d in dirs:
+ tar.add(os.path.join(root, d), recursive=False)
+ for f in files:
+ tar.add(os.path.join(root, f))
+
+ tar.close()
os.chdir(curdir)
shutil.rmtree(tmpdir)