Skip to content

Commit 09e3f8a

Browse files
build(packaging): version number improvements
1 parent 5ef3f2f commit 09e3f8a

16 files changed

Lines changed: 102 additions & 68 deletions

File tree

.github/workflows/ci-flatpak.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
release_commit:
1010
required: true
1111
type: string
12-
release_tag:
12+
release_version:
1313
required: true
1414
type: string
1515

@@ -104,14 +104,14 @@ jobs:
104104
run: |
105105
# variables for manifest
106106
branch="${{ github.head_ref }}"
107+
build_version=${{ inputs.release_version }}
107108
commit=${{ inputs.release_commit }}
108109
109110
# check the branch variable
110111
if [ -z "$branch" ]
111112
then
112113
echo "This is a PUSH event"
113114
branch=${{ github.ref_name }}
114-
build_version=${{ inputs.release_tag }}
115115
clone_url=${{ github.event.repository.clone_url }}
116116
else
117117
echo "This is a PR event"
@@ -121,15 +121,17 @@ jobs:
121121
echo "Commit: ${commit}"
122122
echo "Clone URL: ${clone_url}"
123123
124+
export BRANCH=${branch}
125+
export BUILD_VERSION=${build_version}
126+
export CLONE_URL=${clone_url}
127+
export COMMIT=${commit}
128+
124129
mkdir -p build
125130
mkdir -p artifacts
126131
127132
cmake -DGITHUB_CLONE_URL=${clone_url} \
128133
-B build \
129134
-S . \
130-
-DBUILD_VERSION=${build_version} \
131-
-DGITHUB_BRANCH=${branch} \
132-
-DGITHUB_COMMIT=${commit} \
133135
-DSUNSHINE_CONFIGURE_FLATPAK_MAN=ON \
134136
-DSUNSHINE_CONFIGURE_ONLY=ON
135137

.github/workflows/ci-homebrew.yml

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,49 +76,45 @@ jobs:
7676
run: |
7777
# variables for formula
7878
branch="${{ github.head_ref }}"
79+
build_version=${{ inputs.release_version }}
7980
commit=${{ inputs.release_commit }}
8081
8182
# check the branch variable
8283
if [ -z "$branch" ]
8384
then
8485
echo "This is a PUSH event"
85-
build_version=${{ inputs.release_tag }}
8686
clone_url=${{ github.event.repository.clone_url }}
8787
branch="${{ github.ref_name }}"
8888
default_branch="${{ github.event.repository.default_branch }}"
8989
9090
if [ "${{ matrix.release }}" == "true" ]; then
9191
# we will publish the formula with the release tag
9292
tag="${{ inputs.release_tag }}"
93-
version="${{ inputs.release_version }}"
9493
else
9594
tag="${{ github.ref_name }}"
96-
version="0.0.${{ github.run_number }}"
9795
fi
9896
else
9997
echo "This is a PR event"
100-
build_version="0.0.${{ github.event.number }}"
10198
clone_url=${{ github.event.pull_request.head.repo.clone_url }}
10299
branch="${{ github.event.pull_request.head.ref }}"
103100
default_branch="${{ github.event.pull_request.head.repo.default_branch }}"
104101
tag="${{ github.event.pull_request.head.ref }}"
105-
version="0.0.${{ github.event.number }}"
106102
fi
107103
echo "Branch: ${branch}"
108104
echo "Clone URL: ${clone_url}"
109105
echo "Tag: ${tag}"
110106
107+
export BRANCH=${branch}
108+
export BUILD_VERSION=${build_version}
109+
export CLONE_URL=${clone_url}
110+
export COMMIT=${commit}
111+
export TAG=${tag}
112+
111113
mkdir -p build
112114
cmake \
113115
-B build \
114116
-S . \
115-
-DBUILD_VERSION="${build_version}" \
116-
-DFORMULA_VERSION="${version}" \
117-
-DGITHUB_BRANCH="${branch}" \
118-
-DGITHUB_COMMIT="${commit}" \
119-
-DGITHUB_CLONE_URL="${clone_url}" \
120117
-DGITHUB_DEFAULT_BRANCH="${default_branch}" \
121-
-DGITHUB_TAG="${tag}" \
122118
-DSUNSHINE_CONFIGURE_HOMEBREW=ON \
123119
-DSUNSHINE_CONFIGURE_ONLY=ON
124120

.github/workflows/ci-linux.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
release_commit:
1010
required: true
1111
type: string
12-
release_tag:
12+
release_version:
1313
required: true
1414
type: string
1515

