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

PKG_NAME="intel-dmabuf-drm-i915-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 kernel 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 kernel 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

if [ "$BUILD_TYPE" != "nodrm" ]; then
       NO_DRM=
else
       NO_DRM=DEL
fi

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,I915 and DRM Backports Module DKMS Package
	Name: %{module}
	Version: %{version}
	Release: %{release}
	License: GPL
	Group: System Environment/Base
	BuildArch: x86_64
	Vendor: Intel
	Provides: %{module} intel-dmabuf-dkms intel-i915-dkms
	Packager: linux-graphics@intel.com
	Requires: dkms gcc bash sed
	Obsoletes: intel-platform-vsec-dkms intel-platform-cse-dkms intel-dmabuf-dkms intel-i915-dkms
	# 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 different OSV's.
	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}

	%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
	CREATE_INITRD="0"
	for i in /lib/modules/[4-6]*; do
		H="\$i/build";
		K=\$(echo \$i | cut -d '/' -f 4);
		if [ -d \$H ]; then
			dkms install --force -m %module -v %version -k \$K;
			echo -e
			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 :\$K"
			fi
		else
			echo "SKIP DKMS Installation: kernel Headers not available for variant \$K";
		fi
	done
	echo -e "CREATE_INITRD \$CREATE_INITRD"
	if [ "\$CREATE_INITRD" == "1" ] ; then
		/sbin/mkinitrd
	fi
	exit 0

	%preun
	echo -e "Uninstall of %{module} module (version %{version}) beginning:"
	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
	echo -e "CREATE_INITRD \$CREATE_INITRD"
	if [ "\$CREATE_INITRD" == "1" ] ; then
		/sbin/mkinitrd
	fi
	/usr/sbin/dkms remove -m %{module} -v %{version} --rpm_safe_upgrade
	exit 0
EOF

