#!/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 "$src/subprojects/$1.wrap"; then
      echo "scripts/archive-source.sh should only process wrap subprojects"
      exit 1
    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 '}' \
      "$src/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 anyhow-1-rs arbitrary-int-1-rs attrs-0.2-rs bilge-0.2-rs
  bilge-impl-0.2-rs either-1-rs foreign-0.3-rs itertools-0.11-rs
  libc-0.2-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.

# As recommended by the EDK2 readme, we don't use --recursive here.
# EDK2 won't use any code or feature from a submodule of a submodule,
# so we don't need to add them to the tarball.
# Although we don't necessarily need all of the submodules that EDK2
# has, we clone them all, to avoid running into problems where EDK2
# adds a new submodule or changes its use of an existing one and
# the sources we ship in the tarball then fail to build.
(cd roms/edk2 && git submodule update --init --depth 1)
popd

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