1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 <2013> 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 <2013> 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Version strings to track not only EPICS BASE but other IOC modules/components |
From: | Rod Nussbaumer <[email protected]> |
To: | [email protected] |
Date: | Tue, 24 Sep 2013 08:20:01 -0700 |
Ernest:Here at TRIUMF, we put do-nothing string variables into C source code, and the content of the strings are macros that get expanded by CVS when it is committed to the repository. Something like this:
static char *devVmic4800_c = "\ndevVmic4800.c $Revision: 1.2 $ $Date: 2009/09/04 23:10:38 $\n";
When the module gets built into a binary library or executable, the revision strings are all there to find with the 'strings' command on Linux/Unix.
We also have an extension to the makeBaseApp utility that automatically creates these strings in source files that are created, as well as creating iocShell functions to display the revision strings at run time, which looks like this:
epics> laserStabMainRevShow laserStabMain.c $Revision: 1.1.1.1 $ $Date: 2011/08/10 20:49:46 $ RELEASE_DIR_laserStab /usr1/local/epics/iocApp/laserStabApp/R1_2_EPICS3_14_11/src/O.linux-x86 RELEASE_DATE_laserStab Wed May 15 13:58:37 PDT 2013 RELEASE_KERNEL_laserStab Linux icdeb6 2.6.32-5-686 RELEASE_COMPILER_laserStab gcc (Debian 4.4.5-8) 4.4.5 RELEASE_BUILDER_laserStab yogendran RELEASE_EPICS_laserStab R3.14.11
It is left to the discipline of the developer to ensure that CVS commits are performed *before* the code is built and released to production, so the proper revision info gets embedded.
Rod Nussbaumer ISAC Controls, TRIUMF Vancouver, Canada On 09/24/2013 07:25 AM, Williams Jr., Ernest L. wrote:
Hi everyone, How might one use the same scheme to supply a version string to reflect the version of a software module? Does EPICS Toolkit support this for Driver/Device Support? Would also be nice to have a version string supported for IOC applications as well. Can this be done in a standardized way such as dbior()? For example, EPICS BASE uses: "$EPICS_BASE_RELEASE/configure/CONFIG_SITE" Variable NAME = EPICS_SITE_VERSION Then at the ioc shell coreRelease() will print out the version string. So, for an EPICS module maybe: <moduleName>Release() For an IOC Application: <iocAppName>Release() This would be very useful and can also be place in a PV :) Anyone already doing this? If so, can we get it standardized as part of the EPICS BASE and templates? Cheers, Ernest