add_tar_exec.py
1 import argparse 2 from io import BytesIO 3 import tarfile 4 5 parser = argparse.ArgumentParser( 6 description="Add the main binary to a tar and force it to be executable" 7 ) 8 parser.add_argument("input_tar_file", help="input tar file") 9 parser.add_argument("main_binary_path", help="Main executable path") 10 parser.add_argument("main_binary_tar_path", help="Main executable tar path") 11 12 args = parser.parse_args() 13 input_tar_file = args.input_tar_file 14 main_binary_path = args.main_binary_path 15 main_binary_tar_path = args.main_binary_tar_path 16 17 with open(main_binary_path, "rb") as f: 18 with tarfile.open(input_tar_file, "a") as tar: 19 data = f.read() 20 tar_info = tarfile.TarInfo(main_binary_tar_path) 21 tar_info.mode = 0o755 22 tar_info.size = len(data) 23 24 tar.addfile(tar_info, BytesIO(data))