Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 23 additions & 20 deletions share/genbuild.sh
Original file line number Diff line number Diff line change
@@ -1,46 +1,49 @@
#!/bin/sh
# Copyright (c) 2012-2020 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

export LC_ALL=C

if [ $# -gt 1 ]; then
cd "$2" || exit 1
fi
if [ $# -gt 0 ]; then
FILE="$1"
shift
if [ -f "$FILE" ]; then
INFO="$(head -n 2 "$FILE")"
INFO="$(head -n 1 "$FILE")"
fi
else
echo "Usage: $0 <filename>"
echo "Usage: $0 <filename> <srcroot>"
exit 1
fi

if [ -e "$(which git)" ]; then
GIT_TAG=""
GIT_COMMIT=""
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
git diff >/dev/null 2>/dev/null

# get only commit hash, but format like describe
DESCHASH="$(git rev-parse --short=9 HEAD 2>/dev/null)"

# append dirty indicator
if [ -n "$DESCHASH" ]; then
if ! git diff-index --quiet HEAD -- 2>/dev/null
then DESCHASH="${DESCHASH}-dirty" ; fi
# 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

# get a string like "2012-04-10 16:27:19 +0200"
TIME="$(git log -n 1 --format="%ci")"
# 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"
fi

if [ -n "$DESCHASH" ]; then
NEWINFO="#define BUILD_DESCHASH \"$DESCHASH\""
if [ -n "$GIT_TAG" ]; then
NEWINFO="#define BUILD_GIT_TAG \"$GIT_TAG\""
elif [ -n "$GIT_COMMIT" ]; then
NEWINFO="#define BUILD_GIT_COMMIT \"$GIT_COMMIT\""
else
NEWINFO="// No build information available"
fi

NEWINFO="$NEWINFO
//placeholder"

# only update build.h if necessary
if [ "$INFO" != "$NEWINFO" ]; then
echo "$NEWINFO" >"$FILE"
echo "#define BUILD_DATE \"$TIME\"" >>"$FILE"
fi
5 changes: 3 additions & 2 deletions src/clientversion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const std::string CLIENT_NAME("Halford");


#ifdef HAVE_BUILD_INFO
#include "build.h"
#include "obj/build.h"
// The <obj/build.h>, 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
Expand All @@ -31,7 +31,8 @@ const std::string CLIENT_NAME("Halford");
#define BUILD_DESC BUILD_GIT_TAG
#define BUILD_SUFFIX ""
#else
#define BUILD_DESC "v" PACKAGE_VERSION
#define BUILD_DESC_FROM_PACKAGE(package, build) "v" package "." DO_STRINGIZE(build)
#define BUILD_DESC BUILD_DESC_FROM_PACKAGE(PACKAGE_VERSION, CLIENT_VERSION_BUILD)
#if CLIENT_VERSION_IS_RELEASE
#define BUILD_SUFFIX ""
#elif defined(BUILD_GIT_COMMIT)
Expand Down
5 changes: 3 additions & 2 deletions src/clientversion.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@
#include <vector>

static const int CLIENT_VERSION =
10000 * CLIENT_VERSION_MAJOR
+ 100 * CLIENT_VERSION_MINOR
1000000 * CLIENT_VERSION_MAJOR
+ 10000 * CLIENT_VERSION_MINOR
+ 100 * CLIENT_VERSION_REVISION
+ 1 * CLIENT_VERSION_BUILD;

extern const std::string CLIENT_NAME;
Expand Down