#!/bin/sh
set -e

# compilation will succeed, but the module may not be loadable due to mismatching symvers
#export IGNORE_CC_MISMATCH=1

test -x /usr/bin/module-assistant || apt-get install module-assistant

cd /usr/src

summary=
nl="
"

kernels=
slenrek=
failed=
kmin=3.10
for k in $(ls -dvr1 /lib/modules/*/build 2>/dev/null | cut -d/ -f4) ; do
	if dpkg --compare-versions "$k" lt "$kmin" ; then
		summary="${summary}SKIP $k (older than $kmin)${nl}"
		continue
	fi
	kconfig=/lib/modules/$k/build/.config
	if [ -f "$kconfig" ]; then
		if grep -q -E "^CONFIG_PREEMPT_RT=[ym]" $kconfig ; then
			summary="${summary}SKIP $k (CONFIG_PREEMPT_RT)${nl}"
			continue
		fi
		if grep -q -E "^CONFIG_PREEMPT_RT_FULL=[ym]" $kconfig ; then
			summary="${summary}SKIP $k (CONFIG_PREEMPT_RT_FULL)${nl}"
			continue
		fi
	fi
	kernels="$kernels $k"
	slenrek="$k $slenrek"
done

modules=nvidia-kernel

module-assistant clean $modules
for k in $kernels ; do
	ret=0
	module-assistant build --text-mode --force --kvers-list "$k" $modules || ret=$?
	if [ "$ret" = 0 ]; then
		summary="${summary}PASS $k${nl}"
	else
		failed="$failed $k"
		summary="${summary}FAIL $k ($ret)${nl}"
	fi
done

ls -l *.deb || true
for m in $modules ; do
	for k in $slenrek ; do
		echo "* ${m} ${k}:"
		ls -l ${m}-${k}_*.deb || true
	done
done

if [ -n "$summary" ]; then
	echo "Summary:"
	echo -n "$summary"
fi

for k in $failed ; do
	echo "$modules MODULE BUILD FAILED FOR $k"
done

test -z "$failed" || exit 1