Title: The packaging of glastsim with CMT
1The packaging of glastsim(with CMT)
- This is an update from a talk I gave 2 weeks
ago - (Even more) Help and suggestions from Traudl and
Sawyer - New emphasis on adoption of CMT
2Objectives
- Reorganize the current glastsim code into
packages - Make them shared libraries
- Define a package-oriented development environment
that generates MSVC project files and unix make
files from a common description
3Example disk structure
root has package name
Version name root for clients
Documentation
Public header files
? ? ?
contains requirements file All build files
Source files
4Before simul_recon root directory
CLHEP/ configure
gheisha/ nt.out CVS/
configure.bat gismo/
ntmake.bat Intermediate/ configure.in
glastmedia/ prodchain.sh Makefile
.app console.dep glastsim.xml
prodfilter.sh Makefile.common.in
console.dsp glastsoftware.mdl
prodrun.sh Makefile.in console.mak
glastsoftware.prc randseeds.sh Makefile.
lib.in control/
glastsoftware.prp readout/ NT_test.mak
cygwin/ graphics/
reconstruction/ PEGS4/ data/
gsim.exe.core
simul_recon.dsw README doc/
gui.dsp
simul_recon.ncb Release/
egcs-1.1.aix.out gui.plg
simul_recon.opt analysis/
egcs-1.1.linux.out hpux.out
simul_recon.shared ao_glastsim.xml
egcs-1.1.osf4.out instrument/
source_library.xml application/
egcs-1.1.solaris.out insure.out
test.bat arve/ egs/
level2/ user_tuple.xml batch/
expat/ makedepend
wingui/ config/ facilities/
merit/ config.h flux/
merit.dsw config.h.in
geometry/ motifgui/
5After packages root
analysis/ geometry/ glastmedia/
readout/ application/ geomrep/
graphics/ reconstruction/ data/
gismo/ instrument/
xml/ facilities/ glast_settings/
level2/ flux/ glastflux/ merit/
- Root directory has only package roots
- Special package glast_settings has over-all
build instructions
6Some changes
- gismo
- Contains egs, gheisha, and PEGS4
- graphics
- Contains windows, motif, batch, control
- facilities
- New xml split off
7The uses tree (partial)
application
reconstruction
glastflux
data
level2
flux
readout
instrument
analysis
geometry
8A lot to do
- reconstruction and instrument still need
splitting apart - application is top-heavy
- need to rethink user interface stuff
9Status ( 6 Jan 2000)
- Glastsim (gui and console versions) and merit
both function as before - Unix make works with cygwin (just console)
- CMT needs GLAST-specific tools and documentation
10Continuation 20 Jan 2000
- Some To-dos still to do!
- Set of packages (v1) almost ready to checkout
- Many of Traudls suggestions implemented
- Interface classes weaned
- Javadoc comments set for several packages (and
tested with Doxygen). - see http//glast.phys.washington.edu/burnett/gism
o/html/ - Extensive development of Visual Studio fragments
11The package model a tree
server
server
server
server
uses, or depends on
Joe package
provides services for
client
client
client
client
12So what does uses mean?
- Version modifier
- Compile time dependencies
- include paths
- preprocessor defines
- Link time dependencies
- Library paths, lib names
- (so package must create its binaries, or
constituents ) - Execution time dependencies
- Shareable paths, names
- Environment variable definitions, e.g., to data
files - Alias names
13About CMT (Configuration Management Tool)
- Special folder mgr contains two primary files
- requirements complete description of interface
- Makefile standard user-added targets
- Executable cmt a parser of this file allowing
- query
- building other files
- make
- DevStudio
- any document
- References
- http//www.lal.in2p3.fr/SI/CMT/CMTDoc.html
- http//lhcb.cern.ch/computing/Support/html/cmt.htm
14Anatomy of a requirements file
package geomrep use geometry v0 use graphics
v0 macro geomrep_linkopts "-L
GEOMREPROOT/CMTCONFIG -lgeomrep"\
VisualC "geomrep.lib" private library geomrep
.cxx ../geomrep/.h application testgeom
-windows ../test/testgeom.cxx\ GRAPHICSROOT/w
indows/wingui.rc
Define a make macrowill be used by client links
Two constituentsa library and an executable
15CMT query example
- cmt show uses
- use geometry v0
- use glast_settings v0
- use CLHEP v1r4
- use graphics v0
- use glast_settings v0
- use CLHEP v1r4
-
- Selection
- use CMT v1r3 /packages
- use CLHEP v1r4 /packages/
- use glast_settings v0 /packages/
- use graphics v0 /packages/
- use geometry v0 /packages/
16Creating a Visual Studio project
17Creating unix make files
han/packages/geomrep/v0/mgr36make /packages/CM
T/v1r3/src/Makefile.header61 cmt_path.make No
such file or directory /packages/CMT/v1r3/src/Make
file.header66 setup.make No such file or
directory /packages/CMT/v1r3/src/constituents.make
5 constituents.make No such file or
directory /packages/CMT/v1r3/mgr/cmt build
make_setup -tagi586 setup.make42 i586.make No
such file or directory constituents.make9
geomrep.make No such file or directory constituen
ts.make15 testgeom.make No such file or
directory Now rebuilding testgeom.make Application
testgeom Now rebuilding geomrep.make Library
geomrep Now rebuilding i586.make geomrep.make35
geomrep_dependencies.make No such file or
directory testgeom.make25 testgeom_dependencies.
make No such file or directory Now rebuilding
testgeom_dependencies.make Now rebuilding
geomrep_dependencies.make echo "" i586.make
ok geomrep library ok geomrep ok cd ../i586/
g -o testgeom.exe.new ../i586/testgeom.o -L
/packages/geomrep/v0/i586 -lgeomrep -L
/packages//geometry/ v0/i586 -lgeometry -L
/packages//graphics/v0/i586 -lgraphics -L
/packages//CLHEP/v1r4/CLHEP -lCLHEP mv -f
testgeom. exe.new testgeom.exe
18The result
19Status and Plans
- Packages are currently in cvs under cmt
- Plan to move to packages for development release,
in next few days - Will include a setup script that now exists
- Implements sharable libraries (dlls)
- BUT
- Release strategy not clear
- Unix not ready
20Unix plans
- cygwin success is a proof of principle
- No special modification!
- Linux does not yet work (cursory look)
- Surprising, since VC and cygwin worked
immediately - Need someone to
- Understand principles
- Formulate implement policies