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"
|