X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Fpackage%2Farchive.py;fp=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Fpackage%2Farchive.py;h=245f69c42e08bbde026cb5cbeb78faab2fd2a088;hb=81e7ba58f7b5f3a169a0bbc7640a04b52e5e4722;hp=fffce99edb1c4862e2cb9d009c7c76454fce9d7e;hpb=1710c5baaf44e962f63273f5f04e9bbcc62aa2e5;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/archive.py b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/archive.py index fffce99e..245f69c4 100644 --- a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/archive.py +++ b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/archive.py @@ -53,13 +53,14 @@ class TarPackageArchive(object): self.load_archive() @classmethod - def from_package(cls, log, pkg, tar_file_hdl): + def from_package(cls, log, pkg, tar_file_hdl, top_level_dir=None): """ Creates a TarPackageArchive from a existing Package Arguments: log - logger pkg - a DescriptorPackage instance tar_file_hdl - a writeable file handle to write tar archive data + top_level_dir - (opt.) top level dir under which the archive will be extracted Returns: A TarPackageArchive instance @@ -73,8 +74,10 @@ class TarPackageArchive(object): tar_info.gname = "rift" archive = TarPackageArchive(log, tar_file_hdl, mode='w:gz') + for pkg_file in pkg.files: - tar_info = tarfile.TarInfo(name=pkg_file) + filename = "%s/%s" % (top_level_dir, pkg_file) if top_level_dir else pkg_file + tar_info = tarfile.TarInfo(name=filename) tar_info.type = tarfile.REGTYPE tar_info.mode = pkg.get_file_mode(pkg_file) set_common_tarinfo_fields(tar_info) @@ -83,7 +86,8 @@ class TarPackageArchive(object): archive.tarfile.addfile(tar_info, pkg_file_hdl) for pkg_dir in pkg.dirs: - tar_info = tarfile.TarInfo(name=pkg_dir) + dirname = "%s/%s" % (top_level_dir, pkg_dir) if top_level_dir else pkg_dir + tar_info = tarfile.TarInfo(name=dirname) tar_info.type = tarfile.DIRTYPE tar_info.mode = 0o775 set_common_tarinfo_fields(tar_info)