diff options
Diffstat (limited to 'build_files/buildbot')
-rw-r--r-- | build_files/buildbot/slave_pack.py | 25 |
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)]) |