#!/bin/sh
set -e

if [ $# != 2 ]; then
	echo Usage: $0 platform source
	exit 1
fi

LOG=`pwd`/rpm.log
>$LOG
set -- $1 $2
. ./packaging/config.sh
ISE_EIFFEL=`cd $ISE_EIFFEL && pwd`

# Determine architecture
case "x$ISE_PLATFORM" in
	"xlinux-x86") ARCH=i686;;
	"xlinux-x86-64") ARCH=x86_64;;
	"xlinux-arm64") ARCH=aarch64;;
	"xlinux-armv7") ARCH=armv7hl;;
	"xlinux-ppc") ARCH=ppc;;
	*) echo "No architecture mapping for ISE_PLATFORM=$ISE_PLATFORM"; exit 1;;
esac

# The delivery is installed as is (self-contained layout) in /usr/lib/$PRODUCT,
# with versioned launchers in /usr/bin, and unversioned ones managed as alternatives.
RPM_STAGE_DIR=$RPM_DIR/eiffelstudio
RPM_INSTALL_DIR=/usr/lib/$PRODUCT
RPM_SPEC=$RPM_DIR/eiffelstudio.spec
DOC_DIR=$RPM_STAGE_DIR/usr/share/doc/$PRODUCT
APPLICATIONS_DIR=$RPM_STAGE_DIR/usr/share/applications
ICONS_DIR=$RPM_STAGE_DIR/usr/share/icons/hicolor/48x48/apps
ALTERNATIVE_PRIORITY=`expr $MAJOR_NUMBER \* 100 + $MINOR_NUMBER`

rm -rf $RPM_STAGE_DIR
mkdir -p $RPM_STAGE_DIR/usr/lib $DOC_DIR $APPLICATIONS_DIR $ICONS_DIR

echo "Copying $ISE_EIFFEL into $RPM_INSTALL_DIR"
cp -a $ISE_EIFFEL $RPM_STAGE_DIR$RPM_INSTALL_DIR

LAUNCHER_DIR=$RPM_STAGE_DIR/usr/bin
LAUNCHER_ISE_EIFFEL=$RPM_INSTALL_DIR
LAUNCHER_SUFFIX=$RELEASE_SUFFIX
. $PACKAGING_DIR/launcher.sh

DESKTOP_FILE=$APPLICATIONS_DIR/$PRODUCT.desktop
DESKTOP_EXEC=/usr/bin/estudio$RELEASE_SUFFIX
DESKTOP_ICON=$PRODUCT
. $PACKAGING_DIR/desktop.sh
cp $PACKAGING_DIR/logo.png $ICONS_DIR/$PRODUCT.png

cp $PACKAGING_DIR/license $DOC_DIR/LICENSE
cp $PACKAGING_DIR/copyright $DOC_DIR/COPYING
chmod -R u+rwX,go-w,go+rX $RPM_STAGE_DIR


# Prepare spec file
. $RPM_DIR/eiffelstudio.spec.sh


# Build main package
echo "Building RPM package for $PRODUCT ($ARCH)"
rpmbuild -bb --target $ARCH $RPM_SPEC >>$LOG 2>>$LOG


# Move all generated .rpm files to current directory, and sign them if the key is available
RPM_FILES=`find $RPM_DIR/RPMS -type f -name "*.rpm"`
mv -t ./ $RPM_FILES
if which gpg rpmsign > /dev/null 2>&1 && gpg --list-secret-keys $KEY > /dev/null 2>&1; then
	for RPM_FILE in $RPM_FILES; do
		echo "$PASS_PHRASE" | setsid rpmsign --addsign --define "_gpg_name $KEY" `basename $RPM_FILE` >>$LOG 2>>$LOG
	done
fi


# Clean up RPM directory
rm -f $RPM_SPEC
rm -rf $RPM_STAGE_DIR $RPM_DIR/tmp $RPM_DIR/RPMS $RPM_DIR/BUILD $RPM_DIR/BUILDROOT $RPM_DIR/SRPMS $RPM_DIR/SOURCES $RPM_DIR/SPECS
