1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#!/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'))
|