Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build_files/cmake/buildinfo.cmake84
-rw-r--r--build_files/scons/tools/Blender.py25
-rw-r--r--release/scripts/modules/sys_info.py14
-rw-r--r--source/blender/blenkernel/BKE_main.h2
-rw-r--r--source/blender/blenloader/intern/readfile.c10
-rw-r--r--source/blender/blenloader/intern/writefile.c11
-rw-r--r--source/blender/collada/AnimationExporter.h4
-rw-r--r--source/blender/collada/DocumentExporter.cpp12
-rw-r--r--source/blender/makesdna/DNA_fileglobal_types.h3
-rw-r--r--source/blender/python/intern/bpy_app.c14
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c47
-rw-r--r--source/blenderplayer/bad_level_call_stubs/CMakeLists.txt5
-rw-r--r--source/creator/CMakeLists.txt4
-rw-r--r--source/creator/buildinfo.c4
-rw-r--r--source/creator/creator.c27
15 files changed, 211 insertions, 55 deletions
diff --git a/build_files/cmake/buildinfo.cmake b/build_files/cmake/buildinfo.cmake
index e68015e36d3..ae2f87b49be 100644
--- a/build_files/cmake/buildinfo.cmake
+++ b/build_files/cmake/buildinfo.cmake
@@ -1,16 +1,82 @@
# This is called by cmake as an extermal process from
# ./source/creator/CMakeLists.txt to write ./source/creator/buildinfo.h
-# The FindSubversion.cmake module is part of the standard distribution
-include(FindSubversion)
-
# Extract working copy information for SOURCE_DIR into MY_XXX variables
# with a default in case anything fails, for examble when using git-svn
-set(MY_WC_REVISION "unknown")
+set(MY_WC_HASH "")
+set(MY_WC_BRANCH "")
+set(MY_WC_CHANGE "unknown")
+
# Guess if this is a SVN working copy and then look up the revision
-if(EXISTS ${SOURCE_DIR}/.svn/)
- if(Subversion_FOUND)
- Subversion_WC_INFO(${SOURCE_DIR} MY)
+if(EXISTS ${SOURCE_DIR}/.git/)
+ if(EXISTS ${SOURCE_DIR}/.git/)
+ # The FindSubversion.cmake module is part of the standard distribution
+ include(FindGit)
+ if(GIT_FOUND)
+ execute_process(COMMAND git rev-parse --short HEAD
+ WORKING_DIRECTORY ${SOURCE_DIR}
+ OUTPUT_VARIABLE MY_WC_HASH
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ execute_process(COMMAND git rev-parse --abbrev-ref HEAD
+ WORKING_DIRECTORY ${SOURCE_DIR}
+ OUTPUT_VARIABLE MY_WC_BRANCH
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ # Get latest version tag
+ execute_process(COMMAND git describe --match "v[0-9]*" --abbrev=0
+ WORKING_DIRECTORY ${SOURCE_DIR}
+ OUTPUT_VARIABLE _git_latest_version_tag
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ if(NOT _git_latest_version_tag STREQUAL "")
+ execute_process(COMMAND git rev-list HEAD ^${_git_latest_version_tag} --count
+ WORKING_DIRECTORY ${SOURCE_DIR}
+ OUTPUT_VARIABLE MY_WC_CHANGE
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ else()
+ # For the time being we don't have annotated release tags,
+ # count all the revisions in branch.
+ execute_process(COMMAND git rev-list HEAD --count
+ WORKING_DIRECTORY ${SOURCE_DIR}
+ OUTPUT_VARIABLE MY_WC_CHANGE
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ endif()
+
+ # Update GIT index before getting dirty files
+ execute_process(COMMAND git update-index -q --refresh
+ WORKING_DIRECTORY ${SOURCE_DIR}
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ execute_process(COMMAND git diff-index --name-only HEAD --
+ WORKING_DIRECTORY ${SOURCE_DIR}
+ OUTPUT_VARIABLE _git_changed_files
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ if(NOT _git_changed_files STREQUAL "")
+ set(MY_WC_CHANGE "${MY_WC_CHANGE}M")
+ endif()
+
+ unset(_git_changed_files)
+ unset(_git_latest_version_tag)
+ endif()
+ endif()
+else()
+ # Some crazy folks like me could have hacked git-svn chekout in a way
+ # so svnversion gives proper svn revision for themm which required having
+ # empty .svn folder.
+ #
+ # For such a crazy blokes put svn check into an else branch.
+ #
+ # (sergey)
+ if(EXISTS ${SOURCE_DIR}/.svn/)
+ # The FindSubversion.cmake module is part of the standard distribution
+ include(FindSubversion)
+
+ if(Subversion_FOUND)
+ Subversion_WC_INFO(${SOURCE_DIR} MY)
+ set(MY_WC_CHANGE "${MY_WC_REVISION}")
+ endif()
endif()
endif()
@@ -27,7 +93,9 @@ endif()
# Write a file with the SVNVERSION define
file(WRITE buildinfo.h.txt
- "#define BUILD_REV \"${MY_WC_REVISION}\"\n"
+ "#define BUILD_HASH \"${MY_WC_HASH}\"\n"
+ "#define BUILD_CHANGE \"${MY_WC_CHANGE}\"\n"
+ "#define BUILD_BRANCH \"${MY_WC_BRANCH}\"\n"
"#define BUILD_DATE \"${BUILD_DATE}\"\n"
"#define BUILD_TIME \"${BUILD_TIME}\"\n"
)
diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py
index f181f290104..b79ba991b9a 100644
--- a/build_files/scons/tools/Blender.py
+++ b/build_files/scons/tools/Blender.py
@@ -410,9 +410,24 @@ def buildinfo(lenv, build_type):
"""
build_date = time.strftime ("%Y-%m-%d")
build_time = time.strftime ("%H:%M:%S")
- build_rev = os.popen('svnversion').read()[:-1] # remove \n
- if build_rev == '':
- build_rev = '-UNKNOWN-'
+ if os.path.isdir(os.path.abspath('.git')):
+ latest_version_tag = os.popen('git describe --match "v[0-9]*" --abbrev=0').read().strip()
+ if latest_version_tag:
+ build_change = os.popen('git rev-list HEAD ' + latest_version_tag + ' --count').read().strip()
+ else:
+ build_change = os.popen('git rev-list HEAD --count').read().strip()
+
+ build_hash = os.popen('git rev-parse --short HEAD').read().strip()
+ build_branch = os.popen('git rev-parse --abbrev-ref HEAD').read().strip()
+ elif os.path.isdir(os.path.abspath('.svn')):
+ build_hash = ''
+ build_change = os.popen('svnversion').read()[:-1] # remove \n
+ build_branch = ''
+ else:
+ build_hash = ''
+ build_change = 'unknown'
+ build_branch = ''
+
if lenv['BF_DEBUG']:
build_type = "Debug"
build_cflags = ' '.join(lenv['CFLAGS'] + lenv['CCFLAGS'] + lenv['BF_DEBUG_CCFLAGS'] + lenv['CPPFLAGS'])
@@ -429,7 +444,9 @@ def buildinfo(lenv, build_type):
lenv.Append (CPPDEFINES = ['BUILD_TIME=\\"%s\\"'%(build_time),
'BUILD_DATE=\\"%s\\"'%(build_date),
'BUILD_TYPE=\\"%s\\"'%(build_type),
- 'BUILD_REV=\\"%s\\"'%(build_rev),
+ 'BUILD_HASH=\\"%s\\"'%(build_hash),
+ 'BUILD_CHANGE=\\"%s\\"'%(build_change),
+ 'BUILD_BRANCH=\\"%s\\"'%(build_branch),
'WITH_BUILDINFO',
'BUILD_PLATFORM=\\"%s:%s\\"'%(platform.system(), platform.architecture()[0]),
'BUILD_CFLAGS=\\"%s\\"'%(build_cflags),
diff --git a/release/scripts/modules/sys_info.py b/release/scripts/modules/sys_info.py
index ea75bfde809..3fd4a60d0b1 100644
--- a/release/scripts/modules/sys_info.py
+++ b/release/scripts/modules/sys_info.py
@@ -67,7 +67,19 @@ def write_sysinfo(op):
# build info
output.write("\nBlender:\n")
output.write(lilies)
- output.write("version %s, revision %r. %r\n" % (bpy.app.version_string, bpy.app.build_revision, bpy.app.build_type))
+ if bpy.app.build_branch and bpy.app.build_branch != "Unknown":
+ output.write("version %s, branch %r, chage %r, hash %r, %r\n" %
+ (bpy.app.version_string,
+ bpy.app.build_branch,
+ bpy.app.build_change,
+ bpy.app.build_hash,
+ bpy.app.build_type))
+ else:
+ output.write("version %s, revision %r. %r\n" %
+ (bpy.app.version_string,
+ bpy.app.build_change,
+ bpy.app.build_type))
+
output.write("build date: %r, %r\n" % (bpy.app.build_date, bpy.app.build_time))
output.write("platform: %r\n" % (bpy.app.build_platform))
output.write("binary path: %r\n" % (bpy.app.binary_path))
diff --git a/source/blender/blenkernel/BKE_main.h b/source/blender/blenkernel/BKE_main.h
index 264a7421e91..36c1f5dcf1f 100644
--- a/source/blender/blenkernel/BKE_main.h
+++ b/source/blender/blenkernel/BKE_main.h
@@ -53,7 +53,7 @@ typedef struct Main {
char name[1024]; /* 1024 = FILE_MAX */
short versionfile, subversionfile; /* see BLENDER_VERSION, BLENDER_SUBVERSION */
short minversionfile, minsubversionfile;
- int revision; /* svn revision of binary that saved file */
+ char build_change[16], build_hash[16]; /* change number and hash from buildinfo */
short recovered; /* indicate the main->name (file) is the recovered one */
struct Library *curlib;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index c3727c0f688..bc7cd2d9143 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7292,7 +7292,8 @@ static BHead *read_global(BlendFileData *bfd, FileData *fd, BHead *bhead)
bfd->main->subversionfile = fg->subversion;
bfd->main->minversionfile = fg->minversion;
bfd->main->minsubversionfile = fg->minsubversion;
- bfd->main->revision = fg->revision;
+ BLI_strncpy(bfd->main->build_change, fg->build_change, sizeof(bfd->main->build_change));
+ BLI_strncpy(bfd->main->build_hash, fg->build_hash, sizeof(bfd->main->build_hash));
bfd->winpos = fg->winpos;
bfd->fileflags = fg->fileflags;
@@ -7926,8 +7927,11 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
{
/* WATCH IT!!!: pointers from libdata have not been converted */
- if (G.debug & G_DEBUG)
- printf("read file %s\n Version %d sub %d svn r%d\n", fd->relabase, main->versionfile, main->subversionfile, main->revision);
+ if (G.debug & G_DEBUG) {
+ printf("read file %s\n Version %d sub %d change %s hash %s\n",
+ fd->relabase, main->versionfile, main->subversionfile,
+ main->build_change, main->build_hash);
+ }
blo_do_versions_pre250(fd, lib, main);
blo_do_versions_250(fd, lib, main);
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 83122e24b34..cf7a5329a35 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -3261,7 +3261,7 @@ static void write_global(WriteData *wd, int fileflags, Main *mainvar)
char subvstr[8];
/* prevent mem checkers from complaining */
- fg.pads= fg.pad= 0;
+ fg.pads= 0;
memset(fg.filename, 0, sizeof(fg.filename));
current_screen_compat(mainvar, &screen);
@@ -3285,11 +3285,14 @@ static void write_global(WriteData *wd, int fileflags, Main *mainvar)
fg.minsubversion= BLENDER_MINSUBVERSION;
#ifdef WITH_BUILDINFO
{
- extern char build_rev[];
- fg.revision= atoi(build_rev);
+ extern char build_change[], build_hash[];
+ /* TODO(sergey): Add branch name to file as well? */
+ BLI_strncpy(fg.build_change, build_change, sizeof(fg.build_change));
+ BLI_strncpy(fg.build_hash, build_hash, sizeof(fg.build_hash));
}
#else
- fg.revision= 0;
+ BLI_strncpy(fg.build_change, "unknown", sizeof(fg.build_change));
+ BLI_strncpy(fg.build_hash, "unknown", sizeof(fg.build_hash));
#endif
writestruct(wd, GLOB, "FileGlobal", 1, &fg);
}
diff --git a/source/blender/collada/AnimationExporter.h b/source/blender/collada/AnimationExporter.h
index ea5fd203bea..60224151308 100644
--- a/source/blender/collada/AnimationExporter.h
+++ b/source/blender/collada/AnimationExporter.h
@@ -53,10 +53,6 @@ extern "C"
#include "BIK_api.h"
#include "BKE_global.h"
#include "ED_object.h"
-
-#ifdef NAN_BUILDINFO
-extern char build_rev[];
-#endif
}
#include "MEM_guardedalloc.h"
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp
index c03316e1fe5..9aa0f6e2831 100644
--- a/source/blender/collada/DocumentExporter.cpp
+++ b/source/blender/collada/DocumentExporter.cpp
@@ -101,7 +101,8 @@ extern "C"
#include "ED_keyframing.h"
#ifdef WITH_BUILDINFO
-extern char build_rev[];
+extern char build_change[];
+extern char build_hash[];
#endif
#include "MEM_guardedalloc.h"
@@ -226,7 +227,14 @@ void DocumentExporter::exportCurrentScene(Scene *sce)
}
char version_buf[128];
#ifdef WITH_BUILDINFO
- sprintf(version_buf, "Blender %d.%02d.%d r%s", BLENDER_VERSION / 100, BLENDER_VERSION % 100, BLENDER_SUBVERSION, build_rev);
+ /* TODO(sergey): As soon as we fully switched to GIT, no need to check build_hash. */
+ if (build_hash[0] != '\0') {
+ sprintf(version_buf, "Blender %d.%02d.%d change:%s, hash:", BLENDER_VERSION / 100, BLENDER_VERSION % 100, BLENDER_SUBVERSION,
+ build_change, build_hash);
+ }
+ else {
+ sprintf(version_buf, "Blender %d.%02d.%d r%s", BLENDER_VERSION / 100, BLENDER_VERSION % 100, BLENDER_SUBVERSION, build_change);
+ }
#else
sprintf(version_buf, "Blender %d.%02d.%d", BLENDER_VERSION / 100, BLENDER_VERSION % 100, BLENDER_SUBVERSION);
#endif
diff --git a/source/blender/makesdna/DNA_fileglobal_types.h b/source/blender/makesdna/DNA_fileglobal_types.h
index 7e81041fe4a..734741fa687 100644
--- a/source/blender/makesdna/DNA_fileglobal_types.h
+++ b/source/blender/makesdna/DNA_fileglobal_types.h
@@ -48,8 +48,7 @@ typedef struct FileGlobal {
struct Scene *curscene;
int fileflags;
int globalf;
- int revision; /* svn revision from buildinfo */
- int pad;
+ char build_change[16], build_hash[16]; /* change number and hash from buildinfo */
/* file path where this was saved, for recover */
char filename[1024]; /* 1024 = FILE_MAX */
} FileGlobal;
diff --git a/source/blender/python/intern/bpy_app.c b/source/blender/python/intern/bpy_app.c
index 2edb0aee783..3a529496f02 100644
--- a/source/blender/python/intern/bpy_app.c
+++ b/source/blender/python/intern/bpy_app.c
@@ -53,7 +53,9 @@
#ifdef BUILD_DATE
extern char build_date[];
extern char build_time[];
-extern char build_rev[];
+extern char build_change[];
+extern char build_hash[];
+extern char build_branch[];
extern char build_platform[];
extern char build_type[];
extern char build_cflags[];
@@ -75,7 +77,9 @@ static PyStructSequence_Field app_info_fields[] = {
/* buildinfo */
{(char *)"build_date", (char *)"The date this blender instance was built"},
{(char *)"build_time", (char *)"The time this blender instance was built"},
- {(char *)"build_revision", (char *)"The subversion revision this blender instance was built with"},
+ {(char *)"build_change", (char *)"The change number this blender instance was built with"},
+ {(char *)"build_hash", (char *)"The commit hash this blender instance was built with"},
+ {(char *)"build_branch", (char *)"The branch this blender instance was built from"},
{(char *)"build_platform", (char *)"The platform this blender instance was built for"},
{(char *)"build_type", (char *)"The type of build (Release, Debug)"},
{(char *)"build_cflags", (char *)"C compiler flags"},
@@ -133,7 +137,9 @@ static PyObject *make_app_info(void)
#ifdef BUILD_DATE
SetBytesItem(build_date);
SetBytesItem(build_time);
- SetBytesItem(build_rev);
+ SetBytesItem(build_change);
+ SetBytesItem(build_hash);
+ SetBytesItem(build_branch);
SetBytesItem(build_platform);
SetBytesItem(build_type);
SetBytesItem(build_cflags);
@@ -150,6 +156,8 @@ static PyObject *make_app_info(void)
SetBytesItem("Unknown");
SetBytesItem("Unknown");
SetBytesItem("Unknown");
+ SetBytesItem("Unknown");
+ SetBytesItem("Unknown");
#endif
SetObjItem(BPY_app_ffmpeg_struct());
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 7748a2cb4b8..2cd5190cdaf 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -1641,18 +1641,25 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
#ifdef WITH_BUILDINFO
- int ver_width, rev_width;
- char version_buf[128];
- char revision_buf[128];
- extern char build_rev[];
-
- BLI_snprintf(version_buf, sizeof(version_buf),
- "%d.%02d.%d", BLENDER_VERSION / 100, BLENDER_VERSION % 100, BLENDER_SUBVERSION);
- BLI_snprintf(revision_buf, sizeof(revision_buf), "r%s", build_rev);
+ int label_delta = 0;
+ int hash_width, change_width;
+ char change_buf[128] = "\0";
+ char hash_buf[128] = "\0";
+ extern char build_hash[], build_change[], build_branch[];
+
+ /* TODO(sergey): As soon as we fully switched to GIT, no need to check build_hash. */
+ if (build_hash[0] != '\0') {
+ /* Builds made from tag only shows tag sha */
+ BLI_snprintf(hash_buf, sizeof(hash_buf), "Hash: %s", build_hash);
+ BLI_snprintf(change_buf, sizeof(change_buf), "Change: %s", build_change);
+ }
+ else {
+ BLI_snprintf(change_buf, sizeof(change_buf), "r%s", build_change);
+ }
BLF_size(style->widgetlabel.uifont_id, style->widgetlabel.points, U.pixelsize * U.dpi);
- ver_width = (int)BLF_width(style->widgetlabel.uifont_id, version_buf) + 0.5f * U.widget_unit;
- rev_width = (int)BLF_width(style->widgetlabel.uifont_id, revision_buf) + 0.5f * U.widget_unit;
+ hash_width = (int)BLF_width(style->widgetlabel.uifont_id, hash_buf) + 0.5f * U.widget_unit;
+ change_width = (int)BLF_width(style->widgetlabel.uifont_id, change_buf) + 0.5f * U.widget_unit;
#endif /* WITH_BUILDINFO */
block = uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
@@ -1667,9 +1674,23 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
uiButSetFunc(but, wm_block_splash_close, block, NULL);
uiBlockSetFunc(block, wm_block_splash_refreshmenu, block, NULL);
-#ifdef WITH_BUILDINFO
- uiDefBut(block, LABEL, 0, version_buf, U.pixelsize * 494 - ver_width, U.pixelsize * 258, ver_width, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
- uiDefBut(block, LABEL, 0, revision_buf, U.pixelsize * 494 - rev_width, U.pixelsize * 246, rev_width, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
+#ifdef WITH_BUILDINFO
+ if (!STREQ(build_change, "0")) {
+ uiDefBut(block, LABEL, 0, change_buf, U.pixelsize * 494 - change_width, U.pixelsize * 270, change_width, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
+ label_delta = 12;
+ }
+ uiDefBut(block, LABEL, 0, hash_buf, U.pixelsize * 494 - hash_width, U.pixelsize * (270 - label_delta), hash_width, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
+
+ /* TODO(sergey): As soon as we fully switched to GIT, no need to check
+ * whether branch is empty or not.
+ */
+ if (build_branch[0] != '\0' && !STREQ(build_branch, "master")) {
+ char branch_buf[128] = "\0";
+ int branch_width;
+ BLI_snprintf(branch_buf, sizeof(branch_buf), "Branch: %s", build_branch);
+ branch_width = (int)BLF_width(style->widgetlabel.uifont_id, branch_buf) + 0.5f * U.widget_unit;
+ uiDefBut(block, LABEL, 0, branch_buf, U.pixelsize * 494 - branch_width, U.pixelsize * (258 - label_delta), branch_width, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
+ }
#endif /* WITH_BUILDINFO */
layout = uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 10, 2, U.pixelsize * 480, U.pixelsize * 110, style);
diff --git a/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt b/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt
index e8e7ee6ea0a..f8fe401cb1c 100644
--- a/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt
+++ b/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt
@@ -1,3 +1,4 @@
+
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
@@ -51,8 +52,10 @@ if(WITH_BUILDINFO)
)
add_definitions(-DBUILD_DATE="\"\""
-DBUILD_TIME="\"\""
- -DBUILD_REV="\"\""
+ -DBUILD_CHANGE="\"\""
+ -DBUILD_HASH="\"\""
-DBUILD_PLATFORM="\"\""
+ -DBUILD_BRANCH="\"\""
-DBUILD_TYPE="\"\""
)
endif()
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index 8e0ba6684ab..33d5c7dc90b 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -131,7 +131,9 @@ if(WITH_BUILDINFO)
# # define in header now, else these get out of date on rebuilds.
# -DBUILD_DATE="${BUILD_DATE}"
# -DBUILD_TIME="${BUILD_TIME}"
- # -DBUILD_REV="${BUILD_REV}"
+ # -DBUILD_CHANGE="${BUILD_CHANGE}"
+ # -DBUILD_HASH="${BUILD_HASH}"
+ # -DBUILD_BRANCH="${BUILD_BRANCH}"
-DWITH_BUILDINFO_HEADER # alternative to lines above
-DBUILD_PLATFORM="${CMAKE_SYSTEM_NAME}"
-DBUILD_TYPE="${CMAKE_BUILD_TYPE}"
diff --git a/source/creator/buildinfo.c b/source/creator/buildinfo.c
index d747fe8e1ff..d51249980a8 100644
--- a/source/creator/buildinfo.c
+++ b/source/creator/buildinfo.c
@@ -39,7 +39,9 @@
/* currently only these are defined in the header */
char build_date[] = BUILD_DATE;
char build_time[] = BUILD_TIME;
-char build_rev[] = BUILD_REV;
+char build_hash[] = BUILD_HASH;
+char build_change[] = BUILD_CHANGE;
+char build_branch[] = BUILD_BRANCH;
char build_platform[] = BUILD_PLATFORM;
char build_type[] = BUILD_TYPE;
diff --git a/source/creator/creator.c b/source/creator/creator.c
index 54fc80984f3..8221552a1d7 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -153,7 +153,9 @@
#ifdef BUILD_DATE
extern char build_date[];
extern char build_time[];
-extern char build_rev[];
+extern char build_hash[];
+extern char build_change[];
+extern char build_branch[];
extern char build_platform[];
extern char build_type[];
extern char build_cflags[];
@@ -219,7 +221,14 @@ static int print_version(int UNUSED(argc), const char **UNUSED(argv), void *UNUS
#ifdef BUILD_DATE
printf("\tbuild date: %s\n", build_date);
printf("\tbuild time: %s\n", build_time);
- printf("\tbuild revision: %s\n", build_rev);
+ /* TODO(sergey): As soon as we fully switched to GIT, no need to check build_hash. */
+ if (build_hash[0] != '\0') {
+ printf("\tbuild revision: %s\n", build_change);
+ }
+ else {
+ printf("\tbuild change: %s\n", build_change);
+ printf("\tbuild hash: %s\n", build_hash);
+ }
printf("\tbuild platform: %s\n", build_platform);
printf("\tbuild type: %s\n", build_type);
printf("\tbuild c flags: %s\n", build_cflags);
@@ -590,13 +599,17 @@ static void blender_crash_handler(int signum)
printf("Writing: %s\n", fname);
fflush(stdout);
- BLI_snprintf(header, sizeof(header), "# " BLEND_VERSION_FMT ", Revision: %s\n", BLEND_VERSION_ARG,
-#ifdef BUILD_DATE
- build_rev
+#ifndef BUILD_DATE
+ BLI_snprintf(header, sizeof(header), "# " BLEND_VERSION_FMT ", Unknown revision\n", BLEND_VERSION_ARG);
#else
- "Unknown"
+ /* TODO(sergey): As soon as we fully switched to GIT, no need to check build_hash. */
+ if (build_hash[0] != '\0') {
+ BLI_snprintf(header, sizeof(header), "# " BLEND_VERSION_FMT ", Change: %s, Hash %s\n", BLEND_VERSION_ARG, build_change, build_hash);
+ }
+ else {
+ BLI_snprintf(header, sizeof(header), "# " BLEND_VERSION_FMT ", Revision: %s\n", BLEND_VERSION_ARG, build_change);
+ }
#endif
- );
/* open the crash log */
errno = 0;