# add --with java_compile option, i.e. disable java_compile by default
%bcond_with java_compile
%global build_type %{?_build_type:%{_build_type}}
# 如果没有提供,则设置默认值
%if "%{build_type}" == ""
%global build_type release
%endif
%global with_hcom_perf %{?_with_hcom_perf:%{_with_hcom_perf}}
# 如果没有提供,则设置默认值
%if "%{with_hcom_perf}" == ""
%global with_hcom_perf 0
%endif
%global with_multicast %{?_with_multicast:%{_with_multicast}}
# 如果没有提供,则设置默认值
%if "%{with_multicast}" == ""
%global with_multicast 0
%endif
%global with_htracer_cli %{?_with_htracer_cli:%{_with_htracer_cli}}
# 如果没有提供,则设置默认值
%if "%{with_htracer_cli}" == ""
%global with_htracer_cli 1
%endif
%if %{undefined rpm_version}
%define rpm_version 1.0.0
%endif
%if %{undefined rpm_release}
%define rpm_release 7
%endif
%if %{undefined rpm_build_date}
%define rpm_build_date %(date +"%%Y-%%m-%%d-%%H:%%M:%%S")
%endif
%if %{undefined package_name}
%define package_name ubs-comm
%endif
%global package_suffix ubs-comm
Name: %{package_suffix}
Version : %{rpm_version}
Release : %{rpm_release}
Summary: HCOM
License : GPL-2.0-only
Provides : Huawei Technologies Co., Ltd
Source0 : %{package_name}.tar.gz
BuildRoot : %{_buildirootdir}/%{name}_%{version}-build
buildArch : aarch64 x86_64
ExclusiveArch : aarch64
BuildRequires: make gcc cmake libboundscheck rdma-core-devel umdk-urma-devel openssl openssl-devel
Requires: libboundscheck
%description
HCOM是一个适用于C/S架构应用程序的高性能通信库
%package devel
Summary: Development header files and dynamic library for HCOM
Requires: ubs-comm-lib = %{version}
%description devel
This package contains development header files and dynamic library for HCOM
%package lib
Summary: Dynamic library for HCOM
%description lib
This package contains dynamic library for HCOM
%package umq
Summary: Dynamic library for umq
%description umq
This package contains dynamic library for umq
%package ubsocket
Summary: Dynamic library for ubsocket
%description ubsocket
This package contains dynamic library for ubsocket
%prep
%setup -q -b 0 -c -n %{name}
%build
cd %{_builddir}/%{name} && export HCOM_BUILD_RPM=off && export HCOM_BUILD_UB=on && export HCOM_BUILD_HTRACER=on && export UMQ_BUILD=on && export UBSOCKET_BUILD=on && bash -x build.sh
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/usr/lib64/
mkdir -p %{buildroot}/usr/local/jars/hcom
mkdir -p %{buildroot}/usr/include/hcom/capi
mkdir -p %{buildroot}/usr/local/bin
cp %{_builddir}/%{package_name}/dist/hcom/lib/libhcom.so.0.0.1 %{buildroot}/usr/lib64/
ln -s libhcom.so.0.0.1 %{buildroot}%{_libdir}/libhcom.so.0
ln -s libhcom.so.0 %{buildroot}%{_libdir}/libhcom.so
cp %{_builddir}/%{package_name}/dist/hcom/lib/libhcom_static.a %{buildroot}/usr/lib64/
cp -r %{_builddir}/%{package_name}/dist/hcom/include/hcom/* %{buildroot}/usr/include/hcom/
cp %{_builddir}/%{package_name}/src/hcom/umq/build/src/libumq.so.0.0.1 %{buildroot}/usr/lib64/
ln -s libumq.so.0.0.1 %{buildroot}%{_libdir}/libumq.so.0
ln -s libumq.so.0 %{buildroot}%{_libdir}/libumq.so
cp %{_builddir}/%{package_name}/src/hcom/umq/build/src/umq_ub/libumq_ub.so.0.0.1 %{buildroot}/usr/lib64/
ln -s libumq_ub.so.0.0.1 %{buildroot}%{_libdir}/libumq_ub.so.0
ln -s libumq_ub.so.0 %{buildroot}%{_libdir}/libumq_ub.so
cp %{_builddir}/%{package_name}/src/hcom/umq/build/src/qbuf/libumq_buf.so.0.0.1 %{buildroot}/usr/lib64/
ln -s libumq_buf.so.0.0.1 %{buildroot}%{_libdir}/libumq_buf.so.0
ln -s libumq_buf.so.0 %{buildroot}%{_libdir}/libumq_buf.so
cp %{_builddir}/%{package_name}/src/ubsocket/build/brpc/librpc_adapter_brpc.so.0.0.1 %{buildroot}/usr/lib64/
ln -s librpc_adapter_brpc.so.0.0.1 %{buildroot}%{_libdir}/librpc_adapter_brpc.so.0
ln -s librpc_adapter_brpc.so.0 %{buildroot}%{_libdir}/librpc_adapter_brpc.so
%if %{with java_compile}
cp %{_builddir}/%{package_name}/hcom/jars/* %{buildroot}/usr/local/jars/hcom/
%endif
%if %{with_hcom_perf}
cp -r %{_builddir}/%{package_name}/tools/perf_test/build/hcom_perf %{buildroot}/usr/local/bin/
%endif
%if %{with_htracer_cli}
cp -r %{_builddir}/%{package_name}/dist/hcom_3rdparty/hcom_tracer/htracer_cli %{buildroot}/usr/local/bin/
%endif
%files devel
%defattr(-,root,root)
%{_prefix}/include/hcom/capi/*.h
%{_prefix}/include/hcom/*.h
%if %{with_multicast}
%{_prefix}/include/hcom/multicast/*.h
%endif
%if %{with_hcom_perf} || %{with_htracer_cli}
%{_prefix}/local/bin/*
%endif
%{_prefix}/lib64/libhcom.so
%{_prefix}/lib64/libhcom_static.a
%if %{with java_compile}
%{_prefix}/local/jars/hcom/*.jar
%endif
%files lib
%defattr(-,root,root)
%{_prefix}/lib64/libhcom.so.0
%{_prefix}/lib64/libhcom.so.0.0.1
%files umq
%defattr(-,root,root)
%{_prefix}/lib64/libumq.so
%{_prefix}/lib64/libumq_ub.so
%{_prefix}/lib64/libumq_buf.so
%{_prefix}/lib64/libumq.so.0
%{_prefix}/lib64/libumq.so.0.0.1
%{_prefix}/lib64/libumq_ub.so.0
%{_prefix}/lib64/libumq_ub.so.0.0.1
%{_prefix}/lib64/libumq_buf.so.0
%{_prefix}/lib64/libumq_buf.so.0.0.1
%files ubsocket
%defattr(-,root,root)
%{_prefix}/lib64/librpc_adapter_brpc.so
%{_prefix}/lib64/librpc_adapter_brpc.so.0
%{_prefix}/lib64/librpc_adapter_brpc.so.0.0.1
%changelog
* Fri Jan 23 2026 xxx <xxx@xxx.com> - 1.0.0-7
- fix tar use noncom branch, update log.
* Sat Jan 17 2026 xxx <xxx@xxx.com> - 1.0.0-6
- Add ubsocket and umq.
* Tue Jan 06 2026 xxx <xxx@xxx.com> - 1.0.0-5
- Delete redundant logs and fix return.
* Fri Dec 26 2025 xxx <xxx@xxx.com> - 1.0.0-3
- Bugfix
* Wed Dec 17 2025 xxx <xxx@xxx.com> - 1.0.0-2
- Bugfix
* Thu Nov 20 2025 xxx <xxx@xxx.com> - 1.0.0-1
- Bugfix
* Thu Nov 20 2025 xxx <xxx@xxx.com> - 1.0.0-1
- Bugfix, update License
* Thu Nov 20 2025 xxx <xxx@xxx.com> - 1.0.0-1
- Package init