#!/bin/bash -e usage() { echo "usage: $0 [--upload] [--formal] commit [name] [tarball] [user]" exit 1 } [[ -f ~/.kvmreleaserc ]] && . ~/.kvmreleaserc upload= formal= releasedir=~/sf-release [[ -z "$TMP" ]] && TMP="/tmp" tmpdir=`mktemp -d "$TMP/qemu-kvm-make-release.XXXXXXXXXX"` while [[ "$1" = -* ]]; do opt="$1" shift case "$opt" in --upload) upload="yes" ;; --formal) formal="yes" ;; *) usage ;; esac done commit="$1" name="$2" if [[ -z "$commit" ]]; then usage fi if [[ -z "$name" ]]; then name="$commit" fi tarball="$3" if [[ -z "$tarball" ]]; then tarball="$releasedir/$name.tar.gz" fi #strip trailing .gz if any tarball=${tarball/%.gz/} cd "$(dirname "$0")"/../.. mkdir -p "$(dirname "$tarball")" git archive --prefix="$name/" --format=tar "$commit" > "$tarball" mtime=`git show --pretty=format:%ct "$commit""^{commit}" -- | head -n 1` tarargs="--owner=root --group=root" mkdir -p "$tmpdir/$name" git cat-file -p "${commit}:roms" | awk ' { print $4, $3 } ' \ > "$tmpdir/$name/EXTERNAL_DEPENDENCIES" touch -d "@$mtime" "$tmpdir/$name/EXTERNAL_DEPENDENCIES" tar -rf "$tarball" -C "$tmpdir" \ $tarargs \ "$name/EXTERNAL_DEPENDENCIES" rm -rf "$tmpdir" if [[ -n "$formal" ]]; then mkdir -p "$tmpdir/$name" echo "$name" > "$tmpdir/$name/KVM_VERSION" touch -d "@$mtime" "$tmpdir/$name/KVM_VERSION" tar -rf "$tarball" -C "$tmpdir" "$name/KVM_VERSION" \ $tarargs rm -rf "$tmpdir" fi rm -f "$tarball.gz" gzip -9 "$tarball" tarball="$tarball.gz" if [[ -n "$upload" ]]; then rsync --progress -h "$tarball" avik@frs.sourceforge.net:uploads/ fi