[dss-commits] r8752 - in dss/trunk: . tools

dss-commits at forum.digitalstrom.org dss-commits at forum.digitalstrom.org
Wed Sep 9 13:10:08 CEST 2009


Author: jwinkelmann
Date: 2009-09-09 13:10:08 +0200 (Wed, 09 Sep 2009)
New Revision: 8752

Added:
   dss/trunk/tools/dss_gen_version_unix.sh
Modified:
   dss/trunk/CMakeLists.txt
   dss/trunk/config.h.in
   dss/trunk/main.cpp
Log:
Include svn revision in version info (fixes #114)

Modified: dss/trunk/CMakeLists.txt
===================================================================
--- dss/trunk/CMakeLists.txt	2009-09-09 11:10:05 UTC (rev 8751)
+++ dss/trunk/CMakeLists.txt	2009-09-09 11:10:08 UTC (rev 8752)
@@ -8,6 +8,20 @@
   SET(WITH_DATADIR "data/" CACHE FILEPATH "Data directory")
 ENDIF(NOT WITH_DATADIR)
 
+SET(DSS_GEN_VERSION_CMD "")
+IF(WIN32)
+  SET(DSS_GEN_VERSION_CMD "tools/dss_gen_version_win32.bat")
+ENDIF(WIN32)
+IF(UNIX)
+  SET(DSS_GEN_VERSION_CMD "tools/dss_gen_version_unix.sh")
+ENDIF(UNIX)
+
+ADD_CUSTOM_TARGET(build_info.h ALL
+	COMMAND ${DSS_GEN_VERSION_CMD} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+)
+ADD_DEFINITIONS(-DHAVE_BUILD_INFO_H)
+
 SET(REQUIRED_LIBS)
 
 INCLUDE (${CMAKE_ROOT}/Modules/FindLibXml2.cmake)

Modified: dss/trunk/config.h.in
===================================================================
--- dss/trunk/config.h.in	2009-09-09 11:10:05 UTC (rev 8751)
+++ dss/trunk/config.h.in	2009-09-09 11:10:08 UTC (rev 8752)
@@ -13,6 +13,7 @@
 #cmakedefine WITH_DATADIR "${WITH_DATADIR}"
 #cmakedefine WITH_BONJOUR
 #cmakedefine WITH_GCOV
+#cmakedefine RELEASE_BUILD
 
 #endif /* DIGITAL_STROM_SERVER_CONFIG_H */
 

Modified: dss/trunk/main.cpp
===================================================================
--- dss/trunk/main.cpp	2009-09-09 11:10:05 UTC (rev 8751)
+++ dss/trunk/main.cpp	2009-09-09 11:10:08 UTC (rev 8752)
@@ -26,6 +26,10 @@
   #include "config.h"
 #endif
 
+#ifdef HAVE_BUILD_INFO_H
+  #include "build_info.h"
+#endif
+
 #include "core/base.h"
 #include "core/dss.h"
 #include "core/logger.h"
@@ -48,7 +52,6 @@
 #include <iostream>
 
 #define DSS_VERSION "0.4a1"
-#define DSS_RELEASED_AT "20090605"
 
 using namespace std;
 namespace po = boost::program_options;
@@ -68,7 +71,17 @@
     return 1;
   }
 
-  cout << "DSS v" << DSS_VERSION << " released at " << DSS_RELEASED_AT << endl;
+#ifdef RELEASE_BUILD
+  cout << "DSS v" << DSS_VERSION << " released at " << DSS_BUILD_DATE << endl;
+#else
+  cout << "DSS version info:\n";
+  cout << "  RCS revision: " << DSS_RCS_REVISION << "\n";
+  cout << "  RCS url:      " << DSS_RCS_URL << "\n";
+  cout << "  build date:   " << DSS_BUILD_DATE << "\n";
+  cout << "  build user:   " << DSS_BUILD_USER << "\n";
+  cout << "  build host:   " << DSS_BUILD_HOST << "\n";
+  cout << endl;
+#endif
 
   // make sure timezone gets set
   tzset();

Added: dss/trunk/tools/dss_gen_version_unix.sh
===================================================================
--- dss/trunk/tools/dss_gen_version_unix.sh	                        (rev 0)
+++ dss/trunk/tools/dss_gen_version_unix.sh	2009-09-09 11:10:08 UTC (rev 8752)
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+###
+## Generate a build info header; unix version
+#
+# Johannes Winkelmann, johannes.winkelmann at aizo.com
+
+BASEDIR=$1
+TARGETDIR=$2
+BUILD_INFO=build_info.h
+
+if [ -z "$TARGETDIR" ] ; then
+  echo "Usage: $(basename $0) <base directory> <build_info target_dir>"
+  exit 1
+fi
+
+rcs_rev="undefined"
+rcs_root="undefined"
+if [ -n "$(which svn)" ]; then
+  if [ -d $BASEDIR/.svn ]; then
+     rcs_rev=$(svn info $BASEDIR|grep ^Revision:| sed -e 's|Revision:\s*||')
+     rcs_root=$(svn info $BASEDIR|grep ^URL:|sed -e 's|URL:\s*||')
+     rcs_st=$(svn st $BASEDIR|grep ^M)
+     if [ -n "$rcs_st" ]; then
+	rcs_rev="$rcs_rev-dirty"
+     fi
+  elif [ -d $BASEDIR/.git ]; then
+    if [ -d $BASEDIR/.git/svn ]; then
+     rcs_rev=svn-$(git svn info|grep ^Revision:| sed -e 's|Revision:\s*||')+
+     rcs_root=$(git svn info|grep ^URL:|sed -e 's|URL:\s*||')    
+    else
+      rcs_root=$(git branch|grep ^*)
+    fi
+    rcs_rev="${rcs_rev}git:$(git rev-parse HEAD)"
+    rcs_st=$(git status $BASEDIR|grep modified:)
+    if [ -n "$rcs_st" ]; then
+      rcs_rev="$rcs_rev-dirty"
+    fi
+  elif [ -d $BASEDIR/.hg ]; then
+     rcs_rev=$(hg identify) # already contains the '+' marked when modified
+     rcs_root=$(hg branch)
+  fi 
+fi
+
+
+echo "/* $BUILD_INFO generated by $(basename $0)        */" \
+	> $TARGETDIR/$BUILD_INFO
+echo "/* do not edit, modifications will be overwritten */" \
+	>> $TARGETDIR/$BUILD_INFO
+
+
+echo "#define DSS_RCS_REVISION \"$rcs_rev\""    >> $TARGETDIR/$BUILD_INFO
+echo "#define DSS_RCS_URL      \"$rcs_root\""   >> $TARGETDIR/$BUILD_INFO
+echo "#define DSS_BUILD_USER   \"$(whoami)\""   >> $TARGETDIR/$BUILD_INFO
+echo "#define DSS_BUILD_HOST   \"$(hostname)\"" >> $TARGETDIR/$BUILD_INFO
+echo "#define DSS_BUILD_DATE   \"$(date)\""     >> $TARGETDIR/$BUILD_INFO


Property changes on: dss/trunk/tools/dss_gen_version_unix.sh
___________________________________________________________________
Added: svn:executable
   + *



More information about the dss-commits mailing list