aboutsummaryrefslogtreecommitdiffstats
path: root/e1000e.spec
diff options
context:
space:
mode:
Diffstat (limited to 'e1000e.spec')
-rw-r--r--e1000e.spec398
1 files changed, 398 insertions, 0 deletions
diff --git a/e1000e.spec b/e1000e.spec
new file mode 100644
index 0000000..c820f45
--- /dev/null
+++ b/e1000e.spec
@@ -0,0 +1,398 @@
+Name: e1000e
+Summary: Intel(R) Gigabit Ethernet Connection
+Version: 3.8.7
+Release: 1
+Source: %{name}-%{version}.tar.gz
+Vendor: Intel Corporation
+License: GPL
+ExclusiveOS: linux
+Group: System Environment/Kernel
+Provides: %{name}
+URL: http://support.intel.com/support/go/linux/e1000e.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: kernel, fileutils, findutils, gawk, bash
+
+%description
+This package contains the Linux driver for the Intel(R) Gigabit Family of Server Adapters.
+
+%prep
+%setup
+
+%build
+make -C src clean
+make -C src
+
+%install
+make -C src INSTALL_MOD_PATH=%{buildroot} MANDIR=%{_mandir} rpm
+# Append .new to driver name to avoid conflict with kernel RPM
+cd %{buildroot}
+find lib -name "e1000e.*o" -exec mv {} {}.new \; \
+ -fprintf %{_builddir}/%{name}-%{version}/file.list "/%p.new\n"
+
+
+%clean
+rm -rf %{buildroot}
+
+%files -f %{_builddir}/%{name}-%{version}/file.list
+%defattr(-,root,root)
+%{_mandir}/man7/e1000e.7.gz
+%doc COPYING
+%doc README
+%doc file.list
+%doc pci.updates
+
+%post
+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)
+
+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
+for k in $(sed 's/\/lib\/modules\/\([0-9a-zA-Z_\.\-]*\).*/\1/' $FL) ;
+do
+ d_drivers=/lib/modules/$k
+ d_usr=/usr/local/share/%{name}/$k
+ mkdir -p $d_usr
+ cd $d_drivers; find . -name %{name}.*o -exec cp --parents {} $d_usr \; -exec rm -f {} \;
+ cd $d_drivers; find . -name %{name}_*.*o -exec cp --parents {} $d_usr \; -exec rm -f {} \;
+ cd $d_drivers; find . -name %{name}.*o.gz -exec cp --parents {} $d_usr \; -exec rm -f {} \;
+ cd $d_drivers; find . -name %{name}_*.*o.gz -exec cp --parents {} $d_usr \; -exec rm -f {} \;
+ cp --parents %{pciids} /usr/local/share/%{name}/
+ if [ "%{pcitable}" != "/dev/null" ]; then
+ cp --parents %{pcitable} /usr/local/share/%{name}/
+ fi
+done
+
+# 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
+
+uname -r | grep BOOT || /sbin/depmod -a > /dev/null 2>&1 || true
+
+%preun
+# 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
+
+%postun
+uname -r | grep BOOT || /sbin/depmod -a > /dev/null 2>&1 || true
+