Skip to content

Commit 4be991d

Browse files
fix package generation (#775)
* fix package generation * rename package to zenohc; prefix add lib prefix to deb packages; * fix package version * fix version for X.Y.Z.1
1 parent fee0bf5 commit 4be991d

File tree

3 files changed

+80
-6
lines changed

3 files changed

+80
-6
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ if(NOT DEFINED PROJECT_VERSION_TWEAK)
4343
set(project_version "${project_version}")
4444
elseif(PROJECT_VERSION_TWEAK EQUAL 0)
4545
set(project_version "${project_version}-dev")
46-
elseif(PROJECT_VERSION_TWEAK GREATER 1)
46+
elseif(PROJECT_VERSION_TWEAK GREATER 0)
4747
set(project_version "${project_version}-pre.${PROJECT_VERSION_TWEAK}")
4848
endif()
4949
status_print(project_version)

install/CMakeLists.txt

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ function(install_zenohc_lib configurations property_postfix package_name)
2222
else()
2323
set(ZENOHC_INSTALL_DYLIBDIR ${CMAKE_INSTALL_LIBDIR})
2424
endif()
25-
install(FILES ${dylib_path} DESTINATION ${ZENOHC_INSTALL_DYLIBDIR} CONFIGURATIONS ${configurations})
25+
install(FILES ${dylib_path} DESTINATION ${ZENOHC_INSTALL_DYLIBDIR} CONFIGURATIONS ${configurations} COMPONENT lib)
2626
if(DEFINED implib_path)
27-
install(FILES ${implib_path} DESTINATION ${CMAKE_INSTALL_LIBDIR} CONFIGURATIONS ${configurations})
27+
install(FILES ${implib_path} DESTINATION ${CMAKE_INSTALL_LIBDIR} CONFIGURATIONS ${configurations} COMPONENT lib)
2828
endif()
2929
if((APPLE OR UNIX))
3030
get_filename_component(LIBNAME ${DYLIB} NAME_WE)
@@ -33,13 +33,14 @@ function(install_zenohc_lib configurations property_postfix package_name)
3333
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
3434
CONFIGURATIONS ${configurations}
3535
RENAME ${package_name}.pc
36-
OPTIONAL)
36+
OPTIONAL
37+
COMPONENT dev)
3738
endif()
3839
else()
3940
get_target_property(staticlib_path zenohc::static IMPORTED_LOCATION_${property_postfix})
4041
get_target_property(NATIVE_STATIC_LIBS zenohc::static INTERFACE_LINK_LIBRARIES)
4142
get_filename_component(STATICLIB ${staticlib_path} NAME)
42-
install(FILES ${staticlib_path} DESTINATION ${CMAKE_INSTALL_LIBDIR} CONFIGURATIONS ${configurations})
43+
install(FILES ${staticlib_path} DESTINATION ${CMAKE_INSTALL_LIBDIR} CONFIGURATIONS ${configurations} COMPONENT lib)
4344
endif()
4445

