From 2264e30d99d8b9fbdec8fa69b594e53d8ced15a1 Mon Sep 17 00:00:00 2001
From: "Adam J. Stewart" <ajstewart426@gmail.com>
Date: Mon, 28 Oct 2019 20:27:54 -0500
Subject: [PATCH] Update URL parsing regexes and tests (#13411)

* Update URL parsing regexes and tests

* Get rid of no longer used README

* Merge py-udunits and py-cf-units

* netcdf -> netcdf-c

* setup_environment -> setup_*_environment

* Fix doc tests

* Few last minute fixes

* Simplify prefix removal copypasta
---
 lib/spack/docs/getting_started.rst            |   2 +-
 lib/spack/spack/cmd/url.py                    |  41 ++++--
 lib/spack/spack/test/url_parse.py             | 138 ++++++++++++++----
 lib/spack/spack/url.py                        |  76 +++++++---
 .../repos/builtin/packages/adios/package.py   |   2 +-
 .../repos/builtin/packages/adios2/package.py  |   4 +-
 .../repos/builtin/packages/adlbx/package.py   |  10 +-
 .../repos/builtin/packages/alglib/package.py  |   3 -
 .../builtin/packages/allpaths-lg/package.py   |   2 +-
 .../repos/builtin/packages/amp/package.py     |   2 +-
 .../repos/builtin/packages/aria2/package.py   |   2 +-
 .../builtin/packages/arm-forge/package.py     |  42 +++---
 .../builtin/packages/armadillo/package.py     |   2 +-
 .../repos/builtin/packages/asagi/package.py   |   4 +-
 .../repos/builtin/packages/ascent/package.py  |  26 ++--
 .../builtin/packages/augustus/package.py      |   8 +-
 .../builtin/packages/autofact/package.py      |  10 +-
 .../repos/builtin/packages/axl/package.py     |   2 +-
 .../builtin/packages/biopieces/package.py     |  12 +-
 .../builtin/packages/breakdancer/package.py   |   6 +-
 .../builtin/packages/bsseeker2/package.py     |   2 +-
 .../packages/{cares => c-ares}/package.py     |   2 +-
 .../builtin/packages/c-blosc2/package.py      |   1 -
 .../packages/candle-benchmarks/package.py     |   2 +-
 .../packages/{catch => catch2}/package.py     |   7 +-
 .../repos/builtin/packages/cdo/package.py     |   4 +-
 .../repos/builtin/packages/ceed/README.md     |   3 -
 .../repos/builtin/packages/ceed/package.py    |  13 +-
 .../builtin/packages/channelflow/package.py   |  14 +-
 .../repos/builtin/packages/check/package.py   |   4 +-
 .../{clustalo => clustal-omega}/package.py    |   2 +-
 .../repos/builtin/packages/cmor/package.py    |   4 +-
 .../repos/builtin/packages/cppzmq/package.py  |   4 +-
 .../repos/builtin/packages/cquery/package.py  |   6 +-
 .../repos/builtin/packages/cub/package.py     |   2 +-
 .../repos/builtin/packages/czmq/package.py    |   4 +-
 .../repos/builtin/packages/damaris/package.py |   6 +-
 .../repos/builtin/packages/davix/package.py   |   2 +-
 .../repos/builtin/packages/dbcsr/package.py   |   4 +-
 .../repos/builtin/packages/dealii/package.py  |  10 +-
 .../repos/builtin/packages/dislin/package.py  |  22 +--
 .../packages/dotnet-core-sdk/package.py       |   8 +-
 .../repos/builtin/packages/eccodes/package.py |   4 +-
 .../builtin/packages/ecp-viz-sdk/package.py   |   2 +-
 .../{elmer-fem => elmerfem}/package.py        |   6 +-
 .../builtin/packages/{eqr => eq-r}/package.py |  22 +--
 .../repos/builtin/packages/er/package.py      |   2 +-
 .../packages/{es => es-shell}/package.py      |   3 +-
 .../repos/builtin/packages/esmf/package.py    |   4 +-
 .../builtin/packages/exmcutils/package.py     |   2 +-
 .../builtin/packages/exodusii/package.py      |   6 +-
 .../builtin/packages/fastmath/package.py      |  19 +--
 .../builtin/packages/fastq-screen/package.py  |   2 +-
 .../repos/builtin/packages/ferret/package.py  |   4 +-
 .../repos/builtin/packages/flibcpp/package.py |   2 +-
 .../builtin/packages/flux-core/package.py     |  17 ++-
 .../repos/builtin/packages/fpocket/package.py |   6 +-
 .../repos/builtin/packages/fstrack/package.py |  22 +--
 .../repos/builtin/packages/funhpc/package.py  |   2 +-
 .../repos/builtin/packages/gdal/package.py    |  10 +-
 .../repos/builtin/packages/gdl/package.py     |   2 +-
 .../repos/builtin/packages/ginkgo/package.py  |   1 -
 .../repos/builtin/packages/gmsh/package.py    |   2 +-
 .../repos/builtin/packages/gmt/package.py     |   4 +-
 .../{gnu-prolog => gprolog}/package.py        |   2 +-
 .../repos/builtin/packages/grass/package.py   |   4 +-
 .../builtin/packages/grib-api/package.py      |   4 +-
 .../repos/builtin/packages/grpc/package.py    |   2 +-
 .../builtin/packages/guidance/package.py      |   6 +-
 .../repos/builtin/packages/hc/package.py      |  12 +-
 .../repos/builtin/packages/henson/package.py  |   3 +-
 .../repos/builtin/packages/hisea/package.py   |   1 -
 .../repos/builtin/packages/homer/package.py   |   2 +-
 .../repos/builtin/packages/hpgmg/package.py   |   2 +-
 .../repos/builtin/packages/hub/package.py     |   4 +-
 .../repos/builtin/packages/ibmisc/package.py  |   2 +-
 .../{image-magick => imagemagick}/package.py  |   2 +-
 .../repos/builtin/packages/ioapi/package.py   |   2 +-
 .../repos/builtin/packages/julia/package.py   |   2 +-
 .../repos/builtin/packages/kvtree/package.py  |   2 +-
 .../repos/builtin/packages/lammps/package.py  |   2 +-
 .../builtin/packages/libcheck/package.py      |  17 ---
 .../repos/builtin/packages/libgit2/package.py |   2 +-
 .../builtin/packages/libgpuarray/package.py   |   2 +-
 .../repos/builtin/packages/libnrm/package.py  |   2 +-
 .../packages/{zeromq => libzmq}/package.py    |   2 +-
 .../repos/builtin/packages/likwid/package.py  |   2 +-
 .../repos/builtin/packages/lsf/package.py     |   1 -
 .../builtin/packages/lua-bitlib/package.py    |   3 +-
 .../builtin/packages/lua-lpeg/package.py      |   3 +-
 .../{lua-jit => lua-luajit}/package.py        |   2 +-
 .../builtin/packages/lua-mpack/package.py     |   3 +-
 .../repos/builtin/packages/macsio/package.py  |   2 +-
 .../repos/builtin/packages/maker/package.py   |   2 +-
 .../repos/builtin/packages/mariadb/package.py |   2 +-
 .../repos/builtin/packages/meme/package.py    |   2 +-
 .../repos/builtin/packages/mfem/package.py    |   6 +-
 .../repos/builtin/packages/moab/package.py    |   6 +-
 .../{libmongoc => mongo-c-driver}/package.py  |   2 +-
 .../packages/mongo-cxx-driver/package.py      |   2 +-
 .../{mpibash => mpi-bash}/mpibash-4.3.patch   |   0
 .../packages/{mpibash => mpi-bash}/package.py |   2 +-
 .../repos/builtin/packages/mxnet/package.py   |   5 +-
 .../repos/builtin/packages/nauty/package.py   |   4 +-
 .../repos/builtin/packages/nccmp/package.py   |   2 +-
 .../repos/builtin/packages/ncl/package.py     |  12 +-
 .../repos/builtin/packages/nco/package.py     |  14 +-
 .../repos/builtin/packages/ncview/package.py  |   4 +-
 .../packages/{netcdf => netcdf-c}/package.py  |  27 ++--
 .../builtin/packages/netcdf-cxx/package.py    |   4 +-
 .../builtin/packages/netcdf-cxx4/package.py   |   8 +-
 .../packages/netcdf-fortran/package.py        |  11 +-
 .../repos/builtin/packages/nrm/package.py     |   2 +-
 .../repos/builtin/packages/ntpoly/package.py  |   2 +-
 .../repos/builtin/packages/nut/package.py     |   8 +-
 .../repos/builtin/packages/octave/package.py  |   4 +-
 .../repos/builtin/packages/omega-h/package.py |   2 +-
 .../builtin/packages/openldap/package.py      |   2 +-
 .../builtin/packages/openpmd-api/package.py   |  25 ++--
 .../repos/builtin/packages/pagit/package.py   |  35 ++---
 .../builtin/packages/paraview/package.py      |   4 +-
 .../{parquet => parquet-cpp}/package.py       |   2 +-
 .../packages/perl-alien-libxml2/package.py    |   2 +-
 .../package.py                                |   5 +-
 .../{perl-dbfile => perl-db-file}/package.py  |   2 +-
 .../packages/perl-devel-symdump/package.py    |   2 +-
 .../packages/perl-file-chdir/package.py       |   2 +-
 .../package.py                                |   4 +-
 .../package.py                                |   2 +-
 .../packages/perl-io-prompt/package.py        |   2 +-
 .../builtin/packages/perl-io-tty/package.py   |   2 +-
 .../packages/perl-libwww-perl/package.py      |   1 +
 .../packages/perl-log-log4perl/package.py     |   4 +-
 .../perl-lwp-protocol-https/package.py        |   2 +-
 .../builtin/packages/perl-lwp/package.py      |  26 ----
 .../package.py                                |   2 +-
 .../package.py                                |   2 +-
 .../packages/perl-star-fusion/package.py      |   4 +-
 .../package.py                                |   2 +-
 .../perl-xml-namespacesupport/package.py      |   2 +-
 .../repos/builtin/packages/pism/package.py    |   8 +-
 .../repos/builtin/packages/prank/package.py   |   2 +-
 .../repos/builtin/packages/ps-lite/package.py |   2 +-
 .../py-avro-json-serializer/package.py        |   4 +-
 .../builtin/packages/py-brian2/package.py     |   2 +-
 .../builtin/packages/py-cdat-lite/package.py  |   2 +-
 .../builtin/packages/py-cf-units/package.py   |   2 +-
 .../builtin/packages/py-espressopp/package.py |   2 +-
 .../package.py                                |   2 +-
 .../builtin/packages/py-filelock/package.py   |  21 ++-
 .../packages/{py-fn => py-fn-py}/package.py   |   2 +-
 .../builtin/packages/py-fsspec/package.py     |   4 +-
 .../builtin/packages/py-hpccm/package.py      |   4 +-
 .../{py-jpype => py-jpype1}/package.py        |   2 +-
 .../builtin/packages/py-jsonpatch/package.py  |   4 +-
 .../packages/py-jsonpointer/package.py        |   4 +-
 .../packages/py-jupyter-client/package.py     |   2 +-
 .../builtin/packages/py-jupyterhub/package.py |   2 +-
 .../{py-lrudict => py-lru-dict}/package.py    |   6 +-
 .../builtin/packages/py-macholib/package.py   |   2 +-
 .../builtin/packages/py-matplotlib/package.py |   2 +-
 .../builtin/packages/py-methylcode/package.py |  10 +-
 .../builtin/packages/py-mongo/package.py      |  20 ---
 .../package.py                                |   2 +-
 .../single-version.patch                      |   0
 .../builtin/packages/py-netcdf4/package.py    |  14 +-
 .../package.py                                |   2 +-
 .../builtin/packages/py-opentuner/package.py  |   2 +-
 .../packages/py-performance/package.py        |   2 +-
 .../builtin/packages/py-plotly/package.py     |   4 +-
 .../{py-cpuinfo => py-py-cpuinfo}/package.py  |   2 +-
 .../{py-git2 => py-pygit2}/package.py         |   8 +-
 .../builtin/packages/py-pygpu/package.py      |   2 +-
 .../repos/builtin/packages/py-pyke/package.py |   6 +-
 .../builtin/packages/py-pymongo/package.py    |   2 +
 .../builtin/packages/py-pynio/package.py      |  22 +--
 .../{py-perf => py-pyperf}/package.py         |   2 +-
 .../package.py                                |   2 +-
 .../{py-meep => py-python-meep}/package.py    |   2 +-
 .../builtin/packages/py-pyyaml/package.py     |   3 +-
 .../packages/{py-zmq => py-pyzmq}/package.py  |   4 +-
 .../packages/py-requests-toolbelt/package.py  |   6 +-
 .../builtin/packages/py-scoop/package.py      |   2 +-
 .../packages/py-sphinxautomodapi/package.py   |   4 +-
 .../builtin/packages/py-spyder/package.py     |   2 +-
 .../builtin/packages/py-symengine/package.py  |   6 +-
 .../builtin/packages/py-tables/package.py     |  13 +-
 .../{py-tappy => py-tap-py}/package.py        |   4 +-
 .../builtin/packages/py-udunits/package.py    |  50 -------
 .../repos/builtin/packages/py-wand/package.py |   2 +-
 .../packages/py-widgetsnbextension/package.py |   2 +-
 .../repos/builtin/packages/py-xdot/package.py |  34 ++---
 .../builtin/packages/qt-creator/package.py    |   6 +-
 .../builtin/packages/r-animation/package.py   |   2 +-
 .../builtin/packages/r-checkpoint/package.py  |   2 +-
 .../builtin/packages/r-magick/package.py      |   2 +-
 .../repos/builtin/packages/r-mzr/package.py   |   2 +-
 .../repos/builtin/packages/r-ncdf4/package.py |   2 +-
 .../repos/builtin/packages/r-nmf/package.py   |   2 +-
 .../builtin/packages/r-pbdzmq/package.py      |   2 +-
 .../builtin/packages/r-pkgmaker/package.py    |   2 +-
 .../packages/r-randomfieldsutils/package.py   |   2 +-
 .../builtin/packages/r-rngtools/package.py    |   2 +-
 .../repos/builtin/packages/r-rzmq/package.py  |   2 +-
 .../builtin/packages/r-udunits2/package.py    |   2 +-
 .../repos/builtin/packages/r-units/package.py |   2 +-
 .../repos/builtin/packages/r-wgcna/package.py |   2 +-
 .../repos/builtin/packages/r-xlsx/package.py  |   2 +-
 .../repos/builtin/packages/r3d/package.py     |   8 +-
 .../repos/builtin/packages/rankstr/package.py |   2 +-
 .../repos/builtin/packages/redset/package.py  |   2 +-
 .../repos/builtin/packages/regcm/package.py   |   4 +-
 .../builtin/packages/repeatmodeler/package.py |   2 +-
 .../repos/builtin/packages/rose/package.py    |   7 +-
 .../repos/builtin/packages/seacas/package.py  |   8 +-
 .../builtin/packages/shuffile/package.py      |   2 +-
 .../repos/builtin/packages/siesta/package.py  |   4 +-
 .../builtin/packages/simulationio/package.py  |   2 +-
 .../repos/builtin/packages/squid/package.py   |   3 +-
 .../{sra-toolkit => sratoolkit}/package.py    |   6 +-
 .../repos/builtin/packages/stc/package.py     |   2 +-
 .../builtin/packages/subversion/package.py    |   2 +-
 .../repos/builtin/packages/thrift/package.py  |   8 +-
 .../builtin/packages/transabyss/package.py    |   2 +-
 .../trilinos-catalyst-ioss-adapter/package.py |  11 +-
 .../builtin/packages/trilinos/package.py      |   6 +-
 .../repos/builtin/packages/trinity/package.py |  12 +-
 .../repos/builtin/packages/turbine/package.py |  10 +-
 .../packages/{udunits2 => udunits}/package.py |   2 +-
 .../repos/builtin/packages/vmatch/package.py  |   4 -
 .../packages/{vtkh => vtk-h}/package.py       |  30 ++--
 .../vtkm_lagrange_cuda_fix.patch              |   0
 .../packages/{vtkm => vtk-m}/package.py       |  11 +-
 .../repos/builtin/packages/vtk/package.py     |  10 +-
 .../repos/builtin/packages/warpx/package.py   |  12 +-
 .../builtin/packages/wireshark/package.py     |   2 +-
 .../repos/builtin/packages/xdmf3/package.py   |   1 -
 .../repos/builtin/packages/xeus/package.py    |   2 +-
 .../repos/builtin/packages/xios/package.py    |   8 +-
 .../repos/builtin/packages/yambo/package.py   |  12 +-
 240 files changed, 773 insertions(+), 805 deletions(-)
 rename var/spack/repos/builtin/packages/{cares => c-ares}/package.py (96%)
 rename var/spack/repos/builtin/packages/{catch => catch2}/package.py (96%)
 delete mode 100644 var/spack/repos/builtin/packages/ceed/README.md
 rename var/spack/repos/builtin/packages/{clustalo => clustal-omega}/package.py (93%)
 rename var/spack/repos/builtin/packages/{elmer-fem => elmerfem}/package.py (95%)
 rename var/spack/repos/builtin/packages/{eqr => eq-r}/package.py (81%)
 rename var/spack/repos/builtin/packages/{es => es-shell}/package.py (96%)
 rename var/spack/repos/builtin/packages/{gnu-prolog => gprolog}/package.py (96%)
 rename var/spack/repos/builtin/packages/{image-magick => imagemagick}/package.py (97%)
 delete mode 100644 var/spack/repos/builtin/packages/libcheck/package.py
 rename var/spack/repos/builtin/packages/{zeromq => libzmq}/package.py (98%)
 rename var/spack/repos/builtin/packages/{lua-jit => lua-luajit}/package.py (96%)
 rename var/spack/repos/builtin/packages/{libmongoc => mongo-c-driver}/package.py (98%)
 rename var/spack/repos/builtin/packages/{mpibash => mpi-bash}/mpibash-4.3.patch (100%)
 rename var/spack/repos/builtin/packages/{mpibash => mpi-bash}/package.py (96%)
 rename var/spack/repos/builtin/packages/{netcdf => netcdf-c}/package.py (94%)
 rename var/spack/repos/builtin/packages/{parquet => parquet-cpp}/package.py (97%)
 rename var/spack/repos/builtin/packages/{perl-bio-perl => perl-bioperl}/package.py (96%)
 rename var/spack/repos/builtin/packages/{perl-dbfile => perl-db-file}/package.py (97%)
 rename var/spack/repos/builtin/packages/{perl-gd-graph => perl-gdgraph}/package.py (88%)
 rename var/spack/repos/builtin/packages/{perl-gd-text => perl-gdtextutil}/package.py (94%)
 delete mode 100644 var/spack/repos/builtin/packages/perl-lwp/package.py
 rename var/spack/repos/builtin/packages/{perl-version => perl-perl-version}/package.py (94%)
 rename var/spack/repos/builtin/packages/{perl-intervaltree => perl-set-intervaltree}/package.py (94%)
 rename var/spack/repos/builtin/packages/{perl-term-readkey => perl-termreadkey}/package.py (96%)
 rename var/spack/repos/builtin/packages/{py-exodus => py-exodus-bundler}/package.py (95%)
 rename var/spack/repos/builtin/packages/{py-fn => py-fn-py}/package.py (95%)
 rename var/spack/repos/builtin/packages/{py-jpype => py-jpype1}/package.py (96%)
 rename var/spack/repos/builtin/packages/{py-lrudict => py-lru-dict}/package.py (81%)
 delete mode 100644 var/spack/repos/builtin/packages/py-mongo/package.py
 rename var/spack/repos/builtin/packages/{py-mysql-connector => py-mysql-connector-python}/package.py (95%)
 rename var/spack/repos/builtin/packages/{py-mysql-connector => py-mysql-connector-python}/single-version.patch (100%)
 rename var/spack/repos/builtin/packages/{py-jupyter-notebook => py-notebook}/package.py (98%)
 rename var/spack/repos/builtin/packages/{py-cpuinfo => py-py-cpuinfo}/package.py (94%)
 rename var/spack/repos/builtin/packages/{py-git2 => py-pygit2}/package.py (81%)
 rename var/spack/repos/builtin/packages/{py-perf => py-pyperf}/package.py (95%)
 rename var/spack/repos/builtin/packages/{py-igraph => py-python-igraph}/package.py (94%)
 rename var/spack/repos/builtin/packages/{py-meep => py-python-meep}/package.py (98%)
 rename var/spack/repos/builtin/packages/{py-zmq => py-pyzmq}/package.py (93%)
 rename var/spack/repos/builtin/packages/{py-tappy => py-tap-py}/package.py (90%)
 delete mode 100644 var/spack/repos/builtin/packages/py-udunits/package.py
 rename var/spack/repos/builtin/packages/{sra-toolkit => sratoolkit}/package.py (83%)
 rename var/spack/repos/builtin/packages/{udunits2 => udunits}/package.py (95%)
 rename var/spack/repos/builtin/packages/{vtkh => vtk-h}/package.py (90%)
 rename var/spack/repos/builtin/packages/{vtkh => vtk-h}/vtkm_lagrange_cuda_fix.patch (100%)
 rename var/spack/repos/builtin/packages/{vtkm => vtk-m}/package.py (94%)

diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst
index b7ba386bb2..319d7f3c88 100644
--- a/lib/spack/docs/getting_started.rst
+++ b/lib/spack/docs/getting_started.rst
@@ -97,7 +97,7 @@ Check Installation
 With Spack installed, you should be able to run some basic Spack
 commands.  For example:
 
-.. command-output:: spack spec netcdf
+.. command-output:: spack spec netcdf-c
 
 
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/lib/spack/spack/cmd/url.py b/lib/spack/spack/cmd/url.py
index a24fcc575c..3101f28f08 100644
--- a/lib/spack/spack/cmd/url.py
+++ b/lib/spack/spack/cmd/url.py
@@ -434,23 +434,10 @@ def name_parsed_correctly(pkg, name):
     Returns:
         bool: True if the name was correctly parsed, else False
     """
-    pkg_name = pkg.name
+    pkg_name = remove_prefix(pkg.name)
 
     name = simplify_name(name)
 
-    # After determining a name, `spack create` determines a build system.
-    # Some build systems prepend a special string to the front of the name.
-    # Since this can't be guessed from the URL, it would be unfair to say
-    # that these names are incorrectly parsed, so we remove them.
-    if pkg_name.startswith('r-'):
-        pkg_name = pkg_name[2:]
-    elif pkg_name.startswith('py-'):
-        pkg_name = pkg_name[3:]
-    elif pkg_name.startswith('perl-'):
-        pkg_name = pkg_name[5:]
-    elif pkg_name.startswith('octave-'):
-        pkg_name = pkg_name[7:]
-
     return name == pkg_name
 
 
@@ -475,8 +462,32 @@ def version_parsed_correctly(pkg, version):
     return False
 
 
+def remove_prefix(pkg_name):
+    """Remove build system prefix ('py-', 'perl-', etc.) from a package name.
+
+    After determining a name, `spack create` determines a build system.
+    Some build systems prepend a special string to the front of the name.
+    Since this can't be guessed from the URL, it would be unfair to say
+    that these names are incorrectly parsed, so we remove them.
+
+    Args:
+        pkg_name (str): the name of the package
+
+    Returns:
+        str: the name of the package with any build system prefix removed
+    """
+    prefixes = [
+        'r-', 'py-', 'tcl-', 'lua-', 'perl-', 'ruby-', 'llvm-',
+        'intel-', 'votca-', 'octave-', 'gtkorvo-'
+    ]
+
+    prefix = next((p for p in prefixes if pkg_name.startswith(p)), '')
+
+    return pkg_name[len(prefix):]
+
+
 def remove_separators(version):
-    """Removes separator characters ('.', '_', and '-') from a version.
+    """Remove separator characters ('.', '_', and '-') from a version.
 
     A version like 1.2.3 may be displayed as 1_2_3 in the URL.
     Make sure 1.2.3, 1-2-3, 1_2_3, and 123 are considered equal.
diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py
index c557f78405..7c292938d2 100644
--- a/lib/spack/spack/test/url_parse.py
+++ b/lib/spack/spack/test/url_parse.py
@@ -60,6 +60,8 @@
     ('cppad-20170114.gpl', 'cppad-20170114'),
     # Arch
     ('pcraster-4.1.0_x86-64', 'pcraster-4.1.0'),
+    ('dislin-11.0.linux.i586_64', 'dislin-11.0'),
+    ('PAGIT.V1.01.64bit', 'PAGIT.V1.01'),
     # OS - linux
     ('astyle_2.04_linux', 'astyle_2.04'),
     # OS - unix
@@ -85,20 +87,31 @@
     # Combinations of multiple patterns - darwin
     ('ghc-7.0.4-x86_64-apple-darwin', 'ghc-7.0.4'),
     ('ghc-7.0.4-i386-apple-darwin', 'ghc-7.0.4'),
+    # Combinations of multiple patterns - centos
+    ('sratoolkit.2.8.2-1-centos_linux64', 'sratoolkit.2.8.2-1'),
     # Combinations of multiple patterns - arch
     ('VizGlow_v2.2alpha17-R21November2016-Linux-x86_64-Install',
      'VizGlow_v2.2alpha17-R21November2016'),
     ('jdk-8u92-linux-x64', 'jdk-8u92'),
     ('cuda_6.5.14_linux_64.run', 'cuda_6.5.14'),
+    ('Mathematica_12.0.0_LINUX.sh', 'Mathematica_12.0.0'),
+    ('trf407b.linux64', 'trf407b'),
     # Combinations of multiple patterns - with
     ('mafft-7.221-with-extensions-src', 'mafft-7.221'),
     ('spark-2.0.0-bin-without-hadoop', 'spark-2.0.0'),
+    ('conduit-v0.3.0-src-with-blt', 'conduit-v0.3.0'),
+    # Combinations of multiple patterns - rock
+    ('bitlib-23-2.src.rock', 'bitlib-23-2'),
     # Combinations of multiple patterns - public
     ('dakota-6.3-public.src', 'dakota-6.3'),
     # Combinations of multiple patterns - universal
     ('synergy-1.3.6p2-MacOSX-Universal', 'synergy-1.3.6p2'),
     # Combinations of multiple patterns - dynamic
     ('snptest_v2.5.2_linux_x86_64_dynamic', 'snptest_v2.5.2'),
+    # Combinations of multiple patterns - other
+    ('alglib-3.11.0.cpp.gpl', 'alglib-3.11.0'),
+    ('hpcviewer-2019.08-linux.gtk.x86_64', 'hpcviewer-2019.08'),
+    ('apache-mxnet-src-1.3.0-incubating', 'apache-mxnet-src-1.3.0'),
 ])
 def test_url_strip_version_suffixes(url, expected):
     stripped = strip_version_suffixes(url)
@@ -109,24 +122,40 @@ def test_url_strip_version_suffixes(url, expected):
     # No suffix
     ('rgb-1.0.6', '1.0.6', 'rgb'),
     ('nauty26r7', '26r7', 'nauty'),
+    ('PAGIT.V1.01', '1.01', 'PAGIT'),
+    ('AmpliconNoiseV1.29', '1.29', 'AmpliconNoise'),
     # Download type - install
     ('converge_install_2.3.16', '2.3.16', 'converge'),
     # Download type - src
     ('jpegsrc.v9b', '9b', 'jpeg'),
+    ('blatSrc35', '35', 'blat'),
+    # Download type - open
+    ('RepeatMasker-open-4-0-7', '4-0-7', 'RepeatMasker'),
     # Download type - archive
     ('coinhsl-archive-2014.01.17', '2014.01.17', 'coinhsl'),
     # Download type - std
     ('ghostscript-fonts-std-8.11', '8.11', 'ghostscript-fonts'),
+    # Download type - bin
+    ('GapCloser-bin-v1.12-r6', '1.12-r6', 'GapCloser'),
+    # Download type - software
+    ('orthomclSoftware-v2.0.9', '2.0.9', 'orthomcl'),
     # Download version - release
     ('cbench_release_1.3.0.tar.gz', '1.3.0', 'cbench'),
     # Download version - snapshot
     ('gts-snapshot-121130', '121130', 'gts'),
     # Download version - distrib
     ('zoltan_distrib_v3.83', '3.83', 'zoltan'),
+    # Download version - latest
+    ('Platypus-latest', 'N/A', 'Platypus'),
+    # Download version - complex
+    ('qt-everywhere-opensource-src-5.7.0', '5.7.0', 'qt'),
+    # Arch
+    ('VESTA-x86_64', '3.4.6', 'VESTA'),
     # VCS - bazaar
     ('libvterm-0+bzr681', '681', 'libvterm'),
     # License - gpl
-    ('PyQt-x11-gpl-4.11.3', '4.11.3', 'PyQt-x11')
+    ('PyQt-x11-gpl-4.11.3', '4.11.3', 'PyQt'),
+    ('PyQt4_gpl_x11-4.12.3', '4.12.3', 'PyQt4'),
 ])
 def test_url_strip_name_suffixes(url, version, expected):
     stripped = strip_name_suffixes(url, version)
@@ -182,6 +211,7 @@ def test_url_parse_offset(name, noffset, ver, voffset, path):
 @pytest.mark.parametrize('name,version,url', [
     # Common Repositories - github downloads
 
+    # name/archive/ver.ver
     ('nco', '4.6.2', 'https://github.com/nco/nco/archive/4.6.2.tar.gz'),
     # name/archive/vver.ver
     ('vim', '8.0.0134', 'https://github.com/vim/vim/archive/v8.0.0134.tar.gz'),
@@ -257,6 +287,15 @@ def test_url_parse_offset(name, noffset, ver, voffset, path):
 
     # Common Tarball Formats
 
+    # 1st Pass: Simplest case
+    # Assume name contains no digits and version contains no letters
+
+    # name-ver.ver
+    ('libpng', '1.6.37', 'http://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz'),
+
+    # 2nd Pass: Version only
+    # Assume version contains no letters
+
     # ver.ver
     ('eigen', '3.2.7', 'https://bitbucket.org/eigen/eigen/get/3.2.7.tar.bz2'),
     # ver.ver-ver
@@ -266,10 +305,17 @@ def test_url_parse_offset(name, noffset, ver, voffset, path):
     # vver_ver
     ('luafilesystem', '1_6_3', 'https://github.com/keplerproject/luafilesystem/archive/v1_6_3.tar.gz'),
 
-    # No separators
+    # 3rd Pass: No separator characters are used
+    # Assume name contains no digits
+
+    # namever
     ('turbolinux', '702', 'file://{0}/turbolinux702.tar.gz'.format(os.getcwd())),
     ('nauty', '26r7', 'http://pallini.di.uniroma1.it/nauty26r7.tar.gz'),
-    # Dashes only
+
+    # 4th Pass: A single separator character is used
+    # Assume name contains no digits
+
+    # name-name-ver-ver
     ('Trilinos', '12-10-1',
      'https://github.com/trilinos/Trilinos/archive/trilinos-release-12-10-1.tar.gz'),
     ('panda', '2016-03-07',
@@ -278,7 +324,7 @@ def test_url_parse_offset(name, noffset, ver, voffset, path):
      'http://gts.sourceforge.net/tarballs/gts-snapshot-121130.tar.gz'),
     ('cdd', '061a',
      'http://www.cs.mcgill.ca/~fukuda/download/cdd/cdd-061a.tar.gz'),
-    # Only underscores
+    # name_name_ver_ver
     ('tinyxml', '2_6_2',
      'https://sourceforge.net/projects/tinyxml/files/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz'),
     ('boost', '1_55_0',
@@ -287,9 +333,6 @@ def test_url_parse_offset(name, noffset, ver, voffset, path):
      'https://github.com/dhmunro/yorick/archive/y_2_2_04.tar.gz'),
     ('tbb', '44_20160413',
      'https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb44_20160413oss_src.tgz'),
-
-    # Only dots
-
     # name.name.ver.ver
     ('prank', '150803', 'http://wasabiapp.org/download/prank/prank.source.150803.tgz'),
     ('jpeg', '9b', 'http://www.ijg.org/files/jpegsrc.v9b.tar.gz'),
@@ -302,61 +345,51 @@ def test_url_parse_offset(name, noffset, ver, voffset, path):
     ('geant', '4.10.01.p03', 'http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz'),
     ('tcl', '8.6.5', 'http://prdownloads.sourceforge.net/tcl/tcl8.6.5-src.tar.gz'),
 
-    # Dash and dots
+    # 5th Pass: Two separator characters are used
+    # Name may contain digits, version may contain letters
 
     # name-name-ver.ver
-    # digit in name
     ('m4', '1.4.17', 'https://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz'),
-    # letter in version
     ('gmp', '6.0.0a', 'https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2'),
-    # version starts with 'v'
     ('LaunchMON', '1.0.2',
      'https://github.com/LLNL/LaunchMON/releases/download/v1.0.2/launchmon-v1.0.2.tar.gz'),
     # name-ver-ver.ver
     ('libedit', '20150325-3.1', 'http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz'),
-
-    # Dash and unserscores
-
     # name-name-ver_ver
     ('icu4c', '57_1', 'http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz'),
-
-    # Underscores and dots
-
     # name_name_ver.ver
     ('superlu_dist', '4.1', 'http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_dist_4.1.tar.gz'),
     ('pexsi', '0.9.0', 'https://math.berkeley.edu/~linlin/pexsi/download/pexsi_v0.9.0.tar.gz'),
     # name_name.ver.ver
     ('fer', '696', 'ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v696.tar.gz'),
-
-    # Dash dot dah dot
-
+    # name_name_ver-ver
+    ('Bridger', '2014-12-01',
+     'https://downloads.sourceforge.net/project/rnaseqassembly/Bridger_r2014-12-01.tar.gz'),
     # name-name-ver.ver-ver.ver
     ('sowing', '1.1.23-p1', 'http://ftp.mcs.anl.gov/pub/petsc/externalpackages/sowing-1.1.23-p1.tar.gz'),
     ('bib2xhtml', '3.0-15-gf506', 'http://www.spinellis.gr/sw/textproc/bib2xhtml/bib2xhtml-v3.0-15-gf506.tar.gz'),
     # namever.ver-ver.ver
     ('go', '1.4-bootstrap-20161024', 'https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz'),
 
-    # Underscore dash dot
+    # 6th Pass: All three separator characters are used
+    # Name may contain digits, version may contain letters
 
     # name_name-ver.ver
     ('the_silver_searcher', '0.32.0', 'http://geoff.greer.fm/ag/releases/the_silver_searcher-0.32.0.tar.gz'),
     ('sphinx_rtd_theme', '0.1.10a0',
      'https://pypi.python.org/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz'),
-
-    # Dot underscore dot dash dot
-
     # name.name_ver.ver-ver.ver
     ('TH.data', '1.0-8', 'https://cran.r-project.org/src/contrib/TH.data_1.0-8.tar.gz'),
     ('XML', '3.98-1.4', 'https://cran.r-project.org/src/contrib/XML_3.98-1.4.tar.gz'),
-
-    # Dash dot underscore dot
-
     # name-name-ver.ver_ver.ver
     ('pypar', '2.1.5_108',
      'https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pypar/pypar-2.1.5_108.tgz'),
     # name-namever.ver_ver.ver
     ('STAR-CCM+', '11.06.010_02',
      'file://{0}/STAR-CCM+11.06.010_02_linux-x86_64.tar.gz'.format(os.getcwd())),
+    # name-name_name-ver.ver
+    ('PerlIO-utf8_strict', '0.002',
+     'http://search.cpan.org/CPAN/authors/id/L/LE/LEONT/PerlIO-utf8_strict-0.002.tar.gz'),
 
     # Various extensions
     # .tar.gz
@@ -399,18 +432,61 @@ def test_url_parse_offset(name, noffset, ver, voffset, path):
     # .txz
     ('kim-api', '2.1.0', 'https://s3.openkim.org/kim-api/kim-api-2.1.0.txz'),
 
-    # Weird URLS
+    # 8th Pass: Query strings
 
-    # github.com/repo/name/releases/download/name-vver/name
-    ('nextflow', '0.20.1', 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow'),
     # suffix queries
     ('swiftsim', '0.3.0', 'http://gitlab.cosma.dur.ac.uk/swift/swiftsim/repository/archive.tar.gz?ref=v0.3.0'),
-    ('swiftsim', '0.3.0', 'https://gitlab.cosma.dur.ac.uk/api/v4/projects/swift%2Fswiftsim/repository/archive.tar.gz?sha=v0.3.0'),
+    ('swiftsim', '0.3.0',
+     'https://gitlab.cosma.dur.ac.uk/api/v4/projects/swift%2Fswiftsim/repository/archive.tar.gz?sha=v0.3.0'),
     ('sionlib', '1.7.1', 'http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1'),
+    ('jube2', '2.2.2', 'https://apps.fz-juelich.de/jsc/jube/jube2/download.php?version=2.2.2'),
+    ('archive', '1.0.0', 'https://code.ornl.gov/eck/papyrus/repository/archive.tar.bz2?ref=v1.0.0'),
+    ('VecGeom', '0.3.rc',
+     'https://gitlab.cern.ch/api/v4/projects/VecGeom%2FVecGeom/repository/archive.tar.gz?sha=v0.3.rc'),
+    ('parsplice', '1.1',
+     'https://gitlab.com/api/v4/projects/exaalt%2Fparsplice/repository/archive.tar.gz?sha=v1.1'),
+    ('busco', '2.0.1', 'https://gitlab.com/api/v4/projects/ezlab%2Fbusco/repository/archive.tar.gz?sha=2.0.1'),
+    ('libaec', '1.0.2',
+     'https://gitlab.dkrz.de/api/v4/projects/k202009%2Flibaec/repository/archive.tar.gz?sha=v1.0.2'),
+    ('icet', '2.1.1',
+     'https://gitlab.kitware.com/api/v4/projects/icet%2Ficet/repository/archive.tar.bz2?sha=IceT-2.1.1'),
+    ('vtk-m', '1.3.0',
+     'https://gitlab.kitware.com/api/v4/projects/vtk%2Fvtk-m/repository/archive.tar.gz?sha=v1.3.0'),
+    ('GATK', '3.8-1-0-gf15c1c3ef',
+     'https://software.broadinstitute.org/gatk/download/auth?package=GATK-archive&version=3.8-1-0-gf15c1c3ef'),
     # stem queries
     ('slepc', '3.6.2', 'http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz'),
     ('otf', '1.12.5salmon',
      'http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz'),
+    ('eospac', '6.4.0beta.1',
+     'http://laws-green.lanl.gov/projects/data/eos/get_file.php?package=eospac&filename=eospac_v6.4.0beta.1_r20171213193219.tgz'),
+    ('vampirtrace', '5.14.4',
+     'http://wwwpub.zih.tu-dresden.de/~mlieber/dcount/dcount.php?package=vampirtrace&get=VampirTrace-5.14.4.tar.gz'),
+    # (we don't actually look for these, they are picked up
+    #  during the preliminary stem parsing)
+    ('octopus', '6.0', 'http://octopus-code.org/down.php?file=6.0/octopus-6.0.tar.gz'),
+    ('cloog', '0.18.1', 'http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.1.tar.gz'),
+    ('libxc', '2.2.2', 'http://www.tddft.org/programs/octopus/down.php?file=libxc/libxc-2.2.2.tar.gz'),
+    ('cistem', '1.0.0-beta',
+     'https://cistem.org/system/tdf/upload3/cistem-1.0.0-beta-source-code.tar.gz?file=1&type=cistem_details&id=37&force=0'),
+    ('Magics', '4.1.0',
+     'https://confluence.ecmwf.int/download/attachments/3473464/Magics-4.1.0-Source.tar.gz?api=v2'),
+    ('grib_api', '1.17.0',
+     'https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.17.0-Source.tar.gz?api=v2'),
+    ('eccodes', '2.2.0',
+     'https://software.ecmwf.int/wiki/download/attachments/45757960/eccodes-2.2.0-Source.tar.gz?api=v2'),
+    ('SWFFT', '1.0',
+     'https://xgitlab.cels.anl.gov/api/v4/projects/hacc%2FSWFFT/repository/archive.tar.gz?sha=v1.0'),
+
+    # 9th Pass: Version in path
+
+    # github.com/repo/name/releases/download/name-vver/name
+    ('nextflow', '0.20.1', 'https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow'),
+    # ver/name
+    ('ncbi', '2.2.26', 'ftp://ftp.ncbi.nlm.nih.gov/blast/executables/legacy.NOTSUPPORTED/2.2.26/ncbi.tar.gz'),
+
+    # Other tests for corner cases
+
     # single character name
     ('R', '3.3.2', 'https://cloud.r-project.org/src/base/R-3/R-3.3.2.tar.gz'),
     # name starts with digit
diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py
index 11b289a0b1..a298d44ea2 100644
--- a/lib/spack/spack/url.py
+++ b/lib/spack/spack/url.py
@@ -153,13 +153,14 @@ def strip_version_suffixes(path):
         r'[Ii]nstall',
         r'all',
         r'code',
-        r'src(_0)?',
         r'[Ss]ources?',
         r'file',
         r'full',
         r'single',
-        r'public',
         r'with[a-zA-Z_-]+',
+        r'rock',
+        r'src(_0)?',
+        r'public',
         r'bin',
         r'binary',
         r'run',
@@ -189,15 +190,24 @@ def strip_version_suffixes(path):
         r'ia32',
         r'intel',
         r'amd64',
+        r'linux64',
         r'x64',
+        r'64bit',
         r'x86[_-]64',
+        r'i586_64',
         r'x86',
         r'i[36]86',
         r'ppc64(le)?',
         r'armv?(7l|6l|64)',
 
+        # Other
+        r'cpp',
+        r'gtk',
+        r'incubating',
+
         # OS
         r'[Ll]inux(_64)?',
+        r'LINUX',
         r'[Uu]ni?x',
         r'[Ss]un[Oo][Ss]',
         r'[Mm]ac[Oo][Ss][Xx]?',
@@ -208,14 +218,18 @@ def strip_version_suffixes(path):
         r'[Ww]in(64|32)?',
         r'[Cc]ygwin(64|32)?',
         r'[Mm]ingw',
+        r'centos',
 
         # Arch
         # Needs to come before and after OS, appears in both orders
         r'ia32',
         r'intel',
         r'amd64',
+        r'linux64',
         r'x64',
+        r'64bit',
         r'x86[_-]64',
+        r'i586_64',
         r'x86',
         r'i[36]86',
         r'ppc64(le)?',
@@ -270,31 +284,41 @@ def strip_name_suffixes(path, version):
         # name-ver
         # name_ver
         # name.ver
-        r'[._-]v?' + str(version) + '.*',
+        r'[._-][rvV]?' + str(version) + '.*',
 
         # namever
-        str(version) + '.*',
+        r'V?' + str(version) + '.*',
 
         # Download type
         r'install',
-        r'src',
+        r'[Ss]rc',
         r'(open)?[Ss]ources?',
+        r'[._-]open',
         r'[._-]archive',
         r'[._-]std',
+        r'[._-]bin',
+        r'Software',
 
         # Download version
         r'release',
         r'snapshot',
         r'distrib',
+        r'everywhere',
+        r'latest',
 
         # Arch
-        r'Linux64',
+        r'Linux(64)?',
+        r'x86_64',
 
         # VCS
         r'0\+bzr',
 
         # License
         r'gpl',
+
+        # Needs to come before and after gpl, appears in both orders
+        r'[._-]x11',
+        r'gpl',
     ]
 
     for regex in suffix_regexes:
@@ -407,7 +431,7 @@ def parse_version_offset(path):
     # 3. names can contain A-Z, a-z, 0-9, '+', separators
     # 4. versions can contain A-Z, a-z, 0-9, separators
     # 5. versions always start with a digit
-    # 6. versions are often prefixed by a 'v' character
+    # 6. versions are often prefixed by a 'v' or 'r' character
     # 7. separators are most reliable to determine name/version boundaries
 
     # List of the following format:
@@ -450,7 +474,7 @@ def parse_version_offset(path):
         (r'^[a-zA-Z+-]*(\d[\da-zA-Z-]*)$', stem),
 
         # name_name_ver_ver
-        # e.g. tinyxml_2_6_2, boost_1_55_0, tbb2017_20161128, v1_6_3
+        # e.g. tinyxml_2_6_2, boost_1_55_0, tbb2017_20161128
         (r'^[a-zA-Z+_]*(\d[\da-zA-Z_]*)$', stem),
 
         # name.name.ver.ver
@@ -476,6 +500,10 @@ def parse_version_offset(path):
         # e.g. fer_source.v696
         (r'^[a-zA-Z\d+_]+\.v?(\d[\da-zA-Z.]*)$', stem),
 
+        # name_ver-ver
+        # e.g. Bridger_r2014-12-01
+        (r'^[a-zA-Z\d+]+_r?(\d[\da-zA-Z-]*)$', stem),
+
         # name-name-ver.ver-ver.ver
         # e.g. sowing-1.1.23-p1, bib2xhtml-v3.0-15-gf506, 4.6.3-alpha04
         (r'^(?:[a-zA-Z\d+-]+-)?v?(\d[\da-zA-Z.-]*)$', stem),
@@ -507,19 +535,17 @@ def parse_version_offset(path):
         # e.g. STAR-CCM+11.06.010_02
         (r'^[a-zA-Z+-]+(\d[\da-zA-Z._]*)$', stem),
 
+        # name-name_name-ver.ver
+        # e.g. PerlIO-utf8_strict-0.002
+        (r'^[a-zA-Z\d+_-]+-v?(\d[\da-zA-Z.]*)$', stem),
+
         # 7th Pass: Specific VCS
 
         # bazaar
         # e.g. libvterm-0+bzr681
         (r'bzr(\d[\da-zA-Z._-]*)$', stem),
 
-        # 8th Pass: Version in path
-
-        # github.com/repo/name/releases/download/vver/name
-        # e.g. https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow
-        (r'github\.com/[^/]+/[^/]+/releases/download/[a-zA-Z+._-]*v?(\d[\da-zA-Z._-]*)/', path),  # noqa
-
-        # 9th Pass: Query strings
+        # 8th Pass: Query strings
 
         # e.g. https://gitlab.cosma.dur.ac.uk/api/v4/projects/swift%2Fswiftsim/repository/archive.tar.gz?sha=v0.3.0
         (r'\?sha=[a-zA-Z+._-]*v?(\d[\da-zA-Z._-]*)$', suffix),
@@ -528,13 +554,24 @@ def parse_version_offset(path):
         (r'\?ref=[a-zA-Z+._-]*v?(\d[\da-zA-Z._-]*)$', suffix),
 
         # e.g. http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1
-        (r'\?version=v?(\d[\da-zA-Z._-]*)$', suffix),
+        # e.g. https://software.broadinstitute.org/gatk/download/auth?package=GATK-archive&version=3.8-1-0-gf15c1c3ef
+        (r'[?&]version=v?(\d[\da-zA-Z._-]*)$', suffix),
 
         # e.g. http://slepc.upv.es/download/download.php?filename=slepc-3.6.2.tar.gz
-        (r'\?filename=[a-zA-Z\d+-]+-v?(\d[\da-zA-Z.]*)$', stem),
+        # e.g. http://laws-green.lanl.gov/projects/data/eos/get_file.php?package=eospac&filename=eospac_v6.4.0beta.1_r20171213193219.tgz
+        (r'[?&]filename=[a-zA-Z\d+-]+[_-]v?(\d[\da-zA-Z.]*)', stem),
 
         # e.g. http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz
-        (r'\?package=[a-zA-Z\d+-]+&get=[a-zA-Z\d+-]+-v?(\d[\da-zA-Z.]*)$', stem),  # noqa
+        (r'&get=[a-zA-Z\d+-]+-v?(\d[\da-zA-Z.]*)$', stem),  # noqa
+
+        # 9th Pass: Version in path
+
+        # github.com/repo/name/releases/download/vver/name
+        # e.g. https://github.com/nextflow-io/nextflow/releases/download/v0.20.1/nextflow
+        (r'github\.com/[^/]+/[^/]+/releases/download/[a-zA-Z+._-]*v?(\d[\da-zA-Z._-]*)/', path),  # noqa
+
+        # e.g. ftp://ftp.ncbi.nlm.nih.gov/blast/executables/legacy.NOTSUPPORTED/2.2.26/ncbi.tar.gz
+        (r'(\d[\da-zA-Z._-]*)/[^/]+$', path),
     ]
 
     for i, version_regex in enumerate(version_regexes):
@@ -662,6 +699,9 @@ def parse_name_offset(path, v=None):
         # e.g. http://wwwpub.zih.tu-dresden.de/%7Emlieber/dcount/dcount.php?package=otf&get=OTF-1.12.5salmon.tar.gz
         (r'\?package=([A-Za-z\d+-]+)', stem),
 
+        # ?package=name-version
+        (r'\?package=([A-Za-z\d]+)', suffix),
+
         # download.php
         # e.g. http://apps.fz-juelich.de/jsc/sionlib/download.php?version=1.7.1
         (r'([^/]+)/download.php$', path),
diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py
index 4b8e417a11..939ec797ab 100644
--- a/var/spack/repos/builtin/packages/adios/package.py
+++ b/var/spack/repos/builtin/packages/adios/package.py
@@ -84,7 +84,7 @@ class Adios(AutotoolsPackage):
     depends_on('c-blosc@1.12.0:', when='+blosc')
     # optional transports & file converters
     depends_on('hdf5@1.8:+hl+mpi', when='+hdf5')
-    depends_on('netcdf', when='+netcdf')
+    depends_on('netcdf-c', when='+netcdf')
     depends_on('libevpath', when='staging=flexpath')
     depends_on('dataspaces+mpi', when='staging=dataspaces')
 
diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py
index e5e10db996..29adcddaae 100644
--- a/var/spack/repos/builtin/packages/adios2/package.py
+++ b/var/spack/repos/builtin/packages/adios2/package.py
@@ -85,8 +85,8 @@ class Adios2(CMakePackage):
     # depends_on('flex', when='+sst')      # optional in FFS, depends on BISON
 
     depends_on('mpi', when='+mpi')
-    depends_on('zeromq', when='+dataman')
-    depends_on('zeromq', when='@2.4: +ssc')
+    depends_on('libzmq', when='+dataman')
+    depends_on('libzmq', when='@2.4: +ssc')
     depends_on('dataspaces@1.8.0:', when='+dataspaces')
 
     depends_on('hdf5', when='+hdf5')
diff --git a/var/spack/repos/builtin/packages/adlbx/package.py b/var/spack/repos/builtin/packages/adlbx/package.py
index e4e7c178f9..096a2cedd9 100644
--- a/var/spack/repos/builtin/packages/adlbx/package.py
+++ b/var/spack/repos/builtin/packages/adlbx/package.py
@@ -11,7 +11,7 @@ class Adlbx(AutotoolsPackage):
     """ADLB/X: Master-worker library + work stealing and data dependencies"""
 
     homepage = 'http://swift-lang.org/Swift-T'
-    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/adlbx-0.0.0.tar.gz'
+    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/adlbx-0.9.2.tar.gz'
     git      = "https://github.com/swift-lang/swift-t.git"
 
     version('master', branch='master')
@@ -27,11 +27,11 @@ class Adlbx(AutotoolsPackage):
     depends_on('m4', type='build', when='@master')
     depends_on('mpi')
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         spec = self.spec
-        spack_env.set('CC', spec['mpi'].mpicc)
-        spack_env.set('CXX', spec['mpi'].mpicxx)
-        spack_env.set('CXXLD', spec['mpi'].mpicxx)
+        env.set('CC', spec['mpi'].mpicc)
+        env.set('CXX', spec['mpi'].mpicxx)
+        env.set('CXXLD', spec['mpi'].mpicxx)
 
     @property
     def configure_directory(self):
diff --git a/var/spack/repos/builtin/packages/alglib/package.py b/var/spack/repos/builtin/packages/alglib/package.py
index 30a1c0b2c4..1f01fcc3f5 100644
--- a/var/spack/repos/builtin/packages/alglib/package.py
+++ b/var/spack/repos/builtin/packages/alglib/package.py
@@ -18,9 +18,6 @@ class Alglib(MakefilePackage):
 
     version('3.11.0', sha256='34e391594aac89fb354bdaf58c42849489cd1199197398ba98bb69961f42bdb0')
 
-    def url_for_version(self, version):
-        return 'http://www.alglib.net/translator/re/alglib-{0}.cpp.gpl.tgz'.format(version.dotted)
-
     build_directory = 'src'
 
     def edit(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/allpaths-lg/package.py b/var/spack/repos/builtin/packages/allpaths-lg/package.py
index c8d580d08e..dc2099948d 100644
--- a/var/spack/repos/builtin/packages/allpaths-lg/package.py
+++ b/var/spack/repos/builtin/packages/allpaths-lg/package.py
@@ -11,7 +11,7 @@ class AllpathsLg(AutotoolsPackage):
        small and large (mammalian size) genomes."""
 
     homepage = "http://www.broadinstitute.org/software/allpaths-lg/blog/"
-    url      = "ftp://ftp.broadinstitute.org/pub/crd/ALLPATHS/Release-LG/latest_source_code/LATEST_VERSION.tar.gz"
+    url      = "ftp://ftp.broadinstitute.org/pub/crd/ALLPATHS/Release-LG/latest_source_code/allpathslg-52488.tar.gz"
 
     version('52488', sha256='035b49cb21b871a6b111976757d7aee9c2513dd51af04678f33375e620998542')
 
diff --git a/var/spack/repos/builtin/packages/amp/package.py b/var/spack/repos/builtin/packages/amp/package.py
index 5410db4849..27bc465ffd 100644
--- a/var/spack/repos/builtin/packages/amp/package.py
+++ b/var/spack/repos/builtin/packages/amp/package.py
@@ -110,7 +110,7 @@ def cmake_args(self):
         if '+netcdf' in spec:
             tpl_list = tpl_list + ";NETCDF"
             options.extend(['-DTPL_NETCDF_INSTALL_DIR=%s' %
-                            spec['netcdf'].prefix, ])
+                            spec['netcdf-c'].prefix, ])
         if '+hypre' in spec:
             tpl_list = tpl_list + ";HYPRE"
             options.extend(['-DTPL_HYPRE_INSTALL_DIR=%s' %
diff --git a/var/spack/repos/builtin/packages/aria2/package.py b/var/spack/repos/builtin/packages/aria2/package.py
index 7cb7e3cfae..7518d3b488 100644
--- a/var/spack/repos/builtin/packages/aria2/package.py
+++ b/var/spack/repos/builtin/packages/aria2/package.py
@@ -19,5 +19,5 @@ class Aria2(AutotoolsPackage):
     depends_on('libssh2')
     depends_on('libgcrypt')
     depends_on('zlib')
-    depends_on('cares')
+    depends_on('c-ares')
     depends_on('sqlite')
diff --git a/var/spack/repos/builtin/packages/arm-forge/package.py b/var/spack/repos/builtin/packages/arm-forge/package.py
index 94f853fef6..2434222796 100644
--- a/var/spack/repos/builtin/packages/arm-forge/package.py
+++ b/var/spack/repos/builtin/packages/arm-forge/package.py
@@ -19,107 +19,107 @@ class ArmForge(Package):
     #       versions (and checksums) based on the target platform shows up
 
     version(
-        "19.0.4-linux-rhel6-x86_64",
+        "19.0.4-Redhat-6.0-x86_64",
         sha256="0b0b6ed5c3d6833bad46d5ea84346cd46f0e4b3020c31f2fd4318b75ddaf01aa",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Redhat-6.0-x86_64.tar",
     )
     version(
-        "19.0.4-linux-rhel7-x86_64",
+        "19.0.4-Redhat-7.0-x86_64",
         sha256="de3c669f7cb4daf274aae603294c416a953fb558e101eb03bcccf0ef4291e079",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Redhat-7.0-x86_64.tar",
     )
     version(
-        "19.0.4-linux-sles11-x86_64",
+        "19.0.4-Suse-11-x86_64",
         sha256="24a2c7761c2163f128e4f4b60e963c53774196809ddfa880131c5dde5eb454c2",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Suse-11-x86_64.tar",
     )
     version(
-        "19.0.4-linux-sles12-x86_64",
+        "19.0.4-Suse-12-x86_64",
         sha256="6688192291fe9696922a34371d07ea66f89bff9b976fd99796e5f9a6651f86e6",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Suse-12-x86_64.tar",
     )
     version(
-        "19.0.4-linux-sles15-x86_64",
+        "19.0.4-Suse-15-x86_64",
         sha256="dea60d93a157ab6952fd6887f40123ab9d633d5589ffe7824d53fb269294cf35",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Suse-15-x86_64.tar",
     )
     version(
-        "19.0.4-linux-ubuntu16.04-x86_64",
+        "19.0.4-19.0.4-Ubuntu-16.04-x86_64",
         sha256="240741beff96f6a0b3976bc98d90863fe475366d5c093af9b96b877a230d479c",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Ubuntu-16.04-x86_64.tar",
     )
     version(
-        "19.0.4-linux-ubuntu14.04-x86_64",
+        "19.0.4-Ubuntu-14.04-x86_64",
         sha256="135903906111b61045ddd3e98f1d8e8fd02b5b6ef554a68dfbe6760c76ec65a2",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Ubuntu-14.04-x86_64.tar",
     )
     version(
-        "19.0.4-linux-rhel7-ppc64le",
+        "19.0.4-Redhat-7.2-ppc64le",
         sha256="73cb9f4005278e8dd2106a871dcbb53edb8855faeeda75c7abd7936f85fcce56",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Redhat-7.2-ppc64le.tar",
     )
     version(
-        "19.0.4-linux-rhel7-aarch64",
+        "19.0.4-Redhat-7.4-aarch64",
         sha256="8d168e5665a158f65b72d7b996fd283f7f538efbff15648eff44cfb7371ecad7",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Redhat-7.4-aarch64.tar",
     )
     version(
-        "19.0.4-linux-sles12-aarch64",
+        "19.0.4-Suse-12-aarch64",
         sha256="de3aa62c5b5d5181a7947dcd1dfa66df5d06fd482394044100147210c8182d75",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Suse-12-aarch64.tar",
     )
     version(
-        "19.0.4-linux-ubuntu16.04-aarch64",
+        "19.0.4-Ubuntu-16.04-aarch64",
         sha256="3910e320c635dd5c09af7f5696909c7c0ae25406910d2e592e522ed0233e0451",
         url="http://content.allinea.com/downloads/arm-forge-19.0.4-Ubuntu-16.04-aarch64.tar",
     )
     version(
-        "19.0.3-linux-rhel6-x86_64",
+        "19.0.3-Redhat-6.0-x86_64",
         sha256="0ace88a1847d8f622f077cd38fa9dddf7f2d6dd6aad086be0e0a66e10fb8b64b",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Redhat-6.0-x86_64.tar",
     )
     version(
-        "19.0.3-linux-rhel7-x86_64",
+        "19.0.3-Redhat-7.0-x86_64",
         sha256="35c7a9532aa19251343c37b8f5eb51ef04f7b6e8b42bea2bd932f4d83a1e8375",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Redhat-7.0-x86_64.tar",
     )
     version(
-        "19.0.3-linux-sles11-x86_64",
+        "19.0.3-Suse-11-x86_64",
         sha256="48fe2b1b81a824909fedf5e02cd08d8a62033cce80440eca6efbea0ae8023e75",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Suse-11-x86_64.tar",
     )
     version(
-        "19.0.3-linux-sles12-x86_64",
+        "19.0.3-Suse-12-x86_64",
         sha256="b4d0f91780dc43544ea946f5117a50ba18750fd50ef811cae5b6b6771b4ebb77",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Suse-12-x86_64.tar",
     )
     version(
-        "19.0.3-linux-ubuntu16.04-x86_64",
+        "19.0.3-Ubuntu-16.04-x86_64",
         sha256="ed6726434a6d24d413ed6183756433d63438936dc671cb6a3567b407c8e233e1",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Ubuntu-16.04-x86_64.tar",
     )
     version(
-        "19.0.3-linux-ubuntu14.04-x86_64",
+        "19.0.3-Ubuntu-14.04-x86_64",
         sha256="22350d068c4ef60d1aad330636d443f00269c0cc49bed4c05b80f93b9d9a9c66",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Ubuntu-14.04-x86_64.tar",
     )
     version(
-        "19.0.3-linux-rhel7-ppc64le",
+        "19.0.3-Redhat-7.2-ppc64le",
         sha256="dc6ea53eead78f0d9ffd8fa74ffddb80e8bd3b4ab8a1edd6f8505ffbea9cea15",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Redhat-7.2-ppc64le.tar",
     )
     version(
-        "19.0.3-linux-rhel7-aarch64",
+        "19.0.3-Redhat-7.4-aarch64",
         sha256="4e19d4200e2936d542bf2b9dc79c7f8b00ccfb37b9191dfc90ac0787680a8b0c",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Redhat-7.4-aarch64.tar",
     )
     version(
-        "19.0.3-linux-sles12-aarch64",
+        "19.0.3-Suse-12-aarch64",
         sha256="9b27b678d0228b4e51fd517ef0acd1df65b780a3a0b226caa6b6f1b7dccf31e6",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Suse-12-aarch64.tar",
     )
     version(
-        "19.0.3-linux-ubuntu16.04-aarch64",
+        "19.0.3-Ubuntu-16.04-aarch64",
         sha256="4470f7067d4a4e0369df8af28b6ca95f58fa0062bf8dffc49f0b7415112c0332",
         url="http://content.allinea.com/downloads/arm-forge-19.0.3-Ubuntu-16.04-aarch64.tar",
     )
diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py
index de4c92c385..dd2576bb55 100644
--- a/var/spack/repos/builtin/packages/armadillo/package.py
+++ b/var/spack/repos/builtin/packages/armadillo/package.py
@@ -12,7 +12,7 @@ class Armadillo(CMakePackage):
     ease of use."""
 
     homepage = "http://arma.sourceforge.net/"
-    url = "http://sourceforge.net/projects/arma/files/armadillo-7.200.1.tar.xz"
+    url = "http://sourceforge.net/projects/arma/files/armadillo-8.100.1.tar.xz"
 
     version('8.100.1', sha256='54773f7d828bd3885c598f90122b530ded65d9b195c9034e082baea737cd138d')
     version('7.950.1', sha256='a32da32a0ea420b8397a53e4b40ed279c1a5fc791dd492a2ced81ffb14ad0d1b')
diff --git a/var/spack/repos/builtin/packages/asagi/package.py b/var/spack/repos/builtin/packages/asagi/package.py
index f24c83a68d..f99bad2f7e 100644
--- a/var/spack/repos/builtin/packages/asagi/package.py
+++ b/var/spack/repos/builtin/packages/asagi/package.py
@@ -46,8 +46,8 @@ class Asagi(CMakePackage):
 
     depends_on('mpi', when="+mpi")
     depends_on('mpi@3:', when="+mpi3")
-    depends_on('netcdf +mpi', when="+mpi")
-    depends_on('netcdf ~mpi', when="~mpi")
+    depends_on('netcdf-c +mpi', when="+mpi")
+    depends_on('netcdf-c ~mpi', when="~mpi")
     depends_on('numactl', when="+numa")
 
     conflicts('%gcc@5:', when='@:1.0.0')
diff --git a/var/spack/repos/builtin/packages/ascent/package.py b/var/spack/repos/builtin/packages/ascent/package.py
index 8d8210edd1..4e31fa051e 100644
--- a/var/spack/repos/builtin/packages/ascent/package.py
+++ b/var/spack/repos/builtin/packages/ascent/package.py
@@ -96,15 +96,17 @@ class Ascent(Package):
     # TPLs for Runtime Features
     #############################
 
-    depends_on("vtkh@develop",             when="+vtkh")
-    depends_on("vtkh@develop~openmp",      when="+vtkh~openmp")
-    depends_on("vtkh@develop+cuda+openmp", when="+vtkh+cuda+openmp")
-    depends_on("vtkh@develop+cuda~openmp", when="+vtkh+cuda~openmp")
+    depends_on("vtk-m", when="+vtkh")
 
-    depends_on("vtkh@develop~shared",             when="~shared+vtkh")
-    depends_on("vtkh@develop~shared~openmp",      when="~shared+vtkh~openmp")
-    depends_on("vtkh@develop~shared+cuda",        when="~shared+vtkh+cuda")
-    depends_on("vtkh@develop~shared+cuda~openmp", when="~shared+vtkh+cuda~openmp")
+    depends_on("vtk-h@develop",             when="+vtkh")
+    depends_on("vtk-h@develop~openmp",      when="+vtkh~openmp")
+    depends_on("vtk-h@develop+cuda+openmp", when="+vtkh+cuda+openmp")
+    depends_on("vtk-h@develop+cuda~openmp", when="+vtkh+cuda~openmp")
+
+    depends_on("vtk-h@develop~shared",             when="~shared+vtkh")
+    depends_on("vtk-h@develop~shared~openmp",      when="~shared+vtkh~openmp")
+    depends_on("vtk-h@develop~shared+cuda",        when="~shared+vtkh+cuda")
+    depends_on("vtk-h@develop~shared+cuda~openmp", when="~shared+vtkh+cuda~openmp")
 
     # mfem
     depends_on("mfem+shared+mpi+conduit", when="+shared+mfem+mpi")
@@ -178,8 +180,8 @@ def check_install(self):
                          create=True):
             cmake_args = ["-DASCENT_DIR={0}".format(install_prefix),
                           "-DCONDUIT_DIR={0}".format(spec['conduit'].prefix),
-                          "-DVTKM_DIR={0}".format(spec['vtkm'].prefix),
-                          "-DVTKH_DIR={0}".format(spec['vtkh'].prefix),
+                          "-DVTKM_DIR={0}".format(spec['vtk-m'].prefix),
+                          "-DVTKH_DIR={0}".format(spec['vtk-h'].prefix),
                           example_src_dir]
             cmake(*cmake_args)
             make()
@@ -405,10 +407,10 @@ def create_host_config(self, spec, prefix, py_site_pkgs_dir=None):
 
         if "+vtkh" in spec:
             cfg.write("# vtk-m from spack\n")
-            cfg.write(cmake_cache_entry("VTKM_DIR", spec['vtkm'].prefix))
+            cfg.write(cmake_cache_entry("VTKM_DIR", spec['vtk-m'].prefix))
 
             cfg.write("# vtk-h from spack\n")
-            cfg.write(cmake_cache_entry("VTKH_DIR", spec['vtkh'].prefix))
+            cfg.write(cmake_cache_entry("VTKH_DIR", spec['vtk-h'].prefix))
 
         else:
             cfg.write("# vtk-h not built by spack \n")
diff --git a/var/spack/repos/builtin/packages/augustus/package.py b/var/spack/repos/builtin/packages/augustus/package.py
index 18b30d29d4..c909ce102a 100644
--- a/var/spack/repos/builtin/packages/augustus/package.py
+++ b/var/spack/repos/builtin/packages/augustus/package.py
@@ -16,7 +16,7 @@ class Augustus(MakefilePackage):
     # Releases have moved to github
 
     version('3.3.2', sha256='d09f972cfd88deb34b19b69878eb8af3bbbe4f1cde1434b69cedc2aa6247a0f2')
-    version('3.3.1', sha256='011379606f381ee21b9716f83e8a1a57b2aaa01aefeebd2748104efa08c47cab',
+    version('3.3.1-tag1', sha256='011379606f381ee21b9716f83e8a1a57b2aaa01aefeebd2748104efa08c47cab',
             url='https://github.com/Gaius-Augustus/Augustus/archive/v3.3.1-tag1.tar.gz')
     version('3.3',   sha256='b5eb811a4c33a2cc3bbd16355e19d530eeac6d1ac923e59f48d7a79f396234ee',
             url='http://bioinf.uni-greifswald.de/augustus/binaries/old/augustus-3.3.tar.gz')
@@ -98,7 +98,7 @@ def filter_sbang(self):
             for file in files:
                 filter_file(pattern, repl, *files, backup=False)
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.set('AUGUSTUS_CONFIG_PATH', join_path(
+    def setup_run_environment(self, env):
+        env.set('AUGUSTUS_CONFIG_PATH', join_path(
             self.prefix, 'config'))
-        run_env.prepend_path('PATH', join_path(self.prefix, 'scripts'))
+        env.prepend_path('PATH', join_path(self.prefix, 'scripts'))
diff --git a/var/spack/repos/builtin/packages/autofact/package.py b/var/spack/repos/builtin/packages/autofact/package.py
index a22af26671..44bb89bff1 100644
--- a/var/spack/repos/builtin/packages/autofact/package.py
+++ b/var/spack/repos/builtin/packages/autofact/package.py
@@ -16,9 +16,9 @@ class Autofact(Package):
     version('3_4', sha256='1465d263b19adb42f01f6e636ac40ef1c2e3dbd63461f977b89da9493fe9c6f4')
 
     depends_on('perl', type='run')
-    depends_on('perl-bio-perl', type='run')
+    depends_on('perl-bioperl', type='run')
     depends_on('perl-io-string', type='run')
-    depends_on('perl-lwp', type='run')
+    depends_on('perl-libwww-perl', type='run')
     depends_on('blast-legacy', type='run')
 
     def patch(self):
@@ -31,6 +31,6 @@ def patch(self):
     def install(self, spec, prefix):
         install_tree(self.stage.source_path, prefix)
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.prepend_path('PATH', self.prefix.scripts)
-        run_env.set('PATH2AUTOFACT', self.prefix)
+    def setup_run_environment(self, env):
+        env.prepend_path('PATH', self.prefix.scripts)
+        env.set('PATH2AUTOFACT', self.prefix)
diff --git a/var/spack/repos/builtin/packages/axl/package.py b/var/spack/repos/builtin/packages/axl/package.py
index a524ca0643..85b5e0873d 100644
--- a/var/spack/repos/builtin/packages/axl/package.py
+++ b/var/spack/repos/builtin/packages/axl/package.py
@@ -20,7 +20,7 @@ class Axl(CMakePackage):
     """Asynchronous transfer library"""
 
     homepage = "https://github.com/ECP-VeloC/AXL"
-    url      = "https://github.com/ECP-VeloC/AXL/archive/v0.1.0.zip"
+    url      = "https://github.com/ECP-VeloC/AXL/archive/v0.1.1.zip"
     git      = "https://github.com/ecp-veloc/axl.git"
 
     tags = ['ecp']
diff --git a/var/spack/repos/builtin/packages/biopieces/package.py b/var/spack/repos/builtin/packages/biopieces/package.py
index 2091f8508f..888ef18ccb 100644
--- a/var/spack/repos/builtin/packages/biopieces/package.py
+++ b/var/spack/repos/builtin/packages/biopieces/package.py
@@ -21,21 +21,21 @@ class Biopieces(Package):
     depends_on('perl-module-build', type=('build', 'run'))
     depends_on('perl-bit-vector', type=('build', 'run'))
     depends_on('perl-svg', type=('build', 'run'))
-    depends_on('perl-term-readkey', type=('build', 'run'))
+    depends_on('perl-termreadkey', type=('build', 'run'))
     depends_on('perl-time-hires', type=('build', 'run'))
     depends_on('perl-dbi', type=('build', 'run'))
     depends_on('perl-xml-parser', type=('build', 'run'))
     depends_on('perl-carp-clan', type=('build', 'run'))
     depends_on('perl-class-inspector', type=('build', 'run'))
     depends_on('perl-html-parser', type=('build', 'run'))
-    depends_on('perl-lwp', type=('build', 'run'))
+    depends_on('perl-libwww-perl', type=('build', 'run'))
     depends_on('perl-soap-lite', type=('build', 'run'))
     depends_on('perl-uri', type=('build', 'run'))
     depends_on('perl-inline', type=('build', 'run'))
     depends_on('perl-inline-c', type=('build', 'run'))
     depends_on('perl-parse-recdescent', type=('build', 'run'))
-    depends_on('perl-version', type=('build', 'run'))
-    depends_on('perl-dbfile', type=('build', 'run'))
+    depends_on('perl-perl-version', type=('build', 'run'))
+    depends_on('perl-db-file', type=('build', 'run'))
     depends_on('perl-dbd-mysql', type=('build', 'run'))
 
     depends_on('ruby@1.9:')
@@ -61,10 +61,10 @@ class Biopieces(Package):
     def install(self, spec, prefix):
         install_tree('.', prefix)
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_run_environment(self, env):
         # Note: user will need to set environment variables on their own,
         # dependent on where they will want data to be located:
         #    BP_DATA - Contains genomic data etc.
         #    BP_TMP - Required temporary directory
         #    BP_LOG - Required log directory
-        run_env.prepend_path('BP_DIR', prefix)
+        env.prepend_path('BP_DIR', self.prefix)
diff --git a/var/spack/repos/builtin/packages/breakdancer/package.py b/var/spack/repos/builtin/packages/breakdancer/package.py
index 3ad2cdfc01..c943e88502 100644
--- a/var/spack/repos/builtin/packages/breakdancer/package.py
+++ b/var/spack/repos/builtin/packages/breakdancer/package.py
@@ -32,7 +32,7 @@ class Breakdancer(CMakePackage):
 
     depends_on('perl-statistics-descriptive', type='run')
     depends_on('perl-math-cdf', type='run')
-    depends_on('perl-gd-graph', type='run')
+    depends_on('perl-gdgraph', type='run')
     depends_on('perl-gdgraph-histogram', type='run')
     depends_on('perl-list-moreutils', type='run')
     depends_on('perl-exporter-tiny', type='run')
@@ -41,9 +41,9 @@ class Breakdancer(CMakePackage):
 
     parallel = False
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_run_environment(self, env):
         # get the perl tools in the path
-        run_env.prepend_path('PATH', self.prefix.lib)
+        env.prepend_path('PATH', self.prefix.lib)
 
     def edit(self, spec, prefix):
         # perl tools end up in a silly lib subdirectory, fixing that
diff --git a/var/spack/repos/builtin/packages/bsseeker2/package.py b/var/spack/repos/builtin/packages/bsseeker2/package.py
index 73fd8ca24b..5b78294250 100644
--- a/var/spack/repos/builtin/packages/bsseeker2/package.py
+++ b/var/spack/repos/builtin/packages/bsseeker2/package.py
@@ -13,7 +13,7 @@ class Bsseeker2(Package):
     url      = "https://github.com/BSSeeker/BSseeker2/archive/BSseeker2-v2.1.8.tar.gz"
 
     version('2.1.8', sha256='34ebedce36a0fca9e22405d4c2c20bc978439d4a34d1d543657fbc53ff847934')
-    version('2.1.5', sha256='ac90fb4ad8853ee920f1ffea2b1a8cfffcdb1508ff34be0091d5a9c90ac8c74a',
+    version('2.1.7', sha256='ac90fb4ad8853ee920f1ffea2b1a8cfffcdb1508ff34be0091d5a9c90ac8c74a',
             url='https://github.com/BSSeeker/BSseeker2/archive/v2.1.7.tar.gz')
     version('2.1.2', sha256='08055dd314f85a9b74c259c2cb894ea2affdab2c7a120af3589c649e1900c5c6',
             url='https://github.com/BSSeeker/BSseeker2/archive/v2.1.2.tar.gz')
diff --git a/var/spack/repos/builtin/packages/cares/package.py b/var/spack/repos/builtin/packages/c-ares/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/cares/package.py
rename to var/spack/repos/builtin/packages/c-ares/package.py
index f3b35ee610..2311e4ac91 100644
--- a/var/spack/repos/builtin/packages/cares/package.py
+++ b/var/spack/repos/builtin/packages/c-ares/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Cares(CMakePackage):
+class CAres(CMakePackage):
     """c-ares: A C library for asynchronous DNS requests"""
 
     homepage = "https://c-ares.haxx.se"
diff --git a/var/spack/repos/builtin/packages/c-blosc2/package.py b/var/spack/repos/builtin/packages/c-blosc2/package.py
index 1596a9c1d5..450e93ed2c 100644
--- a/var/spack/repos/builtin/packages/c-blosc2/package.py
+++ b/var/spack/repos/builtin/packages/c-blosc2/package.py
@@ -11,7 +11,6 @@ class CBlosc2(CMakePackage):
        other bells and whistles"""
 
     homepage = "http://www.blosc.org"
-    url      = "https://github.com/Blosc/c-blosc2/archive/v2.0.0-beta.1.tar.gz"
     git      = "https://github.com/Blosc/c-blosc2.git"
 
     maintainers = ['ax3l']
diff --git a/var/spack/repos/builtin/packages/candle-benchmarks/package.py b/var/spack/repos/builtin/packages/candle-benchmarks/package.py
index fb8401108d..5fcee8deeb 100644
--- a/var/spack/repos/builtin/packages/candle-benchmarks/package.py
+++ b/var/spack/repos/builtin/packages/candle-benchmarks/package.py
@@ -10,7 +10,7 @@ class CandleBenchmarks(Package):
     """ECP-CANDLE Benchmarks"""
 
     homepage = "https://github.com/ECP-CANDLE/Benchmarks"
-    url      = "https://github.com/ECP-CANDLE/Benchmarks/archive/v1.0.tar.gz"
+    url      = "https://github.com/ECP-CANDLE/Benchmarks/archive/v0.1.tar.gz"
 
     tags = ['proxy-app', 'ecp-proxy-app']
 
diff --git a/var/spack/repos/builtin/packages/catch/package.py b/var/spack/repos/builtin/packages/catch2/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/catch/package.py
rename to var/spack/repos/builtin/packages/catch2/package.py
index a9d8cb412b..939706c823 100644
--- a/var/spack/repos/builtin/packages/catch/package.py
+++ b/var/spack/repos/builtin/packages/catch2/package.py
@@ -6,11 +6,12 @@
 from spack import *
 
 
-class Catch(CMakePackage):
-    """Catch tests"""
+class Catch2(CMakePackage):
+    """Catch2 is a multi-paradigm test framework for C++, which also
+    supports Objective-C (and maybe C)."""
 
     homepage = "https://github.com/catchorg/Catch2"
-    url = "https://github.com/catchorg/Catch2/archive/v1.3.0.tar.gz"
+    url      = "https://github.com/catchorg/Catch2/archive/v2.9.1.tar.gz"
 
     variant('single_header', default=True,
             description='Install a single header only.')
diff --git a/var/spack/repos/builtin/packages/cdo/package.py b/var/spack/repos/builtin/packages/cdo/package.py
index 7711128186..0c0692852a 100644
--- a/var/spack/repos/builtin/packages/cdo/package.py
+++ b/var/spack/repos/builtin/packages/cdo/package.py
@@ -51,7 +51,7 @@ class Cdo(AutotoolsPackage):
 
     depends_on('pkgconfig', type='build')
 
-    depends_on('netcdf', when='+netcdf')
+    depends_on('netcdf-c', when='+netcdf')
     # In this case CDO does not depend on hdf5 directly but we need the backend
     # of netcdf to be thread safe.
     depends_on('hdf5+threadsafe', when='+netcdf')
@@ -63,7 +63,7 @@ class Cdo(AutotoolsPackage):
 
     depends_on('hdf5+threadsafe', when='+hdf5')
 
-    depends_on('udunits2', when='+udunits2')
+    depends_on('udunits', when='+udunits2')
     depends_on('libxml2', when='+libxml2')
     depends_on('proj@:5', when='+proj')
     depends_on('curl', when='+curl')
diff --git a/var/spack/repos/builtin/packages/ceed/README.md b/var/spack/repos/builtin/packages/ceed/README.md
deleted file mode 100644
index 74bcae1d17..0000000000
--- a/var/spack/repos/builtin/packages/ceed/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a bundle for the CEED software suite.
-
-See https://ceed.exascaleproject.org for details.
diff --git a/var/spack/repos/builtin/packages/ceed/package.py b/var/spack/repos/builtin/packages/ceed/package.py
index 4d598c03db..d594ac5544 100644
--- a/var/spack/repos/builtin/packages/ceed/package.py
+++ b/var/spack/repos/builtin/packages/ceed/package.py
@@ -4,10 +4,9 @@
 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
 
 from spack import *
-import os
 
 
-class Ceed(Package):
+class Ceed(BundlePackage):
     """Ceed is a collection of benchmarks, miniapps, software libraries and
        APIs for efficient high-order finite element and spectral element
        discretizations for exascale applications developed in the Department of
@@ -17,12 +16,6 @@ class Ceed(Package):
 
     homepage = "https://ceed.exascaleproject.org"
 
-    url  = 'file://' + os.path.dirname(__file__) + '/README.md'
-    sha256 = '418c4b6b6a098648e25befdc28cdf9c351ecea9deaa660c0d9a674f8c6917122'
-
-    version('2.0.0', sha256, expand=False)
-    version('1.0.0', sha256, expand=False)
-
     variant('cuda', default=False,
             description='Build MAGMA; enable CUDA support in libCEED and OCCA')
     variant('mfem', default=True, description='Build MFEM and Laghos')
@@ -139,7 +132,3 @@ class Ceed(Package):
 
     # If using gcc version <= 4.8 build suite-sparse version <= 5.1.0
     depends_on('suite-sparse@:5.1.0', when='@1.0.0%gcc@:4.8+mfem+petsc')
-
-    # Dummy install
-    def install(self, spec, prefix):
-        install('README.md', prefix)
diff --git a/var/spack/repos/builtin/packages/channelflow/package.py b/var/spack/repos/builtin/packages/channelflow/package.py
index 4a22819678..fad8a1d018 100644
--- a/var/spack/repos/builtin/packages/channelflow/package.py
+++ b/var/spack/repos/builtin/packages/channelflow/package.py
@@ -12,13 +12,9 @@ class Channelflow(CMakePackage):
     """
 
     homepage = 'https://github.com/epfl-ecps/channelflow'
-    url = 'https://github.com/epfl-ecps/channelflow.git'
+    git      = 'https://github.com/epfl-ecps/channelflow.git'
 
-    version(
-        'develop',
-        git='https://github.com/epfl-ecps/channelflow.git',
-        branch='master'
-    )
+    version('master', branch='master')
 
     variant('shared', default=True, description='Build shared libs')
     variant('mpi', default=True, description='Enable MPI parallelism')
@@ -38,8 +34,8 @@ class Channelflow(CMakePackage):
 
     # Support for different I/O formats
     depends_on('hdf5+cxx', when='+hdf5')
-    depends_on('netcdf', when='netcdf=serial')
-    depends_on('netcdf+mpi', when='netcdf=parallel')
+    depends_on('netcdf-c', when='netcdf=serial')
+    depends_on('netcdf-c+mpi', when='netcdf=parallel')
 
     # Python bindings
     depends_on('boost+python', when='+python')
@@ -73,7 +69,7 @@ def cmake_args(self):
         }
 
         args.append('-DWITH_NETCDF:STRING={0}'.format(
-            netcdf_str[spec.variants['netcdf'].value]
+            netcdf_str[spec.variants['netcdf-c'].value]
         ))
 
         # Set an MPI compiler for parallel builds
diff --git a/var/spack/repos/builtin/packages/check/package.py b/var/spack/repos/builtin/packages/check/package.py
index ed7e933bc8..95076fdfc1 100644
--- a/var/spack/repos/builtin/packages/check/package.py
+++ b/var/spack/repos/builtin/packages/check/package.py
@@ -15,6 +15,8 @@ class Check(AutotoolsPackage):
     logging format."""
 
     homepage = "https://libcheck.github.io/check/index.html"
-    url      = "https://downloads.sourceforge.net/project/check/check/0.10.0/check-0.10.0.tar.gz"
+    url      = "https://github.com/libcheck/check/releases/download/0.12.0/check-0.12.0.tar.gz"
 
+    version('0.12.0', sha256='464201098bee00e90f5c4bdfa94a5d3ead8d641f9025b560a27755a83b824234')
+    version('0.11.0', sha256='24f7a48aae6b74755bcbe964ce8bc7240f6ced2141f8d9cf480bc3b3de0d5616')
     version('0.10.0', sha256='f5f50766aa6f8fe5a2df752666ca01a950add45079aa06416b83765b1cf71052')
diff --git a/var/spack/repos/builtin/packages/clustalo/package.py b/var/spack/repos/builtin/packages/clustal-omega/package.py
similarity index 93%
rename from var/spack/repos/builtin/packages/clustalo/package.py
rename to var/spack/repos/builtin/packages/clustal-omega/package.py
index 59b7606e6c..7c32f1f096 100644
--- a/var/spack/repos/builtin/packages/clustalo/package.py
+++ b/var/spack/repos/builtin/packages/clustal-omega/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Clustalo(AutotoolsPackage):
+class ClustalOmega(AutotoolsPackage):
     """Clustal Omega: the last alignment program you'll ever need."""
 
     homepage = "http://www.clustal.org/omega/"
diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py
index 31460e1645..ef8dd2f94b 100644
--- a/var/spack/repos/builtin/packages/cmor/package.py
+++ b/var/spack/repos/builtin/packages/cmor/package.py
@@ -24,8 +24,8 @@ class Cmor(AutotoolsPackage):
     variant('python', default=False, description='Enable PYTHON support')
 
     depends_on('uuid')
-    depends_on('netcdf')
-    depends_on('udunits2')
+    depends_on('netcdf-c')
+    depends_on('udunits')
     depends_on('hdf5@:1.8.19')
 
     extends('python', when='+python')
diff --git a/var/spack/repos/builtin/packages/cppzmq/package.py b/var/spack/repos/builtin/packages/cppzmq/package.py
index 0adaebf9c3..0a29b1b194 100644
--- a/var/spack/repos/builtin/packages/cppzmq/package.py
+++ b/var/spack/repos/builtin/packages/cppzmq/package.py
@@ -18,5 +18,5 @@ class Cppzmq(CMakePackage):
     version('4.2.2', sha256='3ef50070ac5877c06c6bb25091028465020e181bbfd08f110294ed6bc419737d')
 
     depends_on('cmake@3.0.0:', type='build')
-    depends_on('zeromq@4.2.5', when='@4.3.0')
-    depends_on('zeromq@4.2.2', when='@4.2.2')
+    depends_on('libzmq@4.2.5', when='@4.3.0')
+    depends_on('libzmq@4.2.2', when='@4.2.2')
diff --git a/var/spack/repos/builtin/packages/cquery/package.py b/var/spack/repos/builtin/packages/cquery/package.py
index 40edd13ce2..86ad88db71 100644
--- a/var/spack/repos/builtin/packages/cquery/package.py
+++ b/var/spack/repos/builtin/packages/cquery/package.py
@@ -11,10 +11,10 @@ class Cquery(CMakePackage):
     """
 
     homepage = "https://github.com/cquery-project/cquery"
-    url      = "https://github.com/cquery-project/cquery/archive/v20180718.tar.gz"
+    git      = "https://github.com/cquery-project/cquery.git"
 
-    version('v20180823', commit='70c755b2e390d3edfb594a84a7531beb26b2bc07',
-            submodules=True, git='https://github.com/cquery-project/cquery')
+    version('2018-08-23', commit='70c755b2e390d3edfb594a84a7531beb26b2bc07',
+            submodules=True)
 
     depends_on('llvm')
 
diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py
index 9076ac78b1..17411dcddb 100644
--- a/var/spack/repos/builtin/packages/cub/package.py
+++ b/var/spack/repos/builtin/packages/cub/package.py
@@ -11,7 +11,7 @@ class Cub(Package):
     and other utilities for CUDA kernel programming."""
 
     homepage = "https://nvlabs.github.com/cub"
-    url      = "https://github.com/NVlabs/cub/archive/1.6.4.zip"
+    url      = "https://github.com/NVlabs/cub/archive/1.7.1.zip"
 
     version('1.7.1', sha256='50b8777b83093fdfdab429a61fccdbfbbb991b3bbc08385118e5ad58e8f62e1d')
 
diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py
index b92de9106a..053d72aa2f 100644
--- a/var/spack/repos/builtin/packages/czmq/package.py
+++ b/var/spack/repos/builtin/packages/czmq/package.py
@@ -19,8 +19,8 @@ class Czmq(AutotoolsPackage):
     depends_on('automake', type='build')
     depends_on('autoconf', type='build')
     depends_on('pkgconfig', type='build')
-    depends_on("libuuid")
-    depends_on('zeromq')
+    depends_on('libuuid')
+    depends_on('libzmq')
 
     def autoreconf(self, spec, prefix):
         autogen = Executable('./autogen.sh')
diff --git a/var/spack/repos/builtin/packages/damaris/package.py b/var/spack/repos/builtin/packages/damaris/package.py
index 6c3ec891bd..6988973a7b 100644
--- a/var/spack/repos/builtin/packages/damaris/package.py
+++ b/var/spack/repos/builtin/packages/damaris/package.py
@@ -12,10 +12,10 @@ class Damaris(CMakePackage):
     targeting large-scale, MPI-based HPC simulations."""
 
     homepage = "https://project.inria.fr/damaris/"
-    url = "https://gitlab.inria.fr/Damaris/damaris"
+    git      = "https://gitlab.inria.fr/Damaris/damaris.git"
 
-    version('master', git='https://gitlab.inria.fr/Damaris/damaris.git')
-    version('1.3.1',  git='https://gitlab.inria.fr/Damaris/damaris.git', tag='v1.3.1', preferred=True)
+    version('master', branch='master')
+    version('1.3.1',  tag='v1.3.1')
 
     variant('fortran',  default=True,  description='Enables Fortran support')
     variant('hdf5',     default=False, description='Enables the HDF5 storage plugin')
diff --git a/var/spack/repos/builtin/packages/davix/package.py b/var/spack/repos/builtin/packages/davix/package.py
index 381251a62d..e1b66e6d39 100644
--- a/var/spack/repos/builtin/packages/davix/package.py
+++ b/var/spack/repos/builtin/packages/davix/package.py
@@ -10,7 +10,7 @@ class Davix(CMakePackage):
     """High-performance file management over WebDAV/HTTP."""
 
     homepage = "https://dmc.web.cern.ch/projects/davix"
-    url      = "http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/0.6.7/davix-0.6.7.tar.gz"
+    url      = "http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/0.6.8/davix-0.6.8.tar.gz"
     list_url = "http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/"
     list_depth = 1
 
diff --git a/var/spack/repos/builtin/packages/dbcsr/package.py b/var/spack/repos/builtin/packages/dbcsr/package.py
index 0fef73b8fa..82a1cca300 100644
--- a/var/spack/repos/builtin/packages/dbcsr/package.py
+++ b/var/spack/repos/builtin/packages/dbcsr/package.py
@@ -10,9 +10,9 @@ class Dbcsr(CMakePackage):
     """Distributed Block Compressed Sparse Row matrix library."""
 
     homepage = "https://github.com/cp2k/dbcsr"
-    url      = "https://github.com/cp2k/dbcsr/archive/v1.0.0-rc.0.tar.gz"
+    git      = "https://github.com/cp2k/dbcsr.git"
 
-    version('develop', git='https://github.com/cp2k/dbcsr.git', branch='develop')
+    version('develop', branch='develop')
 
     variant('mpi',    default=True,  description='Compile with MPI')
     variant('openmp', default=False, description='Build with OpenMP support')
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index 109b67da2d..9f1796f5b4 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -137,7 +137,7 @@ class Dealii(CMakePackage, CudaPackage):
     depends_on('metis@5:~int64',   when='+metis~int64')
     depends_on('muparser', when='+muparser')
     depends_on('nanoflann',        when='@9.0:+nanoflann')
-    depends_on('netcdf+mpi',       when='+netcdf+mpi')
+    depends_on('netcdf-c+mpi',     when='+netcdf+mpi')
     depends_on('netcdf-cxx',       when='+netcdf+mpi')
     depends_on('oce',              when='+oce')
     depends_on('p4est',            when='+p4est+mpi')
@@ -393,13 +393,13 @@ def cmake_args(self):
 
         # since Netcdf is spread among two, need to do it by hand:
         if '+netcdf' in spec and '+mpi' in spec:
-            netcdf = spec['netcdf-cxx'].libs + spec['netcdf'].libs
+            netcdf = spec['netcdf-cxx'].libs + spec['netcdf-c'].libs
             options.extend([
                 '-DNETCDF_FOUND=true',
                 '-DNETCDF_LIBRARIES=%s' % netcdf.joined(';'),
                 '-DNETCDF_INCLUDE_DIRS=%s;%s' % (
                     spec['netcdf-cxx'].prefix.include,
-                    spec['netcdf'].prefix.include),
+                    spec['netcdf-c'].prefix.include),
             ])
         else:
             options.extend([
@@ -447,5 +447,5 @@ def cmake_args(self):
 
         return options
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.set('DEAL_II_DIR', self.prefix)
+    def setup_run_environment(self, env):
+        env.set('DEAL_II_DIR', self.prefix)
diff --git a/var/spack/repos/builtin/packages/dislin/package.py b/var/spack/repos/builtin/packages/dislin/package.py
index cfdffeb9ba..ca380ebb7a 100644
--- a/var/spack/repos/builtin/packages/dislin/package.py
+++ b/var/spack/repos/builtin/packages/dislin/package.py
@@ -14,7 +14,7 @@ class Dislin(Package):
     homepage = "http://www.mps.mpg.de/dislin"
     url      = "ftp://ftp.gwdg.de/pub/grafik/dislin/linux/i586_64/dislin-11.0.linux.i586_64.tar.gz"
 
-    version('11.2.linux.i586_64', sha256='13d28188924e0b0b803d72aa4b48be4067e98e890701b0aa6f54a11c7d34dd10')
+    version('11.0', sha256='13d28188924e0b0b803d72aa4b48be4067e98e890701b0aa6f54a11c7d34dd10')
 
     depends_on('motif')
     depends_on('gl')
@@ -39,16 +39,18 @@ def libs(self):
             libraries, root=self.prefix, shared=True, recursive=True
         )
 
-    def setup_environment(self, spack_env, run_env):
-        spack_env.set('DISLIN', self.prefix)
-        run_env.set('DISLIN', self.prefix)
-        run_env.prepend_path('PATH', self.prefix)
-        run_env.prepend_path('LD_LIBRARY_PATH', self.prefix)
-        run_env.prepend_path('LD_LIBRARY_PATH', self.spec['motif'].prefix.lib)
-        run_env.prepend_path('LD_LIBRARY_PATH', self.spec['mesa'].prefix.lib)
+    def setup_build_environment(self, env):
+        env.set('DISLIN', self.prefix)
 
-    def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
-        run_env.prepend_path('LD_LIBRARY_PATH', self.prefix)
+    def setup_run_environment(self, env):
+        env.set('DISLIN', self.prefix)
+        env.prepend_path('PATH', self.prefix)
+        env.prepend_path('LD_LIBRARY_PATH', self.prefix)
+        env.prepend_path('LD_LIBRARY_PATH', self.spec['motif'].prefix.lib)
+        env.prepend_path('LD_LIBRARY_PATH', self.spec['mesa'].prefix.lib)
+
+    def setup_dependent_run_environment(self, env, dependent_spec):
+        env.prepend_path('LD_LIBRARY_PATH', self.prefix)
 
     def install(self, spec, prefix):
         install = Executable('./INSTALL')
diff --git a/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py b/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py
index 5d9a3ef014..3a1b623ca0 100644
--- a/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py
+++ b/var/spack/repos/builtin/packages/dotnet-core-sdk/package.py
@@ -12,19 +12,17 @@ class DotnetCoreSdk(Package):
     applications for all types of infrastructure."""
 
     homepage = "https://www.microsoft.com/net/"
-    url      = "https://github.com/dotnet/core/"
 
     version('2.1.300',
-            url='https://download.microsoft.com/download/8/8/5/88544F33-836A'
-                '-49A5-8B67-451C24709A8F/dotnet-sdk-2.1.300-linux-x64.tar.gz',
+            url='https://download.microsoft.com/download/8/8/5/88544F33-836A-49A5-8B67-451C24709A8F/dotnet-sdk-2.1.300-linux-x64.tar.gz',
             sha256='fabca4c8825182ff18e5a2f82dfe75aecd10260ee9e7c85a8c4b3d108e5d8e1b')
 
     variant('telemetry', default=False,
             description='allow collection of telemetry data')
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         if '-telemetry' in self.spec:
-            spack_env.set('DOTNET_CLI_TELEMETRY_OPTOUT', 1)
+            env.set('DOTNET_CLI_TELEMETRY_OPTOUT', 1)
 
     def install(self, spec, prefix):
         mkdirp('bin')
diff --git a/var/spack/repos/builtin/packages/eccodes/package.py b/var/spack/repos/builtin/packages/eccodes/package.py
index 5bbc02f96b..8b8a4eceb7 100644
--- a/var/spack/repos/builtin/packages/eccodes/package.py
+++ b/var/spack/repos/builtin/packages/eccodes/package.py
@@ -49,7 +49,7 @@ class Eccodes(CMakePackage):
     # tests are enabled but the testing scripts don't use it.
     # depends_on('valgrind', type='test', when='+test')
 
-    depends_on('netcdf', when='+netcdf')
+    depends_on('netcdf-c', when='+netcdf')
     depends_on('openjpeg@1.5.0:1.5.999,2.1.0:2.1.999', when='jp2k=openjpeg')
     depends_on('jasper', when='jp2k=jasper')
     depends_on('libpng', when='+png')
@@ -100,7 +100,7 @@ def cmake_args(self):
                          '-DHDF5_ROOT=' + self.spec['hdf5'].prefix,
                          # Prevent possible overriding by environment variables
                          # NETCDF_ROOT, NETCDF_DIR, and NETCDF_PATH.
-                         '-DNETCDF_PATH=' + self.spec['netcdf'].prefix])
+                         '-DNETCDF_PATH=' + self.spec['netcdf-c'].prefix])
         else:
             args.append('-DENABLE_NETCDF=OFF')
 
