#!/bin/sh
#
#	Output a RPM spec file to generate intel-dmabuf dkms source
#

PKG_NAME="intel-dmabuf-dkms-prerelease"
PKG_VER="1.0"
REL_NAME="1"
REL_TYPE=""
BUILD_TYPE=""
CUSTOM_KERN_ID=""

helpFunction()
{
	echo ""
	echo "Usage: $0 -n packagename -v packageversion -r releaseversion -p prerelease/opensource -s buildversion -t CUSTOM_KERN_ID"
	echo -e "\t-n packagename"
	echo -e "\t-v packageversion"
	echo -e "\t-r releaseversion"
	echo -e "\t-p Release type  prerelease/opensource"
	echo -e "\t-s buildversion"
	echo -e "\t-t CUSTOM_KERN_ID"
	exit 1
}

while getopts "n:v:r:p:s:t:" opt
do
case "$opt" in
	n ) PKG_NAME="$OPTARG" ;;
	v ) PKG_VER="$OPTARG" ;;
	r ) REL_NAME="$OPTARG" ;;
	p ) REL_TYPE="$OPTARG" ;;
	s ) BUILD_TYPE="$OPTARG" ;;
	t ) CUSTOM_KERN_ID="$OPTARG" ;;
	? ) helpFunction ;; # Print helpFunction
esac
done

sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
	%define module $PKG_NAME
	%define version $PKG_VER
	%define release $REL_NAME
	%define _build_id_links none
	
	Summary: DMA-BUF Backports Module DKMS Package
	Name: %{module}
	Version: %{version}
	Release: %{release}
	License: GPL
	Group: System Environment/Base
	BuildArch: x86_64
	Vendor: Intel
	Provides: %{module}
	Packager: linux-graphics@intel.com
	Requires: dkms gcc bash sed
	# There is no Source# line for dkms.conf since it has been placed
	# into the source tarball of SOURCE0
	Source0: %{module}-%{version}-src.tar.gz
	BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root/

	%description
	Out of tree i915 driver for Redhat Kernel Version 4.18.0.
	Installed as dkms module.

	%prep
	rm -rf %{module}-%{version}
	mkdir %{module}-%{version}
	cd %{module}-%{version}
	tar xvzf \$RPM_SOURCE_DIR/%{module}-%{version}-src.tar.gz

	%install
	if [ "%{buildroot}" != "/" ]; then
		rm -rf %{buildroot}
	fi
	mkdir -p %{buildroot}/usr/src/%{module}-%{version}/
	cp -rf %{module}-%{version}/* %{buildroot}/usr/src/%{module}-%{version}

	#TBD : install headers for other package to use

	%clean
	if [ "%{buildroot}" != "/" ]; then
		rm -rf %{buildroot}
	fi

	%files
	%defattr (-, root, root)
	/usr/src/%{module}-%{version}/

	%pre

	%post
	/usr/sbin/dkms add -m %module -v %version --rpm_safe_upgrade
	NODRM_KV="5.14"
	for i in /lib/modules/[4-6]*; do
		H="\$i/build";
		K=\$(echo \$i | cut -d '/' -f 4);
		if [ -d \$H ]; then
			KVMaj=\$(echo \$K | cut -d '.' -f 1);
			KVMin=\$(echo \$K | cut -d '.' -f 2);
			KVCODE=\$(expr \$KVMaj \* 256 + 0\$KVMin \* 0);
			ND_KVMaj=\$(echo \$NODRM_KV | cut -d '.' -f 1);
			ND_KVMin=\$(echo \$KNODRM_KV | cut -d '.' -f 2);
			ND_KVCODE=\$(expr \$ND_KVMaj \* 256 + 0\$ND_KVMin \* 0);
			if [ \$KVCODE -lt \$ND_KVCODE ] ; then
				dkms install --force -m %module -v %version -k \$K;
			else
				echo "SKIP DMABUF DKMS Installation for kernel \$K"
			fi
		else
			echo "SKIP DKMS Installation: kernel Headers not available for variant \$K";
		fi
	done
	exit 0

	%preun
	echo -e "Uninstall %{module} module (version %{version}):"
	CREATE_INITRD="0"
	for i in /var/lib/dkms/%{module}/%{version}/[^a-zA-Z]*; do
		if [[ \$i = *^* ]] ;then continue; fi
		K=\$(echo \$i | cut -d '/' -f 7);
		/usr/sbin/dkms uninstall -m %{module} -v %{version} -k \$K --rpm_safe_upgrade
		echo -e "Creating initramfs for :\$K"
		if [ -e /boot/vmlinuz-\$K ] && [ -e /sbin/depmod ] && [ -x %{_bindir}/dracut ]; then
			/sbin/depmod -a "\$K"
			if [ "$BUILD_TYPE" == "CUSTOM_KERN_1" ] || [ -e /etc/redhat-release ] ; then
				%{_bindir}/dracut -f --kver "\$K"
			else
				CREATE_INITRD="1"
			fi
		else
			echo -e "Unable to create initramfs for :\$(uname -r)"
		fi
	done
	if [ "\$CREATE_INITRD" == "1" ] ; then
		/sbin/mkinitrd
	fi
	/usr/sbin/dkms remove -m %{module} -v %{version} --all --rpm_safe_upgrade
	exit 0

EOF

