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.
- You must be able to write to the Spack installation that you set up.
- 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
. - You are encouraged to chain upstream Spack installations to your own installation to avoid unnecessary building, installation, and wasted disk space.
- For developers of packages that depend on SciSoft software, you should clone the Fermilab fork of Spack
- Invoke
source <your spack installation>/share/spack/setup-env.sh
. - Each package to be developed must have:
- An accessible Spack recipe. To verify this, you should see the package listed when typing
spack list <package name>
. - A
develop
version (assumes an accessible Spack recipe). To verify this, you should seedevelop
listed as a supported version when typingspack info <package name>
.
- An accessible Spack recipe. To verify this, you should see the package listed when typing
- 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
- Installation (do this first)
- Initialization (do this second)
- Creating a project (skip if you do not need a new project)
- Project selection and environment activation
- Building a project
- Zapping a project
- Removing a project
- Helper commands
As of now, MPD can only support the development of CMake-based packages. There are currently no plans to support other build systems.