diff --git a/var/spack/repos/builtin/packages/ecp-viz-sdk/package.py b/var/spack/repos/builtin/packages/ecp-viz-sdk/package.py
index f86330613c..e099e2f1b1 100644
--- a/var/spack/repos/builtin/packages/ecp-viz-sdk/package.py
+++ b/var/spack/repos/builtin/packages/ecp-viz-sdk/package.py
@@ -37,7 +37,7 @@ class EcpVizSdk(CMakePackage):
     depends_on('paraview', when='+paraview')
     depends_on('sz', when='+sz')
     depends_on('visit', when='+visit')
-    depends_on('vtkm', when='+vtkm')
+    depends_on('vtk-m', when='+vtkm')
     depends_on('zfp', when='+zfp')
 
     def cmake_args(self):
diff --git a/var/spack/repos/builtin/packages/elmer-fem/package.py b/var/spack/repos/builtin/packages/elmerfem/package.py
similarity index 95%
rename from var/spack/repos/builtin/packages/elmer-fem/package.py
rename to var/spack/repos/builtin/packages/elmerfem/package.py
index a22c1226f2..0fff28e817 100644
--- a/var/spack/repos/builtin/packages/elmer-fem/package.py
+++ b/var/spack/repos/builtin/packages/elmerfem/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class ElmerFem(CMakePackage):
+class Elmerfem(CMakePackage):
     """Elmer is an open source multiphysical simulation software. It
     includes physical models of fluid dynamics, structural mechanics,
     electromagnetics, heat transfer and acoustics."""
