mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 15:58:50 -05:00
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>
This commit is contained in:
parent
5e375aa9d3
commit
c465d9e848
@ -19,6 +19,7 @@
|
||||
import os
|
||||
import tempfile
|
||||
import shutil
|
||||
import tarfile
|
||||
|
||||
import pmpkg
|
||||
from util import *
|
||||
@ -343,7 +344,13 @@ class pmdb:
|
||||
# Generate database archive
|
||||
mkdir(path)
|
||||
archive = os.path.join(path, "%s%s" % (self.treename, PM_EXT_DB))
|
||||
os.system("tar zcf %s *" % archive)
|
||||
tar = tarfile.open(archive, "w:gz")
|
||||
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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user