EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== 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



References:
Version strings to track not only EPICS BASE but other IOC modules/components Williams Jr., Ernest L.

Navigate by Date:
Prev: Re: EPICS base Installation Error- Need Help Andrew Johnson
Next: Re: Version strings to track not only EPICS BASE but other IOC modules/components Michael Davidsaver
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Version strings to track not only EPICS BASE but other IOC modules/components Williams Jr., Ernest L.
Next: Re: Version strings to track not only EPICS BASE but other IOC modules/components Michael Davidsaver
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·