[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [61082] trunk/blender: Made buildinfo aware of builds from GIT
Sergey Sharybin
sergey.vfx at gmail.com
Sat Nov 16 14:41:45 CET 2013
How you call it.. Accidental brain glitch :)
Thanks for pointing in this! Fixes in master now.
On Sat, Nov 16, 2013 at 5:35 PM, IRIE Shinsuke <irieshinsuke at yahoo.co.jp>wrote:
> Why is the same if(EXISTS ${SOURCE_DIR}/.git/) ... endif() nested
> in buildinfo.cmake?
>
> IRIE Shinsuke
>
> 13/11/04, Sergey Sharybin wrote:
> > Revision: 61082
> >
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=61082
> > Author: nazgul
> > Date: 2013-11-04 13:21:39 +0000 (Mon, 04 Nov 2013)
> > Log Message:
> > -----------
> > Made buildinfo aware of builds from GIT
> >
> > - Use commit number since last annotated tag as a
> > revision number replacement. It'll eb followed
> > by 'M' symbol if there're local modification in
> > the source tree.
> >
> > - Commit short SHA1 is included. Helps getting
> > information about commit used to build blender
> > with much faster.
> >
> > - If build is not done from master branch, this also
> > will be noticed in the splash screen.
> >
> > This commit also replaces revision stored in the
> > files with git-specific fields (change and hash).
> > This is kind of breaks compatibility, meaning
> > files which were saved before this change wouldn't
> > display any information about which revision they
> > were saved with. When we'll finally switch to git,
> > we'll see proper hash and change number since
> > previous release in the files, for until then
> > svn version will be used as a change number and
> > hash will be empty.
> >
> > Not a huge deal, since this field was only used
> > by developers to help torubleshooting things and
> > isn't needed for blender itself.
> >
> > Some additional tweaks are probably needed :)
> >
> > Modified Paths:
> > --------------
> > trunk/blender/build_files/cmake/buildinfo.cmake
> > trunk/blender/build_files/scons/tools/Blender.py
> > trunk/blender/release/scripts/modules/sys_info.py
> > trunk/blender/source/blender/blenkernel/BKE_main.h
> > trunk/blender/source/blender/blenloader/intern/readfile.c
> > trunk/blender/source/blender/blenloader/intern/writefile.c
> > trunk/blender/source/blender/collada/AnimationExporter.h
> > trunk/blender/source/blender/collada/DocumentExporter.cpp
> > trunk/blender/source/blender/makesdna/DNA_fileglobal_types.h
> > trunk/blender/source/blender/python/intern/bpy_app.c
> > trunk/blender/source/blender/windowmanager/intern/wm_operators.c
> >
> trunk/blender/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt
> > trunk/blender/source/creator/CMakeLists.txt
> > trunk/blender/source/creator/buildinfo.c
> > trunk/blender/source/creator/creator.c
> >
> > Modified: trunk/blender/build_files/cmake/buildinfo.cmake
> > ===================================================================
> > --- trunk/blender/build_files/cmake/buildinfo.cmake 2013-11-04
> 12:50:33 UTC (rev 61081)
> > +++ trunk/blender/build_files/cmake/buildinfo.cmake 2013-11-04
> 13:21:39 UTC (rev 61082)
> > @@ -1,17 +1,83 @@
> > # 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()
> >
> > # BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
> > @@ -27,7 +93,9 @@
> >
> > # 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"
> > )
> >
> > Modified: trunk/blender/build_files/scons/tools/Blender.py
> > ===================================================================
> > --- trunk/blender/build_files/scons/tools/Blender.py 2013-11-04
> 12:50:33 UTC (rev 61081)
> > +++ trunk/blender/build_files/scons/tools/Blender.py 2013-11-04
> 13:21:39 UTC (rev 61082)
> > @@ -410,9 +410,24 @@
> > """
> > 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 @@
> > 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),
> >
> > Modified: trunk/blender/release/scripts/modules/sys_info.py
> > ===================================================================
> > --- trunk/blender/release/scripts/modules/sys_info.py 2013-11-04
> 12:50:33 UTC (rev 61081)
> > +++ trunk/blender/release/scripts/modules/sys_info.py 2013-11-04
> 13:21:39 UTC (rev 61082)
> > @@ -67,7 +67,19 @@
> > # 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))
> >
> > Modified: trunk/blender/source/blender/blenkernel/BKE_main.h
> > ===================================================================
> > --- trunk/blender/source/blender/blenkernel/BKE_main.h 2013-11-04
> 12:50:33 UTC (rev 61081)
> > +++ trunk/blender/source/blender/blenkernel/BKE_main.h 2013-11-04
> 13:21:39 UTC (rev 61082)
> > @@ -53,7 +53,7 @@
> > 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;
> >
> > Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
> > ===================================================================
> > --- trunk/blender/source/blender/blenloader/intern/readfile.c 2013-11-04
> 12:50:33 UTC (rev 61081)
> > +++ trunk/blender/source/blender/blenloader/intern/readfile.c 2013-11-04
> 13:21:39 UTC (rev 61082)
> > @@ -7292,7 +7292,8 @@
> > 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 @@
> > {
> > /* 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);
> >
> > Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
> > ===================================================================
> > --- trunk/blender/source/blender/blenloader/intern/writefile.c
> 2013-11-04 12:50:33 UTC (rev 61081)
> > +++ trunk/blender/source/blender/blenloader/intern/writefile.c
> 2013-11-04 13:21:39 UTC (rev 61082)
> > @@ -3261,7 +3261,7 @@
> > 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 @@
> > fg.minsubversion= BLENDER_MINSUBVERSION;
> > #ifdef WITH_BUILDINFO
> > {
> > - extern char build_rev[];
> > - fg.revision= atoi(build_rev);
> >
> > @@ Diff output truncated at 10240 characters. @@
> > _______________________________________________
> > Bf-blender-cvs mailing list
> > Bf-blender-cvs at blender.org
> > http://lists.blender.org/mailman/listinfo/bf-blender-cvs
> >
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>
--
With best regards, Sergey Sharybin
More information about the Bf-committers
mailing list