Name:          dpu-utilities 
Summary:       openEuler dpu utilities
Version:       1.1
Release:       3
License:       GPL-2.0
Source:        https://gitee.com/openeuler/dpu-utilities/repository/archive/v%{version}.tar.gz
ExclusiveOS:   linux
URL:           https://gitee.com/openeuler/dpu-utilities
BuildRoot:     %{_tmppath}/%{name}-%{version}-root
Conflicts:     %{name} < %{version}-%{release}
Provides:      %{name} = %{version}-%{release}
%define kernel_version %(ver=`rpm -qa|grep kernel-devel`;echo ${ver#*kernel-devel-})
BuildRequires: kernel-devel >= 5.10, gcc, make
BuildRequires: golang
Patch0:        0001-add-path-put-in-xattr-set.patch
Patch1:        0002-Add-drop-link-and-dentry-invalid-in-unlink-and-rmdir.patch
Patch2:        0003-enable-rexec-read-net-addr-from-config-file.patch
Patch3:        0004-Fix-inode-sync-error-between-client-and-server.patch
%description
This package contains the software utilities on dpu.

%package -n dpuos-imageTailor-config
Summary: dpuos imageTailor configrations
Requires: imageTailor

%description -n dpuos-imageTailor-config
imageTailor configration files for dpuos

%package -n qtfs-client
Summary: Client of qtfs

%description -n qtfs-client
qtfs is a shared file system, this is the client of qtfs.

%package -n qtfs-server
Summary: Server of qtfs

%description -n qtfs-server
qtfs is a shared file system, this is the server of qtfs.

%prep
%autosetup -n %{name}-v%{version} -p1

%build
sed -i "s#KBUILD=.*#KBUILD=/lib/modules/%{kernel_version}/build#" %_builddir/%{name}-v%{version}/qtfs/qtfs/Makefile
sed -i "s#KBUILD=.*#KBUILD=/lib/modules/%{kernel_version}/build#" %_builddir/%{name}-v%{version}/qtfs/qtfs_server/Makefile
cd %_builddir/%{name}-v%{version}/qtfs/qtfs
make
cd %_builddir/%{name}-v%{version}/qtfs/qtfs_server
make
cd %_builddir/%{name}-v%{version}/qtfs/rexec
make

%install
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{kernel_version}//extra
mkdir -p $RPM_BUILD_ROOT/usr/bin/
install %_builddir/%{name}-v%{version}/qtfs/qtfs/qtfs.ko $RPM_BUILD_ROOT/lib/modules/%{kernel_version}/extra
install %_builddir/%{name}-v%{version}/qtfs/qtfs_server/qtfs_server.ko $RPM_BUILD_ROOT/lib/modules/%{kernel_version}/extra
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/qtfs_server/engine $RPM_BUILD_ROOT/usr/bin/
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/rexec/rexec ${RPM_BUILD_ROOT}/usr/bin/
install -m 0700 %_builddir/%{name}-v%{version}/qtfs/rexec/rexec_server ${RPM_BUILD_ROOT}/usr/bin/
mkdir -p $RPM_BUILD_ROOT/opt/imageTailor
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/custom $RPM_BUILD_ROOT/opt/imageTailor
cp -rf %_builddir/%{name}-v%{version}/dpuos/image_tailor_cfg/kiwi $RPM_BUILD_ROOT/opt/imageTailor

%clean
rm -rf ${RPM_BUILD_ROOT}

%post -n qtfs-client
if [[ "$1" = "1" || "$1" = "2" ]] ; then  #1: install 2: update
    /sbin/depmod -a > /dev/null 2>&1 || true
fi

%post -n qtfs-server
if [[ "$1" = "1" || "$1" = "2" ]] ; then  #1: install 2: update
    /sbin/depmod -a > /dev/null 2>&1 || true
fi

%postun -n qtfs-client
if [ "$1" = "0" ] ; then  #0: uninstall
    /sbin/depmod -a > /dev/null 2>&1 || true
fi

%postun -n qtfs-server
if [ "$1" = "0" ] ; then  #0: uninstall
    /sbin/depmod -a > /dev/null 2>&1 || true
fi


%files -n qtfs-client
/lib/modules/%{kernel_version}/extra/qtfs.ko
%attr(0700, root, root) /usr/bin/rexec_server
%attr(0700, root, root) /usr/bin/rexec

%files -n qtfs-server
/lib/modules/%{kernel_version}/extra/qtfs_server.ko
%attr(0700, root, root) /usr/bin/engine
%attr(0700, root, root)/usr/bin/rexec_server
%attr(0700, root, root)/usr/bin/rexec

%files -n dpuos-imageTailor-config
/opt/imageTailor/custom/*
/opt/imageTailor/kiwi/*

%post -n dpuos-imageTailor-config
sed -i '/# product_name  product_type/a\dpuos           PANGEA        EMBEDDED   DISK     ISO          install_mode=install install_media=CD install_repo=CD selinux=0' /opt/imageTailor/kiwi/eulerkiwi/product.conf
sed -i '/# product cut_conf/a\dpuos      kiwi/minios/cfg_dpuos  yes' /opt/imageTailor/kiwi/eulerkiwi/minios.conf
sed -i '/<repository_rule>/a\dpuos          1           rpm-dir     euler_base' /opt/imageTailor/repos/RepositoryRule.conf

%changelog
* Thu Dec 15 2022 YangXin <245051644@qq.com> 1.1-3
- Fix inode sync error between client and server.
* Thu Dec 08 2022 YangXin <245051644@qq.com> 1.1-2
- Fix error of qtfs and modify rexec to enable reading net addr from file.
* Mon Nov 28 2022 Weifeng Su <suweifeng1@huawei.com> 1.1-1
- Upgrade dpu-utilities version to 1.1
* Wed Aug 17 2022 yangxin <245051644@qq.com> 1.0-2
- Split dpu-utilities into three packages.
* Fri Aug 12 2022 yangxin <245051644@qq.com> 1.0-1
- First Spec Version Include qtfs shared filesystem Driver Code
