Changeset View
Changeset View
Standalone View
Standalone View
build_files/buildbot/slave_pack.py
| Context not available. | |||||
| sys.stderr.write('Create buildbot_upload.zip failed: ' + str(ex) + '\n') | sys.stderr.write('Create buildbot_upload.zip failed: ' + str(ex) + '\n') | ||||
| sys.exit(1) | 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 | # One extra to remove leading os.sep when cleaning root for package_root | ||||
| ln = len(src) + 1 | ln = len(src) + 1 | ||||
| flist = list() | flist = list() | ||||
| Context not available. | |||||
| flist.extend([(os.path.join(root, file), os.path.join(package_root, file)) for file in files]) | flist.extend([(os.path.join(root, file), os.path.join(package_root, file)) for file in files]) | ||||
| import tarfile | 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" | |||||
campbellbarton: Brief comment for why this is needed would be good. | |||||
| tarinfo.uid = 0 | |||||
| tarinfo.uname = "root" | |||||
| return tarinfo | |||||
| package = tarfile.open(dest, 'w:xz') | |||||
campbellbartonUnsubmitted Done Inline Actionspass preset=9 here for high compression. campbellbarton: pass `preset=9` here for high compression. | |||||
| for entry in flist: | for entry in flist: | ||||
| package.add(entry[0], entry[1], recursive=False) | package.add(entry[0], entry[1], recursive=False, filter=_fakeroot) | ||||
| package.close() | package.close() | ||||
| def cleanup_files(dirpath, extension): | def cleanup_files(dirpath, extension): | ||||
| Context not available. | |||||
| # Construct package name | # Construct package name | ||||
| platform_name = 'linux-' + blender_glibc + '-' + blender_arch | platform_name = 'linux-' + blender_glibc + '-' + blender_arch | ||||
| package_name = get_package_name(builder, platform_name) | 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") | print("Creating .tar.xz archive") | ||||
| package_filepath = builder.install_dir + '.tar.bz2' | package_filepath = builder.install_dir + '.tar.xz' | ||||
| create_tar_bz2(builder.install_dir, package_filepath, package_name) | create_tar_xz(builder.install_dir, package_filepath, package_name) | ||||
| # Create buildbot_upload.zip | # Create buildbot_upload.zip | ||||
| create_buildbot_upload_zip(builder, [(package_filepath, package_filename)]) | create_buildbot_upload_zip(builder, [(package_filepath, package_filename)]) | ||||
| Context not available. | |||||
Brief comment for why this is needed would be good.