SmartHBA-2100-8i-driver/smartpqi-src.spec
Hao Zhang f35140c755 Microchip smartpqi driver 2.1.22-040 update patch
This patch is used to support OpenEuler-2203 version.

Signed-off-by: Hao Zhang <Hao.Zhang@windriver.com>
2023-10-19 17:20:43 +08:00

218 lines
6.5 KiB
RPMSpec

%define name smartpqi
%define version 2.1.22
%define release 040
%define kernel `uname -r`
Summary: Microchip smartpqi driver for SmartRAID/SmartHBA controllers
Name: %{name}
Version: %{version}
Release: %{release}
Vendor: Microchip Technology Inc.
License: GPLv2
Group: System Environment/Kernel
Source0: %{name}-%{version}-%{release}.tar.bz2
Source1: Module.supported
Source2: %{name}-fromsrc.conf
URL: http://www.microchip.com
Distribution: Microchip Technology Inc.
BuildRoot: /var/tmp/%{name}-buildroot
%define debug_package %{nil}
Patch0: 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch
%description
Driver for Microchip Technology SmartRAID and SmartHBA controllers
# prep #########################################################################
%prep
echo prep %{version}-%{release}
%setup -c -b 0
%patch0 -p1 -b 0001-Support-PMC8222-driver-build-for-OpenEuler-2203-vers.patch
cp %_sourcedir/Module.supported src/Module.supported
# build ########################################################################
%build
echo build %{version}-%{release}
make build KERNEL=%{kernel};
# install ######################################################################
%install
echo install %{version}-%{release}
echo "%defattr(-,root,root)" > $RPM_BUILD_DIR/file.list.%{name}
SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi
if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then
driver_bin="smartpqi.ko.xz"
elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then
driver_bin="smartpqi.ko.xz"
else
driver_bin="smartpqi.ko"
fi
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{kernel}/weak-updates/smartpqi
# create the file list used in %files to indicate which files are in package
echo "$SMARTPQI_IPATH/${driver_bin}.new" >> $RPM_BUILD_DIR/file.list.%{name}
echo "/etc/dracut.conf.d/smartpqi-fromsrc.conf" >> $RPM_BUILD_DIR/file.list.%{name}
make install PREFIX=$RPM_BUILD_ROOT KERNEL=%{kernel}
if [ ${driver_bin} == "smartpqi.ko.xz" ]; then
xz $RPM_BUILD_ROOT/$SMARTPQI_IPATH/smartpqi.ko
fi
mv -f $RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin} \
$RPM_BUILD_ROOT/$SMARTPQI_IPATH/${driver_bin}.new
install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT/etc/dracut.conf.d/smartpqi-fromsrc.conf
# pre #########################################################################
%pre
echo pre %{version}-%{release}
system_arch=`uname -m`
if [ %{_target_cpu} != ${system_arch} ]; then
echo "ERROR: Failed installing this rpm!!!!"
echo "This rpm is intended for %{_target_cpu} platform. It seems your system is ${system_arch}.";
exit 1;
fi;
# post #########################################################################
%post
echo post %{version}-%{release}
if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then
driver_bin="smartpqi.ko.xz"
elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then
driver_bin="smartpqi.ko.xz"
else
driver_bin="smartpqi.ko"
fi
if [ ! -e /boot/vmlinuz-%{kernel} ] && [ ! -e /boot/vmlinux-%{kernel} ]; then
continue;
fi;
SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi
if [ ! -e $SMARTPQI_IPATH/${driver_bin}.new ]; then
continue;
fi;
SMARTPQI_ORIG_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi
echo "The smartpqi driver for kernel %{kernel} is now version %{version}-%{release}";
cp -f $SMARTPQI_IPATH/${driver_bin}.new $SMARTPQI_IPATH/${driver_bin}
# Remake the initrd image
SMARTPQI_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi
if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then
mv $SMARTPQI_IPATH/${driver_bin} \
$SMARTPQI_IPATH/${driver_bin}.orig
fi;
SMARTPQI_IPATH=/lib/modules/%{kernel}/updates
if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then
mv $SMARTPQI_IPATH/${driver_bin} \
$SMARTPQI_IPATH/${driver_bin}.orig
fi;
SMARTPQI_IPATH=/lib/modules/%{kernel}/extra/smartpqi
if [ -e $SMARTPQI_IPATH/${driver_bin} ]; then
mv $SMARTPQI_IPATH/${driver_bin} \
$SMARTPQI_IPATH/${driver_bin}.orig
fi;
bootpart=/boot;
depmod -v %{kernel} > /dev/null 2>&1;
if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then
if which mkinitrd |grep -c "no mkinitrd" >> /dev/null ; then
module_init_tool="unknown"
else
module_init_tool="mkinitrd"
#SuSE
if [ -h /boot/initrd ] ; then
mkinitrd -f /boot/initrd-%{kernel} %{kernel}
else
mkinitrd -f /boot/initramfs-%{kernel}.img %{kernel}
fi
echo -e "${module_init_tool} post Install Done."
exit 0;
fi
fi
echo -e "post Install Done."
# postun #######################################################################
%postun
echo postun %{version}-%{release}
if modinfo smartpqi -n |xargs file |grep -c "compressed" >> /dev/null; then
driver_bin="smartpqi.ko.xz"
elif [ $(find /lib/modules/%{kernel}/ -name smartpqi.ko.xz*) ]; then
driver_bin="smartpqi.ko.xz"
else
driver_bin="smartpqi.ko"
fi
SMARTPQI_IPATH=/lib/modules/%{kernel}/weak-updates/smartpqi
if [ ! -e $SMARTPQI_IPATH/${driver_bin}.new ] && \
[ -e $SMARTPQI_IPATH/${driver_bin} ]; then
rm -rf $SMARTPQI_IPATH;
SMARTPQI_IPATH=/lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi
if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then
mv $SMARTPQI_IPATH/${driver_bin}.orig \
$SMARTPQI_IPATH/${driver_bin}
fi;
SMARTPQI_IPATH=/lib/modules/%{kernel}/updates
if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then
mv $SMARTPQI_IPATH/${driver_bin}.orig \
$SMARTPQI_IPATH/${driver_bin}
fi;
SMARTPQI_IPATH=/lib/modules/%{kernel}/extra/smartpqi
if [ -e $SMARTPQI_IPATH/${driver_bin}.orig ]; then
mv $SMARTPQI_IPATH/${driver_bin}.orig \
$SMARTPQI_IPATH/${driver_bin}
fi;
fi;
bootpart=/boot;
if [ ! -f /lib/modules/%{kernel}/kernel/drivers/scsi/smartpqi/${driver_bin} ] && \
[ ! -f /lib/modules/%{kernel}/udpates/${driver_bin} ] && \
[ ! -f /lib/modules/%{kernel}/weak-updates/smartpqi/${driver_bin} ] && \
[ ! -f /lib/modules/%{kernel}/extra/smartpqi/${driver_bin} ]; then
sed -e '/smartpqi/d' /etc/modprobe.conf > modprobe.edit;
mv -f modprobe.edit /etc/modprobe.conf;
fi;
depmod -v %{kernel} > /dev/null 2>&1;
if which mkinitrd |grep -c "mkinitrd" >> /dev/null; then
if which mkinitrd |grep -c "no mkinitrd" >> /dev/null ; then
module_init_tool="unknown"
else
module_init_tool="mkinitrd"
#SuSE
if [ -h /boot/initrd ] ; then
mkinitrd -f /boot/initrd-%{kernel} %{kernel}
else
mkinitrd -f /boot/initramfs-%{kernel}.img %{kernel}
fi
echo -e "${module_init_tool} Uninstall Done."
exit 0;
fi
fi
echo -e "Uninstall Done."
# files ########################################################################
%files -f ../file.list.%{name}
# changelog ###################################################################
%changelog