From: George Dunlap Date: Mon, 15 Sep 2014 16:25:04 +0000 (+0100) Subject: make: Make "src-tarball" target actually make a source tarball X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~4345 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d5fb9fb71a880fe7dfb8c7de87397988520a4078;p=xen.git make: Make "src-tarball" target actually make a source tarball At the moment, making a release tarball is an annoyingly manual process that involves running "git archive" into a temporary directory. Script this process up and make a target, so that the release manager can simply type "make src-tarball-release" and have everything show up nice and neat in dist/xen-$version.tar.gz. "make src-tarball" will make a version number based on git describe, which will typically have the most recent tag, number of commits since that tag, and the git commit id of the current HEAD. Signed-off-by: George Dunlap --- diff --git a/Makefile b/Makefile index 23890574d4..3b9bf7ac40 100644 --- a/Makefile +++ b/Makefile @@ -143,6 +143,23 @@ subtree-force-update: subtree-force-update-all: $(MAKE) -C tools subtree-force-update-all +# Make a source tarball, including qemu sub-trees. +# +# src-tarball will use "git describe" for the version number. This +# will have the most recent tag, number of commits since that tag, and +# git commit id of the head. This is suitable for a "snapshot" +# tarball of an unreleased tree. +# +# src-tarball-release will use "make xenversion" as the version +# number. This is suitable for release tarballs. +.PHONY: src-tarball-release +src-tarball-release: subtree-force-update-all + bash ./tools/misc/mktarball $(XEN_ROOT) $$($(MAKE) -C xen xenversion --no-print-directory) + +.PHONY: src-tarball +src-tarball: subtree-force-update-all + bash ./tools/misc/mktarball $(XEN_ROOT) $$(git describe) + .PHONY: clean clean:: $(MAKE) -C xen clean @@ -171,13 +188,6 @@ endif .PHONY: mrproper mrproper: distclean -# Prepare for source tarball -.PHONY: src-tarball -src-tarball: distclean - $(MAKE) -C xen .banner - rm -rf xen/tools/figlet .[a-z]* - $(MAKE) -C xen distclean - .PHONY: help help: @echo 'Installation targets:' @@ -211,6 +221,10 @@ help: @echo ' install-tboot - download, build, and install the tboot module' @echo ' clean-tboot - clean the tboot module if it exists' @echo + @echo 'Package targets:' + @echo ' src-tarball-release - make a source tarball with xen and qemu tagged with a release' + @echo ' src-tarball - make a source tarball with xen and qemu tagged with git describe' + @echo @echo 'Environment:' @echo ' [ this documentation is sadly not complete ]' diff --git a/tools/misc/mktarball b/tools/misc/mktarball new file mode 100755 index 0000000000..aad10965e3 --- /dev/null +++ b/tools/misc/mktarball @@ -0,0 +1,38 @@ +#!/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 "$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 + +git_archive_into $xen_root/tools/qemu-xen-dir-remote $tdir/xen-$desc/tools/qemu-xen + +git_archive_into $xen_root/tools/qemu-xen-traditional-dir-remote $tdir/xen-$desc/tools/qemu-xen-traditional + +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"