aboutsummaryrefslogtreecommitdiff
path: root/kvm/scripts/make-combined-release
blob: adef8f6105b710aae1c966814af2285a850602b3 (plain)
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'))