Browse Source
All client version information is moved to version.cpp, which optionally (-DHAVE_BUILD_INFO) includes build.h. build.h is automatically generated on supporting platforms via contrib/genbuild.sh, using git describe. The git export-subst attribute is used to put the commit id statically in version.cpp inside generated archives, and this value is used if no build.h is present. The gitian descriptors are modified to use git archive instead of a copy, to create the src/ directory in the output. This way, src/src/version.cpp will contain the static commit id. To prevent gitian builds from getting the "-dirty" marker in their git-describe generated identifiers, no touching of files or running sed on the makefile is performed anymore. This does not seem to influence determinism.miguelfreitas
Pieter Wuille
13 years ago
20 changed files with 193 additions and 31 deletions
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
src/version.cpp export-subst |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh |
||||
|
||||
if [ $# -gt 0 ]; then |
||||
FILE="$1" |
||||
shift |
||||
if [ -f "$FILE" ]; then |
||||
INFO="$(head -n 1 "$FILE")" |
||||
fi |
||||
else |
||||
echo "Usage: $0 <filename>" |
||||
exit 1 |
||||
fi |
||||
|
||||
if [ -e "$(which git)" ]; then |
||||
# clean 'dirty' status of touched files that haven't been modified |
||||
git diff >/dev/null 2>/dev/null |
||||
|
||||
# get a string like "v0.6.0-66-g59887e8-dirty" |
||||
DESC="$(git describe --dirty 2>/dev/null)" |
||||
|
||||
# get a string like "2012-04-10 16:27:19 +0200" |
||||
TIME="$(git log -n 1 --format="%ci")" |
||||
fi |
||||
|
||||
if [ -n "$DESC" ]; then |
||||
NEWINFO="#define BUILD_DESC \"$DESC\"" |
||||
else |
||||
NEWINFO="// No build information available" |
||||
fi |
||||
|
||||
# only update build.h if necessary |
||||
if [ "$INFO" != "$NEWINFO" ]; then |
||||
echo "$NEWINFO" >"$FILE" |
||||
echo "#define BUILD_DATE \"$TIME\"" >>"$FILE" |
||||
fi |
@ -0,0 +1,77 @@
@@ -0,0 +1,77 @@
|
||||
// Copyright (c) 2012 The Bitcoin developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||
#include <string> |
||||
|
||||
#include "version.h" |
||||
|
||||
// Name of client reported in the 'version' message. Report the same name
|
||||
// for both bitcoind and bitcoin-qt, to make it harder for attackers to
|
||||
// target servers or GUI users specifically.
|
||||
const std::string CLIENT_NAME("Satoshi"); |
||||
|
||||
// Client version number
|
||||
#define CLIENT_VERSION_MAJOR 0 |
||||
#define CLIENT_VERSION_MINOR 6 |
||||
#define CLIENT_VERSION_REVISION 0 |
||||
#define CLIENT_VERSION_BUILD 99 |
||||
#define CLIENT_VERSION_SUFFIX "-beta" |
||||
|
||||
const int CLIENT_VERSION = 1000000 * CLIENT_VERSION_MAJOR |
||||
+ 10000 * CLIENT_VERSION_MINOR |
||||
+ 100 * CLIENT_VERSION_REVISION |
||||
+ 1 * CLIENT_VERSION_BUILD; |
||||
|
||||
|
||||
|
||||
// The following part of the code determines the CLIENT_BUILD variable.
|
||||
// Several mechanisms are used for this:
|
||||
// * first, if HAVE_BUILD_INFO is defined, include build.h, a file that is
|
||||
// generated by the build environment, possibly containing the output
|
||||
// of git-describe in a macro called BUILD_DESC
|
||||
// * secondly, if this is an exported version of the code, GIT_ARCHIVE will
|
||||
// be defined (automatically using the export-subst git attribute), and
|
||||
// GIT_COMMIT will contain the commit id.
|
||||
// * then, three options exist for determining CLIENT_BUILD:
|
||||
// * if BUILD_DESC is defined, use that literally (output of git-describe)
|
||||
// * if not, but GIT_COMMIT is defined, use v[maj].[min].[rev].[build]-g[commit]
|
||||
// * otherwise, use v[maj].[min].[rev].[build]-unk
|
||||
// finally CLIENT_VERSION_SUFFIX is added
|
||||
|
||||
// First, include build.h if requested
|
||||
#ifdef HAVE_BUILD_INFO |
||||
# include "build.h" |
||||
#endif |
||||
|
||||
// git will put "#define GIT_ARCHIVE 1" on the next line inside archives. $Format:%n#define GIT_ARCHIVE 1$
|
||||
#ifdef GIT_ARCHIVE |
||||
# define GIT_COMMIT_ID "$Format:%h$" |
||||
# define GIT_COMMIT_DATE "$Format:%cD" |
||||
#endif |
||||
|
||||
#define STRINGIFY(s) #s |
||||
|
||||
#define BUILD_DESC_FROM_COMMIT(maj,min,rev,build,commit) \ |
||||
"v" STRINGIFY(maj) "." STRINGIFY(min) "." STRINGIFY(rev) "." STRINGIFY(build) "-g" commit |
||||
|
||||
#define BUILD_DESC_FROM_UNKNOWN(maj,min,rev,build) \ |
||||
"v" STRINGIFY(maj) "." STRINGIFY(min) "." STRINGIFY(rev) "." STRINGIFY(build) "-unk" |
||||
|
||||
#ifndef BUILD_DESC |
||||
# ifdef GIT_COMMIT_ID |
||||
# define BUILD_DESC BUILD_DESC_FROM_COMMIT(CLIENT_VERSION_MAJOR, CLIENT_VERSION_MINOR, CLIENT_VERSION_REVISION, CLIENT_VERSION_BUILD, GIT_COMMIT_ID) |
||||
# else |
||||
# define BUILD_DESC BUILD_DESC_FROM_UNKNOWN(CLIENT_VERSION_MAJOR, CLIENT_VERSION_MINOR, CLIENT_VERSION_REVISION, CLIENT_VERSION_BUILD) |
||||
# endif |
||||
#endif |
||||
|
||||
#ifndef BUILD_DATE |
||||
# ifdef GIT_COMMIT_DATE |
||||
# define BUILD_DATE GIT_COMMIT_DATE |
||||
# else |
||||
# define BUILD_DATE __DATE__ ", " __TIME__ |
||||
# endif |
||||
#endif |
||||
|
||||
const std::string CLIENT_BUILD(BUILD_DESC CLIENT_VERSION_SUFFIX); |
||||
const std::string CLIENT_DATE(BUILD_DATE); |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
// Copyright (c) 2012 The Bitcoin developers
|
||||
// Distributed under the MIT/X11 software license, see the accompanying
|
||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||
#ifndef BITCOIN_VERSION_H |
||||
#define BITCOIN_VERSION_H |
||||
|
||||
#include <string> |
||||
|
||||
extern const std::string CLIENT_NAME; |
||||
extern const std::string CLIENT_BUILD; |
||||
extern const std::string CLIENT_DATE; |
||||
extern const int CLIENT_VERSION; |
||||
|
||||
#endif |
Loading…
Reference in new issue