@@ -87,7 +87,7 @@ jobs:
8787
- name: Build Linux
8888
env:
8989
BRANCH: ${{ github.head_ref || github.ref_name }}
90-
BUILD_VERSION: ${{ inputs.release_tag }}
90+
BUILD_VERSION: ${{ inputs.release_version }}
9191
COMMIT: ${{ inputs.release_commit }}
9292
run: |
9393
chmod +x ./scripts/linux_build.sh
@@ -102,7 +102,7 @@ jobs:
102102
- name: Set AppImage Version
103103
if: matrix.name == 'AppImage'
104104
run: |
105-
version=${{ inputs.release_tag }}
105+
version=${{ inputs.release_version }}
106106
echo "VERSION=${version}" >> $GITHUB_ENV
107107
108108
- name: Package Linux - AppImage

.github/workflows/ci-windows.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
release_commit:
1010
required: true
1111
type: string
12-
release_tag:
12+
release_version:
1313
required: true
1414
type: string
1515
secrets:
@@ -257,7 +257,7 @@ jobs:
257257
shell: msys2 {0}
258258
env:
259259
BRANCH: ${{ github.head_ref || github.ref_name }}
260-
BUILD_VERSION: ${{ inputs.release_tag }}
260+
BUILD_VERSION: ${{ inputs.release_version }}
261261
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
262262
COMMIT: ${{ inputs.release_commit }}
263263
run: |

.github/workflows/ci.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,13 @@ jobs:
5353
permissions:
5454
contents: read
5555
packages: write
56-
uses: LizardByte/.github/.github/workflows/__call-docker.yml@master
56+
uses: LizardByte/.github/.github/workflows/__call-docker.yml@fix/docker/build_version # TODO: back to master
5757
with:
5858
maximize_build_space: true
5959
publish_release: ${{ needs.release-setup.outputs.publish_release }}
6060
release_commit: ${{ needs.release-setup.outputs.release_commit }}
6161
release_tag: ${{ needs.release-setup.outputs.release_tag }}
62+
release_version: ${{ needs.release-setup.outputs.release_version }}
6263
secrets:
6364
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
6465
DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }}
@@ -87,10 +88,11 @@ jobs:
8788
uses: ./.github/workflows/ci-linux.yml
8889
with:
8990
release_commit: ${{ needs.release-setup.outputs.release_commit }}
90-
release_tag: ${{ needs.release-setup.outputs.release_tag }}
91+
release_version: ${{ needs.release-setup.outputs.release_version }}
9192

9293
build-linux-copr:
9394
name: Linux Copr
95+
if: github.event_name != 'push' # releases are handled directly in ci-copr.yml
9496
needs: release-setup
9597
uses: ./.github/workflows/ci-copr.yml
9698
secrets:
@@ -104,15 +106,15 @@ jobs:
104106
uses: ./.github/workflows/ci-flatpak.yml
105107
with:
106108
release_commit: ${{ needs.release-setup.outputs.release_commit }}
107-
release_tag: ${{ needs.release-setup.outputs.release_tag }}
109+
release_version: ${{ needs.release-setup.outputs.release_version }}
108110

109111
build-windows:
110112
name: Windows
111113
needs: release-setup
112114
uses: ./.github/workflows/ci-windows.yml
113115
with:
114116
release_commit: ${{ needs.release-setup.outputs.release_commit }}
115-
release_tag: ${{ needs.release-setup.outputs.release_tag }}
117+
release_version: ${{ needs.release-setup.outputs.release_version }}
116118
secrets:
117119
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
118120

