| #!/usr/bin/python |
| |
| import sys, tarfile, os.path |
| |
| # usage: $0 combined.tar.gz qemu.tar.gz kvm-kmod.tar.gz |
| |
| outname, qemuname, kmodname = sys.argv[1:4] |
| |
| out = tarfile.open(name = outname, mode = 'w:gz') |
| |
| def tarcopy(dst, src, transform): |
| for member in src: |
| f = src.extractfile(member) |
| member.name = transform(member.name) |
| dst.addfile(member, f) |
| |
| def stem(fname): |
| fname = os.path.basename(fname) |
| if fname.endswith('.tar.gz'): |
| fname = fname[:-7] |
| return fname |
| |
| def transformer(old, new): |
| def transform(fname): |
| if fname.startswith(old + '/'): |
| fname = new + fname[len(old):] |
| return fname |
| return transform |
| |
| tarcopy(out, tarfile.open(name = qemuname), |
| transformer(stem(qemuname), stem(outname))) |
| |
| tarcopy(out, tarfile.open(name = kmodname), |
| transformer(stem(kmodname), stem(outname) + '/kvm/kernel')) |
| |
| |