#!/bin/sh

set -e

# We want to test if the user can build all the packages and applications that
# we ship in Debian.

# Quite a lot of the packages fail, most (if not all) on broken dependencies
# (that are not even in the lazarus source), but it seems that the result is
# not everywhere the same. Building them, but ignoring the failure.

FILES="$(find /usr/lib/lazarus/default/ -name "*.lpk" | sort)"
DEB_TARGET_MULTIARCH=`dpkg-architecture -q DEB_TARGET_MULTIARCH`

FAILED=""
for FILE in $FILES ; do
	echo
	echo "CI building $FILE"
	CMD="lazbuild --max-process-count=1 -B ${FILE}"
	echo Running: HOME="${AUTOPKGTEST_TMP:-/tmp}" ${CMD}
	if HOME="${AUTOPKGTEST_TMP:-/tmp}" ${CMD}
	then
		SUCCESS="${SUCCESS} $FILE"
	else
		FAILED="${FAILED} $FILE"
	fi
done

NOT_EXPECTED=""
EXPECTED=""
for FILE in $FAILED ; do
    case ${FILE##*/} in
        LazActiveX.lpk) EXPECTED="$EXPECTED $FILE" ;;
        gdbmitestutils.lpk) EXPECTED="$EXPECTED $FILE" ;;
        lr_officeimport.lpk) EXPECTED="$EXPECTED $FILE" ;;
        lrspreadsheetexport.lpk) EXPECTED="$EXPECTED $FILE" ;;
        lazreportpdfexport.lpk) EXPECTED="$EXPECTED $FILE" ;;
        lr_zeosdb.lpk) EXPECTED="$EXPECTED $FILE" ;;
        tachartfpvectorial.lpk) if test ${DEB_TARGET_MULTIARCH} = 'powerpc64le-linux-gnu' ; then EXPECTED="$EXPECTED $FILE" ; fi ;;
        tachartbgra.lpk) EXPECTED="$EXPECTED $FILE" ;;
        lazdebugtestbase.lpk) EXPECTED="$EXPECTED $FILE" ;;
        fcl_unicodertl.lpk) EXPECTED="$EXPECTED $FILE" ;;
        *) NOT_EXPECTED="$NOT_EXPECTED $FILE" ;;
    esac
done

if [ -n "${SUCCESS}" ] ; then
    echo
    echo "The following files succeeded:"
    for FILE in ${SUCCESS} ; do
        echo $FILE
    done
fi

if [ -n "${EXPECTED}" ] ; then
    echo
    echo "The following files failed expectedly:"
    for FILE in $EXPECTED ; do
        echo $FILE
    done
fi

if [ -n "${NOT_EXPECTED}" ] ; then
    echo
    echo "The following files failed unexpectedly:"
    for FILE in $NOT_EXPECTED ; do
        echo $FILE
    done
    exit 1
fi
