Initial Commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# SPDX-FileCopyrightText: 2026 Christian Tosta
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# @file targets/debian/cmake/CPackRules.cmake
|
||||
# @brief Centralized CPack packaging rules for DEB and RPM
|
||||
|
||||
option(BUILD_DEB "Build DEB package" OFF)
|
||||
option(BUILD_RPM "Build RPM package" OFF)
|
||||
|
||||
set(CPACK_SOURCE_IGNORE_FILES
|
||||
"/.gitea$"
|
||||
"/.gitignore$"
|
||||
"/.git/"
|
||||
"/[.]agignore$"
|
||||
"/[.]dockerignore$"
|
||||
"/[.]editorconfig$"
|
||||
"/[.]gitea/"
|
||||
"/[.]github/"
|
||||
"/[.]vimrc$"
|
||||
"/build/"
|
||||
"/Makefile$"
|
||||
"pkg\\.spec\\.in$"
|
||||
"~$|\\.swp$"
|
||||
)
|
||||
set(CPACK_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}")
|
||||
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/ActBuilder.cmake")
|
||||
include(cmake/ActBuilder.cmake)
|
||||
endif()
|
||||
|
||||
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/metadata.json" METADATA_JSON)
|
||||
|
||||
string(JSON CPACK_PACKAGE_NAME GET ${METADATA_JSON} "name")
|
||||
string(JSON CPACK_PACKAGE_VERSION GET ${METADATA_JSON} "version")
|
||||
string(JSON CPACK_PACKAGE_RELEASE GET ${METADATA_JSON} "release")
|
||||
string(JSON CPACK_PACKAGE_VENDOR GET ${METADATA_JSON} "maintainer")
|
||||
set(CPACK_VERBATIM_VARIABLES YES)
|
||||
|
||||
if(CPACK_PACKAGING_INSTALL_PREFIX AND NOT CPACK_PACKAGING_INSTALL_PREFIX STREQUAL "/")
|
||||
set(PACKAGE_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}")
|
||||
elseif(CMAKE_INSTALL_PREFIX AND NOT CMAKE_INSTALL_PREFIX STREQUAL "/")
|
||||
set(PACKAGE_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||
else()
|
||||
set(PACKAGE_PREFIX "/usr/local")
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "${PACKAGE_PREFIX}")
|
||||
set(CPACK_SET_DESTDIR ON)
|
||||
set(CPACK_PACKAGE_RELOCATABLE "OFF")
|
||||
|
||||
if(BUILD_RPM)
|
||||
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
|
||||
set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_BINARY_DIR}/${CPACK_PACKAGE_NAME}.spec")
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkg.spec.in"
|
||||
"${CPACK_RPM_USER_BINARY_SPECFILE}"
|
||||
@ONLY
|
||||
IMMEDIATE
|
||||
)
|
||||
elseif(BUILD_DEB)
|
||||
set(CPACK_GENERATOR "DEB")
|
||||
|
||||
string(JSON CPACK_DEBIAN_PACKAGE_MAINTAINER GET ${METADATA_JSON} "maintainer")
|
||||
string(JSON CPACK_DEBIAN_PACKAGE_ARCHITECTURE GET ${METADATA_JSON} "architecture")
|
||||
|
||||
# Build and runtime dependencies
|
||||
string(JSON DEPENDS_LEN LENGTH ${METADATA_JSON} "deb-depends")
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "")
|
||||
math(EXPR DEPENDS_MAX "${DEPENDS_LEN} - 1")
|
||||
foreach(i RANGE 0 ${DEPENDS_MAX})
|
||||
string(JSON DEP GET ${METADATA_JSON} "deb-depends" ${i})
|
||||
list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ${DEP})
|
||||
endforeach()
|
||||
list(JOIN CPACK_DEBIAN_PACKAGE_DEPENDS ", " CPACK_DEBIAN_PACKAGE_DEPENDS)
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
|
||||
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
||||
set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE ON)
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
Reference in New Issue
Block a user