File ixgbevf453.spec of Package ixgbevf453

# needssslcertforbuild
Name: ixgbevf453
Summary: Intel(R) 10GbE PCI Express Virtual Function Driver
Version: 4.5.3
Release: 1
Source: ixgbevf-%{version}.tar.gz
Source1: preamble
Source2: kmod-ixgbevf.conf
Vendor: Intel Corporation
License: GPL-2.0
ExclusiveOS: linux
Group: System Environment/Kernel
#Provides: %{name}
URL: http://www.intel.com/network/connectivity/products/server_adapters.htm
BuildRoot: %{_tmppath}/%{name}-%{version}-root
# do not generate debugging packages by default - newer versions of rpmbuild
# may instead need:
#%define debug_package %{nil}
%debug_package %{nil}
# macros for finding system files to update at install time (pci.ids, pcitable)
%define find() %(for f in %*; do if [ -e $f ]; then echo $f; break; fi; done)
%define _pciids   /usr/share/pci.ids        /usr/share/hwdata/pci.ids
%define _pcitable /usr/share/kudzu/pcitable /usr/share/hwdata/pcitable /dev/null
%define pciids    %find %{_pciids}
%define pcitable  %find %{_pcitable}
Requires: fileutils findutils gawk bash
BuildRequires: %kernel_module_package_buildreqs
%if 0%{?centos_version} >= 700 || 0%{?rhel_version} >= 700
#BuildRequires: kabi-whitelists
%endif
#ExclusiveArch: %ix86 x86_64

%if 0%{?suse_version} > 0
#Recommends: ixgbevf453-kmp-default
%kernel_module_package -p %_sourcedir/preamble -x ec2 -x vmi -x xen 
#% suse_kernel_module_package -n ixgbevf453 -p %_sourcedir/preamble ec2 vmi xen
%else
#Recommends: kmod-ixgbevf453 = %{version}
Requires: kmod-ixgbevf453 = %{version}
%kernel_module_package -p %_sourcedir/preamble default
#%if 0%{?centos_version} >= 700
#BuildRequires: kernel-devel >= 3.10.0-698.1
#%endif
%endif


%description
ixgbevf driver for Linux, which supports kernel versions 2.6.18 up through 4.20

%prep
%setup -n ixgbevf-%{version}
chmod -x README ixgbevf.7
set -- src/*
mkdir source
mv "$@" source/
mkdir obj

%build
#make -C src clean
#make -C src
echo Build kernel modules for kernel flavors %flavors_to_build ...
for flavor in %flavors_to_build; do
    rm -rf obj/$flavor
    cp -r source obj/$flavor
    MOD=$PWD/obj/$flavor
    export CFLAGS_MODULE
    make -C %{kernel_source $flavor} modules %{?_smp_mflags} M=$MOD KSRC=%{kernel_source $flavor} V=1 #CFLAGS_MODULE="$CFLAGS_MODULE"
done


%install
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT
# Following line works for SUSE 11+ and RHEL 6.1+ only, must set INSTALL_MOD_DIR manually for other targets
%if 0%{?suse_version} > 0
export INSTALL_MOD_DIR=%{kernel_module_package_moddir %{name}}
%else
%if 0%{?centos_version} > 600 || 0%{?rhel_version} > 600
export INSTALL_MOD_DIR=%{kernel_module_package_moddir %{name}}/%{name}
%else
export INSTALL_MOD_DIR=extra/%{name}
%endif
%endif
export INSTALL_MOD_STRIP=1
for flavor in %flavors_to_build; do
    make -C %{kernel_source $flavor} modules_install M=$PWD/obj/$flavor
done
gzip ixgbevf.7
install -D -m 644 ixgbevf.7.gz $RPM_BUILD_ROOT/%{_mandir}/man7/%{name}.7.gz
%if 0%{?suse_version} == 0
rm -f $RPM_BUILD_ROOT/lib/modules/*/modules.*
%endif
%if 0%{?centos_version} >= 600 || 0%{?rhel_version} >= 600
mkdir -p $RPM_BUILD_ROOT/etc/depmod.d/
cp -p %{S:2} $RPM_BUILD_ROOT/etc/depmod.d/
%endif

%clean
rm -rf %{buildroot}

%files 
%defattr(-,root,root)
%{_mandir}/man7/%{name}.7.gz
%doc COPYING
%doc README
%doc pci.updates
%if 0%{?centos_version} >= 600 || 0%{?rhel_version} >= 600
%config /etc/depmod.d/kmod-ixgbevf.conf
%endif

%post
%if 0%{?update_pciids} > 0

%if 0%{?suse_version} > 0
export INSTALL_MOD_DIR=%{kernel_module_package_moddir %{name}}
%else
export INSTALL_MOD_DIR=%{kernel_module_package_moddir %{name}}/%{name}
%endif
FL=${INSTALL_MOD_DIR}/%{name}.ko

if [ -d /usr/local/lib/%{name} ]; then
	rm -rf /usr/local/lib/%{name}
fi
if [ -d /usr/local/share/%{name} ]; then
	rm -rf /usr/local/share/%{name}
fi

