Overview of (package-level) requirements to a build tool on example of CMT
Projects involved: tdaq, dqm-common, tdaq-common and LCGCMT, used in the listed order. TDAQ projects are located (along with many other projects used at P1) in /afs/cern.ch/atlas/project/tdaq/inst.
Policy packages
The most low-level package, adding some TDAQ-specific value to default
CMT policy is
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq-common/tdaq-common-01-18-04/TDAQCPolicy/TDAQCPolicyInt/cmt/requirements
and a number of Make fragments in cmt/fragments/
In short, this policy allows for a developer to
> source setup.sh
> gmake && gmake inst && gmake check && gmake rpm
and get the build in the installed area (see different install_ patterns), execute unit check (including compilation against freshly built libraries) and build exportable RPMs (latter is used for the global release build, not from user's areas). Note that installation policy and patterns differ from the
CMT ones. A local shell environment is also cooked here, allowing run apps from command line (but this is not used in runtime), favoring the local working area for the release.
Another package used by all other packages is TDAQCExternal which interfaces to LCG externals:
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq-common/tdaq-common-01-18-04/TDAQCExternal/cmt/requirements
A simplest
CMT package using these policies is
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq-common/tdaq-common-01-18-04/ers/cmt/requirements
Other use cases to be covered later:
generation of C++ and java from IDL and use in libraries and apps
Provider package (also includes example of a specific configuration for ppc-rtems-rce405 platform):
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/omni/cmt/fragments/
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/omni/cmt/requirements
Client package (it also includes example of a configuration specific to :
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/ipc/cmt/requirements
java build & install
generation of C++ and Java from custom schema (XML)
Another client package:
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/mrs/cmt/requirements
- declares some macro sw.repository.* variables which are used by "release" package to build a release description.
- defines what to be built depending on platform (CMTCONFIG)
- calls tools provided by other packages:
- as direct "action" is_generator.sh
- as a document "generate-config"
- includes ../src/mrs.idl as part of c++ and java libraries, using "language" provided by omni package (above)
The generated code is used later in java and c++ targets.
The package providing generate-config fragment used here to other packages:
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/genconfig/cmt/requirements
Integration with Qt and ROOT
This package defines code generation from Qt (ui, moc files) and from ROOT header by running cint, then all code is used in the libraries:
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/ohpplugins/cmt/requirements
build of third-party libraries coming with Makefile
This package is taken as is from Intel and it is built using original Makefile (with some tuning from CMTCONFIG) and then integrated into tdaq installation:
action build { cd ..; gmake DEBUG_SUFFIX= target= runtime=${runtime} arch=${build_arch} ${build_target}; }
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/tbb/cmt/requirements
cross-compilation for PowerPC
build of kernel drivers
Just calls a standard Makefile with some options
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/ROSRCDdrivers/cmt/requirements
generation of s/w description in top-level package
Each package provides some meta-information about components it exposes. This information is gathered at the end of the build by DAQRelease package, and XML description of the whole s/w is generated.
https://atlas-tdaq-sw.web.cern.ch/atlas-tdaq-sw/releases/tdaq/tdaq-04-00-01/DAQRelease/cmt/requirements
This package also defines additional pattern (macros) which is used by RPM builder fragment when relocatable RPM package is built.