FNALssi / spack-mpd

0 stars 4 forks source link

MPD

MPD (for multi-package development) is a Spack extension that allows users to develop CMake-based packages in concert with Spack-provided external software. It is not the same as spack develop, which Spack provides to support development of any Spack package. Although spack develop makes it easy to propagate development changes to a full Spack installations, spack develop does not lend itself well to the iterative development Fermilab IF users usually practice (tweak source code, build, test, then repeat). The purpose of MPD is to satisfy the iterative development needs of our users and developers.

Prerequisites

  1. You must be able to write to the Spack installation that you set up.
    1. For developers of packages that depend on SciSoft software, you should clone the Fermilab fork of Spack git clone https://github.com/FNALssi/spack.git.
    2. You are encouraged to chain upstream Spack installations to your own installation to avoid unnecessary building, installation, and wasted disk space.
  2. Invoke source <your spack installation>/share/spack/setup-env.sh.
  3. Each package to be developed must have:
    1. An accessible Spack recipe. To verify this, you should see the package listed when typing spack list <package name>.
    2. A develop version (assumes an accessible Spack recipe). To verify this, you should see develop listed as a supported version when typing spack info <package name>.
  4. Developers of SciSoft-provided software (art, larreco, nusimdata, etc.) should make sure they clone the Fermilab-managed Spack recipes:
    $ cd <some dir>
    $ git clone https://github.com/FNALssi/fnal_art.git
    $ git clone https://github.com/NuSoftHEP/nusofthep-spack-recipes.git
    $ git clone https://github.com/LArSoft/larsoft-spack-recipes.git
    $ spack repo add fnal_art
    $ spack repo add nusofthep-spack-recipes
    $ spack repo add larsoft-spack-recipes

Using MPD

  1. Installation (do this first)
  2. Initialization (do this second)
  3. Creating a project (skip if you do not need a new project)
  4. Project selection and environment activation
  5. Building a project
  6. Zapping a project
  7. Removing a project
  8. Helper commands
    1. Cloning repositories to develop
    2. Listing projects

Limitations

As of now, MPD can only support the development of CMake-based packages. There are currently no plans to support other build systems.