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

# FIXME: use build directly in build scripts
load_mod build


# get correct BUILDROOT, run build_rpms_name before!
build_buildroot()
{
	test -z "$BASENAME" && fatal "Use build_buildroot with BASENAME defined"
	# ALT Only?
	BUILDROOT=`rpm --eval %buildroot | subst_namever`
	test -z "$BUILDROOT" && fatal "Fix rpm's buildroot"
	if [ "$BUILDROOT" = "%buildroot" ] ; then
		BUILDROOT="$HOME/tmp/$BASENAME-buildroot"
		warning "Can't get buildroot from RPM, set to $BUILDROOT"
		return 1
	fi
	return 0
}

#      .
#   !
#    Name:   
# TODO:     NAMESPEC,   SPECNAME

build_rpms_name()
{
	local tmprpm CATSPEC NAMESPEC PKGARCH
	#TODO change : to = and execute?
	NAMESPEC=$1
	shift
	test -f "$NAMESPEC" || fatal "Spec $NAMESPEC does not exist"

	tmprpm=`make_temp_file $NAME`
	# Optimization
	eval_spec $NAMESPEC $@ | grep ":"  >$tmprpm
	BASENAME=$(cat $tmprpm | get_var "Name")
	RELEASE=$(cat $tmprpm | get_var "Release")
	VERSION=$(cat $tmprpm | get_var "Version")
	TARBALLNAME=$(cat $tmprpm | get_var "Source.*")
	[ -n "$TARBALLNAME" ] && TARBALLNAME=$(basename $TARBALLNAME)

	PKGARCH=$(cat $tmprpm | get_var "BuildArch")
	if [ "$PKGARCH" != "noarch" ] ; then
		PKGARCH=$DEFAULTARCH
	fi
	NAMERPMIN=$BASENAME-$VERSION-$RELEASE.$PKGARCH.rpm
	NAMESRPMIN=$BASENAME-$VERSION-$RELEASE.src.rpm

	RPMSOURCEDIR=`rpm --eval %_sourcedir | subst_namever`
	[ -n "$RPMSOURCEDIR" ] || fatal "Can't detect RPM/SOURCES dir"

	local BNS NSS
	BNS="$BASENAME".spec
	NSS=`basename $NAMESPEC`
	test "$NSS" != "$BNS" && warning "Spec name ($NSS) is not equal to Name of package ($BNS)"
	rm -f $tmprpm

	build_buildroot
}


# build binary package list (1st - repo dir, 2st - pkgname)
# algorithm: list all files in PKGDIR, print packages with our source pkg name
get_binpkg_list()
{
	local PKGDIR=$1
	local PKGNAME=$(basename $2)
	find "$PKGDIR" ! -name '*\.src\.rpm' -name '*\.rpm' -execdir \
		rpmquery -p --qf='%{sourcerpm}\t%{name}-%{version}-%{release}.%{arch}.rpm\n' "{}" \; \
		| grep "^$PKGNAME[[:space:]].*" | cut -f2 | xargs -n1 -I "{}" echo "$PKGDIR/{} "
}

drop_pkg_extensions()
{
	for i in $@ ; do
		echo -n "$(basename $i) " | sed -e "s|\.[a-z0-9]*\.rpm||g"
	done
}

