#!/bin/sh
set -e

if [ $# -lt 2 ]; then
	echo Usage: $0 platform source [architecture]
	exit 1
fi

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

# Determine architecture
if [ -n "$ARCH_ARG" ]; then
	ARCH=$ARCH_ARG
else
	case "x$ISE_PLATFORM" in
		"xlinux-x86-64") ARCH=amd64;;
		"xlinux-x86") ARCH=i386;;
		"xlinux-arm64") ARCH=arm64;;
		"xlinux-armv7") ARCH=armhf;;
		"xlinux-armv6") ARCH=armel;;
		"xlinux-ppc") ARCH=powerpc;;
		*) ARCH=`dpkg-architecture -qDEB_BUILD_ARCH`;;
	esac
fi
if ! dpkg-architecture -L | grep -qx $ARCH; then
	echo "$ARCH is not a valid architecture!"
	echo "Common architectures are: amd64 arm64 armhf i386 (type \`dpkg-architecture -L\` for a complete list)"
	exit 1
fi

# 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.
DEB_ROOT=$DEBIAN_DIR/$PRODUCT
DEB_INSTALL_DIR=/usr/lib/$PRODUCT
DEB_DOC_DIR=$DEB_ROOT/usr/share/doc/$PRODUCT
APPLICATIONS_DIR=$DEB_ROOT/usr/share/applications
ICONS_DIR=$DEB_ROOT/usr/share/icons/hicolor/48x48/apps
ALTERNATIVE_PRIORITY=`expr $MAJOR_NUMBER \* 100 + $MINOR_NUMBER`

rm -rf $DEB_ROOT
mkdir -p $DEB_ROOT/DEBIAN $DEB_ROOT/usr/lib $DEB_DOC_DIR $APPLICATIONS_DIR $ICONS_DIR

echo "Copying $ISE_EIFFEL into $DEB_INSTALL_DIR"
cp -a $ISE_EIFFEL $DEB_ROOT$DEB_INSTALL_DIR

LAUNCHER_DIR=$DEB_ROOT/usr/bin
LAUNCHER_ISE_EIFFEL=$DEB_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/copyright $DEB_DOC_DIR/copyright
. $DEBIAN_DIR/changelog.sh

# Prepare debian packaging files
chmod -R u+rwX,go-w,go+rX $DEB_ROOT
. $DEBIAN_DIR/postinst.sh
. $DEBIAN_DIR/prerm.sh
. $DEBIAN_DIR/control.sh
(cd $DEB_ROOT && find usr -type f -print0 | xargs -0 md5sum > DEBIAN/md5sums)

echo "Building $PRODUCT ($ARCH) package"
dpkg-deb --root-owner-group -Zxz --build $DEB_ROOT ${PRODUCT}_$VERSION-1_$ARCH.deb >>$LOG 2>>$LOG

# Clean up all build files
rm -rf $DEB_ROOT