@@ -83,5 +83,5 @@ def cmake_args(self):
 
         return args
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.set('ELMER_HOME', self.prefix)
+    def setup_run_environment(self, env):
+        env.set('ELMER_HOME', self.prefix)
diff --git a/var/spack/repos/builtin/packages/eqr/package.py b/var/spack/repos/builtin/packages/eq-r/package.py
similarity index 81%
rename from var/spack/repos/builtin/packages/eqr/package.py
rename to var/spack/repos/builtin/packages/eq-r/package.py
index e31f88bb39..76c10c82c5 100644
--- a/var/spack/repos/builtin/packages/eqr/package.py
+++ b/var/spack/repos/builtin/packages/eq-r/package.py
@@ -7,20 +7,18 @@
 import os
 
 
-class Eqr(AutotoolsPackage):
+class EqR(AutotoolsPackage):
     """
     EMEWS Queues for R (EQ/R)
     Installs EQ/R.
     """
 
-    git = "https://github.com/emews/EQ-R"
-
-    version('develop', branch='master')
-
-    configure_directory = 'src'
-
     homepage = "http://emews.org"
     url      = "https://github.com/emews/EQ-R/archive/1.0.tar.gz"
+    git      = "https://github.com/emews/EQ-R.git"
+
+    version('master', branch='master')
+
     version('1.0', sha256='68047cb0edf088eaaefc5e36cefda9818292e5c832593e10a1dd9c73c27661b6')
 
     depends_on('autoconf', type='build')
@@ -34,11 +32,13 @@ class Eqr(AutotoolsPackage):
     depends_on('tcl')
     depends_on('swig')
 
-    def setup_environment(self, spack_env, run_env):
+    configure_directory = 'src'
+
+    def setup_build_environment(self, env):
         spec = self.spec
-        spack_env.set('CC', spec['mpi'].mpicc)
-        spack_env.set('CXX', spec['mpi'].mpicxx)
-        spack_env.set('CXXLD', spec['mpi'].mpicxx)
+        env.set('CC', spec['mpi'].mpicc)
+        env.set('CXX', spec['mpi'].mpicxx)
+        env.set('CXXLD', spec['mpi'].mpicxx)
 
     def configure_args(self):
         args = ['--with-tcl=' + self.spec['tcl'].prefix]
diff --git a/var/spack/repos/builtin/packages/er/package.py b/var/spack/repos/builtin/packages/er/package.py
index 2edc201b97..0664b391e0 100644
--- a/var/spack/repos/builtin/packages/er/package.py
+++ b/var/spack/repos/builtin/packages/er/package.py
@@ -10,7 +10,7 @@ class Er(CMakePackage):
     """Encoding and redundancy on a file set"""
 
     homepage = "https://github.com/ECP-VeloC/er"
-    url      = "https://github.com/ECP-VeloC/er/archive/v0.0.2.zip"
+    url      = "https://github.com/ECP-VeloC/er/archive/v0.0.3.zip"
     git      = "https://github.com/ecp-veloc/er.git"
 
     tags = ['ecp']
diff --git a/var/spack/repos/builtin/packages/es/package.py b/var/spack/repos/builtin/packages/es-shell/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/es/package.py
rename to var/spack/repos/builtin/packages/es-shell/package.py
index 99b846e96f..f8f745f488 100644
--- a/var/spack/repos/builtin/packages/es/package.py
+++ b/var/spack/repos/builtin/packages/es-shell/package.py
@@ -6,8 +6,7 @@
 from spack import *
 
 
-class Es(AutotoolsPackage):
-
+class EsShell(AutotoolsPackage):
     """Es is an extensible shell. The language was derived from the Plan 9
     shell, rc, and was influenced by functional programming languages,
     such as Scheme, and the Tcl embeddable programming language. This
diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py
index bfe35d9f19..1f93eb372a 100644
--- a/var/spack/repos/builtin/packages/esmf/package.py
+++ b/var/spack/repos/builtin/packages/esmf/package.py
@@ -34,7 +34,7 @@ class Esmf(MakefilePackage):
     # Optional dependencies
     depends_on('mpi', when='+mpi')
     depends_on('lapack@3:', when='+lapack')
-    depends_on('netcdf@3.6:', when='+netcdf')
+    depends_on('netcdf-c@3.6:', when='+netcdf')
     depends_on('netcdf-fortran@3.6:', when='+netcdf')
     depends_on('parallel-netcdf@1.2.0:', when='+pnetcdf')
     depends_on('xerces-c@3.1.0:', when='+xerces')
@@ -200,7 +200,7 @@ def edit(self, spec, prefix):
         if '+netcdf' in spec:
             # ESMF provides the ability to read Grid and Mesh data in
             # NetCDF format.
-            if spec.satisfies('^netcdf@4.2:'):
+            if spec.satisfies('^netcdf-c@4.2:'):
                 # ESMF_NETCDF_LIBS will be set to "-lnetcdff -lnetcdf".
                 # This option is useful for systems which have the Fortran
                 # and C bindings archived in seperate library files.
diff --git a/var/spack/repos/builtin/packages/exmcutils/package.py b/var/spack/repos/builtin/packages/exmcutils/package.py
index 8d53b7a71a..bbd90d0ed0 100644
--- a/var/spack/repos/builtin/packages/exmcutils/package.py
+++ b/var/spack/repos/builtin/packages/exmcutils/package.py
@@ -11,7 +11,7 @@ class Exmcutils(AutotoolsPackage):
     """ExM C-Utils: Generic C utility library for ADLB/X and Swift/T"""
 
     homepage = 'http://swift-lang.org/Swift-T'
-    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/exmcutils-0.0.0.tar.gz'
+    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/exmcutils-0.5.7.tar.gz'
     git      = "https://github.com/swift-lang/swift-t.git"
 
     version('master', branch='master')
diff --git a/var/spack/repos/builtin/packages/exodusii/package.py b/var/spack/repos/builtin/packages/exodusii/package.py
index 6472b7b997..d4b38b19a6 100644
--- a/var/spack/repos/builtin/packages/exodusii/package.py
+++ b/var/spack/repos/builtin/packages/exodusii/package.py
@@ -30,8 +30,8 @@ class Exodusii(CMakePackage):
     depends_on('mpi', when='+mpi')
 
     # https://github.com/gsjaardema/seacas/blob/master/NetCDF-Mapping.md
-    depends_on('netcdf@4.6.1:+mpi', when='+mpi')
-    depends_on('netcdf@4.6.1:~mpi', when='~mpi')
+    depends_on('netcdf-c@4.6.1:+mpi', when='+mpi')
+    depends_on('netcdf-c@4.6.1:~mpi', when='~mpi')
 
     def cmake_args(self):
         spec = self.spec
@@ -49,7 +49,7 @@ def cmake_args(self):
             '-DSEACASProj_SKIP_FORTRANCINTERFACE_VERIFY_TEST:BOOL=ON',
             '-DSEACASProj_ENABLE_CXX11:BOOL=OFF',
             '-DSEACASProj_ENABLE_Zoltan:BOOL=OFF',
-            '-DNetCDF_DIR:PATH={0}'.format(spec['netcdf'].prefix),
+            '-DNetCDF_DIR:PATH={0}'.format(spec['netcdf-c'].prefix),
 
             # MPI Flags #
             '-DTPL_ENABLE_MPI={0}'.format('ON' if '+mpi' in spec else 'OFF'),
diff --git a/var/spack/repos/builtin/packages/fastmath/package.py b/var/spack/repos/builtin/packages/fastmath/package.py
index bc04da7237..463197cd97 100644
--- a/var/spack/repos/builtin/packages/fastmath/package.py
+++ b/var/spack/repos/builtin/packages/fastmath/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Fastmath(Package):
+class Fastmath(BundlePackage):
     """FASTMath is a suite of ~15 numerical libraries frequently used together
     in various SciDAC and CSE applications. The suite includes discretization
     libraries for structured, AMR and unstructured grids as well as solver
@@ -14,16 +14,12 @@ class Fastmath(Package):
     Solvers."""
 
     homepage = "www.fastmath-scidac.org/"
-    url = "https://github.com/citibeth/dummy/tarball/v1.0"
 
-    version('1.0', sha256='402a2198e40b7e9022a99ab88ba6f0ee1c04b103fc15589b22c892859f14b60a')
-
-    # BundlePackage
     depends_on('amrex')  # default is 3 dimensions
     depends_on('chombo@3.2')
     depends_on('hypre~internal-superlu')
-#    depends_on('ml-trilinos')  # hoping for stripped down install of just ml
-#    depends_on('nox-trilinos')  # hoping for stripped down install of just nox
+    # depends_on('ml-trilinos')  # hoping for stripped down install of just ml
+    # depends_on('nox-trilinos') # hoping for stripped down install of just nox
     depends_on('mpi')
     depends_on('arpack-ng')
     depends_on('petsc')
@@ -33,12 +29,3 @@ class Fastmath(Package):
     depends_on('superlu-dist')
     depends_on('trilinos')
     depends_on('zoltan')
-
-    # Dummy install for now,  will be removed when metapackage is available
-    def install(self, spec, prefix):
-        # Prevent the error message
-        #      ==> Error: Install failed for fastmath.  Nothing was installed!
-        #      ==> Error: Installation process had nonzero exit code : 256
-        with open(join_path(spec.prefix, 'bundle-package.txt'), 'w') as out:
-            out.write('This is a bundle\n')
-            out.close()
diff --git a/var/spack/repos/builtin/packages/fastq-screen/package.py b/var/spack/repos/builtin/packages/fastq-screen/package.py
index ef651a4c9d..7898ee31b4 100644
--- a/var/spack/repos/builtin/packages/fastq-screen/package.py
+++ b/var/spack/repos/builtin/packages/fastq-screen/package.py
@@ -17,7 +17,7 @@ class FastqScreen(Package):
     version('0.11.2', sha256='a179df1f5803b42bbbb2b50af05ea18ae6fefcbf7020ca2feeb0d3c598a65207')
 
     depends_on('perl', type='run')
-    depends_on('perl-gd-graph', type='run')
+    depends_on('perl-gdgraph', type='run')
     depends_on('bowtie')
     depends_on('bowtie2')
     depends_on('bwa')
diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py
index 0113dfba3a..47aff3cbf5 100644
--- a/var/spack/repos/builtin/packages/ferret/package.py
+++ b/var/spack/repos/builtin/packages/ferret/package.py
@@ -19,7 +19,7 @@ class Ferret(Package):
     version('6.96', sha256='7eb87156aa586cfe838ab83f08b2102598f9ab62062d540a5da8c9123816331a')
 
     depends_on("hdf5+hl")
-    depends_on("netcdf")
+    depends_on("netcdf-c")
     depends_on("netcdf-fortran")
     depends_on("readline")
     depends_on("zlib")
@@ -63,7 +63,7 @@ def patch(self):
                     "-L%s -lnetcdff" % self.spec['netcdf-fortran'].prefix.lib,
                     'FERRET/platform_specific.mk.x86_64-linux')
         filter_file(r'\$\(NETCDF4_DIR\)/lib64/libnetcdf.a',
-                    "-L%s -lnetcdf" % self.spec['netcdf'].prefix.lib,
+                    "-L%s -lnetcdf" % self.spec['netcdf-c'].prefix.lib,
                     'FERRET/platform_specific.mk.x86_64-linux')
         filter_file(r'\$\(HDF5_DIR\)/lib64/libhdf5_hl.a',
                     "-L%s -lhdf5_hl" % self.spec['hdf5'].prefix.lib,
diff --git a/var/spack/repos/builtin/packages/flibcpp/package.py b/var/spack/repos/builtin/packages/flibcpp/package.py
index b03fa79cbb..81d30b1568 100644
--- a/var/spack/repos/builtin/packages/flibcpp/package.py
+++ b/var/spack/repos/builtin/packages/flibcpp/package.py
@@ -12,7 +12,7 @@ class Flibcpp(CMakePackage):
 
     homepage = "https://flibcpp.readthedocs.io/en/latest"
     git = "https://github.com/swig-fortran/flibcpp.git"
-    url = "https://github.com/swig-fortran/flibcpp/archive/v0.3.0.tar.gz"
+    url = "https://github.com/swig-fortran/flibcpp/archive/v0.3.1.tar.gz"
 
     version('master', branch='master')
     version('0.3.1', sha256='871570124122c18018478275d5040b4b787d1966e50ee95b634b0b5e0cd27e91')
diff --git a/var/spack/repos/builtin/packages/flux-core/package.py b/var/spack/repos/builtin/packages/flux-core/package.py
index 11cb14d23c..e2b52f741c 100644
--- a/var/spack/repos/builtin/packages/flux-core/package.py
+++ b/var/spack/repos/builtin/packages/flux-core/package.py
@@ -27,7 +27,7 @@ class FluxCore(AutotoolsPackage):
     variant('docs', default=False, description='Build flux manpages')
     variant('cuda', default=False, description='Build dependencies with support for CUDA')
 
-    depends_on("zeromq@4.0.4:")
+    depends_on("libzmq@4.0.4:")
     depends_on("czmq")
     depends_on("czmq@2.2:3.99", when="@0.1:0.6.99")
     depends_on("czmq@3.0.1:", when="@0.7:,master")
@@ -95,28 +95,29 @@ def lua_share_dir(self):
     def lua_lib_dir(self):
         return os.path.join('lib', 'lua', str(self.lua_version))
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         #  Ensure ./fluxometer.lua can be found during flux's make check
         spack_env.append_path('LUA_PATH', './?.lua', separator=';')
 
-        run_env.prepend_path(
+    def setup_run_environment(self, env):
+        env.prepend_path(
             'LUA_PATH',
             os.path.join(self.spec.prefix, self.lua_share_dir, '?.lua'),
             separator=';')
-        run_env.prepend_path(
+        env.prepend_path(
             'LUA_CPATH',
             os.path.join(self.spec.prefix, self.lua_lib_dir, '?.so'),
             separator=';')
-        run_env.prepend_path(
+        env.prepend_path(
             'PYTHONPATH',
             os.path.join(
                 self.spec.prefix.lib,
                 "python{0}".format(self.spec['python'].version.up_to(2)),
                 "site-packages"),
         )
-        run_env.prepend_path('FLUX_MODULE_PATH', self.prefix.lib.flux.modules)
-        run_env.prepend_path('FLUX_EXEC_PATH', self.prefix.libexec.flux.cmd)
-        run_env.prepend_path('FLUX_RC_PATH', self.prefix.etc.flux)
+        env.prepend_path('FLUX_MODULE_PATH', self.prefix.lib.flux.modules)
+        env.prepend_path('FLUX_EXEC_PATH', self.prefix.libexec.flux.cmd)
+        env.prepend_path('FLUX_RC_PATH', self.prefix.etc.flux)
 
     def configure_args(self):
         args = ['--enable-pylint=no']
diff --git a/var/spack/repos/builtin/packages/fpocket/package.py b/var/spack/repos/builtin/packages/fpocket/package.py
index 5d5e92dc4d..a4516f0b10 100644
--- a/var/spack/repos/builtin/packages/fpocket/package.py
+++ b/var/spack/repos/builtin/packages/fpocket/package.py
@@ -14,11 +14,11 @@ class Fpocket(MakefilePackage):
     version('master', branch='master',
             git='https://github.com/Discngine/fpocket.git')
 
-    depends_on("netcdf")
+    depends_on("netcdf-c")
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         if self.compiler.name == 'gcc':
-            spack_env.set('CXX', 'g++')
+            env.set('CXX', 'g++')
 
     def edit(self):
         makefile = FileFilter('makefile')
diff --git a/var/spack/repos/builtin/packages/fstrack/package.py b/var/spack/repos/builtin/packages/fstrack/package.py
index 297af6dbac..ffbb1714f5 100644
--- a/var/spack/repos/builtin/packages/fstrack/package.py
+++ b/var/spack/repos/builtin/packages/fstrack/package.py
@@ -20,25 +20,25 @@ class Fstrack(MakefilePackage):
     variant('flow', default=True, description='Build the flow tracker')
 
     depends_on('gmt@4.0:4.999', when='+flow')
-    depends_on('netcdf', when='+flow')
+    depends_on('netcdf-c', when='+flow')
 
     parallel = False
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         # Compilers
-        spack_env.set('F90', spack_fc)
+        env.set('F90', spack_fc)
 
         # Compiler flags (assumes GCC)
-        spack_env.set('CFLAGS', '-O2')
-        spack_env.set('FFLAGS', '-ffixed-line-length-132 -x f77-cpp-input -O2')
-        spack_env.set('FFLAGS_DEBUG', '-g -x f77-cpp-input')
-        spack_env.set('F90FLAGS', '-O2 -x f95-cpp-input')
-        spack_env.set('F90FLAGS_DEBUG', '-g -x f95-cpp-input')
-        spack_env.set('LDFLAGS', '-lm')
+        env.set('CFLAGS', '-O2')
+        env.set('FFLAGS', '-ffixed-line-length-132 -x f77-cpp-input -O2')
+        env.set('FFLAGS_DEBUG', '-g -x f77-cpp-input')
+        env.set('F90FLAGS', '-O2 -x f95-cpp-input')
+        env.set('F90FLAGS_DEBUG', '-g -x f95-cpp-input')
+        env.set('LDFLAGS', '-lm')
 
         if '+flow' in self.spec:
-            spack_env.set('GMTHOME', self.spec['gmt'].prefix)
-            spack_env.set('NETCDFDIR', self.spec['netcdf'].prefix)
+            env.set('GMTHOME', self.spec['gmt'].prefix)
+            env.set('NETCDFDIR', self.spec['netcdf-c'].prefix)
 
     def build(self, spec, prefix):
         with working_dir('eispack'):
diff --git a/var/spack/repos/builtin/packages/funhpc/package.py b/var/spack/repos/builtin/packages/funhpc/package.py
index ed69e4f88e..fe8adba18c 100644
--- a/var/spack/repos/builtin/packages/funhpc/package.py
+++ b/var/spack/repos/builtin/packages/funhpc/package.py
@@ -11,7 +11,7 @@ class Funhpc(CMakePackage):
     """FunHPC: Functional HPC Programming"""
 
     homepage = "https://github.com/eschnett/FunHPC.cxx"
-    url      = "https://github.com/eschnett/FunHPC.cxx/archive/version/0.1.0.tar.gz"
+    url      = "https://github.com/eschnett/FunHPC.cxx/archive/version/1.3.0.tar.gz"
     git      = "https://github.com/eschnett/FunHPC.cxx.git"
 
     version('develop', branch='master')
diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py
index 32e746472d..7e3fb6d8a0 100644
--- a/var/spack/repos/builtin/packages/gdal/package.py
+++ b/var/spack/repos/builtin/packages/gdal/package.py
@@ -114,7 +114,7 @@ class Gdal(AutotoolsPackage):
     depends_on('hdf', when='+hdf4')
     depends_on('hdf5', when='+hdf5')
     depends_on('kealib', when='+kea @2:')
-    depends_on('netcdf', when='+netcdf')
+    depends_on('netcdf-c', when='+netcdf')
     depends_on('jasper@1.900.1', patches='uuid.patch', when='+jasper')
     depends_on('openjpeg', when='+openjpeg')
     depends_on('xerces-c', when='+xerces')
@@ -157,12 +157,12 @@ class Gdal(AutotoolsPackage):
 
     conflicts('+mdb', when='~java', msg='MDB driver requires Java')
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         # Needed to install Python bindings to GDAL installation
         # prefix instead of Python installation prefix.
         # See swig/python/GNUmakefile for more details.
-        spack_env.set('PREFIX', self.prefix)
-        spack_env.set('DESTDIR', '/')
+        env.set('PREFIX', self.prefix)
+        env.set('DESTDIR', '/')
 
     # https://trac.osgeo.org/gdal/wiki/BuildHints
     def configure_args(self):
@@ -299,7 +299,7 @@ def configure_args(self):
 
         # https://trac.osgeo.org/gdal/wiki/NetCDF
         if '+netcdf' in spec:
-            args.append('--with-netcdf={0}'.format(spec['netcdf'].prefix))
+            args.append('--with-netcdf={0}'.format(spec['netcdf-c'].prefix))
         else:
             args.append('--with-netcdf=no')
 
diff --git a/var/spack/repos/builtin/packages/gdl/package.py b/var/spack/repos/builtin/packages/gdl/package.py
index eef7ada1c0..ab7a79c352 100644
--- a/var/spack/repos/builtin/packages/gdl/package.py
+++ b/var/spack/repos/builtin/packages/gdl/package.py
@@ -57,7 +57,7 @@ class Gdl(CMakePackage):
     depends_on('libsm')
     depends_on('libxinerama')
     depends_on('libxxf86vm')
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('pslib')
     depends_on('readline')
 
diff --git a/var/spack/repos/builtin/packages/ginkgo/package.py b/var/spack/repos/builtin/packages/ginkgo/package.py
index 23d2b53495..bd94dbcab6 100644
--- a/var/spack/repos/builtin/packages/ginkgo/package.py
+++ b/var/spack/repos/builtin/packages/ginkgo/package.py
@@ -12,7 +12,6 @@ class Ginkgo(CMakePackage, CudaPackage):
     with a focus on sparse solution of linear systems."""
 
     homepage = "https://ginkgo-project.github.io/"
