aboutsummaryrefslogtreecommitdiff
path: root/kvm/scripts/make-release
blob: dc99e81837a3609f9ec66b926415026b2d147c76 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash -e

# usage: make-release commit  (e.g. kvm-44)
#        make-release snapshot
#        make-release name kernel-commit user-commit

name="$1"
kcommit="$2"
ucommit="$3"
formal=""
archs=(x86 ia64)

# override these in ~/.kvm-release-config
release_dir=~/sf-release
udir="$(readlink -f "$(dirname "$0")"/..)"
kdir="${udir}/linux-2.6"
upload() { rsync --progress -h "$tarball" avik@frs.sourceforge.net:uploads/; }

[[ -f ~/.kvm-release-config ]] && . ~/.kvm-release-config

[[ "$name" = kvm-* && -z "$kcommit" ]] && formal="1"

[[ -z "$name" ]] && { echo no release name; exit 1; }

if [[ "$name" == "snapshot" ]]; then
    name="kvm-snapshot-$(TZ=UTC date +%Y%m%d)"
    kcommit="HEAD"
    ucommit="HEAD"
fi

[[ -z "$kcommit" ]] && kcommit="$name"
[[ -z "$ucommit" ]] && ucommit="$name"

tarball="$name.tar.gz"
uname="$(echo "$name" | sed s/kvm/qemu-kvm-devel/)"
kname="$(echo "$name" | sed s/kvm/kvm-kmod-devel/)"
utarball="$uname.tar.gz"
ktarball="$kname.tar.gz"

cd "${release_dir}"
(cd "$udir";  git archive --format=tar --prefix="$name"/ "$ucommit") | tar x
cd "$name"
cat <<EOF > SOURCES
kernel:    $(cd "$kdir"; git rev-parse "$kcommit")
userspace: $(cd "$udir"; git rev-parse "$ucommit")
EOF

paths=(drivers/kvm virt/kvm)
files=(kvm.h kvm_host.h kvm_para.h kvm_types.h kvm_x86_emulate.h virtext.h svm.h vmx.h)
for file in "${files[@]}"; do
    for arch in "${archs[@]}"; do
	for variant in include/asm-"$arch" arch/"$arch"/include/asm; do
	    paths+=("$variant"/"$file")
	done
    done
    paths+=(include/linux/"$file")
done
for arch in "${archs[@]}"; do
    paths+=(arch/"$arch"/kvm)
done

(cd "$kdir"; git archive --format=tar --prefix=linux/ "$kcommit" "${paths[@]}") | tar x

touch kernel/config.kbuild
echo ARCH=ia64 > kernel/config.mak
make -C kernel sync LINUX=../linux version="$name"
echo ARCH=x86_64 > kernel/config.mak
make -C kernel sync LINUX=../linux version="$name"
rm -rf kernel/config.mak linux kernel/config.kbuild
rm -rf kernel/include/asm kernel/include-compat/asm
sed -i "s/kvm-devel/$name/" qemu/configure

just_userspace() {
    find "$name" | awk '
          { x=0 }
          /^[^\/]*\/kernel\// { x=1 }
          /^[^\/]*\/kernel\/include/ { x=0 }
          /^[^\/]*\/kernel\/include-compat/ { x=1 }
          x { print } '
}

cd ..

tar czf "$tarball" "$name"
tar czf "$utarball" --exclude-from=<(just_userspace) \
    --transform="s,$name/,$uname/," "$name"
tar czf "$ktarball" \
    --transform="s,$name/kernel/,$kname/," "$name/kernel"

if [[ "$name" = kvm-snapshot-* ]]; then
    mv "$tarball" "${snapshot_dir}"
elif [[ -n "$formal" ]]; then
    upload
fi

rm -rf "$name"