Disk Layout/Productization Proposal Ron Rechenmacher and Geoff Savage
9 Apr 2007Software Productization2 Goals Flexibility - environment variables Organization – EPICS and DOOCS (and Everything) –Development –Production –Distribution –Configuration –Complete example Methodology - a set or system of methods, principles, and rules for regulating a given discipline, as in the arts or sciences –CVS –UPS –Scripts –make –Native (EPICS and DOOCS) build systems
9 Apr 2007Software Productization3 “Epics will be built the Fermi way - ie no hard coded paths.” Use environment variables set via UPS in EPICS and DOOCS build systems to locate components.
9 Apr 2007Software Productization4 Environment Variables “A set of dynamic values that can affect the way running processes will behave on a computer” - Wikipedia –In our case we want to change locations of components Example: –Change header in EPICS base for doocs2epics –Edit configure/RELEASE –What if change in EPICS base for all components? –How do we trigger the rebuild of all components? Debated EPICS issue – disagreement –Some flexibility exists without Environment Variables (flexibility has value) –Many years CD/elsewhere experience –Basic UNIX (along with symlinks) Similar to logicals from VMS; should not be too surprising
9 Apr 2007Software Productization5 UPS Unix Product Support savage]$ setup epics savage]$ printenv | grep EPICS EPICS_DIR=/p/epics/v3_14_8_f2 EPICS_LIB_DIR=/p/epics/v3_14_8_f2/lib/linux-x86 EPICS_HOST_ARCH=linux-x86 SETUP_EPICS=epics v3_14_8_f2 -f Linux -z /p
9 Apr 2007Software Productization6 …/base/configure /ups /extensions/configure /src/alh /edm /ups /support/genSub/configure /ups /sequencer/configure /ups Makefile …/vxWorksIoc/configure /ups /plcIoc/configure /ups Makefile /p/epics/v1 /p/epics/v2 /p/epics/v3 /p/epics_iocs/v1 /p/epics_iocs/v2 /p/epics_iocs/v3 In cvs epics/epics In cvs epics/epics_ioc
9 Apr 2007Software Productization7 Controls System Components EPICSDOOCS Contents base Serverlib, Clientlib, ENS Engine, Protocol supportSupport libs Sequencer, VME access, field bus, … iocServers Applications extensionsClients Display manager Configuration vxworks ConfigurationDifference: vxworks
9 Apr 2007Software Productization8 Doocs/Linux/SunOS_compat /build_tools /clients/cmdline /ddd /rpc_util /save_restore /doc /ens /iid /libs/ lib /clientlib /dddlib /fsmlib /serverlib /servers/bpm /ip177timer /multiknob /simcon Makefile /ups Doocs_ilcta/ddd_panels /eq_conf driver stuff vhdl interface fieldbus libraries Display Sequencer Displays server config
9 Apr 2007Software Productization9 …/base/configure /ups /extensions/configure /src/alh /edm /ups /support/genSub/configure /ups /sequencer/configure /ups Makefile …/iocs… /p/epics/v1 /p/epics/v2 /p/epics/v3 The RELEASE file in the configure directory specifies the locations of external software modules, an example is EPICS base. Each version is tagged in CVS. extensions = CA client applications ioc = user application, CA server support = libraries used in ioc base = engine, CA protocol
9 Apr 2007Software Productization10 Installations Installation CVS Module Development Directory Make installs libraries, executables, headers Tar -> Untar Production Directory Distribution Directory cvs export (no CVS directories) cvs checkout (CVS directories) Configuration CVS Module Configuration Directory ups table file specifies version to use cvs checkout Make Make?
9 Apr 2007Software Productization11 Development Installation CVS Module Development Directory Make installs libraries, executables, headers cvs checkout New Component Set an environment variable to point to the new location.
9 Apr 2007Software Productization12 Decisions and Discoveries Logging of build configurations –Makefile in ups directory (not tried yet) What scripts are necessary? –Epics_hard_coded_path.sh (not coded yet) –Ups_dir_init.sh (not coded yet) How many configuration CVS modules? –One for each area –Example: a0/server module What should our Makefiles do? –Make help –Make local_install –Make prod_install –Note: Config is separate
9 Apr 2007Software Productization13 Decisions and Discoveries How to install UPS directories? –Script needed Using CVS –Install starting version into cvs with import Cvs import –m’initial’ epics/ioc/plc INITIAL vX_Y other epics/epics/extensions/…. –Install new version with commit after installing on top of the previous version Cvs ci –m’comment’ –Cvs tag vs cvs rtag --- use cvs tag. 3rd party products –???
9 Apr 2007Software Productization14 Other Technical Issues (and non-issues) Host architecture isn’t enough –Unless always build on “oldest” distribution –Compatibility libraries Dependency conflicts –Each release version will not have all product versions 3 rd party libraries and products: –National Instruments (GPIB) (LD_LIBRARY_PATH *) Note difference from labview product: non-licensed (free) –matlab interface - (MATLABPATH *) –labview interface (?) * Does not have to be installed into installation directory – non-issue
9 Apr 2007Software Productization15 Time Marches On … Develop and install –Documentation, makefiles, UPS files, Scripts –For EPICS: perl script “Estimate of 80 hours of an FTE” –One meeting, 12 people * 0.25 hr = 3 hrs –Ron and Geoff meeting * 6 hrs = 12 hrs And some coffee and doughnuts –Ron for 20 hrs –This talk - 6 hrs and counting –This meeting 10 people * 0.5 hr = 5 hr
9 Apr 2007Software Productization16 New Discoveries “setup” seems to be working Need system startup –Component startup Doocs watchdog server suggested Vxworks_boot as install area –Same as /p except under /home/vxworks_boot /home/vxworks/p/kekbpm