#!/usr/bin/env bash

#
#  helper script: generate deblobbed stable u-boot source code releases
#
#	Copyright (C) 2020,2021 Leah Rowe <info@minifree.org>
#	Copyright (C) 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e

version="v2022.04"
revision="r1"

printf "Building source code archive, version %s revision %s\n" "${version}" "${revision}"

this_dir=$(realpath $(dirname $(realpath $0)))
if [[ -x "${this_dir}/../../../../download" ]] # in libreboot tree?
then
   topdir="${this_dir}/../../../../"
   download_dir=u-boot/u-boot
   tmpdir="${topdir}/release/u-boot-libre"
   download=( "${topdir}/download" u-boot )
   bloblist="resources/u-boot/default/blobs.list"
elif [[ -x ./u-boot-download.sh ]] # standalone?
then
   topdir="${this_dir}"
   download_dir="${this_dir}"
   tmpdir="${this_dir}"
   download=( "${this_dir}"/u-boot-download.sh )
   bloblist="${this_dir}"/u-boot-blobs.list
else
   exit 1
fi
cd "${topdir}"
"${download[@]}" "${version}" "${download_dir}" "${bloblist}"

release="u-boot-libre-${version/v/}-${revision}"
tarball="${tmpdir}/${release}.tar"

rm -rf \
   "${tmpdir}/" \
   "${tarball}" \
   "${tarball}.lz" \
   "${tarball}.xz"

mkdir -p "${tmpdir}"
cp -R "${download_dir}/" "${tmpdir}/${release}"

rm -rf ${tmpdir}/.git ${tmpdir}/${release}/.gitignore
make -C ${tmpdir} distclean

prefix="$(sed 's#^/*##' <<<${tmpdir})/"
tar cf "${tarball}" "${tmpdir}/${release}"  --transform="s#${prefix}##"
lzip -9 --keep -vv "${tarball}"
xz   -9 --keep -vv "${tarball}"

rm -rf "${tmpdir}/${release}/"

printf "Source code archives available at:\n\t%s\n\t%s\n\t%s\n" \
       "${tarball}" \
       "${tarball}.lz" \
       "${tarball}.xz"
