%package -n %{-n*}-%1
%define kmp_version %(echo %{-v*} | tr - _)
Version: %kmp_version
Release: %(echo %3-%{-r*} | tr - _)
%(
for spec in {%_sourcedir,%_specdir}/%name.spec /dev/null; do
    [ -e $spec ] && break
done
awk '
BEGIN		{ tags["summary"] = "Summary: The vmblock kernel module built for the %{kernel_version} kernel."
		  tags["group"] = "Group: %group" }
/^%%/		{ in_header = \
		  ($0 ~ /^%%package[ \t]+KMP[ \t]*$/ ||
		   $0 ~ /^%%package[ \t]+-n[ \t]*%name-KMP[ \t]*$/)
		  next }
in_header && /^(Summary|Group):[ \t]*/ \
		{ tag = tolower($1) ; sub(/:$/, "", tag)
		  tags[tag] = $0 }
END		{ print tags["summary"]
		  print tags["group"] }
' $spec
)
Provides: %{-n*} = %(echo %{-v*}-%3 | tr - _)
Requires: kernel-%1 %{name}-common >= %{?epoch:%{epoch}:}10.0.0%{?release:-%{release}}
Requires: vmware-tools-core >= %{?epoch:%{epoch}:}8.6.0
Requires: vmware-tools-foundation >= 0:8.6.0
Provides: vmware-tools-vmblock-kmp-%{type}
Provides: vmware-tools-vmblock-kmp
AutoReqProv: on
%{-p:%{expand:%(cd %_sourcedir; cat %{-p*})}}
%description -n %{-n*}-%1
 This package contains a pre-compiled vmblock module for use with the %{kernel_version} kernel.   The vmblock module is used by vmware-user to block file access to files that are in the process of being copied from host to guest or guest to host (such as a drag and drop operation between a host and a guest).
%(
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*}-%1
# Deconfigure if upgrading
if [ $1 -gt 1 ]; then
   # If the type matches the running kernel, stop the init script
   kmodType=`uname -r | sed -e 's/.*-//g'`
   if [ "$kmodType" = "%1" ]; then
      if [ -e /etc/init.d/vmblock ]; then
         /etc/init.d/vmblock stop || true
      fi
   fi
fi

# Configure
version=%(echo %{-v*} | tr - _)
release=%(echo %3-%{-r*} | tr - _)
if [ -e /boot/System.map-%2 ]; then
    /sbin/depmod -a -F /boot/System.map-%2 %2
fi
modules=( $(rpm -ql %{-n*}-%1-$version-$release | grep '\.ko$') )
if [ -x /usr/lib/module-init-tools/weak-modules ]; then
    printf '%s\n' "${modules[@]}" \
    | /usr/lib/module-init-tools/weak-modules --add-modules 2>/dev/null
fi
if [ -e /etc/sysconfig/kernel -a -e /boot/initrd-%2 ]; then
    source /etc/sysconfig/kernel
    run_mkinitrd=
    set -- "${modules##*/}" ; set -- "${@%.ko}"
    for module in $INITRD_MODULES; do
	case " $* " in
	*" $module "*)
	    run_mkinitrd=1
	    break ;;
	esac
    done
    if [ -n "$run_mkinitrd" ]; then
	for image in vmlinuz image vmlinux linux bzImage; do
	    if [ -f /boot/$image-%2 ]; then
		/sbin/mkinitrd -k /boot/$image-%2 \
			       -i /boot/initrd-%2 2>/dev/null\
		|| exit 1
		break
	    fi
	done
    fi
fi
# If the type matches the running kernel, start the init script
kmodType=`uname -r | sed -e 's/.*-//g'`
if [ "$kmodType" = "%1" ]; then
   if [ -e /etc/init.d/vmblock ]; then
      /etc/init.d/vmblock start || true
   else
      modprobe vmblock || true
   fi
fi
%preun -n %{-n*}-%1
# Only deconfigure if we are erasing the package here... not if we are upgrading.
if [ $1 = 0 ]; then
   # If the type matches the running kernel, stop the init script
   kmodType=`uname -r | sed -e 's/.*-//g'`
   if [ "$kmodType" = "%1" ]; then
      if [ -e /etc/init.d/vmblock ]; then
         /etc/init.d/vmblock stop || true
      fi
   fi
fi
version=%(echo %{-v*} | tr - _)
release=%(echo %3-%{-r*} | tr - _)
set -o noclobber
rpm -ql %{-n*}-%1-$version-$release | grep '\.ko$' \
    > /var/run/rpm-%{-n*}-%1-$version-$release-modules
%postun -n %{-n*}-%1
version=%(echo %{-v*} | tr - _)
release=%(echo %3-%{-r*} | tr - _)
modules=( $(cat /var/run/rpm-%{-n*}-%1-$version-$release-modules) )
rm -f /var/run/rpm-%{-n*}-%1-$version-$release-modules
if [ -e /boot/System.map-%2 ]; then
    /sbin/depmod -a -F /boot/System.map-%2 %2
fi
if [ -x /usr/lib/module-init-tools/weak-modules ]; then
    printf '%s\n' "${modules[@]}" \
    | /usr/lib/module-init-tools/weak-modules --remove-modules 2>/dev/null
fi
if [ -e /etc/sysconfig/kernel -a -e /boot/initrd-%2 ]; then
    source /etc/sysconfig/kernel
    run_mkinitrd=
    set -- "${modules##*/}" ; set -- "${@%.ko}"
    for module in $INITRD_MODULES; do
	case " $* " in
	*" $module "*)
	    run_mkinitrd=1
	    break ;;
	esac
    done
    if [ -n "$run_mkinitrd" ]; then
	for image in vmlinuz image vmlinux linux bzImage; do
	    if [ -f /boot/$image-%2 ]; then
		/sbin/mkinitrd -k /boot/$image-%2 \
			       -i /boot/initrd-%2 2>/dev/null\
		|| exit 1
		break
	    fi
	done
    fi
fi
%files -n %{-n*}-%1
%{-f:%{expand:%(cd %_sourcedir; cat %{-f*})}}
%{!-f:%defattr (-,root,root)}
%{!-f:/lib/modules/%2}
/usr/lib/vmware-tools/symvers
