Initial Commit

This commit is contained in:
Christian Tosta
2026-08-11 14:46:19 -03:00
commit 33ed3db2ba
13 changed files with 605 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
# SPDX-FileCopyrightText: 2026 Christian Tosta
# SPDX-License-Identifier: GPL-2.0-or-later
# @file cmake/ActBuilder.cmake
# @brief Helper module to orchestrate local builds via act containerization
option(USE_ACT_CONTAINER "Enable local containerized build via act" OFF)
find_program(ACT_EXECUTABLE act)
if(ACT_EXECUTABLE)
message(STATUS "Found act utility: ${ACT_EXECUTABLE}")
add_custom_target(act-build
COMMAND ${ACT_EXECUTABLE} push --container-architecture linux/amd64
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Running local CI pipeline using act..."
)
else()
message(WARNING "The 'act' utility was not found. Local containerized builds via act-build target will be unavailable.")
endif()
+29
View File
@@ -0,0 +1,29 @@
# This file will be configured to contain variables for CPack. These variables
# should be set in the CMake list file of the project before CPack module is
# included. Example variables are:
# CPACK_GENERATOR - Generator used to create package
# CPACK_INSTALL_CMAKE_PROJECTS - For each project (path, name, component)
# CPACK_CMAKE_GENERATOR - CMake Generator used for the projects
# CPACK_INSTALL_COMMANDS - Extra commands to install components
# CPACK_INSTALL_DIRECTORIES - Extra directories to install
# CPACK_PACKAGE_DESCRIPTION_FILE - Description file for the package
# CPACK_PACKAGE_DESCRIPTION_SUMMARY - Summary of the package
# CPACK_PACKAGE_EXECUTABLES - List of pairs of executables and labels
# CPACK_PACKAGE_FILE_NAME - Name of the package generated
# CPACK_PACKAGE_ICON - Icon used for the package
# CPACK_PACKAGE_INSTALL_DIRECTORY - Name of directory for the installer
# CPACK_PACKAGE_NAME - Package project name
# CPACK_PACKAGE_VENDOR - Package project vendor
# CPACK_PACKAGE_VERSION - Package project version
# CPACK_PACKAGE_VERSION_MAJOR - Package project version (major)
# CPACK_PACKAGE_VERSION_MINOR - Package project version (minor)
# CPACK_PACKAGE_VERSION_PATCH - Package project version (patch)
# There are certain generator specific ones
# NSIS Generator:
# CPACK_PACKAGE_INSTALL_REGISTRY_KEY - Name of the registry key for the installer
# CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS - Extra commands used during uninstall
# CPACK_NSIS_EXTRA_INSTALL_COMMANDS - Extra commands used during install
@_CPACK_OTHER_VARIABLES_@
+79
View File
@@ -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)