#!/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.

function subproject_dir() {
    if test ! -f "subprojects/$1.wrap"; then
      error "scripts/archive-source.sh should only process wrap subprojects"
    fi

    # Print the directory key of the wrap file, defaulting to the
    # subproject name.  The wrap file is in ini format and should
    # have a single section only.  There should be only one section
    # named "[wrap-*]", which helps keeping the script simple.
    local dir
    dir=$(sed -n \
      -e '/^\[wrap-[a-z][a-z]*\]$/,/^\[/{' \
      -e    '/^directory *= */!b' \
      -e    's///p' \
      -e    'q' \
      -e '}' \
      "subprojects/$1.wrap")

    echo "${dir:-$1}"
}

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

exclude=(--exclude=.git)
# include the tarballs in subprojects/packagecache but not their expansion
for sp in $SUBPROJECTS; do
    if grep -xqF "[wrap-file]" subprojects/$sp.wrap; then
      exclude+=(--exclude=subprojects/"$(subproject_dir $sp)")
    fi
done
tar "${exclude[@]}" -cJf ${destination}.tar.xz ${destination}
rm -rf ${destination}
