Telcon: 2015 05 14
- Todd Gamblin (LLNL)
- Greg Lee (LLNL)
- Mike Collette (LLNL)
- Chris Chambreau (LLNL)
- David Shrader (LANL)
- Matt Legendre (LLNL)
-
The
develop
branch will soon be incompatible with master- This will happen once
features/optional-deps
is merged in. - The branches can still coexist: packages for the next release are installed in
opt/spack/*
, while the current master usesspack/*
. - You'll need to rebuild your packages to get the new features.
- Switching between branches will use different install directories (so you can still get to your old stuff).
- This will happen once
-
Variants and optional dependencies are ready to be tested. They're in the
features/optional-deps
branch.
-
Variants look like this:
variant('mpi', default=False, description='Enable MPI support')
-
You can add an optional dependency based on a variant like this:
depends_on('mpi', when='+mpi')
The package will now build with MPI when you add +mpi. You could install like this:spack install foo+mpi ^mpich
Note that this wouldn't work:spack install foo ^mpich
Spack only understands the implication one way, i.e.+mpi
implies depends_on('mpi'), NOT the other way. Open to the idea of allowing a shortcut for this case (where extra deps are implied by an option) but not sure how much this would complicate the normalization process. -
Conditional dependencies can depend on other things too:
depends_on('mpi', when='@1.2:') # depend on MPI at version 1.2 or higher depends_on('libelf', when='%gcc') # depend on `libelf` when using `gcc` depends_on('hwloc', when='=chaos_5_x86_64_ib') # depend on `hwloc` when running on Linux.
-
You can even chain things:
depends_on('a', when='+option') depends_on('b', when='^a') depends_on('c', when='^b')
Now the package will depend on
a
,b
, andc
when+option
is enabled.
-
As discussed before, variants are checked -- the user can't supply
+mpi
unless the package explicitly declaresmpi
withvariant()
. -
To support optional dependencies, the way Spack understands the DAG of installed software has been updated quite a bit. The installed package no longer requires that Spack's packages match its structure, so packages can evolve and continue to be recognized by
spack find
and other commands.This should fix a lot of frustration with the old versioning scheme.
-
Spack packages are now installed with a full hash
- Made the hash shorter -- it is now a
base32
encodedSHA-1
- Trying to avoid collisions long-term.
- Could use
SHA-256
, but it seems like overkill and makes the hash longer.
- Made the hash shorter -- it is now a
-
spack find -l
looks nicer now:$ spack find -l ==> 41 installed packages. -- chaos_5_x86_64_ib / gcc@4.4.7 -------------------------------- [iq2qnyo] atk@2.14.0 [zsuvuox] lcms@2.6 [thqoo7i] pango@1.36.8 [6pra2ny] boost@1.55.0 [jcgtfyo] libdrm@2.4.33 [7yml3f7] pixman@0.32.6 [l4eifsd] bzip2@1.0.6 [xu3ux6z] libdwarf@20130729 [t647o5q] py-nose@1.3.4 [ry6oxua] cairo@1.14.0 [fd7sr6d] libelf@0.8.13 [q677jl3] py-numpy@1.9.1 [cgwtilt] dbus@1.9.0 [gqymbye] libffi@3.1 [pxahrqq] py-scipy@0.15.0 [yp74y32] dyninst@8.1.2 [njzji7k] libmng@2.0.2 [yrlqbqm] py-setuptools@11.3.1 [f2z3fnj] fontconfig@2.11.1 [dgqpuhv] libpng@1.6.16 [cwbudoh] python@2.7.8 [ktifzd3] freetype@2.5.3 [cto3nol] libtiff@4.0.3 [2w7tlme] qt@5.4.0 [5u2r7z2] gdk-pixbuf@2.31.2 [qfi4o7n] libxcb@1.11 [qrxrivw] readline@6.3 [tkakm4y] glib@2.42.1 [mujta56] libxml2@2.9.2 [qxmoiat] sqlite@3.8.5 [xpqq4mr] gtkplus@2.24.25 [z4s2oqc] llvm@3.0 [j2nu2zs] xcb-proto@1.11 [x2lwfm5] harfbuzz@0.9.37 [q6toy3m] mesa@8.0.5 [n5vvl24] xz@5.2.0 [aor5bc7] icu@54.1 [rj5eza3] ncurses@5.9 [7itr3l2] zlib@1.2.8 [i2m6hic] jpeg@9a [nqnmzrb] openssl@1.0.1h
-
YAML configuration files still in the works.
-
Fix for
setup-env.sh
from Malcolm Cook
- Collette wants:
- Compiler Flags
- log files
- Matt volunteers to help with some 0.9 stuff.