Skip to content
Todd Gamblin edited this page May 14, 2015 · 3 revisions

Spack Telcon: May 14, 2015

Participants

  • Todd Gamblin (LLNL)
  • Greg Lee (LLNL)
  • Mike Collette (LLNL)
  • Chris Chambreau (LLNL)
  • David Shrader (LANL)
  • Matt Legendre (LLNL)

Agenda

News

  1. 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 uses spack/*.
    • 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).
  2. 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, and c when +option is enabled.

  1. As discussed before, variants are checked -- the user can't supply +mpi unless the package explicitly declares mpi with variant().

  2. 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.

  3. Spack packages are now installed with a full hash

    • Made the hash shorter -- it is now a base32 encoded SHA-1
    • Trying to avoid collisions long-term.
    • Could use SHA-256, but it seems like overkill and makes the hash longer.
  4. 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     
    
  5. YAML configuration files still in the works.

Contributions

General questions and discussion

  • Collette wants:
    • Compiler Flags
    • log files
  • Matt volunteers to help with some 0.9 stuff.
Clone this wiki locally