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  <20122013  2014  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  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: using areaDetector as a support library only
From: "Ernest L. Williams Jr." <[email protected]>
To: "Ernest L. Williams Jr." <[email protected]>
Cc: EPICS Techtalk <[email protected]>
Date: Fri, 18 May 2012 13:57:27 -0700
Hi,

Just making sure that tech-talk is also added here as well :)


On 05/18/2012 01:49 PM, Ernest L. Williams Jr. wrote:
On 05/18/2012 01:34 PM, Bruce Hill wrote:
Hi Mark,
I think it stems from differences in how we manage our releases.
For my release model, and I suspect Ernest's as well, I maintain
separate release paths for areaDetector R1.6 compiled against
base 3.14.9, 3.14.11, and 3.14.12.    Thus, my configure/RELEASE
file would use R1.6.0-0.4.0 for areaDetector compiled against 3.14.11
and R1.6.0-0.5.0 for areaDetector compiled against 3.14.12.
We no longer do that.
We make sure all modules build against any RELEASE of EPICS.

The problem comes when an IOC application wants to try Ben Franksen's
new sequencer but the areaDetector is using another version.
This is the kind of thing that cause a module version dependency chain
reaction.
The IOC application only wants to use the areaDetector as a library and
maybe database templates.
This is why we reduce the dependencies of modules to minimize the
version conflict for IOC Apps.

I'm sure each site has their own way or solving this problem, but
in general it's worked well for us as we need to continue to support
IOC's running against older versions of base until such time as
someone can verify that the IOC builds w/ a new base and more
importantly, gets enough access to the device to be able to test
if the new build works.

The down side for modules which depend on other modules, which
themselves depend on other modules, is that a script to automate
updating all the configure release files and build each module in
the proper order would be complicated to write and maintain.

Regards,
- Bruce

On 5/18/2012 12:48 PM, Mark Rivers wrote:
I call it the module dependency problem, and when I update base,
it causes me to have to release new module versions in 4 different
sets, depending on how many layers of module dependency they have.
I don't quite understand that.  We don't release new versions of modules when we upgrade base, etc.  We just run "make release" which automatically updates all of the module configure/RELEASE files to point to the new version of base.  Of course those modules have to be known to work with the new release of base.

I agree that it's good to minimize module dependencies, and if only the example application needs other modules that should be isolated somehow.  The only clean way to isolate it is to put it in another module as far as I know.

areaDetector is a bit unique in this regard.  I believe the large majority of areaDetector users do not use the applications as "examples", but rather that is the final application that they run.  They copy the application to their marCCD Linux machine, or Pilatus Linux machine and run it there.  They don't integrate it into a larger application, though of course they could, and sophisticated sites like SLAC and Diamond certainly do.

Mark


-----Original Message-----
From: Bruce Hill [mailto:[email protected]]
Sent: Wednesday, May 16, 2012 1:14 AM
To: Mark Rivers
Cc: Williams Jr., Ernest L.
Subject: Re: using areaDetector as a support library only

Hey Mark, I see where Ernest's coming from now.
I like using the consistency checking, but it is a problem
when module's have unnecessary dependencies,
as we then have to create new releases for areaDetector
when we wouldn't otherwise need to.

I call it the module dependency problem, and when I update base,
it causes me to have to release new module versions in 4 different
sets, depending on how many layers of module dependency they have.

It seems to me that I've seen an example somewhere of a
test app being built with it's own configure/RELEASE file one
level down from $TOP.     I'll let you guys know if I find it.

Regards,
- Bruce

On 5/15/2012 8:01 PM, Williams Jr., Ernest L. wrote:
Hi Bruce,
The problem arises when the EPICS make system does consistency checks of the configure/RELEASE files
An IOC App should not have to be locked to a specific version of autosave when using the areaDetector module

If the areaDetector separates the library  app from the IOC test app then that would do the trick :)

Cheers
Ernest

Sent from my iPhone

On May 15, 2012, at 7:43 PM, "Hill, Bruce"<[email protected]>     wrote:

Hi Ernest,
I'm not clear on why autosave, calc, busy, and sscan are
causing a problem for you.   They only appear to be needed
by the areaDetector test apps.   We build areaDetector as a
module, then link it into an IOC just like our other modules.

I haven't tried building it into an IOC that didn't use autosave,
calc, etc, so there may be an issue there.    If so, it looks
like the problem would be prosilicaApp.dbd, which not only
has the areaDetector stuff like "registrar(NDStdArraysRegister),
but also has autosave, calc, busy, etc.     I think that could
be solved by moving all the areaDetector specific dbd lines into
prosilicaSupport.dbd,

One could also comment out the PROD_ lines in the areaDetector
makefiles to avoid building the apps, but reworking the dbd
files may still be needed so you can build without the extra modules.

Regards,
- Bruce

On 05/15/2012 02:54 PM, Mark Rivers wrote:
Hi Ernest,

The next release of areaDetector will be R1-8.  It will keep the same structure as the current release, and should be out soon.  I am making the final tweaks to a driver for the Photonic Sciences Limited detectors.

For the release after that I will break areaDetector into multiple modules.

areaDetector will contain only the code for ADSrc and pluginSrc.  It will not depend on any other EPICS modules besides base and asyn.

Each detector will be in its own module, e.g. ADProsilica or something like that.  My plan was to make ADProsilica build both the library and the example application.  That means its configure/RELEASE would depend on synApps modules like what you show.  You still might not like that, since you would want the ADProsilica module to also be just a library that you can build into your IOC.

I could break each detector into 2 modules:
ADProsilicaLib - just builds a library, does not depend on any other modules except base and asyn
ADProsilicaApp - builds an example application, depends on other synApps modules

The problem with that is that areaDetector would then be broken into 29 modules, since there are currently 14 detectors plus the base code.  That's a lot more work for me, since each needs to be separately packaged and released.  But maybe it's the best way to do it.

I'm also sending this to tech-talk, since I know others have expressed similar desires, and I'd like to get comments.

Mark


From: Ernest L. Williams Jr. [mailto:[email protected]]
Sent: Tuesday, May 15, 2012 4:32 PM
To: Mark Rivers
Cc: Williams Jr., Ernest L.
Subject: using areaDetector as a support library only

Hi Mark,

In an effort to reduce dependencies when preparing a shared module such as areaDetector; how to do this?

Here is what we have now:
SNCSEQ=$(EPICS_MODULES)/seq/$(SEQ_MODULE_VERSION)
AUTOSAVE=$(EPICS_MODULES)/autosave/$(AUTOSAVE_MODULE_VERSION)
ASYN=$(EPICS_MODULES)/asyn/$(ASYN_MODULE_VERSION)
SSCAN=$(EPICS_MODULES)/sscan/$(SSCAN_MODULE_VERSION)
CALC=$(EPICS_MODULES)/calc/$(CALC_MODULE_VERSION)
BUSY=$(EPICS_MODULES)/busy/$(BUSY_MODULE_VERSION)
STD=$(EPICS_MODULES)/std/$(STD_MODULE_VERSION)
MCA=$(EPICS_MODULES)/mca/$(MCA_MODULE_VERSION)


I would like to build areaDetector as a support library that is referenced and linked in by an
IOC application.

This means that I would like to select not to build the IOC parts of areaDetector as they depend on such as autosave.
What is the best way to achieve this?
Seems that every driver creates an App via  "ADApp/commonDriverMakefile"

I only want to include those components necessary for the module library.
We will include the other components along with our IOC Application.
What is the cleanest way to do this?

Cheers,
Ernest

--
Bruce Hill
Member Technical Staff
SLAC National Accelerator Lab
2575 Sand Hill Road M/S 10
Menlo Park, CA  94025



References:
RE: using areaDetector as a support library only Mark Rivers

Navigate by Date:
Prev: Re: using areaDetector as a support library only Ernest L. Williams Jr.
Next: Re: using areaDetector as a support library only Bruce Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: using areaDetector as a support library only Ernest L. Williams Jr.
Next: Re: using areaDetector as a support library only Bruce Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·