cmake/compile_definitions/common.cmake

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,6 @@ include_directories(BEFORE SYSTEM "${CMAKE_SOURCE_DIR}/third-party/nv-codec-head
5252
file(GLOB NVENC_SOURCES CONFIGURE_DEPENDS "src/nvenc/*.cpp" "src/nvenc/*.h")
5353
list(APPEND PLATFORM_TARGET_FILES ${NVENC_SOURCES})
5454

55-
configure_file("${CMAKE_SOURCE_DIR}/src/version.h.in" version.h @ONLY)
56-
include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") # required for importing version.h
57-
5855
set(SUNSHINE_TARGET_FILES
5956
"${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c/src/Input.h"
6057
"${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c/src/Rtsp.h"

cmake/packaging/common.cmake

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
# common cpack options
44
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
55
set(CPACK_PACKAGE_VENDOR "LizardByte")
6-
string(REGEX REPLACE "^v" "" CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) # remove the v prefix if it exists
6+
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
7+
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
8+
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
9+
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
710
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cpack_artifacts)
811
set(CPACK_PACKAGE_CONTACT "https://app.lizardbyte.dev")
912
set(CPACK_PACKAGE_DESCRIPTION ${CMAKE_PROJECT_DESCRIPTION})

cmake/prep/build_version.cmake

Lines changed: 66 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
1+
# Set build variables if env variables are defined
2+
# These are used in configured files such as manifests for different packages
3+
if(DEFINED ENV{BRANCH}) # cmake-lint: disable=W0106
4+
set(GITHUB_BRANCH $ENV{BRANCH})
5+
endif()
6+
if(DEFINED ENV{BUILD_VERSION}) # cmake-lint: disable=W0106
7+
set(BUILD_VERSION $ENV{BUILD_VERSION})
8+
endif()
9+
if(DEFINED ENV{CLONE_URL}) # cmake-lint: disable=W0106
10+
set(GITHUB_CLONE_URL $ENV{CLONE_URL})
11+
endif()
12+
if(DEFINED ENV{COMMIT}) # cmake-lint: disable=W0106
13+
set(GITHUB_COMMIT $ENV{COMMIT})
14+
endif()
15+
if(DEFINED ENV{TAG}) # cmake-lint: disable=W0106
16+
set(GITHUB_TAG $ENV{TAG})
17+
endif()
18+
119
# Check if env vars are defined before attempting to access them, variables will be defined even if blank
2-
if((DEFINED ENV{BRANCH}) AND (DEFINED ENV{BUILD_VERSION}) AND (DEFINED ENV{COMMIT})) # cmake-lint: disable=W0106
3-
if(($ENV{BRANCH} STREQUAL "master") AND (NOT $ENV{BUILD_VERSION} STREQUAL ""))
4-
# If BRANCH is "master" and BUILD_VERSION is not empty, then we are building a master branch
5-
MESSAGE("Got from CI master branch and version $ENV{BUILD_VERSION}")
20+
if((DEFINED ENV{BRANCH}) AND (DEFINED ENV{BUILD_VERSION})) # cmake-lint: disable=W0106
21+
if((DEFINED ENV{BRANCH}) AND (NOT $ENV{BUILD_VERSION} STREQUAL ""))
22+
# If BRANCH is defined and BUILD_VERSION is not empty, then we are building from CI
23+
# If BRANCH is master we are building a push/release build
24+
MESSAGE("Got from CI '$ENV{BRANCH}' branch and version '$ENV{BUILD_VERSION}'")
625
set(PROJECT_VERSION $ENV{BUILD_VERSION})
26+
string(REGEX REPLACE "^v" "" PROJECT_VERSION ${PROJECT_VERSION}) # remove the v prefix if it exists
727
set(CMAKE_PROJECT_VERSION ${PROJECT_VERSION}) # cpack will use this to set the binary versions
8-
elseif((DEFINED ENV{BRANCH}) AND (DEFINED ENV{COMMIT}))
9-
# If BRANCH is set but not BUILD_VERSION we are building a PR, we gather only the commit hash
10-
MESSAGE("Got from CI $ENV{BRANCH} branch and commit $ENV{COMMIT}")
11-
set(PROJECT_VERSION ${PROJECT_VERSION}.$ENV{COMMIT})
1228
endif()
29+
else()
1330
# Generate Sunshine Version based of the git tag
1431
# https://github.com/nocnokneo/cmake-git-versioning-example/blob/master/LICENSE
15-
else()
1632
find_package(Git)
1733
if(GIT_EXECUTABLE)
1834
MESSAGE("${CMAKE_SOURCE_DIR}")
@@ -60,18 +76,24 @@ set(PROJECT_YEAR "1990")
6076
set(PROJECT_MONTH "01")
6177
set(PROJECT_DAY "01")
6278

63-
# Extract year, month, and day
64-
if(PROJECT_VERSION MATCHES "^([0-9]{4})[.]([0-9]{3,4})")
79+
# Extract year, month, and day (do this AFTER version parsing)
80+
# Note: Cmake doesn't support "{}" regex syntax
81+
if(PROJECT_VERSION MATCHES "^([0-9][0-9][0-9][0-9])\\.([0-9][0-9][0-9][0-9]?)\\.([0-9]+)$")
82+
message("Extracting year and month/day from PROJECT_VERSION: ${PROJECT_VERSION}")
6583
# First capture group is the year
6684
set(PROJECT_YEAR "${CMAKE_MATCH_1}")
6785

68-
# Second capture group is month/day
86+
# Second capture group contains month and day
6987
set(MONTH_DAY "${CMAKE_MATCH_2}")
88+
89+
# Extract month (first 1-2 digits) and day (last 2 digits)
7090
string(LENGTH "${MONTH_DAY}" MONTH_DAY_LENGTH)
7191
if(MONTH_DAY_LENGTH EQUAL 3)
92+
# Format: MDD (e.g., 703 = month 7, day 03)
7293
string(SUBSTRING "${MONTH_DAY}" 0 1 PROJECT_MONTH)
7394
string(SUBSTRING "${MONTH_DAY}" 1 2 PROJECT_DAY)
7495
elseif(MONTH_DAY_LENGTH EQUAL 4)
96+
# Format: MMDD (e.g., 1203 = month 12, day 03)
7597
string(SUBSTRING "${MONTH_DAY}" 0 2 PROJECT_MONTH)
7698
string(SUBSTRING "${MONTH_DAY}" 2 2 PROJECT_DAY)
7799
endif()
@@ -85,3 +107,35 @@ if(PROJECT_VERSION MATCHES "^([0-9]{4})[.]([0-9]{3,4})")
85107
set(PROJECT_DAY "0${PROJECT_DAY}")
86108
endif()
87109
endif()
110+
111+
# Parse PROJECT_VERSION to extract major, minor, and patch components
112+
if(PROJECT_VERSION MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
113+
set(PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}")
114+
set(CMAKE_PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}")
115+
116+
set(PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}")
117+
set(CMAKE_PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}")
118+
119+
set(PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}")
120+
set(CMAKE_PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}")
121+
endif()
122+
123+
message("PROJECT_NAME: ${PROJECT_NAME}")
124+
message("PROJECT_VERSION: ${PROJECT_VERSION}")
125+
message("PROJECT_VERSION_MAJOR: ${PROJECT_VERSION_MAJOR}")
126+
message("PROJECT_VERSION_MINOR: ${PROJECT_VERSION_MINOR}")
127+
message("PROJECT_VERSION_PATCH: ${PROJECT_VERSION_PATCH}")
128+
message("CMAKE_PROJECT_VERSION: ${CMAKE_PROJECT_VERSION}")
129+
message("CMAKE_PROJECT_VERSION_MAJOR: ${CMAKE_PROJECT_VERSION_MAJOR}")
130+
message("CMAKE_PROJECT_VERSION_MINOR: ${CMAKE_PROJECT_VERSION_MINOR}")
131+
message("CMAKE_PROJECT_VERSION_PATCH: ${CMAKE_PROJECT_VERSION_PATCH}")
132+
message("PROJECT_YEAR: ${PROJECT_YEAR}")
133+
message("PROJECT_MONTH: ${PROJECT_MONTH}")
134+
message("PROJECT_DAY: ${PROJECT_DAY}")
135+
136+
list(APPEND SUNSHINE_DEFINITIONS PROJECT_NAME="${PROJECT_NAME}")
137+
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION="${PROJECT_VERSION}")
138+
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_MAJOR="${PROJECT_VERSION_MAJOR}")
139+
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_MINOR="${PROJECT_VERSION_MINOR}")
140+
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_PATCH="${PROJECT_VERSION_PATCH}")
141+
list(APPEND SUNSHINE_DEFINITIONS PROJECT_VERSION_COMMIT="${GITHUB_COMMIT}")