-    url      = "https://github.com/ginkgo-project/ginkgo.git"
     git      = "https://github.com/ginkgo-project/ginkgo.git"
 
     maintainers = ['tcojean', 'hartwiganzt']
diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py
index 1e1d197295..3d3e3e4e53 100644
--- a/var/spack/repos/builtin/packages/gmsh/package.py
+++ b/var/spack/repos/builtin/packages/gmsh/package.py
@@ -17,7 +17,7 @@ class Gmsh(CMakePackage):
     """
 
     homepage = 'http://gmsh.info'
-    url = 'http://gmsh.info/src/gmsh-2.11.0-source.tgz'
+    url = 'http://gmsh.info/src/gmsh-4.4.1-source.tgz'
 
     version('4.4.1', sha256='853c6438fc4e4b765206e66a514b09182c56377bb4b73f1d0d26eda7eb8af0dc')
     version('4.2.2', sha256='e9ee9f5c606bbec5f2adbb8c3d6023c4e2577f487fa4e4ecfcfc94a241cc8dcc')
diff --git a/var/spack/repos/builtin/packages/gmt/package.py b/var/spack/repos/builtin/packages/gmt/package.py
index 045f4e11f6..c3dbbfc8e5 100644
--- a/var/spack/repos/builtin/packages/gmt/package.py
+++ b/var/spack/repos/builtin/packages/gmt/package.py
@@ -33,7 +33,7 @@ class Gmt(Package):
     depends_on('ghostscript')
     depends_on('subversion')
     depends_on('cmake@2.8.5:', type='build', when='@5:')
-    depends_on('netcdf@4:')
+    depends_on('netcdf-c@4:')
     depends_on('curl', when='@5.4:')
 
     # Optional dependencies
@@ -58,7 +58,7 @@ def install(self, spec, prefix):
     def install(self, spec, prefix):
         args = [
             '--prefix={0}'.format(prefix),
-            '--enable-netcdf={0}'.format(spec['netcdf'].prefix),
+            '--enable-netcdf={0}'.format(spec['netcdf-c'].prefix),
             '--enable-shared',
             '--without-x'
         ]
diff --git a/var/spack/repos/builtin/packages/gnu-prolog/package.py b/var/spack/repos/builtin/packages/gprolog/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/gnu-prolog/package.py
rename to var/spack/repos/builtin/packages/gprolog/package.py
index d332711077..aa923deea8 100644
--- a/var/spack/repos/builtin/packages/gnu-prolog/package.py
+++ b/var/spack/repos/builtin/packages/gprolog/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class GnuProlog(Package):
+class Gprolog(Package):
     """A free Prolog compiler with constraint solving over finite domains."""
     homepage = "http://www.gprolog.org/"
     url      = "http://www.gprolog.org/gprolog-1.4.5.tar.gz"
diff --git a/var/spack/repos/builtin/packages/grass/package.py b/var/spack/repos/builtin/packages/grass/package.py
index f480d95fe3..ca070112a0 100644
--- a/var/spack/repos/builtin/packages/grass/package.py
+++ b/var/spack/repos/builtin/packages/grass/package.py
@@ -69,7 +69,7 @@ class Grass(AutotoolsPackage):
     depends_on('readline', when='+readline')
     depends_on('opencl', when='+opencl')
     depends_on('bzip2', when='+bzlib')
-    depends_on('netcdf', when='+netcdf')
+    depends_on('netcdf-c', when='+netcdf')
     depends_on('geos', when='+geos')
 
     def url_for_version(self, version):
@@ -184,7 +184,7 @@ def configure_args(self):
 
         if '+netcdf' in spec:
             args.append('--with-netcdf={0}/bin/nc-config'.format(
-                spec['netcdf'].prefix))
+                spec['netcdf-c'].prefix))
         else:
             args.append('--without-netcdf')
 
diff --git a/var/spack/repos/builtin/packages/grib-api/package.py b/var/spack/repos/builtin/packages/grib-api/package.py
index b54e909367..12978a4b75 100644
--- a/var/spack/repos/builtin/packages/grib-api/package.py
+++ b/var/spack/repos/builtin/packages/grib-api/package.py
@@ -50,7 +50,7 @@ class GribApi(CMakePackage):
     # tests are enabled but the testing scripts don't use it.
     # depends_on('valgrind', type='test', when='+test')
 
-    depends_on('netcdf', when='+netcdf')
+    depends_on('netcdf-c', when='+netcdf')
     depends_on('openjpeg@1.5.0:1.5.999', when='jp2k=openjpeg')
     depends_on('jasper', when='jp2k=jasper')
     depends_on('libpng', when='+png')
@@ -100,7 +100,7 @@ def cmake_args(self):
                          '-DHDF5_ROOT=' + self.spec['hdf5'].prefix,
                          # Prevent possible overriding by environment variables
                          # NETCDF_ROOT, NETCDF_DIR, and NETCDF_PATH.
-                         '-DNETCDF_PATH=' + self.spec['netcdf'].prefix])
+                         '-DNETCDF_PATH=' + self.spec['netcdf-c'].prefix])
         else:
             args.append('-DENABLE_NETCDF=OFF')
 
diff --git a/var/spack/repos/builtin/packages/grpc/package.py b/var/spack/repos/builtin/packages/grpc/package.py
index 20d09541ff..5c207d3358 100644
--- a/var/spack/repos/builtin/packages/grpc/package.py
+++ b/var/spack/repos/builtin/packages/grpc/package.py
@@ -20,7 +20,7 @@ class Grpc(CMakePackage):
     depends_on('protobuf')
     depends_on('openssl')
     depends_on('zlib')
-    depends_on('cares')
+    depends_on('c-ares')
 
     def cmake_args(self):
         args = [
diff --git a/var/spack/repos/builtin/packages/guidance/package.py b/var/spack/repos/builtin/packages/guidance/package.py
index ef4de4596c..32c75afeff 100644
--- a/var/spack/repos/builtin/packages/guidance/package.py
+++ b/var/spack/repos/builtin/packages/guidance/package.py
@@ -17,7 +17,7 @@ class Guidance(MakefilePackage):
     version('2.02', sha256='825e105dde526759fb5bda1cd539b24db0b90b8b586f26b1df74d9c5abaa7844')
 
     depends_on('perl', type=('build', 'run'))
-    depends_on('perl-bio-perl', type=('build', 'run'))
+    depends_on('perl-bioperl', type=('build', 'run'))
     depends_on('ruby')
     depends_on('prank')
     depends_on('clustalw')
@@ -43,5 +43,5 @@ def install(self, spac, prefix):
             install('guidance.pl', join_path(prefix.bin.www.Guidance,
                                              'guidance'))
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.prepend_path('PATH', prefix.bin.www.Guidance)
+    def setup_run_environment(self, env):
+        env.prepend_path('PATH', prefix.bin.www.Guidance)
diff --git a/var/spack/repos/builtin/packages/hc/package.py b/var/spack/repos/builtin/packages/hc/package.py
index 19fd4c6b4f..157b3ee6c7 100644
--- a/var/spack/repos/builtin/packages/hc/package.py
+++ b/var/spack/repos/builtin/packages/hc/package.py
@@ -17,7 +17,7 @@ class Hc(MakefilePackage):
     version('1.0.7', sha256='7499ea76ac4739a9c0941bd57d124fb681fd387c8d716ebb358e6af3395103ed')
 
     depends_on('gmt@4.2.1:4.999')
-    depends_on('netcdf')
+    depends_on('netcdf-c')
 
     # Build phase fails in parallel with the following error messages:
     # /usr/bin/ld: cannot find -lrick
@@ -25,11 +25,11 @@ class Hc(MakefilePackage):
     # /usr/bin/ld: cannot find -lggrd
     parallel = False
 
-    def setup_environment(self, spack_env, run_env):
-        spack_env.set('GMTHOME', self.spec['gmt'].prefix)
-        spack_env.set('NETCDFHOME', self.spec['netcdf'].prefix)
-        spack_env.set('HC_HOME', self.prefix)
-        spack_env.unset('ARCH')
+    def setup_build_environment(self, env):
+        env.set('GMTHOME', self.spec['gmt'].prefix)
+        env.set('NETCDFHOME', self.spec['netcdf-c'].prefix)
+        env.set('HC_HOME', self.prefix)
+        env.unset('ARCH')
 
     def install(self, spec, prefix):
         # Most files are installed during the build stage.
diff --git a/var/spack/repos/builtin/packages/henson/package.py b/var/spack/repos/builtin/packages/henson/package.py
index 11701e62d4..9e0b8d0ad7 100644
--- a/var/spack/repos/builtin/packages/henson/package.py
+++ b/var/spack/repos/builtin/packages/henson/package.py
@@ -10,10 +10,9 @@ class Henson(CMakePackage):
     """Cooperative multitasking for in situ processing."""
 
     homepage = "https://github.com/henson-insitu/henson"
-    url      = "https://github.com/henson-insitu/henson"
     git      = "https://github.com/henson-insitu/henson.git"
 
-    version('develop', branch='master')
+    version('master', branch='master')
 
     depends_on('mpi')
 
diff --git a/var/spack/repos/builtin/packages/hisea/package.py b/var/spack/repos/builtin/packages/hisea/package.py
index f934edbee5..6858452319 100644
--- a/var/spack/repos/builtin/packages/hisea/package.py
+++ b/var/spack/repos/builtin/packages/hisea/package.py
@@ -12,7 +12,6 @@ class Hisea(MakefilePackage):
        among others."""
 
     homepage = "https://doi.org/10.1186/s12859-017-1953-9"
-    url      = "https://github.com/lucian-ilie/HISEA"
 
     version('2017.12.26', sha256='3c6ddfb8490a327cc5f9e45f64cd4312abc6ef5719661ce8892db8a20a1e9c5e',
             url='https://github.com/lucian-ilie/HISEA/tarball/39e01e98caa0f2101da806ca59306296effe789c')
diff --git a/var/spack/repos/builtin/packages/homer/package.py b/var/spack/repos/builtin/packages/homer/package.py
index bf190eb055..48063ce088 100644
--- a/var/spack/repos/builtin/packages/homer/package.py
+++ b/var/spack/repos/builtin/packages/homer/package.py
@@ -11,7 +11,7 @@ class Homer(Package):
     """Software for motif discovery and next generation sequencing analysis"""
 
     homepage = "http://homer.ucsd.edu/homer"
-    url      = "http://homer.ucsd.edu/homer/data/software/homer.v4.9.zip"
+    url      = "http://homer.ucsd.edu/homer/data/software/homer.v4.9.1.zip"
 
     version('4.9.1', sha256='ad1303b0b0400dc8a88dbeae1ee03a94631977b751a3d335326c4febf0eec3a9')
 
diff --git a/var/spack/repos/builtin/packages/hpgmg/package.py b/var/spack/repos/builtin/packages/hpgmg/package.py
index 1805315130..9979fc4c6f 100644
--- a/var/spack/repos/builtin/packages/hpgmg/package.py
+++ b/var/spack/repos/builtin/packages/hpgmg/package.py
@@ -17,7 +17,7 @@ class Hpgmg(Package):
     """
 
     homepage = "https://bitbucket.org/hpgmg/hpgmg"
-    url      = "https://hpgmg.org/static/hpgmg-0.tar.gz"
+    url      = "https://hpgmg.org/static/hpgmg-0.4.tar.gz"
     git      = "https://bitbucket.org/hpgmg/hpgmg.git"
 
     tags = ['proxy-app']
diff --git a/var/spack/repos/builtin/packages/hub/package.py b/var/spack/repos/builtin/packages/hub/package.py
index 068e7b4a35..437c8b62a3 100644
--- a/var/spack/repos/builtin/packages/hub/package.py
+++ b/var/spack/repos/builtin/packages/hub/package.py
@@ -11,10 +11,10 @@ class Hub(Package):
     """The github git wrapper"""
 
     homepage = "https://github.com/github/hub"
-    url      = "https://github.com/github/hub/archive/v2.2.3.tar.gz"
+    url      = "https://github.com/github/hub/archive/v2.2.2.tar.gz"
     git      = "https://github.com/github/hub.git"
 
-    version('head', branch='master')
+    version('master', branch='master')
     version('2.2.2', sha256='610572ee903aea1fa8622c16ab7ddef2bd1bfec9f4854447ab8e0fbdbe6a0cae')
     version('2.2.1', sha256='9350aba6a8e3da9d26b7258a4020bf84491af69595f7484f922d75fc8b86dc10')
     version('2.2.0', sha256='2da1351197eb5696c207f22c69a5422af052d74277b73d0b8661efb9ec1d0eb1')
diff --git a/var/spack/repos/builtin/packages/ibmisc/package.py b/var/spack/repos/builtin/packages/ibmisc/package.py
index 1e901220a3..3281301abf 100644
--- a/var/spack/repos/builtin/packages/ibmisc/package.py
+++ b/var/spack/repos/builtin/packages/ibmisc/package.py
@@ -40,7 +40,7 @@ class Ibmisc(CMakePackage):
     depends_on('proj@:4', when='+proj')
     depends_on('blitz', when='+blitz')
     depends_on('netcdf-cxx4', when='+netcdf')
-    depends_on('udunits2', when='+udunits2')
+    depends_on('udunits', when='+udunits2')
     depends_on('googletest', when='+googletest', type='build')
     depends_on('py-cython', when='+python', type=('build', 'run'))
     depends_on('py-numpy', when='+python', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/image-magick/package.py b/var/spack/repos/builtin/packages/imagemagick/package.py
similarity index 97%
rename from var/spack/repos/builtin/packages/image-magick/package.py
rename to var/spack/repos/builtin/packages/imagemagick/package.py
index 2f9229c496..bbdc11213c 100644
--- a/var/spack/repos/builtin/packages/image-magick/package.py
+++ b/var/spack/repos/builtin/packages/imagemagick/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class ImageMagick(AutotoolsPackage):
+class Imagemagick(AutotoolsPackage):
     """ImageMagick is a software suite to create, edit, compose,
     or convert bitmap images."""
 
diff --git a/var/spack/repos/builtin/packages/ioapi/package.py b/var/spack/repos/builtin/packages/ioapi/package.py
index 2081d70754..0c66f4c51a 100644
--- a/var/spack/repos/builtin/packages/ioapi/package.py
+++ b/var/spack/repos/builtin/packages/ioapi/package.py
@@ -15,7 +15,7 @@ class Ioapi(MakefilePackage):
     homepage = "https://www.cmascenter.org/ioapi/"
     url      = "https://www.cmascenter.org/ioapi/download/ioapi-3.2.tar.gz"
     version('3.2', sha256='56771ff0053d47f2445e00ff369bca7bfc484325a2816b2c648744e523134fe9')
-    depends_on('netcdf@4:')
+    depends_on('netcdf-c@4:')
     depends_on('netcdf-fortran@4:')
     depends_on('sed', type='build')
 
diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py
index 7191faf234..655e5f4fee 100644
--- a/var/spack/repos/builtin/packages/julia/package.py
+++ b/var/spack/repos/builtin/packages/julia/package.py
@@ -237,7 +237,7 @@ def install(self, spec, prefix):
         if "+plot" in spec:
             julia("-e", pkgstart + 'Pkg.add("PyPlot"); using PyPlot')
             julia("-e", pkgstart + 'Pkg.add("Colors"); using Colors')
-            # These require maybe gtk and image-magick
+            # These require maybe gtk and imagemagick
             julia("-e", pkgstart + 'Pkg.add("Plots"); using Plots')
             julia("-e", pkgstart + 'Pkg.add("PlotRecipes"); using PlotRecipes')
             julia(
diff --git a/var/spack/repos/builtin/packages/kvtree/package.py b/var/spack/repos/builtin/packages/kvtree/package.py
index 6f164b12d6..a9e2630ee3 100644
--- a/var/spack/repos/builtin/packages/kvtree/package.py
+++ b/var/spack/repos/builtin/packages/kvtree/package.py
@@ -11,7 +11,7 @@ class Kvtree(CMakePackage):
     hashes."""
 
     homepage = "https://github.com/ECP-VeloC/KVTree"
-    url      = "https://github.com/ECP-VeloC/KVTree/archive/v1.0.1.zip"
+    url      = "https://github.com/ECP-VeloC/KVTree/archive/v1.0.2.zip"
     git      = "https://github.com/ecp-veloc/kvtree.git"
 
     tags = ['ecp']
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py
index 1b9e4c1fd8..413b8a924d 100644
--- a/var/spack/repos/builtin/packages/lammps/package.py
+++ b/var/spack/repos/builtin/packages/lammps/package.py
@@ -74,7 +74,7 @@ def url_for_version(self, version):
     depends_on('mpi', when='+mpiio')
     depends_on('fftw', when='+kspace')
     depends_on('voropp+pic', when='+voronoi')
-    depends_on('netcdf+mpi', when='+user-netcdf')
+    depends_on('netcdf-c+mpi', when='+user-netcdf')
     depends_on('blas', when='+user-atc')
     depends_on('lapack', when='+user-atc')
     depends_on('latte@1.0.1', when='@:20180222+latte')
diff --git a/var/spack/repos/builtin/packages/libcheck/package.py b/var/spack/repos/builtin/packages/libcheck/package.py
deleted file mode 100644
index 86886037f3..0000000000
--- a/var/spack/repos/builtin/packages/libcheck/package.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class Libcheck(CMakePackage):
-    """A unit testing framework for C."""
-
-    homepage = "https://libcheck.github.io/check/index.html"
-    url      = "https://github.com/libcheck/check/releases/download/0.12.0/check-0.12.0.tar.gz"
-
-    version('0.12.0', sha256='464201098bee00e90f5c4bdfa94a5d3ead8d641f9025b560a27755a83b824234')
-    version('0.11.0', sha256='24f7a48aae6b74755bcbe964ce8bc7240f6ced2141f8d9cf480bc3b3de0d5616')
-    version('0.10.0', sha256='f5f50766aa6f8fe5a2df752666ca01a950add45079aa06416b83765b1cf71052')
diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py
index 5ada427806..165ed6840a 100644
--- a/var/spack/repos/builtin/packages/libgit2/package.py
+++ b/var/spack/repos/builtin/packages/libgit2/package.py
@@ -14,7 +14,7 @@ class Libgit2(CMakePackage):
     """
 
     homepage = "https://libgit2.github.com/"
-    url      = "https://github.com/libgit2/libgit2/archive/v0.24.2.tar.gz"
+    url      = "https://github.com/libgit2/libgit2/archive/v0.26.0.tar.gz"
 
     version('0.26.0', sha256='6a62393e0ceb37d02fe0d5707713f504e7acac9006ef33da1e88960bd78b6eac')
 
diff --git a/var/spack/repos/builtin/packages/libgpuarray/package.py b/var/spack/repos/builtin/packages/libgpuarray/package.py
index 1f26b75628..9ab2beba2b 100644
--- a/var/spack/repos/builtin/packages/libgpuarray/package.py
+++ b/var/spack/repos/builtin/packages/libgpuarray/package.py
@@ -25,4 +25,4 @@ class Libgpuarray(CMakePackage):
 
     depends_on('cuda')
     depends_on('cmake@3:', type='build')
-    depends_on('libcheck')
+    depends_on('check')
diff --git a/var/spack/repos/builtin/packages/libnrm/package.py b/var/spack/repos/builtin/packages/libnrm/package.py
index ad79170f9e..178e4e7d34 100644
--- a/var/spack/repos/builtin/packages/libnrm/package.py
+++ b/var/spack/repos/builtin/packages/libnrm/package.py
@@ -19,5 +19,5 @@ class Libnrm(AutotoolsPackage):
     depends_on('automake', type='build')
     depends_on('libtool', type='build')
 
-    depends_on('zeromq')
+    depends_on('libzmq')
     depends_on('mpich')
diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/libzmq/package.py
similarity index 98%
rename from var/spack/repos/builtin/packages/zeromq/package.py
rename to var/spack/repos/builtin/packages/libzmq/package.py
index 7612bf5695..531d268f03 100644
--- a/var/spack/repos/builtin/packages/zeromq/package.py
+++ b/var/spack/repos/builtin/packages/libzmq/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Zeromq(AutotoolsPackage):
+class Libzmq(AutotoolsPackage):
     """The ZMQ networking/concurrency library and core API"""
 
     homepage = "http://zguide.zeromq.org/"
diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py
index 411a6f8fe6..6e7c44ad99 100644
--- a/var/spack/repos/builtin/packages/likwid/package.py
+++ b/var/spack/repos/builtin/packages/likwid/package.py
@@ -17,7 +17,7 @@ class Likwid(Package):
     for information."""
 
     homepage = "https://github.com/RRZE-HPC/likwid"
-    url      = "https://github.com/RRZE-HPC/likwid/archive/4.1.2.tar.gz"
+    url      = "https://github.com/RRZE-HPC/likwid/archive/4.3.4.tar.gz"
 
     version('4.3.4', sha256='5c0d1c66b25dac8292a02232f06454067f031a238f010c62f40ef913c6609a83')
     version('4.3.3', sha256='a681378cd66c1679ca840fb5fac3136bfec93c01b3d78cc1d00a641db325a9a3')
diff --git a/var/spack/repos/builtin/packages/lsf/package.py b/var/spack/repos/builtin/packages/lsf/package.py
index 7c8827c0bf..b257274c3a 100644
--- a/var/spack/repos/builtin/packages/lsf/package.py
+++ b/var/spack/repos/builtin/packages/lsf/package.py
@@ -11,7 +11,6 @@ class Lsf(Package):
     """IBM Platform LSF is a batch scheduler for HPC environments"""
 
     homepage = "https://www.ibm.com/marketplace/hpc-workload-management"
-    url = "https://www.ibm.com/marketplace/hpc-workload-management"
 
     # LSF needs to be added as an external package to SPACK. For this, the
     # config file packages.yaml needs to be adjusted:
diff --git a/var/spack/repos/builtin/packages/lua-bitlib/package.py b/var/spack/repos/builtin/packages/lua-bitlib/package.py
index ca5d20764f..cf05980704 100644
--- a/var/spack/repos/builtin/packages/lua-bitlib/package.py
+++ b/var/spack/repos/builtin/packages/lua-bitlib/package.py
@@ -14,8 +14,7 @@ class LuaBitlib(Package):
     homepage = "http://luaforge.net/projects/bitlib"
     url      = "https://luarocks.org/bitlib-23-2.src.rock"
 
-    version('23', sha256='fe226edc2808162e67418e6b2c98befc0ed25a489ecffc6974fa153f951c0c34',
-            url="https://luarocks.org/bitlib-23-2.src.rock",
+    version('23-2', sha256='fe226edc2808162e67418e6b2c98befc0ed25a489ecffc6974fa153f951c0c34',
             expand=False)
 
     extends('lua')
diff --git a/var/spack/repos/builtin/packages/lua-lpeg/package.py b/var/spack/repos/builtin/packages/lua-lpeg/package.py
index 8d6d35d1ff..73f9d2e4c6 100644
--- a/var/spack/repos/builtin/packages/lua-lpeg/package.py
+++ b/var/spack/repos/builtin/packages/lua-lpeg/package.py
@@ -13,8 +13,7 @@ class LuaLpeg(Package):
     homepage = "http://www.inf.puc-rio.br/~roberto/lpeg/"
     url      = "https://luarocks.org/manifests/luarocks/lpeg-0.12-1.src.rock"
 
-    version('0.12.1', sha256='3962e8d695d0f9095c9453f2a42f9f1a89fb94db9b0c3bf22934c1e8a3b0ef5a',
-            url='https://luarocks.org/manifests/luarocks/lpeg-0.12-1.src.rock',
+    version('0.12-1', sha256='3962e8d695d0f9095c9453f2a42f9f1a89fb94db9b0c3bf22934c1e8a3b0ef5a',
             expand=False)
 
     extends("lua")
diff --git a/var/spack/repos/builtin/packages/lua-jit/package.py b/var/spack/repos/builtin/packages/lua-luajit/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/lua-jit/package.py
rename to var/spack/repos/builtin/packages/lua-luajit/package.py
index a0f8e2b88d..552096d716 100644
--- a/var/spack/repos/builtin/packages/lua-jit/package.py
+++ b/var/spack/repos/builtin/packages/lua-luajit/package.py
@@ -7,7 +7,7 @@
 from spack import *
 
 
-class LuaJit(Package):
+class LuaLuajit(Package):
     """Flast flexible JITed lua"""
     homepage = "http://www.luajit.org"
     url      = "http://luajit.org/download/LuaJIT-2.0.4.tar.gz"
diff --git a/var/spack/repos/builtin/packages/lua-mpack/package.py b/var/spack/repos/builtin/packages/lua-mpack/package.py
index 777ff19e18..f332aba1e1 100644
--- a/var/spack/repos/builtin/packages/lua-mpack/package.py
+++ b/var/spack/repos/builtin/packages/lua-mpack/package.py
@@ -15,8 +15,7 @@ class LuaMpack(Package):
 
     depends_on('msgpack-c')
 
-    version('1.0.0-0', sha256='9068d9d3f407c72a7ea18bc270b0fa90aad60a2f3099fa23d5902dd71ea4cd5f',
-            url='https://luarocks.org/manifests/tarruda/mpack-1.0.6-0.src.rock',
+    version('1.0.6-0', sha256='9068d9d3f407c72a7ea18bc270b0fa90aad60a2f3099fa23d5902dd71ea4cd5f',
             expand=False)
 
     extends('lua')
diff --git a/var/spack/repos/builtin/packages/macsio/package.py b/var/spack/repos/builtin/packages/macsio/package.py
index d90aad340d..264e41590d 100644
--- a/var/spack/repos/builtin/packages/macsio/package.py
+++ b/var/spack/repos/builtin/packages/macsio/package.py
@@ -93,6 +93,6 @@ def cmake_args(self):
                               .format(spec['exodusii'].prefix))
             # exodus requires netcdf
             cmake_args.append("-DWITH_NETCDF_PREFIX={0}"
-                              .format(spec['netcdf'].prefix))
+                              .format(spec['netcdf-c'].prefix))
 
         return cmake_args
diff --git a/var/spack/repos/builtin/packages/maker/package.py b/var/spack/repos/builtin/packages/maker/package.py
index 41363ec0a1..0528b3ed8f 100644
--- a/var/spack/repos/builtin/packages/maker/package.py
+++ b/var/spack/repos/builtin/packages/maker/package.py
@@ -55,7 +55,7 @@ def url_for_version(self, version):
     depends_on('perl-inline-c', type=('build', 'run'))
     depends_on('perl-io-all', type=('build', 'run'))
     depends_on('perl-io-prompt', type=('build', 'run'))
-    depends_on('perl-bio-perl', type=('build', 'run'))
+    depends_on('perl-bioperl', type=('build', 'run'))
     depends_on('blast-plus')
     depends_on('snap-korf')
     depends_on('repeatmasker')
diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py
index 5990660d5d..774aeebf8c 100644
--- a/var/spack/repos/builtin/packages/mariadb/package.py
+++ b/var/spack/repos/builtin/packages/mariadb/package.py
@@ -45,7 +45,7 @@ class Mariadb(CMakePackage):
     depends_on('curl')
     depends_on('libxml2')
     depends_on('lz4')
-    depends_on('zeromq')
+    depends_on('libzmq')
     depends_on('msgpack-c')
     depends_on('openssl')
     depends_on('openssl@:1.0', when='@:10.1')
diff --git a/var/spack/repos/builtin/packages/meme/package.py b/var/spack/repos/builtin/packages/meme/package.py
index a045e6d1ee..aeed3ed239 100644
--- a/var/spack/repos/builtin/packages/meme/package.py
+++ b/var/spack/repos/builtin/packages/meme/package.py
@@ -25,7 +25,7 @@ class Meme(AutotoolsPackage):
     depends_on('perl', type=('build', 'run'))
     depends_on('python@2.7:', type=('build', 'run'))
     depends_on('mpi', when='+mpi')
-    depends_on('image-magick', type=('build', 'run'), when='+image-magick')
+    depends_on('imagemagick', type=('build', 'run'), when='+image-magick')
     depends_on('perl-xml-parser', type=('build', 'run'))
 
     def configure_args(self):
diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py
index d8ff47d0b4..747fe707cd 100644
--- a/var/spack/repos/builtin/packages/mfem/package.py
+++ b/var/spack/repos/builtin/packages/mfem/package.py
@@ -189,7 +189,7 @@ class Mfem(Package):
     # depends_on('petsc@3.8:+mpi+double+hypre+suite-sparse+mumps',
     #            when='+petsc')
     depends_on('mpfr', when='+mpfr')
-    depends_on('netcdf@4.1.3:', when='+netcdf')
+    depends_on('netcdf-c@4.1.3:', when='+netcdf')
     depends_on('unwind', when='+libunwind')
     depends_on('zlib', when='+gzstream')
     depends_on('gnutls', when='+gnutls')
@@ -368,9 +368,9 @@ def find_optional_library(name, prefix):
 
         if '+netcdf' in spec:
             options += [
-                'NETCDF_OPT=-I%s' % spec['netcdf'].prefix.include,
+                'NETCDF_OPT=-I%s' % spec['netcdf-c'].prefix.include,
                 'NETCDF_LIB=%s' %
-                ld_flags_from_dirs([spec['netcdf'].prefix.lib], ['netcdf'])]
+                ld_flags_from_dirs([spec['netcdf-c'].prefix.lib], ['netcdf'])]
 
         if '+gzstream' in spec:
             if "@:3.3.2" in spec:
diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py
index 6ab1311309..b1b22cb281 100644
--- a/var/spack/repos/builtin/packages/moab/package.py
+++ b/var/spack/repos/builtin/packages/moab/package.py
@@ -39,8 +39,6 @@ class Moab(AutotoolsPackage):
             description='Required to enable the ExodusII reader/writer.')
     variant('pnetcdf', default=False,
             description='Enable pnetcdf (AKA parallel-netcdf) support')
-    variant('netcdf', default=False,
-            description='Required to enable the ExodusII reader/writer.')
     variant('zoltan', default=False, description='Enable zoltan support')
     variant('cgm', default=False, description='Enable common geometric module')
     variant('metis', default=True, description='Enable metis link')
@@ -77,7 +75,7 @@ class Moab(AutotoolsPackage):
     depends_on('mpi', when='+mpi')
     depends_on('hdf5', when='+hdf5')
     depends_on('hdf5+mpi', when='+hdf5+mpi')
-    depends_on('netcdf', when='+netcdf')
+    depends_on('netcdf-c', when='+netcdf')
     depends_on('parallel-netcdf', when='+pnetcdf')
     depends_on('cgm', when='+cgm')
     depends_on('metis', when='+metis')
@@ -129,7 +127,7 @@ def configure_args(self):
             options.append('--without-hdf5')
 
         if '+netcdf' in spec:
-            options.append('--with-netcdf=%s' % spec['netcdf'].prefix)
+            options.append('--with-netcdf=%s' % spec['netcdf-c'].prefix)
         else:
             options.append('--without-netcdf')
 
diff --git a/var/spack/repos/builtin/packages/libmongoc/package.py b/var/spack/repos/builtin/packages/mongo-c-driver/package.py
similarity index 98%
rename from var/spack/repos/builtin/packages/libmongoc/package.py
rename to var/spack/repos/builtin/packages/mongo-c-driver/package.py
index 0d3110a803..aeac6d31db 100644
--- a/var/spack/repos/builtin/packages/libmongoc/package.py
+++ b/var/spack/repos/builtin/packages/mongo-c-driver/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Libmongoc(AutotoolsPackage):
+class MongoCDriver(AutotoolsPackage):
     """libmongoc is a client library written in C for MongoDB."""
 
     homepage = "https://github.com/mongodb/mongo-c-driver"