# Save old drivers (aka .o and .o.gz)
echo "original pci.ids saved in /usr/local/share/%{name}";
if [ "%{pcitable}" != "/dev/null" ]; then
	echo "original pcitable saved in /usr/local/share/%{name}";
fi
cp --parents %{pciids} /usr/local/share/%{name}/
if [ "%{pcitable}" != "/dev/null" ]; then
	cp --parents %{pcitable} /usr/local/share/%{name}/
fi

# Add driver link
for f in $(sed 's/\.new$//' $FL) ; do
	ln -f $f.new $f 
done

# Check if kernel version rpm was built on IS the same as running kernel
BK_LIST=$(sed 's/\/lib\/modules\/\([0-9a-zA-Z_\.\-]*\).*/\1/' $FL)
MATCH=no
for i in $BK_LIST
do
	if [ $(uname -r) == $i ] ; then
		MATCH=yes
		break
	fi
done
if [ $MATCH == no ] ; then
	echo -n "WARNING: Running kernel is $(uname -r).  "
	echo -n "RPM supports kernels (  "
	for i in $BK_LIST
	do
		echo -n "$i  "
	done
	echo ")"
fi

LD="%{_docdir}/%{name}";
if [ -d %{_docdir}/%{name}-%{version} ]; then
	LD="%{_docdir}/%{name}-%{version}";
fi

#Yes, this really needs bash
bash -s %{pciids} \
	%{pcitable} \
	$LD/pci.updates \
	$LD/pci.ids.new \
	$LD/pcitable.new \
	%{name} \
<<"END"
#! /bin/bash
# $1 = system pci.ids file to update
# $2 = system pcitable file to update
# $3 = file with new entries in pci.ids file format
# $4 = pci.ids output file
# $5 = pcitable output file
# $6 = driver name for use in pcitable file

exec 3<$1
exec 4<$2
exec 5<$3
exec 6>$4
exec 7>$5
driver=$6
IFS=

# pattern matching strings
ID="[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]"
VEN="${ID}*"
DEV="	${ID}*"
SUB="		${ID}*"
TABLE_DEV="0x${ID}	0x${ID}	\"*"
TABLE_SUB="0x${ID}	0x${ID}	0x${ID}	0x${ID}	\"*"

line=
table_line=
ids_in=
table_in=
vendor=
device=
ids_device=
table_device=
subven=
ids_subven=
table_subven=
subdev=
ids_subdev=
table_subdev=
ven_str=
dev_str=
sub_str=

