mirror of https://gitlab.com/ita1024/waf.git
#1066: need to check if it works properly on win32
This commit is contained in:
parent
612cb9b8b3
commit
d421f58c5c
|
@ -345,19 +345,7 @@ class Dist(Context.Context):
|
|||
tar = tarfile.open(arch_name, 'w:' + self.algo.replace('tar.', ''))
|
||||
|
||||
for x in files:
|
||||
tinfo = tar.gettarinfo(name=x.abspath(), arcname=self.get_tar_prefix() + '/' + x.path_from(self.base_path))
|
||||
tinfo.uid = 0
|
||||
tinfo.gid = 0
|
||||
tinfo.uname = 'root'
|
||||
tinfo.gname = 'root'
|
||||
|
||||
fu = None
|
||||
try:
|
||||
fu = open(x.abspath(), 'rb')
|
||||
tar.addfile(tinfo, fileobj=fu)
|
||||
finally:
|
||||
fu.close()
|
||||
|
||||
self.add_tar_file(x, tar)
|
||||
tar.close()
|
||||
elif self.algo == 'zip':
|
||||
import zipfile
|
||||
|
@ -381,6 +369,29 @@ class Dist(Context.Context):
|
|||
|
||||
Logs.info('New archive created: %s%s' % (self.arch_name, digest))
|
||||
|
||||
def add_tar_file(self, x, tar):
|
||||
"""
|
||||
Add a file to the tar archive. Transform symlinks into files if the files lie out of the project tree.
|
||||
"""
|
||||
p = x.abspath()
|
||||
realpath = os.path.realpath(p)
|
||||
dir = os.path.dirname(self.path.abspath())
|
||||
if not realpath.startswith(dir):
|
||||
p = realpath
|
||||
|
||||
tinfo = tar.gettarinfo(name=p, arcname=self.get_tar_prefix() + '/' + x.path_from(self.base_path))
|
||||
tinfo.uid = 0
|
||||
tinfo.gid = 0
|
||||
tinfo.uname = 'root'
|
||||
tinfo.gname = 'root'
|
||||
|
||||
fu = None
|
||||
try:
|
||||
fu = open(p, 'rb')
|
||||
tar.addfile(tinfo, fileobj=fu)
|
||||
finally:
|
||||
fu.close()
|
||||
|
||||
def get_tar_prefix(self):
|
||||
try:
|
||||
return self.tar_prefix
|
||||
|
|
Loading…
Reference in New Issue