From 0e1b19d0f2285748861f5736210d1fc8601f2441 Mon Sep 17 00:00:00 2001 From: DanS Date: Sun, 7 Jun 2026 09:51:28 -0500 Subject: [PATCH] build: bump full-node to 1.3.0 + give ObsidianDragonLite an independent version (1.0.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The full-node app and ObsidianDragonLite are now versioned separately: - project() VERSION -> 1.3.0 (suffix cleared); DRAGONX_LITE_VERSION -> 1.0.0. - A DRAGONX_APP_VERSION* set (resolved per variant in the lite/full block) feeds the generated header (version.h.in), the Windows VERSIONINFO/.rc + manifest, and the build summary — so each variant reports its own version. The .rc/manifest name fields also follow DRAGONX_APP_NAME so a lite .exe's properties read "ObsidianDragonLite". - build.sh resolves the release-filename version per variant by parsing CMakeLists (single source of truth) instead of a hardcoded string. Also fixes a latent variant-bleed: build.sh now passes DRAGONX_BUILD_LITE and DRAGONX_ENABLE_LITE_BACKEND explicitly (ON *and* OFF), so switching variants in a shared build dir can't reuse a stale cached value (a prior --lite build was making a subsequent full-node build produce the lite name/version). Both variants build + report the right version (full 1.3.0, lite 1.0.0); suite passes. Co-Authored-By: Claude Opus 4.8 --- CMakeLists.txt | 22 +++++++++++++++++++--- build.sh | 28 +++++++++++++++++++++++++++- res/ObsidianDragon.manifest.in | 2 +- res/ObsidianDragon.rc | 16 ++++++++-------- src/config/version.h.in | 11 ++++++----- 5 files changed, 61 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 653159d..8eca99f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,13 +15,19 @@ if(APPLE) endif() project(ObsidianDragon - VERSION 1.2.0 + VERSION 1.3.0 LANGUAGES C CXX DESCRIPTION "DragonX Cryptocurrency Wallet" ) # Pre-release suffix (e.g. "-rc1", "-beta2"). Leave empty for stable releases. -set(DRAGONX_VERSION_SUFFIX "-rc1") +set(DRAGONX_VERSION_SUFFIX "") + +# ObsidianDragonLite is versioned INDEPENDENTLY of the full-node app above. The active variant's +# version flows to the generated header, the Windows .rc/manifest, and build.sh's release names via +# DRAGONX_APP_VERSION* (resolved in the lite/full block below). +set(DRAGONX_LITE_VERSION "1.0.0") +set(DRAGONX_LITE_VERSION_SUFFIX "") # C++17 standard set(CMAKE_CXX_STANDARD 17) @@ -63,11 +69,21 @@ if(DRAGONX_BUILD_LITE) set(DRAGONX_APP_NAME "ObsidianDragonLite") set(DRAGONX_BINARY_NAME "ObsidianDragonLite") set(DRAGONX_ENABLE_EMBEDDED_DAEMON OFF CACHE BOOL "Enable embedded dragonxd support" FORCE) + set(DRAGONX_APP_VERSION "${DRAGONX_LITE_VERSION}") + set(DRAGONX_APP_VERSION_SUFFIX "${DRAGONX_LITE_VERSION_SUFFIX}") else() set(DRAGONX_APP_NAME "ObsidianDragon") set(DRAGONX_BINARY_NAME "ObsidianDragon") + set(DRAGONX_APP_VERSION "${PROJECT_VERSION}") + set(DRAGONX_APP_VERSION_SUFFIX "${DRAGONX_VERSION_SUFFIX}") endif() +# Split the active version into numeric components for the generated header + Windows VERSIONINFO. +string(REPLACE "." ";" _dragonx_ver_parts "${DRAGONX_APP_VERSION}") +list(GET _dragonx_ver_parts 0 DRAGONX_APP_VERSION_MAJOR) +list(GET _dragonx_ver_parts 1 DRAGONX_APP_VERSION_MINOR) +list(GET _dragonx_ver_parts 2 DRAGONX_APP_VERSION_PATCH) + set(DRAGONX_LITE_BACKEND_READY OFF) if(DRAGONX_ENABLE_LITE_BACKEND) if(NOT DRAGONX_BUILD_LITE) @@ -1019,7 +1035,7 @@ endif() message(STATUS "") message(STATUS "DragonX ImGui Wallet Configuration:") -message(STATUS " Version: ${PROJECT_VERSION}") +message(STATUS " Version: ${DRAGONX_APP_VERSION}${DRAGONX_APP_VERSION_SUFFIX} (${DRAGONX_APP_NAME})") message(STATUS " Build type: ${CMAKE_BUILD_TYPE}") message(STATUS " C++ Standard: ${CMAKE_CXX_STANDARD}") message(STATUS " ImGui dir: ${IMGUI_DIR}") diff --git a/build.sh b/build.sh index 6217ca3..509ed5a 100755 --- a/build.sh +++ b/build.sh @@ -20,7 +20,9 @@ set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -VERSION="1.2.0-rc1" +# VERSION is resolved per-variant from CMakeLists.txt (the single source of truth) after arg +# parsing — see the APP_BASENAME block below. Placeholder until then. +VERSION="" # ── Colours ────────────────────────────────────────────────────────────────── RED='\033[0;31m' @@ -109,12 +111,32 @@ fi APP_BASENAME="ObsidianDragon" CMAKE_LITE_ARGS=() +# Always set the variant flag EXPLICITLY (ON and OFF) so switching variants in a shared build dir +# can't reuse a stale cached value (e.g. a prior --lite build leaving DRAGONX_BUILD_LITE=ON). if $DO_LITE; then APP_BASENAME="ObsidianDragonLite" CMAKE_LITE_ARGS+=("-DDRAGONX_BUILD_LITE=ON") info "Lite mode enabled: building ${APP_BASENAME}" +else + CMAKE_LITE_ARGS+=("-DDRAGONX_BUILD_LITE=OFF") fi +# Resolve the release version string for the active variant from CMakeLists.txt (single source of +# truth): the full-node app uses project() VERSION + DRAGONX_VERSION_SUFFIX; ObsidianDragonLite uses +# DRAGONX_LITE_VERSION + DRAGONX_LITE_VERSION_SUFFIX. +_cml="$SCRIPT_DIR/CMakeLists.txt" +_full_ver=$(sed -n 's/^[[:space:]]*VERSION[[:space:]]\+\([0-9][0-9.]*\).*/\1/p' "$_cml" | head -1) +_full_suffix=$(sed -n 's/^set(DRAGONX_VERSION_SUFFIX[[:space:]]*"\([^"]*\)").*/\1/p' "$_cml" | head -1) +_lite_ver=$(sed -n 's/^set(DRAGONX_LITE_VERSION[[:space:]]*"\([^"]*\)").*/\1/p' "$_cml" | head -1) +_lite_suffix=$(sed -n 's/^set(DRAGONX_LITE_VERSION_SUFFIX[[:space:]]*"\([^"]*\)").*/\1/p' "$_cml" | head -1) +if $DO_LITE; then + VERSION="${_lite_ver}${_lite_suffix}" +else + VERSION="${_full_ver}${_full_suffix}" +fi +[ -n "$_full_ver" ] && [ -n "$VERSION" ] || { err "Could not parse version from CMakeLists.txt"; exit 1; } +info "Release version: ${VERSION} (${APP_BASENAME})" + # ── Lite backend (real SDXL litelib) linking ───────────────────────────────── # Enables DRAGONX_ENABLE_LITE_BACKEND with an imported artifact produced by # scripts/build-lite-backend-artifact.sh. Auto-discovers build/lite-backend//; @@ -157,6 +179,10 @@ if $DO_LITE_BACKEND; then CMAKE_LITE_ARGS+=("-DDRAGONX_LITE_BACKEND_EXTRA_LIBS=advapi32;ws2_32;kernel32;bcrypt;cfgmgr32;credui;crypt32;cryptnet;fwpuclnt;gdi32;msimg32;ncrypt;ntdll;ole32;opengl32;secur32;shell32;synchronization;user32;winspool;userenv") fi info "Lite backend enabled ($lb_platform): $lb_lib" +else + # Explicit OFF so a prior --lite-backend configure in a shared build dir can't leave it ON + # (which would then fail the BUILD_LITE=OFF guard in CMake). + CMAKE_LITE_ARGS+=("-DDRAGONX_ENABLE_LITE_BACKEND=OFF") fi should_bundle_full_node_assets() { diff --git a/res/ObsidianDragon.manifest.in b/res/ObsidianDragon.manifest.in index 42d2cb3..96f0ea5 100644 --- a/res/ObsidianDragon.manifest.in +++ b/res/ObsidianDragon.manifest.in @@ -5,7 +5,7 @@ diff --git a/res/ObsidianDragon.rc b/res/ObsidianDragon.rc index a7b9446..a29e6cb 100644 --- a/res/ObsidianDragon.rc +++ b/res/ObsidianDragon.rc @@ -19,8 +19,8 @@ #include VS_VERSION_INFO VERSIONINFO - FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 - PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 + FILEVERSION @DRAGONX_APP_VERSION_MAJOR@,@DRAGONX_APP_VERSION_MINOR@,@DRAGONX_APP_VERSION_PATCH@,0 + PRODUCTVERSION @DRAGONX_APP_VERSION_MAJOR@,@DRAGONX_APP_VERSION_MINOR@,@DRAGONX_APP_VERSION_PATCH@,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0x0L FILEOS VOS_NT_WINDOWS32 @@ -32,13 +32,13 @@ BEGIN BLOCK "040904B0" // US-English, Unicode BEGIN VALUE "CompanyName", "DragonX Developers\0" - VALUE "FileDescription", "ObsidianDragon Wallet\0" - VALUE "FileVersion", "@PROJECT_VERSION@\0" - VALUE "InternalName", "ObsidianDragon\0" + VALUE "FileDescription", "@DRAGONX_APP_NAME@ Wallet\0" + VALUE "FileVersion", "@DRAGONX_APP_VERSION@@DRAGONX_APP_VERSION_SUFFIX@\0" + VALUE "InternalName", "@DRAGONX_APP_NAME@\0" VALUE "LegalCopyright", "Copyright 2024-2026 DragonX Developers. GPLv3.\0" - VALUE "OriginalFilename", "ObsidianDragon.exe\0" - VALUE "ProductName", "ObsidianDragon\0" - VALUE "ProductVersion", "@PROJECT_VERSION@\0" + VALUE "OriginalFilename", "@DRAGONX_APP_NAME@.exe\0" + VALUE "ProductName", "@DRAGONX_APP_NAME@\0" + VALUE "ProductVersion", "@DRAGONX_APP_VERSION@@DRAGONX_APP_VERSION_SUFFIX@\0" END END BLOCK "VarFileInfo" diff --git a/src/config/version.h.in b/src/config/version.h.in index 87d46ec..ae375a1 100644 --- a/src/config/version.h.in +++ b/src/config/version.h.in @@ -5,12 +5,13 @@ #pragma once // !! DO NOT EDIT generated version output — it is generated from version.h.in by CMake. -// !! Change the version in CMakeLists.txt: project(... VERSION x.y.z ...) +// !! Change the version in CMakeLists.txt: project(... VERSION x.y.z ...) for the full-node app, +// !! or DRAGONX_LITE_VERSION for ObsidianDragonLite. DRAGONX_APP_VERSION is the active variant. -#define DRAGONX_VERSION "@PROJECT_VERSION@@DRAGONX_VERSION_SUFFIX@" -#define DRAGONX_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ -#define DRAGONX_VERSION_MINOR @PROJECT_VERSION_MINOR@ -#define DRAGONX_VERSION_PATCH @PROJECT_VERSION_PATCH@ +#define DRAGONX_VERSION "@DRAGONX_APP_VERSION@@DRAGONX_APP_VERSION_SUFFIX@" +#define DRAGONX_VERSION_MAJOR @DRAGONX_APP_VERSION_MAJOR@ +#define DRAGONX_VERSION_MINOR @DRAGONX_APP_VERSION_MINOR@ +#define DRAGONX_VERSION_PATCH @DRAGONX_APP_VERSION_PATCH@ #define DRAGONX_APP_NAME "@DRAGONX_APP_NAME@" #define DRAGONX_ORG_NAME "Hush"