140 likes | 274 Views
Disk Layout/Productization Proposal. Ron Rechenmacher and Geoff Savage. Goals. Flexibility - environment variables Organization – EPICS and DOOCS (and Everything) Development Production Distribution Configuration Complete example
E N D
Disk Layout/Productization Proposal Ron Rechenmacher and Geoff Savage
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 Software Productization
“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. Software Productization
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 Software Productization
UPS • Unix Product Support • http://www.fnal.gov/docs/products/ups/ [savage@smtfs2 savage]$ setup epics [savage@smtfs2 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 Software Productization
/p/epics/v1 /p/epics/v2 /p/epics/v3 …/base/configure /ups /extensions/configure /src/alh /edm /ups /ioc/vxWorksIoc/configure /ups /plcIoc/configure /ups /support/genSub/configure /ups /sequencer/configure /ups /ups Makefile Software Productization
Controls System Components Software Productization
/p/epics/v1 /p/epics/v2 /p/epics/v3 base = engine, CA protocol …/base/configure /ups /extensions/configure /src/alh /edm /ups /ioc/vxWorksIoc/configure /ups /plcIoc/configure /ups /support/genSub/configure /ups /sequencer/configure /ups /ups Makefile extensions = CA client applications Each version is tagged in CVS. ioc = user application, CA server support = libraries used in ioc The RELEASE file in the configure directory specifies the locations of external software modules, an example is EPICS base. Software Productization
Installations Development Directory Installation CVS Module cvs checkout Make installs libraries, executables, headers cvs export (no CVS directories) Make? Make Production Directory Configuration Directory ups table file specifies version to use Tar -> Untar cvs checkout (CVS directories) Distribution Directory Configuration CVS Module Software Productization
Development Development Directory Installation CVS Module cvs checkout Make installs libraries, executables, headers Set an environment variable to point to the new location. New Component Software Productization
Decisions and Discoveries • Logging of build configurations? • What scripts are necessary? • How many configuration CVS modules? • What should our Makefiles do? • How to install UPS directories? • Using CVS • Install starting version into cvs with import • Install new version with commit after installing on top of the previous version • 3rd party products Software Productization
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 • 3rd 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 Software Productization
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 Software Productization