# force a sub-shell to fork with a new stdin
# this is needed if the shell is reading these instructions from stdin
while true
do
	# get the first line of each data file to jump start things
	exec 0<&3
	read -r ids_in
	if [ "$2" != "/dev/null" ];then
	exec 0<&4
	read -r table_in
	fi

	# outer loop reads lines from the updates file
	exec 0<&5
	while read -r line
	do
		# vendor entry
		if [[ $line == $VEN ]]
		then
			vendor=0x${line:0:4}
			ven_str=${line#${line:0:6}}
			# add entry to pci.ids
			exec 0<&3
			exec 1>&6
			while [[ $ids_in != $VEN ||
				 0x${ids_in:0:4} < $vendor ]]
			do
				echo "$ids_in"
				read -r ids_in
			done
			echo "$line"
			if [[ 0x${ids_in:0:4} == $vendor ]]
			then
				read -r ids_in
			fi

		# device entry
		elif [[ $line == $DEV ]]
		then
			device=`echo ${line:1:4} | tr "[:upper:]" "[:lower:]"`
			table_device=0x${line:1:4}
			dev_str=${line#${line:0:7}}
			ids_device=`echo ${ids_in:1:4} | tr "[:upper:]" "[:lower:]"`
			table_line="$vendor	$table_device	\"$driver\"	\"$ven_str|$dev_str\""
			# add entry to pci.ids
			exec 0<&3
			exec 1>&6
			while [[ $ids_in != $DEV ||
				 $ids_device < $device ]]
			do
				if [[ $ids_in == $VEN ]]
				then
					break
				fi
				if [[ $ids_device != ${ids_in:1:4} ]]
				then
					echo "${ids_in:0:1}$ids_device${ids_in#${ids_in:0:5}}"
				else
					echo "$ids_in"
				fi
				read -r ids_in
				ids_device=`echo ${ids_in:1:4} | tr "[:upper:]" "[:lower:]"`
			done
			if [[ $device != ${line:1:4} ]]
			then
				echo "${line:0:1}$device${line#${line:0:5}}"
			else
				echo "$line"
			fi
			if [[ $ids_device == $device ]]
			then
				read -r ids_in
			fi
			# add entry to pcitable
			if [ "$2" != "/dev/null" ];then
			exec 0<&4
			exec 1>&7
			while [[ $table_in != $TABLE_DEV ||
				 ${table_in:0:6} < $vendor ||
				 ( ${table_in:0:6} == $vendor &&
				   ${table_in:7:6} < $table_device ) ]]
			do
				echo "$table_in"
				read -r table_in
			done
			echo "$table_line"
			if [[ ${table_in:0:6} == $vendor &&
			      ${table_in:7:6} == $table_device ]]
			then
				read -r table_in
			fi
			fi
		# subsystem entry
		elif [[ $line == $SUB ]]
		then
			subven=`echo ${line:2:4} | tr "[:upper:]" "[:lower:]"`
			subdev=`echo ${line:7:4} | tr "[:upper:]" "[:lower:]"`
			table_subven=0x${line:2:4}
			table_subdev=0x${line:7:4}
			sub_str=${line#${line:0:13}}
			ids_subven=`echo ${ids_in:2:4} | tr "[:upper:]" "[:lower:]"`
			ids_subdev=`echo ${ids_in:7:4} | tr "[:upper:]" "[:lower:]"`
			table_line="$vendor	$table_device	$table_subven	$table_subdev	\"$driver\"	\"$ven_str|$sub_str\""
			# add entry to pci.ids
			exec 0<&3
			exec 1>&6
			while [[ $ids_in != $SUB ||
				 $ids_subven < $subven ||
				 ( $ids_subven == $subven && 
				   $ids_subdev < $subdev ) ]]
			do
				if [[ $ids_in == $VEN ||
				      $ids_in == $DEV ]]
				then
					break
				fi
				if [[ ! (${ids_in:2:4} == "1014" &&
					 ${ids_in:7:4} == "052C") ]]
				then
					if [[ $ids_subven != ${ids_in:2:4} || $ids_subdev != ${ids_in:7:4} ]]
					then
						echo "${ids_in:0:2}$ids_subven $ids_subdev${ids_in#${ids_in:0:11}}"
					else
						echo "$ids_in"
					fi
				fi
				read -r ids_in
				ids_subven=`echo ${ids_in:2:4} | tr "[:upper:]" "[:lower:]"`
				ids_subdev=`echo ${ids_in:7:4} | tr "[:upper:]" "[:lower:]"`
			done
			if [[ $subven != ${line:2:4} || $subdev != ${line:7:4} ]]
			then
				echo "${line:0:2}$subven $subdev${line#${line:0:11}}"
			else
				echo "$line"
			fi
			if [[ $ids_subven == $subven  &&
			      $ids_subdev == $subdev ]]
			then
				read -r ids_in
			fi
			# add entry to pcitable
			if [ "$2" != "/dev/null" ];then
			exec 0<&4
			exec 1>&7
			while [[ $table_in != $TABLE_SUB ||
				 ${table_in:14:6} < $table_subven ||
				 ( ${table_in:14:6} == $table_subven &&
				   ${table_in:21:6} < $table_subdev ) ]]
			do
				if [[ $table_in == $TABLE_DEV ]]
				then
					break
				fi
				if [[ ! (${table_in:14:6} == "0x1014" &&
					 ${table_in:21:6} == "0x052C") ]]
				then
					echo "$table_in"
				fi
				read -r table_in
			done
			echo "$table_line"
			if [[ ${table_in:14:6} == $table_subven &&
			      ${table_in:21:6} == $table_subdev ]]
			then
				read -r table_in
			fi
			fi
		fi

		exec 0<&5
	done

	# print the remainder of the original files
	exec 0<&3
	exec 1>&6
	echo "$ids_in"
	while read -r ids_in
	do
		echo "$ids_in"
	done

	if [ "$2" != "/dev/null" ];then
	exec 0>&4
	exec 1>&7
	echo "$table_in"
	while read -r table_in
	do
		echo "$table_in"
	done
	fi

	break
done <&5

exec 3<&-
exec 4<&-
exec 5<&-
exec 6>&-
exec 7>&-

END

mv -f $LD/pci.ids.new  %{pciids}
if [ "%{pcitable}" != "/dev/null" ]; then
mv -f $LD/pcitable.new %{pcitable}
fi

%endif
uname -r | grep BOOT || /sbin/depmod -a > /dev/null 2>&1 || true


%if 0%{?update_pciids} > 0
%preun

%if 0%{?suse_version} > 0
export INSTALL_MOD_DIR=%{kernel_module_package_moddir %{name}}
%else
export INSTALL_MOD_DIR=%{kernel_module_package_moddir %{name}}/%{name}
%endif
FL=${INSTALL_MOD_DIR}/%{name}.ko

# If doing RPM un-install
if [ $1 -eq 0 ] ; then
	FL="%{_docdir}/%{name}-%{version}/file.list
    		%{_docdir}/%{name}/file.list"
	FL=$(for d in $FL ; do if [ -e $d ]; then echo $d; break; fi;  done)

	# Remove driver link
	for f in $(sed 's/\.new$//' $FL) ; do
		rm -f $f
	done

	# Restore old drivers
	if [ -d /usr/local/share/%{name} ]; then
		cd /usr/local/share/%{name}; find . -name '%{name}.*o*' -exec cp --parents {} /lib/modules/ \;
		cd /usr/local/share/%{name}; find . -name '%{name}_*.*o*' -exec cp --parents {} /lib/modules/ \;
		rm -rf /usr/local/share/%{name}
	fi
fi
%endif

%postun
uname -r | grep BOOT || /sbin/depmod -a > /dev/null 2>&1 || true

openSUSE Build Service is sponsored by