#!/bin/bash -e
#
# QEMU Release Script
#
# Copyright IBM, Corp. 2012
#
# Authors:
#  Anthony Liguori <aliguori@us.ibm.com>
#
# This work is licensed under the terms of the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.

if [ $# -ne 2 ]; then
    echo "Usage:"
    echo " $0 gitrepo version"
    exit 0
fi

# Only include wraps that are invoked with subproject()
SUBPROJECTS="libvfio-user keycodemapdb berkeley-softfloat-3
  berkeley-testfloat-3 arbitrary-int-1-rs bilge-0.2-rs
  bilge-impl-0.2-rs either-1-rs itertools-0.11-rs proc-macro2-1-rs
  proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs
  syn-2-rs unicode-ident-1-rs"

src="$1"
version="$2"
destination=qemu-${version}

git clone --single-branch -b "v${version}" -c advice.detachedHead=false \
    "${src}" ${destination}

pushd ${destination}

git submodule update --init --single-branch
meson subprojects download $SUBPROJECTS

(cd roms/seabios && git describe --tags --long --dirty > .version)
(cd roms/skiboot && ./make_version.sh > .version)
# Fetch edk2 submodule's submodules, since it won't have access to them via
# the tarball later.
#
# A more uniform way to handle this sort of situation would be nice, but we
# don't necessarily have much control over how a submodule handles its
# submodule dependencies, so we continue to handle these on a case-by-case
# basis for now.
(cd roms/edk2 && \
    git submodule update --init --depth 1 -- \
        ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 \
        BaseTools/Source/C/BrotliCompress/brotli \
        CryptoPkg/Library/OpensslLib/openssl \
        MdeModulePkg/Library/BrotliCustomDecompressLib/brotli)
popd
tar --exclude=.git -cJf ${destination}.tar.xz ${destination}
rm -rf ${destination}
