# add --with transport_service_disable option, i.e. enable TPS by default
%bcond_with transport_service_disable

# add --with hw_disable option, i.e. enable HW by default
%bcond_with hw_disable

%if %{defined kernel_version}
    %define kernel_build_path /lib/modules/%{kernel_version}/build
%else
    %define kernel_version %(uname -r)
    %define kernel_build_path /lib/modules/%{kernel_version}/build
%endif
%define kernel_requires_version %(echo %{kernel_version} | awk -F"." 'OFS="."{$NF="";print}' | sed 's/\.$//g')

%if %{undefined rpm_version}
    %define rpm_version 1.3.0
%endif

%if %{undefined rpm_release}
    %define rpm_release B013
%endif

Name          : umdk-urma
Summary       : Unified memory development kit
Version       : %{rpm_version}
Release       : %{rpm_release}
Group         : nStack
License       : GPL-2.0-only
Provides      : Huawei Technologies Co., Ltd
Source0       : %{name}-%{version}.tar.gz
BuildRoot     : %{_buildirootdir}/%{name}-%{version}-build
BuildArch     : x86_64 aarch64
ExclusiveArch : aarch64
BuildRequires : rpm-build, make, cmake, gcc, gcc-c++, glibc-devel
BuildRequires : glib2-devel, systemd, libnl3-devel, openssl-devel
Requires: glibc, glib2
%if %{with asan}
Requires: libasan
%endif

%description
A new system interconnect architecture

%package lib
Summary:        Basic URMA libraries of UMDK

%description lib
This package contains basic URMA libraries of UMDK, such as liburma.so.

%if %{without hw_disable}
%package compat-hns-lib
Summary:	Libraries of hns

%description compat-hns-lib
This pachage contains libraries of hns, such as liburma-hns3.so.
%endif

%package devel
Summary:        Include Files and Libraries mandatory for URMA
Requires:       umdk-urma-lib = %{version}
AutoReqProv:    on

%description devel
This package contains all necessary include files and libraries needed
to develop applications that require the provided includes and
libraries.

%package tools
Summary:        tools of urma
Requires:       umdk-urma-lib = %{version}
%description tools
tools of urma, contains  urma_perftest, urma_admin.

%if %{without transport_service_disable}
%package bin
Summary:        binary file of urma
BuildRequires:  gcc
Requires:       glibc
%description bin
binary file of urma, contains tpsa_daemon, uvs_admin
%endif

%prep
%setup -c -n %{name}-%{version}

%build
    cmake ./ -DCMAKE_INSTALL_PREFIX=/usr \
%if %{with transport_service_disable}
    -DTPS="disable" \
%endif
%if %{with hw_disable}
    -DHW="disable" \
%endif
%if %{defined kernel_version}
    -DKERNEL_RELEASE=%{kernel_version} \
    -DKERNEL_PATH=%{kernel_build_path} \
%endif

make %{?_smp_mflags}

%install
%{__rm} -rf %{buildroot}
make install DESTDIR=%{buildroot}

%clean
%{__rm} -rf %{buildroot}

%files lib
%defattr(-,root,root)
    %{_libdir}/liburma.so
    %{_libdir}/liburma.so.0
    %{_libdir}/liburma.so.0.0.1
    %{_libdir}/liburma_common.so
    %{_libdir}/liburma_common.so.0
    %{_libdir}/liburma_common.so.0.0.1
    /etc/rsyslog.d/urma.conf
    /etc/logrotate.d/urma

%post lib
if [ -x %{_bindir}/systemctl ] && [ -x %{_sbindir}/rsyslogd ]; then
    %{_bindir}/systemctl restart rsyslog >/dev/null  2>&1
fi

%if %{without hw_disable}
%files compat-hns-lib
%defattr(-,root,root)
    %dir %{_libdir}/urma
    %{_libdir}/urma/liburma-hns3.so
%endif

%files devel
%defattr(-,root,root)
    %dir %{_includedir}/umdk
    %dir %{_includedir}/umdk/common
    %{_includedir}/umdk/urma_*.h
    %{_includedir}/umdk/ub_errno.h
    %{_includedir}/umdk/urma_provider.h
    %{_includedir}/umdk/common/ub_*.h
    %{_includedir}/umdk/common/urma_*.h

%files tools
%defattr(-,root,root)
    %{_bindir}/urma_perftest
    %{_bindir}/urma_admin
    /etc/rsyslog.d/urma_admin.conf

%post tools
if [ -x %{_bindir}/systemctl ] && [ -x %{_sbindir}/rsyslogd ]; then
    %{_bindir}/systemctl restart rsyslog >/dev/null  2>&1
fi

%if %{without transport_service_disable}
%files bin
%defattr(-,root,root)
    %{_sbindir}/tpsa_daemon
    %{_sbindir}/uvs_daemon
    %attr(0700,-,-) %{_bindir}/uvs_admin
    /etc/rsyslog.d/tpsa.conf
    /etc/rsyslog.d/uvs_admin.conf
    /etc/logrotate.d/tpsa
    %dir /etc/tpsa
    %{_libdir}/libtpsa.so
    %{_libdir}/libtpsa.so.0
    %{_libdir}/libtpsa.so.0.0.1
    %attr(0644,-,-) %{_unitdir}/uvsd.service
%config(noreplace) /etc/tpsa/tpsa.ini
%post bin
if [ -x %{_bindir}/systemctl ]; then
    %{_bindir}/systemctl daemon-reload >/dev/null  2>&1
fi
if [ -x %{_bindir}/systemctl ] && [ -x %{_sbindir}/rsyslogd ]; then
    %{_bindir}/systemctl restart rsyslog >/dev/null  2>&1
fi
%endif

%changelog
* Thu July 18 2024 WeiboZhao <zhaoweibo3@huawei.com> - 1.3.0-B013
- Bugfix: add log for udma

* Thu June 20 2024 WeiboZhao <zhaoweibo3@huawei.com> - 1.3.0-B012
- Bugfix: hns3 udma: add rq mode for UM

*Thu June 20 2024 WenChen <chenwen54@huawei.com> - 1.3.0-B011
- Bugfix: urma tool information error

*Wed June 5 2024 WenChen <chenwen54@huawei.com> - 1.3.0-B010
- fix bugs urma_perftest init

* Wed May 22 2024 WenChen <chenwen54@huawei.com> - 1.3.0-B009
- add sync urma_tag

* Fri Mar 22 2024 panchenbo <panchenbo@kylinsec.com.cn> - 1.3.0-B008
- add BuildRequires:systemd for %{_unitdir} Macros

* Wed Nov 29 2023 Yizhen Fan <fanyizhen@huawei.com> - 1.3.0-B007
- Type:bugfix
- DESC:modify SO_REUSEADDR to SO_REUSEPORT

* Tue Nov 28 2023 Yizhen Fan <fanyizhen@huawei.com> - 1.3.0-B006
- Type:bugfix
- DESC:fix bugs detected in urma 

* Thu Nov 23 2023 Yizhen Fan <fanyizhen@huawei.com> - 1.3.0-B005
- Type:feature
- DESC:add new feature for urma. 

* Fri Oct 13 2023 Yizhen Fan <fanyizhen@huawei.com> - 1.3.0-B004
- Type:feature
- DESC:update source code, add hw hns3 lib

* Wed Oct 11 2023 Yizhen Fan <fanyizhen@huawei.com> - 1.3.0-B003
- Type:bugfix
- DESC:change name of spec to umdk-urma

* Wed Oct 11 2023 Yizhen Fan <fanyizhen@huawei.com> - 1.3.0-B002
- Type:bugfix
- DESC:change name of spec to umdk; change arch that only support aarch64

* Tue Oct 10 2023 Yizhen Fan <fanyizhen@huawei.com> - 1.3.0-B001
- Package init
