Skip to content

Commit 30767f3

Browse files
author
Jorge Niedbalski
authored
build: split cmake install by components. (#3287)
This patch modifies the cmakelists to allow: 1) Install split by components libraries, runtime and headers 2) Generate a separated debian/rpm packages for (current: libraries + runtime) and headers. 3) The debian package will pre-load the ldconfig for the library. 4) Include the missing "fluent-bit/tls/*.h" headers Signed-off-by: Jorge Niedbalski <[email protected]>
1 parent 84234ab commit 30767f3

File tree

3 files changed

+58
-22
lines changed

3 files changed

+58
-22
lines changed

CMakeLists.txt

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ option(FLB_FILTER_GEOIP2 "Enable geoip2 filter" Yes)
188188
# Debug callbacks
189189
option(FLB_HTTP_CLIENT_DEBUG "Enable HTTP Client debug callbacks" No)
190190

191+
# Run ldconfig on package post-install
192+
option(FLB_RUN_LDCONFIG "Enable execution of ldconfig after installation" Yes)
193+
191194
# Enable all features
192195
if(FLB_ALL)
193196
# Global
@@ -591,7 +594,6 @@ if(FLB_TD)
591594
FLB_OPTION(FLB_JEMALLOC ON)
592595
set(FLB_PROG_NAME "TD Agent Bit")
593596
set(FLB_OUT_NAME "td-agent-bit")
594-
set(WITHOUT_HEADERS On)
595597
else()
596598
set(FLB_PROG_NAME "Fluent Bit")
597599
set(FLB_OUT_NAME "fluent-bit")
@@ -740,9 +742,9 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
740742
set(FLB_INSTALL_INCLUDEDIR "include")
741743
else()
742744
set(FLB_INSTALL_BINDIR ${CMAKE_INSTALL_FULL_BINDIR})
743-
set(FLB_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/${FLB_OUT_NAME}")
745+
set(FLB_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
744746
set(FLB_INSTALL_CONFDIR "${CMAKE_INSTALL_SYSCONFDIR}/${FLB_OUT_NAME}/")
745-
set(FLB_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR})
747+
set(FLB_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include")
746748
endif()
747749

748750
# Instruct CMake to build the Fluent Bit Core
@@ -792,23 +794,47 @@ if(FLB_SYSTEM_WINDOWS)
792794
endif()
793795
endif()
794796

797+
# Enable components
798+
set(CPACK_DEB_COMPONENT_INSTALL ON)
799+
set(CPACK_RPM_COMPONENT_INSTALL ON)
800+
set(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} binary library headers)
801+
set(CPACK_COMPONENTS_GROUPING "ONE_PER_GROUP")
802+
803+
set(CPACK_COMPONENT_BINARY_GROUP "RUNTIME")
804+
set(CPACK_COMPONENT_LIBRARY_GROUP "RUNTIME")
805+
795806
# Debian package setup and name sanitizer
796807
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
808+
797809
find_program(DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems")
798810
if(DPKG_PROGRAM)
799811
execute_process(
800812
COMMAND ${DPKG_PROGRAM} --print-architecture
801813
OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
802814
OUTPUT_STRIP_TRAILING_WHITESPACE
803815
)
804-
#set(CPACK_PACKAGE_FILE_NAME
805-
# "${CPACK_PACKAGE_NAME_LOWERCASE}_${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
806-
807-
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
808816

809-
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
817+
set(CPACK_DEBIAN_HEADERS_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}-headers.deb")
818+
set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
819+
set(CPACK_DEBIAN_RUNTIME_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb")
820+
set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONTROL_EXTRA
810821
${CMAKE_CURRENT_SOURCE_DIR}/debian/conffiles
811822
)
823+
824+
if(FLB_RUN_LDCONFIG)
825+
set(LDCONFIG_DIR ${FLB_INSTALL_LIBDIR})
826+
file(WRITE ${PROJECT_BINARY_DIR}/scripts/postinst "
827+
mkdir -p /etc/ld.so.conf.d
828+
echo \"${LDCONFIG_DIR}\" > /etc/ld.so.conf.d/libfluent-bit.conf
829+
ldconfig
830+
")
831+
file(WRITE ${PROJECT_BINARY_DIR}/scripts/prerm "
832+
rm -f -- /etc/ld.so.conf.d/libfluent-bit.conf
833+
ldconfig
834+
")
835+
set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONTROL_EXTRA "${PROJECT_BINARY_DIR}/scripts/postinst;${PROJECT_BINARY_DIR}/scripts/prerm")
836+
endif(FLB_RUN_LDCONFIG)
837+
812838
endif()
813839

814840
# RPM Generation information
@@ -831,10 +857,11 @@ set(CPACK_RPM_USER_FILELIST
831857
"%ignore /usr/local/bin"
832858
"%ignore /opt"
833859
"%ignore /etc")
860+
834861
set(CPACK_RPM_PACKAGE_AUTOREQ ON)
835-
if(CPACK_GENERATOR MATCHES "RPM")
836-
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}")
837-
endif()
862+
set(CPACK_RPM_RUNTIME_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
863+
set(CPACK_RPM_HEADERS_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}-headers.rpm")
864+
set(CPACK_RPM_RUNTIME_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}.rpm")
838865

839866
# CPack: DEB
840867
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)

include/CMakeLists.txt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
# Install fluent-bit headers
2-
3-
if(NOT WITHOUT_HEADERS)
4-
install(FILES "fluent-bit.h"
2+
install(FILES "fluent-bit.h"
53
DESTINATION ${FLB_INSTALL_INCLUDEDIR}
4+
COMPONENT headers
65
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
76

8-
file(GLOB headers "fluent-bit/*.h")
9-
install(FILES ${headers}
7+
file(GLOB headers "fluent-bit/*.h")
8+
install(FILES ${headers}
109
DESTINATION ${FLB_INSTALL_INCLUDEDIR}/fluent-bit
10+
COMPONENT headers
1111
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
12-
endif()
12+
13+
file(GLOB headers "fluent-bit/tls/*.h")
14+
install(FILES ${headers}
15+
DESTINATION ${FLB_INSTALL_INCLUDEDIR}/fluent-bit/tls/
16+
COMPONENT headers
17+
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)

src/CMakeLists.txt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ if(FLB_SHARED_LIB)
346346
# Library install routines
347347
install(TARGETS fluent-bit-shared
348348
LIBRARY DESTINATION ${FLB_INSTALL_LIBDIR}
349+
COMPONENT library
349350
RUNTIME DESTINATION ${FLB_INSTALL_BINDIR})
350351
endif()
351352

@@ -399,7 +400,7 @@ if(FLB_BINARY)
399400
PROPERTIES
400401
OUTPUT_NAME ${FLB_OUT_NAME}
401402
ENABLE_EXPORTS ON)
402-
install(TARGETS fluent-bit-bin RUNTIME DESTINATION ${FLB_INSTALL_BINDIR})
403+
install(TARGETS fluent-bit-bin RUNTIME DESTINATION ${FLB_INSTALL_BINDIR} COMPONENT binary)
403404

404405
# Include PDB file (if available)
405406
if (MSVC)
@@ -416,31 +417,34 @@ if(FLB_BINARY)
416417
"${PROJECT_SOURCE_DIR}/init/systemd.in"
417418
${FLB_SYSTEMD_SCRIPT}
418419
)
419-
install(FILES ${FLB_SYSTEMD_SCRIPT} DESTINATION /lib/systemd/system)
420-
install(DIRECTORY DESTINATION ${FLB_INSTALL_CONFDIR})
420+
install(FILES ${FLB_SYSTEMD_SCRIPT} COMPONENT binary DESTINATION /lib/systemd/system)
421+
install(DIRECTORY DESTINATION ${FLB_INSTALL_CONFDIR} COMPONENT binary)
421422
elseif(IS_DIRECTORY /usr/share/upstart)
422423
set(FLB_UPSTART_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.conf")
423424
configure_file(
424425
"${PROJECT_SOURCE_DIR}/init/upstart.in"
425426
${FLB_UPSTART_SCRIPT}
426427
)
427-
install(FILES ${FLB_UPSTART_SCRIPT} DESTINATION /etc/init)
428-
install(DIRECTORY DESTINATION ${FLB_INSTALL_CONFDIR})
428+
install(FILES ${FLB_UPSTART_SCRIPT} COMPONENT binary DESTINATION /etc/init)
429+
install(DIRECTORY DESTINATION COMPONENT binary ${FLB_INSTALL_CONFDIR})
429430
else()
430431
# FIXME: should we support Sysv init script ?
431432
endif()
432433

433434
install(FILES
434435
"${PROJECT_SOURCE_DIR}/conf/fluent-bit.conf"
435436
DESTINATION ${FLB_INSTALL_CONFDIR}
437+
COMPONENT binary
436438
RENAME "${FLB_OUT_NAME}.conf")
437439

438440
install(FILES
439441
"${PROJECT_SOURCE_DIR}/conf/parsers.conf"
442+
COMPONENT binary
440443
DESTINATION ${FLB_INSTALL_CONFDIR})
441444

442445
install(FILES
443446
"${PROJECT_SOURCE_DIR}/conf/plugins.conf"
447+
COMPONENT binary
444448
DESTINATION ${FLB_INSTALL_CONFDIR})
445449

446450
endif()

0 commit comments

Comments
 (0)