diff --git a/var/spack/repos/builtin/packages/mongo-cxx-driver/package.py b/var/spack/repos/builtin/packages/mongo-cxx-driver/package.py
index 0f36e6174e..47732dcbb4 100644
--- a/var/spack/repos/builtin/packages/mongo-cxx-driver/package.py
+++ b/var/spack/repos/builtin/packages/mongo-cxx-driver/package.py
@@ -15,4 +15,4 @@ class MongoCxxDriver(CMakePackage):
 
     version('3.2.0',     sha256='e26edd44cf20bd6be91907403b6d63a065ce95df4c61565770147a46716aad8c')
 
-    depends_on('libmongoc@1.9.2:')
+    depends_on('mongo-c-driver@1.9.2:')
diff --git a/var/spack/repos/builtin/packages/mpibash/mpibash-4.3.patch b/var/spack/repos/builtin/packages/mpi-bash/mpibash-4.3.patch
similarity index 100%
rename from var/spack/repos/builtin/packages/mpibash/mpibash-4.3.patch
rename to var/spack/repos/builtin/packages/mpi-bash/mpibash-4.3.patch
diff --git a/var/spack/repos/builtin/packages/mpibash/package.py b/var/spack/repos/builtin/packages/mpi-bash/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/mpibash/package.py
rename to var/spack/repos/builtin/packages/mpi-bash/package.py
index 174109f6d9..5b3731fbbe 100644
--- a/var/spack/repos/builtin/packages/mpibash/package.py
+++ b/var/spack/repos/builtin/packages/mpi-bash/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Mpibash(AutotoolsPackage):
+class MpiBash(AutotoolsPackage):
     """Parallel scripting right from the Bourne-Again Shell (Bash)"""
 
     homepage = "https://github.com/lanl/MPI-Bash"
diff --git a/var/spack/repos/builtin/packages/mxnet/package.py b/var/spack/repos/builtin/packages/mxnet/package.py
index 43796ab7d8..d261f60247 100644
--- a/var/spack/repos/builtin/packages/mxnet/package.py
+++ b/var/spack/repos/builtin/packages/mxnet/package.py
@@ -11,10 +11,9 @@ class Mxnet(MakefilePackage):
     designed for both efficiency and flexibility."""
 
     homepage = "http://mxnet.io"
-    url      = "https://github.com/apache/incubator-mxnet/archive/0.10.0.post2.tar.gz"
+    url      = "https://github.com/apache/incubator-mxnet/releases/download/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz"
 
-    version('1.3.0', sha256='c00d6fbb2947144ce36c835308e603f002c1eb90a9f4c5a62f4d398154eed4d2',
-            url='https://github.com/apache/incubator-mxnet/releases/download/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz')
+    version('1.3.0', sha256='c00d6fbb2947144ce36c835308e603f002c1eb90a9f4c5a62f4d398154eed4d2')
 
     variant('cuda', default=False, description='Enable CUDA support')
     variant('opencv', default=True, description='Enable OpenCV support')
diff --git a/var/spack/repos/builtin/packages/nauty/package.py b/var/spack/repos/builtin/packages/nauty/package.py
index 444629efd7..8e897c37d6 100644
--- a/var/spack/repos/builtin/packages/nauty/package.py
+++ b/var/spack/repos/builtin/packages/nauty/package.py
@@ -48,8 +48,8 @@ class Nauty(AutotoolsPackage):
     }
     # Iterate over patches
     for condition, urls in urls_for_patches.items():
-        for url, sha256 in urls:
-            patch(url, when=condition, level=1, sha256=sha256)
+        for path, sha256 in urls:
+            patch(path, when=condition, level=1, sha256=sha256)
 
     depends_on('m4',  type='build', when='@2.6r7')
     depends_on('autoconf',  type='build', when='@2.6r7')
diff --git a/var/spack/repos/builtin/packages/nccmp/package.py b/var/spack/repos/builtin/packages/nccmp/package.py
index 6bf5fdb1b4..575b72a6ab 100644
--- a/var/spack/repos/builtin/packages/nccmp/package.py
+++ b/var/spack/repos/builtin/packages/nccmp/package.py
@@ -13,7 +13,7 @@ class Nccmp(Package):
 
     version('1.8.2.0', sha256='7f5dad4e8670568a71f79d2bcebb08d95b875506d3d5faefafe1a8b3afa14f18')
 
-    depends_on('netcdf')
+    depends_on('netcdf-c')
 
     def install(self, spec, prefix):
         # Configure says: F90 and F90FLAGS are replaced by FC and
diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py
index c3940136c4..60e530bae9 100644
--- a/var/spack/repos/builtin/packages/ncl/package.py
+++ b/var/spack/repos/builtin/packages/ncl/package.py
@@ -42,7 +42,7 @@ class Ncl(Package):
 
     # Non-optional dependencies according to the manual:
     depends_on('jpeg')
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('cairo+X+pdf')
 
     # Extra dependencies that may be missing from build system:
@@ -65,7 +65,7 @@ class Ncl(Package):
     depends_on('bzip2')
     depends_on('freetype')
 
-    # In Spack, we do not have an option to compile netcdf without netcdf-4
+    # In Spack, we do not have an option to compile netcdf-c without netcdf-4
     # support, so we will tell the ncl configuration script that we want
     # support for netcdf-4, but the script assumes that hdf5 is compiled with
     # szip support. We introduce this restriction with the following dependency
@@ -76,13 +76,13 @@ class Ncl(Package):
     # ESMF is only required at runtime (for ESMF_regridding.ncl)
     depends_on('esmf', type='run')
 
-    # In Spack, we also do not have an option to compile netcdf without DAP
+    # In Spack, we also do not have an option to compile netcdf-c without DAP
     # support, so we will tell the ncl configuration script that we have it.
 
     # Some of the optional dependencies according to the manual:
     depends_on('hdf', when='+hdf4')
     depends_on('gdal+proj@:2.4', when='+gdal')
-    depends_on('udunits2', when='+udunits2')
+    depends_on('udunits', when='+udunits2')
 
     # We need src files of triangle to appear in ncl's src tree if we want
     # triangle's features.
@@ -123,8 +123,8 @@ def install(self, spec, prefix):
         self.prepare_src_tree()
         make('Everything', parallel=False)
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.set('NCARG_ROOT', self.spec.prefix)
+    def setup_run_environment(self, env):
+        env.set('NCARG_ROOT', self.spec.prefix)
 
     def prepare_site_config(self):
         fc_flags = []
diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py
index 951d6f5974..2fb78fcda2 100644
--- a/var/spack/repos/builtin/packages/nco/package.py
+++ b/var/spack/repos/builtin/packages/nco/package.py
@@ -30,10 +30,10 @@ class Nco(AutotoolsPackage):
 
     # See "Compilation Requirements" at:
     # http://nco.sourceforge.net/#bld
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('antlr@2.7.7+cxx')  # required for ncap2
     depends_on('gsl')              # desirable for ncap2
-    depends_on('udunits2')         # allows dimensional unit transformations
+    depends_on('udunits')          # allows dimensional unit transformations
 
     depends_on('flex', type='build')
     depends_on('bison', type='build')
@@ -45,9 +45,9 @@ def configure_args(self):
         spec = self.spec
         return ['--{0}-doc'.format('enable' if '+doc' in spec else 'disable')]
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         spec = self.spec
-        spack_env.set('NETCDF_INC', spec['netcdf'].prefix.include)
-        spack_env.set('NETCDF_LIB', spec['netcdf'].prefix.lib)
-        spack_env.set('ANTLR_ROOT', spec['antlr'].prefix)
-        spack_env.set('UDUNITS2_PATH', spec['udunits2'].prefix)
+        env.set('NETCDF_INC', spec['netcdf-c'].prefix.include)
+        env.set('NETCDF_LIB', spec['netcdf-c'].prefix.lib)
+        env.set('ANTLR_ROOT', spec['antlr'].prefix)
+        env.set('UDUNITS2_PATH', spec['udunits'].prefix)
diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py
index 3f1d6f4d8c..96666a29be 100644
--- a/var/spack/repos/builtin/packages/ncview/package.py
+++ b/var/spack/repos/builtin/packages/ncview/package.py
@@ -13,8 +13,8 @@ class Ncview(AutotoolsPackage):
 
     version('2.1.7', sha256='a14c2dddac0fc78dad9e4e7e35e2119562589738f4ded55ff6e0eca04d682c82')
 
-    depends_on('netcdf')
-    depends_on('udunits2')
+    depends_on('netcdf-c')
+    depends_on('udunits')
     depends_on('libpng')
     depends_on('libxaw')
 
diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py
similarity index 94%
rename from var/spack/repos/builtin/packages/netcdf/package.py
rename to var/spack/repos/builtin/packages/netcdf-c/package.py
index 46a5695c58..e548848be0 100644
--- a/var/spack/repos/builtin/packages/netcdf/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-c/package.py
@@ -16,13 +16,13 @@ def is_integral(x):
         return False
 
 
-class Netcdf(AutotoolsPackage):
-    """NetCDF is a set of software libraries and self-describing,
-    machine-independent data formats that support the creation, access,
-    and sharing of array-oriented scientific data."""
+class NetcdfC(AutotoolsPackage):
+    """NetCDF (network Common Data Form) is a set of software libraries and
+    machine-independent data formats that support the creation, access, and
+    sharing of array-oriented scientific data. This is the C distribution."""
 
     homepage = "http://www.unidata.ucar.edu/software/netcdf"
-    git      = "https://github.com/Unidata/netcdf-c"
+    git      = "https://github.com/Unidata/netcdf-c.git"
     url      = "https://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-c-4.7.2.tar.gz"
 
     def url_for_version(self, version):
@@ -45,7 +45,7 @@ def url_for_version(self, version):
     # Version 4.4.1.1 is having problems in tests
     #    https://github.com/Unidata/netcdf-c/issues/343
     version('4.4.1.1', sha256='4d44c6f4d02a8faf10ea619bfe1ba8224cd993024f4da12988c7465f663c8cae')
-    # netcdf@4.4.1 can crash on you (in real life and in tests).  See:
+    # Version 4.4.1 can crash on you (in real life and in tests).  See:
     #    https://github.com/Unidata/netcdf-c/issues/282
     version('4.4.1',   sha256='8915cc69817f7af6165fbe69a8d1dfe21d5929d7cca9d10b10f568669ec6b342')
     version('4.4.0',   sha256='0d40cb7845abd03c363abcd5f57f16e3c0685a0faf8badb2c59867452f6bcf78')
@@ -121,20 +121,20 @@ def url_for_version(self, version):
     # Starting version 4.4.0, it became possible to disable parallel I/O even
     # if HDF5 supports it. For previous versions of the library we need
     # HDF5 without mpi support to disable parallel I/O.
-    # The following doesn't work if hdf5+mpi by default and netcdf~mpi is
+    # The following doesn't work if hdf5+mpi by default and netcdf-c~mpi is
     # specified in packages.yaml
     # depends_on('hdf5~mpi', when='@:4.3~mpi')
     # Thus, we have to introduce a conflict
     conflicts('~mpi', when='@:4.3^hdf5+mpi',
-              msg='netcdf@:4.3~mpi requires hdf5~mpi')
+              msg='netcdf-c@:4.3~mpi requires hdf5~mpi')
 
     # We need HDF5 with mpi support to enable parallel I/O.
-    # The following doesn't work if hdf5~mpi by default and netcdf+mpi is
+    # The following doesn't work if hdf5~mpi by default and netcdf-c+mpi is
     # specified in packages.yaml
     # depends_on('hdf5+mpi', when='+mpi')
     # Thus, we have to introduce a conflict
     conflicts('+mpi', when='^hdf5~mpi',
-              msg='netcdf+mpi requires hdf5+mpi')
+              msg='netcdf-c+mpi requires hdf5+mpi')
 
     # NetCDF 4.4.0 and prior have compatibility issues with HDF5 1.10 and later
     # https://github.com/Unidata/netcdf-c/issues/250
@@ -264,3 +264,10 @@ def configure_args(self):
     def check(self):
         # h5_test fails when run in parallel
         make('check', parallel=False)
+
+    @property
+    def libs(self):
+        shared = '+shared' in self.spec
+        return find_libraries(
+            'libnetcdf', root=self.prefix, shared=shared, recursive=True
+        )
diff --git a/var/spack/repos/builtin/packages/netcdf-cxx/package.py b/var/spack/repos/builtin/packages/netcdf-cxx/package.py
index 94bb28412f..3c550e5669 100644
--- a/var/spack/repos/builtin/packages/netcdf-cxx/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-cxx/package.py
@@ -17,7 +17,7 @@ class NetcdfCxx(AutotoolsPackage):
 
     version('4.2', sha256='95ed6ab49a0ee001255eac4e44aacb5ca4ea96ba850c08337a3e4c9a0872ccd1')
 
-    depends_on('netcdf')
+    depends_on('netcdf-c')
 
     variant(
         'netcdf4', default=True, description='Compile with netCDF4 support')
@@ -38,7 +38,7 @@ def configure_args(self):
         # Add these to LDFLAGS explicitly, so the linker doesn't accidentally
         # use system versions
         ldflags = [
-            self.spec['netcdf'].libs.search_flags,
+            self.spec['netcdf-c'].libs.search_flags,
             self.spec['hdf5'].libs.search_flags,
         ]
         args.append('LDFLAGS=' + ' '.join(ldflags))
diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
index 938d74d6aa..b80b38be9e 100644
--- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
@@ -7,7 +7,9 @@
 
 
 class NetcdfCxx4(AutotoolsPackage):
-    """C++ interface for NetCDF4"""
+    """NetCDF (network Common Data Form) is a set of software libraries and
+    machine-independent data formats that support the creation, access, and
+    sharing of array-oriented scientific data. This is the C++ distribution."""
 
     homepage = "https://www.unidata.ucar.edu/software/netcdf"
     url      = "https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-cxx4-4.3.1.tar.gz"
@@ -19,7 +21,7 @@ class NetcdfCxx4(AutotoolsPackage):
     # force its usage with this variant.
     variant('pic', default=True, description='Produce position-independent code (for shared libs)')
 
-    depends_on('netcdf')
+    depends_on('netcdf-c')
 
     depends_on('automake', type='build')
     depends_on('autoconf', type='build')
@@ -32,7 +34,7 @@ def flag_handler(self, name, flags):
         if name == 'cflags' and '+pic' in self.spec:
             flags.append(self.compiler.pic_flag)
         elif name == 'cppflags':
-            flags.append('-I' + self.spec['netcdf'].prefix.include)
+            flags.append('-I' + self.spec['netcdf-c'].prefix.include)
 
         return (None, None, flags)
 
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
index d698ff1e8b..cfc4bc1018 100644
--- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
@@ -7,7 +7,10 @@
 
 
 class NetcdfFortran(AutotoolsPackage):
-    """Fortran interface for NetCDF4"""
+    """NetCDF (network Common Data Form) is a set of software libraries and
+    machine-independent data formats that support the creation, access, and
+    sharing of array-oriented scientific data. This is the Fortran
+    distribution."""
 
     homepage = "https://www.unidata.ucar.edu/software/netcdf"
     url      = "https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-fortran-4.5.2.tar.gz"
@@ -20,7 +23,7 @@ class NetcdfFortran(AutotoolsPackage):
     variant('pic', default=True,
             description='Produce position-independent code (for shared libs)')
 
-    depends_on('netcdf')
+    depends_on('netcdf-c')
 
     # The default libtool.m4 is too old to handle NAG compiler properly:
     # https://github.com/Unidata/netcdf-fortran/issues/94
@@ -30,14 +33,14 @@ def flag_handler(self, name, flags):
         if name in ['cflags', 'fflags'] and '+pic' in self.spec:
             flags.append(self.compiler.pic_flag)
         elif name == 'cppflags':
-            flags.append(self.spec['netcdf'].headers.cpp_flags)
+            flags.append(self.spec['netcdf-c'].headers.cpp_flags)
         elif name == 'ldflags':
             # We need to specify LDFLAGS to get correct dependency_libs
             # in libnetcdff.la, so packages that use libtool for linking
             # could correctly link to all the dependencies even when the
             # building takes place outside of Spack environment, i.e.
             # without Spack's compiler wrappers.
-            flags.append(self.spec['netcdf'].libs.search_flags)
+            flags.append(self.spec['netcdf-c'].libs.search_flags)
 
         return None, None, flags
 
diff --git a/var/spack/repos/builtin/packages/nrm/package.py b/var/spack/repos/builtin/packages/nrm/package.py
index b15bc11323..fa0b88201e 100644
--- a/var/spack/repos/builtin/packages/nrm/package.py
+++ b/var/spack/repos/builtin/packages/nrm/package.py
@@ -16,7 +16,7 @@ class Nrm(PythonPackage):
     depends_on('py-setuptools', type=('build'))
 
     depends_on('py-six', type=('build', 'run'))
-    depends_on('py-zmq@17.1.2', type=('build', 'run'))
+    depends_on('py-pyzmq@17.1.2', type=('build', 'run'))
     depends_on('py-pyyaml', type=('build', 'run'))
     depends_on('py-tornado@5.1.1', type=('build', 'run'))
     depends_on('py-numpy', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/ntpoly/package.py b/var/spack/repos/builtin/packages/ntpoly/package.py
index d390e19dba..75ba5a6890 100644
--- a/var/spack/repos/builtin/packages/ntpoly/package.py
+++ b/var/spack/repos/builtin/packages/ntpoly/package.py
@@ -16,7 +16,7 @@ class Ntpoly(CMakePackage):
     """
 
     homepage = "https://william-dawson.github.io/NTPoly/"
-    url      = "https://github.com/william-dawson/NTPoly/archive/ntpoly-v2.3.1-alpha.tar.gz"
+    url      = "https://github.com/william-dawson/NTPoly/archive/ntpoly-v2.3.1.tar.gz"
 
     version('2.3.1', sha256='af8c7690321607fbdee9671b9cb3acbed945148014e0541435858cf82bfd887e')
 
diff --git a/var/spack/repos/builtin/packages/nut/package.py b/var/spack/repos/builtin/packages/nut/package.py
index f159838c63..d5649fdaec 100644
--- a/var/spack/repos/builtin/packages/nut/package.py
+++ b/var/spack/repos/builtin/packages/nut/package.py
@@ -13,7 +13,7 @@ class Nut(CMakePackage):
     and performance issues."""
 
     homepage = "https://github.com/lanl/NuT"
-    url      = "https://github.com/lanl/NuT/archive/0.1.0.tar.gz"
+    url      = "https://github.com/lanl/NuT/archive/0.1.1.tar.gz"
     git      = "https://github.com/lanl/NuT.git"
 
     tags = ['proxy-app']
@@ -29,11 +29,11 @@ class Nut(CMakePackage):
     conflicts('%xl', when='@serial')
     conflicts('%nag', when='@serial')
 
-    def setup_environment(self, spack_env, run_env):
-        spack_env.set('RANDOM123_DIR', self.spec['random123'].prefix)
-
     build_targets = ['VERBOSE=on']
 
+    def setup_build_environment(self, env):
+        env.set('RANDOM123_DIR', self.spec['random123'].prefix)
+
     def install(self, spec, prefix):
         install('README.md', prefix)
         mkdirp(prefix.bin)
diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py
index cdfa076c73..f153ff839d 100644
--- a/var/spack/repos/builtin/packages/octave/package.py
+++ b/var/spack/repos/builtin/packages/octave/package.py
@@ -75,7 +75,7 @@ class Octave(AutotoolsPackage):
     depends_on('glpk',         when='+glpk')
     depends_on('gl2ps',        when='+gl2ps')
     depends_on('gnuplot',      when='+gnuplot')
-    depends_on('image-magick',  when='+magick')
+    depends_on('imagemagick',  when='+magick')
     depends_on('hdf5',         when='+hdf5')
     depends_on('java',          when='+jdk')        # TODO: requires Java 6 ?
     depends_on('llvm',         when='+llvm')
@@ -156,7 +156,7 @@ def configure_args(self):
 
         if '+magick' in spec:
             config_args.append("--with-magick=%s"
-                               % spec['image-magick'].prefix.lib)
+                               % spec['imagemagick'].prefix.lib)
         else:
             config_args.append("--without-magick")
 
diff --git a/var/spack/repos/builtin/packages/omega-h/package.py b/var/spack/repos/builtin/packages/omega-h/package.py
index e459406164..0c9c323650 100644
--- a/var/spack/repos/builtin/packages/omega-h/package.py
+++ b/var/spack/repos/builtin/packages/omega-h/package.py
@@ -12,7 +12,7 @@ class OmegaH(CMakePackage):
     """
 
     homepage = "https://github.com/SNLComputation/omega_h"
-    url      = "https://github.com/SNLComputation/omega_h/archive/v9.13.4.tar.gz"
+    url      = "https://github.com/SNLComputation/omega_h/archive/v9.29.0.tar.gz"
     git      = "https://github.com/SNLComputation/omega_h.git"
 
     maintainers = ['ibaned']
diff --git a/var/spack/repos/builtin/packages/openldap/package.py b/var/spack/repos/builtin/packages/openldap/package.py
index 3c8a9e453e..2bd92a41f4 100644
--- a/var/spack/repos/builtin/packages/openldap/package.py
+++ b/var/spack/repos/builtin/packages/openldap/package.py
@@ -17,7 +17,7 @@ class Openldap(AutotoolsPackage):
     """
 
     homepage = "https://www.openldap.org/"
-    url      = "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.9.tgz"
+    url      = "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.48.tgz"
 
     version('2.4.48', sha256='d9523ffcab5cd14b709fcf3cb4d04e8bc76bb8970113255f372bc74954c6074d')
 
diff --git a/var/spack/repos/builtin/packages/openpmd-api/package.py b/var/spack/repos/builtin/packages/openpmd-api/package.py
index fe9972776f..6dc7c89d78 100644
--- a/var/spack/repos/builtin/packages/openpmd-api/package.py
+++ b/var/spack/repos/builtin/packages/openpmd-api/package.py
@@ -33,7 +33,7 @@ class OpenpmdApi(CMakePackage):
 
     depends_on('cmake@3.11.0:', type='build')
     depends_on('mpark-variant@1.4.0:')
-    depends_on('catch@2.6.1: ~single_header', type='test')
+    depends_on('catch2@2.6.1: ~single_header', type='test')
     depends_on('mpi@2.3:', when='+mpi')  # might become MPI 3.0+
     depends_on('hdf5@1.8.13:', when='+hdf5')
     depends_on('hdf5@1.8.13: ~mpi', when='~mpi +hdf5')
@@ -93,25 +93,24 @@ def cmake_args(self):
 
         return args
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_run_environment(self, env):
         spec = self.spec
         # pre-load dependent CMake-PUBLIC header-only libs
-        run_env.prepend_path('CMAKE_PREFIX_PATH', spec['mpark-variant'].prefix)
-        run_env.prepend_path('CPATH', spec['mpark-variant'].prefix.include)
+        env.prepend_path('CMAKE_PREFIX_PATH', spec['mpark-variant'].prefix)
+        env.prepend_path('CPATH', spec['mpark-variant'].prefix.include)
 
         # more deps searched in openPMDConfig.cmake
         if spec.satisfies("+mpi"):
-            run_env.prepend_path('CMAKE_PREFIX_PATH', spec['mpi'].prefix)
+            env.prepend_path('CMAKE_PREFIX_PATH', spec['mpi'].prefix)
         if spec.satisfies("+adios1"):
-            run_env.prepend_path('CMAKE_PREFIX_PATH', spec['adios'].prefix)
+            env.prepend_path('CMAKE_PREFIX_PATH', spec['adios'].prefix)
         if spec.satisfies("+adios2"):
-            run_env.prepend_path('CMAKE_PREFIX_PATH', spec['adios2'].prefix)
+            env.prepend_path('CMAKE_PREFIX_PATH', spec['adios2'].prefix)
         if spec.satisfies("+hdf5"):
-            run_env.prepend_path('CMAKE_PREFIX_PATH', spec['hdf5'].prefix)
+            env.prepend_path('CMAKE_PREFIX_PATH', spec['hdf5'].prefix)
 
-    def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
+    def setup_dependent_build_environment(self, env, dependent_spec):
         # pre-load dependent CMake-PUBLIC header-only libs
-        spack_env.prepend_path('CMAKE_PREFIX_PATH',
-                               self.spec['mpark-variant'].prefix)
-        spack_env.prepend_path('CPATH',
-                               self.spec['mpark-variant'].prefix.include)
+        env.prepend_path('CMAKE_PREFIX_PATH',
+                         self.spec['mpark-variant'].prefix)
+        prepend_path('CPATH', self.spec['mpark-variant'].prefix.include)
diff --git a/var/spack/repos/builtin/packages/pagit/package.py b/var/spack/repos/builtin/packages/pagit/package.py
index 7cc1496b53..3bce58cd39 100644
--- a/var/spack/repos/builtin/packages/pagit/package.py
+++ b/var/spack/repos/builtin/packages/pagit/package.py
@@ -18,10 +18,6 @@ class Pagit(Package):
     depends_on('java', type=('build', 'run'))
     depends_on('perl', type=('build', 'run'))
 
-    def url_for_version(self, version):
-        url = 'ftp://ftp.sanger.ac.uk/pub/resources/software/pagit/PAGIT.V{0}.64bit.tgz'
-        return url.format(version)
-
     def install(self, spec, prefix):
         with working_dir('PAGIT'):
             install_tree('ABACAS', prefix.ABACAS)
@@ -31,19 +27,18 @@ def install(self, spec, prefix):
             install_tree('lib', prefix.lib)
             install_tree('RATT', prefix.RATT)
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.set('PAGIT_HOME', self.prefix)
-        run_env.set('PILEUP_HOME', join_path(self.prefix.bin, 'pileup_v0.5'))
-        run_env.set('ICORN_HOME', self.prefix.icorn)
-        run_env.set('SNPOMATIC_HOME', self.prefix.bin)
-        run_env.set('RATT_HOME', self.prefix.RATT)
-        run_env.set('RATT_CONFIG', join_path(self.prefix.RATT, 'RATT_config'))
-        run_env.prepend_path('PATH', join_path(self.prefix.bin, 'pileup_v0.5',
-                             'ssaha2'))
-        run_env.prepend_path('PATH', join_path(self.prefix.bin,
-                             'pileup_v0.5'))
-        run_env.prepend_path('PATH', self.prefix.IMAGE)
-        run_env.prepend_path('PATH', self.prefix.ABACAS)
-        run_env.prepend_path('PATH', self.prefix.ICORN)
-        run_env.prepend_path('PATH', self.prefix.RATT)
-        run_env.prepend_path('PERL5LIB', self.prefix.lib)
+    def setup_run_environment(self, env):
+        env.set('PAGIT_HOME', self.prefix)
+        env.set('PILEUP_HOME', join_path(self.prefix.bin, 'pileup_v0.5'))
+        env.set('ICORN_HOME', self.prefix.icorn)
+        env.set('SNPOMATIC_HOME', self.prefix.bin)
+        env.set('RATT_HOME', self.prefix.RATT)
+        env.set('RATT_CONFIG', join_path(self.prefix.RATT, 'RATT_config'))
+        env.prepend_path('PATH', join_path(self.prefix.bin, 'pileup_v0.5',
+                         'ssaha2'))
+        env.prepend_path('PATH', join_path(self.prefix.bin, 'pileup_v0.5'))
+        env.prepend_path('PATH', self.prefix.IMAGE)
+        env.prepend_path('PATH', self.prefix.ABACAS)
+        env.prepend_path('PATH', self.prefix.ICORN)
+        env.prepend_path('PATH', self.prefix.RATT)
+        env.prepend_path('PERL5LIB', self.prefix.lib)
diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py
index e19039caa5..0ca4ef375f 100644
--- a/var/spack/repos/builtin/packages/paraview/package.py
+++ b/var/spack/repos/builtin/packages/paraview/package.py
@@ -93,7 +93,7 @@ class Paraview(CMakePackage, CudaPackage):
     depends_on('libpng')
     depends_on('libtiff')
     depends_on('libxml2')
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('expat')
     # depends_on('netcdf-cxx')
     # depends_on('protobuf') # version mismatches?
@@ -127,7 +127,7 @@ def paraview_subdir(self):
         """The paraview subdirectory name as paraview-major.minor"""
         return 'paraview-{0}'.format(self.spec.version.up_to(2))
 
-    def setup_dependent_build_environment(self, env):
+    def setup_dependent_build_environment(self, env, dependent_spec):
         if os.path.isdir(self.prefix.lib64):
             lib_dir = self.prefix.lib64
         else:
diff --git a/var/spack/repos/builtin/packages/parquet/package.py b/var/spack/repos/builtin/packages/parquet-cpp/package.py
similarity index 97%
rename from var/spack/repos/builtin/packages/parquet/package.py
rename to var/spack/repos/builtin/packages/parquet-cpp/package.py
index ac130b359f..de6559dc5e 100644
--- a/var/spack/repos/builtin/packages/parquet/package.py
+++ b/var/spack/repos/builtin/packages/parquet-cpp/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Parquet(CMakePackage):
+class ParquetCpp(CMakePackage):
     """C++ bindings for the Apache Parquet columnar data format.
     """
 
diff --git a/var/spack/repos/builtin/packages/perl-alien-libxml2/package.py b/var/spack/repos/builtin/packages/perl-alien-libxml2/package.py
index 98c0a488d9..0c299e06b4 100644
--- a/var/spack/repos/builtin/packages/perl-alien-libxml2/package.py
+++ b/var/spack/repos/builtin/packages/perl-alien-libxml2/package.py
@@ -10,7 +10,7 @@ class PerlAlienLibxml2(PerlPackage):
     """This module provides libxml2 for other modules to use."""
 
     homepage = "https://metacpan.org/pod/Alien::Libxml2"
-    url      = "https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Alien-Libxml2-0.09.tar.gz"
+    url      = "https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Alien-Libxml2-0.10_01.tar.gz"
 
     version('0.10_01', sha256='2f45b308b33503292f48bf46a75fe1e653d6b209ba5caf0628d8cc103f8d61ac')
 
diff --git a/var/spack/repos/builtin/packages/perl-bio-perl/package.py b/var/spack/repos/builtin/packages/perl-bioperl/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/perl-bio-perl/package.py
rename to var/spack/repos/builtin/packages/perl-bioperl/package.py
index a8680d8b2e..8f585b376e 100644
--- a/var/spack/repos/builtin/packages/perl-bio-perl/package.py
+++ b/var/spack/repos/builtin/packages/perl-bioperl/package.py
@@ -7,7 +7,7 @@
 import inspect
 
 
-class PerlBioPerl(PerlPackage):
+class PerlBioperl(PerlPackage):
     """BioPerl is the product of a community effort to produce Perl code which
     is useful in biology. Examples include Sequence objects, Alignment objects
     and database searching objects. These objects not only do what they are
@@ -36,8 +36,7 @@ class PerlBioPerl(PerlPackage):
     url      = "https://cpan.metacpan.org/authors/id/C/CD/CDRAUG/BioPerl-1.7.6.tar.gz"
 
     version('1.7.6', sha256='df2a3efc991b9b5d7cc9d038a1452c6dac910c9ad2a0e47e408dd692c111688d')
-    version('1.7.2', sha256='17aa3aaab2f381bbcaffdc370002eaf28f2c341b538068d6586b2276a76464a1',
-            url="http://search.cpan.org/CPAN/authors/id/C/CJ/CJFIELDS/BioPerl-1.007002.tar.gz")
+    version('1.007002', sha256='17aa3aaab2f381bbcaffdc370002eaf28f2c341b538068d6586b2276a76464a1')
 
     # According to cpandeps.grinnz.com Module-Build is both a build and run
     # time dependency for BioPerl
diff --git a/var/spack/repos/builtin/packages/perl-dbfile/package.py b/var/spack/repos/builtin/packages/perl-db-file/package.py
similarity index 97%
rename from var/spack/repos/builtin/packages/perl-dbfile/package.py
rename to var/spack/repos/builtin/packages/perl-db-file/package.py
index 19cc9410c1..ff7263517f 100644
--- a/var/spack/repos/builtin/packages/perl-dbfile/package.py
+++ b/var/spack/repos/builtin/packages/perl-db-file/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PerlDbfile(PerlPackage):
+class PerlDbFile(PerlPackage):
     """DB_File is a module which allows Perl programs to make use of the
     facilities provided by Berkeley DB version 1.x (if you have a newer version
     of DB, see "Using DB_File with Berkeley DB version 2 or greater").
diff --git a/var/spack/repos/builtin/packages/perl-devel-symdump/package.py b/var/spack/repos/builtin/packages/perl-devel-symdump/package.py
index 9dfdc5ae98..386add30e4 100644
--- a/var/spack/repos/builtin/packages/perl-devel-symdump/package.py
+++ b/var/spack/repos/builtin/packages/perl-devel-symdump/package.py
@@ -10,6 +10,6 @@ class PerlDevelSymdump(PerlPackage):
     """Devel::Symdump - dump symbol names or the symbol table"""
 
     homepage = "https://metacpan.org/pod/Devel::Symdump"
-    url      = "https://cpan.metacpan.org/authors/id/A/AN/ANDK/Devel-Symdump-2.18.tar.gz"
+    url      = "https://cpan.metacpan.org/authors/id/A/AN/ANDK/Devel-Symdump-2.0604.tar.gz"
 
     version('2.0604', sha256='1f9eaa557733f775ccaa852e846566274c017e6fee380aeb8d08e425cfa86d3e')
diff --git a/var/spack/repos/builtin/packages/perl-file-chdir/package.py b/var/spack/repos/builtin/packages/perl-file-chdir/package.py
index b628ca12e5..e26adb298f 100644
--- a/var/spack/repos/builtin/packages/perl-file-chdir/package.py
+++ b/var/spack/repos/builtin/packages/perl-file-chdir/package.py
@@ -18,6 +18,6 @@ class PerlFileChdir(PerlPackage):
     combine all the power of chdir(), File::Spec and Cwd."""
 
     homepage = "https://metacpan.org/pod/File::chdir"
-    url      = "https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/File-chdir-0.1010.tar.gz"
+    url      = "https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/File-chdir-0.1011.tar.gz"
 
     version('0.1011', sha256='31ebf912df48d5d681def74b9880d78b1f3aca4351a0ed1fe3570b8e03af6c79')
diff --git a/var/spack/repos/builtin/packages/perl-gd-graph/package.py b/var/spack/repos/builtin/packages/perl-gdgraph/package.py
similarity index 88%
rename from var/spack/repos/builtin/packages/perl-gd-graph/package.py
rename to var/spack/repos/builtin/packages/perl-gdgraph/package.py
index a4c83eefc4..98f015db35 100644
--- a/var/spack/repos/builtin/packages/perl-gd-graph/package.py
+++ b/var/spack/repos/builtin/packages/perl-gdgraph/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PerlGdGraph(PerlPackage):
+class PerlGdgraph(PerlPackage):
     """Graph Plotting Module for Perl 5"""
 
     homepage = "http://search.cpan.org/~bwarfield/GDGraph/Graph.pm"
@@ -16,5 +16,5 @@ class PerlGdGraph(PerlPackage):
 
     depends_on('perl-capture-tiny', type=('build', 'run'))
     depends_on('perl-test-exception', type=('build', 'run'))
