%package -n %{-n*}-kmp-%1
%define _this_kmp_version %{-v*}_%(echo %2 | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/; # use 2.6.x.0 for mainline kernels')
Version: %_this_kmp_version
Release: %{-r*}
%(
for spec in {%_sourcedir,%_specdir}/%name.spec /dev/null; do
    [ -e $spec ] && break
done
awk '
BEGIN		{ tags["summary"] = "Summary: %summary"
		  tags["group"] = "Group: %group" }
/^%%/		{ in_pkg_header = \
		  ($0 ~ /^%%package[ \t]+KMP[ \t]*$/ ||
		   $0 ~ /^%%package[ \t]+-n[ \t]*%name-KMP[ \t]*$/)
		  next }
in_pkg_header && /^(Summary|Group):[ \t]*/ \
		{ tag = tolower($1) ; sub(/:$/, "", tag)
		  tags[tag] = $0 }
END		{ print tags["summary"]
		  print tags["group"] }
' $spec
)
Provides: %{-n*}-kmp = %_this_kmp_version
Provides: multiversion(kernel)
Requires: coreutils grep
Requires: kernel-%1 
%{-c:Requires: %{-n*}-ueficert}
Enhances: kernel-%1
%ifarch %ix86
%if %1 == "pae"
Obsoletes: %{-n*}-kmp-vmi
Provides: %{-n*}-kmp-vmi
%endif
%endif
AutoReqProv: on
%{-p:%{expand:%(cd %_sourcedir; cat %{-p*})}}
%description -n %{-n*}-kmp-%1
%(
for spec in {%_sourcedir,%_specdir}/%name.spec /dev/null; do
    [ -e $spec ] && break
done
awk '
/^%%/		{ in_desc = \
		  ($0 ~ /^%%description[ \t]+KMP[ \t]*$/ ||
		   $0 ~ /^%%description[ \t]+-n[ \t]*%name-KMP[ \t]*$/)
		  next }
in_desc		{ print; good = 1 }
END		{ exit(! good) }
' $spec || \
awk '
/^%%/		{ in_desc = \
		  ($0 ~ /^%%description[ \t]*$/ ||
		   $0 ~ /^%%description[ \t]+-n[ \t]*%name[ \t]*$/)
		  next }
in_desc		{ print; good = 1 }
END		{ exit(! good) }
' $spec
)
%post -n %{-n*}-kmp-%1
rm -f /etc/modprobe.d/$MODCONF.backup
cat <<EOF >/tmp/hfcldd_install.log
      Boot directory      : /boot
      Configulation file  : hfcldd_param.conf
      Kernel version      : `uname -r`
      Host Type           : `uname -m`
 ---- Install  @Hitachi Fibre Channel Adapter Driver - `date`
 ---- Install Success "
EOF

ADD_INITRD_MODULES=(hfcldd_conf hfcldd)
. /etc/sysconfig/kernel
_TMP_ADD_INITRD_MODULES=()
for _ADD_INITRD_MODULE in ${ADD_INITRD_MODULES[@]}
do
	for _MODULE in ${INITRD_MODULES}
	do
		if [ "${_MODULE}" = "${_ADD_INITRD_MODULE}" ]
		then
			continue 2
		fi
	done
	_TMP_ADD_INITRD_MODULES=(${_TMP_ADD_INITRD_MODULES[@]} ${_ADD_INITRD_MODULE})
done

if [ ${#_TMP_ADD_INITRD_MODULES[@]} -gt 0 ]
then
        STR_INITRD_MODULES="${_TMP_ADD_INITRD_MODULES[@]} ${INITRD_MODULES[@]}"
        sed -i.rpmsave "s/^\(INITRD_MODULES=\"\)[^\"]*\(\".*\)$/\1${STR_INITRD_MODULES}\2/" /etc/sysconfig/kernel
fi


nvr=%{-n*}-kmp-%1-%_this_kmp_version-%{-r*}
wm2=/usr/lib/module-init-tools/weak-modules2
if [ -x $wm2 ]; then
    %{-b:KMP_NEEDS_MKINITRD=1} /bin/bash -${-/e/} $wm2 --add-kmp $nvr
fi

%preun -n %{-n*}-kmp-%1

INSTALLED_KMP_NUM=$(rpm -qa | grep "%{-n*}-kmp-.*" | grep -v "%{-n*}-kmp-%1-%_this_kmp_version-%{-r*}" | wc -l)
if [ ${INSTALLED_KMP_NUM} -eq 0 ];then
	REMOVE_INITRD_MODULES=(hfcldd_conf hfcldd)
	
	. /etc/sysconfig/kernel
	_TMP_INITRD_MODULES=(${INITRD_MODULES})
	INITRD_MODULES=()
	for _MODULE in ${_TMP_INITRD_MODULES[@]}
	do
	        for _REMOVE_INITRD_MODULE in ${REMOVE_INITRD_MODULES[@]}
	        do
	                if [ "${_MODULE}" = "${_REMOVE_INITRD_MODULE}" ]
	                then
				continue 2
	                fi
	        done
	        INITRD_MODULES=(${INITRD_MODULES[@]} ${_MODULE})
	done
	
	STR_INITRD_MODULES="${INITRD_MODULES[@]}"
	sed -i "s/^\(INITRD_MODULES=\"\)[^\"]*\(\".*\)$/\1${STR_INITRD_MODULES}\2/" /etc/sysconfig/kernel
fi

nvr=%{-n*}-kmp-%1-%_this_kmp_version-%{-r*}
rpm -ql $nvr | sed -n '/\.ko$/p' > /var/run/rpm-$nvr-modules

%postun -n %{-n*}-kmp-%1
nvr=%{-n*}-kmp-%1-%_this_kmp_version-%{-r*}
modules=( $(cat /var/run/rpm-$nvr-modules) )
rm -f /var/run/rpm-$nvr-modules
if [ ${#modules[*]} = 0 ]; then
    echo "WARNING: $nvr does not contain any kernel modules" >&2
    exit 0
fi
wm2=/usr/lib/module-init-tools/weak-modules2
if [ -x $wm2 ]; then
    printf '%s\n' "${modules[@]}" | /bin/bash -${-/e/} $wm2 --remove-kmp $nvr
fi

cat <<EOF >/tmp/hfcldd_uninstall.log
      Boot directory      : /boot
      Configulation file  : hfcldd_param.conf
      Kernel version      : `uname -r`
      Host Type           : `uname -m`
 ---- Uninstall  @Hitachi Fibre Channel Adapter Driver - `date`
      Modify /etc/modprobe.d/hfcldd_param.conf
 ---- Uninstall Success 
EOF

%files -n %{-n*}-kmp-%1
%{-f:%{expand:%(cd %_sourcedir; cat %{-f*})}}
%{!-f:%defattr (-,root,root)}
%{!-f:/lib/modules/%2-%1}
