#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# X-SPDX-Copyright-Text: (c) Copyright 2015-2019 Xilinx, Inc.
######################################################################

me=$(basename "$0")
err()  { echo >&2 "$*"; }
log()  { err "$me: $*"; }
fail() { log "$*"; exit 1; }
try()  { "$@" || fail "FAILED: $*"; }


usage_msg() {
  err
  err "usage:"
  err "  $me <onload-tarball>"
  err
  err "options:"
  err
}


usage() {
  usage_msg
  exit 1
}


logtry() {
  log "$*"
  try "$@"
}


cleanup() {
  [ -d "$tmpd" ] && rm -rf "$tmpd"
}


######################################################################
# main()

while [ $# -gt 0 ]; do
  case "$1" in
    -*)	usage;;
    *)	break;;
  esac
  shift
done

[ $# = 1 ] || usage
tarball="$1"

# We build Onload source rpm on RHEL6 as the earliest supported distro
try egrep -q "Red Hat Enterprise Linux.*release 6|CentOS (Linux )*release 6" \
  /etc/redhat-release

tmpd=
trap cleanup EXIT
tmpd=$(mktemp -d /tmp/$me.XXXXXXXX)

try [ -f "$tarball" ]
tarballdir=$(cd "$(dirname "$tarball")" && /bin/pwd)
tarballbase=$(basename "$tarball")
tarball="$tarballdir/$tarballbase"
try [ -f "$tarball" ]

original_wd=$(/bin/pwd)
try cd "$tmpd"

# Edit the "Packager" line in the rpm spec file and rebuild tarball.
try tar xf "$tarball"
distd="$(basename "${tarball%.tgz}")"
try [ -d "$distd" ]
tab=$(echo -n -e "\t")
try sed -i \
  -e "/^#Packager\s*:/ cPackager$tab: Solarflare Communications, Inc." \
  "$distd/scripts/onload_misc/openonload.spec"
tarball=$(basename "$tarball")
try tar czf "$tarball" --owner=root --group=root "$distd"

# Build source rpm.
try mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
try rpmbuild --nodeps --define "_topdir $PWD/rpmbuild" -ts "$tarball"
srpm=$(/bin/ls rpmbuild/SRPMS/*.rpm)
srpmbase=$(basename "$srpm")
destfile="$original_wd/$(echo "$srpmbase" | sed -e 's/\.el6//')"
[ -f "$destfile" ] &&
  fail "ERROR: '$destfile' already exists.  I will not overwrite."
try cp "$srpm" "$destfile"
echo "$destfile"