-    depends_on('perl-gd-text', type=('build', 'run'))
+    depends_on('perl-gdtextutil', type=('build', 'run'))
     depends_on('perl-gd', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/perl-gd-text/package.py b/var/spack/repos/builtin/packages/perl-gdtextutil/package.py
similarity index 94%
rename from var/spack/repos/builtin/packages/perl-gd-text/package.py
rename to var/spack/repos/builtin/packages/perl-gdtextutil/package.py
index 1988eeaf70..929ac0e34e 100644
--- a/var/spack/repos/builtin/packages/perl-gd-text/package.py
+++ b/var/spack/repos/builtin/packages/perl-gdtextutil/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PerlGdText(PerlPackage):
+class PerlGdtextutil(PerlPackage):
     """Text utilities for use with GD"""
 
     homepage = "http://search.cpan.org/~mverb/GDTextUtil-0.86/Text.pm"
diff --git a/var/spack/repos/builtin/packages/perl-io-prompt/package.py b/var/spack/repos/builtin/packages/perl-io-prompt/package.py
index 2bf4144990..4734a3bc55 100644
--- a/var/spack/repos/builtin/packages/perl-io-prompt/package.py
+++ b/var/spack/repos/builtin/packages/perl-io-prompt/package.py
@@ -31,5 +31,5 @@ class PerlIoPrompt(PerlPackage):
 
     depends_on('perl-module-build', type='build')
 
-    depends_on('perl-term-readkey', type=('build', 'run'))
+    depends_on('perl-termreadkey', type=('build', 'run'))
     depends_on('perl-want', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/perl-io-tty/package.py b/var/spack/repos/builtin/packages/perl-io-tty/package.py
index 217b4fb71b..332a09e2f4 100644
--- a/var/spack/repos/builtin/packages/perl-io-tty/package.py
+++ b/var/spack/repos/builtin/packages/perl-io-tty/package.py
@@ -12,6 +12,6 @@ class PerlIoTty(PerlPackage):
     For a list of importable constants, see IO::Tty::Constant."""
 
     homepage = "https://metacpan.org/pod/IO::Tty"
-    url      = "https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-1.12.tar.gz"
+    url      = "https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-1.13_01.tar.gz"
 
     version('1.13_01', sha256='89798eba7c31d9c169ef2f38ff49490aa769b1d9a68033de365595cfaf9cc258')
diff --git a/var/spack/repos/builtin/packages/perl-libwww-perl/package.py b/var/spack/repos/builtin/packages/perl-libwww-perl/package.py
index 63a36a0e65..b57ee53bbd 100644
--- a/var/spack/repos/builtin/packages/perl-libwww-perl/package.py
+++ b/var/spack/repos/builtin/packages/perl-libwww-perl/package.py
@@ -16,6 +16,7 @@ class PerlLibwwwPerl(PerlPackage):
     url      = "http://search.cpan.org/CPAN/authors/id/O/OA/OALDERS/libwww-perl-6.33.tar.gz"
 
     version('6.33', sha256='97417386f11f007ae129fe155b82fd8969473ce396a971a664c8ae6850c69b99')
+    version('6.29', sha256='4c6f2697999d2d0e6436b584116b12b30dc39990ec0622751c1a6cec2c0e6662')
 
     depends_on('perl-encode-locale', type=('build', 'run'))
     depends_on('perl-file-listing', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/perl-log-log4perl/package.py b/var/spack/repos/builtin/packages/perl-log-log4perl/package.py
index ef7faad32c..9b1db2e856 100644
--- a/var/spack/repos/builtin/packages/perl-log-log4perl/package.py
+++ b/var/spack/repos/builtin/packages/perl-log-log4perl/package.py
@@ -10,6 +10,6 @@ class PerlLogLog4perl(PerlPackage):
     """Log4j implementation for Perl"""
 
     homepage = "http://search.cpan.org/~mschilli/Log-Log4perl-1.44/lib/Log/Log4perl.pm"
-    url      = "https://github.com/mschilli/log4perl/archive/rel_146.tar.gz"
+    url      = "https://cpan.metacpan.org/authors/id/M/MS/MSCHILLI/Log-Log4perl-1.46.tar.gz"
 
-    version('146', sha256='a361e483095795753b97f8a506b40c24c753cf73828bb8697665499ef8596402')
+    version('1.46', sha256='31011a17c04e78016e73eaa4865d0481d2ffc3dc22813c61065d90ad73c64e6f')
diff --git a/var/spack/repos/builtin/packages/perl-lwp-protocol-https/package.py b/var/spack/repos/builtin/packages/perl-lwp-protocol-https/package.py
index 0974a00bc7..5567f6fbd2 100644
--- a/var/spack/repos/builtin/packages/perl-lwp-protocol-https/package.py
+++ b/var/spack/repos/builtin/packages/perl-lwp-protocol-https/package.py
@@ -18,4 +18,4 @@ class PerlLwpProtocolHttps(PerlPackage):
     depends_on('perl-io-socket-ssl', type=('build', 'run'))
     depends_on('perl-net-http', type=('build', 'run'))
     depends_on('perl-mozilla-ca', type=('build', 'run'))
-    depends_on('perl-lwp', type=('build', 'run'))
+    depends_on('perl-libwww-perl', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/perl-lwp/package.py b/var/spack/repos/builtin/packages/perl-lwp/package.py
deleted file mode 100644
index 4cbe00854e..0000000000
--- a/var/spack/repos/builtin/packages/perl-lwp/package.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class PerlLwp(PerlPackage):
-    """The World-Wide Web library for Perl"""
-
-    homepage = "http://search.cpan.org/~oalders/libwww-perl-6.29/lib/LWP.pm"
-    url      = "http://search.cpan.org/CPAN/authors/id/O/OA/OALDERS/libwww-perl-6.29.tar.gz"
-
-    version('6.29', sha256='4c6f2697999d2d0e6436b584116b12b30dc39990ec0622751c1a6cec2c0e6662')
-
-    depends_on('perl-test-requiresinternet', type=('build', 'run'))
-    depends_on('perl-http-message', type=('build', 'run'))
-    depends_on('perl-file-listing', type=('build', 'run'))
-    depends_on('perl-http-daemon', type=('build', 'run'))
-    depends_on('perl-html-parser', type=('build', 'run'))
-    depends_on('perl-http-cookies', type=('build', 'run'))
-    depends_on('perl-www-robotrules', type=('build', 'run'))
-    depends_on('perl-test-fatal', type=('build', 'run'))
-    depends_on('perl-http-negotiate', type=('build', 'run'))
-    depends_on('perl-net-http', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/perl-version/package.py b/var/spack/repos/builtin/packages/perl-perl-version/package.py
similarity index 94%
rename from var/spack/repos/builtin/packages/perl-version/package.py
rename to var/spack/repos/builtin/packages/perl-perl-version/package.py
index a1413c0c37..68155b87e8 100644
--- a/var/spack/repos/builtin/packages/perl-version/package.py
+++ b/var/spack/repos/builtin/packages/perl-perl-version/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PerlVersion(PerlPackage):
+class PerlPerlVersion(PerlPackage):
     """Parse and manipulate Perl version strings"""
 
     homepage = "http://search.cpan.org/~bdfoy/Perl-Version-1.013/lib/Perl/Version.pm"
diff --git a/var/spack/repos/builtin/packages/perl-intervaltree/package.py b/var/spack/repos/builtin/packages/perl-set-intervaltree/package.py
similarity index 94%
rename from var/spack/repos/builtin/packages/perl-intervaltree/package.py
rename to var/spack/repos/builtin/packages/perl-set-intervaltree/package.py
index 5f875cdd6e..96ed744908 100644
--- a/var/spack/repos/builtin/packages/perl-intervaltree/package.py
+++ b/var/spack/repos/builtin/packages/perl-set-intervaltree/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PerlIntervaltree(PerlPackage):
+class PerlSetIntervaltree(PerlPackage):
     """Set::IntervalTree uses Interval Trees to store and efficiently look up
     ranges using a range-based lookup."""
 
diff --git a/var/spack/repos/builtin/packages/perl-star-fusion/package.py b/var/spack/repos/builtin/packages/perl-star-fusion/package.py
index ccab3095ad..625546c9c8 100644
--- a/var/spack/repos/builtin/packages/perl-star-fusion/package.py
+++ b/var/spack/repos/builtin/packages/perl-star-fusion/package.py
@@ -23,9 +23,9 @@ class PerlStarFusion(Package):
 
     depends_on('star', type=('build', 'run'))
     depends_on('perl', type=('build', 'run'))
-    depends_on('perl-intervaltree', type=('build', 'run'))
+    depends_on('perl-set-intervaltree', type=('build', 'run'))
     depends_on('perl-dbi', type=('build', 'run'))
-    depends_on('perl-dbfile', type=('build', 'run'))
+    depends_on('perl-db-file', type=('build', 'run'))
     depends_on('perl-uri', type=('build', 'run'))
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/perl-term-readkey/package.py b/var/spack/repos/builtin/packages/perl-termreadkey/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/perl-term-readkey/package.py
rename to var/spack/repos/builtin/packages/perl-termreadkey/package.py
index 0e89420d33..f764964d29 100644
--- a/var/spack/repos/builtin/packages/perl-term-readkey/package.py
+++ b/var/spack/repos/builtin/packages/perl-termreadkey/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PerlTermReadkey(PerlPackage):
+class PerlTermreadkey(PerlPackage):
     """Term::ReadKey is a compiled perl module dedicated to providing simple
     control over terminal driver modes (cbreak, raw, cooked, etc.,) support
     for non-blocking reads, if the architecture allows, and some generalized
diff --git a/var/spack/repos/builtin/packages/perl-xml-namespacesupport/package.py b/var/spack/repos/builtin/packages/perl-xml-namespacesupport/package.py
index cb7e58bcd1..ef816a95e8 100644
--- a/var/spack/repos/builtin/packages/perl-xml-namespacesupport/package.py
+++ b/var/spack/repos/builtin/packages/perl-xml-namespacesupport/package.py
@@ -12,6 +12,6 @@ class PerlXmlNamespacesupport(PerlPackage):
     prefix to namespace URI map, and provides a number of basic checks."""
 
     homepage = "https://metacpan.org/pod/XML::NamespaceSupport"
-    url      = "https://cpan.metacpan.org/authors/id/P/PE/PERIGRIN/XML-NamespaceSupport-1.12.tar.gz"
+    url      = "https://cpan.metacpan.org/authors/id/P/PE/PERIGRIN/XML-NamespaceSupport-1.12_9.tar.gz"
 
     version('1.12_9', sha256='2e84a057f0a8c845a612d212742cb94fca4fc8a433150b5721bd448f77d1e4a9')
diff --git a/var/spack/repos/builtin/packages/pism/package.py b/var/spack/repos/builtin/packages/pism/package.py
index 10bc658dff..356b726cb4 100644
--- a/var/spack/repos/builtin/packages/pism/package.py
+++ b/var/spack/repos/builtin/packages/pism/package.py
@@ -10,7 +10,7 @@ class Pism(CMakePackage):
     """Parallel Ice Sheet Model"""
 
     homepage = "http://pism-docs.org/wiki/doku.php:="
-    url      = "https://github.com/pism/pism/archive/v0.7.3.tar.gz"
+    url      = "https://github.com/pism/pism/archive/v1.1.4.tar.gz"
     git      = "https://github.com/pism/pism.git"
 
     maintainers = ['citibeth']
@@ -73,9 +73,9 @@ class Pism(CMakePackage):
     depends_on('fftw')
     depends_on('gsl')
     depends_on('mpi')
-    depends_on('netcdf')    # Only the C interface is used, no netcdf-cxx4
+    depends_on('netcdf-c')    # Only the C interface is used, no netcdf-cxx4
     depends_on('petsc')
-    depends_on('udunits2')
+    depends_on('udunits')
     depends_on('proj@:4')
     depends_on('everytrace', when='+everytrace')
 
@@ -116,7 +116,7 @@ def cmake_args(self):
             '-DPism_USE_EVERYTRACE=%s' %
             ('YES' if '+everytrace' in spec else 'NO')]
 
-    def setup_environment(self, spack_env, env):
+    def setup_run_environment(self, env):
         env.set('PISM_PREFIX', self.prefix)
         env.set('PISM_BIN', self.prefix.bin)
 
diff --git a/var/spack/repos/builtin/packages/prank/package.py b/var/spack/repos/builtin/packages/prank/package.py
index 0eb0050d34..d45eadb028 100644
--- a/var/spack/repos/builtin/packages/prank/package.py
+++ b/var/spack/repos/builtin/packages/prank/package.py
@@ -10,7 +10,7 @@ class Prank(Package):
     """A powerful multiple sequence alignment browser."""
 
     homepage = "http://wasabiapp.org/software/prank/"
-    url      = "http://wasabiapp.org/download/prank/prank.source.150803.tgz"
+    url      = "http://wasabiapp.org/download/prank/prank.source.170427.tgz"
 
     version('170427', sha256='623eb5e9b5cb0be1f49c3bf715e5fabceb1059b21168437264bdcd5c587a8859')
 
diff --git a/var/spack/repos/builtin/packages/ps-lite/package.py b/var/spack/repos/builtin/packages/ps-lite/package.py
index 92a0b7ff88..9d20d09d55 100644
--- a/var/spack/repos/builtin/packages/ps-lite/package.py
+++ b/var/spack/repos/builtin/packages/ps-lite/package.py
@@ -17,6 +17,6 @@ class PsLite(CMakePackage):
     version('20170328', commit='acdb698fa3bb80929ef83bb37c705f025e119b82')
 
     depends_on('protobuf@3:')
-    depends_on('zeromq')
+    depends_on('libzmq')
 
     patch('cmake.patch')
diff --git a/var/spack/repos/builtin/packages/py-avro-json-serializer/package.py b/var/spack/repos/builtin/packages/py-avro-json-serializer/package.py
index 029745dec1..5d949c053a 100644
--- a/var/spack/repos/builtin/packages/py-avro-json-serializer/package.py
+++ b/var/spack/repos/builtin/packages/py-avro-json-serializer/package.py
@@ -10,9 +10,9 @@ class PyAvroJsonSerializer(PythonPackage):
     """Serializes data into a JSON format using AVRO schema."""
 
     homepage = "https://github.com/linkedin/python-avro-json-serializer"
-    url      = "https://github.com/linkedin/python-avro-json-serializer/archive/0.4.tar.gz"
+    url      = "https://pypi.io/packages/source/a/avro_json_serializer/avro_json_serializer-0.4.tar.gz"
 
-    version('0.4',  sha256='58df57e6c85b1b453668eb0bff2b049efcfd83d6e5dfa72cee1df220f330820d')
+    version('0.4',  sha256='f9dac2dac92036c5dd5aba8c716545fc0a0630cc365a51ab15bc2ac47eac28f1')
 
     depends_on('py-setuptools', type='build')
     depends_on('py-simplejson', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-brian2/package.py b/var/spack/repos/builtin/packages/py-brian2/package.py
index 5ebb9f85bc..0d79bb5c5e 100644
--- a/var/spack/repos/builtin/packages/py-brian2/package.py
+++ b/var/spack/repos/builtin/packages/py-brian2/package.py
@@ -24,6 +24,6 @@ class PyBrian2(PythonPackage):
     depends_on('py-sympy@0.7.6:',   type=('build', 'run'))
     depends_on('py-pyparsing',      type=('build', 'run'))
     depends_on('py-jinja2@2.7:',    type=('build', 'run'))
-    depends_on('py-cpuinfo@0.1.6:', type=('build', 'run'))
+    depends_on('py-py-cpuinfo@0.1.6:', type=('build', 'run'))
     depends_on('py-sphinx@1.4.2:',  type=('build', 'run'), when='+docs')
     depends_on('py-nosetests@1.0:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-cdat-lite/package.py b/var/spack/repos/builtin/packages/py-cdat-lite/package.py
index facb14a43f..19614e5cba 100644
--- a/var/spack/repos/builtin/packages/py-cdat-lite/package.py
+++ b/var/spack/repos/builtin/packages/py-cdat-lite/package.py
@@ -17,7 +17,7 @@ class PyCdatLite(PythonPackage):
 
     version('6.0.1', sha256='092ae4ff1fb03dee00096e8dd595b769b422759ce972d96525950adf8e1c9374')
 
-    depends_on("netcdf")
+    depends_on("netcdf-c")
     depends_on("python@2.5:2.8", type=('build', 'run'))
     depends_on("py-numpy", type=('build', 'run'))
     depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-cf-units/package.py b/var/spack/repos/builtin/packages/py-cf-units/package.py
index aaa2505d10..ea7634afbb 100644
--- a/var/spack/repos/builtin/packages/py-cf-units/package.py
+++ b/var/spack/repos/builtin/packages/py-cf-units/package.py
@@ -26,4 +26,4 @@ class PyCfUnits(PythonPackage):
     depends_on('py-numpy', type=('build', 'run'))
     depends_on('py-antlr4-python3-runtime', type=('build', 'run'))
     depends_on('py-pytest-runner', type=('build'))
-    depends_on('udunits2')
+    depends_on('udunits')
diff --git a/var/spack/repos/builtin/packages/py-espressopp/package.py b/var/spack/repos/builtin/packages/py-espressopp/package.py
index 95bf54a8e9..8111ba1e80 100644
--- a/var/spack/repos/builtin/packages/py-espressopp/package.py
+++ b/var/spack/repos/builtin/packages/py-espressopp/package.py
@@ -14,7 +14,7 @@ class PyEspressopp(CMakePackage):
        atomistic or bead-spring models as they are used in soft matter research
     """
     homepage = "https://espressopp.github.io"
-    url      = "https://github.com/espressopp/espressopp/tarball/v1.9.4.1"
+    url      = "https://github.com/espressopp/espressopp/tarball/v2.0.2"
     git      = "https://github.com/espressopp/espressopp.git"
 
     version('develop', branch='master')
diff --git a/var/spack/repos/builtin/packages/py-exodus/package.py b/var/spack/repos/builtin/packages/py-exodus-bundler/package.py
similarity index 95%
rename from var/spack/repos/builtin/packages/py-exodus/package.py
rename to var/spack/repos/builtin/packages/py-exodus-bundler/package.py
index 5794a146a6..42cf282cdf 100644
--- a/var/spack/repos/builtin/packages/py-exodus/package.py
+++ b/var/spack/repos/builtin/packages/py-exodus-bundler/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyExodus(PythonPackage):
+class PyExodusBundler(PythonPackage):
     """Exodus is a tool that makes it easy to successfully relocate Linux
     ELF binaries from one system to another."""
 
diff --git a/var/spack/repos/builtin/packages/py-filelock/package.py b/var/spack/repos/builtin/packages/py-filelock/package.py
index b82459a256..89d0a7b37c 100644
--- a/var/spack/repos/builtin/packages/py-filelock/package.py
+++ b/var/spack/repos/builtin/packages/py-filelock/package.py
@@ -12,15 +12,14 @@ class PyFilelock(PythonPackage):
     inter-process communication"""
 
     homepage = "https://github.com/benediktschmitt/py-filelock"
-    url = "https://github.com/benediktschmitt/py-filelock/archive/v3.0.4.tar.gz"
+    url      = "https://pypi.io/packages/source/f/filelock/filelock-3.0.4.tar.gz"
 
-    version('3.0.4',  sha256='8521523f3eafb7bbbdd0a5a7a15ddb8076ea6f106385bbfc4c9d055db2585214')
-    version('3.0.3',  sha256='8e1b1ad91de70e091de381ab8705b37e41d240c211d8d888dcf1d0e31d6274bb')
-    version('3.0.1',  sha256='533107ab60de691030b7e90105ab38c8b0d60d52de382fe5302819cba95561f8')
-    version('3.0.0',  sha256='f41bed24b280b2fd11b2f12fecdfd2a21e5f9babc4e89929b316946288fa195c')
-    version('2.0.13', sha256='85e2a001693c2995854e42783a8c11994d143f8ba9c92d31f573476a22a5b3b3')
-    version('2.0.12', sha256='3b67cddd8c405c27b9118a1383d5257b5b6e066d3a9a30ab03d42b4dc6828cbb')
-    version('2.0.11', sha256='97c36de6e0c2eaed6638a9575a96d176e4ec2820b888f3da3194bbb852f86c5e')
-    version('2.0.10', sha256='f15d99cfa3e89072d7709bf3b5d354cf1c9096cffdb1127c4dbff1ca4a89cb84')
-    version('2.0.9',  sha256='86d8e95afe77bc92a94c2e0db2b452c067b453b017fd78edfbb679b199dadbd5')
-    version('2.0.8',  sha256='4f69474338ebf6ead2e0c2e91c5f94a25af8125d307f539db10886a19e2e2628')
+    version('3.0.4',  sha256='011327d4ed939693a5b28c0fdf2fd9bda1f68614c1d6d0643a89382ce9843a71')
+    version('3.0.3',  sha256='7d8a86350736aa0efea0730e6a7f774195cbb1c2d61134c15f6be576399e87ff')
+    version('3.0.0',  sha256='b3ad481724adfb2280773edd95ce501e497e88fa4489c6e41e637ab3fd9a456c')
+    version('2.0.13', sha256='d05079e7d7cae7576e192749d3461999ca6b0843d35b0f79f1fa956b0f6fc7d8')
+    version('2.0.12', sha256='eb4314a9a032707a914b037433ce866d4ed363fce8605d45f0c9d2cd6ac52f98')
+    version('2.0.11', sha256='e9e370efe86c30b19a2c8c36dd9fcce8e5ce294ef4ed6ac86664b666eaf852ca')
+    version('2.0.10', sha256='c73bf706d8a0c5722de0b745495fed9cda0e46c0eabb44eb18ee3f00520fa85f')
+    version('2.0.9',  sha256='0f91dce339c9f25d6f2e0733a17e4f9a47b139dffda52619a0e61e013e5c6782')
+    version('2.0.8',  sha256='7e48e4906de3c9a5d64d8f235eb3ae1050dfefa63fd65eaf318cc915c935212b')
diff --git a/var/spack/repos/builtin/packages/py-fn/package.py b/var/spack/repos/builtin/packages/py-fn-py/package.py
similarity index 95%
rename from var/spack/repos/builtin/packages/py-fn/package.py
rename to var/spack/repos/builtin/packages/py-fn-py/package.py
index 95cf3d4adf..0d4888be3a 100644
--- a/var/spack/repos/builtin/packages/py-fn/package.py
+++ b/var/spack/repos/builtin/packages/py-fn-py/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyFn(PythonPackage):
+class PyFnPy(PythonPackage):
     """Functional programming in Python: implementation of missing features
     to enjoy FP."""
 
diff --git a/var/spack/repos/builtin/packages/py-fsspec/package.py b/var/spack/repos/builtin/packages/py-fsspec/package.py
index 7d7372f66a..4e774360f0 100644
--- a/var/spack/repos/builtin/packages/py-fsspec/package.py
+++ b/var/spack/repos/builtin/packages/py-fsspec/package.py
@@ -10,9 +10,9 @@ class PyFsspec(PythonPackage):
     """A specification for pythonic filesystems."""
 
     homepage = "https://github.com/intake/filesystem_spec"
-    url = "https://github.com/intake/filesystem_spec/archive/0.4.4.tar.gz"
+    url      = "https://pypi.io/packages/source/f/fsspec/fsspec-0.4.4.tar.gz"
 
-    version('0.4.4', sha256='27dfc3dab37d5c037683c7a3eaf7acd8b24ee56e4ce3edb14af54bdb43973d43')
+    version('0.4.4', sha256='97697a46e8bf8be34461c2520d6fc4bfca0ed749b22bb2b7c21939fd450a7d63')
 
     depends_on('python@3.5:', type=('build', 'run'))
     depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-hpccm/package.py b/var/spack/repos/builtin/packages/py-hpccm/package.py
index fee945d1ed..31d8074470 100644
--- a/var/spack/repos/builtin/packages/py-hpccm/package.py
+++ b/var/spack/repos/builtin/packages/py-hpccm/package.py
@@ -11,9 +11,9 @@ class PyHpccm(PythonPackage):
     tool to make it easier to generate container specification files."""
 
     homepage = "https://github.com/NVIDIA/hpc-container-maker"
-    url      = "https://github.com/NVIDIA/hpc-container-maker/archive/v19.2.0.tar.gz"
+    url      = "https://pypi.io/packages/source/h/hpccm/hpccm-19.2.0.tar.gz"
 
-    version('19.2.0', sha256='99eb0f48cfbdfb29815aed8bcd0fa8c5a857fd912a2bb9658b217b0712ca4af5')
+    version('19.2.0', sha256='c60eec914a802b0a76596cfd5fdf7122d3f8665fcef06ef928323f5dfb5219a6')
 
     depends_on('py-setuptools', type=('build', 'run'))
     depends_on('py-enum34', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-jpype/package.py b/var/spack/repos/builtin/packages/py-jpype1/package.py
similarity index 96%
rename from var/spack/repos/builtin/packages/py-jpype/package.py
rename to var/spack/repos/builtin/packages/py-jpype1/package.py
index f8292f4132..0d8ccd7e97 100644
--- a/var/spack/repos/builtin/packages/py-jpype/package.py
+++ b/var/spack/repos/builtin/packages/py-jpype1/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyJpype(PythonPackage):
+class PyJpype1(PythonPackage):
     """JPype is an effort to allow python programs full access to java class
     libraries."""
 
diff --git a/var/spack/repos/builtin/packages/py-jsonpatch/package.py b/var/spack/repos/builtin/packages/py-jsonpatch/package.py
index b9e60c9a88..6c374ac169 100644
--- a/var/spack/repos/builtin/packages/py-jsonpatch/package.py
+++ b/var/spack/repos/builtin/packages/py-jsonpatch/package.py
@@ -10,9 +10,9 @@ class PyJsonpatch(PythonPackage):
     """Library to apply JSON Patches according to RFC 6902"""
 
     homepage = "https://github.com/stefankoegl/python-json-patch"
-    url      = "https://github.com/stefankoegl/python-json-patch/archive/v1.23.tar.gz"
+    url      = "https://pypi.io/packages/source/j/jsonpatch/jsonpatch-1.23.tar.gz"
 
-    version('1.23', sha256='0af03651204ea3049bc4aedaa42b591e134a4ee16e421f9c5f3ac4e9092885ad')
+    version('1.23', sha256='49f29cab70e9068db3b1dc6b656cbe2ee4edf7dfe9bf5a0055f17a4b6804a4b9')
 
     depends_on('py-setuptools', type='build')
     depends_on('py-jsonpointer@1.9', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-jsonpointer/package.py b/var/spack/repos/builtin/packages/py-jsonpointer/package.py
index 9e33b53b0d..99bd34913b 100644
--- a/var/spack/repos/builtin/packages/py-jsonpointer/package.py
+++ b/var/spack/repos/builtin/packages/py-jsonpointer/package.py
@@ -10,8 +10,8 @@ class PyJsonpointer(PythonPackage):
     """Library to resolve JSON Pointers according to RFC 6901"""
 
     homepage = "https://github.com/stefankoegl/python-json-pointer"
-    url      = "https://github.com/stefankoegl/python-json-pointer/archive/v2.0.tar.gz"
+    url      = "https://pypi.io/packages/source/j/jsonpointer/jsonpointer-2.0.tar.gz"
 
-    version('2.0', sha256='9594b7574a3216c9994181e9db7566a5cafb4ab24956e554f2dba1bb39edecb2')
+    version('2.0', sha256='c192ba86648e05fdae4f08a17ec25180a9aef5008d973407b581798a83975362')
 
     depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-jupyter-client/package.py b/var/spack/repos/builtin/packages/py-jupyter-client/package.py
index 1b69aa1e4e..ef66494661 100644
--- a/var/spack/repos/builtin/packages/py-jupyter-client/package.py
+++ b/var/spack/repos/builtin/packages/py-jupyter-client/package.py
@@ -24,4 +24,4 @@ class PyJupyterClient(PythonPackage):
     depends_on('python@2.7:2.8,3.3:')
     depends_on('py-traitlets', type=('build', 'run'))
     depends_on('py-jupyter-core', type=('build', 'run'))
-    depends_on('py-zmq@13:', type=('build', 'run'))
+    depends_on('py-pyzmq@13:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-jupyterhub/package.py b/var/spack/repos/builtin/packages/py-jupyterhub/package.py
index 2b3e39a389..0ada619352 100644
--- a/var/spack/repos/builtin/packages/py-jupyterhub/package.py
+++ b/var/spack/repos/builtin/packages/py-jupyterhub/package.py
@@ -31,5 +31,5 @@ class PyJupyterhub(PythonPackage):
     depends_on('py-oauthlib@3.0:', when='@1.0.0:', type=('build', 'run'))
     depends_on('py-python-oauth2@1.0:', when='@:9.4', type=('build', 'run'))
     depends_on('py-pamela', type=('build', 'run'))
-    depends_on('py-jupyter-notebook', type=('build', 'run'))
+    depends_on('py-notebook', type=('build', 'run'))
     depends_on('py-prometheus-client@0.0.21:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-lrudict/package.py b/var/spack/repos/builtin/packages/py-lru-dict/package.py
similarity index 81%
rename from var/spack/repos/builtin/packages/py-lrudict/package.py
rename to var/spack/repos/builtin/packages/py-lru-dict/package.py
index 79c3550219..a3bd6c023f 100644
--- a/var/spack/repos/builtin/packages/py-lrudict/package.py
+++ b/var/spack/repos/builtin/packages/py-lru-dict/package.py
@@ -7,13 +7,13 @@
 from spack import *
 
 
-class PyLrudict(PythonPackage):
-    """ A fast LRU cache"""
+class PyLruDict(PythonPackage):
+    """A fast LRU cache"""
 
     homepage = "https://github.com/amitdev/lru-dict"
     url      = "https://pypi.io/packages/source/l/lru-dict/lru-dict-1.1.6.tar.gz"
 
     version('1.1.6', sha256='365457660e3d05b76f1aba3e0f7fedbfcd6528e97c5115a351ddd0db488354cc')
 
-    depends_on('python@2.7:')
+    depends_on('python@2.7:', type=('build', 'run'))
     depends_on('py-setuptools', type=('build'))
diff --git a/var/spack/repos/builtin/packages/py-macholib/package.py b/var/spack/repos/builtin/packages/py-macholib/package.py
index 4f730733c8..368aba2ec1 100644
--- a/var/spack/repos/builtin/packages/py-macholib/package.py
+++ b/var/spack/repos/builtin/packages/py-macholib/package.py
@@ -10,7 +10,7 @@ class PyMacholib(PythonPackage):
     """Python package for Mach-O header analysis and editing"""
 
     homepage = "https://pypi.python.org/pypi/macholib"
-    url = "https://pypi.io/packages/source/m/macholib/macholib-1.8.tar.gz"
+    url = "https://pypi.io/packages/source/m/macholib/macholib-1.11.tar.gz"
 
     version('1.11', 'c4180ffc6f909bf8db6cd81cff4b6f601d575568f4d5dee148c830e9851eb9db')
 
diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py
index a53c2c892b..dfefbf0175 100644
--- a/var/spack/repos/builtin/packages/py-matplotlib/package.py
+++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py
@@ -113,7 +113,7 @@ class PyMatplotlib(PythonPackage):
     # Optional dependencies
     depends_on('ffmpeg', when='+movies')
     # depends_on('libav', when='+movies')
-    depends_on('image-magick', when='+animation')
+    depends_on('imagemagick', when='+animation')
     depends_on('py-pillow@3.4:', when='+image', type=('build', 'run'))
     depends_on('texlive', when='+latex', type='run')
     depends_on('ghostscript@0.9:', when='+latex', type='run')
diff --git a/var/spack/repos/builtin/packages/py-methylcode/package.py b/var/spack/repos/builtin/packages/py-methylcode/package.py
index 512d1f2d01..53b9292edf 100644
--- a/var/spack/repos/builtin/packages/py-methylcode/package.py
+++ b/var/spack/repos/builtin/packages/py-methylcode/package.py
@@ -11,15 +11,13 @@ class PyMethylcode(PythonPackage):
        reads and outputs per-base methylation data. """
 
     homepage = "https://github.com/brentp/methylcode"
-    url      = "https://github.com/brentp/methylcode/archive/master.zip"
+    git      = "https://github.com/brentp/methylcode.git"
 
-    version('1.0.0', sha256='30f707a690a887e3161c8debba3c322bd313865df40212275b02203c52a416ae')
+    version('master', branch='master')
 
-    depends_on('python@2.7.0:2.7.999')
-    depends_on('py-six')
-    depends_on('py-setuptools')
+    depends_on('python@2.6:2.8', type=('build', 'run'))
+    depends_on('py-setuptools', type='build')
     depends_on('py-numpy')
-    depends_on('py-pyparsing')
     depends_on('py-pyfasta')
     depends_on('py-bsddb3')
     depends_on('bowtie')
diff --git a/var/spack/repos/builtin/packages/py-mongo/package.py b/var/spack/repos/builtin/packages/py-mongo/package.py
deleted file mode 100644
index 117c59cf70..0000000000
--- a/var/spack/repos/builtin/packages/py-mongo/package.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-
-
-class PyMongo(PythonPackage):
-    """Python driver for MongoDB <http://www.mongodb.org>"""
-
-    homepage = "http://github.com/mongodb/mongo-python-driver"
-    url      = "https://pypi.io/packages/source/p/pymongo/pymongo-3.6.0.tar.gz"
-
-    version('3.6.0', sha256='c6de26d1e171cdc449745b82f1addbc873d105b8e7335097da991c0fc664a4a8')
-    version('3.3.0', sha256='3d45302fc2622fabf34356ba274c69df41285bac71bbd229f1587283b851b91e')
-
-    depends_on('python@2.6:2.8,3.3:')
-
-    depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-mysql-connector/package.py b/var/spack/repos/builtin/packages/py-mysql-connector-python/package.py
similarity index 95%
rename from var/spack/repos/builtin/packages/py-mysql-connector/package.py
rename to var/spack/repos/builtin/packages/py-mysql-connector-python/package.py
index e3e04280c4..07000af952 100644
--- a/var/spack/repos/builtin/packages/py-mysql-connector/package.py
+++ b/var/spack/repos/builtin/packages/py-mysql-connector-python/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyMysqlConnector(PythonPackage):
+class PyMysqlConnectorPython(PythonPackage):
     """MySQL Connector/Python is implementing the MySQL Client/Server
     protocol completely in Python. No MySQL libraries are needed, and
     no compilation is necessary to run this Python DB API v2.0
diff --git a/var/spack/repos/builtin/packages/py-mysql-connector/single-version.patch b/var/spack/repos/builtin/packages/py-mysql-connector-python/single-version.patch
similarity index 100%
rename from var/spack/repos/builtin/packages/py-mysql-connector/single-version.patch
rename to var/spack/repos/builtin/packages/py-mysql-connector-python/single-version.patch
diff --git a/var/spack/repos/builtin/packages/py-netcdf4/package.py b/var/spack/repos/builtin/packages/py-netcdf4/package.py
index ef9bbafad1..f76b6067b6 100644
--- a/var/spack/repos/builtin/packages/py-netcdf4/package.py
+++ b/var/spack/repos/builtin/packages/py-netcdf4/package.py
@@ -22,15 +22,15 @@ class PyNetcdf4(PythonPackage):
     depends_on('py-numpy@1.7:', type=('build', 'run'))
     depends_on('py-cftime', type=('build', 'run'))
 
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('hdf5@1.8.0:+hl')
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         """Ensure installed netcdf and hdf5 libraries are used"""
         # Explicitly set these variables so setup.py won't erroneously pick up
         # system versions
-        spack_env.set('USE_SETUPCFG', '0')
-        spack_env.set('HDF5_INCDIR', self.spec['hdf5'].prefix.include)
-        spack_env.set('HDF5_LIBDIR', self.spec['hdf5'].prefix.lib)
-        spack_env.set('NETCDF4_INCDIR', self.spec['netcdf'].prefix.include)
-        spack_env.set('NETCDF4_LIBDIR', self.spec['netcdf'].prefix.lib)
+        env.set('USE_SETUPCFG', '0')
+        env.set('HDF5_INCDIR', self.spec['hdf5'].prefix.include)
+        env.set('HDF5_LIBDIR', self.spec['hdf5'].prefix.lib)
+        env.set('NETCDF4_INCDIR', self.spec['netcdf-c'].prefix.include)
+        env.set('NETCDF4_LIBDIR', self.spec['netcdf-c'].prefix.lib)
diff --git a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py b/var/spack/repos/builtin/packages/py-notebook/package.py
similarity index 98%
rename from var/spack/repos/builtin/packages/py-jupyter-notebook/package.py
rename to var/spack/repos/builtin/packages/py-notebook/package.py
index 55c2f0f256..4eb62b3ac8 100644
--- a/var/spack/repos/builtin/packages/py-jupyter-notebook/package.py
+++ b/var/spack/repos/builtin/packages/py-notebook/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyJupyterNotebook(PythonPackage):
+class PyNotebook(PythonPackage):
     """Jupyter Interactive Notebook"""
 
     homepage = "https://github.com/jupyter/notebook"
diff --git a/var/spack/repos/builtin/packages/py-opentuner/package.py b/var/spack/repos/builtin/packages/py-opentuner/package.py
index 5c34fbfab7..f8f2347692 100644
--- a/var/spack/repos/builtin/packages/py-opentuner/package.py
+++ b/var/spack/repos/builtin/packages/py-opentuner/package.py
@@ -18,7 +18,7 @@ class PyOpentuner(PythonPackage):
     depends_on('python@2.7:2.8', type=('build', 'run'))
 
     depends_on('py-argparse@1.2.1:', type=('build', 'run'))
-    depends_on('py-fn@0.2.12:', type=('build', 'run'))
+    depends_on('py-fn-py@0.2.12:', type=('build', 'run'))
     depends_on('py-numpy@1.8.0:', type=('build', 'run'))
     depends_on('py-pysqlite@2.6.3:', type=('build', 'run'))
     depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-performance/package.py b/var/spack/repos/builtin/packages/py-performance/package.py
index 9abc3c4d48..0be0b0b5ba 100644
--- a/var/spack/repos/builtin/packages/py-performance/package.py
+++ b/var/spack/repos/builtin/packages/py-performance/package.py
@@ -22,4 +22,4 @@ class PyPerformance(PythonPackage):
 
     depends_on('py-setuptools', type=('build', 'run'))
     depends_on('py-six', type=('build', 'run'))
-    depends_on('py-perf', type=('build', 'run'))
+    depends_on('py-pyperf', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-plotly/package.py b/var/spack/repos/builtin/packages/py-plotly/package.py
index cd315180ed..6bf5ea9da0 100644
--- a/var/spack/repos/builtin/packages/py-plotly/package.py
+++ b/var/spack/repos/builtin/packages/py-plotly/package.py
@@ -10,9 +10,9 @@ class PyPlotly(PythonPackage):
     """An interactive, browser-based graphing library for Python"""
 
     homepage = "https://plot.ly/python/"
-    url      = "https://github.com/plotly/plotly.py/archive/v2.2.0.tar.gz"
+    url      = "https://pypi.io/packages/source/p/plotly/plotly-2.2.0.tar.gz"
 
-    version('2.2.0', sha256='dad2a49fe355dddb6ae159e96c10ac22413a33cbac513b4dbf3791e63ec33c1f')
+    version('2.2.0', sha256='ca668911ffb4d11fed6d7fbb12236f8ecc6a7209db192326bcb64bdb41451a58')
 
     depends_on('py-setuptools', type='build')
     depends_on('py-requests@2.3.0', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-cpuinfo/package.py b/var/spack/repos/builtin/packages/py-py-cpuinfo/package.py
similarity index 94%
rename from var/spack/repos/builtin/packages/py-cpuinfo/package.py
rename to var/spack/repos/builtin/packages/py-py-cpuinfo/package.py
index e9f4db3142..c4278bf678 100644
--- a/var/spack/repos/builtin/packages/py-cpuinfo/package.py
+++ b/var/spack/repos/builtin/packages/py-py-cpuinfo/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyCpuinfo(PythonPackage):
+class PyPyCpuinfo(PythonPackage):
     """Get CPU info with pure Python 2 & 3"""
 
     homepage = "https://github.com/workhorsy/py-cpuinfo"
diff --git a/var/spack/repos/builtin/packages/py-git2/package.py b/var/spack/repos/builtin/packages/py-pygit2/package.py
similarity index 81%
rename from var/spack/repos/builtin/packages/py-git2/package.py
rename to var/spack/repos/builtin/packages/py-pygit2/package.py
index a4c6404ef1..216c61a74f 100644
--- a/var/spack/repos/builtin/packages/py-git2/package.py
+++ b/var/spack/repos/builtin/packages/py-pygit2/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyGit2(PythonPackage):
+class PyPygit2(PythonPackage):
     """Pygit2 is a set of Python bindings to the libgit2 shared library,
     libgit2 implements the core of Git.
     """
@@ -24,8 +24,8 @@ class PyGit2(PythonPackage):
     depends_on('py-six', type=('build', 'run'))
     depends_on('py-cffi', type=('build', 'run'))
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         spec = self.spec
         # http://www.pygit2.org/install.html
-        spack_env.set('LIBGIT2', spec['libgit2'].prefix)
-        spack_env.set('LIBGIT2_LIB', spec['libgit2'].prefix.lib)
+        env.set('LIBGIT2', spec['libgit2'].prefix)
+        env.set('LIBGIT2_LIB', spec['libgit2'].prefix.lib)
diff --git a/var/spack/repos/builtin/packages/py-pygpu/package.py b/var/spack/repos/builtin/packages/py-pygpu/package.py
index 3675482b08..84182e5a43 100644
--- a/var/spack/repos/builtin/packages/py-pygpu/package.py
+++ b/var/spack/repos/builtin/packages/py-pygpu/package.py
@@ -28,4 +28,4 @@ class PyPygpu(PythonPackage):
     depends_on('py-nose', type=('build', 'run'))
     depends_on('py-numpy', type=('build', 'run'))
     depends_on('py-mako', type=('build', 'run'))
-    depends_on('libcheck')
+    depends_on('check')
diff --git a/var/spack/repos/builtin/packages/py-pyke/package.py b/var/spack/repos/builtin/packages/py-pyke/package.py
index e003dbc981..c2fdbe69f1 100644
--- a/var/spack/repos/builtin/packages/py-pyke/package.py
+++ b/var/spack/repos/builtin/packages/py-pyke/package.py
@@ -13,8 +13,8 @@ class PyPyke(PythonPackage):
     """
 
     homepage = "http://sourceforge.net/projects/pyke"
-    url      = "https://downloads.sourceforge.net/pyke/pyke3-1.1.1.zip"
+    url      = "https://sourceforge.net/projects/pyke/files/pyke/1.1.1/pyke-1.1.1.zip"
 
-    version('1.1.1', sha256='b877b390e70a2eacc01d97c3a992fde947276afc2798ca3ac6c6f74c796cb6dc')
+    version('1.1.1', sha256='b0b294f435c6e6d2d4a80badf57d92cb66814dfe21e644a521901209e6a3f8ae')
 
-    depends_on('python@3:')
+    depends_on('python@3:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pymongo/package.py b/var/spack/repos/builtin/packages/py-pymongo/package.py
index 8e28001e4c..3f52238dfd 100644
--- a/var/spack/repos/builtin/packages/py-pymongo/package.py
+++ b/var/spack/repos/builtin/packages/py-pymongo/package.py
@@ -19,6 +19,8 @@ class PyPymongo(PythonPackage):
     url      = "https://pypi.io/packages/source/p/pymongo/pymongo-3.9.0.tar.gz"
 
     version('3.9.0', sha256='4249c6ba45587b959292a727532826c5032d59171f923f7f823788f413c2a5a3')
+    version('3.6.0', sha256='c6de26d1e171cdc449745b82f1addbc873d105b8e7335097da991c0fc664a4a8')
+    version('3.3.0', sha256='3d45302fc2622fabf34356ba274c69df41285bac71bbd229f1587283b851b91e')
 
     depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
     depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pynio/package.py b/var/spack/repos/builtin/packages/py-pynio/package.py
index d6d4076554..d1d489a1ba 100644
--- a/var/spack/repos/builtin/packages/py-pynio/package.py
+++ b/var/spack/repos/builtin/packages/py-pynio/package.py
@@ -27,7 +27,7 @@ class PyPynio(PythonPackage):
     # Spack does not currently have netcdf below 4.x, and 3.x is a
     # fundamentally different format. So, currently this is only providing
     # support for netcdf4.
-    depends_on('netcdf@3.6.0:')
+    depends_on('netcdf-c@3.6.0:')
 
     # Turning on the hdf (i.e. hdf4) dependency causes it not to build, with
     # compile errors that (weirdly) relate to the declarations of HDF5.
@@ -50,22 +50,22 @@ class PyPynio(PythonPackage):
 
     depends_on('py-numpy', type=('build', 'run'))
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         """
         These environment variables are how the setup.py knows which options
         to turn on, and how to find them.
         """
-        spack_env.set('F2CLIBS', 'gfortran')
-        spack_env.set('HAS_NETCDF4', '1')
-        spack_env.set('NETCDF4_PREFIX', self.spec['netcdf'].prefix)
+        env.set('F2CLIBS', 'gfortran')
+        env.set('HAS_NETCDF4', '1')
+        env.set('NETCDF4_PREFIX', self.spec['netcdf-c'].prefix)
         if '+hdf5' in self.spec:
-            spack_env.set('HAS_HDF5', '1')
-            spack_env.set('HDF5_PREFIX', self.spec['hdf5'].prefix)
+            env.set('HAS_HDF5', '1')
+            env.set('HDF5_PREFIX', self.spec['hdf5'].prefix)
         if '+gdal' in self.spec:
-            spack_env.set('HAS_GDAL', '1')
-            spack_env.set('GDAL_PREFIX', self.spec['gdal'].prefix)
+            env.set('HAS_GDAL', '1')
+            env.set('GDAL_PREFIX', self.spec['gdal'].prefix)
 
 #        This one is trouble - see comments above.
 #        if '+hdf4' in self.spec:
-#            spack_env.set('HAS_HDF4', '1')
-#            spack_env.set('HDF4_PREFIX', self.spec['hdf'].prefix)
+#            env.set('HAS_HDF4', '1')
+#            env.set('HDF4_PREFIX', self.spec['hdf'].prefix)
diff --git a/var/spack/repos/builtin/packages/py-perf/package.py b/var/spack/repos/builtin/packages/py-pyperf/package.py
similarity index 95%
rename from var/spack/repos/builtin/packages/py-perf/package.py
rename to var/spack/repos/builtin/packages/py-pyperf/package.py
index 2d2c025691..53106bb468 100644
--- a/var/spack/repos/builtin/packages/py-perf/package.py
+++ b/var/spack/repos/builtin/packages/py-pyperf/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyPerf(PythonPackage):
+class PyPyperf(PythonPackage):
     """The Python perf module is a toolkit to write, run and
     analyze benchmarks.
     """
diff --git a/var/spack/repos/builtin/packages/py-igraph/package.py b/var/spack/repos/builtin/packages/py-python-igraph/package.py
similarity index 94%
rename from var/spack/repos/builtin/packages/py-igraph/package.py
rename to var/spack/repos/builtin/packages/py-python-igraph/package.py
index e6f6ccdf20..7812983c21 100644
--- a/var/spack/repos/builtin/packages/py-igraph/package.py
+++ b/var/spack/repos/builtin/packages/py-python-igraph/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyIgraph(PythonPackage):
+class PyPythonIgraph(PythonPackage):
     """igraph is a collection of network analysis tools with the emphasis on
        efficiency, portability and ease of use."""
 
diff --git a/var/spack/repos/builtin/packages/py-meep/package.py b/var/spack/repos/builtin/packages/py-python-meep/package.py
similarity index 98%
rename from var/spack/repos/builtin/packages/py-meep/package.py
rename to var/spack/repos/builtin/packages/py-python-meep/package.py
index 81a219145f..4eedd1ef17 100644
--- a/var/spack/repos/builtin/packages/py-meep/package.py
+++ b/var/spack/repos/builtin/packages/py-python-meep/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyMeep(PythonPackage):
+class PyPythonMeep(PythonPackage):
     """Python-meep is a wrapper around libmeep. It allows the scripting of
     Meep-simulations with Python"""
 
diff --git a/var/spack/repos/builtin/packages/py-pyyaml/package.py b/var/spack/repos/builtin/packages/py-pyyaml/package.py
index 980d5fae51..39b5b7f516 100644
--- a/var/spack/repos/builtin/packages/py-pyyaml/package.py
+++ b/var/spack/repos/builtin/packages/py-pyyaml/package.py
@@ -8,8 +8,9 @@
 
 class PyPyyaml(PythonPackage):
     """PyYAML is a YAML parser and emitter for Python."""
+
     homepage = "http://pyyaml.org/wiki/PyYAML"
-    url      = "http://pyyaml.org/download/pyyaml/PyYAML-5.1.2.tar.gz"
+    url      = "https://pypi.io/packages/source/P/PyYAML/PyYAML-5.1.2.tar.gz"
 
     version('5.1.2', sha256='01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4')
     version('3.13',  sha256='3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf')
diff --git a/var/spack/repos/builtin/packages/py-zmq/package.py b/var/spack/repos/builtin/packages/py-pyzmq/package.py
similarity index 93%
rename from var/spack/repos/builtin/packages/py-zmq/package.py
rename to var/spack/repos/builtin/packages/py-pyzmq/package.py
index 7d2d783a7a..e3e3944e2d 100644
--- a/var/spack/repos/builtin/packages/py-zmq/package.py
+++ b/var/spack/repos/builtin/packages/py-pyzmq/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class PyZmq(PythonPackage):
+class PyPyzmq(PythonPackage):
     """PyZMQ: Python bindings for zeromq."""
     homepage = "https://github.com/zeromq/pyzmq"
     url      = "https://github.com/zeromq/pyzmq/archive/v14.7.0.tar.gz"
@@ -18,4 +18,4 @@ class PyZmq(PythonPackage):
     depends_on('py-cython@0.16:', type=('build', 'run'))
     depends_on('py-py', type=('build', 'run'))
     depends_on('py-cffi', type=('build', 'run'))
-    depends_on('zeromq')
+    depends_on('libzmq')
diff --git a/var/spack/repos/builtin/packages/py-requests-toolbelt/package.py b/var/spack/repos/builtin/packages/py-requests-toolbelt/package.py
index c6e25d373e..875563f260 100644
--- a/var/spack/repos/builtin/packages/py-requests-toolbelt/package.py
+++ b/var/spack/repos/builtin/packages/py-requests-toolbelt/package.py
@@ -11,10 +11,10 @@ class PyRequestsToolbelt(PythonPackage):
     python-requests"""
 
     homepage = "https://toolbelt.readthedocs.org/"
-    url      = "https://github.com/requests/toolbelt/archive/0.9.1.tar.gz"
+    url      = "https://pypi.io/packages/source/r/requests-toolbelt/requests-toolbelt-0.9.1.tar.gz"
 
-    version('0.9.1', sha256='c8e68e537e87ae088e3a0eb6d80ed5b7cf5d6df503d0e843e0a5e47283db487b')
-    version('0.8.0', sha256='f151c07e88148dc05b6f31cc75dfb7a6770968e4a5c8e6690325eed4e79160a1')
+    version('0.9.1', sha256='968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0')
+    version('0.8.0', sha256='f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5')
 
     depends_on('py-setuptools', type='build')
     depends_on('py-requests@2.0.1:2.999', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-scoop/package.py b/var/spack/repos/builtin/packages/py-scoop/package.py
index b26140c384..0c9cf81e3e 100644
--- a/var/spack/repos/builtin/packages/py-scoop/package.py
+++ b/var/spack/repos/builtin/packages/py-scoop/package.py
@@ -19,4 +19,4 @@ class PyScoop(PythonPackage):
 
     depends_on('py-setuptools', type='build')
     depends_on('py-greenlet@0.3.4:', type=('build', 'run'))
-    depends_on('py-zmq@13.1.0:', type=('build', 'run'))
+    depends_on('py-pyzmq@13.1.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-sphinxautomodapi/package.py b/var/spack/repos/builtin/packages/py-sphinxautomodapi/package.py
index 0781ea59f3..34100e15d6 100644
--- a/var/spack/repos/builtin/packages/py-sphinxautomodapi/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinxautomodapi/package.py
@@ -10,9 +10,9 @@ class PySphinxautomodapi(PythonPackage):
     """Provides Sphinx directives to autogenerate API documentation pages"""
 
     homepage = "https://sphinx-automodapi.readthedocs.io/en/latest/"
-    url      = "https://github.com/astropy/sphinx-automodapi/archive/v0.9.tar.gz"
+    url      = "https://pypi.io/packages/source/s/sphinx-automodapi/sphinx-automodapi-0.9.tar.gz"
 
-    version('0.9', sha256='017817812e9266319fdcfcc89ddfbe570935ca87a3bda62d61c8507cf1337aa8')
+    version('0.9', sha256='71a69e1a7ab8d849f416d7431db854d7b1925f749ba6345bc7d88f288892871d')
 
     depends_on('py-setuptools', type='build')
     depends_on('py-sphinx@1.3:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-spyder/package.py b/var/spack/repos/builtin/packages/py-spyder/package.py
index 607a52393b..c8e48ec2a7 100644
--- a/var/spack/repos/builtin/packages/py-spyder/package.py
+++ b/var/spack/repos/builtin/packages/py-spyder/package.py
@@ -39,6 +39,6 @@ class PySpyder(PythonPackage):
     # to pick up webkit, but this is the easier solution (see #9207)
     depends_on('qt+webkit',           type=('build', 'run'))
     depends_on('py-pickleshare',      type=('build', 'run'))
-    depends_on('py-zmq',              type=('build', 'run'))
+    depends_on('py-pyzmq',              type=('build', 'run'))
     depends_on('py-chardet@2.0.0:',   type=('build', 'run'))
     depends_on('py-numpydoc',         type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-symengine/package.py b/var/spack/repos/builtin/packages/py-symengine/package.py
index 3e3664f075..33953c4b9e 100644
--- a/var/spack/repos/builtin/packages/py-symengine/package.py
+++ b/var/spack/repos/builtin/packages/py-symengine/package.py
@@ -10,14 +10,14 @@ class PySymengine(PythonPackage):
     """Python wrappers for SymEngine, a symbolic manipulation library."""
 
     homepage = "https://github.com/symengine/symengine.py"
-    url      = "https://github.com/symengine/symengine.py/archive/v0.2.0.tar.gz"
+    url      = "https://pypi.io/packages/source/s/symengine/symengine-0.2.0.tar.gz"
     git      = "https://github.com/symengine/symengine.py.git"
 
     version('develop', branch='master')
-    version('0.2.0', sha256='8f6468137baa7f799e047dd0b9149c4017d8d32e755f1e0329209680879c1f8f')
+    version('0.2.0', sha256='78a14aea7aad5e7cbfb5cabe141581f9bba30e3c319690e5db8ad99fdf2d8885')
 
     # Build dependencies
-    depends_on('python@2.7:2.8,3.3:')
+    depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
     depends_on('py-setuptools',     type='build')
     depends_on('py-cython@0.19.1:', type='build')
     depends_on('cmake@2.8.7:',      type='build')
diff --git a/var/spack/repos/builtin/packages/py-tables/package.py b/var/spack/repos/builtin/packages/py-tables/package.py
index 2fcb494c6c..c6476692d8 100644
--- a/var/spack/repos/builtin/packages/py-tables/package.py
+++ b/var/spack/repos/builtin/packages/py-tables/package.py
@@ -11,18 +11,17 @@ class PyTables(PythonPackage):
     efficiently and easily cope with extremely large amounts of data."""
 
     homepage = "http://www.pytables.org/"
-    url      = "https://github.com/PyTables/PyTables/archive/v3.6.0.tar.gz"
+    url      = "https://pypi.io/packages/source/t/tables/tables-3.6.0.tar.gz"
 
     import_modules = [
         'tables', 'tables.misc', 'tables.nodes', 'tables.scripts'
     ]
 
-    version('3.6.0', sha256='2dcd077f42b195f48aa00f5a720b79189ea92fba0d16ad35e2881e403ba6914e')
-    version('3.5.2', sha256='e4fc6f1194f02a8b10ff923e77364fb70710592f620d7de35f4d4e064dc70e91')
-    version('3.4.4', sha256='c9682c0f35d8175e12bbd38d925bdb606d47b7c8e358ba056a9dbf3b1f183114')
-    version('3.3.0', sha256='dceb15fef556a2775121bcc695561df4ff0e09248e0ce3a2d58f5244a9f61421')
-    version('3.2.2', sha256='2626e874caa6b3fcf2bfc28b9dd6a40a3f859c72e19ce0764a60a6d77e350008',
-            url='https://github.com/PyTables/PyTables/archive/v.3.2.2.tar.gz')
+    version('3.6.0', sha256='db3488214864fb313a611fca68bf1c9019afe4e7877be54d0e61c84416603d4d')
+    version('3.5.2', sha256='b220e32262bab320aa41d33125a7851ff898be97c0de30b456247508e2cc33c2')
+    version('3.4.4', sha256='bdc5c073712af2a43babd139c4855fc99496bb2c3f3f5d1b4770a985e6f9ce29')
+    version('3.3.0', sha256='8383ccf02e041a5d55494a09fc5514140b4653055a2732c981b5fd0f7408822c')
+    version('3.2.2', sha256='3564b351a71ec1737b503b001eb7ceae1f65d5d6e3ffe1ea75aafba10f37fa84')
 
     variant('zlib', default=True, description='Support for zlib compression')
     variant('bzip2', default=False, description='Support for bzip2 compression')
diff --git a/var/spack/repos/builtin/packages/py-tappy/package.py b/var/spack/repos/builtin/packages/py-tap-py/package.py
similarity index 90%
rename from var/spack/repos/builtin/packages/py-tappy/package.py
rename to var/spack/repos/builtin/packages/py-tap-py/package.py
index 1c97e7a763..c0ece59fd6 100644
--- a/var/spack/repos/builtin/packages/py-tappy/package.py
+++ b/var/spack/repos/builtin/packages/py-tap-py/package.py
@@ -6,10 +6,10 @@
 from spack import *
 
 
-class PyTappy(PythonPackage):
+class PyTapPy(PythonPackage):
     """Python TAP interface module for unit tests"""
+
     homepage = "https://github.com/mblayman/tappy"
-    # base https://pypi.python.org/pypi/cffi
     url      = "https://pypi.io/packages/source/t/tap.py/tap.py-1.6.tar.gz"
 
     version('1.6', sha256='3ee315567cd1cf444501c405b7f7146ffdb2e630bac58d0840d378a3b9a0dbe4')
diff --git a/var/spack/repos/builtin/packages/py-udunits/package.py b/var/spack/repos/builtin/packages/py-udunits/package.py
deleted file mode 100644
index b7fb343439..0000000000
--- a/var/spack/repos/builtin/packages/py-udunits/package.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
-# Spack Project Developers. See the top-level COPYRIGHT file for details.
-#
-# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
-import os
-
-
-class PyUdunits(PythonPackage):
-    """The MetOffice cf_units Python interface to the UDUNITS-2 Library."""
-    homepage = "https://github.com/SciTools/cf_units"
-    url      = "https://github.com/SciTools/cf_units/archive/v1.1.3.tar.gz"
-
-    version('1.1.3', sha256='cc27f4f06c99d242c36beb8dc5c517e1b1124a8c65ca3f76f372b9674aa320ba')
-
-    maintainers = ['citibeth']
-
-    depends_on('py-setuptools', type='build')
-    depends_on('py-six', type=('build', 'run'))
-    depends_on('py-netcdf4', type=('build', 'run'))
-    depends_on('udunits2')
-
-    # See: https://github.com/SciTools/cf_units/blob/master/cf_units/etc/site.cfg.template
-    # udunits2_path = /path/to/libudunits2.so
-    # udunits2_xml_path = /path/to/udunits2.xml
-    site_cfg_template = """[System]
-udunits2_path = %s
-udunits2_xml_path = %s
-"""
-
-    @run_after('install')
-    def configure_template(self):
-        spec = self.spec
-
-        cfg_templates = find(spec.prefix, ['site.cfg.template'])
-        if len(cfg_templates) != 1:
-            tty.die(
-                'Found %d instances of site.cfg.template, wanted 1' %
-                len(cfg_templates))
-        cfg_template = cfg_templates[0]
-
-        cfg = os.path.join(os.path.split(cfg_template)[0], 'site.cfg')
-
-        udunits2_xml_path = os.path.join(
-            spec['udunits2'].prefix, 'share', 'udunits', 'udunits2.xml')
-
-        with open(cfg, 'w') as fout:
-            fout.write(self.site_cfg_template %
-                       (spec['udunits2'].libs, udunits2_xml_path))
diff --git a/var/spack/repos/builtin/packages/py-wand/package.py b/var/spack/repos/builtin/packages/py-wand/package.py
index ac4f82fd5b..fcecd5e663 100644
--- a/var/spack/repos/builtin/packages/py-wand/package.py
+++ b/var/spack/repos/builtin/packages/py-wand/package.py
@@ -20,7 +20,7 @@ class PyWand(PythonPackage):
 
     depends_on('py-setuptools', type='build')
     # provides libmagickwand
-    depends_on('image-magick')
+    depends_on('imagemagick')
     depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
 
     depends_on('py-sphinx@1:', type='build', when='+docs')
diff --git a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py
index 589e733c77..9ce05b1c35 100644
--- a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py
+++ b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py
@@ -16,4 +16,4 @@ class PyWidgetsnbextension(PythonPackage):
 
     depends_on('py-setuptools', type='build')
     depends_on('python@2.7:2.8,3.3:')
-    depends_on('py-jupyter-notebook@4.2.0:', type=('build', 'run'))
+    depends_on('py-notebook@4.2.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-xdot/package.py b/var/spack/repos/builtin/packages/py-xdot/package.py
index ecdc47e494..3f09fc6b32 100644
--- a/var/spack/repos/builtin/packages/py-xdot/package.py
+++ b/var/spack/repos/builtin/packages/py-xdot/package.py
@@ -11,12 +11,12 @@ class PyXdot(PythonPackage):
     dot language."""
 
     homepage = "https://github.com/jrfonseca/xdot.py"
-    url      = "https://github.com/jrfonseca/xdot.py/archive/0.9.tar.gz"
+    url      = "https://pypi.io/packages/source/x/xdot/xdot-1.0.tar.gz"
     git      = "https://github.com/jrfonseca/xdot.py.git"
 
-    version('master', branch="master")
-    version('1.0', sha256='a8594f94f43f938e01e42ff6015c7e00e3ee1a00c7f06d6287d8c939ffa94f76')
-    version('0.9', sha256='df7790db573d7a5512e6fa618d9051508c43cf64ca432d97c2207c87b6f20dbd')
+    version('master', branch='master')
+    version('1.0', sha256='7e067896d729af82f1fd0758e265f129944d469c30f550e3f15dbdb751cc42a1')
+    version('0.9', sha256='a33701664ecfefe7c7313a120a587e87334f3a566409bc451538fcde5edd6907')
 
     # setuptools is required at runtime to avoid:
     # No module named 'pkg_resources'
@@ -46,17 +46,17 @@ def post_install(self):
         python3 = spec['python'].command
         python3('-m', 'compileall', dst)
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_run_environment(self, env):
         spec = self.spec
-        run_env.prepend_path('GI_TYPELIB_PATH',
-                             join_path(spec['pango'].prefix.lib,
-                                       'girepository-1.0'))
-        run_env.prepend_path('GI_TYPELIB_PATH',
-                             join_path(spec['atk'].prefix.lib,
-                                       'girepository-1.0'))
-        run_env.prepend_path('GI_TYPELIB_PATH',
-                             join_path(spec['gdk-pixbuf'].prefix.lib,
-                                       'girepository-1.0'))
-        run_env.prepend_path('GI_TYPELIB_PATH',
-                             join_path(spec['gtkplus'].prefix.lib,
-                                       'girepository-1.0'))
+        env.prepend_path('GI_TYPELIB_PATH',
+                         join_path(spec['pango'].prefix.lib,
+                                   'girepository-1.0'))
+        env.prepend_path('GI_TYPELIB_PATH',
+                         join_path(spec['atk'].prefix.lib,
+                                   'girepository-1.0'))
+        env.prepend_path('GI_TYPELIB_PATH',
+                         join_path(spec['gdk-pixbuf'].prefix.lib,
+                                   'girepository-1.0'))
+        env.prepend_path('GI_TYPELIB_PATH',
+                         join_path(spec['gtkplus'].prefix.lib,
+                                   'girepository-1.0'))
diff --git a/var/spack/repos/builtin/packages/qt-creator/package.py b/var/spack/repos/builtin/packages/qt-creator/package.py
index 9b23300a65..1aae1353b6 100644
--- a/var/spack/repos/builtin/packages/qt-creator/package.py
+++ b/var/spack/repos/builtin/packages/qt-creator/package.py
@@ -9,7 +9,7 @@
 class QtCreator(QMakePackage):
     """The Qt Creator IDE."""
     homepage = 'https://www.qt.io/ide/'
-    url      = 'http://download.qt.io/official_releases/qtcreator/4.3/4.3.1/qt-creator-opensource-src-4.3.1.tar.gz'
+    url      = 'http://download.qt.io/official_releases/qtcreator/4.8/4.8.0/qt-creator-opensource-src-4.8.0.tar.gz'
 
     list_url = 'http://download.qt.io/official_releases/qtcreator/'
     list_depth = 2
@@ -32,8 +32,8 @@ def url_for_version(self, version):
         url = 'http://download.qt.io/official_releases/qtcreator/{0}/{1}/qt-creator-opensource-src-{1}.tar.gz'
         return url.format(version.up_to(2), version)
 
-    def setup_environment(self, spack_env, run_env):
-        spack_env.set('INSTALL_ROOT', self.prefix)
+    def setup_build_environment(self, env):
+        env.set('INSTALL_ROOT', self.prefix)
 
     def qmake_args(self):
         return ['-r']
diff --git a/var/spack/repos/builtin/packages/r-animation/package.py b/var/spack/repos/builtin/packages/r-animation/package.py
index 69426a1cd7..7883e4c8e3 100644
--- a/var/spack/repos/builtin/packages/r-animation/package.py
+++ b/var/spack/repos/builtin/packages/r-animation/package.py
@@ -22,7 +22,7 @@ class RAnimation(RPackage):
 
     depends_on('r@2.14:', type=('build', 'run'))
     depends_on('r-magick', when='@2.6:', type=('build', 'run'))
-    depends_on('image-magick')
+    depends_on('imagemagick')
     depends_on('ffmpeg')
     depends_on('swftools')
     depends_on('texlive')
diff --git a/var/spack/repos/builtin/packages/r-checkpoint/package.py b/var/spack/repos/builtin/packages/r-checkpoint/package.py
index c212794956..08656458f4 100644
--- a/var/spack/repos/builtin/packages/r-checkpoint/package.py
+++ b/var/spack/repos/builtin/packages/r-checkpoint/package.py
@@ -13,7 +13,7 @@ class RCheckpoint(RPackage):
     date as if you had a CRAN time machine."""
 
     homepage = "https://cloud.r-project.org/package=checkpoint"
-    url      = "https://cloud.r-project.org/src/contrib/checkpoint_0.3.18.tar.gz"
+    url      = "https://cloud.r-project.org/src/contrib/checkpoint_0.4.6.tar.gz"
     list_url = "https://cloud.r-project.org/src/contrib/Archive/checkpoint"
 
     version('0.4.6', sha256='fd1a5edb5cb1a40d7ed26bb196de566110fe2ef62e70b4e947c003576a03ebb2')
diff --git a/var/spack/repos/builtin/packages/r-magick/package.py b/var/spack/repos/builtin/packages/r-magick/package.py
index 66ae049615..858b92174f 100644
--- a/var/spack/repos/builtin/packages/r-magick/package.py
+++ b/var/spack/repos/builtin/packages/r-magick/package.py
@@ -27,4 +27,4 @@ class RMagick(RPackage):
     depends_on('r-rcpp@0.12.12:', type=('build', 'run'))
     depends_on('r-magrittr', type=('build', 'run'))
     depends_on('r-curl', type=('build', 'run'))
-    depends_on('image-magick')
+    depends_on('imagemagick')
diff --git a/var/spack/repos/builtin/packages/r-mzr/package.py b/var/spack/repos/builtin/packages/r-mzr/package.py
index 5ccf4dd6cd..4ff0958eea 100644
--- a/var/spack/repos/builtin/packages/r-mzr/package.py
+++ b/var/spack/repos/builtin/packages/r-mzr/package.py
@@ -24,5 +24,5 @@ class RMzr(RPackage):
     depends_on('r-protgenerics', type=('build', 'run'))
     depends_on('r-rcpp', type=('build', 'run'))
     depends_on('r-zlibbioc', type=('build', 'run'))
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('r@3.4.0:3.4.9', when='@2.10.0')
diff --git a/var/spack/repos/builtin/packages/r-ncdf4/package.py b/var/spack/repos/builtin/packages/r-ncdf4/package.py
index 14e1273381..1a837ded21 100644
--- a/var/spack/repos/builtin/packages/r-ncdf4/package.py
+++ b/var/spack/repos/builtin/packages/r-ncdf4/package.py
@@ -30,4 +30,4 @@ class RNcdf4(RPackage):
     version('1.16', sha256='edd5731a805bbece3a8f6132c87c356deafc272351e1dd07256ca00574949253')
     version('1.15', sha256='d58298f4317c6c80a041a70216126492fd09ba8ecde9da09d5145ae26f324d4d')
 
-    depends_on('netcdf@4.1:')
+    depends_on('netcdf-c@4.1:')
diff --git a/var/spack/repos/builtin/packages/r-nmf/package.py b/var/spack/repos/builtin/packages/r-nmf/package.py
index 95346b8290..d89d20ef02 100644
--- a/var/spack/repos/builtin/packages/r-nmf/package.py
+++ b/var/spack/repos/builtin/packages/r-nmf/package.py
@@ -15,7 +15,7 @@ class RNmf(RPackage):
     computations on multicore machines.."""
 
     homepage = "http://renozao.github.io/NMF"
-    url      = "https://cloud.r-project.org/src/contrib/NMF_0.20.6.tar.gz"
+    url      = "https://cloud.r-project.org/src/contrib/NMF_0.21.0.tar.gz"
     list_url = "https://cloud.r-project.org/src/contrib/Archive/NMF"
 
     version('0.21.0', sha256='3b30c81c66066fab4a63c5611a0313418b840d8b63414db31ef0e932872d02e3')
diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py
index 4ec6ee9055..7e44f3b9e8 100644
--- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py
+++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py
@@ -27,4 +27,4 @@ class RPbdzmq(RPackage):
     depends_on('r@3.0.0:', when='@:0.2-5', type=('build', 'run'))
     depends_on('r@3.2.0:', when='@0.2-6:', type=('build', 'run'))
     depends_on('r-r6', when='@:0.2-6', type=('build', 'run'))
-    depends_on('zeromq@4.0.4:')
+    depends_on('libzmq@4.0.4:')
diff --git a/var/spack/repos/builtin/packages/r-pkgmaker/package.py b/var/spack/repos/builtin/packages/r-pkgmaker/package.py
index e400f1228f..d2c2843f3a 100644
--- a/var/spack/repos/builtin/packages/r-pkgmaker/package.py
+++ b/var/spack/repos/builtin/packages/r-pkgmaker/package.py
@@ -16,7 +16,7 @@ class RPkgmaker(RPackage):
     changes in the interface(s) are more than likely to happen."""
 
     homepage = "https://renozao.github.io/pkgmaker"
-    url      = "https://cloud.r-project.org/src/contrib/pkgmaker_0.22.tar.gz"
+    url      = "https://cloud.r-project.org/src/contrib/pkgmaker_0.27.tar.gz"
     list_url = "https://cloud.r-project.org/src/contrib/Archive/pkgmaker"
 
     version('0.27', sha256='17a289d8f596ba5637b07077b3bff22411a2c2263c0b7de59fe848666555ec6a')
diff --git a/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py b/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py
index f8420eebb0..f3d5e951f9 100644
--- a/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py
+++ b/var/spack/repos/builtin/packages/r-randomfieldsutils/package.py
@@ -13,7 +13,7 @@ class RRandomfieldsutils(RPackage):
        Furthermore, it includes the Struve functions."""
 
     homepage = "https://cloud.r-project.org/package=RandomFieldsUtils"
-    url      = "https://cloud.r-project.org/src/contrib/RandomFieldsUtils_0.3.25.tar.gz"
+    url      = "https://cloud.r-project.org/src/contrib/RandomFieldsUtils_0.5.3.tar.gz"
     list_url = "https://cloud.r-project.org/src/contrib/Archive/RandomFieldsUtils"
 
     version('0.5.3', sha256='ea823cba2e254a9f534efb4b772c0aeef2039ee9ef99744e077b969a87f8031d')
diff --git a/var/spack/repos/builtin/packages/r-rngtools/package.py b/var/spack/repos/builtin/packages/r-rngtools/package.py
index c4b52c3437..30762d7464 100644
--- a/var/spack/repos/builtin/packages/r-rngtools/package.py
+++ b/var/spack/repos/builtin/packages/r-rngtools/package.py
@@ -14,7 +14,7 @@ class RRngtools(RPackage):
     the way current RNG settings can be changed."""
 
     homepage = "https://renozao.github.io/rngtools"
-    url      = "https://cloud.r-project.org/src/contrib/rngtools_1.2.4.tar.gz"
+    url      = "https://cloud.r-project.org/src/contrib/rngtools_1.4.tar.gz"
     list_url = "https://cloud.r-project.org/src/contrib/Archive/rngtools"
 
     version('1.4', sha256='3aa92366e5d0500537964302f5754a750aff6b169a27611725e7d84552913bce')
diff --git a/var/spack/repos/builtin/packages/r-rzmq/package.py b/var/spack/repos/builtin/packages/r-rzmq/package.py
index aeaa990a45..862ebcf066 100644
--- a/var/spack/repos/builtin/packages/r-rzmq/package.py
+++ b/var/spack/repos/builtin/packages/r-rzmq/package.py
@@ -19,4 +19,4 @@ class RRzmq(RPackage):
     version('0.7.7', sha256='bdbaf77a0e04c5b6d6ce79ab2747848a5044355eed2e2c4d39c4ba16f97dc83d')
 
     depends_on('r@3.1.0:', when='@0.9.0:', type=('build', 'run'))
-    depends_on('zeromq@3.0.0:')
+    depends_on('libzmq@3.0.0:')
diff --git a/var/spack/repos/builtin/packages/r-udunits2/package.py b/var/spack/repos/builtin/packages/r-udunits2/package.py
index 551455471f..120895ec77 100644
--- a/var/spack/repos/builtin/packages/r-udunits2/package.py
+++ b/var/spack/repos/builtin/packages/r-udunits2/package.py
@@ -16,4 +16,4 @@ class RUdunits2(RPackage):
     version('0.13', sha256='d155d3c07f6202b65dec4075ffd1e1c3f4f35f5fdece8cfb319d39256a3e5b79')
 
     depends_on('r@2.10.0:', type=('build', 'run'))
-    depends_on('udunits2')
+    depends_on('udunits')
diff --git a/var/spack/repos/builtin/packages/r-units/package.py b/var/spack/repos/builtin/packages/r-units/package.py
index c6b4ce8f19..936a4a695c 100644
--- a/var/spack/repos/builtin/packages/r-units/package.py
+++ b/var/spack/repos/builtin/packages/r-units/package.py
@@ -25,4 +25,4 @@ class RUnits(RPackage):
     depends_on('r@3.0.2:', type=('build', 'run'))
     depends_on('r-udunits2@0.13:', when='@:0.5-1', type=('build', 'run'))
     depends_on('r-rcpp@0.12.10:', type=('build', 'run'))
-    depends_on('udunits2', when='@0.6-0:')
+    depends_on('udunits', when='@0.6-0:')
diff --git a/var/spack/repos/builtin/packages/r-wgcna/package.py b/var/spack/repos/builtin/packages/r-wgcna/package.py
index 7b21e756ed..426116c677 100644
--- a/var/spack/repos/builtin/packages/r-wgcna/package.py
+++ b/var/spack/repos/builtin/packages/r-wgcna/package.py
@@ -10,7 +10,7 @@ class RWgcna(RPackage):
     """WGCNA: Weighted Correlation Network Analysis"""
 
     homepage = "https://cloud.r-project.org/package=WGCNA"
-    url      = "https://cloud.r-project.org/src/contrib/WGCNA_1.66.tar.gz"
+    url      = "https://cloud.r-project.org/src/contrib/WGCNA_1.68.tar.gz"
     list_url = "https://cloud.r-project.org/src/contrib/Archive/WGCNA/"
 
     version('1.68', sha256='0a04f15a20817f9260ae1896eda3be83a7f4855a27a348df85c7f4d376f1efe8')
diff --git a/var/spack/repos/builtin/packages/r-xlsx/package.py b/var/spack/repos/builtin/packages/r-xlsx/package.py
index ee0f934447..2f575b9cfa 100644
--- a/var/spack/repos/builtin/packages/r-xlsx/package.py
+++ b/var/spack/repos/builtin/packages/r-xlsx/package.py
@@ -11,7 +11,7 @@ class RXlsx(RPackage):
     97/2000/XP/2003 file formats."""
 
     homepage = "http://code.google.com/p/rexcel/"
-    url      = "https://cloud.r-project.org/src/contrib/xlsx_0.5.7.tar.gz"
+    url      = "https://cloud.r-project.org/src/contrib/xlsx_0.6.1.tar.gz"
     listurl  = "https://cloud.r-project.org/src/contrib/Archive/xlsx"
 
     version('0.6.1', sha256='a580bd16b5477c1c185bf681c12c1ffff4088089f97b6a37997913d93ec5a8b4')
diff --git a/var/spack/repos/builtin/packages/r3d/package.py b/var/spack/repos/builtin/packages/r3d/package.py
index 6e2984253c..6704e05419 100644
--- a/var/spack/repos/builtin/packages/r3d/package.py
+++ b/var/spack/repos/builtin/packages/r3d/package.py
@@ -11,11 +11,11 @@ class R3d(MakefilePackage):
     conservative voxelization."""
 
     homepage = "https://github.com/devonmpowell/r3d"
-    url      = "https://github.com/devonmpowell/r3d.git"
+    git      = "https://github.com/devonmpowell/r3d.git"
 
-    version('2019-04-24', git=url, commit='86cea79c124c6a8edd8c8cdea61e3e923acb0b22')
-    version('2018-12-19', git=url, commit='47308f68c782ed3227d3dab1eff24d41f6421f21')
-    version('2018-01-07', git=url, commit='d6799a582256a120ef3bd7e18959e96cba0e5495')
+    version('2019-04-24', commit='86cea79c124c6a8edd8c8cdea61e3e923acb0b22')
+    version('2018-12-19', commit='47308f68c782ed3227d3dab1eff24d41f6421f21')
+    version('2018-01-07', commit='d6799a582256a120ef3bd7e18959e96cba0e5495')
 
     variant("test",  default=False, description="Build R3D regression tests")
 
diff --git a/var/spack/repos/builtin/packages/rankstr/package.py b/var/spack/repos/builtin/packages/rankstr/package.py
index c72c46b54a..d56b9211ad 100644
--- a/var/spack/repos/builtin/packages/rankstr/package.py
+++ b/var/spack/repos/builtin/packages/rankstr/package.py
@@ -10,7 +10,7 @@ class Rankstr(CMakePackage):
     """Assign one-to-one mapping of MPI ranks to strings"""
 
     homepage = "https://github.com/ECP-VeloC/rankstr"
-    url      = "https://github.com/ECP-VeloC/rankstr/archive/v0.0.1.zip"
+    url      = "https://github.com/ECP-VeloC/rankstr/archive/v0.0.2.zip"
     git      = "https://github.com/ecp-veloc/rankstr.git"
 
     tags = ['ecp']
diff --git a/var/spack/repos/builtin/packages/redset/package.py b/var/spack/repos/builtin/packages/redset/package.py
index d875c1ddfc..c439bdd10e 100644
--- a/var/spack/repos/builtin/packages/redset/package.py
+++ b/var/spack/repos/builtin/packages/redset/package.py
@@ -10,7 +10,7 @@ class Redset(CMakePackage):
     """Create MPI communicators for disparate redundancy sets"""
 
     homepage = "https://github.com/ECP-VeloC/redset"
-    url      = "https://github.com/ECP-VeloC/redset/archive/v0.0.2.zip"
+    url      = "https://github.com/ECP-VeloC/redset/archive/v0.0.3.zip"
     git      = "https://github.com/ecp-veloc/redset.git"
 
     tags = ['ecp']
diff --git a/var/spack/repos/builtin/packages/regcm/package.py b/var/spack/repos/builtin/packages/regcm/package.py
index fc80deb4d0..136c270359 100644
--- a/var/spack/repos/builtin/packages/regcm/package.py
+++ b/var/spack/repos/builtin/packages/regcm/package.py
@@ -45,11 +45,11 @@ class Regcm(AutotoolsPackage):
             description='Build NetCDF using the high performance parallel '
                         'NetCDF implementation.')
 
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('netcdf-fortran')
     depends_on('hdf5')
     depends_on('mpi')
-    depends_on('netcdf +parallel-netcdf', when='+pnetcdf')
+    depends_on('netcdf-c +parallel-netcdf', when='+pnetcdf')
 
     intel_msg = ('Intel compiler not working with this specific version of '
                  'RegCM (generates a bug at runtime): please install a newer '
diff --git a/var/spack/repos/builtin/packages/repeatmodeler/package.py b/var/spack/repos/builtin/packages/repeatmodeler/package.py
index fa395f4109..f068fb2600 100644
--- a/var/spack/repos/builtin/packages/repeatmodeler/package.py
+++ b/var/spack/repos/builtin/packages/repeatmodeler/package.py
@@ -18,7 +18,7 @@ class Repeatmodeler(Package):
     depends_on('perl', type=('build', 'run'))
     depends_on('perl-json', type=('build', 'run'))
     depends_on('perl-uri', type=('build', 'run'))
-    depends_on('perl-lwp', type=('build', 'run'))
+    depends_on('perl-libwww-perl', type=('build', 'run'))
 
     depends_on('repeatmasker', type='run')
     depends_on('recon+repeatmasker', type='run')
diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py
index 23b497a2e7..90b6d0d6dd 100644
--- a/var/spack/repos/builtin/packages/rose/package.py
+++ b/var/spack/repos/builtin/packages/rose/package.py
@@ -16,8 +16,7 @@ class Rose(AutotoolsPackage):
        (Developed at Lawrence Livermore National Lab)"""
 
     homepage = "http://rosecompiler.org/"
-    # url = "https://github.com/rose-compiler/rose-develop/archive/v0.9.7.0.tar.gz"
-    url = "https://github.com/rose-compiler/rose-develop/archive/v0.9.9.104.zip"
+    url = "https://github.com/rose-compiler/rose-develop/archive/v0.9.10.0.zip"
     git = "https://github.com/rose-compiler/rose-develop.git"
 
     # --------------------------------------------------------------------------
@@ -212,9 +211,9 @@ def configure_args(self):
 
         return args
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         if "+codethorn" in self.spec:
-            spack_env.set("CXXFLAGS", "-std=c++11")
+            env.set("CXXFLAGS", "-std=c++11")
 
     def build(self, spec, prefix):
         # Spack will automatically pass ncpus as the number of make jobs.
diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py
index f02cb9b09e..f4c145d243 100644
--- a/var/spack/repos/builtin/packages/seacas/package.py
+++ b/var/spack/repos/builtin/packages/seacas/package.py
@@ -71,8 +71,8 @@ class Seacas(CMakePackage):
 
     # Everything should be compiled position independent (-fpic)
 
-    depends_on('netcdf@4.6.2:+mpi+parallel-netcdf', when='+mpi')
-    depends_on('netcdf@4.6.2:~mpi', when='~mpi')
+    depends_on('netcdf-c@4.6.2:+mpi+parallel-netcdf', when='+mpi')
+    depends_on('netcdf-c@4.6.2:~mpi', when='~mpi')
     depends_on('cgns@develop+mpi+scoping', when='+cgns +mpi')
     depends_on('cgns@develop~mpi+scoping', when='+cgns ~mpi')
     depends_on('adios2@develop~mpi', when='+adios2 ~mpi')
@@ -198,10 +198,10 @@ def cmake_args(self):
                 ])
 
         # ##################### Dependencies ##########################
-        # Always need NetCDF
+        # Always need NetCDF-C
         options.extend([
             '-DTPL_ENABLE_Netcdf:BOOL=ON',
-            '-DNetCDF_ROOT:PATH=%s' % spec['netcdf'].prefix,
+            '-DNetCDF_ROOT:PATH=%s' % spec['netcdf-c'].prefix,
         ])
 
         if '+metis' in spec:
diff --git a/var/spack/repos/builtin/packages/shuffile/package.py b/var/spack/repos/builtin/packages/shuffile/package.py
index 13ba8b96b4..bfd6defb23 100644
--- a/var/spack/repos/builtin/packages/shuffile/package.py
+++ b/var/spack/repos/builtin/packages/shuffile/package.py
@@ -10,7 +10,7 @@ class Shuffile(CMakePackage):
     """Shuffle files between MPI ranks"""
 
     homepage = "https://github.com/ECP-VeloC/shuffile"
-    url      = "https://github.com/ECP-VeloC/shuffile/archive/v0.0.2.zip"
+    url      = "https://github.com/ECP-VeloC/shuffile/archive/v0.0.3.zip"
     git      = "https://github.com/ecp-veloc/shuffile.git"
 
     tags = ['ecp']
diff --git a/var/spack/repos/builtin/packages/siesta/package.py b/var/spack/repos/builtin/packages/siesta/package.py
index 70d52a2607..1733585274 100644
--- a/var/spack/repos/builtin/packages/siesta/package.py
+++ b/var/spack/repos/builtin/packages/siesta/package.py
@@ -23,7 +23,7 @@ class Siesta(Package):
     depends_on('blas')
     depends_on('lapack')
     depends_on('scalapack')
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('netcdf-fortran')
 
     phases = ['configure', 'build', 'install']
@@ -40,7 +40,7 @@ def configure(self, spec, prefix):
                                                spec['blas'].libs),
                           '--with-scalapack=%s' % spec['scalapack'].libs,
                           '--with-netcdf=%s' % (spec['netcdf-fortran'].libs +
-                                                spec['netcdf'].libs),
+                                                spec['netcdf-c'].libs),
                           # need to specify MPIFC explicitly below, otherwise
                           # Intel's mpiifort is not found
                           'MPIFC=%s' % spec['mpi'].mpifc
diff --git a/var/spack/repos/builtin/packages/simulationio/package.py b/var/spack/repos/builtin/packages/simulationio/package.py
index 51b43719d8..d209f702f7 100644
--- a/var/spack/repos/builtin/packages/simulationio/package.py
+++ b/var/spack/repos/builtin/packages/simulationio/package.py
@@ -11,7 +11,7 @@ class Simulationio(CMakePackage):
     """SimulationIO: Efficient and convenient I/O for large PDE simulations"""
 
     homepage = "https://github.com/eschnett/SimulationIO"
-    url      = "https://github.com/eschnett/SimulationIO/archive/version/0.1.0.tar.gz"
+    url      = "https://github.com/eschnett/SimulationIO/archive/version/9.0.1.tar.gz"
     git      = "https://github.com/eschnett/SimulationIO.git"
 
     version('develop', branch='master')
diff --git a/var/spack/repos/builtin/packages/squid/package.py b/var/spack/repos/builtin/packages/squid/package.py
index a039bbedc5..bce6f19590 100644
--- a/var/spack/repos/builtin/packages/squid/package.py
+++ b/var/spack/repos/builtin/packages/squid/package.py
@@ -10,5 +10,6 @@ class Squid(AutotoolsPackage):
     """C function library for sequence analysis."""
 
     homepage = "http://eddylab.org/software.html"
+    url      = "http://eddylab.org/software/squid/squid-1.9g.tar.gz"
 
-    version('1.9g', sha256='302f42e8794aa4dbcfa0996c14fb7a70a7c4397fc45c2bbd2748055460d8dca7', url='http://eddylab.org/software/squid/squid.tar.gz')
+    version('1.9g', sha256='302f42e8794aa4dbcfa0996c14fb7a70a7c4397fc45c2bbd2748055460d8dca7')
diff --git a/var/spack/repos/builtin/packages/sra-toolkit/package.py b/var/spack/repos/builtin/packages/sratoolkit/package.py
similarity index 83%
rename from var/spack/repos/builtin/packages/sra-toolkit/package.py
rename to var/spack/repos/builtin/packages/sratoolkit/package.py
index 972f4d8a70..a8cf5d9b6c 100644
--- a/var/spack/repos/builtin/packages/sra-toolkit/package.py
+++ b/var/spack/repos/builtin/packages/sratoolkit/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class SraToolkit(Package):
+class Sratoolkit(Package):
     """The NCBI SRA Toolkit enables reading ("dumping") of sequencing files
        from the SRA database and writing ("loading") files into the .sra
        format."""
@@ -18,10 +18,6 @@ class SraToolkit(Package):
     version('2.9.2', sha256='17dbe13aa1ed7955d31e1e76e8b62786e80a77e9ed9d396631162dc3ad8b716d')
     version('2.8.2-1', sha256='b053061aae7c6d00162fe0f514be4128a60365b4b2b5b36e7f4798b348b55cf5')
 
-    def url_for_version(self, version):
-        url = 'https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/{0}/sratoolkit.{0}-centos_linux64.tar.gz'
-        return url.format(version)
-
     def install(self, spec, prefix):
         install_tree('bin', prefix.bin, symlinks=True)
         install_tree('example', prefix.example)
diff --git a/var/spack/repos/builtin/packages/stc/package.py b/var/spack/repos/builtin/packages/stc/package.py
index ce52a418f2..631d7647e7 100644
--- a/var/spack/repos/builtin/packages/stc/package.py
+++ b/var/spack/repos/builtin/packages/stc/package.py
@@ -11,7 +11,7 @@ class Stc(AutotoolsPackage):
     """STC: The Swift-Turbine Compiler"""
 
     homepage = 'http://swift-lang.org/Swift-T'
-    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/stc-0.0.0.tar.gz'
+    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/stc-0.8.3.tar.gz'
     git      = "https://github.com/swift-lang/swift-t.git"
 
     version('master', branch='master')
diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py
index de26e0dece..ba621061fd 100644
--- a/var/spack/repos/builtin/packages/subversion/package.py
+++ b/var/spack/repos/builtin/packages/subversion/package.py
@@ -34,7 +34,7 @@ class Subversion(AutotoolsPackage):
 
     extends('perl', when='+perl')
     depends_on('swig@1.3.24:3.0.0', when='+perl')
-    depends_on('perl-term-readkey', when='+perl')
+    depends_on('perl-termreadkey', when='+perl')
 
     # Installation has race cases.
     parallel = False
diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py
index 0644ed1fea..098de9bacd 100644
--- a/var/spack/repos/builtin/packages/thrift/package.py
+++ b/var/spack/repos/builtin/packages/thrift/package.py
@@ -17,7 +17,7 @@ class Thrift(Package):
     """
 
     homepage = "http://thrift.apache.org"
-    url      = "http://apache.mirrors.ionfish.org/thrift/0.9.2/thrift-0.9.2.tar.gz"
+    url      = "http://apache.mirrors.ionfish.org/thrift/0.11.0/thrift-0.11.0.tar.gz"
 
     version('0.11.0', sha256='c4ad38b6cb4a3498310d405a91fef37b9a8e79a50cd0968148ee2524d2fa60c2')
     version('0.10.0', sha256='2289d02de6e8db04cbbabb921aeb62bfe3098c4c83f36eec6c31194301efa10b')
@@ -47,10 +47,10 @@ class Thrift(Package):
     depends_on('zlib', when='+c')
     depends_on('libevent', when='+c')
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         if '+pic' in self.spec:
-            spack_env.append_flags('CFLAGS', self.compiler.pic_flag)
-            spack_env.append_flags('CXXFLAGS', self.compiler.pic_flag)
+            env.append_flags('CFLAGS', self.compiler.pic_flag)
+            env.append_flags('CXXFLAGS', self.compiler.pic_flag)
 
     def install(self, spec, prefix):
         env['PY_PREFIX'] = prefix
diff --git a/var/spack/repos/builtin/packages/transabyss/package.py b/var/spack/repos/builtin/packages/transabyss/package.py
index 85cf56bd85..a77fcbd621 100644
--- a/var/spack/repos/builtin/packages/transabyss/package.py
+++ b/var/spack/repos/builtin/packages/transabyss/package.py
@@ -16,7 +16,7 @@ class Transabyss(Package):
 
     depends_on('abyss@1.5.2')
     depends_on('python@2.7.6:', type=('build', 'run'))
-    depends_on('py-igraph@0.7.0:', type=('build', 'run'))
+    depends_on('py-python-igraph@0.7.0:', type=('build', 'run'))
     depends_on('blat')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py b/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py
index f1bc186dcf..0826b8d00c 100644
--- a/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py
+++ b/var/spack/repos/builtin/packages/trilinos-catalyst-ioss-adapter/package.py
@@ -10,7 +10,6 @@ class TrilinosCatalystIossAdapter(CMakePackage):
     """Adapter for Trilinos Seacas Ioss and Paraview Catalyst"""
 
     homepage = "https://trilinos.org/"
-    url      = "https://github.com/trilinos/Trilinos/archive/trilinos-release-12-12-1.tar.gz"
     git      = "https://github.com/trilinos/Trilinos.git"
 
     version('develop', branch='develop')
@@ -20,17 +19,17 @@ class TrilinosCatalystIossAdapter(CMakePackage):
     depends_on('flex', type='build')
     depends_on('paraview+mpi+python+osmesa')
     depends_on('py-numpy', type=('build', 'run'))
-    # Here we avoid paraview trying to use netcdf~parallel-netcdf
-    # which is netcdf's default, even though paraview depends on 'netcdf'
+    # Here we avoid paraview trying to use netcdf-c~parallel-netcdf
+    # which is netcdf-c's default, even though paraview depends on 'netcdf-c'
     # without any variants. Concretizer bug?
-    depends_on('netcdf+parallel-netcdf')
+    depends_on('netcdf-c+parallel-netcdf')
 
     root_cmakelists_dir = join_path('packages', 'seacas', 'libraries',
                                     'ioss', 'src', 'visualization',
                                     'ParaViewCatalystIossAdapter')
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.prepend_path('PYTHONPATH', self.prefix.python)
+    def setup_run_environment(self, env):
+        env.prepend_path('PYTHONPATH', self.prefix.python)
 
     def cmake_args(self):
         spec = self.spec
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 47e1fb1936..db6621ed6b 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -297,8 +297,8 @@ class Trilinos(CMakePackage):
 
     # MPI related dependencies
     depends_on('mpi')
-    depends_on('netcdf+mpi', when="~pnetcdf")
-    depends_on('netcdf+mpi+parallel-netcdf', when="+pnetcdf@master,12.12.1:")
+    depends_on('netcdf-c+mpi', when="~pnetcdf")
+    depends_on('netcdf-c+mpi+parallel-netcdf', when="+pnetcdf@master,12.12.1:")
     depends_on('parallel-netcdf', when="+pnetcdf@master,12.12.1:")
     depends_on('parmetis', when='+metis')
     depends_on('cgns', when='+cgns')
@@ -505,7 +505,7 @@ def cmake_args(self):
             '-DLAPACK_LIBRARY_NAMES=%s' % ';'.join(lapack.names),
             '-DLAPACK_LIBRARY_DIRS=%s' % ';'.join(lapack.directories),
             '-DTPL_ENABLE_Netcdf:BOOL=ON',
-            '-DNetCDF_ROOT:PATH=%s' % spec['netcdf'].prefix,
+            '-DNetCDF_ROOT:PATH=%s' % spec['netcdf-c'].prefix,
             '-DTPL_ENABLE_X11:BOOL=%s' % (
                 'ON' if '+x11' in spec else 'OFF'),
             '-DTrilinos_ENABLE_Gtest:BOOL=%s' % (
diff --git a/var/spack/repos/builtin/packages/trinity/package.py b/var/spack/repos/builtin/packages/trinity/package.py
index 997e36c0ef..68b8c7b98c 100644
--- a/var/spack/repos/builtin/packages/trinity/package.py
+++ b/var/spack/repos/builtin/packages/trinity/package.py
@@ -52,7 +52,7 @@ class Trinity(MakefilePackage):
     depends_on("samtools", type="run")
     depends_on("py-numpy", type="run")
     depends_on("express", type="run")
-    depends_on("perl-dbfile", type="run")
+    depends_on("perl-db-file", type="run")
     depends_on("perl-uri", type="run")
     depends_on("r-fastcluster", type="run")
     depends_on("r-ctc", type="run")
@@ -85,7 +85,9 @@ def install(self, spec, prefix):
         force_remove(join_path(prefix.bin, 'trinity-plugins', 'slclust', 'bin',
                                '.hidden'))
 
-    def setup_environment(self, spack_env, run_env):
-        run_env.set('TRINITY_HOME', self.prefix.bin)
-        run_env.prepend_path('PATH', self.prefix.bin.util)
-        spack_env.append_flags('CXXFLAGS', self.compiler.openmp_flag)
+    def setup_build_environment(self, env):
+        env.append_flags('CXXFLAGS', self.compiler.openmp_flag)
+
+    def setup_run_environment(self, env):
+        env.set('TRINITY_HOME', self.prefix.bin)
+        env.prepend_path('PATH', self.prefix.bin.util)
diff --git a/var/spack/repos/builtin/packages/turbine/package.py b/var/spack/repos/builtin/packages/turbine/package.py
index 4788efd070..902cae7a94 100644
--- a/var/spack/repos/builtin/packages/turbine/package.py
+++ b/var/spack/repos/builtin/packages/turbine/package.py
@@ -13,7 +13,7 @@ class Turbine(AutotoolsPackage):
     """Turbine: The Swift/T runtime"""
 
     homepage = 'http://swift-lang.org/Swift-T'
-    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/turbine-0.0.0.tar.gz'
+    url      = 'http://swift-lang.github.io/swift-t-downloads/spack/turbine-1.2.3.tar.gz'
     git      = "https://github.com/swift-lang/swift-t.git"
     configure_directory = 'turbine/code'
 
@@ -44,12 +44,12 @@ class Turbine(AutotoolsPackage):
     depends_on('libtool', type='build', when='@master')
     depends_on('m4', type=('build', 'run'))
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         spec = self.spec
 
-        spack_env.set('CC', spec['mpi'].mpicc)
-        spack_env.set('CXX', spec['mpi'].mpicxx)
-        spack_env.set('CXXLD', spec['mpi'].mpicxx)
+        env.set('CC', spec['mpi'].mpicc)
+        env.set('CXX', spec['mpi'].mpicxx)
+        env.set('CXXLD', spec['mpi'].mpicxx)
 
     @property
     def configure_directory(self):
diff --git a/var/spack/repos/builtin/packages/udunits2/package.py b/var/spack/repos/builtin/packages/udunits/package.py
similarity index 95%
rename from var/spack/repos/builtin/packages/udunits2/package.py
rename to var/spack/repos/builtin/packages/udunits/package.py
index c5704d6a5e..e3e31bee5c 100644
--- a/var/spack/repos/builtin/packages/udunits2/package.py
+++ b/var/spack/repos/builtin/packages/udunits/package.py
@@ -6,7 +6,7 @@
 from spack import *
 
 
-class Udunits2(AutotoolsPackage):
+class Udunits(AutotoolsPackage):
     """Automated units conversion"""
 
     homepage = "http://www.unidata.ucar.edu/software/udunits"
diff --git a/var/spack/repos/builtin/packages/vmatch/package.py b/var/spack/repos/builtin/packages/vmatch/package.py
index 3cedce4ede..b4433f6174 100644
--- a/var/spack/repos/builtin/packages/vmatch/package.py
+++ b/var/spack/repos/builtin/packages/vmatch/package.py
@@ -15,9 +15,5 @@ class Vmatch(Package):
 
     version('2.3.0', sha256='5e18d0dddf04e86dad193fcdde6e48f3901365932634125602d8808f35acf979')
 
-    def url_for_version(self, version):
-        url = 'http://www.vmatch.de/distributions/vmatch-{0}-Linux_x86_64-64bit.tar.gz'
-        return url.format(version)
-
     def install(self, spec, prefix):
         install_tree(self.stage.source_path, prefix.bin)
diff --git a/var/spack/repos/builtin/packages/vtkh/package.py b/var/spack/repos/builtin/packages/vtk-h/package.py
similarity index 90%
rename from var/spack/repos/builtin/packages/vtkh/package.py
rename to var/spack/repos/builtin/packages/vtk-h/package.py
index 3d60ee9a50..e3c1bd4031 100644
--- a/var/spack/repos/builtin/packages/vtkh/package.py
+++ b/var/spack/repos/builtin/packages/vtk-h/package.py
@@ -28,7 +28,7 @@ def cmake_cache_entry(name, value, vtype=None):
     return 'set({0} "{1}" CACHE {2} "")\n\n'.format(name, value, vtype)
 
 
-class Vtkh(Package):
+class VtkH(Package):
     """VTK-h is a toolkit of scientific visualization algorithms for emerging
     processor architectures. VTK-h brings together several projects like VTK-m
     and DIY2 to provide a toolkit with hybrid parallel capabilities."""
@@ -53,29 +53,29 @@ class Vtkh(Package):
     depends_on("intel-tbb", when="@0.1.0+tbb")
     depends_on("cuda", when="+cuda")
 
-    depends_on("vtkm@1.2.0", when="@0.1.0")
-    depends_on("vtkm@1.2.0+tbb", when="@0.1.0+tbb")
-    depends_on("vtkm@1.2.0+cuda", when="@0.1.0+cuda")
-    depends_on("vtkm@1.2.0~shared", when="@0.1.0~shared")
+    depends_on("vtk-m@1.2.0", when="@0.1.0")
+    depends_on("vtk-m@1.2.0+tbb", when="@0.1.0+tbb")
+    depends_on("vtk-m@1.2.0+cuda", when="@0.1.0+cuda")
+    depends_on("vtk-m@1.2.0~shared", when="@0.1.0~shared")
 
-    depends_on("vtkm@master~tbb+openmp", when="@develop+openmp")
-    depends_on("vtkm@master~tbb~openmp", when="@develop~openmp")
+    depends_on("vtk-m@master~tbb+openmp", when="@develop+openmp")
+    depends_on("vtk-m@master~tbb~openmp", when="@develop~openmp")
 
-    depends_on("vtkm@master+cuda~tbb+openmp", when="@develop+cuda+openmp")
-    depends_on("vtkm@master+cuda~tbb~openmp", when="@develop+cuda~openmp")
+    depends_on("vtk-m@master+cuda~tbb+openmp", when="@develop+cuda+openmp")
+    depends_on("vtk-m@master+cuda~tbb~openmp", when="@develop+cuda~openmp")
 
-    depends_on("vtkm@master~tbb+openmp~shared", when="@develop+openmp~shared")
-    depends_on("vtkm@master~tbb~openmp~shared", when="@develop~openmp~shared")
+    depends_on("vtk-m@master~tbb+openmp~shared", when="@develop+openmp~shared")
+    depends_on("vtk-m@master~tbb~openmp~shared", when="@develop~openmp~shared")
 
-    depends_on("vtkm@master+cuda~tbb+openmp~shared", when="@develop+cuda+openmp~shared")
-    depends_on("vtkm@master+cuda~tbb~openmp~shared", when="@develop+cuda~openmp~shared")
+    depends_on("vtk-m@master+cuda~tbb+openmp~shared", when="@develop+cuda+openmp~shared")
+    depends_on("vtk-m@master+cuda~tbb~openmp~shared", when="@develop+cuda~openmp~shared")
 
     patch('vtkm_lagrange_cuda_fix.patch')
 
     def install(self, spec, prefix):
         with working_dir('spack-build', create=True):
             cmake_args = ["../src",
-                          "-DVTKM_DIR={0}".format(spec["vtkm"].prefix),
+                          "-DVTKM_DIR={0}".format(spec["vtk-m"].prefix),
                           "-DENABLE_TESTS=OFF",
                           "-DBUILD_TESTING=OFF"]
 
@@ -203,7 +203,7 @@ def create_host_config(self, spec, prefix, py_site_pkgs_dir=None):
             cfg.write(cmake_cache_entry("ENABLE_OPENMP", "ON"))
 
         cfg.write("# vtk-m from spack\n")
-        cfg.write(cmake_cache_entry("VTKM_DIR", spec['vtkm'].prefix))
+        cfg.write(cmake_cache_entry("VTKM_DIR", spec['vtk-m'].prefix))
 
         #######################################################################
         # Optional Dependencies
diff --git a/var/spack/repos/builtin/packages/vtkh/vtkm_lagrange_cuda_fix.patch b/var/spack/repos/builtin/packages/vtk-h/vtkm_lagrange_cuda_fix.patch
similarity index 100%
rename from var/spack/repos/builtin/packages/vtkh/vtkm_lagrange_cuda_fix.patch
rename to var/spack/repos/builtin/packages/vtk-h/vtkm_lagrange_cuda_fix.patch
diff --git a/var/spack/repos/builtin/packages/vtkm/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py
similarity index 94%
rename from var/spack/repos/builtin/packages/vtkm/package.py
rename to var/spack/repos/builtin/packages/vtk-m/package.py
index eee37bf9af..317343bc82 100644
--- a/var/spack/repos/builtin/packages/vtkm/package.py
+++ b/var/spack/repos/builtin/packages/vtk-m/package.py
@@ -9,7 +9,7 @@
 import sys
 
 
-class Vtkm(CMakePackage, CudaPackage):
+class VtkM(CMakePackage, CudaPackage):
     """VTK-m is a toolkit of scientific visualization algorithms for emerging
     processor architectures. VTK-m supports the fine-grained concurrency for
     data analysis and visualization algorithms required to drive extreme scale
@@ -90,8 +90,7 @@ def cmake_args(self):
 
             # logging support
             if "+logging" in spec:
-                if spec.satisfies('@:1.2.0') and \
-                        spec['vtkm'].version.string != 'master':
+                if spec.satisfies('@:1.2.0'):
                     raise InstallError('logging is not supported for\
                             vtkm version lower than 1.3')
                 options.append("-DVTKm_ENABLE_LOGGING:BOOL=ON")
@@ -100,8 +99,7 @@ def cmake_args(self):
 
             # mpi support
             if "+mpi" in spec:
-                if spec.satisfies('@:1.2.0') and \
-                        spec['vtkm'].version.string != 'master':
+                if spec.satisfies('@:1.2.0'):
                     raise InstallError('mpi is not supported for\
                             vtkm version lower than 1.3')
                 options.append("-DVTKm_ENABLE_MPI:BOOL=ON")
@@ -111,8 +109,7 @@ def cmake_args(self):
             # openmp support
             if "+openmp" in spec:
                 # openmp is added since version 1.3.0
-                if spec.satisfies('@:1.2.0') and \
-                        spec['vtkm'].version.string != 'master':
+                if spec.satisfies('@:1.2.0'):
                     raise InstallError('OpenMP is not supported for\
                             vtkm version lower than 1.3')
                 options.append("-DVTKm_ENABLE_OPENMP:BOOL=ON")
diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py
index 3d9d108ae4..8ed305c53f 100644
--- a/var/spack/repos/builtin/packages/vtk/package.py
+++ b/var/spack/repos/builtin/packages/vtk/package.py
@@ -86,7 +86,7 @@ class Vtk(CMakePackage):
     depends_on('jsoncpp')
     depends_on('libxml2')
     depends_on('lz4')
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('netcdf-cxx')
     depends_on('libpng')
     depends_on('libtiff')
@@ -96,10 +96,10 @@ def url_for_version(self, version):
         url = "http://www.vtk.org/files/release/{0}/VTK-{1}.tar.gz"
         return url.format(version.up_to(2), version)
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         # VTK has some trouble finding freetype unless it is set in
         # the environment
-        spack_env.set('FREETYPE_DIR', self.spec['freetype'].prefix)
+        env.set('FREETYPE_DIR', self.spec['freetype'].prefix)
 
     def cmake_args(self):
         spec = self.spec
@@ -120,8 +120,8 @@ def cmake_args(self):
             '-DVTK_USE_SYSTEM_LIBPROJ4:BOOL=OFF',
             '-DVTK_USE_SYSTEM_OGGTHEORA:BOOL=OFF',
 
-            '-DNETCDF_DIR={0}'.format(spec['netcdf'].prefix),
-            '-DNETCDF_C_ROOT={0}'.format(spec['netcdf'].prefix),
+            '-DNETCDF_DIR={0}'.format(spec['netcdf-c'].prefix),
+            '-DNETCDF_C_ROOT={0}'.format(spec['netcdf-c'].prefix),
             '-DNETCDF_CXX_ROOT={0}'.format(spec['netcdf-cxx'].prefix),
 
             # Allow downstream codes (e.g. VisIt) to override VTK's classes
diff --git a/var/spack/repos/builtin/packages/warpx/package.py b/var/spack/repos/builtin/packages/warpx/package.py
index 015c38406b..89c0117d2e 100644
--- a/var/spack/repos/builtin/packages/warpx/package.py
+++ b/var/spack/repos/builtin/packages/warpx/package.py
@@ -16,10 +16,10 @@ class Warpx(MakefilePackage):
     """
 
     homepage = "https://ecp-warpx.github.io/index.html"
-    url      = "https://github.com/ECP-WarpX/WarpX"
+    git      = "https://github.com/ECP-WarpX/WarpX.git"
 
-    version('master', git='https://github.com/ECP-WarpX/WarpX.git', tag='master')
-    version('dev', git='https://github.com/ECP-WarpX/WarpX.git', tag='dev')
+    version('master', tag='master')
+    version('dev', tag='dev')
 
     depends_on('mpi')
 
@@ -94,11 +94,11 @@ def torf(s):
                         'TINY_PROFILE = {0}'.format(torf('+tprof')))
         makefile.filter('EBASE .*', 'EBASE = warpx')
 
-    def setup_environment(self, spack_env, run_env):
+    def setup_build_environment(self, env):
         # --- Fool the compiler into using the "unknown" configuration.
         # --- With this, it will use the spack provided mpi.
-        spack_env.set('HOSTNAME', 'unknown')
-        spack_env.set('NERSC_HOST', 'unknown')
+        env.set('HOSTNAME', 'unknown')
+        env.set('NERSC_HOST', 'unknown')
 
     def install(self, spec, prefix):
         make('WarpxBinDir = {0}'.format(prefix.bin), 'all')
diff --git a/var/spack/repos/builtin/packages/wireshark/package.py b/var/spack/repos/builtin/packages/wireshark/package.py
index 5df47d773b..cd334ed76e 100644
--- a/var/spack/repos/builtin/packages/wireshark/package.py
+++ b/var/spack/repos/builtin/packages/wireshark/package.py
@@ -24,7 +24,7 @@ class Wireshark(CMakePackage):
     variant('headers',  default=True, description='Install headers')
 
     depends_on('bison',     type='build')
-    depends_on('cares')
+    depends_on('c-ares')
     depends_on('doxygen',   type='build')
     depends_on('flex',      type='build')
     depends_on('git',       type='build')
diff --git a/var/spack/repos/builtin/packages/xdmf3/package.py b/var/spack/repos/builtin/packages/xdmf3/package.py
index 772135846c..8a245ddc2d 100644
--- a/var/spack/repos/builtin/packages/xdmf3/package.py
+++ b/var/spack/repos/builtin/packages/xdmf3/package.py
@@ -13,7 +13,6 @@ class Xdmf3(CMakePackage):
     """
 
     homepage = "http://xdmf.org"
-    url      = "https://gitlab.kitware.com/xdmf/xdmf/-/archive/master/xdmf-master.tar.bz2"
     git      = "https://gitlab.kitware.com/xdmf/xdmf.git"
 
     # There is no official release of XDMF and development has largely ceased,
diff --git a/var/spack/repos/builtin/packages/xeus/package.py b/var/spack/repos/builtin/packages/xeus/package.py
index d67d32d188..1cca2c2cf5 100644
--- a/var/spack/repos/builtin/packages/xeus/package.py
+++ b/var/spack/repos/builtin/packages/xeus/package.py
@@ -23,7 +23,7 @@ class Xeus(CMakePackage):
     conflicts('%clang@:3.6')
     conflicts('%intel@:17')
 
-    depends_on('zeromq@4.2.5:-libsodium')
+    depends_on('libzmq@4.2.5:-libsodium')
     depends_on('cppzmq@4.3.0:')
     depends_on('cryptopp@7.0.0:')
     depends_on('xtl@0.4.0:')
diff --git a/var/spack/repos/builtin/packages/xios/package.py b/var/spack/repos/builtin/packages/xios/package.py
index 799bdc03d7..997e54ec57 100644
--- a/var/spack/repos/builtin/packages/xios/package.py
+++ b/var/spack/repos/builtin/packages/xios/package.py
@@ -21,7 +21,7 @@ class Xios(Package):
             description='Build for debugging, development or production')
     # NOTE: oasis coupler could be supported with a variant
 
-    # Use spack versions of blitz and netcdf for compatibility
+    # Use spack versions of blitz and netcdf-c for compatibility
     # with recent compilers and optimised platform libraries:
     patch('bld_extern_1.0.patch', when='@:1.0')
     patch('bld_extern_1.x.patch', when='@1.1:')
@@ -30,7 +30,7 @@ class Xios(Package):
     # followed by a character is broken (e.g. duration '1d'):
     patch('llvm_bug_17782.patch', when='@1.1: %clang')
 
-    depends_on('netcdf+mpi')
+    depends_on('netcdf-c+mpi')
     depends_on('netcdf-fortran')
     depends_on('hdf5+mpi')
     depends_on('mpi')
@@ -60,8 +60,8 @@ def xios_env(self):
     def xios_path(self):
         file = join_path('arch', 'arch-SPACK.path')
         spec = self.spec
-        paths = {'NETCDF_INC_DIR': spec['netcdf'].prefix.include,
-                 'NETCDF_LIB_DIR': spec['netcdf'].prefix.lib,
+        paths = {'NETCDF_INC_DIR': spec['netcdf-c'].prefix.include,
+                 'NETCDF_LIB_DIR': spec['netcdf-c'].prefix.lib,
                  'HDF5_INC_DIR': spec['hdf5'].prefix.include,
                  'HDF5_LIB_DIR': spec['hdf5'].prefix.lib}
         text = r"""
diff --git a/var/spack/repos/builtin/packages/yambo/package.py b/var/spack/repos/builtin/packages/yambo/package.py
index 29d84a20b7..e4c07cf679 100644
--- a/var/spack/repos/builtin/packages/yambo/package.py
+++ b/var/spack/repos/builtin/packages/yambo/package.py
@@ -45,20 +45,20 @@ class Yambo(AutotoolsPackage):
     # MPI dependencies are forced, until we have proper forwarding of variants
     #
     # Note that yambo is used as an application, and not linked as a library,
-    # thus there will be no case where another package pulls-in e.g. netcdf+mpi
-    # and wants to depend on yambo~mpi.
+    # thus there will be no case where another package pulls-in e.g.
+    # netcdf-c+mpi and wants to depend on yambo~mpi.
     depends_on('mpi', when='+mpi')
-    depends_on('netcdf+mpi', when='+mpi')
+    depends_on('netcdf-c+mpi', when='+mpi')
     depends_on('hdf5+mpi', when='+mpi')
     depends_on('fftw+mpi', when='+mpi')
     depends_on('scalapack', when='+mpi')
 
-    depends_on('netcdf~mpi', when='~mpi')
+    depends_on('netcdf-c~mpi', when='~mpi')
     depends_on('hdf5~mpi', when='~mpi')
     depends_on('fftw~mpi', when='~mpi')
 
     depends_on('hdf5+fortran')
-    depends_on('netcdf')
+    depends_on('netcdf-c')
     depends_on('netcdf-fortran')
     depends_on('libxc@2.0.3:')
 
@@ -124,7 +124,7 @@ def configure_args(self):
             '--enable-netcdf-hdf5',
             '--enable-hdf5-compression',
             '--with-hdf5-libs={0}'.format(spec['hdf5'].libs),
-            '--with-netcdf-path={0}'.format(spec['netcdf'].prefix),
+            '--with-netcdf-path={0}'.format(spec['netcdf-c'].prefix),
             '--with-netcdff-path={0}'.format(spec['netcdf-fortran'].prefix)
         ])
 
-- 
GitLab