From f638611f66ae8073a4195a88a00356a4e955dd59 Mon Sep 17 00:00:00 2001 From: UdjinM6 Date: Thu, 26 Oct 2023 23:51:24 +0300 Subject: [PATCH] fix: Set client version based on git tags when building non-release version --- configure.ac | 4 ++-- doc/release-process.md | 3 +-- share/genbuild.sh | 20 +++++--------------- src/clientversion.cpp | 25 +++++++++++++------------ 4 files changed, 21 insertions(+), 31 deletions(-) diff --git a/configure.ac b/configure.ac index 3e0b8684ceccf9..78f860bf342688 100644 --- a/configure.ac +++ b/configure.ac @@ -1,13 +1,13 @@ AC_PREREQ([2.69]) +dnl Don't forget to push a corresponding tag when updating any of _CLIENT_VERSION_* numbers define(_CLIENT_VERSION_MAJOR, 20) define(_CLIENT_VERSION_MINOR, 0) define(_CLIENT_VERSION_BUILD, 0) -define(_CLIENT_VERSION_RC, 1) define(_CLIENT_VERSION_IS_RELEASE, false) define(_COPYRIGHT_YEAR, 2023) define(_COPYRIGHT_HOLDERS,[The %s developers]) define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Dash Core]]) -AC_INIT([Dash Core],m4_join([.], _CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MINOR, _CLIENT_VERSION_BUILD)m4_if(_CLIENT_VERSION_RC, [0], [], [rc]_CLIENT_VERSION_RC),[https://github.com/dashpay/dash/issues],[dashcore],[https://dash.org/]) +AC_INIT([Dash Core],m4_join([.], _CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MINOR, _CLIENT_VERSION_BUILD),[https://github.com/dashpay/dash/issues],[dashcore],[https://dash.org/]) AC_CONFIG_SRCDIR([src/validation.cpp]) AC_CONFIG_HEADERS([src/config/bitcoin-config.h]) AC_CONFIG_AUX_DIR([build-aux]) diff --git a/doc/release-process.md b/doc/release-process.md index cce8dc728c32cb..3395a46cd92c3e 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -4,12 +4,11 @@ Release Process * Update translations, see [translation_process.md](https://github.com/dashpay/dash/blob/master/doc/translation_process.md#synchronising-translations). * Update manpages, see [gen-manpages.sh](https://github.com/dashpay/dash/blob/master/contrib/devtools/README.md#gen-manpagessh). -* Update release candidate version in `configure.ac` (`CLIENT_VERSION_RC`) Before every minor and major release: * Update [bips.md](bips.md) to account for changes since the last release. -* Update version in `configure.ac` (don't forget to set `CLIENT_VERSION_IS_RELEASE` to `true`) (don't forget to set `CLIENT_VERSION_RC` to `0`) +* Update version in `configure.ac` (don't forget to set `CLIENT_VERSION_IS_RELEASE` to `true`) * Write release notes (see below) * Update `src/chainparams.cpp` nMinimumChainWork with information from the getblockchaininfo rpc. * Update `src/chainparams.cpp` defaultAssumeValid with information from the getblockhash rpc. diff --git a/share/genbuild.sh b/share/genbuild.sh index 7e34390d786e21..93f722ed6b8a14 100755 --- a/share/genbuild.sh +++ b/share/genbuild.sh @@ -18,27 +18,17 @@ else exit 1 fi -GIT_TAG="" -GIT_COMMIT="" +GIT_DESCRIPTION="" if [ "${BITCOIN_GENBUILD_NO_GIT}" != "1" ] && [ -e "$(command -v git)" ] && [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]; then # clean 'dirty' status of touched files that haven't been modified git diff >/dev/null 2>/dev/null - # if latest commit is tagged and not dirty, then override using the tag name - RAWDESC=$(git describe --abbrev=0 2>/dev/null) - if [ "$(git rev-parse HEAD)" = "$(git rev-list -1 $RAWDESC 2>/dev/null)" ]; then - git diff-index --quiet HEAD -- && GIT_TAG=$RAWDESC - fi - - # otherwise generate suffix from git, i.e. string like "59887e8-dirty" - GIT_COMMIT=$(git rev-parse --short=12 HEAD) - git diff-index --quiet HEAD -- || GIT_COMMIT="$GIT_COMMIT-dirty" + # override using the tag name from git, i.e. string like "v20.0.0-beta.8-5-g99786590df6f-dirty" + GIT_DESCRIPTION=$(git describe --abbrev=12 --dirty 2>/dev/null) fi -if [ -n "$GIT_TAG" ]; then - NEWINFO="#define BUILD_GIT_TAG \"$GIT_TAG\"" -elif [ -n "$GIT_COMMIT" ]; then - NEWINFO="#define BUILD_GIT_COMMIT \"$GIT_COMMIT\"" +if [ -n "$GIT_DESCRIPTION" ]; then + NEWINFO="#define BUILD_GIT_DESCRIPTION \"$GIT_DESCRIPTION\"" else NEWINFO="// No build information available" fi diff --git a/src/clientversion.cpp b/src/clientversion.cpp index 35d02d4873fe6d..bee3110b8db47f 100644 --- a/src/clientversion.cpp +++ b/src/clientversion.cpp @@ -19,25 +19,26 @@ const std::string CLIENT_NAME("Dash Core"); #include // The , which is generated by the build environment (share/genbuild.sh), // could contain only one line of the following: -// - "#define BUILD_GIT_TAG ...", if the top commit is tagged -// - "#define BUILD_GIT_COMMIT ...", if the top commit is not tagged +// - "#define BUILD_GIT_DESCRIPTION ...", if the top commit is not tagged // - "// No build information available", if proper git information is not available #endif -//! git will put "#define GIT_COMMIT_ID ..." on the next line inside archives. $Format:%n#define GIT_COMMIT_ID "%H"$ +//! git will put "#define GIT_DESCRIPTION ..." on the next line inside archives. $Format:%n#define GIT_DESCRIPTION "%(describe:abbrev=12)"$ -#ifdef BUILD_GIT_TAG - #define BUILD_DESC BUILD_GIT_TAG +#if CLIENT_VERSION_IS_RELEASE + #define BUILD_DESC "v" PACKAGE_VERSION #define BUILD_SUFFIX "" #else - #define BUILD_DESC "v" PACKAGE_VERSION - #if CLIENT_VERSION_IS_RELEASE - #define BUILD_SUFFIX "" - #elif defined(BUILD_GIT_COMMIT) - #define BUILD_SUFFIX "-" BUILD_GIT_COMMIT - #elif defined(GIT_COMMIT_ID) - #define BUILD_SUFFIX "-g" GIT_COMMIT_ID + #if defined(BUILD_GIT_DESCRIPTION) + // build in a cloned folder + #define BUILD_DESC BUILD_GIT_DESCRIPTION + #define BUILD_SUFFIX "-dev" + #elif defined(GIT_DESCRIPTION) + // build in a folder from git archive + #define BUILD_DESC GIT_DESCRIPTION + #define BUILD_SUFFIX "-guix" #else + #define BUILD_DESC "v" PACKAGE_VERSION #define BUILD_SUFFIX "-unk" #endif #endif