From d1362c48f954c8ae87807cc9ef3188d10be66175 Mon Sep 17 00:00:00 2001 From: chrfranke <chrfranke@4ea69e1a-61f1-4043-bf83-b5c94c648137> Date: Thu, 16 Jul 2009 20:08:06 +0000 Subject: [PATCH] Print SVN revision number instead of time in version info line. Get SVN revision number from svn (if available) or guess from Id strings. Rename generated file to svnversion.h. git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@2837 4ea69e1a-61f1-4043-bf83-b5c94c648137 --- sm5/CHANGELOG | 4 +++ sm5/INSTALL | 12 +++---- sm5/Makefile.am | 56 ++++++++++++++++++-------------- sm5/configure.in | 21 +++++++----- sm5/os_win32/smartctl_vc8.vcproj | 48 +++++++++++++-------------- sm5/os_win32/smartd_vc8.vcproj | 48 +++++++++++++-------------- sm5/utility.cpp | 9 ++--- 7 files changed, 107 insertions(+), 91 deletions(-) diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG index 647948a98..cba68fa4c 100644 --- a/sm5/CHANGELOG +++ b/sm5/CHANGELOG @@ -42,6 +42,10 @@ NOTES FOR FUTURE RELEASES: see TODO file. <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE> + [CF] Print SVN revision number instead of time in version info line. + Get SVN revision number from svn (if available) or guess from + Id strings. Rename generated file to svnversion.h. + [CF] Makefile.am: Modify generation of cvsversion.h for SVN. [GP] Convert CVS repository to SVN. diff --git a/sm5/INSTALL b/sm5/INSTALL index 69d778da3..5f3597d5d 100644 --- a/sm5/INSTALL +++ b/sm5/INSTALL @@ -1,7 +1,7 @@ Smartmontools installation instructions ======================================= -$Id: INSTALL,v 1.83 2009/01/12 22:55:02 dlukes Exp $ +$Id$ Please also see the smartmontools home page: http://smartmontools.sourceforge.net/ @@ -264,9 +264,9 @@ Table of contents: make CFLAGS='your options' The first output line of smartctl and smartd provides information - about release number, last CVS checkin date/time, platform, and - package. The latter defaults to "(local build)" and can be changed - by the variable BUILD_INFO, for example: + about release number, last SVN checkin date and revison, platform, + and package. The latter defaults to "(local build)" and can be + changed by the variable BUILD_INFO, for example: make BUILD_INFO='"(Debian 5.39-2)"' [4] Guidelines for different Linux distributions @@ -495,8 +495,8 @@ To prepare os_win32 directory for MSVC8, use the following on Cygwin: The MSVC8 project files (os_win32/smartmontools_vc8.sln, os_win32/smart{ctl,d}_vc8.vcproj) are included in CVS (but not in source tarball). The target config-vc8 from a Makefile configured - for MinGW creates os_win32/{config,cvsversion}_vc8.h from - ./{config,cvsversion}.h. The configure skript must be run outside + for MinGW creates os_win32/{config,svnversion}_vc8.h from + ./{config,svnversion}.h. The configure skript must be run outside of the source directory to avoid inclusion of the original config.h. Unlike MinGW, MSVC can also be used to build the syslog message file diff --git a/sm5/Makefile.am b/sm5/Makefile.am index 7bdcb2f4b..53218262d 100644 --- a/sm5/Makefile.am +++ b/sm5/Makefile.am @@ -241,8 +241,7 @@ EXTRA_DIST = smartd.initd.in \ os_win32/installer.nsi \ $(docs_DATA) -CLEANFILES = cvsversion.h \ - drivedb.h \ +CLEANFILES = drivedb.h \ smartd.conf.5 \ smartd.conf.4 \ smartd.8 \ @@ -255,28 +254,35 @@ CLEANFILES = cvsversion.h \ smartctl.8.txt \ smartd.conf.5.html \ smartd.conf.5.txt \ - smartd.initd \ + smartd.initd \ + svnversion.h \ SMART if SMARTD_SUFFIX CLEANFILES += smartd.conf$(smartd_suffix) endif -CVSVERSION_DEPS = CHANGELOG Makefile -if IS_CVS_BUILD -# Rebuild cvsversion.h after cvs update or commit -CVSVERSION_DEPS += $(srcdir)/CVS/Entries -endif +utility.o: svnversion.h -utility.o: cvsversion.h +if IS_SVN_BUILD +# Get version info from SVN +svnversion.h: CHANGELOG Makefile $(srcdir)/.svn/entries + echo '/* svnversion.h. Generated by Makefile from svn info. */' > $@ + chg="`(cd $(srcdir) && svn status -q 2>/dev/null | sed 's,^.*$$,+,;q')`" && \ + (cd $(srcdir) && TZ= svn info 2>/dev/null ) \ + | sed -n 'h;s,^.* Rev: *\([^ ]*\)$$,REV "\1'"$$chg"'",p;s,^.* Date: *\([^ ]*\) .*$$,DATE "\1",p;g;s,^.* Date: *[^ ]* *\([^ ]*\) .*$$,TIME "\1",p' \ + | sed 's,^,#define SMARTMONTOOLS_SVN_,' >> $@ +else -cvsversion.h: $(CVSVERSION_DEPS) - echo '/* cvsversion.h. Generated by Makefile. */' > $@ +# SVN not available, guess version info from $Id$ strings +svnversion.h: CHANGELOG Makefile + echo '/* svnversion.h. Generated by Makefile from Id strings. */' > $@ (cd $(srcdir) && cat Makefile.am configure.in smart*.in *.cpp *.h *.s) \ - | sed -n 's,^.*\$$[I][d]: [^ ]* [^ ]* \(20[01][0-9][-/][01][0-9][-/][0-3][0-9] [0-9][0-9]:[0-9][0-9]\):[0-9][0-9][^$$]*\$$.*$$,\1,p' \ - | sed 's,/,-,g' | sort -r \ - | sed 's,^\(.*\)$$,#define SMARTMONTOOLS_CVS_DATE_TIME "\1",;1q' \ - >> $@ + | sed -n 's,^.*\$$[I][d]: [^ ]* \([0-9][0-9]* [0-9][-0-9]* [0-9][:0-9]*\)[^:0-9][^$$]*\$$.*$$,\1,p' \ + | sort -n -r \ + | sed -n 'h;s,^\([^ ]*\) .*$$,REV "\1~",p;g;s,^[^ ]* \([^ ]*\) .*$$,DATE "\1",p;g;s,^[^ ]* [^ ]* \([^ ]*\)$$,TIME "\1",p;q' \ + | sed 's,^,#define SMARTMONTOOLS_SVN_,' >> $@ +endif # Drive Database @@ -399,10 +405,10 @@ endif if OS_FREEBSD .for file in $(man_MANS) -${file}: $(srcdir)/${file}.in Makefile cvsversion.h +${file}: $(srcdir)/${file}.in Makefile svnversion.h sed "s|CURRENT_CVS_VERSION|$(releaseversion)|g; \ - s|CURRENT_CVS_DATE|`sed -n 's,^[^"]*"\([^ ]*\) [^"]*".*$$,\1,p' cvsversion.h`|g; \ - s|CURRENT_CVS_TIME|`sed -n 's,^[^"]*"[^ ]* \([^"]*\)".*$$,\1,p' cvsversion.h`|g; \ + s|CURRENT_CVS_DATE|`sed -n 's,^.*DATE[^"]*"\([^"]*\)".*$$,\1,p' svnversion.h`|g; \ + s|CURRENT_CVS_TIME|`sed -n 's,^.*TIME[^"]*"\([^"]*\)".*$$,\1,p' svnversion.h`|g; \ s|/usr/local/share/man/|$(mandir)/|g; \ s|/usr/local/sbin/|$(sbindir)/|g; \ s|/usr/local/etc/rc\\.d/init.d/|$(initddir)/|g; \ @@ -413,10 +419,10 @@ ${file}: $(srcdir)/${file}.in Makefile cvsversion.h $(MAN_SAVESTATES) > $@ .endfor else -smart%: $(srcdir)/smart%.in Makefile cvsversion.h +smart%: $(srcdir)/smart%.in Makefile svnversion.h sed "s|CURRENT_CVS_VERSION|$(releaseversion)|g" $< | \ - sed "s|CURRENT_CVS_DATE|`sed -n 's,^[^"]*"\([^ ]*\) [^"]*".*$$,\1,p' cvsversion.h`|g" | \ - sed "s|CURRENT_CVS_TIME|`sed -n 's,^[^"]*"[^ ]* \([^"]*\)".*$$,\1,p' cvsversion.h`|g" | \ + sed "s|CURRENT_CVS_DATE|`sed -n 's,^.*DATE[^"]*"\([^"]*\)".*$$,\1,p' svnversion.h`|g" | \ + sed "s|CURRENT_CVS_TIME|`sed -n 's,^.*TIME[^"]*"\([^"]*\)".*$$,\1,p' svnversion.h`|g" | \ sed "s|/usr/local/share/man/|$(mandir)/|g" | \ sed "s|/usr/local/sbin/|$(sbindir)/|g" | \ sed "s|/usr/local/etc/rc\\.d/init.d/|$(initddir)/|g" | \ @@ -589,17 +595,17 @@ smartctl-nc.exe: smartctl.exe mv -f $@.tmp $@ -# Build {config,cvsversion}_vc8.h for MSVC8 from MinGW {config,cvsversion}.h +# Build {config,svnversion}_vc8.h for MSVC8 from MinGW {config,svnversion}.h -config-vc8: $(srcdir)/os_win32/config_vc8.h $(srcdir)/os_win32/cvsversion_vc8.h +config-vc8: $(srcdir)/os_win32/config_vc8.h $(srcdir)/os_win32/svnversion_vc8.h $(srcdir)/os_win32/config_vc8.h: config.h sed '1i/* config_vc8.h. Generated from config.h by Makefile. */' $< | \ sed 's,^#define HAVE_\(ATTR_PACKED\|INTTYPES_H\|STDINT_H\|STRINGS_H\|STRTOULL\|U*INT64_T\|UNISTD_H\|WORKING_SNPRINTF\) 1$$,/* #undef HAVE_\1 */,' | \ sed 's,i.86-pc-mingw32,i686-pc-win32vc8,' > $@ -$(srcdir)/os_win32/cvsversion_vc8.h: cvsversion.h - cp cvsversion.h $@ +$(srcdir)/os_win32/svnversion_vc8.h: svnversion.h + cp svnversion.h $@ endif diff --git a/sm5/configure.in b/sm5/configure.in index 9c9c84bcb..51cc1a61c 100644 --- a/sm5/configure.in +++ b/sm5/configure.in @@ -1,5 +1,5 @@ # -# $Id: configure.in,v 1.148 2009/03/19 18:00:35 chrfranke Exp $ +# $Id$ # dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.50) @@ -7,7 +7,7 @@ AC_INIT(smartmontools, 5.39, smartmontools-support@lists.sourceforge.net) AC_CONFIG_SRCDIR(smartctl.cpp) smartmontools_configure_date=`date -u +"%Y/%m/%d %T %Z"` -smartmontools_cvs_tag=`echo '$Id: configure.in,v 1.148 2009/03/19 18:00:35 chrfranke Exp $'` +smartmontools_cvs_tag=`echo '$Id$'` smartmontools_release_date=2008/03/10 smartmontools_release_time="10:44:07 GMT" @@ -43,12 +43,17 @@ case "${host}" in ;; esac -# Check for CVS. -AC_MSG_CHECKING([whether this is a build from CVS]) -is_cvs_build=no -test -f "$srcdir/CVS/Entries" && is_cvs_build=yes -AM_CONDITIONAL(IS_CVS_BUILD, [test "$is_cvs_build" = "yes"]) -AC_MSG_RESULT([$is_cvs_build]) +# Check for SVN. +AC_MSG_CHECKING([whether this is a build from SVN]) +is_svn_build=no +if test -f "$srcdir/.svn/entries"; then + is_svn_build=unknown + if (cd "$srcdir" && svn --version && svn info && svn status -q) >/dev/null 2>&1; then + is_svn_build=yes + fi +fi +AM_CONDITIONAL(IS_SVN_BUILD, [test "$is_svn_build" = "yes"]) +AC_MSG_RESULT([$is_svn_build]) dnl Checks for libraries needed for name services (Solaris needs dnl libnsl, might in the future also need libsocket) diff --git a/sm5/os_win32/smartctl_vc8.vcproj b/sm5/os_win32/smartctl_vc8.vcproj index b89d75470..9ea7924b0 100644 --- a/sm5/os_win32/smartctl_vc8.vcproj +++ b/sm5/os_win32/smartctl_vc8.vcproj @@ -497,30 +497,6 @@ RelativePath="..\configure.in" > </File> - <File - RelativePath=".\cvsversion_vc8.h" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Copy $(InputPath) cvsversion.h" - CommandLine="copy $(InputPath) cvsversion.h
" - Outputs="cvsversion.h" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Copy $(InputPath) cvsversion.h" - CommandLine="copy $(InputPath) cvsversion.h
" - Outputs="cvsversion.h" - /> - </FileConfiguration> - </File> <File RelativePath="..\dev_ata_cmd_set.cpp" > @@ -1033,6 +1009,30 @@ RelativePath="..\smartd.initd.in" > </File> + <File + RelativePath=".\svnversion_vc8.h" + > + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) svnversion.h" + CommandLine="copy $(InputPath) svnversion.h
" + Outputs="svnversion.h" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) svnversion.h" + CommandLine="copy $(InputPath) svnversion.h
" + Outputs="svnversion.h" + /> + </FileConfiguration> + </File> <File RelativePath="..\TODO" > diff --git a/sm5/os_win32/smartd_vc8.vcproj b/sm5/os_win32/smartd_vc8.vcproj index 6c2ea5ff5..d9330b150 100644 --- a/sm5/os_win32/smartd_vc8.vcproj +++ b/sm5/os_win32/smartd_vc8.vcproj @@ -417,30 +417,6 @@ RelativePath="..\configure.in" > </File> - <File - RelativePath=".\cvsversion_vc8.h" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Copy $(InputPath) cvsversion.h" - CommandLine="copy $(InputPath) cvsversion.h
" - Outputs="cvsversion.h" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCustomBuildTool" - Description="Copy $(InputPath) cvsversion.h" - CommandLine="copy $(InputPath) cvsversion.h
" - Outputs="cvsversion.h" - /> - </FileConfiguration> - </File> <File RelativePath="..\dev_ata_cmd_set.cpp" > @@ -985,6 +961,30 @@ RelativePath="..\smartd.initd.in" > </File> + <File + RelativePath=".\svnversion_vc8.h" + > + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) svnversion.h" + CommandLine="copy $(InputPath) svnversion.h
" + Outputs="svnversion.h" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + > + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) svnversion.h" + CommandLine="copy $(InputPath) svnversion.h
" + Outputs="svnversion.h" + /> + </FileConfiguration> + </File> <File RelativePath="..\TODO" > diff --git a/sm5/utility.cpp b/sm5/utility.cpp index 401dee42f..2b2d04f7d 100644 --- a/sm5/utility.cpp +++ b/sm5/utility.cpp @@ -42,7 +42,7 @@ #include <stdexcept> #include "config.h" -#include "cvsversion.h" +#include "svnversion.h" #include "int64.h" #include "utility.h" @@ -50,7 +50,7 @@ #include "dev_interface.h" // Any local header files should be represented by a CVSIDX just below. -const char* utility_c_cvsid="$Id: utility.cpp,v 1.75 2009/02/09 21:57:37 chrfranke Exp $" +const char* utility_c_cvsid="$Id$" CONFIG_H_CVSID INT64_H_CVSID UTILITY_H_CVSID; const char * packet_types[] = { @@ -89,9 +89,10 @@ const char *format_version_info(const char *progname) { static char info[200]; snprintf(info, sizeof(info), - "%s %s %s [%s] %s\n" + "%s %s %s r%s [%s] %s\n" "Copyright (C) 2002-9 by Bruce Allen, http://smartmontools.sourceforge.net\n", - progname, PACKAGE_VERSION, SMARTMONTOOLS_CVS_DATE_TIME, smi()->get_os_version_str(), BUILD_INFO + progname, PACKAGE_VERSION, SMARTMONTOOLS_SVN_DATE, SMARTMONTOOLS_SVN_REV, + smi()->get_os_version_str(), BUILD_INFO ); return info; } -- GitLab