User:Kutschke/Mu2eEnvironments

From Mu2eWiki
< User:Kutschke
Revision as of 20:40, 7 August 2024 by Kutschke (talk | contribs) (Created page with "This note provides the big picture for the transition of Mu2e Environment management and build management that started in the spring of 2024 and is ongoing. The target audienc...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This note provides the big picture for the transition of Mu2e Environment management and build management that started in the spring of 2024 and is ongoing. The target audience is people who are new to Mu2e software (or have been away from it for a while) but who are experienced with the concepts of environment and build management.

Until recently Mu2e used a Fermilab developed system called UPS for management of external software products such as g++, art, root, geant4 etc. When we build Mu2e Offline we use about 60 external software products. Most of the UPS products were curated by CSAID, built and packaged for distribution as tar.bz2 files. Here curated means that CSAID ensured that

  1. the set of products chosen was internally consistent (ie ensure that version A of product 1 is known to work with version B of product 2; if products 1 and 2 both depend on product 3, choose a version of product 3 that is known to work with both.)
  2. all products were compiled and linked with the same compiler and similar enough compiler options
  3. the build options for each product were selected appropriately. For example xrootd can be built with support for authentication by proxies, tokens, both or neither. And root can be built with and without xrootd support.

Mu2e created a software product named Muse to manage the Mu2e software environment by setting up selected versions of UPS products. It's a thin layer that collects commonly used sequences of commands into a single muse command.

Muse delegates building code to scons, which Mu2e has used from it's early days.

When it was time to upgrade to a new version of art, we

  1. unwound a curated set of tar files onto /cvmfs/mu2e.opensciencegrid.org/artexternals/
  2. built and tested a few Mu2e software repositories using the new products and installed them into /cvmfs/mu2e.opensciencegrid.org/artexternals/ (BTrk, KinKal, artdaq_core_mu2e).
  3. Created a new Muse envset to chose the new set of products
  4. Tested building and running Offline and some other repositories against the products in the new envset. Update our code as necessary.
  5. At an appropriate time update the default envset to the new one.

Users