build(packaging): version number improvements (#4037)
This commit is contained in:
parent
5ef3f2ff5c
commit
2259141bd2
16 changed files with 104 additions and 69 deletions
|
|
@ -52,9 +52,6 @@ include_directories(BEFORE SYSTEM "${CMAKE_SOURCE_DIR}/third-party/nv-codec-head
|
|||
file(GLOB NVENC_SOURCES CONFIGURE_DEPENDS "src/nvenc/*.cpp" "src/nvenc/*.h")
|
||||
list(APPEND PLATFORM_TARGET_FILES ${NVENC_SOURCES})
|
||||
|
||||
configure_file("${CMAKE_SOURCE_DIR}/src/version.h.in" version.h @ONLY)
|
||||
include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") # required for importing version.h
|
||||
|
||||
set(SUNSHINE_TARGET_FILES
|
||||
"${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c/src/Input.h"
|
||||
"${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c/src/Rtsp.h"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@
|
|||
# common cpack options
|
||||
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
|
||||
set(CPACK_PACKAGE_VENDOR "LizardByte")
|
||||
string(REGEX REPLACE "^v" "" CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) # remove the v prefix if it exists
|
||||
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
||||
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_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cpack_artifacts)
|
||||
set(CPACK_PACKAGE_CONTACT "https://app.lizardbyte.dev")
|
||||
set(CPACK_PACKAGE_DESCRIPTION ${CMAKE_PROJECT_DESCRIPTION})
|
||||
|
|
|
|||
|
|
@ -1,18 +1,34 @@
|
|||
# Set build variables if env variables are defined
|
||||
# These are used in configured files such as manifests for different packages
|
||||
if(DEFINED ENV{BRANCH}) # cmake-lint: disable=W0106
|
||||
set(GITHUB_BRANCH $ENV{BRANCH})
|
||||
endif()
|
||||
if(DEFINED ENV{BUILD_VERSION}) # cmake-lint: disable=W0106
|
||||
set(BUILD_VERSION $ENV{BUILD_VERSION})
|
||||
endif()
|
||||
if(DEFINED ENV{CLONE_URL}) # cmake-lint: disable=W0106
|
||||
set(GITHUB_CLONE_URL $ENV{CLONE_URL})
|
||||
endif()
|
||||
if(DEFINED ENV{COMMIT}) # cmake-lint: disable=W0106
|
||||
set(GITHUB_COMMIT $ENV{COMMIT})
|
||||
endif()
|
||||
if(DEFINED ENV{TAG}) # cmake-lint: disable=W0106
|
||||
set(GITHUB_TAG $ENV{TAG})
|
||||
endif()
|
||||
|
||||
# Check if env vars are defined before attempting to access them, variables will be defined even if blank
|
||||
if((DEFINED ENV{BRANCH}) AND (DEFINED ENV{BUILD_VERSION}) AND (DEFINED ENV{COMMIT})) # cmake-lint: disable=W0106
|
||||
if(($ENV{BRANCH} STREQUAL "master") AND (NOT $ENV{BUILD_VERSION} STREQUAL ""))
|
||||
# If BRANCH is "master" and BUILD_VERSION is not empty, then we are building a master branch
|
||||
MESSAGE("Got from CI master branch and version $ENV{BUILD_VERSION}")
|
||||
if((DEFINED ENV{BRANCH}) AND (DEFINED ENV{BUILD_VERSION})) # cmake-lint: disable=W0106
|
||||
if((DEFINED ENV{BRANCH}) AND (NOT $ENV{BUILD_VERSION} STREQUAL ""))
|
||||
# If BRANCH is defined and BUILD_VERSION is not empty, then we are building from CI
|
||||
# If BRANCH is master we are building a push/release build
|
||||
MESSAGE("Got from CI '$ENV{BRANCH}' branch and version '$ENV{BUILD_VERSION}'")
|
||||
set(PROJECT_VERSION $ENV{BUILD_VERSION})
|
||||
string(REGEX REPLACE "^v" "" PROJECT_VERSION ${PROJECT_VERSION}) # remove the v prefix if it exists
|
||||
set(CMAKE_PROJECT_VERSION ${PROJECT_VERSION}) # cpack will use this to set the binary versions
|
||||
elseif((DEFINED ENV{BRANCH}) AND (DEFINED ENV{COMMIT}))
|
||||
# If BRANCH is set but not BUILD_VERSION we are building a PR, we gather only the commit hash
|
||||
MESSAGE("Got from CI $ENV{BRANCH} branch and commit $ENV{COMMIT}")
|
||||
set(PROJECT_VERSION ${PROJECT_VERSION}.$ENV{COMMIT})
|
||||
endif()
|
||||
else()
|
||||
# Generate Sunshine Version based of the git tag
|
||||
# https://github.com/nocnokneo/cmake-git-versioning-example/blob/master/LICENSE
|
||||
else()
|
||||
find_package(Git)
|
||||
if(GIT_EXECUTABLE)
|
||||
MESSAGE("${CMAKE_SOURCE_DIR}")
|
||||
|
|
@ -60,18 +76,24 @@ set(PROJECT_YEAR "1990")
|
|||
set(PROJECT_MONTH "01")
|
||||
set(PROJECT_DAY "01")
|
||||
|
||||
# Extract year, month, and day
|
||||
if(PROJECT_VERSION MATCHES "^([0-9]{4})[.]([0-9]{3,4})")
|
||||
# Extract year, month, and day (do this AFTER version parsing)
|
||||
# Note: Cmake doesn't support "{}" regex syntax
|
||||
if(PROJECT_VERSION MATCHES "^([0-9][0-9][0-9][0-9])\\.([0-9][0-9][0-9][0-9]?)\\.([0-9]+)$")
|
||||
message("Extracting year and month/day from PROJECT_VERSION: ${PROJECT_VERSION}")
|
||||
# First capture group is the year
|
||||
set(PROJECT_YEAR "${CMAKE_MATCH_1}")
|
||||
|
||||
# Second capture group is month/day
|
||||
# Second capture group contains month and day
|
||||
set(MONTH_DAY "${CMAKE_MATCH_2}")
|
||||
|
||||
# Extract month (first 1-2 digits) and day (last 2 digits)
|
||||
string(LENGTH "${MONTH_DAY}" MONTH_DAY_LENGTH)
|
||||
if(MONTH_DAY_LENGTH EQUAL 3)
|
||||
# Format: MDD (e.g., 703 = month 7, day 03)
|
||||
string(SUBSTRING "${MONTH_DAY}" 0 1 PROJECT_MONTH)
|
||||
string(SUBSTRING "${MONTH_DAY}" 1 2 PROJECT_DAY)
|
||||
elseif(MONTH_DAY_LENGTH EQUAL 4)
|
||||
# Format: MMDD (e.g., 1203 = month 12, day 03)
|
||||
string(SUBSTRING "${MONTH_DAY}" 0 2 PROJECT_MONTH)
|
||||
string(SUBSTRING "${MONTH_DAY}" 2 2 PROJECT_DAY)
|
||||
endif()
|
||||
|
|
@ -85,3 +107,35 @@ if(PROJECT_VERSION MATCHES "^([0-9]{4})[.]([0-9]{3,4})")
|
|||
set(PROJECT_DAY "0${PROJECT_DAY}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Parse PROJECT_VERSION to extract major, minor, and patch components
|
||||
if(PROJECT_VERSION MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
|
||||
set(PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||||
set(CMAKE_PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||||
|
||||
set(PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}")
|
||||
set(CMAKE_PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}")
|
||||
|
||||
set(PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}")
|
||||
set(CMAKE_PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}")
|
||||
endif()
|
||||
|
||||
message("PROJECT_NAME: ${PROJECT_NAME}")
|
||||
message("PROJECT_VERSION: ${PROJECT_VERSION}")
|
||||
message("PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}")
|
||||
message("PROJECT_VERSION_MINOR: ${PROJECT_VERSION_MINOR}")
|
||||
message("PROJECT_VERSION_PATCH: ${PROJECT_VERSION_PATCH}")
|
||||
message("CMAKE_PROJECT_VERSION: ${CMAKE_PROJECT_VERSION}")
|
||||
message("CMAKE_PROJECT_VERSION_MAJOR: ${CMAKE_PROJECT_VERSION_MAJOR}")
|
||||
message("CMAKE_PROJECT_VERSION_MINOR: ${CMAKE_PROJECT_VERSION_MINOR}")
|
||||
message("CMAKE_PROJECT_VERSION_PATCH: ${CMAKE_PROJECT_VERSION_PATCH}")
|
||||
message("PROJECT_YEAR: ${PROJECT_YEAR}")
|
||||
message("PROJECT_MONTH: ${PROJECT_MONTH}")
|
||||
message("PROJECT_DAY: ${PROJECT_DAY}")
|
||||
|
||||
list(APPEND SUNSHINE_DEFINITIONS PROJECT_NAME="${PROJECT_NAME}")
|
||||
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION="${PROJECT_VERSION}")
|
||||
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_MAJOR="${PROJECT_VERSION_MAJOR}")
|
||||
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_MINOR="${PROJECT_VERSION_MINOR}")
|
||||
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_PATCH="${PROJECT_VERSION_PATCH}")
|
||||
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_COMMIT="${GITHUB_COMMIT}")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue