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

Subject: Re: How to write modules?
From: Tim Mooney <[email protected]>
To: Zhichu Chen <[email protected]>
Cc: [email protected]
Date: Tue, 10 Feb 2009 09:02:20 -0600
makeBaseApp.pl makes a module.  All it lacks is a documentation
directory and a directory for display files, which we normally add
as <module>/documentation, and <module>/<module>App/op/adl (or edl, etc.)

There is another difference between the product of makeBaseApp.pl and
the modules we've made from it, and that is a distinction between
files installed by the module for its own use (i.e., for use by its
iocBoot directory), and files installed for export to other modules.
We've settled into a pattern: <module>Support.dbd is for export, and
contains only stuff made by the module, while <module>.dbd is for
internal use, and so includes stuff from base, etc., that is needed to
boot an ioc.  Library files intended for external use are normally named
<module>.lib, if there's only one such library, but this doesn't matter
as much, because libraries are the same whether they're used internally
or exported.

Historically, we've viewed a module's iocBoot directory as an example,
and a place to test the module.  This is a good thing, but if the module
imports from other modules solely to implement the iocBoot directory,
you can end up with module-version interdependencies that are dominated
by the needs of iocBoot directories.

Your other question, about RELEASE files:  I think any string defined in
a RELEASE files is viewed by the build system as a resource from which
lib and dbd files might be gotten.  Thus, you don't want two modules
making things with identical names.

Zhichu Chen wrote:
Hi,

Just curiosity, is there any manuals that I can follow? I have written a
device support and I would love to make a module version so that
maintenance would be easier for me. I can't find any clue in the
AppDevGuide, so I checked the snc/seq module and now I'm trying
to follow it.

May some of you guys explain the basic steps for me? Like is there
a makeModuleApp.pl script to create a template (I don't want to write
all those Makefile files and CONFIG files), how should I construct
the directory structure tree, how to make the application find it (I
find that I can just add "SNCSEQ=/path/to/seq" to the RELEASE
file to make the app know where to find the lib files, why? Can I
use a random name there like "MYLIB"?).



--
Tim Mooney ([email protected]) (630)252-5417
Beamline Controls & Data Acquisition Group
Advanced Photon Source, Argonne National Lab.

Replies:
Re: How to write modules? Zhichu Chen
References:
How to write modules? Zhichu Chen

Navigate by Date:
Prev: Re: How to write modules? Ron Sluiter
Next: Re: call to "assert (capacity != 0)" failed Andrew Johnson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: How to write modules? Ron Sluiter
Next: Re: How to write modules? Zhichu Chen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·