Fix release version handling

This commit is contained in:
ushan0v
2026-05-14 22:45:49 +03:00
parent aff9155ebc
commit 6728ed7da7
5 changed files with 40 additions and 15 deletions
+8 -1
View File
@@ -19,6 +19,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
commitish: ${{ steps.version.outputs.commitish }}
steps:
- uses: actions/checkout@v5.0.0
with:
@@ -30,9 +31,14 @@ jobs:
if [ -n "$INPUT_VERSION" ]; then
VERSION="$INPUT_VERSION"
else
VERSION=$(git describe --tags --exact-match 2>/dev/null || echo "0.$(date +%d%m%Y)")
VERSION=$(git describe --tags --exact-match 2>/dev/null || true)
fi
if [[ ! "$VERSION" =~ ^[0-9]+(\.[0-9]+)*-[0-9]+$ ]]; then
echo "Release version must use x.y.z-n format, got: ${VERSION:-<empty>}" >&2
exit 1
fi
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "commitish=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
build:
name: Build Podkop Plus release packages
@@ -83,3 +89,4 @@ jobs:
prerelease: false
name: ${{ needs.preparation.outputs.version }}
tag_name: ${{ needs.preparation.outputs.version }}
target_commitish: ${{ needs.preparation.outputs.commitish }}
+4 -4
View File
@@ -2,11 +2,11 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-podkop-plus
PODKOP_RELEASE_VERSION:=$(or $(PODKOP_PACKAGE_VERSION),$(PODKOP_VERSION),0.7.17-4)
PODKOP_RELEASE_VERSION:=$(or $(PODKOP_PACKAGE_VERSION),$(PODKOP_VERSION),dev)
PODKOP_BASE_VERSION:=$(or $(PODKOP_BASE_VERSION),$(word 1,$(subst -, ,$(PODKOP_RELEASE_VERSION))))
PODKOP_FORK_RELEASE:=$(or $(PODKOP_FORK_RELEASE),$(word 2,$(subst -, ,$(PODKOP_RELEASE_VERSION))),4)
PODKOP_COMPILED_VERSION:=$(PODKOP_BASE_VERSION)-$(PODKOP_FORK_RELEASE)
PODKOP_APK_VERSION:=$(PODKOP_BASE_VERSION)-r$(PODKOP_FORK_RELEASE)
PODKOP_FORK_RELEASE:=$(or $(PODKOP_FORK_RELEASE),$(word 2,$(subst -, ,$(PODKOP_RELEASE_VERSION))))
PODKOP_COMPILED_VERSION:=$(if $(PODKOP_FORK_RELEASE),$(PODKOP_BASE_VERSION)-$(PODKOP_FORK_RELEASE),$(PODKOP_BASE_VERSION))
PODKOP_APK_VERSION:=$(if $(PODKOP_FORK_RELEASE),$(PODKOP_BASE_VERSION)-r$(PODKOP_FORK_RELEASE),$(PODKOP_BASE_VERSION))
PODKOP_PO_VERSION:=$(if $(filter apk,$(PODKOP_PACKAGE_FORMAT)),$(PODKOP_APK_VERSION),$(PODKOP_COMPILED_VERSION))
PODKOP_SDK_VERSION:=$(if $(filter apk,$(PODKOP_PACKAGE_FORMAT)),$(PODKOP_BASE_VERSION),$(PODKOP_COMPILED_VERSION))
PODKOP_SDK_RELEASE:=$(if $(filter apk,$(PODKOP_PACKAGE_FORMAT)),$(PODKOP_FORK_RELEASE),)
+3 -3
View File
@@ -2,10 +2,10 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=podkop-plus
PODKOP_RELEASE_VERSION:=$(or $(PODKOP_PACKAGE_VERSION),$(PODKOP_VERSION),0.7.17-4)
PODKOP_RELEASE_VERSION:=$(or $(PODKOP_PACKAGE_VERSION),$(PODKOP_VERSION),dev)
PODKOP_BASE_VERSION:=$(or $(PODKOP_BASE_VERSION),$(word 1,$(subst -, ,$(PODKOP_RELEASE_VERSION))))
PODKOP_FORK_RELEASE:=$(or $(PODKOP_FORK_RELEASE),$(word 2,$(subst -, ,$(PODKOP_RELEASE_VERSION))),4)
PODKOP_COMPILED_VERSION:=$(PODKOP_BASE_VERSION)-$(PODKOP_FORK_RELEASE)
PODKOP_FORK_RELEASE:=$(or $(PODKOP_FORK_RELEASE),$(word 2,$(subst -, ,$(PODKOP_RELEASE_VERSION))))
PODKOP_COMPILED_VERSION:=$(if $(PODKOP_FORK_RELEASE),$(PODKOP_BASE_VERSION)-$(PODKOP_FORK_RELEASE),$(PODKOP_BASE_VERSION))
PODKOP_SDK_VERSION:=$(if $(filter apk,$(PODKOP_PACKAGE_FORMAT)),$(PODKOP_BASE_VERSION),$(PODKOP_COMPILED_VERSION))
PODKOP_SDK_RELEASE:=$(if $(filter apk,$(PODKOP_PACKAGE_FORMAT)),$(PODKOP_FORK_RELEASE),)
+19 -2
View File
@@ -5942,6 +5942,22 @@ podkop_latest_version_is_older_than_current() {
[ "$lowest" = "$latest_normalized" ]
}
podkop_latest_version_is_newer_than_current() {
local latest_version="$1"
local latest_normalized current_normalized lowest
is_podkop_release_version "$latest_version" || return 1
is_podkop_release_version "$PODKOP_VERSION" || return 1
latest_normalized="$(normalize_podkop_release_version "$latest_version")"
current_normalized="$(normalize_podkop_release_version "$PODKOP_VERSION")"
[ "$latest_normalized" != "$current_normalized" ] || return 1
lowest="$(printf '%s\n%s\n' "$latest_normalized" "$current_normalized" | sort -V | head -n 1)"
[ "$lowest" = "$current_normalized" ]
}
write_podkop_latest_version_cache() {
local value="$1"
local timestamp="$2"
@@ -5992,7 +6008,7 @@ get_podkop_latest_version() {
cache_is_recent=1
fi
if [ "$cache_is_recent" -eq 1 ] && ! podkop_latest_version_is_older_than_current "$cache_value"; then
if [ "$cache_is_recent" -eq 1 ] && podkop_latest_version_is_newer_than_current "$cache_value"; then
echo "$cache_value"
return 0
fi
@@ -6009,7 +6025,7 @@ get_podkop_latest_version() {
return 0
fi
if [ -n "$cache_value" ] && ! podkop_latest_version_is_older_than_current "$cache_value"; then
if [ -n "$cache_value" ] && podkop_latest_version_is_newer_than_current "$cache_value"; then
echo "$cache_value"
return 0
fi
@@ -6057,6 +6073,7 @@ system_info_cache_is_valid() {
cached_latest="$(jq -r '.podkop_latest_version // "unknown"' "$PODKOP_SYSTEM_INFO_CACHE_FILE" 2>/dev/null)"
[ "$cached_latest" = "unknown" ] && return 1
podkop_latest_version_is_older_than_current "$cached_latest" && return 1
podkop_latest_version_is_newer_than_current "$cached_latest" || return 1
return 0
}
+6 -5
View File
@@ -5,11 +5,8 @@ SCRIPT_PATH="$(readlink -f "${BASH_SOURCE[0]}")"
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
RELEASE_VERSION="${1:-0.7.17-4}"
RELEASE_VERSION="${1:-}"
OUTPUT_DIR_INPUT="${2:-}"
BASE_VERSION="${RELEASE_VERSION%-*}"
FORK_RELEASE="${RELEASE_VERSION##*-}"
APK_INTERNAL_VERSION="${APK_INTERNAL_VERSION:-${BASE_VERSION}-r${FORK_RELEASE}}"
SOURCE_ROOT_DIR="${SOURCE_ROOT_DIR:-}"
WINDOWS_ARTIFACTS_DIR="${WINDOWS_ARTIFACTS_DIR:-}"
DEFAULT_BUILD_HOME="${HOME}"
@@ -19,11 +16,15 @@ if [[ "$DEFAULT_BUILD_HOME" == "/root" ]]; then
DEFAULT_BUILD_HOME="${DEFAULT_BUILD_HOME:-/root}"
fi
if [[ "$BASE_VERSION" == "$RELEASE_VERSION" || -z "$FORK_RELEASE" ]]; then
if [[ ! "$RELEASE_VERSION" =~ ^[0-9]+(\.[0-9]+)*-[0-9]+$ ]]; then
echo "Expected release version in the form x.y.z-n" >&2
exit 1
fi
BASE_VERSION="${RELEASE_VERSION%-*}"
FORK_RELEASE="${RELEASE_VERSION##*-}"
APK_INTERNAL_VERSION="${APK_INTERNAL_VERSION:-${BASE_VERSION}-r${FORK_RELEASE}}"
WSL_NATIVE_ROOT="${WSL_NATIVE_ROOT:-$DEFAULT_BUILD_HOME/build/podkop-plus}"
WORK_DIR="${WORK_DIR:-$ROOT_DIR/.wsl-build}"
SDK_WORK_DIR="${SDK_WORK_DIR:-$WORK_DIR/sdk}"