On Tue, Mar 31, 2020 at 12:32 PM Chris Turner <
chtur...@gmail.com> wrote:
>
> Hi Ewan,
>
> Thanks for the info. I'll go take a look at your config.
>
> I was able to partially answer my question, but have a follow up. I can see that using packages.yaml, we can specify variants for packages anytime that package is used--essentially changing the defaults. (
https://spack-tutorial.readthedocs.io/en/latest/tutorial_configuration.html#variant-preferences) However, sticking with my original example, OpenMPI has a number of dependencies any of which can get updated at any given time. Since Spack picks the latest versions, this would necessitate Spack creating an entirely new DAG/hash if, when concretizing, it sees newer versions of one or more dependencies. I think this could create some instability in the software stack. Is it possible to specify a particular hash in package.yaml thereby "freezing" the DAG anytime I pick OpenMPI%compiler?
>
> Ewan, is your setup immune to this type of issue? If so, how?
Spack specifies software setups declaratively. Similar to containers,
this means that it's not easily possible to update one piece and
expect the remainder to remain self-consistent. The usual workflow is
to rebuild the whole stack when something needs to be updated. The
beauty of Spack is that this is relatively risk-free and pain-free.
You can specify (lock down) individual package versions as described
by Ewan Roche, and thus reduce the work that needs to be done during a
global rebuild. However, if you then rebuild only individual packages,
you risk inconsistencies the way to describe – I always rebuild the
full stack.
-erik
--
Erik Schnetter <
schn...@gmail.com>
http://www.perimeterinstitute.ca/personal/eschnetter/