* no_same_owner bits... test please.

This commit is contained in:
Faik Uygur
2006-11-27 15:01:13 +00:00
parent ae3e1918a3
commit dd3e4bb574
2 changed files with 9 additions and 2 deletions
+8 -1
View File
@@ -71,10 +71,11 @@ class ArchiveTar(ArchiveBase):
type. Provides access to tar, tar.gz and tar.bz2 files. type. Provides access to tar, tar.gz and tar.bz2 files.
This class provides the unpack magic for tar archives.""" This class provides the unpack magic for tar archives."""
def __init__(self, file_path, arch_type = "tar", no_same_permissions = True): def __init__(self, file_path, arch_type = "tar", no_same_permissions = True, no_same_owner = True):
super(ArchiveTar, self).__init__(file_path, arch_type) super(ArchiveTar, self).__init__(file_path, arch_type)
self.tar = None self.tar = None
self.no_same_permissions = no_same_permissions self.no_same_permissions = no_same_permissions
self.no_same_owner = no_same_owner
def unpack(self, target_dir, clean_dir = False): def unpack(self, target_dir, clean_dir = False):
"""Unpack tar archive to a given target directory(target_dir).""" """Unpack tar archive to a given target directory(target_dir)."""
@@ -103,6 +104,9 @@ class ArchiveTar(ArchiveBase):
oldwd = os.getcwd() oldwd = os.getcwd()
os.chdir(target_dir) os.chdir(target_dir)
uid = os.getuid()
gid = os.getgid()
install_tar_path = util.join_path(ctx.config.tmp_dir(), ctx.const.install_tar) install_tar_path = util.join_path(ctx.config.tmp_dir(), ctx.const.install_tar)
for tarinfo in self.tar: for tarinfo in self.tar:
# Installing packages (especially shared libraries) is a # Installing packages (especially shared libraries) is a
@@ -132,6 +136,9 @@ class ArchiveTar(ArchiveBase):
if self.no_same_permissions and not os.path.islink(tarinfo.name): if self.no_same_permissions and not os.path.islink(tarinfo.name):
os.chmod(tarinfo.name, tarinfo.mode & ~ctx.const.umask) os.chmod(tarinfo.name, tarinfo.mode & ~ctx.const.umask)
if self.no_same_owner and not os.path.islink(tarinfo.name):
os.chown(tarinfo.name, uid, gid)
os.chdir(oldwd) os.chdir(oldwd)
self.close() self.close()
+1 -1
View File
@@ -88,7 +88,7 @@ class Package:
def extract_install(self, outdir): def extract_install(self, outdir):
if self.impl.has_file(ctx.const.install_tar_lzma): if self.impl.has_file(ctx.const.install_tar_lzma):
self.extract_file(ctx.const.install_tar_lzma, ctx.config.tmp_dir()) self.extract_file(ctx.const.install_tar_lzma, ctx.config.tmp_dir())
tar = archive.ArchiveTar(join(ctx.config.tmp_dir(), ctx.const.install_tar_lzma), 'tarlzma', False) tar = archive.ArchiveTar(join(ctx.config.tmp_dir(), ctx.const.install_tar_lzma), 'tarlzma', False, False)
tar.unpack_dir(outdir) tar.unpack_dir(outdir)
else: else:
self.extract_dir_flat('install', outdir) self.extract_dir_flat('install', outdir)