90 likes | 213 Views
Separate distribution of the analysis code (and more). P. Hristov 19/03/2014. Reminder. After a lot of discussions in PWGs (and outside) Jan Fiete presented the proposal on 10/02/2014 Motivation Some parts of AliRoot change more frequently than others
E N D
Separate distribution of the analysis code (and more) P. Hristov 19/03/2014
Reminder • After a lot of discussions in PWGs (and outside) Jan Fietepresented the proposal on 10/02/2014 • Motivation • Some parts of AliRoot change more frequently than others • AN tag often only for analysis code • Proposal • Split AliRootinto two parts • PWG = (PWG, PWGCF, PWGDQ, …): 9 folders in total = 0.3 GB • CORE = STEER, subdetectors, OCDB, OADB, ANALYSIS, etc.: i.e. everything else = 0.9 GB • Separate repositories • Separate tagging • CORE for example monthly, or on request • PWG twice weekly (like AN tags now)
Reminder: Tagging • Separate tagging, for example • CORE for example monthly, or on request • PWG twice weekly (like AN tags now) GEANT3 ROOT COREv1 COREv2 PWGv1 PWGv2 PWGv3 PWGv4 PWGv5
Reminder: Some Comments • Advantages • Stable CORE part • Regular PWG tags lead to faster build & smaller archive • Committers to PWG don't need to update CORE part on each commit • Implications for users • Need to download one package more • Detector developers may not need PWG package • Need to build one package more • May build into same directory, no change in includes, library path required • AliRoot download script can do this transparently • Implications for train operators • Selection of PWG tag instead of AliRoot tag, dependencies automatic • Decision: split the PWG code in a separate package after QM
Discussion • The main question is how we keep consistency between the packages • Other experiments use Code Management Tools: quite heavy • The versioning can be improved and the dependencies between the packages described in a way similar to what RPM and deb do • The solution should be extensible to the external packages (Geant3, Geant4, BOOST, CGAL, FASTJET, etc.) • We can use the FairRoot way of distribution
FairRoot distribution method • “Meta-repository” for the external packages + compilation macro (configure.sh). Example: dec13 release (or FairSoft from github) • Git 1.8.4 • HepMC 2.06.09 • Millepede-II V04-00-01 • ØMQ 3.2.24 • CMAKE 2.8.11.2 • BOOST 1.54.0 • ROOT 5.34.13 • Geant 4 9.6.2 • Geant 3.21 v1-15 • Geant4_VMC v2-14a • VGM v3-06 • PYTHIA 8 180 • GSL 1.15 • GTEST 1.7.0 • PLUTO 5.37 • PYTHIA 6 6416 • Core package (FairRoot) • Experiment specific code, i.e. CbmRoot
Proposal for a new AliRoot distribution method • Meta-repository for the external packages + installation script • Links to the needed versions of the original distributions: repositories, tarballs, etc. • ROOT • Generators • Transport packages & VMC • Additional software • Patches for the original distributions • Distributions, not available in original form (i.e. DPMJET) • Interfaces to packages (i.e. THijing) • The versions in each release will be decided on a dedicated offline meeting taking into account the requests from the PWGs • Core package (STEER, detectors, ANALYSIS, etc.) • Analysis package (PWG, PWGXX)
Benefits • Clear set of versions for each release of external packages, core and analysis • Easy introduction of new external code • Clear set of patches (now they are on the build server, but rarely people take them) • Low/high frequency of changes => low/high release frequency • Smaller distribution size for the frequently updated code (PWG analysis) • Easier installation • Better access control and notification
Plan • Analysis packages (2-3 weeks) • Split gitrepositories • Split cmakefiles. Profit to implement the “native CMake build”, if not yet done • Adapt build server • Adapt train system • Adapt MonALISAscripts • Adapt AliRoot download scripts • Adapt documentation • External packages (2-3 weeks) • Prepare list of external packages with their versions, interfaces, patches, etc. • Create the meta-repository and the compilation script • Extensive tests on different platforms • Adapt the build system • Modify the versioning in CORE and introduce the requirements for the external packages • Exclude the existing external packages from CORE • Documentation • CORE (1-2 weeks) • Modifications in CMake build system and the servers