forked from xen-project/xen
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmktarball
executable file
·54 lines (41 loc) · 1.45 KB
/
mktarball
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
#!/bin/bash
#
# mktarball: Make a release tarball (including xen, qemu, and qemu-traditional)
#
# Takes 2 arguments, the path to the dist directory and the version
set -ex
function git_archive_into {
mkdir -p "$2"
git --git-dir="$1"/.git \
archive --format=tar HEAD | \
tar Cxf "$2" -
}
if [[ -z "$1" || -z "$2" ]] ; then
echo "usage: $0 path-to-XEN_ROOT xen-version"
exit 1
fi
xen_root="$1"
desc="$2"
tdir="$xen_root/dist/tmp.src-tarball"
rm -rf $tdir
mkdir -p $tdir
git_archive_into $xen_root $tdir/xen-$desc
# We can't use git_archive_into with qemu upstream because it uses
# git-submodules. git-submodules are an inherently broken git feature
# which should never be used in any circumstance. Unfortunately, qemu
# upstream uses them. Relevantly for us, git archive does not work
# properly when there are submodules.
(
cd $xen_root/tools/qemu-xen-dir-remote
# if it's not clean, the qemu script will call `git stash' !
git --no-pager diff --stat HEAD
scripts/archive-source.sh $tdir/xen-$desc/tools/qemu-xen.tar
cd $tdir/xen-$desc/tools
mkdir qemu-xen
tar <qemu-xen.tar Cxf qemu-xen -
rm qemu-xen.tar
)
git_archive_into $xen_root/tools/qemu-xen-traditional-dir-remote $tdir/xen-$desc/tools/qemu-xen-traditional
git_archive_into $xen_root/extras/mini-os-remote $tdir/xen-$desc/extras/mini-os
GZIP=-9v tar cz -f $xen_root/dist/xen-$desc.tar.gz -C $tdir xen-$desc
echo "Source tarball in $xen_root/dist/xen-$desc.tar.gz"