kmod-kvdo/kvdo.spec
2023-11-14 16:59:23 +08:00

140 lines
4.4 KiB
RPMSpec

#This spec is obtained from source code(kvdo-6.2.2.24.tar.gz)
%define spec_release 10
%define kmod_name kmod-kvdo
%define kmod_driver_version 6.2.2.24
%define kmod_rpm_release %{spec_release}
%define kmod_kernel_version 4.19.90-2203.4.0.0141.oe1
# Disable the scanning for a debug package
%global debug_package %{nil}
Name: kmod-kvdo
Version: %{kmod_driver_version}
Release: %{kmod_rpm_release}
Summary: Kernel Modules for Virtual Data Optimizer
License: GPLv2+
URL: http://github.com/dm-vdo/kvdo
Source0: https://github.com/dm-vdo/kvdo/archive/6.2.2.24.tar.gz
Patch9001: 0001-fix-install-error-by-frame_larger_than.patch
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
Requires: dkms
Requires: kernel-devel >= %{kmod_kernel_version}
Requires: make
ExclusiveArch: x86_64
ExclusiveArch: aarch64
ExcludeArch: s390
ExcludeArch: s390x
ExcludeArch: ppc
ExcludeArch: ppc64
ExcludeArch: ppc64le
ExcludeArch: i686
%description
Virtual Data Optimizer (VDO) is a device mapper target that delivers
block-level deduplication, compression, and thin provisioning.
This package provides the kernel modules for VDO.
%post
case "$1" in
1)
set -x
/usr/sbin/dkms --rpm_safe_upgrade add -m %{kmod_name} -v %{version}-%{kmod_rpm_release}
/usr/sbin/dkms --rpm_safe_upgrade build -m %{kmod_name} -v %{version}-%{kmod_rpm_release}
/usr/sbin/dkms --rpm_safe_upgrade install -m %{kmod_name} -v %{version}-%{kmod_rpm_release}
;;
2)
set -x
former_info=`dnf list installed | grep kmod-kvdo | head -1 | awk '{print $2}'`
former_version=${former_info%.*}
/usr/sbin/dkms --rpm_safe_upgrade uninstall -m %{kmod_name} -v ${former_version}
/usr/sbin/dkms --rpm_safe_upgrade remove -m %{kmod_name} -v ${former_version} --all
/usr/sbin/dkms --rpm_safe_upgrade add -m %{kmod_name} -v %{version}-%{kmod_rpm_release}
/usr/sbin/dkms --rpm_safe_upgrade build -m %{kmod_name} -v %{version}-%{kmod_rpm_release}
/usr/sbin/dkms --rpm_safe_upgrade install -m %{kmod_name} -v %{version}-%{kmod_rpm_release}
;;
esac
%preun
case "$1" in
0)
# Check whether kvdo or uds is loaded, and if so attempt to remove it. A
# failure here means there is still something using the module, which should be
# cleared up before attempting to remove again.
for module in kvdo uds; do
if grep -q "^${module}" /proc/modules; then
modprobe -r ${module}
fi
done
/usr/sbin/dkms --rpm_safe_upgrade remove -m %{kmod_name} -v %{version}-%{kmod_rpm_release} --all || :
;;
1)
for module in kvdo uds; do
if grep -q "^${module}" /proc/modules; then
modprobe -r ${module}
fi
done
;;
esac
%prep
%autosetup -n kvdo-%{kmod_driver_version} -p1
%build
# Nothing doing here, as we're going to build on whatever kernel we end up
# running inside.
%install
mkdir -p $RPM_BUILD_ROOT/%{_usr}/src/%{kmod_name}-%{version}-%{kmod_rpm_release}
cp -r * $RPM_BUILD_ROOT/%{_usr}/src/%{kmod_name}-%{version}-%{kmod_rpm_release}/
cat > $RPM_BUILD_ROOT/%{_usr}/src/%{kmod_name}-%{version}-%{kmod_rpm_release}/dkms.conf <<EOF
PACKAGE_NAME="kvdo"
PACKAGE_VERSION="%{version}-%{kmod_rpm_release}"
AUTOINSTALL="yes"
BUILT_MODULE_NAME[0]="uds"
BUILT_MODULE_LOCATION[0]="uds"
DEST_MODULE_LOCATION[0]="/kernel/drivers/block/"
STRIP[0]="no"
BUILT_MODULE_NAME[1]="kvdo"
BUILT_MODULE_LOCATION[1]="vdo"
DEST_MODULE_LOCATION[1]="/kernel/drivers/block/"
STRIP[1]="no"
EOF
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%{_usr}/src/%{kmod_name}-%{version}-%{kmod_rpm_release}/*
%changelog
* Tue Nov 14 2023 Ge Wang <wang__ge@126.com> - 6.2.2.24-10
- Specify version for upgrading
* Fri Oct 27 2023 Ge Wang <wang__ge@126.com> - 6.2.2.24-9
- Fix upgrade error due to previous version has already installed modules
* Sat Mar 26 2022 baizhonggui <baizhonggui@huawei.com> - 6.2.2.24-8
- To fix post error, update kmod_kernel_version to latest version: 4.19.90-2203.4.0.0141.oe1
* Fri Aug 28 2020 sunguoshuai <sunguoshuai@huawei.com> - 6.2.2.24-7
- Modify the install dir
* Thu May 7 2020 sunguoshuai <sunguoshuai@huawei.com> - 6.2.2.24-6
- fix install error by frame_larger_than
* Sun Jan 19 2020 sunguoshuai <sunguoshuai@huawei.com> - 6.2.2.24-5
- Modify source0 from github.
* Thu Dec 12 2019 openEuler Buildteam <buildteam@openeuler.org> -6.2.2.24-4
- Modify source0
* Thu Dec 12 2019 openEuler Buildteam <buildteam@openeuler.org> -6.2.2.24-3
- Add support for aarch64
* Tue Dec 3 2019 openEuler Buildteam <buildteam@openeuler.org> -6.2.2.24-2
- Modify release