Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/buildbot')
-rw-r--r--build_files/buildbot/slave_pack.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/build_files/buildbot/slave_pack.py b/build_files/buildbot/slave_pack.py
index 19dac236762..bbacedca0ce 100644
--- a/build_files/buildbot/slave_pack.py
+++ b/build_files/buildbot/slave_pack.py
@@ -64,7 +64,7 @@ def create_buildbot_upload_zip(builder, package_files):
sys.stderr.write('Create buildbot_upload.zip failed: ' + str(ex) + '\n')
sys.exit(1)
-def create_tar_bz2(src, dest, package_name):
+def create_tar_xz(src, dest, package_name):
# One extra to remove leading os.sep when cleaning root for package_root
ln = len(src) + 1
flist = list()
@@ -75,9 +75,20 @@ def create_tar_bz2(src, dest, package_name):
flist.extend([(os.path.join(root, file), os.path.join(package_root, file)) for file in files])
import tarfile
- package = tarfile.open(dest, 'w:bz2')
+
+ # Set UID/GID of archived files to 0, otherwise they'd be owned by whatever
+ # user compiled the package. If root then unpacks it to /usr/local/ you get
+ # a security issue.
+ def _fakeroot(tarinfo):
+ tarinfo.gid = 0
+ tarinfo.gname = "root"
+ tarinfo.uid = 0
+ tarinfo.uname = "root"
+ return tarinfo
+
+ package = tarfile.open(dest, 'w:xz', preset=9)
for entry in flist:
- package.add(entry[0], entry[1], recursive=False)
+ package.add(entry[0], entry[1], recursive=False, filter=_fakeroot)
package.close()
def cleanup_files(dirpath, extension):
@@ -163,11 +174,11 @@ def pack_linux(builder):
# Construct package name
platform_name = 'linux-' + blender_glibc + '-' + blender_arch
package_name = get_package_name(builder, platform_name)
- package_filename = package_name + ".tar.bz2"
+ package_filename = package_name + ".tar.xz"
- print("Creating .tar.bz2 archive")
- package_filepath = builder.install_dir + '.tar.bz2'
- create_tar_bz2(builder.install_dir, package_filepath, package_name)
+ print("Creating .tar.xz archive")
+ package_filepath = builder.install_dir + '.tar.xz'
+ create_tar_xz(builder.install_dir, package_filepath, package_name)
# Create buildbot_upload.zip
create_buildbot_upload_zip(builder, [(package_filepath, package_filename)])