| 1 | = Design |
| 2 | |
| 3 | == Proposal for CMT2. |
| 4 | |
| 5 | (2011/12/13) |
| 6 | |
| 7 | Several developments and studies have taken place around the issue related with Configuration & Build Tools |
| 8 | * Work by Marco et al & CERN around the Gaudi Framework (including the new framework) |
| 9 | * Work by Sébastien around Mana (Atlas) + WAF |
| 10 | * Work by Christian around a CMT-like layer on top of CMake |
| 11 | * Optimization developments for CMT itself, in the direction of a project build, and reducing the internal overhead factors during the CMT-based build. |
| 12 | |
| 13 | It’s time now, considering the long term schedules (mainly considering the long shut down of LHC) to decide on a transition phase for this project: stopping the R&D phase and entering the development phase. |
| 14 | |
| 15 | So far, my vision of the possible scenarii is as follows: |
| 16 | 1. Continuation of the optmizations for CMT until the native CMT build reaches a level of performance equivalent to (or close to) what can be obtained ‘manually’ by using CMake or Waf |
| 17 | 1. Developing a completely new tool. |
| 18 | |
| 19 | === General comments: |
| 20 | A priori, scenario 2 is needed in any case, since several important requirements (wide portability, support of IDEs) will anyway be expected, while cannot be obtained but with a very large development team. Moreover, those requirements are much better realized if based on an external toolkit for reason of maintenance and future evolutions. |
| 21 | |
| 22 | |
| 23 | === Comments on scenario 1 |
| 24 | This is appropriate only if this is achieved on a relatively short planning (order of 2-3 months) |
| 25 | |
| 26 | === Comments and issues on scenario 2 |
| 27 | The requirements for such a development should consider |
| 28 | * The conclusions of the configuration review done in Atlas |
| 29 | * The current list of candidate tool (CMake, WAF) |
| 30 | |
| 31 | One proposed architecture for the new tool should permit developers to: |
| 32 | * Select (or design) a declarative language for the configuration parameters |
| 33 | * Select an architecture of packages/projects for the software base supported by the tool |
| 34 | * Implement a set of utilities based on this language so as to: |
| 35 | * Let users specify configuration parameters for packages/projects/use cases |
| 36 | * Interactively query the configuration (optionally with a GUI?) |
| 37 | * Deduce from the set on specified parameters the operational parameters needed to build the software, test it, deploy it, configure the run time environment |
| 38 | |
| 39 | The architecture should be implemented onto a well adopted tool kit offering: |
| 40 | * High level of performance in the build process |
| 41 | * High level of portability across systems/IDEs |
| 42 | * Programming flexibility |
| 43 | * Good level of confidence on its future |
| 44 | |
| 45 | === Comments |
| 46 | * So far, the candidates for implementation are CMake and WAF |
| 47 | |
| 48 | === Proposed schedule: |
| 49 | * Organize a decision meeting mid January at CERN |
| 50 | |
| 51 | |