Skip to content

Configuration reference

Hand-written, not generated

Neither Zensical nor the wider MkDocs ecosystem currently has a plugin that generates documentation from Spack YAML files — mkdocstrings (Zensical's docstring-autodoc integration) only covers Python source, not YAML. This page is written and kept up to date by hand; if it drifts from the actual files, the files are authoritative.

What each YAML file across dune-spack-config, dune-spack-envs, and dune-release-configs actually controls — see Repositories for what the repos themselves are for.

dune-spack-config

Core Spack configuration, included by environments rather than used standalone.

File Controls
config.yaml General Spack settings — install tree root and path padding.
packages.yaml Global package preferences — currently just target architecture (x86_64_v3).
repos.yaml Which package repositories Spack pulls recipes from (see table below).
included_yaml/packages-dune.yaml DUNE package version pins, keyed by short package names (dune-ana, dune-core, ...). Actually referenced by dune-spack-envs.
included_yaml/specs-dune.yaml The dune_specs spec list built from those same packages. Actually referenced by dune-spack-envs (specs: - $dune_specs).
included_yaml/dune-packages.yaml Identical content to packages-dune.yaml above — appears to be an unreferenced duplicate/older copy.
included_yaml/dune-specs.yaml Same package list as specs-dune.yaml, but under a specs_dune key (not dune_specs) — not the key dune-spack-envs actually pulls in. Also appears unreferenced.

repos.yaml package-repo pins:

Name Source Branch
dune DUNE/dune_spack spack-v1.0
builtin FNALssi/spack-packages fnal-v2025.11
art FNALssi/fnal_art develop
larsoft LArSoft/larsoft-spack-recipes main
nusoft NuSoftHEP/nusofthep-spack-recipes spack-v1.0
phlex Framework-R-D/phlex-spack-recipes main
artdaq art-daq/artdaq-spack artdaq/Spack1.1
wirecell gartung/wire-cell-spack master
sbn gartung/sbn-spack spack-v1.0
scd fnal-fife/scd_recipes master

For what DUNE builds on top of the phlex recipes, see the companion DUNE Phlex Project site.

dune-spack-envs

Two Spack environment manifests (spack.yaml), each installable on its own with spack env activate — these are what you actually build from, as opposed to the configuration they include.

dune-development/spack.yaml

The general DUNE development environment. Includes external release-configs pinned by tag (gcc-12 toolchain, LArSoft larsoft-10.11.01, NuSoftHEP nusofthep-3.17.01, art art-3.14.04, FIFE 2.8.0.1), each with a sha256 checksum, plus the two locally-referenced DUNE files above (packages-dune.yaml, specs-dune.yaml). Uses concretizer: unify: true (single consistent dependency resolution across the whole environment).

dune-workflow/spack.yaml

A fully version-pinned LArSoft/art stack for workflow/production use — no external includes, every package version and build option (compiler, build_type, cxxstd=17, generator=ninja, variants like ~davix) spelled out directly in the file. This is the more concrete, "exactly what gets built" counterpart to dune-development's include-based approach.

dune-release-configs

Release-scoped configuration and publishing tooling — distinct from dune-spack-envs above, which covers day-to-day development/workflow, not tagged releases.

File Controls
dune-release.yaml The release environment definition — includes DUNE, LArSoft, NuSoftHEP, art, and FIFE configs each pinned to a specific git tag (not branch), e.g. dunesw-10.22.00d01-justin-01.06.04. Currently marked config: deprecated: true in the file itself.
included_yaml/dune-packages.yaml DUNE package version pins for this release, keyed by full package names (duneana, dunecore, ...) — a newer/higher version set than dune-spack-config's copy (e.g. dunesw @=10.22.00d01 vs. @=10.11.01d00).
included_yaml/dune-specs.yaml The matching specs_dune spec list, also including a few extra packages not in dune-spack-config's version (gfal2-util, r-m-dd-config, py-merge-utils, snakemake).
bin/add-dune-checksums.sh Adds version pins + checksums for a DUNE package (dunesw, duneanaobj, dunedaqdataformats, dunedetdataformats, dunepdlegacy) into the release recipes.
bin/publish-dune-environment.sh Publishes a built Spack environment to CVMFS (/cvmfs/dune.opensciencegrid.org/spack/...) from a Jenkins build.

Open question

dune-spack-config's included_yaml/dune-packages.yaml and dune-specs.yaml look like stale duplicates of packages-dune.yaml and specs-dune.yaml — same content, different filename/key, and not actually referenced by either dune-spack-envs manifest. Worth confirming with the repo maintainer whether they're safe to remove, rather than guessing here.