docker/archlinux.dockerfile

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ ARG CLONE_URL
2828
ENV BRANCH=${BRANCH}
2929
ENV BUILD_VERSION=${BUILD_VERSION}
3030
ENV COMMIT=${COMMIT}
31+
ENV CLONE_URL=${CLONE_URL}
3132

3233
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
3334

@@ -68,19 +69,15 @@ WORKDIR /build/sunshine/build
6869
RUN <<_MAKE
6970
#!/bin/bash
7071
set -e
71-
if [[ "${BUILD_VERSION}" == '' ]]; then
72+
if [[ "${BRANCH}" == "master" ]]; then
7273
sub_version=".r${COMMIT}"
7374
else
7475
sub_version=""
7576
fi
7677
cmake \
78+
-DSUNSHINE_CONFIGURE_ONLY=ON \
7779
-DSUNSHINE_CONFIGURE_PKGBUILD=ON \
7880
-DSUNSHINE_SUB_VERSION="${sub_version}" \
79-
-DGITHUB_CLONE_URL="${CLONE_URL}" \
80-
-DGITHUB_BRANCH=${BRANCH} \
81-
-DGITHUB_BUILD_VERSION=${BUILD_VERSION} \
82-
-DGITHUB_COMMIT="${COMMIT}" \
83-
-DSUNSHINE_CONFIGURE_ONLY=ON \
8481
/build/sunshine
8582
_MAKE
8683

packaging/linux/Arch/PKGBUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ prepare() {
6767

6868
build() {
6969
export BRANCH="@GITHUB_BRANCH@"
70-
export BUILD_VERSION="@GITHUB_BUILD_VERSION@"
70+
export BUILD_VERSION="@BUILD_VERSION@"
7171
export COMMIT="@GITHUB_COMMIT@"
7272

7373
export CC="gcc-${_gcc_version}"

0 commit comments

Comments
 (0)