diff --git a/build/make_software_package.sh b/build/make_software_package.sh index ba7669b2ec07a0b39757a77fbfc3b694ae82fe48..8e5498a7eedf92061c9e0a410e64a974cebc8f6b 100644 --- a/build/make_software_package.sh +++ b/build/make_software_package.sh @@ -166,4 +166,4 @@ base_rpmbuild_cmd="rpmbuild --define \"package_name ${HCOM_PACKAGE_NAME}\" -bb h # 执行最终的 rpmbuild 命令 eval "$base_rpmbuild_cmd" -cp ~/rpmbuild/RPMS/${HCOM_BUILD_OS_ARCH}/ubs-hcom-2.0.0*.rpm "${HCOM_ROOT_DIR}/dist/ubs-hcom-2.0.0-1.${OS}_${HCOM_BUILD_OS_ARCH}.rpm" \ No newline at end of file +cp ~/rpmbuild/RPMS/${HCOM_BUILD_OS_ARCH}/ubs-comm*.rpm "${HCOM_ROOT_DIR}/dist/" \ No newline at end of file diff --git a/hcom.spec b/hcom.spec index 57cc7a7b59ee5a579cdfb34dc47c05b96e54abbc..a8b40390803ef221abebc67cdfa94fd6834a310b 100644 --- a/hcom.spec +++ b/hcom.spec @@ -20,19 +20,22 @@ %endif %if %{undefined rpm_version} - %define rpm_version 2.0.0 + %define rpm_version 1.0.0 %endif %if %{undefined rpm_release} - %define rpm_release 1 + %define rpm_release B018 %endif %if %{undefined rpm_build_date} %define rpm_build_date %(date +"%%Y-%%m-%%d-%%H:%%M:%%S") %endif -%global package_suffix ubs-hcom -%global debug_package %{nil} +%if %{undefined package_name} + %define package_name ubs-comm +%endif + +%global package_suffix ubs-comm Name: %{package_suffix} Version : %{rpm_version} @@ -52,15 +55,17 @@ 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 debuginfo -Summary: Debuginfo for HCOM +%package lib +Summary: Dynamic library for HCOM + +%description lib +This package contains dynamic library for HCOM -%description debuginfo -This package contains debug info of hcom.so %prep %setup -c -n %{name}_%{version} @@ -86,14 +91,6 @@ cp -r %{_builddir}/%{name}_%{version}/%{package_name}/hcom/include/hcom/* %{bui cp -r %{_builddir}/%{name}_%{version}/%{package_name}/hcom/bin/htracer_cli %{buildroot}/usr/local/bin/ %endif -%files -%defattr(-,root,root) -%{_prefix}/lib64/*.so -%{_prefix}/lib64/*.a -%if %{with java_compile} - %{_prefix}/local/jars/hcom/*.jar -%endif - %files devel %defattr(-,root,root) %{_prefix}/include/hcom/capi/*.h @@ -101,14 +98,15 @@ cp -r %{_builddir}/%{name}_%{version}/%{package_name}/hcom/include/hcom/* %{bui %if %{with_hcom_perf} || %{with_htracer_cli} %{_prefix}/local/bin/* %endif -%{_prefix}/lib64/*.so -%{_prefix}/lib64/*.a +%{_prefix}/lib64/libhcom.so +%{_prefix}/lib64/libhcom_static.a %if %{with java_compile} %{_prefix}/local/jars/hcom/*.jar %endif -%files debuginfo +%files lib %defattr(-,root,root) -%{_prefix}/lib64/libhcom.so.debug +%{_prefix}/lib64/libhcom.so.0 +%{_prefix}/lib64/libhcom.so.0.0.1 %define __os_install_post %{nil} \ No newline at end of file diff --git a/src/hcom/3rdparty/urma/CMakeLists.txt b/src/hcom/3rdparty/urma/CMakeLists.txt index 5202d7198e1fd8267b4ab4abd011bab633e0a5e1..6bfe49063aebd4a276988103c1c431a93e66e393 100644 --- a/src/hcom/3rdparty/urma/CMakeLists.txt +++ b/src/hcom/3rdparty/urma/CMakeLists.txt @@ -35,6 +35,6 @@ if(NOT USE_SYSTEM_URMA) foreach(dir ${URMA_INCLUDE_DIR}) message(STATUS "URMA include directory: ${dir}") endforeach() - target_include_directories(hcom PRIVATE ${URMA_INCLUDE_DIR}) - target_include_directories(hcom_static_obj PRIVATE ${URMA_INCLUDE_DIR}) -endif() \ No newline at end of file +endif() +target_include_directories(hcom PRIVATE ${URMA_INCLUDE_DIR}) +target_include_directories(hcom_static_obj PRIVATE ${URMA_INCLUDE_DIR}) \ No newline at end of file diff --git a/src/hcom/CMakeLists.txt b/src/hcom/CMakeLists.txt index 9522821321e4927db41254de8127f751b46991a4..38f79212709b5a987aa21152a0952eb357690bfc 100644 --- a/src/hcom/CMakeLists.txt +++ b/src/hcom/CMakeLists.txt @@ -4,6 +4,13 @@ if(NOT DEFINED CPU_TYPE) endif() message(STATUS "CPU_TYPE: ${CPU_TYPE}") +# 设置库版本(用于 soname) +set(LIB_VERSION_MAJOR 0) +set(LIB_VERSION_MINOR 0) +set(LIB_VERSION_PATCH 1) +set(LIB_VERSION "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}") +set(SOVERSION "${LIB_VERSION_MAJOR}") + option(BUILD_JAVA_SDK "Build java sdk" OFF) option(BUILD_WITH_HW_CRC "Build with hardware crc" OFF) option(BUILD_WITH_SERVICE "Build with SERVICE" ON) @@ -212,22 +219,6 @@ if(NOT BUILD_WITH_UB) list(REMOVE_ITEM HCOM ${HCOM_UB_SRCS}) endif () -# add debuginfo file for dynamic library -function(split_debug_symbols target) - # 定义符号文件路径(与二进制同目录,添加.debug后缀) - set(debug_file "$.debug") - - add_custom_command(TARGET ${target} POST_BUILD - # 1. 提取完整调试符号到单独文件 - COMMAND ${CMAKE_OBJCOPY} --only-keep-debug "$" "${debug_file}" - # 2. 从主二进制中剥离调试符号但保留最小关联信息 - COMMAND ${CMAKE_OBJCOPY} --strip-debug --strip-unneeded "$" - # 为可执行文件添加符号表文件的链接 - COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink=${debug_file} "$" - COMMENT "Splitting debug symbols for ${target} into ${debug_file}" - ) -endfunction() - add_library(hcom_static_obj STATIC ${HCOM}) target_link_libraries(hcom_static_obj -Wl,--start-group @@ -252,7 +243,10 @@ target_link_libraries(hcom pthread dl rt boundscheck -Wl,--end-group) -split_debug_symbols(hcom) +set_target_properties(hcom PROPERTIES + VERSION ${LIB_VERSION} + SOVERSION ${SOVERSION} +) add_subdirectory(3rdparty) target_include_directories(hcom PUBLIC ${HCOM_SRC_INCLUDE_PATH}) @@ -277,7 +271,6 @@ install(FILES ${INCLUDE_HEADERS} DESTINATION ${TARGET_INSTALL_INCLUDE} PERMISSIO install(FILES ${C_INCLUDE_HEADERS} DESTINATION ${TARGET_INSTALL_INCLUDE}/capi PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ) install(FILES ${CMAKE_BINARY_DIR}/src/hcom/libhcom_static.a DESTINATION ${TARGET_INSTALL_LIB}/ PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) install(TARGETS hcom DESTINATION ${TARGET_INSTALL_LIB}/ PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -install(FILES ${CMAKE_BINARY_DIR}/src/hcom/libhcom.so.debug DESTINATION ${TARGET_INSTALL_LIB}/ PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) #set wether java sdk will be built.(not implemented yet) if(${BUILD_JAVA_SDK} MATCHES "ON")