SmartHBA-2100-8i-driver/SmartHBA-2100-8i-driver.spec
Siyu Zhang 97f93be495 Modify the spec file
Rename the spec file since the ci_check request it is same with the git
repo.
Add changelog.
The mkdinitrd is not used in many new project. Add dracut to support
updating the initramfs.
The kernel version is different with kernel-devel on obs. We use the
kernel-devel version to build the driver.

Signed-off-by: Siyu Zhang <siyu.zhang@windriver.com>
Signed-off-by: Hao Zhang <Hao.Zhang@windriver.com>
2023-10-19 17:21:03 +08:00

232 lines
7.2 KiB
RPMSpec

%define name smartpqi
%define version 2.1.22
%define release 040
%define kernel `rpm -q kernel-devel|cut -d - -f 3,4`
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}-040.tar.bz2
Source1: Module.supported
Source2: %{name}-fromsrc.conf
URL: http://www.microchip.com
Distribution: Microchip Technology Inc.
BuildRoot: /var/tmp/%{name}-buildroot
BuildRequires: gcc make kernel-devel kernel-headers
%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} KVER=`rpm -q kernel-devel|cut -d - -f 3,4`;
# 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} KVER=`rpm -q kernel-devel|cut -d - -f 3,4`
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
chmod 644 $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
if which dracut |grep -c "dracut" >> /dev/null; then
dracut -f /boot/initramfs-%{kernel}.img %{kernel};
echo -e "Install Driver InitramFS Updated.";
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;
if which dracut |grep -c "dracut" >> /dev/null; then
dracut -f /boot/initramfs-%{kernel}.img %{kernel};
echo -e "Uninstall Driver InitramFS Updated.";
fi;
echo -e "Uninstall Done."
# files ########################################################################
%files -f ../file.list.%{name}
# changelog ###################################################################
%changelog
* Thu Jul 27 2023 Siyu Zhang <siyu.zhang@windriver.com> - 2.1.22-040
- Port the PMC RAID driver to openeuler.