#!/bin/bash
#
# Creates packages from build repository
#
# $Id$
#
# Syntax: build2pkg [version-tag [pkg list]]
#

umask 022
dname=`dirname $0`
prem=`echo $dname |cut -c1`
if [ ${prem} == "/" ]; then
	export TOOLHOME=$dname
else
	export TOOLHOME=${PWD}/$dname
fi

. $TOOLHOME/common-env
. $TOOLHOME/distro-env

# We need to get $VER and $TAG
if [ "$1" = "" ]; then
	LAST=`cat ${TOPDIR}/LAST`
else
	LAST=$1
	shift
fi
VER=`echo $LAST | cut -d- -f1`
TAG=`echo $LAST | cut -d- -f2`
echo "Working on ${VER}-$TAG"
	
if [ "$1" = "" ]; then
	c="mondo-doc mindi mondo"
else
	if [ "$1" = "all" ]; then
		c="mindi-kernel mondo-doc mindi mondo"
	else
		c=$1
	fi
fi

status=0

#
# Define on which distro we are to generate the right packages
#

export pkg=""
echo "Working under $TOPBUILDDIR"
cd $TOPBUILDDIR

for p in $c; do
	# s= stable; t = trunk; 1-9 = official version
	src=${TOPDIR}/${VER}-$TAG/$p-[1-9st]*.tar.gz
	pv=`basename $src .tar.gz`
	PVER=`echo $pv | sed "s|^$p-||" | cut -d- -f1`

	if [  _"$dtype" = _"rpm" ]; then
		if [ _"$p" = _"mondo-doc" ]; then
			ar="noarch"
		else
			ar=$ARCH
		fi
		pkg1="${TOPBUILDDIR}/RPMS/${ar}/$pv${suf}.${ar}.rpm"
		#rm -f $pkg1

		pkg="$pkg $pkg1"

		log=$TMP/$p-rpm.log

		if [ "$dfam" = "mandriva" ] || [ "$dfam" = "suse" ]; then
			echo "Generating bzip2 files ($dfam)"
			gzip -cd $src | bzip2 -c3 > SOURCES/$pv.tar.bz2
		else
			ln -sf $src SOURCES/
		fi
		echo "Generating $p RPMS"
		cd SPECS
		tar xfz $src $p-${PVER}/distributions/${ddir}-$dver/$p.spec
		mv $p-${PVER}/distributions/${ddir}-$dver/$p.spec .
		rm -rf $p-${PVER}

		rpmbuild -ba $p.spec 2> $log 1> $log
		if [ $? != 0 ]; then 
			cat $log
			status=-1
		else
			egrep '^Wrote:' $log
			if [ -f /usr/bin/rpmlint ]; then
				/usr/bin/rpmlint `egrep '^Wrote:' $log | cut -d: -f2`
			else
				echo "No rpmlint found, please install it"
			fi
		fi
		rm -rf ${TOPBUILDDIR}/BUILD/*
		cd ..
	elif [  _"$dtype" = _"ebuild" ]; then
		log=$TMP/$p-gentoo.log
		tar xfz $src $p-${PVER}/distributions/${ddir}-$dver/$p-${VER}.ebuild
		if [ _"`grep $TOPBUILDDIR/portage /etc/make.conf`" = _"" ]; then
			echo "Adding $TOPBUILDDIR/portage to /etc/make.conf"
			echo "PORTDIR_OVERLAY=\"$TOPBUILDDIR/portage\"" >> /etc/make.conf
		fi

		mkdir -p ${TOPBUILDDIR}/portage/sys-apps/$p
		mv $p-${PVER}/distributions/${ddir}-$dver/$p-${PVER}.ebuild ${TOPBUILDDIR}/portage/sys-apps/$p/$p-${PVER}.ebuild
		rm -rf $p-${PVER}

		cd ${TOPBUILDDIR}/portage/sys-apps/$p
		ebuild $p-${PVER}.ebuild digest 2> $log 1> $log
		if [ $? != 0 ]; then 
			cat $log
			status=-1
		fi
		ebuild $p-${PVER}.ebuild install 2>> $log 1>> $log
		if [ $? != 0 ]; then 
			cat $log
			status=-1
		fi
	elif [  _"$dtype" = _"deb" ]; then
		log=$TMP/$p-deb.log
		export TMPDIR=/tmp
		cd $TOPBUILDDIR
		tar xfz $src
		cd ${p}-${PVER}
		# point to the right debian conf
		ln -s distributions/${ddir}-$dver debian
		dpkg-buildpackage -us -uc -rfakeroot
		# Et voila !
	else
		echo "Unknown"
	fi
done
echo "Packages handled : $pkg"

rm -rf $TMP

if [ $status = 0 ]; then
	if [  _"$dtype" = _"rpm" ]; then
		echo "Installing RPMS as root"
		su - -c "$opt rpm -Uvh --force $pkg"
	fi
fi
