[Package] Use cpack to build deb package

This commit is contained in:
Hui Yu
2021-11-10 16:39:59 +08:00
parent a89762169e
commit fa251b2e5c
4 changed files with 82 additions and 44 deletions

View File

@@ -41,7 +41,7 @@ cd ${CLIENT_REPO_ROOT}/kubernetes
# Build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lib ..
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
```

View File

@@ -28,7 +28,11 @@ else()
endif()
set(pkgName "kubernetes")
set(VERSION 0.0.1) # this default version can be overridden in PreTarget.cmake
# this default version can be overridden in PreTarget.cmake
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 0)
set(PROJECT_VERSION_PATCH 1)
find_package(CURL 7.58.0 REQUIRED)
if(CURL_FOUND)
@@ -1230,6 +1234,8 @@ set(HDRS
include(PreTarget.cmake OPTIONAL)
set(PROJECT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
# Add library with project file with project name as library name
add_library(${pkgName} ${SRCS} ${HDRS})
# Link dependent libraries
@@ -1246,22 +1252,22 @@ include(PostTarget.cmake OPTIONAL)
# installation of libraries, headers, and config files
if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in)
install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX})
install(TARGETS ${pkgName} DESTINATION lib)
else()
include(GNUInstallDirs)
install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX} EXPORT ${pkgName}Targets)
install(TARGETS ${pkgName} DESTINATION lib EXPORT ${pkgName}Targets)
foreach(HDR_FILE ${HDRS})
get_filename_component(HDR_DIRECTORY ${HDR_FILE} DIRECTORY)
get_filename_component(ABSOLUTE_HDR_DIRECTORY ${HDR_DIRECTORY} ABSOLUTE)
file(RELATIVE_PATH RELATIVE_HDR_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${ABSOLUTE_HDR_DIRECTORY})
install(FILES ${HDR_FILE} DESTINATION include/${RELATIVE_HDR_PATH})
install(FILES ${HDR_FILE} DESTINATION include/${pkgName}/${RELATIVE_HDR_PATH})
endforeach()
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${pkgName}/${pkgName}ConfigVersion.cmake"
VERSION "${VERSION}"
VERSION "${PROJECT_VERSION_STRING}"
COMPATIBILITY AnyNewerVersion
)
@@ -1293,6 +1299,9 @@ else()
)
endif()
# make installation packages
include(Packing.cmake OPTIONAL)
# Setting file variables to null
set(SRCS "")
set(HDRS "")

22
kubernetes/Packing.cmake Normal file
View File

@@ -0,0 +1,22 @@
set(CPACK_PACKAGE_NAME lib${pkgName})
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_PACKAGE_DESCRIPTION_SUMMARY})
set(CPACK_PACKAGE_VENDOR ${PROJECT_PACKAGE_VENDOR})
set(CPACK_PACKAGE_CONTACT ${PROJECT_PACKAGE_CONTACT})
set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${PROJECT_PACKAGE_MAINTAINER})
set(CPACK_VERBATIM_VARIABLES YES)
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
set(CPACK_DEB_COMPONENT_INSTALL YES)
include(CPack)

View File

@@ -1,39 +1,46 @@
set(VERSION 0.0.1)
# config.h checks
include(ConfigureChecks.cmake)
configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
list(APPEND SRCS
config/kube_config_model.c
config/kube_config_yaml.c
config/kube_config_util.c
config/kube_config.c
config/incluster_config.c
config/exec_provider.c
config/authn_plugin/authn_plugin_util.c
config/authn_plugin/authn_plugin.c
watch/watch_util.c
websocket/wsclient.c
websocket/kube_exec.c
src/generic.c
src/utils.c)
list(APPEND HDRS
config/kube_config_common.h
config/kube_config_model.h
config/kube_config_yaml.h
config/kube_config_util.h
config/kube_config.h
config/incluster_config.h
config/exec_provider.h
config/authn_plugin/authn_plugin_util.h
config/authn_plugin/authn_plugin.h
watch/watch_util.h
websocket/wsclient.h
websocket/kube_exec.h
include/generic.h
src/utils.c)
find_package(libwebsockets CONFIG REQUIRED)
set(PROJECT_VERSION_MAJOR 0)
set(PROJECT_VERSION_MINOR 0)
set(PROJECT_VERSION_PATCH 1)
set(PROJECT_PACKAGE_DESCRIPTION_SUMMARY "The Kubernetes client library for the C programming language.")
set(PROJECT_PACKAGE_VENDOR "https://github.com/kubernetes-client")
set(PROJECT_PACKAGE_CONTACT "https://github.com/kubernetes-client/c")
set(PROJECT_PACKAGE_MAINTAINER "https://github.com/kubernetes-client/c")
# config.h checks
include(ConfigureChecks.cmake)
configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
list(APPEND SRCS
config/kube_config_model.c
config/kube_config_yaml.c
config/kube_config_util.c
config/kube_config.c
config/incluster_config.c
config/exec_provider.c
config/authn_plugin/authn_plugin_util.c
config/authn_plugin/authn_plugin.c
watch/watch_util.c
websocket/wsclient.c
websocket/kube_exec.c
src/generic.c
src/utils.c)
list(APPEND HDRS
config/kube_config_common.h
config/kube_config_model.h
config/kube_config_yaml.h
config/kube_config_util.h
config/kube_config.h
config/incluster_config.h
config/exec_provider.h
config/authn_plugin/authn_plugin_util.h
config/authn_plugin/authn_plugin.h
watch/watch_util.h
websocket/wsclient.h
websocket/kube_exec.h
include/generic.h
include/utils.h)
find_package(libwebsockets CONFIG REQUIRED)
find_package(yaml CONFIG REQUIRED)