/ distribution / misc / add_tar_exec.py
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))