4546
set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/${package_name}")
@@ -79,11 +80,50 @@ endfunction()
7980
#
8081
get_target_property(include_dirs zenohc::lib INTERFACE_INCLUDE_DIRECTORIES)
8182
foreach(dir ${include_dirs})
82-
install(DIRECTORY "${dir}/" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
83+
install(DIRECTORY "${dir}/" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers)
8384
endforeach()
8485

8586
#
8687
# Install lib files
8788
#
8889
install_zenohc_lib("Release;RelWithDebInfo;MinSizeRel;None" "RELEASE" zenohc)
8990
install_zenohc_lib("Debug" "DEBUG" zenohc)
91+
92+
#
93+
# Configure CPack
94+
#
95+
set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/packages")
96+
set(CPACK_PACKAGE_CHECKSUM MD5)
97+
set(CPACK_PACKAGE_VENDOR "The Eclipse Foundation")
98+
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
99+
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
100+
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
101+
set(CPACK_COMPONENT_LIB_DESCRIPTION "The C client library for Eclipse zenoh")
102+
set(CPACK_COMPONENT_DEV_DESCRIPTION "${CPACK_COMPONENT_LIB_DESCRIPTION} - cmake files")
103+
set(CPACK_COMPONENT_HEADERS_DESCRIPTION "${CPACK_COMPONENT_LIB_DESCRIPTION} - header files")
104+
set(CPACK_COMPONENT_LIB_GROUP "lib")
105+
set(CPACK_COMPONENT_HEADERS_GROUP "dev")
106+
set(CPACK_COMPONENT_DEV_GROUP "dev")
107+
set(CPACK_COMPONENT_HEADERS_DEPENDS lib)
108+
set(CPACK_COMPONENT_DEV_DEPENDS lib)
109+
110+
set(CPACK_GENERATOR ZIP)
111+
# set package name to format <name>-<version>.<extension>
112+
# platform name doesn't matter for header-only library
113+
set(CPACK_PACKAGE_NAME zenohc)
114+
115+
if(NOT CPACK_PACKAGE_VERSION)
116+
set(SEM_VER "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
117+
if(NOT DEFINED PROJECT_VERSION_TWEAK)
118+
set(CPACK_PACKAGE_VERSION ${SEM_VER})
119+
elseif(PROJECT_VERSION_TWEAK EQUAL 0)
120+
set(CPACK_PACKAGE_VERSION "${SEM_VER}~dev-1")
121+
elseif(PROJECT_VERSION_TWEAK GREATER 0)
122+
set(CPACK_PACKAGE_VERSION "${SEM_VER}~pre.${PROJECT_VERSION_TWEAK}-1")
123+
endif()
124+
endif()
125+
126+
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
127+
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpack_project_config.cmake")
128+
129+
include(CPack)

install/cpack_project_config.cmake

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
if(CPACK_GENERATOR MATCHES "DEB")
2+
# DEB package
3+
if(NOT DEBARCH)
4+
execute_process(
5+
COMMAND dpkg --print-architecture
6+
OUTPUT_VARIABLE DEBARCH
7+
OUTPUT_STRIP_TRAILING_WHITESPACE
8+
)
9+
endif()
10+
message(STATUS "Configure DEB packaging for Linux ${DEBARCH}")
11+
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ZettaScale Zenoh Team, <[email protected]>")
12+
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEBARCH})
13+
set(CPACK_DEB_COMPONENT_INSTALL ON)
14+
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
15+
set(CPACK_DEBIAN_LIB_PACKAGE_NAME lib${CPACK_PACKAGE_NAME})
16+
set(CPACK_DEBIAN_LIB_PACKAGE_DEPENDS "libc6 (>=2.12)")
17+
set(CPACK_DEBIAN_DEV_PACKAGE_NAME lib${CPACK_PACKAGE_NAME}-dev)
18+
set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "${CPACK_DEBIAN_LIB_PACKAGE_NAME} (=${CPACK_PACKAGE_VERSION})")
19+
endif()
20+
21+
if(CPACK_GENERATOR MATCHES "RPM")
22+
# RPM package
23+
# rpmbuild should be installed
24+
# apt install rpm
25+
if(NOT RPMARCH)
26+
set(RPMARCH ${CMAKE_SYSTEM_PROCESSOR})
27+
endif()
28+
message(STATUS "Configure RPM packaging for Linux ${RPMARCH}")
29+
set(CPACK_RPM_PACKAGE_ARCHITECTURE ${RPMARCH})
30+
set(CPACK_RPM_COMPONENT_INSTALL ON)
31+
set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
32+
set(CPACK_RPM_LIB_PACKAGE_NAME ${CPACK_PACKAGE_NAME}) # avoid "-lib" suffix for "lib" package
33+
set(CPACK_RPM_DEV_PACKAGE_REQUIRES "${CPACK_RPM_LIB_PACKAGE_NAME} = ${CPACK_PACKAGE_VERSION}")
34+
endif()

0 commit comments

Comments
 (0)