#!/bin/bash
# 2008, 2011 Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain

load_mod gear

# Universal rpmbuild function
# 1st: spec name(s) (only one if git, we will skip it)
# other parameters
uni_rpmbuild()
{
	local RET=0

	local FIVEPARAM="--define=_unpackaged_files_terminate_build 0"

	local COMMIT=""
	local COMMANDAFTER=""
	if [ "$1" = "--commit" ] ; then
		shift
		COMMIT="--commit"
		COMMANDAFTER="git reset"
	fi

	local SPECNAME="$1"
	local SPECDIR=`dirname $SPECNAME`
	local GEAR="gear -v"

	$EPMCMD assure gear

	local THRPARAM="--quiet"
	[ -n "$USE_VENDOR" ] && THRPARAM="--define=_vendor $USE_VENDOR"

	local TWOPARAM="--quiet"
	[ -n "$RPMTOPDIR" ] && TWOPARAM="--define=_topdir $RPMTOPDIR"

	local FOURPARAM="--quiet"
	if [ -n "$CCACHE_ENABLE" ] && [ -n "$CCACHE_DIR" ] ; then
		FOURPARAM="--define=__ccache_dir $CCACHE_DIR"
	fi

	local SIXPARAM="--quiet"
	[ -n "$USEDMAKE" ] && SIXPARAM="--define=make_build dmake"

	local SEVENPARAM=""
	[ -n "ALLOW_ROOT_USER" ] && SEVENPARAM="--define=_allow_root_build 1"

	if is_gear $SPECDIR ; then
		[ -f "$SPECNAME" ] || fatal "run uni_rpmbuild with spec as 2nd parameter"
		shift # skip spec name

		# FIXME: use spec name as project name
		GEARRULES=$(get_gear_rules_by_spec "$SPECNAME")

		# build package without MENV checking
		if true || [ "$MENV" = "SS" ] ; then
			LANG=$NEULOCALE docmd $NICE $GEAR $COMMIT $GEARRULES --rpmbuild -- $RPMBUILD "$TWOPARAM" "$THRPARAM" "$FOURPARAM" "$FIVEPARAM" "$SIXPARAM" "$SEVENPARAM" "$@" || RET=$?
			[ -z "$COMMANDAFTER" ] || docmd $COMMANDAFTER
		else
			fatal "Build backported src.rpm from git is unsupported now"
			# build src.rpm via hasher (on ALT)
#			$NICE gear-hsh --build-args="-bs" --rpmbuild -- $COMMAND "$ONEPARAM" $@
			#docmd $NICE $GEAR --hasher -- myhsh --build-prog=$ETERBUILDDIR/functions/rebuild $@ || RET=$?
		fi
	else
		mkdir -p $RPMTOPDIR/BUILD $RPMTOPDIR/SRPMS
		docmd $NICE $RPMBUILD "$TWOPARAM" "$THRPARAM" "$FOURPARAM" "$FIVEPARAM" "$SIXPARAM" "$@" || RET=$?
	fi

	return $RET
}


uni_buildreq()
{
	local RET=0
	local BUILDREQPARAM="$1"
	shift
	local SPECNAME=$(realpath "$1")
	shift
	local SPECDIR=`dirname $SPECNAME`
	local GEARBUILDREQ=gear-buildreq

	if is_gear $SPECDIR ; then
		# FIXME: use spec name as project name
		GEARRULES=$(get_gear_rules_by_spec "$SPECNAME")

		docmd $NICE $GEARBUILDREQ $BUILDREQPARAM $GEARRULES --commit -- "$SPECNAME" "$@" || RET=$?
	else
		docmd $NICE buildreq $BUILDREQPARAM "$SPECNAME" "$@" || RET=$?
	fi
	return $RET
}

uni_rpminstall()
{
	local RET=0
	local TWOPARAM="-v"

	if [ -n "$RPMTOPDIR" ] ; then
		TWOPARAM="--define=_topdir $RPMTOPDIR"
	fi

	#if is_gear $SPECDIR ; then
	#	$NICE $GEARBUILDREQ --commit -- $@ || RET=$?
	#else
	#	echog "Install package "
		docmd mkdir -p $RPMTOPDIR/SOURCES $RPMTOPDIR/SRPMS $RPMTOPDIR/RPMS
		docmd rpm -iv "$TWOPARAM" "$@" || RET=$?
	#fi
	return $RET
}

# remove source and spec
uni_rpmrm()
{
	local TWOPARAM="-v"

	if [ -n "$RPMTOPDIR" ] ; then
		TWOPARAM="--define=_topdir $RPMTOPDIR"
	fi

	docmd $RPMBUILD "$TWOPARAM" --rmsource --rmspec --nodeps "$@"
}

