#!/usr/bin/env bash

################################################################################
#
# Driver for Xilinx network controllers and boards
# Copyright 2021 Xilinx Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published
# by the Free Software Foundation, incorporated herein by reference.
#
################################################################################

######################################################################
# Create Source RPM packages
######################################################################

. "$(dirname "$0")/funcs.sh"
#export PATH="$bin/sh:$PATH"
export REALRPMBUILD=$(which rpmbuild)

usage () {
  err
  err "usage:  $p [options]"
  err
  err "options:"
  err "  --srpm                   - build net driver srpm"
  err "  -d --dest <dest-dir>     - destination rpm directory (defaults to $TOP/RPM)"
  err "  -v --version <version>   - version (defaults to $version)"
  err
  exit 1
}

mkdir_cd () { try mkdir -p "$1"; try cd "$1"; }

_make_xilinx-efct_srpm_tgz() {
  local pkgver="$1"
  local pkgspec="$2"
  # Populate BUILD directory
  cd "$RPM/BUILD"
  mkdir_cd ${pkgver}
  mkdir -p linux_net

  try make -C $TOP KPATH="$PWD/linux_net" export-srpm

  # Add files into BUILD
  cp $TOP/LICENSE LICENSE
  sed "s/__version__/$version/" $TOP/scripts/rpm/README > README

  # Compress BUILD into SOURCES and remove uncompressed
  try cd ..
  try tar --owner root --group root -czf "$RPM/SOURCES/${pkgver}.tar.gz" ${pkgver}
  try rm -rf ${pkgver}

  # Create SPECS/.spec file with updated version
  ( echo "%define pkgversion $version" ;
    cat $TOP/scripts/rpm/${pkgspec} ) > \
        "$RPM/SPECS/${pkgspec}"

  # extra SOURCES
  # depmod prioritization
  try echo '/etc/depmod.d/xilinx-efct.conf
 /lib/modules/%verrel%dotvariant' > "$RPM/SOURCES/files.el6"
  cp "$TOP/scripts/disttag" "$RPM/SOURCES/xilinx-efct-disttag"

  # rpmbuild
  fakeroot $REALRPMBUILD -bs --nodeps --define "_topdir $RPM" --define "disttag %{nil}" "$RPM/SPECS/${pkgspec}"
}
make_xilinx-efct_srpm() {
	_make_xilinx-efct_srpm_tgz "xilinx-efct-${version}" "xilinx-efct.spec"
}

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

quiet=false
net=false
net_dkms=false
net_kmp=false
net_kmp_suse=false
net_kmod_rhel=false
TOP=$(git rev-parse --show-toplevel 2> /dev/null)
test -z "$TOP" && TOP=$PWD
RPM="$TOP/rpm"
version=$(make -s -C $TOP version | sed 's/[_-]/./g')

while [ $# -gt 0 ]; do
  case "$1" in
  -d|--dest)    RPM="$2"; shift
                ;;
  -q|--quiet)	quiet=true
		;;
  -v|--version)	version="$2"; shift
		;;
  --srpm)	net=true
		;;
  -*)		usage
		;;
  *)		break
		;;
  esac
  shift
done

[ $# = 0 ] || usage

# Prepare.
if [ -d $TOP/.git2 ];
then
	test -z "$(git status --porcelain)" || fail "The working directory is not clean";
fi

mkdir -p "$RPM"/{,BUILD,RPMS,SRPMS,SPECS,SOURCES} && \
mkdir -p "$RPM"/RPMS/{athlon,i{3,4,5,6}86,noarch} || \
      fail "Error creating $RPM directories"

# Env var EFAB_VERSION is used by other scripts called by this.
export EFAB_VERSION="$version"
echo Version: $version

done=false
$net    && { done=true; (make_xilinx-efct_srpm)   || exit; }

$done || usage

err "\033[31m"
err "i)  Please use the runbench build-queue for customer releases (for consistency and to ensure files are owned by root). See http://intranet/staffwiki/SwReleaseProcess#SRPM"
err "ii) Please note that SRPMs/DKMSes for customers should be GPG signed as per http://intranet/staffwiki/RpmSigning#Signing_a_single_RPM_with_the_private_key_on_a_yubikey"
err "\033[0m"

exit 0
