summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.flake8_packages2
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md41
-rw-r--r--.github/ISSUE_TEMPLATE/build_error.md79
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md21
-rw-r--r--.github/workflows/linux_build_tests.yaml5
-rw-r--r--.github/workflows/minimum_python_versions.yaml2
-rw-r--r--.gitignore6
-rw-r--r--CHANGELOG.md6
-rwxr-xr-xbin/spack-python2
-rw-r--r--etc/spack/defaults/config.yaml6
-rw-r--r--etc/spack/defaults/modules.yaml6
-rw-r--r--etc/spack/defaults/packages.yaml1
-rw-r--r--lib/spack/docs/basic_usage.rst31
-rw-r--r--lib/spack/docs/build_settings.rst33
-rw-r--r--lib/spack/docs/build_systems/cmakepackage.rst17
-rw-r--r--lib/spack/docs/build_systems/intelpackage.rst6
-rw-r--r--lib/spack/docs/build_systems/sippackage.rst12
-rw-r--r--lib/spack/docs/containers.rst8
-rw-r--r--lib/spack/docs/contribution_guide.rst4
-rw-r--r--lib/spack/docs/environments.rst2
-rw-r--r--lib/spack/docs/getting_started.rst2
-rw-r--r--lib/spack/docs/module_file_support.rst2
-rw-r--r--lib/spack/docs/packaging_guide.rst31
-rw-r--r--lib/spack/docs/pipelines.rst26
-rw-r--r--lib/spack/docs/workflows.rst12
-rwxr-xr-xlib/spack/env/cc2
-rw-r--r--lib/spack/external/__init__.py10
-rw-r--r--lib/spack/external/_pytest/config.py38
-rw-r--r--lib/spack/external/_pytest/vendored_packages/pluggy.py20
-rw-r--r--lib/spack/external/altgraph/__init__.py9
-rw-r--r--lib/spack/external/distro.py1
-rw-r--r--lib/spack/spack/binary_distribution.py280
-rw-r--r--lib/spack/spack/build_systems/autotools.py6
-rw-r--r--lib/spack/spack/build_systems/cmake.py114
-rw-r--r--lib/spack/spack/build_systems/cuda.py80
-rw-r--r--lib/spack/spack/build_systems/sip.py48
-rw-r--r--lib/spack/spack/build_systems/sourceware.py37
-rw-r--r--lib/spack/spack/build_systems/xorg.py37
-rw-r--r--lib/spack/spack/caches.py5
-rw-r--r--lib/spack/spack/ci.py5
-rw-r--r--lib/spack/spack/cmd/__init__.py10
-rw-r--r--lib/spack/spack/cmd/buildcache.py126
-rw-r--r--lib/spack/spack/cmd/checksum.py3
-rw-r--r--lib/spack/spack/cmd/create.py4
-rw-r--r--lib/spack/spack/cmd/debug.py18
-rw-r--r--lib/spack/spack/cmd/dependencies.py22
-rw-r--r--lib/spack/spack/cmd/dependents.py2
-rw-r--r--lib/spack/spack/cmd/load.py15
-rw-r--r--lib/spack/spack/cmd/mirror.py8
-rw-r--r--lib/spack/spack/cmd/python.py9
-rw-r--r--lib/spack/spack/cmd/repo.py25
-rw-r--r--lib/spack/spack/compiler.py8
-rw-r--r--lib/spack/spack/compilers/arm.py16
-rw-r--r--lib/spack/spack/compilers/fj.py4
-rw-r--r--lib/spack/spack/config.py72
-rw-r--r--lib/spack/spack/fetch_strategy.py41
-rw-r--r--lib/spack/spack/mirror.py29
-rw-r--r--lib/spack/spack/package.py50
-rw-r--r--lib/spack/spack/package_prefs.py78
-rw-r--r--lib/spack/spack/patch.py9
-rw-r--r--lib/spack/spack/pkgkit.py2
-rw-r--r--lib/spack/spack/provider_index.py307
-rw-r--r--lib/spack/spack/relocate.py792
-rw-r--r--lib/spack/spack/repo.py52
-rw-r--r--lib/spack/spack/schema/config.py1
-rw-r--r--lib/spack/spack/spec.py2
-rw-r--r--lib/spack/spack/stage.py33
-rw-r--r--lib/spack/spack/test/build_systems.py107
-rw-r--r--lib/spack/spack/test/cmd/buildcache.py15
-rw-r--r--lib/spack/spack/test/cmd/debug.py14
-rw-r--r--lib/spack/spack/test/cmd/dependencies.py4
-rw-r--r--lib/spack/spack/test/cmd/list.py8
-rw-r--r--lib/spack/spack/test/cmd/load.py15
-rw-r--r--lib/spack/spack/test/cmd/mirror.py23
-rw-r--r--lib/spack/spack/test/cmd/python.py7
-rw-r--r--lib/spack/spack/test/cmd/repo.py35
-rw-r--r--lib/spack/spack/test/compilers.py8
-rw-r--r--lib/spack/spack/test/concretize_preferences.py51
-rw-r--r--lib/spack/spack/test/config.py87
-rw-r--r--lib/spack/spack/test/conftest.py20
-rw-r--r--lib/spack/spack/test/mirror.py92
-rw-r--r--lib/spack/spack/test/module_parsing.py30
-rw-r--r--lib/spack/spack/test/package_class.py66
-rw-r--r--lib/spack/spack/test/packages.py21
-rw-r--r--lib/spack/spack/test/packaging.py571
-rw-r--r--lib/spack/spack/test/relocate.py59
-rw-r--r--lib/spack/spack/test/spec_dag.py4
-rw-r--r--lib/spack/spack/test/url_fetch.py19
-rw-r--r--lib/spack/spack/util/compression.py3
-rw-r--r--lib/spack/spack/util/executable.py2
-rw-r--r--lib/spack/spack/util/module_cmd.py9
-rw-r--r--lib/spack/spack/util/web.py2
-rwxr-xr-xshare/spack/spack-completion.bash16
-rw-r--r--var/spack/repos/builtin.mock/packages/cmake-client/package.py8
-rw-r--r--var/spack/repos/builtin.mock/packages/fetch-options/package.py22
-rw-r--r--var/spack/repos/builtin.mock/packages/mirror-gnu-broken/package.py15
-rw-r--r--var/spack/repos/builtin.mock/packages/mirror-gnu/package.py15
-rw-r--r--var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/mirror-gnu-broken/package.py15
-rw-r--r--var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/package.py15
-rw-r--r--var/spack/repos/builtin.mock/packages/mirror-sourceware/package.py15
-rw-r--r--var/spack/repos/builtin.mock/packages/mirror-xorg-broken/package.py15
-rw-r--r--var/spack/repos/builtin.mock/packages/mirror-xorg/package.py15
-rw-r--r--var/spack/repos/builtin.mock/packages/trivial-pkg-with-valid-hash/package.py17
-rw-r--r--var/spack/repos/builtin/packages/acl/package.py30
-rw-r--r--var/spack/repos/builtin/packages/acts-core/package.py12
-rw-r--r--var/spack/repos/builtin/packages/adios2/package.py20
-rw-r--r--var/spack/repos/builtin/packages/adol-c/package.py23
-rw-r--r--var/spack/repos/builtin/packages/agrep/package.py23
-rw-r--r--var/spack/repos/builtin/packages/amdblis/package.py1
-rw-r--r--var/spack/repos/builtin/packages/amrex/package.py2
-rw-r--r--var/spack/repos/builtin/packages/anaconda2/package.py47
-rw-r--r--var/spack/repos/builtin/packages/anaconda3/package.py53
-rw-r--r--var/spack/repos/builtin/packages/aperture-photometry/package.py2
-rw-r--r--var/spack/repos/builtin/packages/applewmproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/appres/package.py4
-rw-r--r--var/spack/repos/builtin/packages/apr-util/package.py4
-rw-r--r--var/spack/repos/builtin/packages/argobots/package.py1
-rw-r--r--var/spack/repos/builtin/packages/arpack-ng/package.py6
-rw-r--r--var/spack/repos/builtin/packages/attr/package.py14
-rw-r--r--var/spack/repos/builtin/packages/autoconf-archive/package.py14
-rw-r--r--var/spack/repos/builtin/packages/automake/package.py1
-rw-r--r--var/spack/repos/builtin/packages/aws-parallelcluster/package.py4
-rw-r--r--var/spack/repos/builtin/packages/axl/package.py6
-rw-r--r--var/spack/repos/builtin/packages/bart/Makefile.patch30
-rw-r--r--var/spack/repos/builtin/packages/bart/bart_path.patch107
-rw-r--r--var/spack/repos/builtin/packages/bart/package.py84
-rw-r--r--var/spack/repos/builtin/packages/bash/package.py9
-rw-r--r--var/spack/repos/builtin/packages/bat/package.py29
-rw-r--r--var/spack/repos/builtin/packages/batctl/package.py24
-rw-r--r--var/spack/repos/builtin/packages/bazel/package.py13
-rw-r--r--var/spack/repos/builtin/packages/bcache/func_crc64.patch13
-rw-r--r--var/spack/repos/builtin/packages/bcache/package.py36
-rw-r--r--var/spack/repos/builtin/packages/bdftopcf/package.py4
-rw-r--r--var/spack/repos/builtin/packages/beforelight/package.py4
-rw-r--r--var/spack/repos/builtin/packages/bigreqsproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/binutils/package.py17
-rw-r--r--var/spack/repos/builtin/packages/bison/package.py1
-rw-r--r--var/spack/repos/builtin/packages/bitmap/package.py4
-rw-r--r--var/spack/repos/builtin/packages/blis/package.py4
-rw-r--r--var/spack/repos/builtin/packages/bmi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/boinc-client/package.py63
-rw-r--r--var/spack/repos/builtin/packages/boinc-client/systemd-fix.patch13
-rw-r--r--var/spack/repos/builtin/packages/boost/darwin_clang_version.patch31
-rw-r--r--var/spack/repos/builtin/packages/boost/package.py18
-rw-r--r--var/spack/repos/builtin/packages/bowtie2/package.py2
-rw-r--r--var/spack/repos/builtin/packages/bubblewrap/package.py28
-rw-r--r--var/spack/repos/builtin/packages/bzip2/package.py4
-rw-r--r--var/spack/repos/builtin/packages/c-blosc/package.py7
-rw-r--r--var/spack/repos/builtin/packages/caliper/package.py9
-rw-r--r--var/spack/repos/builtin/packages/catch2/package.py8
-rw-r--r--var/spack/repos/builtin/packages/cctools/package.py54
-rw-r--r--var/spack/repos/builtin/packages/ceres-solver/package.py23
-rw-r--r--var/spack/repos/builtin/packages/cgns/package.py37
-rw-r--r--var/spack/repos/builtin/packages/charliecloud/package.py30
-rw-r--r--var/spack/repos/builtin/packages/charmpp/package.py6
-rw-r--r--var/spack/repos/builtin/packages/cinch/package.py2
-rw-r--r--var/spack/repos/builtin/packages/citcoms/package.py27
-rw-r--r--var/spack/repos/builtin/packages/clhep/package.py2
-rw-r--r--var/spack/repos/builtin/packages/cmake/package.py3
-rw-r--r--var/spack/repos/builtin/packages/cminpack/link_with_blas_pr_21.patch267
-rw-r--r--var/spack/repos/builtin/packages/cminpack/package.py39
-rw-r--r--var/spack/repos/builtin/packages/compiz/package.py4
-rw-r--r--var/spack/repos/builtin/packages/compositeproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/constype/package.py4
-rw-r--r--var/spack/repos/builtin/packages/coreutils/package.py16
-rw-r--r--var/spack/repos/builtin/packages/cosma/package.py69
-rw-r--r--var/spack/repos/builtin/packages/cp2k/package.py17
-rw-r--r--var/spack/repos/builtin/packages/cpio/package.py5
-rw-r--r--var/spack/repos/builtin/packages/cppgsl/package.py3
-rw-r--r--var/spack/repos/builtin/packages/cpprestsdk/Release.patch45
-rw-r--r--var/spack/repos/builtin/packages/cpprestsdk/package.py7
-rw-r--r--var/spack/repos/builtin/packages/cryptsetup/package.py8
-rw-r--r--var/spack/repos/builtin/packages/cscope/package.py12
-rw-r--r--var/spack/repos/builtin/packages/damageproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/darshan-runtime/package.py3
-rw-r--r--var/spack/repos/builtin/packages/darshan-util/package.py3
-rw-r--r--var/spack/repos/builtin/packages/davix/package.py11
-rw-r--r--var/spack/repos/builtin/packages/dcmtk/package.py2
-rw-r--r--var/spack/repos/builtin/packages/ddd/package.py75
-rw-r--r--var/spack/repos/builtin/packages/dealii/package.py10
-rw-r--r--var/spack/repos/builtin/packages/denovogear/newmat6.cpp.patch11
-rw-r--r--var/spack/repos/builtin/packages/denovogear/package.py2
-rw-r--r--var/spack/repos/builtin/packages/dhpmm-f/package.py51
-rw-r--r--var/spack/repos/builtin/packages/diffutils/package.py2
-rw-r--r--var/spack/repos/builtin/packages/dihydrogen/package.py111
-rw-r--r--var/spack/repos/builtin/packages/dmxproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/doxygen/package.py10
-rw-r--r--var/spack/repos/builtin/packages/dpdk/package.py29
-rw-r--r--var/spack/repos/builtin/packages/draco/package.py2
-rw-r--r--var/spack/repos/builtin/packages/dri2proto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/dri3proto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/eagle/package.py46
-rw-r--r--var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py3
-rw-r--r--var/spack/repos/builtin/packages/ecp-proxy-apps/package.py40
-rw-r--r--var/spack/repos/builtin/packages/editres/package.py4
-rw-r--r--var/spack/repos/builtin/packages/eigen/find-ptscotch.patch27
-rw-r--r--var/spack/repos/builtin/packages/eigen/package.py55
-rw-r--r--var/spack/repos/builtin/packages/elasticsearch/package.py2
-rw-r--r--var/spack/repos/builtin/packages/elfutils/package.py4
-rw-r--r--var/spack/repos/builtin/packages/environment-modules/package.py5
-rw-r--r--var/spack/repos/builtin/packages/er/package.py4
-rw-r--r--var/spack/repos/builtin/packages/evieext/package.py4
-rw-r--r--var/spack/repos/builtin/packages/exchanger/package.py21
-rw-r--r--var/spack/repos/builtin/packages/exiv2/package.py3
-rw-r--r--var/spack/repos/builtin/packages/expect/package.py9
-rw-r--r--var/spack/repos/builtin/packages/extrae/package.py4
-rw-r--r--var/spack/repos/builtin/packages/exuberant-ctags/package.py2
-rw-r--r--var/spack/repos/builtin/packages/eztrace/package.py5
-rw-r--r--var/spack/repos/builtin/packages/f18/package.py25
-rw-r--r--var/spack/repos/builtin/packages/f77-zmq/package.py4
-rw-r--r--var/spack/repos/builtin/packages/fabtests/package.py27
-rw-r--r--var/spack/repos/builtin/packages/fairlogger/package.py17
-rw-r--r--var/spack/repos/builtin/packages/fast-global-file-status/package.py1
-rw-r--r--var/spack/repos/builtin/packages/fd-find/package.py21
-rw-r--r--var/spack/repos/builtin/packages/ffmpeg/package.py122
-rw-r--r--var/spack/repos/builtin/packages/filo/package.py32
-rw-r--r--var/spack/repos/builtin/packages/fish/package.py6
-rw-r--r--var/spack/repos/builtin/packages/fixesproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/fl/package.py2
-rw-r--r--var/spack/repos/builtin/packages/flatbuffers/package.py13
-rw-r--r--var/spack/repos/builtin/packages/flecsi/package.py45
-rw-r--r--var/spack/repos/builtin/packages/flit/package.py22
-rw-r--r--var/spack/repos/builtin/packages/fmt/package.py1
-rw-r--r--var/spack/repos/builtin/packages/font-util/package.py5
-rw-r--r--var/spack/repos/builtin/packages/fontcacheproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/fontsproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/fonttosfnt/package.py4
-rw-r--r--var/spack/repos/builtin/packages/freeipmi/package.py40
-rw-r--r--var/spack/repos/builtin/packages/fslsfonts/package.py4
-rw-r--r--var/spack/repos/builtin/packages/fstobdf/package.py4
-rw-r--r--var/spack/repos/builtin/packages/g4abla/package.py14
-rw-r--r--var/spack/repos/builtin/packages/g4emlow/package.py18
-rw-r--r--var/spack/repos/builtin/packages/g4ensdfstate/package.py9
-rw-r--r--var/spack/repos/builtin/packages/g4incl/package.py34
-rw-r--r--var/spack/repos/builtin/packages/g4ndl/package.py8
-rw-r--r--var/spack/repos/builtin/packages/g4neutronxs/package.py9
-rw-r--r--var/spack/repos/builtin/packages/g4particlexs/package.py35
-rw-r--r--var/spack/repos/builtin/packages/g4photonevaporation/package.py13
-rw-r--r--var/spack/repos/builtin/packages/g4pii/package.py8
-rw-r--r--var/spack/repos/builtin/packages/g4radioactivedecay/package.py16
-rw-r--r--var/spack/repos/builtin/packages/g4realsurface/package.py12
-rw-r--r--var/spack/repos/builtin/packages/g4saiddata/package.py9
-rw-r--r--var/spack/repos/builtin/packages/g4tendl/package.py10
-rw-r--r--var/spack/repos/builtin/packages/gasnet/package.py45
-rw-r--r--var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-1.patch37
-rw-r--r--var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-2.patch73
-rw-r--r--var/spack/repos/builtin/packages/gcc/package.py23
-rw-r--r--var/spack/repos/builtin/packages/gccmakedep/package.py4
-rw-r--r--var/spack/repos/builtin/packages/gdal/package.py11
-rw-r--r--var/spack/repos/builtin/packages/gdb/package.py19
-rw-r--r--var/spack/repos/builtin/packages/gdrcopy/package.py27
-rw-r--r--var/spack/repos/builtin/packages/geant4-data/package.py157
-rw-r--r--var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch18
-rw-r--r--var/spack/repos/builtin/packages/geant4/package.py179
-rw-r--r--var/spack/repos/builtin/packages/gengetopt/package.py36
-rw-r--r--var/spack/repos/builtin/packages/genometools/package.py7
-rw-r--r--var/spack/repos/builtin/packages/git/package.py9
-rw-r--r--var/spack/repos/builtin/packages/gitconddb/package.py43
-rw-r--r--var/spack/repos/builtin/packages/glfw/package.py39
-rw-r--r--var/spack/repos/builtin/packages/glib/meson-gettext.patch34
-rw-r--r--var/spack/repos/builtin/packages/glib/package.py97
-rw-r--r--var/spack/repos/builtin/packages/glproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/glusterfs/package.py44
-rw-r--r--var/spack/repos/builtin/packages/gmsh/package.py17
-rw-r--r--var/spack/repos/builtin/packages/gmt/package.py88
-rw-r--r--var/spack/repos/builtin/packages/gnupg/package.py37
-rw-r--r--var/spack/repos/builtin/packages/gnuplot/package.py2
-rw-r--r--var/spack/repos/builtin/packages/go/package.py9
-rw-r--r--var/spack/repos/builtin/packages/grandr/package.py4
-rw-r--r--var/spack/repos/builtin/packages/grass/package.py5
-rw-r--r--var/spack/repos/builtin/packages/gromacs/package.py55
-rw-r--r--var/spack/repos/builtin/packages/grpc/package.py5
-rw-r--r--var/spack/repos/builtin/packages/gsl/gsl-2.3-cblas.patch323
-rw-r--r--var/spack/repos/builtin/packages/gsl/package.py28
-rw-r--r--var/spack/repos/builtin/packages/gtk-doc/package.py41
-rw-r--r--var/spack/repos/builtin/packages/gtkorvo-dill/2.1-fix-clear_cache.patch148
-rw-r--r--var/spack/repos/builtin/packages/gtkorvo-dill/2.4-fix-clear_cache.patch148
-rw-r--r--var/spack/repos/builtin/packages/gtkorvo-dill/package.py4
-rw-r--r--var/spack/repos/builtin/packages/gtksourceview/package.py2
-rw-r--r--var/spack/repos/builtin/packages/gunrock/package.py31
-rw-r--r--var/spack/repos/builtin/packages/hcol/package.py25
-rw-r--r--var/spack/repos/builtin/packages/hdf/package.py7
-rw-r--r--var/spack/repos/builtin/packages/hdf5/package.py7
-rw-r--r--var/spack/repos/builtin/packages/helics/package.py105
-rw-r--r--var/spack/repos/builtin/packages/hepmc/package.py34
-rw-r--r--var/spack/repos/builtin/packages/hpctoolkit/package.py31
-rw-r--r--var/spack/repos/builtin/packages/hpcviewer/package.py6
-rw-r--r--var/spack/repos/builtin/packages/hpx/package.py6
-rw-r--r--var/spack/repos/builtin/packages/hsakmt/package.py4
-rw-r--r--var/spack/repos/builtin/packages/htop/package.py1
-rw-r--r--var/spack/repos/builtin/packages/http-parser/package.py21
-rw-r--r--var/spack/repos/builtin/packages/httpress/package.py24
-rw-r--r--var/spack/repos/builtin/packages/hugo/package.py9
-rw-r--r--var/spack/repos/builtin/packages/hydrogen/package.py2
-rw-r--r--var/spack/repos/builtin/packages/iceauth/package.py4
-rw-r--r--var/spack/repos/builtin/packages/ico/package.py4
-rw-r--r--var/spack/repos/builtin/packages/imake/package.py4
-rw-r--r--var/spack/repos/builtin/packages/inputproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/intel-daal/package.py2
-rw-r--r--var/spack/repos/builtin/packages/intel-gpu-tools/package.py4
-rw-r--r--var/spack/repos/builtin/packages/intel-ipp/package.py2
-rw-r--r--var/spack/repos/builtin/packages/intel-mkl-dnn/package.py67
-rw-r--r--var/spack/repos/builtin/packages/intel-mkl/package.py2
-rw-r--r--var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py81
-rw-r--r--var/spack/repos/builtin/packages/intel-mpi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/intel-parallel-studio/package.py3
-rw-r--r--var/spack/repos/builtin/packages/intel-pin/package.py1
-rw-r--r--var/spack/repos/builtin/packages/intel-tbb/package.py75
-rw-r--r--var/spack/repos/builtin/packages/intel-xed/package.py3
-rw-r--r--var/spack/repos/builtin/packages/intel/package.py7
-rw-r--r--var/spack/repos/builtin/packages/iq-tree/package.py51
-rw-r--r--var/spack/repos/builtin/packages/iwyu/iwyu-013-cmake.patch34
-rw-r--r--var/spack/repos/builtin/packages/iwyu/package.py27
-rw-r--r--var/spack/repos/builtin/packages/jasper/package.py10
-rw-r--r--var/spack/repos/builtin/packages/jblob/package.py35
-rw-r--r--var/spack/repos/builtin/packages/jdk/package.py30
-rw-r--r--var/spack/repos/builtin/packages/julea/package.py42
-rw-r--r--var/spack/repos/builtin/packages/julia/package.py1
-rw-r--r--var/spack/repos/builtin/packages/kallisto/package.py29
-rw-r--r--var/spack/repos/builtin/packages/kbproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/kealib/package.py7
-rw-r--r--var/spack/repos/builtin/packages/keyutils/package.py27
-rw-r--r--var/spack/repos/builtin/packages/kinesis/package.py27
-rw-r--r--var/spack/repos/builtin/packages/kmod/package.py30
-rw-r--r--var/spack/repos/builtin/packages/kraken2/package.py35
-rw-r--r--var/spack/repos/builtin/packages/kripke/package.py13
-rw-r--r--var/spack/repos/builtin/packages/kvtree/package.py4
-rw-r--r--var/spack/repos/builtin/packages/laghos/package.py16
-rw-r--r--var/spack/repos/builtin/packages/lammps/package.py11
-rw-r--r--var/spack/repos/builtin/packages/lastz/package.py8
-rw-r--r--var/spack/repos/builtin/packages/lastz/sequences.c.patch244
-rw-r--r--var/spack/repos/builtin/packages/lbxproxy/package.py4
-rw-r--r--var/spack/repos/builtin/packages/legion/package.py19
-rw-r--r--var/spack/repos/builtin/packages/lesstif/package.py51
-rw-r--r--var/spack/repos/builtin/packages/lftp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libapplewm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libbacktrace/package.py23
-rw-r--r--var/spack/repos/builtin/packages/libc/package.py19
-rw-r--r--var/spack/repos/builtin/packages/libdmx/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libfabric/package.py92
-rw-r--r--var/spack/repos/builtin/packages/libffi/package.py6
-rw-r--r--var/spack/repos/builtin/packages/libfontenc/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libfs/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libgcrypt/package.py25
-rw-r--r--var/spack/repos/builtin/packages/libgd/package.py2
-rw-r--r--var/spack/repos/builtin/packages/libgit2/package.py84
-rw-r--r--var/spack/repos/builtin/packages/libgpg-error/package.py20
-rw-r--r--var/spack/repos/builtin/packages/libhio/package.py6
-rw-r--r--var/spack/repos/builtin/packages/libice/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libiconv/package.py1
-rw-r--r--var/spack/repos/builtin/packages/libiscsi/package.py28
-rw-r--r--var/spack/repos/builtin/packages/liblbxutil/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libmesh/package.py5
-rw-r--r--var/spack/repos/builtin/packages/libnetworkit/0001-Name-agnostic-import-of-tlx-library.patch17
-rw-r--r--var/spack/repos/builtin/packages/libnetworkit/package.py44
-rw-r--r--var/spack/repos/builtin/packages/libnotify/docbook-location.patch11
-rw-r--r--var/spack/repos/builtin/packages/libnotify/package.py57
-rw-r--r--var/spack/repos/builtin/packages/liboldx/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libsm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libsndfile/package.py40
-rw-r--r--var/spack/repos/builtin/packages/libspatialite/package.py2
-rw-r--r--var/spack/repos/builtin/packages/libssh2/package.py6
-rw-r--r--var/spack/repos/builtin/packages/libtlx/package.py28
-rw-r--r--var/spack/repos/builtin/packages/libtree/package.py20
-rw-r--r--var/spack/repos/builtin/packages/libunistring/package.py2
-rw-r--r--var/spack/repos/builtin/packages/libunwind/package.py25
-rw-r--r--var/spack/repos/builtin/packages/libwebp/package.py2
-rw-r--r--var/spack/repos/builtin/packages/libwindowswm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libx11/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxau/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxaw/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxaw3d/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxcomposite/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxcursor/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxdamage/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxdmcp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxevie/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxext/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxfixes/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxfont/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxfont2/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxfontcache/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxft/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxi/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxinerama/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxkbfile/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxkbui/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxml2/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxmu/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxpm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxpresent/package.py17
-rw-r--r--var/spack/repos/builtin/packages/libxprintapputil/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxprintutil/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxrandr/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxrender/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxres/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxscrnsaver/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxshmfence/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxslt/package.py2
-rw-r--r--var/spack/repos/builtin/packages/libxsmm/package.py5
-rw-r--r--var/spack/repos/builtin/packages/libxt/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxtrap/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxtst/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxv/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxvmc/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxxf86dga/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxxf86misc/package.py4
-rw-r--r--var/spack/repos/builtin/packages/libxxf86vm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/likwid/package.py13
-rw-r--r--var/spack/repos/builtin/packages/listres/package.py4
-rw-r--r--var/spack/repos/builtin/packages/lksctp-tools/package.py20
-rw-r--r--var/spack/repos/builtin/packages/llvm/package.py468
-rw-r--r--var/spack/repos/builtin/packages/lmbench/package.py30
-rw-r--r--var/spack/repos/builtin/packages/lmod/package.py19
-rw-r--r--var/spack/repos/builtin/packages/lndir/package.py4
-rw-r--r--var/spack/repos/builtin/packages/lua-luaposix/package.py1
-rw-r--r--var/spack/repos/builtin/packages/lua/package.py69
-rw-r--r--var/spack/repos/builtin/packages/luit/package.py4
-rw-r--r--var/spack/repos/builtin/packages/lvm2/package.py4
-rw-r--r--var/spack/repos/builtin/packages/magma/package.py25
-rw-r--r--var/spack/repos/builtin/packages/makedepend/package.py4
-rw-r--r--var/spack/repos/builtin/packages/margo/package.py2
-rw-r--r--var/spack/repos/builtin/packages/mariadb/package.py1
-rw-r--r--var/spack/repos/builtin/packages/mathematica/package.py6
-rw-r--r--var/spack/repos/builtin/packages/med/package.py6
-rw-r--r--var/spack/repos/builtin/packages/mesa-glu/package.py1
-rw-r--r--var/spack/repos/builtin/packages/mesa/package.py8
-rw-r--r--var/spack/repos/builtin/packages/meson/package.py13
-rw-r--r--var/spack/repos/builtin/packages/meson/rpath-0.49.patch20
-rw-r--r--var/spack/repos/builtin/packages/meson/rpath-0.54.patch20
-rw-r--r--var/spack/repos/builtin/packages/meson/rpath.patch11
-rw-r--r--var/spack/repos/builtin/packages/minigan/package.py28
-rw-r--r--var/spack/repos/builtin/packages/mkfontdir/package.py4
-rw-r--r--var/spack/repos/builtin/packages/mkfontscale/package.py4
-rw-r--r--var/spack/repos/builtin/packages/mofem-cephas/package.py2
-rw-r--r--var/spack/repos/builtin/packages/mono/package.py4
-rw-r--r--var/spack/repos/builtin/packages/mothur/package.py2
-rw-r--r--var/spack/repos/builtin/packages/motif/package.py1
-rw-r--r--var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_0.patch (renamed from var/spack/repos/builtin/packages/netcdf-fortran/nag.patch)14
-rw-r--r--var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_1.patch71
-rw-r--r--var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_2.patch11
-rw-r--r--var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.6.patch69
-rw-r--r--var/spack/repos/builtin/packages/mpich/package.py44
-rw-r--r--var/spack/repos/builtin/packages/mpip/package.py24
-rw-r--r--var/spack/repos/builtin/packages/mrbench/package.py23
-rw-r--r--var/spack/repos/builtin/packages/mrcpp/package.py46
-rw-r--r--var/spack/repos/builtin/packages/mumps/package.py2
-rw-r--r--var/spack/repos/builtin/packages/munge/package.py16
-rw-r--r--var/spack/repos/builtin/packages/muscle/package.py27
-rw-r--r--var/spack/repos/builtin/packages/mvapich2/package.py3
-rw-r--r--var/spack/repos/builtin/packages/mxnet/package.py2
-rw-r--r--var/spack/repos/builtin/packages/nag/package.py2
-rw-r--r--var/spack/repos/builtin/packages/nano/package.py7
-rw-r--r--var/spack/repos/builtin/packages/nanomsg/package.py17
-rw-r--r--var/spack/repos/builtin/packages/nccl-tests/package.py36
-rw-r--r--var/spack/repos/builtin/packages/nccl/package.py1
-rw-r--r--var/spack/repos/builtin/packages/ncl/package.py4
-rw-r--r--var/spack/repos/builtin/packages/ncurses/package.py3
-rw-r--r--var/spack/repos/builtin/packages/netcdf-c/package.py48
-rw-r--r--var/spack/repos/builtin/packages/netcdf-cxx4/package.py65
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/excessive_linking.patch312
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/logging.patch13
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.2.patch124
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.6.patch96
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/nag_testing.patch11
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/package.py67
-rw-r--r--var/spack/repos/builtin/packages/nfs-ganesha/package.py29
-rw-r--r--var/spack/repos/builtin/packages/nfs-utils/package.py34
-rw-r--r--var/spack/repos/builtin/packages/nlopt/package.py1
-rw-r--r--var/spack/repos/builtin/packages/ntirpc/package.py22
-rw-r--r--var/spack/repos/builtin/packages/numamma/package.py29
-rw-r--r--var/spack/repos/builtin/packages/numap/package.py20
-rw-r--r--var/spack/repos/builtin/packages/ocaml/package.py11
-rw-r--r--var/spack/repos/builtin/packages/oclock/package.py4
-rw-r--r--var/spack/repos/builtin/packages/onednn/package.py100
-rw-r--r--var/spack/repos/builtin/packages/opam/package.py26
-rw-r--r--var/spack/repos/builtin/packages/open-isns/package.py29
-rw-r--r--var/spack/repos/builtin/packages/openblas/lapack-0.3.9-xerbl.patch14
-rw-r--r--var/spack/repos/builtin/packages/openblas/package.py50
-rw-r--r--var/spack/repos/builtin/packages/opencv/package.py34
-rw-r--r--var/spack/repos/builtin/packages/opendx/package.py20
-rw-r--r--var/spack/repos/builtin/packages/openfoam-org/package.py22
-rwxr-xr-xvar/spack/repos/builtin/packages/openfoam/common/spack-Allwmake9
-rw-r--r--var/spack/repos/builtin/packages/openfoam/package.py9
-rw-r--r--var/spack/repos/builtin/packages/openjdk/package.py45
-rw-r--r--var/spack/repos/builtin/packages/openmm/package.py48
-rw-r--r--var/spack/repos/builtin/packages/openmpi/nag_ltmain_1.patch49
-rw-r--r--var/spack/repos/builtin/packages/openmpi/nag_ltmain_2.patch49
-rw-r--r--var/spack/repos/builtin/packages/openmpi/nag_ltmain_3.patch40
-rw-r--r--var/spack/repos/builtin/packages/openmpi/nag_ltmain_4.patch49
-rwxr-xr-xvar/spack/repos/builtin/packages/openmpi/nolegacylaunchers.sh6
-rw-r--r--var/spack/repos/builtin/packages/openmpi/package.py13
-rw-r--r--var/spack/repos/builtin/packages/openpmd-api/hdf5-1.12.0.patch23
-rw-r--r--var/spack/repos/builtin/packages/openpmd-api/package.py6
-rw-r--r--var/spack/repos/builtin/packages/openspeedshop/package.py2
-rw-r--r--var/spack/repos/builtin/packages/openssl/package.py3
-rw-r--r--var/spack/repos/builtin/packages/opensubdiv/package.py85
-rw-r--r--var/spack/repos/builtin/packages/otf2/package.py3
-rw-r--r--var/spack/repos/builtin/packages/papi/package.py85
-rw-r--r--var/spack/repos/builtin/packages/parallel-netcdf/nag_libtool.patch69
-rw-r--r--var/spack/repos/builtin/packages/parallel-netcdf/package.py84
-rw-r--r--var/spack/repos/builtin/packages/paraview/package.py1
-rw-r--r--var/spack/repos/builtin/packages/pdt/package.py5
-rw-r--r--var/spack/repos/builtin/packages/perfstubs/package.py34
-rw-r--r--var/spack/repos/builtin/packages/perl-want/package.py2
-rw-r--r--var/spack/repos/builtin/packages/petsc/package.py31
-rw-r--r--var/spack/repos/builtin/packages/pfft/package.py28
-rw-r--r--var/spack/repos/builtin/packages/pfunit/package.py9
-rw-r--r--var/spack/repos/builtin/packages/pgi/package.py4
-rw-r--r--var/spack/repos/builtin/packages/php/package.py41
-rw-r--r--var/spack/repos/builtin/packages/phylobayesmpi/package.py31
-rw-r--r--var/spack/repos/builtin/packages/pinentry/package.py47
-rw-r--r--var/spack/repos/builtin/packages/plumed/package.py6
-rw-r--r--var/spack/repos/builtin/packages/pmix/package.py10
-rw-r--r--var/spack/repos/builtin/packages/pocl/package.py6
-rw-r--r--var/spack/repos/builtin/packages/podio/package.py58
-rw-r--r--var/spack/repos/builtin/packages/poppler/package.py2
-rw-r--r--var/spack/repos/builtin/packages/portage/package.py2
-rwxr-xr-xvar/spack/repos/builtin/packages/ppopen-appl-bem-at/duplicate_defs.patch13
-rw-r--r--var/spack/repos/builtin/packages/ppopen-appl-bem-at/package.py58
-rw-r--r--var/spack/repos/builtin/packages/ppopen-appl-bem/package.py79
-rwxr-xr-xvar/spack/repos/builtin/packages/ppopen-appl-fem/gcc_struct_atomic.patch69
-rw-r--r--var/spack/repos/builtin/packages/ppopen-appl-fem/package.py63
-rw-r--r--var/spack/repos/builtin/packages/ppopen-appl-fvm/package.py63
-rw-r--r--var/spack/repos/builtin/packages/ppopen-at/package.py28
-rw-r--r--var/spack/repos/builtin/packages/ppopen-math-mp/package.py51
-rw-r--r--var/spack/repos/builtin/packages/ppopen-math-vis/package.py45
-rw-r--r--var/spack/repos/builtin/packages/precice/package.py2
-rw-r--r--var/spack/repos/builtin/packages/presentproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/primer3/package.py18
-rw-r--r--var/spack/repos/builtin/packages/printproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/procps/package.py4
-rw-r--r--var/spack/repos/builtin/packages/protobuf/package.py3
-rw-r--r--var/spack/repos/builtin/packages/proxymngr/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-apptools/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-args/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-arviz/package.py26
-rw-r--r--var/spack/repos/builtin/packages/py-astpretty/package.py21
-rw-r--r--var/spack/repos/builtin/packages/py-astropy-helpers/package.py21
-rw-r--r--var/spack/repos/builtin/packages/py-attrs/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-audioread/package.py21
-rw-r--r--var/spack/repos/builtin/packages/py-auxlib/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-awesome-slugify/package.py21
-rw-r--r--var/spack/repos/builtin/packages/py-backports-weakref/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-basis-set-exchange/package.py33
-rw-r--r--var/spack/repos/builtin/packages/py-bx-python/package.py15
-rw-r--r--var/spack/repos/builtin/packages/py-clint/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-cmake-format/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-cnvkit/package.py28
-rw-r--r--var/spack/repos/builtin/packages/py-colorlog/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-colorpy/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-contextlib2/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-cyvcf2/package.py25
-rw-r--r--var/spack/repos/builtin/packages/py-d2to1/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-decorator/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-deprecated/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-dgl/package.py128
-rw-r--r--var/spack/repos/builtin/packages/py-dill/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-diskcache/package.py16
-rw-r--r--var/spack/repos/builtin/packages/py-ecdsa/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-envisage/package.py25
-rw-r--r--var/spack/repos/builtin/packages/py-ephem/package.py16
-rw-r--r--var/spack/repos/builtin/packages/py-espressopp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-exodus-bundler/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-flake8-polyfill/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-gensim/package.py25
-rw-r--r--var/spack/repos/builtin/packages/py-git-review/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-gluoncv/no-unicode-readme.patch11
-rw-r--r--var/spack/repos/builtin/packages/py-gluoncv/package.py36
-rw-r--r--var/spack/repos/builtin/packages/py-google-auth-oauthlib/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-gpaw/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-grpcio/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-h5glance/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-h5py/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-hatchet/package.py27
-rw-r--r--var/spack/repos/builtin/packages/py-hdfs/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-horovod/fma.patch52
-rw-r--r--var/spack/repos/builtin/packages/py-horovod/package.py130
-rw-r--r--var/spack/repos/builtin/packages/py-humanfriendly/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-hypothesis/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-ics/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-ipython/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-ipywidgets/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-jprops/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-jupyter-console/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-jupyter-core/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-librosa/package.py27
-rw-r--r--var/spack/repos/builtin/packages/py-llvmlite/package.py11
-rw-r--r--var/spack/repos/builtin/packages/py-matplotlib/package.py13
-rw-r--r--var/spack/repos/builtin/packages/py-mayavi/package.py23
-rw-r--r--var/spack/repos/builtin/packages/py-memory-profiler/package.py7
-rw-r--r--var/spack/repos/builtin/packages/py-merlin/package.py31
-rw-r--r--var/spack/repos/builtin/packages/py-merlinwf/package.py38
-rw-r--r--var/spack/repos/builtin/packages/py-multiprocess/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-neobolt/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-neotime/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-networkx/package.py27
-rw-r--r--var/spack/repos/builtin/packages/py-notebook/package.py56
-rw-r--r--var/spack/repos/builtin/packages/py-numba/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-numpy/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-onnx/package.py9
-rw-r--r--var/spack/repos/builtin/packages/py-onnx/remove_dllexport_decl.patch11
-rw-r--r--var/spack/repos/builtin/packages/py-pep8-naming/package.py11
-rw-r--r--var/spack/repos/builtin/packages/py-petastorm/package.py30
-rw-r--r--var/spack/repos/builtin/packages/py-petsc4py/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pomegranate/package.py23
-rw-r--r--var/spack/repos/builtin/packages/py-portalocker/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-progress/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-progressbar2/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-py2neo/package.py22
-rw-r--r--var/spack/repos/builtin/packages/py-pyarrow/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pybind11/package.py12
-rw-r--r--var/spack/repos/builtin/packages/py-pycairo/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-pycifrw/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-pycosat/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-pydeps/package.py19
-rw-r--r--var/spack/repos/builtin/packages/py-pyelftools/package.py5
-rw-r--r--var/spack/repos/builtin/packages/py-pyface/package.py33
-rw-r--r--var/spack/repos/builtin/packages/py-pyfftw/package.py9
-rw-r--r--var/spack/repos/builtin/packages/py-pyfits/package.py19
-rw-r--r--var/spack/repos/builtin/packages/py-pygdal/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pymc3/package.py29
-rw-r--r--var/spack/repos/builtin/packages/py-pyqt4/package.py62
-rw-r--r--var/spack/repos/builtin/packages/py-pyqt5/package.py70
-rw-r--r--var/spack/repos/builtin/packages/py-pyspark/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-pytest/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-pythia/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-python-lzo/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-python-swiftclient/package.py29
-rw-r--r--var/spack/repos/builtin/packages/py-python-utils/package.py6
-rw-r--r--var/spack/repos/builtin/packages/py-pywcs/package.py24
-rw-r--r--var/spack/repos/builtin/packages/py-qtconsole/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-requests-futures/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-resampy/package.py21
-rw-r--r--var/spack/repos/builtin/packages/py-resultsfile/package.py22
-rw-r--r--var/spack/repos/builtin/packages/py-rseqc/package.py14
-rw-r--r--var/spack/repos/builtin/packages/py-sacremoses/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-scoop/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-sentencepiece/package.py24
-rw-r--r--var/spack/repos/builtin/packages/py-setproctitle/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-setuptools-rust/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-simplejson/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-sip/package.py15
-rw-r--r--var/spack/repos/builtin/packages/py-six/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-slepc4py/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-smart-open/package.py8
-rw-r--r--var/spack/repos/builtin/packages/py-sonlib/package.py28
-rw-r--r--var/spack/repos/builtin/packages/py-soundfile/package.py23
-rw-r--r--var/spack/repos/builtin/packages/py-spatialist/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-spatialite/package.py20
-rw-r--r--var/spack/repos/builtin/packages/py-sphinx/package.py3
-rw-r--r--var/spack/repos/builtin/packages/py-statsmodels/package.py25
-rw-r--r--var/spack/repos/builtin/packages/py-stdlib-list/package.py18
-rw-r--r--var/spack/repos/builtin/packages/py-stsci-distutils/package.py19
-rw-r--r--var/spack/repos/builtin/packages/py-tblib/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-tensorboard-plugin-wit/package.py63
-rw-r--r--var/spack/repos/builtin/packages/py-tensorboard/package.py67
-rw-r--r--var/spack/repos/builtin/packages/py-tensorboardx/package.py24
-rw-r--r--var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py45
-rw-r--r--var/spack/repos/builtin/packages/py-tensorflow/0001-Remove-contrib-cloud-bigtable-and-storage-ops-kernel.patch76
-rw-r--r--var/spack/repos/builtin/packages/py-tensorflow/package.py35
-rw-r--r--var/spack/repos/builtin/packages/py-testinfra/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-tfdlpack/package.py45
-rw-r--r--var/spack/repos/builtin/packages/py-tokenizers/package.py23
-rw-r--r--var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py41
-rw-r--r--var/spack/repos/builtin/packages/py-torch/package.py33
-rw-r--r--var/spack/repos/builtin/packages/py-torchaudio/package.py26
-rw-r--r--var/spack/repos/builtin/packages/py-torchsummary/package.py21
-rw-r--r--var/spack/repos/builtin/packages/py-torchtext/package.py24
-rw-r--r--var/spack/repos/builtin/packages/py-traits/package.py16
-rw-r--r--var/spack/repos/builtin/packages/py-traitsui/package.py36
-rw-r--r--var/spack/repos/builtin/packages/py-transformers/package.py29
-rw-r--r--var/spack/repos/builtin/packages/py-tuiview/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-unidecode/package.py19
-rw-r--r--var/spack/repos/builtin/packages/py-usgs/package.py4
-rw-r--r--var/spack/repos/builtin/packages/py-utils/package.py19
-rw-r--r--var/spack/repos/builtin/packages/py-uwsgi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/py-vcf-kit/package.py42
-rw-r--r--var/spack/repos/builtin/packages/py-versioneer/package.py21
-rw-r--r--var/spack/repos/builtin/packages/py-widgetsnbextension/package.py1
-rw-r--r--var/spack/repos/builtin/packages/py-yahmm/package.py22
-rw-r--r--var/spack/repos/builtin/packages/py-youtube-dl/package.py19
-rw-r--r--var/spack/repos/builtin/packages/python/package.py8
-rw-r--r--var/spack/repos/builtin/packages/qca/package.py6
-rw-r--r--var/spack/repos/builtin/packages/qgis/package.py219
-rw-r--r--var/spack/repos/builtin/packages/qgis/pyqt5.patch25
-rw-r--r--var/spack/repos/builtin/packages/qmcpack/package.py123
-rw-r--r--var/spack/repos/builtin/packages/qrupdate/package.py26
-rw-r--r--var/spack/repos/builtin/packages/qscintilla/package.py78
-rw-r--r--var/spack/repos/builtin/packages/qt/package.py7
-rw-r--r--var/spack/repos/builtin/packages/quantum-espresso/package.py26
-rw-r--r--var/spack/repos/builtin/packages/r-openssl/package.py5
-rw-r--r--var/spack/repos/builtin/packages/r-remotes/package.py3
-rw-r--r--var/spack/repos/builtin/packages/r-sys/package.py5
-rw-r--r--var/spack/repos/builtin/packages/r/change_optflags_tmp.patch67
-rw-r--r--var/spack/repos/builtin/packages/r/package.py7
-rw-r--r--var/spack/repos/builtin/packages/randrproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/range-v3/package.py1
-rw-r--r--var/spack/repos/builtin/packages/rankstr/package.py4
-rw-r--r--var/spack/repos/builtin/packages/recordproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/redset/package.py4
-rw-r--r--var/spack/repos/builtin/packages/rendercheck/package.py4
-rw-r--r--var/spack/repos/builtin/packages/renderproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/resourceproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/revbayes/package.py19
-rw-r--r--var/spack/repos/builtin/packages/rgb/package.py4
-rw-r--r--var/spack/repos/builtin/packages/ripgrep/package.py31
-rw-r--r--var/spack/repos/builtin/packages/root/package.py23
-rw-r--r--var/spack/repos/builtin/packages/rstart/package.py4
-rw-r--r--var/spack/repos/builtin/packages/rust/package.py554
-rw-r--r--var/spack/repos/builtin/packages/samtools/package.py4
-rw-r--r--var/spack/repos/builtin/packages/scr/package.py13
-rw-r--r--var/spack/repos/builtin/packages/scripts/package.py4
-rw-r--r--var/spack/repos/builtin/packages/scrnsaverproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/seacas/package.py2
-rw-r--r--var/spack/repos/builtin/packages/sentencepiece/package.py20
-rw-r--r--var/spack/repos/builtin/packages/sessreg/package.py4
-rw-r--r--var/spack/repos/builtin/packages/setxkbmap/package.py4
-rw-r--r--var/spack/repos/builtin/packages/sfcgal/package.py4
-rw-r--r--var/spack/repos/builtin/packages/shark/package.py25
-rw-r--r--var/spack/repos/builtin/packages/showfont/package.py4
-rw-r--r--var/spack/repos/builtin/packages/shuffile/package.py4
-rw-r--r--var/spack/repos/builtin/packages/silo/package.py29
-rw-r--r--var/spack/repos/builtin/packages/singularity/package.py1
-rw-r--r--var/spack/repos/builtin/packages/sirius/package.py6
-rw-r--r--var/spack/repos/builtin/packages/slepc/package.py32
-rw-r--r--var/spack/repos/builtin/packages/slurm/package.py11
-rw-r--r--var/spack/repos/builtin/packages/smproxy/package.py4
-rw-r--r--var/spack/repos/builtin/packages/sonlib/package.py47
-rw-r--r--var/spack/repos/builtin/packages/source-highlight/package.py21
-rw-r--r--var/spack/repos/builtin/packages/spath/package.py34
-rw-r--r--var/spack/repos/builtin/packages/spdlog/package.py2
-rw-r--r--var/spack/repos/builtin/packages/spiral/package.py65
-rw-r--r--var/spack/repos/builtin/packages/sqlite/package.py2
-rw-r--r--var/spack/repos/builtin/packages/sshpass/package.py29
-rw-r--r--var/spack/repos/builtin/packages/ssht/float_conversion.patch11
-rw-r--r--var/spack/repos/builtin/packages/ssht/package.py31
-rw-r--r--var/spack/repos/builtin/packages/stat/package.py2
-rw-r--r--var/spack/repos/builtin/packages/suite-sparse/package.py5
-rw-r--r--var/spack/repos/builtin/packages/superlu-dist/package.py1
-rw-r--r--var/spack/repos/builtin/packages/swig/package.py1
-rw-r--r--var/spack/repos/builtin/packages/symengine/package.py3
-rw-r--r--var/spack/repos/builtin/packages/sz/package.py94
-rw-r--r--var/spack/repos/builtin/packages/tar/package.py4
-rw-r--r--var/spack/repos/builtin/packages/tau/package.py52
-rw-r--r--var/spack/repos/builtin/packages/tcsh/package.py9
-rw-r--r--var/spack/repos/builtin/packages/the-silver-searcher/package.py1
-rw-r--r--var/spack/repos/builtin/packages/tixi/package.py24
-rw-r--r--var/spack/repos/builtin/packages/tmux/package.py10
-rw-r--r--var/spack/repos/builtin/packages/transset/package.py4
-rw-r--r--var/spack/repos/builtin/packages/trapproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/tree/package.py5
-rw-r--r--var/spack/repos/builtin/packages/triangle/package.py2
-rw-r--r--var/spack/repos/builtin/packages/trilinos/fix_clang_errors_12_18_1.patch39
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py68
-rw-r--r--var/spack/repos/builtin/packages/twm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/uchardet/package.py29
-rw-r--r--var/spack/repos/builtin/packages/ucx/package.py41
-rw-r--r--var/spack/repos/builtin/packages/umpire/package.py14
-rw-r--r--var/spack/repos/builtin/packages/unifyfs/auto-mount.patch25
-rw-r--r--var/spack/repos/builtin/packages/unifyfs/package.py5
-rw-r--r--var/spack/repos/builtin/packages/unixodbc/package.py2
-rw-r--r--var/spack/repos/builtin/packages/unqlite/0001-Removed-the-STATIC-key-word-to-enable-building-a-sha.patch26
-rw-r--r--var/spack/repos/builtin/packages/unqlite/package.py25
-rw-r--r--var/spack/repos/builtin/packages/upcxx/package.py109
-rw-r--r--var/spack/repos/builtin/packages/uqtk/package.py20
-rw-r--r--var/spack/repos/builtin/packages/userspace-rcu/examples.patch13
-rw-r--r--var/spack/repos/builtin/packages/userspace-rcu/package.py31
-rw-r--r--var/spack/repos/builtin/packages/util-linux/package.py14
-rw-r--r--var/spack/repos/builtin/packages/util-macros/package.py4
-rw-r--r--var/spack/repos/builtin/packages/valgrind/package.py4
-rw-r--r--var/spack/repos/builtin/packages/veccore/package.py40
-rw-r--r--var/spack/repos/builtin/packages/vecgeom/package.py112
-rw-r--r--var/spack/repos/builtin/packages/verrou/package.py12
-rw-r--r--var/spack/repos/builtin/packages/videoproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/viewres/package.py4
-rw-r--r--var/spack/repos/builtin/packages/vmd/package.py42
-rw-r--r--var/spack/repos/builtin/packages/votca-csg-tutorials/package.py5
-rw-r--r--var/spack/repos/builtin/packages/votca-csg/package.py5
-rw-r--r--var/spack/repos/builtin/packages/votca-csgapps/package.py5
-rw-r--r--var/spack/repos/builtin/packages/votca-ctp/package.py2
-rw-r--r--var/spack/repos/builtin/packages/votca-tools/package.py11
-rw-r--r--var/spack/repos/builtin/packages/votca-xtp/package.py5
-rw-r--r--var/spack/repos/builtin/packages/warpx/package.py76
-rw-r--r--var/spack/repos/builtin/packages/wget/package.py2
-rw-r--r--var/spack/repos/builtin/packages/windowswmproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/x11perf/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xauth/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xbacklight/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xbiff/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xbitmaps/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xcalc/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xcfun/package.py37
-rw-r--r--var/spack/repos/builtin/packages/xclipboard/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xclock/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xcmiscproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xcmsdb/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xcompmgr/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xconsole/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xcursor-themes/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xcursorgen/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xdbedizzy/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xditview/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xdm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xdpyinfo/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xdriinfo/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xedit/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xerces-c/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xev/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xextproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xeyes/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xf86bigfontproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xf86dga/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xf86dgaproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xf86driproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xf86miscproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xf86rushproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xf86vidmodeproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xfd/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xfindproxy/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xfontsel/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xfs/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xfsinfo/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xfwp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xgamma/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xgboost/package.py2
-rw-r--r--var/spack/repos/builtin/packages/xgc/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xhost/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xineramaproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xinit/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xinput/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xios/bld_extern_1.x.patch27
-rw-r--r--var/spack/repos/builtin/packages/xios/package.py7
-rw-r--r--var/spack/repos/builtin/packages/xkbcomp/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xkbdata/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xkbevd/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xkbprint/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xkbutils/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xkeyboard-config/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xkill/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xload/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xlogo/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xlsatoms/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xlsclients/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xlsfonts/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xmag/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xman/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xmessage/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xmh/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xmodmap/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xmore/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xorg-cf-files/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xorg-docs/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xorg-gtest/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xorg-server/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xphelloworld/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xplsprinters/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xpr/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xprehashprinterlist/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xprop/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xproto/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xrandr/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xrdb/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xrefresh/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xrootd/package.py1
-rw-r--r--var/spack/repos/builtin/packages/xrx/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xsbench/package.py10
-rw-r--r--var/spack/repos/builtin/packages/xscope/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xsdk-examples/package.py39
-rw-r--r--var/spack/repos/builtin/packages/xset/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xsetmode/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xsetpointer/package.py10
-rw-r--r--var/spack/repos/builtin/packages/xsetroot/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xsm/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xstdcmap/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xtrans/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xtrap/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xts/package.py23
-rw-r--r--var/spack/repos/builtin/packages/xvidtune/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xvinfo/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xwd/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xwininfo/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xwud/package.py4
-rw-r--r--var/spack/repos/builtin/packages/xz/package.py3
-rw-r--r--var/spack/repos/builtin/packages/yaml-cpp/package.py14
-rw-r--r--var/spack/repos/builtin/packages/yarn/package.py22
-rw-r--r--var/spack/repos/builtin/packages/z3/package.py1
-rw-r--r--var/spack/repos/builtin/packages/zfs/package.py28
891 files changed, 17056 insertions, 3859 deletions
diff --git a/.flake8_packages b/.flake8_packages
index d17a34951d..fc2dbf98af 100644
--- a/.flake8_packages
+++ b/.flake8_packages
@@ -9,7 +9,7 @@
#
# Note that we also add *per-line* exemptions for certain patterns in the
# `spack flake8` command. This is where F403 for `from spack import *`
-# is added (beause we *only* allow that wildcard).
+# is added (because we *only* allow that wildcard).
#
# See .flake8 for regular exceptions.
#
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index f647b52036..9a568285ea 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,14 +1,11 @@
---
-name: Bug report
-about: Report a bug in the core of Spack (command not working as expected, etc.)
-labels: bug
+name: "\U0001F41E Bug report"
+about: Report a bug in the core of Spack (command not working as expected, etc.)
+labels: "bug,triage"
---
-
-*Explain, in a clear and concise way, the command you ran and the result you were trying to achieve.
-Example: "I ran Spack find to list all the installed packages and..."*
-
-
+<!-- Explain, in a clear and concise way, the command you ran and the result you were trying to achieve.
+Example: "I ran `spack find` to list all the installed packages and ..." -->
### Steps to reproduce the issue
@@ -20,30 +17,26 @@ $ spack <command2> <spec>
### Error Message
-If Spack reported an error, provide the error message. If it did not report an error
-but the output appears incorrect, provide the incorrect output. If there was no error
-message and no output but the result is incorrect, describe how it does not match
-what you expect. To provide more information you might re-run the commands with
-the additional -d/--stacktrace flags:
+<!-- If Spack reported an error, provide the error message. If it did not report an error but the output appears incorrect, provide the incorrect output. If there was no error message and no output but the result is incorrect, describe how it does not match what you expect. -->
```console
-$ spack -d --stacktrace <command1> <spec>
-$ spack -d --stacktrace <command2> <spec>
-...
+$ spack --debug --stacktrace <command>
```
-that activate the full debug output.
-
### Information on your system
-This includes:
+<!-- Please include the output of `spack debug report` -->
+
+<!-- If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well. -->
- 1. which platform you are using
- 2. any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.)
+### Additional information
------
+<!-- These boxes can be checked by replacing [ ] with [x] or by clicking them after submitting the issue. -->
+- [ ] I have run `spack debug report` and reported the version of Spack/Python/Platform
+- [ ] I have searched the issues of this repo and believe this is not a duplicate
+- [ ] I have run the failing commands in debug mode and reported the output
-We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
+<!-- We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
-Other than that, thanks for taking the time to contribute to Spack!
+Other than that, thanks for taking the time to contribute to Spack! -->
diff --git a/.github/ISSUE_TEMPLATE/build_error.md b/.github/ISSUE_TEMPLATE/build_error.md
index 3f36cf93cb..d26db233d3 100644
--- a/.github/ISSUE_TEMPLATE/build_error.md
+++ b/.github/ISSUE_TEMPLATE/build_error.md
@@ -1,78 +1,43 @@
---
-name: Build error
-about: Some package in Spack didn't build correctly
+name: "\U0001F4A5 Build error"
+about: Some package in Spack didn't build correctly
+title: "Installation issue: "
labels: "build-error"
---
-*Thanks for taking the time to report this build failure. To proceed with the
-report please:*
+<!-- Thanks for taking the time to report this build failure. To proceed with the report please:
+
1. Title the issue "Installation issue: <name-of-the-package>".
2. Provide the information required below.
-3. Remove the template instructions before posting the issue.
-
-We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
-
----
+We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively! -->
### Steps to reproduce the issue
+<!-- Fill in the exact spec you are trying to build and the relevant part of the error message -->
```console
-$ spack install <spec> # Fill in the exact spec you are using
-... # and the relevant part of the error message
+$ spack install <spec>
+...
```
-### Platform and user environment
+### Information on your system
-Please report your OS here:
-```commandline
-$ uname -a
-Linux nuvolari 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
-$ lsb_release -d
-Description: Ubuntu 18.04.1 LTS
-```
-and, if relevant, post or attach:
+<!-- Please include the output of `spack debug report` -->
-- `packages.yaml`
-- `compilers.yaml`
-
-to the issue
+<!-- If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well. -->
### Additional information
-Sometimes the issue benefits from additional details. In these cases there are
-a few things we can suggest doing. First of all, you can post the full output of:
-```console
-$ spack spec --install-status <spec>
-...
-```
-to show people whether Spack installed a faulty software or if it was not able to
-build it at all.
+<!-- Please upload the following files. They should be present in the stage directory of the failing build. Also upload any config.log or similar file if one exists. -->
+* [spack-build-out.txt]()
+* [spack-build-env.txt]()
-If your build didn't make it past the configure stage, Spack as also commands to parse
-logs and report error and warning messages:
-```console
-$ spack log-parse --show=errors,warnings <file-to-parse>
-```
-You might want to run this command on the `config.log` or any other similar file
-found in the stage directory:
-```console
-$ spack location -s <spec>
-```
-In case in `config.log` there are other settings that you think might be the cause
-of the build failure, you can consider attaching the file to this issue.
-
-Rebuilding the package with the following options:
-```console
-$ spack -d install -j 1 <spec>
-...
-```
-will provide additional debug information. After the failure you will find two files in the current directory:
+<!-- Some packages have maintainers who have volunteered to debug build failures. Run `spack maintainers <name-of-the-package>` and @mention them here if they exist. -->
-1. `spack-cc-<spec>.in`, which contains details on the command given in input
- to Spack's compiler wrapper
-1. `spack-cc-<spec>.out`, which contains the command used to compile / link the
- failed object after Spack's compiler wrapper did its processing
+### General information
-You can post or attach those files to provide maintainers with more information on what
-is causing the failure.
+<!-- These boxes can be checked by replacing [ ] with [x] or by clicking them after submitting the issue. -->
+- [ ] I have run `spack debug report` and reported the version of Spack/Python/Platform
+- [ ] I have run `spack maintainers <name-of-the-package>` and @mentioned any maintainers
+- [ ] I have uploaded the build log and environment files
+- [ ] I have searched the issues of this repo and believe this is not a duplicate
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index 35481fecb7..b6e5e27e6f 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,28 +1,33 @@
---
-name: Feature request
+name: "\U0001F38A Feature request"
about: Suggest adding a feature that is not yet in Spack
labels: feature
---
-*Please add a concise summary of your suggestion here.*
+<!--*Please add a concise summary of your suggestion here.*-->
### Rationale
-*Is your feature request related to a problem? Please describe it!*
+<!--*Is your feature request related to a problem? Please describe it!*-->
### Description
-*Describe the solution you'd like and the alternatives you have considered.*
+<!--*Describe the solution you'd like and the alternatives you have considered.*-->
### Additional information
-*Add any other context about the feature request here.*
+<!--*Add any other context about the feature request here.*-->
------
+### General information
+- [ ] I have run `spack --version` and reported the version of Spack
+- [ ] I have searched the issues of this repo and believe this is not a duplicate
-If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
-Other than that, thanks for taking the time to contribute to Spack! \ No newline at end of file
+
+<!--If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
+
+Other than that, thanks for taking the time to contribute to Spack!
+--> \ No newline at end of file
diff --git a/.github/workflows/linux_build_tests.yaml b/.github/workflows/linux_build_tests.yaml
index 27be6c3c18..d6f98a1627 100644
--- a/.github/workflows/linux_build_tests.yaml
+++ b/.github/workflows/linux_build_tests.yaml
@@ -18,6 +18,8 @@ on:
- '!var/spack/repos/builtin/packages/py-setuptools/**'
- '!var/spack/repos/builtin/packages/openjpeg/**'
- '!var/spack/repos/builtin/packages/r-rcpp/**'
+ # Don't run if we only modified documentation
+ - 'lib/spack/docs/**'
jobs:
build:
@@ -28,7 +30,7 @@ jobs:
matrix:
package: [lz4, mpich, tut, py-setuptools, openjpeg, r-rcpp]
steps:
- - uses: actions/checkout@v1
+ - uses: actions/checkout@v2
- name: Cache ccache's store
uses: actions/cache@v1
with:
@@ -42,6 +44,7 @@ jobs:
python-version: 3.8
- name: Install System Packages
run: |
+ sudo apt-get update
sudo apt-get -yqq install ccache gfortran perl perl-base r-base r-base-core r-base-dev findutils openssl libssl-dev libpciaccess-dev
R --version
perl --version
diff --git a/.github/workflows/minimum_python_versions.yaml b/.github/workflows/minimum_python_versions.yaml
index c55042ffa1..95bc9af358 100644
--- a/.github/workflows/minimum_python_versions.yaml
+++ b/.github/workflows/minimum_python_versions.yaml
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v1
+ - uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v1
with:
diff --git a/.gitignore b/.gitignore
index f5169a5405..da05b2bcf0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,8 +22,14 @@
.coverage
\#*
.#*
+.cache
lib/spack/spack/test/.cache
/bin/spackc
*.in.log
*.out.log
*.orig
+
+# Eclipse files
+.project
+.cproject
+.pydevproject
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f0ca19b30b..3ddd70bfab 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,7 +40,7 @@ This is a bugfix release on top of `v0.14.0`. Specific fixes include:
2. **Build pipelines.** You can also build in parallel through Gitlab
CI. Simply create a Spack environment and push it to Gitlab to build
- on Gitlab runners. Pipeline support is now integreated into a single
+ on Gitlab runners. Pipeline support is now integrated into a single
`spack ci` command, so setting it up is easier than ever. See the
[Pipelines section](https://spack.readthedocs.io/en/v0.14.0/pipelines.html)
in the docs.
@@ -140,8 +140,8 @@ RHEL8.
* mirror bugfixes: symlinks, duplicate patches, and exception handling (#13789)
* don't try to fetch `BundlePackages` (#13908)
* avoid re-fetching patches already added to a mirror (#13908)
-* avoid re-fetching alread added patches (#13908)
-* avoid re-fetching alread added patches (#13908)
+* avoid re-fetching already added patches (#13908)
+* avoid re-fetching already added patches (#13908)
* allow repeated invocations of `spack mirror create` on the same dir (#13908)
* bugfix for RHEL8 when `python` is unavailable (#14252)
* improve concretization performance in environments (#14190)
diff --git a/bin/spack-python b/bin/spack-python
index b81c8b7dbb..22141b46d6 100755
--- a/bin/spack-python
+++ b/bin/spack-python
@@ -22,4 +22,4 @@
#
# This is compatible across platforms.
#
-/usr/bin/env spack python "$@"
+exec /usr/bin/env spack python "$@"
diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml
index 32745a309a..cc51060eae 100644
--- a/etc/spack/defaults/config.yaml
+++ b/etc/spack/defaults/config.yaml
@@ -75,6 +75,12 @@ config:
misc_cache: ~/.spack/cache
+ # Timeout in seconds used for downloading sources etc. This only applies
+ # to the connection phase and can be increased for slow connections or
+ # servers. 0 means no timeout.
+ connect_timeout: 10
+
+
# If this is false, tools like curl that use SSL will not verify
# certifiates. (e.g., curl will use use the -k option)
verify_ssl: true
diff --git a/etc/spack/defaults/modules.yaml b/etc/spack/defaults/modules.yaml
index 77c976510b..5ae1b50fda 100644
--- a/etc/spack/defaults/modules.yaml
+++ b/etc/spack/defaults/modules.yaml
@@ -30,7 +30,11 @@ modules:
lib64:
- LIBRARY_PATH
include:
- - CPATH
+ - C_INCLUDE_PATH
+ - CPLUS_INCLUDE_PATH
+ # The INCLUDE env variable specifies paths to look for
+ # .mod file for Intel Fortran compilers
+ - INCLUDE
lib/pkgconfig:
- PKG_CONFIG_PATH
lib64/pkgconfig:
diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml
index 46aa5ad9ad..2c91b75e45 100644
--- a/etc/spack/defaults/packages.yaml
+++ b/etc/spack/defaults/packages.yaml
@@ -27,6 +27,7 @@ packages:
glx: [mesa+glx, opengl]
glu: [mesa-glu, openglu]
golang: [gcc]
+ iconv: [libiconv]
ipp: [intel-ipp]
java: [openjdk, jdk, ibm-java]
jpeg: [libjpeg-turbo, libjpeg]
diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst
index 56d60a29da..8acebeb0e6 100644
--- a/lib/spack/docs/basic_usage.rst
+++ b/lib/spack/docs/basic_usage.rst
@@ -25,6 +25,14 @@ It is recommended that the following be put in your ``.bashrc`` file:
alias less='less -R'
+If you do not see colorized output when using ``less -R`` it is because color
+is being disabled in the piped output. In this case, tell spack to force
+colorized output.
+
+.. code-block:: console
+
+ $ spack --color always | less -R
+
--------------------------
Listing available packages
--------------------------
@@ -45,7 +53,7 @@ can install:
.. command-output:: spack list
:ellipsis: 10
-There are thosands of them, so we've truncated the output above, but you
+There are thousands of them, so we've truncated the output above, but you
can find a :ref:`full list here <package-list>`.
Packages are listed by name in alphabetical order.
A pattern to match with no wildcards, ``*`` or ``?``,
@@ -267,7 +275,7 @@ the ``spack gc`` ("garbage collector") command, which will uninstall all unneede
-- linux-ubuntu18.04-broadwell / gcc@9.0.1 ----------------------
hdf5@1.10.5 libiconv@1.16 libpciaccess@0.13.5 libszip@2.1.1 libxml2@2.9.9 mpich@3.3.2 openjpeg@2.3.1 xz@5.2.4 zlib@1.2.11
-In the example above Spack went through all the packages in the DB
+In the example above Spack went through all the packages in the package database
and removed everything that is not either:
1. A package installed upon explicit request of the user
@@ -854,7 +862,7 @@ Variants are named options associated with a particular package. They are
optional, as each package must provide default values for each variant it
makes available. Variants can be specified using
a flexible parameter syntax ``name=<value>``. For example,
-``spack install libelf debug=True`` will install libelf build with debug
+``spack install libelf debug=True`` will install libelf built with debug
flags. The names of particular variants available for a package depend on
what was provided by the package author. ``spack info <package>`` will
provide information on what build variants are available.
@@ -917,7 +925,7 @@ contains any spaces. Any of ``cppflags=-O3``, ``cppflags="-O3"``,
``cppflags='-O3'``, and ``cppflags="-O3 -fPIC"`` are acceptable, but
``cppflags=-O3 -fPIC`` is not. Additionally, if the value of the
compiler flags is not the last thing on the line, it must be followed
-by a space. The commmand ``spack install libelf cppflags="-O3"%intel``
+by a space. The command ``spack install libelf cppflags="-O3"%intel``
will be interpreted as an attempt to set ``cppflags="-O3%intel"``.
The six compiler flags are injected in the order of implicit make commands
@@ -1067,13 +1075,13 @@ of failing:
In the snippet above, for instance, the microarchitecture was demoted to ``haswell`` when
compiling with ``gcc@4.8`` since support to optimize for ``broadwell`` starts from ``gcc@4.9:``.
-Finally if Spack has no information to match compiler and target, it will
+Finally, if Spack has no information to match compiler and target, it will
proceed with the installation but avoid injecting any microarchitecture
specific flags.
.. warning::
- Currently Spack doesn't print any warning to the user if it has no information
+ Currently, Spack doesn't print any warning to the user if it has no information
on which optimization flags should be used for a given compiler. This behavior
might change in the future.
@@ -1083,7 +1091,7 @@ specific flags.
Virtual dependencies
--------------------
-The dependence graph for ``mpileaks`` we saw above wasn't *quite*
+The dependency graph for ``mpileaks`` we saw above wasn't *quite*
accurate. ``mpileaks`` uses MPI, which is an interface that has many
different implementations. Above, we showed ``mpileaks`` and
``callpath`` depending on ``mpich``, which is one *particular*
@@ -1226,6 +1234,8 @@ add a version specifier to the spec:
Notice that the package versions that provide insufficient MPI
versions are now filtered out.
+.. _extensions:
+
---------------------------
Extensions & Python support
---------------------------
@@ -1233,8 +1243,7 @@ Extensions & Python support
Spack's installation model assumes that each package will live in its
own install prefix. However, certain packages are typically installed
*within* the directory hierarchy of other packages. For example,
-modules in interpreted languages like `Python
-<https://www.python.org>`_ are typically installed in the
+`Python <https://www.python.org>`_ packages are typically installed in the
``$prefix/lib/python-2.7/site-packages`` directory.
Spack has support for this type of installation as well. In Spack,
@@ -1410,12 +1419,12 @@ packages listed as activated:
py-nose@1.3.4 py-numpy@1.9.1 py-setuptools@11.3.1
Now, when a user runs python, ``numpy`` will be available for import
-*without* the user having to explicitly loaded. ``python@2.7.8`` now
+*without* the user having to explicitly load it. ``python@2.7.8`` now
acts like a system Python installation with ``numpy`` installed inside
of it.
Spack accomplishes this by symbolically linking the *entire* prefix of
-the ``py-numpy`` into the prefix of the ``python`` package. To the
+the ``py-numpy`` package into the prefix of the ``python`` package. To the
python interpreter, it looks like ``numpy`` is installed in the
``site-packages`` directory.
diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst
index b141f2b717..cfd850af28 100644
--- a/lib/spack/docs/build_settings.rst
+++ b/lib/spack/docs/build_settings.rst
@@ -124,6 +124,39 @@ The ``buildable`` does not need to be paired with external packages.
It could also be used alone to forbid packages that may be
buggy or otherwise undesirable.
+Virtual packages in Spack can also be specified as not buildable, and
+external implementations can be provided. In the example above,
+OpenMPI is configured as not buildable, but Spack will often prefer
+other MPI implementations over the externally available OpenMPI. Spack
+can be configured with every MPI provider not buildable individually,
+but more conveniently:
+
+.. code-block:: yaml
+
+ packages:
+ mpi:
+ buildable: False
+ openmpi:
+ paths:
+ openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64: /opt/openmpi-1.4.3
+ openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug: /opt/openmpi-1.4.3-debug
+ openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64: /opt/openmpi-1.6.5-intel
+
+Implementations can also be listed immediately under the virtual they provide:
+
+.. code-block:: yaml
+
+ packages:
+ mpi:
+ buildable: False
+ openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64: /opt/openmpi-1.4.3
+ openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug: /opt/openmpi-1.4.3-debug
+ openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64: /opt/openmpi-1.6.5-intel
+ mpich@3.3 %clang@9.0.0 arch=linux-debian7-x86_64: /opt/mpich-3.3-intel
+
+Spack can then use any of the listed external implementations of MPI
+to satisfy a dependency, and will choose depending on the compiler and
+architecture.
.. _concretization-preferences:
diff --git a/lib/spack/docs/build_systems/cmakepackage.rst b/lib/spack/docs/build_systems/cmakepackage.rst
index 0a771edad3..76e89c80b1 100644
--- a/lib/spack/docs/build_systems/cmakepackage.rst
+++ b/lib/spack/docs/build_systems/cmakepackage.rst
@@ -128,17 +128,20 @@ Adding flags to cmake
^^^^^^^^^^^^^^^^^^^^^
To add additional flags to the ``cmake`` call, simply override the
-``cmake_args`` function:
+``cmake_args`` function. The following example defines values for the flags
+``WHATEVER``, ``ENABLE_BROKEN_FEATURE``, ``DETECT_HDF5``, and ``THREADS`` with
+and without the :py:meth:`~.CMakePackage.define` and
+:py:meth:`~.CMakePackage.define_from_variant` helper functions:
.. code-block:: python
def cmake_args(self):
- args = []
-
- if '+hdf5' in self.spec:
- args.append('-DDETECT_HDF5=ON')
- else:
- args.append('-DDETECT_HDF5=OFF')
+ args = [
+ '-DWHATEVER:STRING=somevalue',
+ self.define('ENABLE_BROKEN_FEATURE', False),
+ self.define_from_variant('DETECT_HDF5', 'hdf5'),
+ self.define_from_variant('THREADS'), # True if +threads
+ ]
return args
diff --git a/lib/spack/docs/build_systems/intelpackage.rst b/lib/spack/docs/build_systems/intelpackage.rst
index c14fc34f51..153b41bdc7 100644
--- a/lib/spack/docs/build_systems/intelpackage.rst
+++ b/lib/spack/docs/build_systems/intelpackage.rst
@@ -553,7 +553,7 @@ follow `the next section <intel-install-libs_>`_ instead.
f77: stub
fc: stub
- Replace ``18.0.3`` with the version that you determined in the preceeding
+ Replace ``18.0.3`` with the version that you determined in the preceding
step. The contents under ``paths:`` do not matter yet.
You are right to ask: "Why on earth is that necessary?" [fn8]_.
@@ -696,7 +696,7 @@ follow `the next section <intel-install-libs_>`_ instead.
- /home/$user/spack-stage
Do not duplicate the ``config:`` line if it already is present.
- Adapt the location, which here is the same as in the preceeding example.
+ Adapt the location, which here is the same as in the preceding example.
3. Retry installing the large package.
@@ -965,7 +965,7 @@ a *virtual* ``mkl`` package is declared in Spack.
Likewise, in a
:ref:`MakefilePackage <makefilepackage>`
- or similiar package that does not use AutoTools you may need to provide include
+ or similar package that does not use AutoTools you may need to provide include
and link options for use on command lines or in environment variables.
For example, to generate an option string of the form ``-I<dir>``, use:
diff --git a/lib/spack/docs/build_systems/sippackage.rst b/lib/spack/docs/build_systems/sippackage.rst
index b8c08ec513..ddf9a26ab9 100644
--- a/lib/spack/docs/build_systems/sippackage.rst
+++ b/lib/spack/docs/build_systems/sippackage.rst
@@ -51,10 +51,8 @@ Build system dependencies
``SIPPackage`` requires several dependencies. Python is needed to run
the ``configure.py`` build script, and to run the resulting Python
libraries. Qt is needed to provide the ``qmake`` command. SIP is also
-needed to build the package. SIP is an unusual dependency in that it
-must be installed in the same installation directory as the package,
-so instead of a ``depends_on``, we use a ``resource``. All of these
-dependencies are automatically added via the base class
+needed to build the package. All of these dependencies are automatically
+added via the base class
.. code-block:: python
@@ -62,11 +60,7 @@ dependencies are automatically added via the base class
depends_on('qt', type='build')
- resource(name='sip',
- url='https://www.riverbankcomputing.com/static/Downloads/sip/4.19.18/sip-4.19.18.tar.gz',
- sha256='c0bd863800ed9b15dcad477c4017cdb73fa805c25908b0240564add74d697e1e',
- destination='.')
-
+ depends_on('py-sip', type='build')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Passing arguments to ``configure.py``
diff --git a/lib/spack/docs/containers.rst b/lib/spack/docs/containers.rst
index bbb21a2e00..2ca25b7207 100644
--- a/lib/spack/docs/containers.rst
+++ b/lib/spack/docs/containers.rst
@@ -44,7 +44,7 @@ Environments:
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
- # Install the software, remove unecessary deps
+ # Install the software, remove unnecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Strip all the binaries
@@ -108,7 +108,7 @@ are currently supported are summarized in the table below:
- ``ubuntu:16.04``
- ``spack/ubuntu-xenial``
* - Ubuntu 18.04
- - ``ubuntu:16.04``
+ - ``ubuntu:18.04``
- ``spack/ubuntu-bionic``
* - CentOS 6
- ``centos:6``
@@ -266,7 +266,7 @@ following ``Dockerfile``:
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
- # Install the software, remove unecessary deps
+ # Install the software, remove unnecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Strip all the binaries
@@ -304,4 +304,4 @@ following ``Dockerfile``:
.. note::
Spack can also produce Singularity definition files to build the image. The
minimum version of Singularity required to build a SIF (Singularity Image Format)
- from them is ``3.5.3``. \ No newline at end of file
+ from them is ``3.5.3``.
diff --git a/lib/spack/docs/contribution_guide.rst b/lib/spack/docs/contribution_guide.rst
index 0b79141ee3..9935ec0c83 100644
--- a/lib/spack/docs/contribution_guide.rst
+++ b/lib/spack/docs/contribution_guide.rst
@@ -385,8 +385,8 @@ coverage. This helps us tell what percentage of lines of code in Spack are
covered by unit tests. Although code covered by unit tests can still contain
bugs, it is much less error prone than code that is not covered by unit tests.
-Codecov provides `browser extensions <https://github.com/codecov/browser-extension>`_
-for Google Chrome, Firefox, and Opera. These extensions integrate with GitHub
+Codecov provides `browser extensions <https://github.com/codecov/sourcegraph-codecov>`_
+for Google Chrome and Firefox. These extensions integrate with GitHub
and allow you to see coverage line-by-line when viewing the Spack repository.
If you are new to Spack, a great way to get started is to write unit tests to
increase coverage!
diff --git a/lib/spack/docs/environments.rst b/lib/spack/docs/environments.rst
index 5ec1ec9032..5d091dee30 100644
--- a/lib/spack/docs/environments.rst
+++ b/lib/spack/docs/environments.rst
@@ -285,7 +285,7 @@ be called using the ``spack -E`` flag to specify the environment.
.. code-block:: console
- $ spack activate myenv
+ $ spack env activate myenv
$ spack add mpileaks
or
diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst
index 3a9b2d42b2..8de9d27662 100644
--- a/lib/spack/docs/getting_started.rst
+++ b/lib/spack/docs/getting_started.rst
@@ -851,7 +851,7 @@ from websites and from git.
.. warning::
- This workaround should be used ONLY as a last resort! Wihout SSL
+ This workaround should be used ONLY as a last resort! Without SSL
certificate verification, spack and git will download from sites you
wouldn't normally trust. The code you download and run may then be
compromised! While this is not a major issue for archives that will
diff --git a/lib/spack/docs/module_file_support.rst b/lib/spack/docs/module_file_support.rst
index aa7eb57653..01a13cdf3e 100644
--- a/lib/spack/docs/module_file_support.rst
+++ b/lib/spack/docs/module_file_support.rst
@@ -165,8 +165,6 @@ used ``gcc``. You could therefore just type:
To identify just the one built with the Intel compiler.
-.. _extensions:
-
.. _cmd-spack-module-loads:
^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst
index 41d74fcc74..26f843aa0e 100644
--- a/lib/spack/docs/packaging_guide.rst
+++ b/lib/spack/docs/packaging_guide.rst
@@ -2197,7 +2197,7 @@ property to ``True``, e.g.:
extendable = True
...
-To make a package into an extension, simply add simply add an
+To make a package into an extension, simply add an
``extends`` call in the package definition, and pass it the name of an
extendable package:
@@ -2212,6 +2212,10 @@ Now, the ``py-numpy`` package can be used as an argument to ``spack
activate``. When it is activated, all the files in its prefix will be
symbolically linked into the prefix of the python package.
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Adding additional constraints
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
Some packages produce a Python extension, but are only compatible with
Python 3, or with Python 2. In those cases, a ``depends_on()``
declaration should be made in addition to the ``extends()``
@@ -2231,8 +2235,7 @@ variant(s) are selected. This may be accomplished with conditional
.. code-block:: python
class FooLib(Package):
- variant('python', default=True, description= \
- 'Build the Python extension Module')
+ variant('python', default=True, description='Build the Python extension Module')
extends('python', when='+python')
...
@@ -2913,7 +2916,7 @@ discover its dependencies.
If you want to see the environment that a package will build with, or
if you want to run commands in that environment to test them out, you
-can use the :ref:`cmd-spack-env` command, documented
+can use the :ref:`cmd-spack-build-env` command, documented
below.
^^^^^^^^^^^^^^^^^^^^^
@@ -3607,7 +3610,7 @@ the command line.
For most compilers, ``$rpath_flag`` is ``-Wl,-rpath,``. However, NAG
passes its flags to GCC instead of passing them directly to the linker.
Therefore, its ``$rpath_flag`` is doubly wrapped: ``-Wl,-Wl,,-rpath,``.
- ``$rpath_flag`` can be overriden on a compiler specific basis in
+ ``$rpath_flag`` can be overridden on a compiler specific basis in
``lib/spack/spack/compilers/$compiler.py``.
The compiler wrappers also pass the compiler flags specified by the user from
@@ -4332,31 +4335,31 @@ directory, install directory, package directory) and others change to
core spack locations. For example, ``spack cd --module-dir`` will take you to
the main python source directory of your spack install.
-.. _cmd-spack-env:
+.. _cmd-spack-build-env:
-^^^^^^^^^^^^^
-``spack env``
-^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^
+``spack build-env``
+^^^^^^^^^^^^^^^^^^^
-``spack env`` functions much like the standard unix ``env`` command,
-but it takes a spec as an argument. You can use it to see the
+``spack build-env`` functions much like the standard unix ``build-env``
+command, but it takes a spec as an argument. You can use it to see the
environment variables that will be set when a particular build runs,
for example:
.. code-block:: console
- $ spack env mpileaks@1.1%intel
+ $ spack build-env mpileaks@1.1%intel
This will display the entire environment that will be set when the
``mpileaks@1.1%intel`` build runs.
To run commands in a package's build environment, you can simply
-provide them after the spec argument to ``spack env``:
+provide them after the spec argument to ``spack build-env``:
.. code-block:: console
$ spack cd mpileaks@1.1%intel
- $ spack env mpileaks@1.1%intel ./configure
+ $ spack build-env mpileaks@1.1%intel ./configure
This will cd to the build directory and then run ``configure`` in the
package's build environment.
diff --git a/lib/spack/docs/pipelines.rst b/lib/spack/docs/pipelines.rst
index f70b39a16d..0f092d5c5c 100644
--- a/lib/spack/docs/pipelines.rst
+++ b/lib/spack/docs/pipelines.rst
@@ -117,6 +117,27 @@ created has the same name as the current branch being tested, but has ``multi-ci
prepended to the branch name. Once Gitlab CI has full support for dynamically
defined workloads, this command will be deprecated.
+Until this command is no longer needed and can be deprecated, there are
+a few gotchas to note. While you can embed your username and password in the
+`DOWNSTREAM_CI_REPO` url, you may not be able to have Gitlab mask the value, as
+it will likely contain characters that Gitlab cannot currently mask. Another
+option is to set up an SSH token, but for this to work, the associated SSH
+key must be passphrase-less so that it can be provided in an automated manner.
+
+If you attempt to set up an SSH token that does require a passphrase, you may
+see a log message similar to:
+
+```
+fatal: https://<instance-url>/<org>/<project>:<port>/info/refs not valid: is this a git repository?
+```
+
+In this case, you can try a passphrase-less SSH key, or else embed your gitlab
+username and password in the `DOWNSTREAM_CI_REPO` as in the following example:
+
+```
+https://<username>:<password>@<instance-url>/<org>/<project>.git
+```
+
.. _cmd_spack_ci_rebuild:
^^^^^^^^^^^^^^^^^^^^
@@ -132,7 +153,7 @@ A pipeline-enabled spack environment
------------------------------------
Here's an example of a spack environment file that has been enhanced with
-sections desribing a build pipeline:
+sections describing a build pipeline:
.. code-block:: yaml
@@ -436,4 +457,5 @@ DOWNSTREAM_CI_REPO
^^^^^^^^^^^^^^^^^^
Needed until Gitlab CI supports dynamic job generation. Can contain connection
-credentials, and could be the same repository or a different one.
+credentials embedded in the url, and could be the same repository or a different
+one.
diff --git a/lib/spack/docs/workflows.rst b/lib/spack/docs/workflows.rst
index b329a0205c..9ce664b6ca 100644
--- a/lib/spack/docs/workflows.rst
+++ b/lib/spack/docs/workflows.rst
@@ -284,8 +284,10 @@ have some drawbacks:
The ``spack load`` and ``spack module tcl loads`` commands, on the
other hand, are not very smart: if the user-supplied spec matches
more than one installed package, then ``spack module tcl loads`` will
- fail. This may change in the future. For now, the workaround is to
- be more specific on any ``spack load`` commands that fail.
+ fail. This default behavior may change in the future. For now,
+ the workaround is to either be more specific on any failing ``spack load``
+ commands or to use ``spack load --first`` to allow spack to load the
+ first matching spec.
""""""""""""""""""""""
@@ -444,7 +446,7 @@ environment.
A single-prefix filesystem view is a single directory tree that is the
union of the directory hierarchies of a number of installed packages;
-it is similar to the directory hiearchy that might exist under
+it is similar to the directory hierarchy that might exist under
``/usr/local``. The files of the view's installed packages are
brought into the view by symbolic or hard links, referencing the
original Spack installation.
@@ -1237,7 +1239,7 @@ you can also manually set them in your ``.bashrc``.
2. Other package managers like Homebrew will try to install things to the
same directory. If you plan on using Homebrew in conjunction with Spack,
don't symlink things to ``/usr/local``.
- 3. If you are on a shared workstation, or don't have sudo priveleges, you
+ 3. If you are on a shared workstation, or don't have sudo privileges, you
can't do this.
If you still want to do this anyway, there are several ways around SIP.
@@ -1467,7 +1469,7 @@ In order to build and run the image, execute:
SPACK_ROOT=/usr/local \
FORCE_UNSAFE_CONFIGURE=1
- # install minimal spack depedencies
+ # install minimal spack dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
autoconf \
diff --git a/lib/spack/env/cc b/lib/spack/env/cc
index 73c5759dfe..f2b8bf577f 100755
--- a/lib/spack/env/cc
+++ b/lib/spack/env/cc
@@ -43,7 +43,7 @@ parameters=(
# The compiler input variables are checked for sanity later:
# SPACK_CC, SPACK_CXX, SPACK_F77, SPACK_FC
# The default compiler flags are passed from these variables:
-# SPACK_CFLAGS, SPACK_CXXFLAGS, SPACK_FCFLAGS, SPACK_FFLAGS,
+# SPACK_CFLAGS, SPACK_CXXFLAGS, SPACK_FFLAGS,
# SPACK_LDFLAGS, SPACK_LDLIBS
# Debug env var is optional; set to "TRUE" for debug logging:
# SPACK_DEBUG
diff --git a/lib/spack/external/__init__.py b/lib/spack/external/__init__.py
index 27f00efb09..230ec170b2 100644
--- a/lib/spack/external/__init__.py
+++ b/lib/spack/external/__init__.py
@@ -88,10 +88,11 @@ pytest
* Homepage: https://pypi.python.org/pypi/pytest
* Usage: Testing framework used by Spack.
* Version: 3.2.5 (last version supporting Python 2.6)
-* Note: This package has been slightly modified to improve
- Python 2.6 compatibility. See the following commit if the
- vendored copy ever needs to be updated again:
- https://github.com/spack/spack/pull/6801/commits/ff513c39f2c67ff615de5cbc581dd69a8ec96526
+* Note: This package has been slightly modified:
+ * We improve Python 2.6 compatibility. See:
+ https://github.com/spack/spack/pull/6801.
+ * We have patched pytest not to depend on setuptools. See:
+ https://github.com/spack/spack/pull/15612
ruamel.yaml
------
@@ -125,4 +126,5 @@ altgraph
* Homepage: https://altgraph.readthedocs.io/en/latest/index.html
* Usage: dependency of macholib
* Version: 0.16.1
+
"""
diff --git a/lib/spack/external/_pytest/config.py b/lib/spack/external/_pytest/config.py
index 19835d2c39..513478a972 100644
--- a/lib/spack/external/_pytest/config.py
+++ b/lib/spack/external/_pytest/config.py
@@ -1028,34 +1028,13 @@ class Config(object):
except SystemError:
mode = 'plain'
else:
- self._mark_plugins_for_rewrite(hook)
+ # REMOVED FOR SPACK: This routine imports `pkg_resources` from
+ # `setuptools`, but we do not need it for Spack. We have removed
+ # it from Spack to avoid a dependency on setuptools.
+ # self._mark_plugins_for_rewrite(hook)
+ pass
self._warn_about_missing_assertion(mode)
- def _mark_plugins_for_rewrite(self, hook):
- """
- Given an importhook, mark for rewrite any top-level
- modules or packages in the distribution package for
- all pytest plugins.
- """
- import pkg_resources
- self.pluginmanager.rewrite_hook = hook
-
- # 'RECORD' available for plugins installed normally (pip install)
- # 'SOURCES.txt' available for plugins installed in dev mode (pip install -e)
- # for installed plugins 'SOURCES.txt' returns an empty list, and vice-versa
- # so it shouldn't be an issue
- metadata_files = 'RECORD', 'SOURCES.txt'
-
- package_files = (
- entry.split(',')[0]
- for entrypoint in pkg_resources.iter_entry_points('pytest11')
- for metadata in metadata_files
- for entry in entrypoint.dist._get_metadata(metadata)
- )
-
- for name in _iter_rewritable_modules(package_files):
- hook.mark_rewrite(name)
-
def _warn_about_missing_assertion(self, mode):
try:
assert False
@@ -1081,7 +1060,12 @@ class Config(object):
self._checkversion()
self._consider_importhook(args)
self.pluginmanager.consider_preparse(args)
- self.pluginmanager.load_setuptools_entrypoints('pytest11')
+
+ # REMOVED FOR SPACK: This routine imports `pkg_resources` from
+ # `setuptools`, but we do not need it for Spack. We have removed
+ # it from Spack to avoid a dependency on setuptools.
+ # self.pluginmanager.load_setuptools_entrypoints('pytest11')
+
self.pluginmanager.consider_env()
self.known_args_namespace = ns = self._parser.parse_known_args(args, namespace=self.option.copy())
if self.known_args_namespace.confcutdir is None and self.inifile:
diff --git a/lib/spack/external/_pytest/vendored_packages/pluggy.py b/lib/spack/external/_pytest/vendored_packages/pluggy.py
index aebddad01d..6f26552d73 100644
--- a/lib/spack/external/_pytest/vendored_packages/pluggy.py
+++ b/lib/spack/external/_pytest/vendored_packages/pluggy.py
@@ -497,26 +497,6 @@ class PluginManager(object):
"unknown hook %r in plugin %r" %
(name, hookimpl.plugin))
- def load_setuptools_entrypoints(self, entrypoint_name):
- """ Load modules from querying the specified setuptools entrypoint name.
- Return the number of loaded plugins. """
- from pkg_resources import (iter_entry_points, DistributionNotFound,
- VersionConflict)
- for ep in iter_entry_points(entrypoint_name):
- # is the plugin registered or blocked?
- if self.get_plugin(ep.name) or self.is_blocked(ep.name):
- continue
- try:
- plugin = ep.load()
- except DistributionNotFound:
- continue
- except VersionConflict as e:
- raise PluginValidationError(
- "Plugin %r could not be loaded: %s!" % (ep.name, e))
- self.register(plugin, name=ep.name)
- self._plugin_distinfo.append((plugin, ep.dist))
- return len(self._plugin_distinfo)
-
def list_plugin_distinfo(self):
""" return list of distinfo/plugin tuples for all setuptools registered
plugins. """
diff --git a/lib/spack/external/altgraph/__init__.py b/lib/spack/external/altgraph/__init__.py
index 289c6408d1..ee70a9c91b 100644
--- a/lib/spack/external/altgraph/__init__.py
+++ b/lib/spack/external/altgraph/__init__.py
@@ -139,9 +139,12 @@ To display the graph we can use the GraphViz backend::
@contributor: U{Reka Albert <http://www.phys.psu.edu/~ralbert/>}
'''
-import pkg_resources
-__version__ = pkg_resources.require('altgraph')[0].version
-
+# import pkg_resources
+# __version__ = pkg_resources.require('altgraph')[0].version
+# pkg_resources is not finding the altgraph import despite the fact that it is in sys.path
+# there is no .dist-info or .egg-info for pkg_resources to query the version from
+# so it must be set manually
+__version__ = '0.16.1'
class GraphError(ValueError):
pass
diff --git a/lib/spack/external/distro.py b/lib/spack/external/distro.py
index b63451640a..e3805de75f 100644
--- a/lib/spack/external/distro.py
+++ b/lib/spack/external/distro.py
@@ -64,6 +64,7 @@ NORMALIZED_LSB_ID = {
'enterpriseenterprise': 'oracle', # Oracle Enterprise Linux
'redhatenterpriseworkstation': 'rhel', # RHEL 6, 7 Workstation
'redhatenterpriseserver': 'rhel', # RHEL 6, 7 Server
+ 'redhatenterprisecomputenode': 'rhel', # RHEL 6 ComputeNode
}
#: Translation table for normalizing the distro ID derived from the file name
diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py
index 9991a66965..0fb6feae02 100644
--- a/lib/spack/spack/binary_distribution.py
+++ b/lib/spack/spack/binary_distribution.py
@@ -10,6 +10,9 @@ import tarfile
import shutil
import tempfile
import hashlib
+import glob
+import platform
+
from contextlib import closing
import ruamel.yaml as yaml
@@ -53,7 +56,7 @@ BUILD_CACHE_INDEX_TEMPLATE = '''
BUILD_CACHE_INDEX_ENTRY_TEMPLATE = ' <li><a href="{path}">{path}</a></li>'
-class NoOverwriteException(Exception):
+class NoOverwriteException(spack.error.SpackError):
"""
Raised when a file exists and must be overwritten.
"""
@@ -68,14 +71,18 @@ class NoGpgException(spack.error.SpackError):
"""
Raised when gpg2 is not in PATH
"""
- pass
+
+ def __init__(self, msg):
+ super(NoGpgException, self).__init__(msg)
class NoKeyException(spack.error.SpackError):
"""
Raised when gpg has no default key added.
"""
- pass
+
+ def __init__(self, msg):
+ super(NoKeyException, self).__init__(msg)
class PickKeyException(spack.error.SpackError):
@@ -84,7 +91,7 @@ class PickKeyException(spack.error.SpackError):
"""
def __init__(self, keys):
- err_msg = "Multi keys available for signing\n%s\n" % keys
+ err_msg = "Multiple keys available for signing\n%s\n" % keys
err_msg += "Use spack buildcache create -k <key hash> to pick a key."
super(PickKeyException, self).__init__(err_msg)
@@ -107,7 +114,9 @@ class NewLayoutException(spack.error.SpackError):
"""
Raised if directory layout is different from buildcache.
"""
- pass
+
+ def __init__(self, msg):
+ super(NewLayoutException, self).__init__(msg)
def build_cache_relative_path():
@@ -137,15 +146,21 @@ def read_buildinfo_file(prefix):
return buildinfo
-def write_buildinfo_file(prefix, workdir, rel=False):
+def write_buildinfo_file(spec, workdir, rel=False):
"""
Create a cache file containing information
required for the relocation
"""
+ prefix = spec.prefix
text_to_relocate = []
binary_to_relocate = []
link_to_relocate = []
blacklist = (".spack", "man")
+ prefix_to_hash = dict()
+ prefix_to_hash[str(spec.package.prefix)] = spec.dag_hash()
+ deps = spack.build_environment.get_rpath_deps(spec.package)
+ for d in deps:
+ prefix_to_hash[str(d.prefix)] = d.dag_hash()
# Do this at during tarball creation to save time when tarball unpacked.
# Used by make_package_relative to determine binaries to change.
for root, dirs, files in os.walk(prefix, topdown=True):
@@ -162,8 +177,8 @@ def write_buildinfo_file(prefix, workdir, rel=False):
link_to_relocate.append(rel_path_name)
else:
msg = 'Absolute link %s to %s ' % (path_name, link)
- msg += 'outside of stage %s ' % prefix
- msg += 'cannot be relocated.'
+ msg += 'outside of prefix %s ' % prefix
+ msg += 'should not be relocated.'
tty.warn(msg)
if relocate.needs_binary_relocation(m_type, m_subtype):
@@ -184,6 +199,7 @@ def write_buildinfo_file(prefix, workdir, rel=False):
buildinfo['relocate_textfiles'] = text_to_relocate
buildinfo['relocate_binaries'] = binary_to_relocate
buildinfo['relocate_links'] = link_to_relocate
+ buildinfo['prefix_to_hash'] = prefix_to_hash
filename = buildinfo_file_name(workdir)
with open(filename, 'w') as outfile:
outfile.write(syaml.dump(buildinfo, default_flow_style=True))
@@ -308,7 +324,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
tmpdir = tempfile.mkdtemp()
cache_prefix = build_cache_prefix(tmpdir)
- tarfile_name = tarball_name(spec, '.tar.bz2')
+ tarfile_name = tarball_name(spec, '.tar.gz')
tarfile_dir = os.path.join(cache_prefix, tarball_directory_name(spec))
tarfile_path = os.path.join(tarfile_dir, tarfile_name)
spackfile_path = os.path.join(
@@ -356,7 +372,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
os.remove(temp_tarfile_path)
# create info for later relocation and create tar
- write_buildinfo_file(spec.prefix, workdir, rel=rel)
+ write_buildinfo_file(spec, workdir, rel)
# optionally make the paths in the binaries relative to each other
# in the spack install tree before creating tarball
@@ -370,15 +386,15 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
tty.die(e)
else:
try:
- make_package_placeholder(workdir, spec, allow_root)
+ check_package_relocatable(workdir, spec, allow_root)
except Exception as e:
shutil.rmtree(workdir)
shutil.rmtree(tarfile_dir)
shutil.rmtree(tmpdir)
tty.die(e)
- # create compressed tarball of the install prefix
- with closing(tarfile.open(tarfile_path, 'w:bz2')) as tar:
+ # create gzip compressed tarball of the install prefix
+ with closing(tarfile.open(tarfile_path, 'w:gz')) as tar:
tar.add(name='%s' % workdir,
arcname='%s' % os.path.basename(spec.prefix))
# remove copy of install directory
@@ -400,6 +416,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
buildinfo = {}
buildinfo['relative_prefix'] = os.path.relpath(
spec.prefix, spack.store.layout.root)
+ buildinfo['relative_rpaths'] = rel
spec_dict['buildinfo'] = buildinfo
spec_dict['full_hash'] = spec.full_hash()
@@ -433,6 +450,9 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
web_util.push_to_url(
specfile_path, remote_specfile_path, keep_original=False)
+ tty.msg('Buildache for "%s" written to \n %s' %
+ (spec, remote_spackfile_path))
+
try:
# create an index.html for the build_cache directory so specs can be
# found
@@ -478,100 +498,149 @@ def make_package_relative(workdir, spec, allow_root):
"""
prefix = spec.prefix
buildinfo = read_buildinfo_file(workdir)
- old_path = buildinfo['buildpath']
+ old_layout_root = buildinfo['buildpath']
orig_path_names = list()
cur_path_names = list()
for filename in buildinfo['relocate_binaries']:
orig_path_names.append(os.path.join(prefix, filename))
cur_path_names.append(os.path.join(workdir, filename))
- if spec.architecture.platform == 'darwin':
+ if (spec.architecture.platform == 'darwin' or
+ spec.architecture.platform == 'test' and
+ platform.system().lower() == 'darwin'):
relocate.make_macho_binaries_relative(cur_path_names, orig_path_names,
- old_path, allow_root)
- else:
+ old_layout_root)
+ if (spec.architecture.platform == 'linux' or
+ spec.architecture.platform == 'test' and
+ platform.system().lower() == 'linux'):
relocate.make_elf_binaries_relative(cur_path_names, orig_path_names,
- old_path, allow_root)
+ old_layout_root)
+ relocate.check_files_relocatable(cur_path_names, allow_root)
orig_path_names = list()
cur_path_names = list()
- for filename in buildinfo.get('relocate_links', []):
- orig_path_names.append(os.path.join(prefix, filename))
- cur_path_names.append(os.path.join(workdir, filename))
+ for linkname in buildinfo.get('relocate_links', []):
+ orig_path_names.append(os.path.join(prefix, linkname))
+ cur_path_names.append(os.path.join(workdir, linkname))
relocate.make_link_relative(cur_path_names, orig_path_names)
-def make_package_placeholder(workdir, spec, allow_root):
+def check_package_relocatable(workdir, spec, allow_root):
"""
Check if package binaries are relocatable.
Change links to placeholder links.
"""
- prefix = spec.prefix
buildinfo = read_buildinfo_file(workdir)
cur_path_names = list()
for filename in buildinfo['relocate_binaries']:
cur_path_names.append(os.path.join(workdir, filename))
relocate.check_files_relocatable(cur_path_names, allow_root)
- cur_path_names = list()
- for filename in buildinfo.get('relocate_links', []):
- cur_path_names.append(os.path.join(workdir, filename))
- relocate.make_link_placeholder(cur_path_names, workdir, prefix)
-
-def relocate_package(workdir, spec, allow_root):
+def relocate_package(spec, allow_root):
"""
Relocate the given package
"""
+ workdir = str(spec.prefix)
buildinfo = read_buildinfo_file(workdir)
- new_path = str(spack.store.layout.root)
- new_prefix = str(spack.paths.prefix)
- old_path = str(buildinfo['buildpath'])
- old_prefix = str(buildinfo.get('spackprefix',
- '/not/in/buildinfo/dictionary'))
- rel = buildinfo.get('relative_rpaths', False)
-
- tty.msg("Relocating package from",
- "%s to %s." % (old_path, new_path))
- path_names = set()
+ new_layout_root = str(spack.store.layout.root)
+ new_prefix = str(spec.prefix)
+ new_rel_prefix = str(os.path.relpath(new_prefix, new_layout_root))
+ new_spack_prefix = str(spack.paths.prefix)
+ old_layout_root = str(buildinfo['buildpath'])
+ old_spack_prefix = str(buildinfo.get('spackprefix'))
+ old_rel_prefix = buildinfo.get('relative_prefix')
+ old_prefix = os.path.join(old_layout_root, old_rel_prefix)
+ rel = buildinfo.get('relative_rpaths')
+ prefix_to_hash = buildinfo.get('prefix_to_hash', None)
+ if (old_rel_prefix != new_rel_prefix and not prefix_to_hash):
+ msg = "Package tarball was created from an install "
+ msg += "prefix with a different directory layout and an older "
+ msg += "buildcache create implementation. It cannot be relocated."
+ raise NewLayoutException(msg)
+ # older buildcaches do not have the prefix_to_hash dictionary
+ # need to set an empty dictionary and add one entry to
+ # prefix_to_prefix to reproduce the old behavior
+ if not prefix_to_hash:
+ prefix_to_hash = dict()
+ hash_to_prefix = dict()
+ hash_to_prefix[spec.format('{hash}')] = str(spec.package.prefix)
+ new_deps = spack.build_environment.get_rpath_deps(spec.package)
+ for d in new_deps:
+ hash_to_prefix[d.format('{hash}')] = str(d.prefix)
+ prefix_to_prefix = dict()
+ for orig_prefix, hash in prefix_to_hash.items():
+ prefix_to_prefix[orig_prefix] = hash_to_prefix.get(hash, None)
+ prefix_to_prefix[old_prefix] = new_prefix
+ prefix_to_prefix[old_layout_root] = new_layout_root
+
+ tty.debug("Relocating package from",
+ "%s to %s." % (old_layout_root, new_layout_root))
+
+ def is_backup_file(file):
+ return file.endswith('~')
+
+ # Text files containing the prefix text
+ text_names = list()
for filename in buildinfo['relocate_textfiles']:
- path_name = os.path.join(workdir, filename)
+ text_name = os.path.join(workdir, filename)
# Don't add backup files generated by filter_file during install step.
- if not path_name.endswith('~'):
- path_names.add(path_name)
- relocate.relocate_text(path_names, oldpath=old_path,
- newpath=new_path, oldprefix=old_prefix,
- newprefix=new_prefix)
- # If the binary files in the package were not edited to use
- # relative RPATHs, then the RPATHs need to be relocated
- if rel:
- if old_path != new_path:
- files_to_relocate = list(filter(
- lambda pathname: not relocate.file_is_relocatable(
- pathname, paths_to_relocate=[old_path, old_prefix]),
- map(lambda filename: os.path.join(workdir, filename),
- buildinfo['relocate_binaries'])))
-
- if len(old_path) < len(new_path) and files_to_relocate:
- tty.debug('Cannot do a binary string replacement with padding '
- 'for package because %s is longer than %s.' %
- (new_path, old_path))
- else:
- for path_name in files_to_relocate:
- relocate.replace_prefix_bin(path_name, old_path, new_path)
- else:
- path_names = set()
- for filename in buildinfo['relocate_binaries']:
- path_name = os.path.join(workdir, filename)
- path_names.add(path_name)
- if spec.architecture.platform == 'darwin':
- relocate.relocate_macho_binaries(path_names, old_path,
- new_path, allow_root)
- else:
- relocate.relocate_elf_binaries(path_names, old_path,
- new_path, allow_root)
- path_names = set()
- for filename in buildinfo.get('relocate_links', []):
- path_name = os.path.join(workdir, filename)
- path_names.add(path_name)
- relocate.relocate_links(path_names, old_path, new_path)
+ if not is_backup_file(text_name):
+ text_names.append(text_name)
+
+# If we are installing back to the same location don't replace anything
+ if old_layout_root != new_layout_root:
+ paths_to_relocate = [old_spack_prefix, old_layout_root]
+ paths_to_relocate.extend(prefix_to_hash.keys())
+ files_to_relocate = list(filter(
+ lambda pathname: not relocate.file_is_relocatable(
+ pathname, paths_to_relocate=paths_to_relocate),
+ map(lambda filename: os.path.join(workdir, filename),
+ buildinfo['relocate_binaries'])))
+ # If the buildcache was not created with relativized rpaths
+ # do the relocation of path in binaries
+ if (spec.architecture.platform == 'darwin' or
+ spec.architecture.platform == 'test' and
+ platform.system().lower() == 'darwin'):
+ relocate.relocate_macho_binaries(files_to_relocate,
+ old_layout_root,
+ new_layout_root,
+ prefix_to_prefix, rel,
+ old_prefix,
+ new_prefix)
+ if (spec.architecture.platform == 'linux' or
+ spec.architecture.platform == 'test' and
+ platform.system().lower() == 'linux'):
+ relocate.relocate_elf_binaries(files_to_relocate,
+ old_layout_root,
+ new_layout_root,
+ prefix_to_prefix, rel,
+ old_prefix,
+ new_prefix)
+ # Relocate links to the new install prefix
+ link_names = [linkname
+ for linkname in buildinfo.get('relocate_links', [])]
+ relocate.relocate_links(link_names,
+ old_layout_root,
+ new_layout_root,
+ old_prefix,
+ new_prefix,
+ prefix_to_prefix)
+
+ # For all buildcaches
+ # relocate the install prefixes in text files including dependencies
+ relocate.relocate_text(text_names,
+ old_layout_root, new_layout_root,
+ old_prefix, new_prefix,
+ old_spack_prefix,
+ new_spack_prefix,
+ prefix_to_prefix)
+
+ # relocate the install prefixes in binary files including dependencies
+ relocate.relocate_text_bin(files_to_relocate,
+ old_layout_root, new_layout_root,
+ old_prefix, new_prefix,
+ old_spack_prefix,
+ new_spack_prefix,
+ prefix_to_prefix)
def extract_tarball(spec, filename, allow_root=False, unsigned=False,
@@ -589,16 +658,16 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
stagepath = os.path.dirname(filename)
spackfile_name = tarball_name(spec, '.spack')
spackfile_path = os.path.join(stagepath, spackfile_name)
- tarfile_name = tarball_name(spec, '.tar.bz2')
+ tarfile_name = tarball_name(spec, '.tar.gz')
tarfile_path = os.path.join(tmpdir, tarfile_name)
specfile_name = tarball_name(spec, '.spec.yaml')
specfile_path = os.path.join(tmpdir, specfile_name)
with closing(tarfile.open(spackfile_path, 'r')) as tar:
tar.extractall(tmpdir)
- # older buildcache tarfiles use gzip compression
+ # some buildcache tarfiles use bzip2 compression
if not os.path.exists(tarfile_path):
- tarfile_name = tarball_name(spec, '.tar.gz')
+ tarfile_name = tarball_name(spec, '.tar.bz2')
tarfile_path = os.path.join(tmpdir, tarfile_name)
if not unsigned:
if os.path.exists('%s.asc' % specfile_path):
@@ -607,7 +676,7 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
Gpg.verify('%s.asc' % specfile_path, specfile_path, suppress)
except Exception as e:
shutil.rmtree(tmpdir)
- tty.die(e)
+ raise e
else:
shutil.rmtree(tmpdir)
raise NoVerifyException(
@@ -636,22 +705,30 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
# if the original relative prefix is in the spec file use it
buildinfo = spec_dict.get('buildinfo', {})
old_relative_prefix = buildinfo.get('relative_prefix', new_relative_prefix)
+ rel = buildinfo.get('relative_rpaths')
# if the original relative prefix and new relative prefix differ the
# directory layout has changed and the buildcache cannot be installed
- if old_relative_prefix != new_relative_prefix:
- shutil.rmtree(tmpdir)
- msg = "Package tarball was created from an install "
- msg += "prefix with a different directory layout.\n"
- msg += "It cannot be relocated."
- raise NewLayoutException(msg)
+ # if it was created with relative rpaths
+ info = 'old relative prefix %s\nnew relative prefix %s\nrelative rpaths %s'
+ tty.debug(info %
+ (old_relative_prefix, new_relative_prefix, rel))
+# if (old_relative_prefix != new_relative_prefix and (rel)):
+# shutil.rmtree(tmpdir)
+# msg = "Package tarball was created from an install "
+# msg += "prefix with a different directory layout. "
+# msg += "It cannot be relocated because it "
+# msg += "uses relative rpaths."
+# raise NewLayoutException(msg)
# extract the tarball in a temp directory
with closing(tarfile.open(tarfile_path, 'r')) as tar:
tar.extractall(path=tmpdir)
- # the base of the install prefix is used when creating the tarball
- # so the pathname should be the same now that the directory layout
- # is confirmed
- workdir = os.path.join(tmpdir, os.path.basename(spec.prefix))
+ # get the parent directory of the file .spack/binary_distribution
+ # this should the directory unpacked from the tarball whose
+ # name is unknown because the prefix naming is unknown
+ bindist_file = glob.glob('%s/*/.spack/binary_distribution' % tmpdir)[0]
+ workdir = re.sub('/.spack/binary_distribution$', '', bindist_file)
+ tty.debug('workdir %s' % workdir)
# install_tree copies hardlinks
# create a temporary tarfile from prefix and exract it to workdir
# tarfile preserves hardlinks
@@ -669,10 +746,10 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
os.remove(specfile_path)
try:
- relocate_package(spec.prefix, spec, allow_root)
+ relocate_package(spec, allow_root)
except Exception as e:
shutil.rmtree(spec.prefix)
- tty.die(e)
+ raise e
else:
manifest_file = os.path.join(spec.prefix,
spack.store.layout.metadata_dir,
@@ -682,6 +759,8 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
tty.warn('No manifest file in tarball for spec %s' % spec_id)
finally:
shutil.rmtree(tmpdir)
+ if os.path.exists(filename):
+ os.remove(filename)
# Internal cache for downloaded specs
@@ -729,7 +808,7 @@ def get_spec(spec=None, force=False):
tty.debug("No Spack mirrors are currently configured")
return {}
- if spec in _cached_specs:
+ if _cached_specs and spec in _cached_specs:
return _cached_specs
for mirror in spack.mirror.MirrorCollection().values():
@@ -799,6 +878,7 @@ def get_specs(force=False, allarch=False):
def get_keys(install=False, trust=False, force=False):
"""
Get pgp public keys available on mirror
+ with suffix .key or .pub
"""
if not spack.mirror.MirrorCollection():
tty.die("Please add a spack mirror to allow " +
@@ -813,18 +893,20 @@ def get_keys(install=False, trust=False, force=False):
mirror_dir = url_util.local_file_path(fetch_url_build_cache)
if mirror_dir:
tty.msg("Finding public keys in %s" % mirror_dir)
- files = os.listdir(mirror_dir)
+ files = os.listdir(str(mirror_dir))
for file in files:
- if re.search(r'\.key', file):
+ if re.search(r'\.key', file) or re.search(r'\.pub', file):
link = url_util.join(fetch_url_build_cache, file)
keys.add(link)
else:
tty.msg("Finding public keys at %s" %
url_util.format(fetch_url_build_cache))
- p, links = web_util.spider(fetch_url_build_cache, depth=1)
+ # For s3 mirror need to request index.html directly
+ p, links = web_util.spider(
+ url_util.join(fetch_url_build_cache, 'index.html'))
for link in links:
- if re.search(r'\.key', link):
+ if re.search(r'\.key', link) or re.search(r'\.pub', link):
keys.add(link)
for link in keys:
diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py
index c21b8dad71..5b4f223d41 100644
--- a/lib/spack/spack/build_systems/autotools.py
+++ b/lib/spack/spack/build_systems/autotools.py
@@ -263,6 +263,12 @@ class AutotoolsPackage(PackageBase):
if values:
values_str = '{0}={1}'.format(flag.upper(), ' '.join(values))
self.configure_flag_args.append(values_str)
+ # Spack's fflags are meant for both F77 and FC, therefore we
+ # additionaly set FCFLAGS if required.
+ values = flags.get('fflags', None)
+ if values:
+ values_str = 'FCFLAGS={0}'.format(' '.join(values))
+ self.configure_flag_args.append(values_str)
def configure(self, spec, prefix):
"""Runs configure with the arguments specified in
diff --git a/lib/spack/spack/build_systems/cmake.py b/lib/spack/spack/build_systems/cmake.py
index 14f33e94e6..d7da957a9d 100644
--- a/lib/spack/spack/build_systems/cmake.py
+++ b/lib/spack/spack/build_systems/cmake.py
@@ -147,33 +147,129 @@ class CMakePackage(PackageBase):
except KeyError:
build_type = 'RelWithDebInfo'
+ define = CMakePackage.define
args = [
'-G', generator,
- '-DCMAKE_INSTALL_PREFIX:PATH={0}'.format(pkg.prefix),
- '-DCMAKE_BUILD_TYPE:STRING={0}'.format(build_type),
+ define('CMAKE_INSTALL_PREFIX', pkg.prefix),
+ define('CMAKE_BUILD_TYPE', build_type),
]
if primary_generator == 'Unix Makefiles':
- args.append('-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON')
+ args.append(define('CMAKE_VERBOSE_MAKEFILE', True))
if platform.mac_ver()[0]:
args.extend([
- '-DCMAKE_FIND_FRAMEWORK:STRING=LAST',
- '-DCMAKE_FIND_APPBUNDLE:STRING=LAST'
+ define('CMAKE_FIND_FRAMEWORK', "LAST"),
+ define('CMAKE_FIND_APPBUNDLE', "LAST"),
])
# Set up CMake rpath
- args.append('-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=FALSE')
- rpaths = ';'.join(spack.build_environment.get_rpaths(pkg))
- args.append('-DCMAKE_INSTALL_RPATH:STRING={0}'.format(rpaths))
+ args.extend([
+ define('CMAKE_INSTALL_RPATH_USE_LINK_PATH', False),
+ define('CMAKE_INSTALL_RPATH',
+ spack.build_environment.get_rpaths(pkg)),
+ ])
# CMake's find_package() looks in CMAKE_PREFIX_PATH first, help CMake
# to find immediate link dependencies in right places:
deps = [d.prefix for d in
pkg.spec.dependencies(deptype=('build', 'link'))]
deps = filter_system_paths(deps)
- args.append('-DCMAKE_PREFIX_PATH:STRING={0}'.format(';'.join(deps)))
+ args.append(define('CMAKE_PREFIX_PATH', deps))
return args
+ @staticmethod
+ def define(cmake_var, value):
+ """Return a CMake command line argument that defines a variable.
+
+ The resulting argument will convert boolean values to OFF/ON
+ and lists/tuples to CMake semicolon-separated string lists. All other
+ values will be interpreted as strings.
+
+ Examples:
+
+ .. code-block:: python
+
+ [define('BUILD_SHARED_LIBS', True),
+ define('CMAKE_CXX_STANDARD', 14),
+ define('swr', ['avx', 'avx2'])]
+
+ will generate the following configuration options:
+
+ .. code-block:: console
+
+ ["-DBUILD_SHARED_LIBS:BOOL=ON",
+ "-DCMAKE_CXX_STANDARD:STRING=14",
+ "-DSWR:STRING=avx;avx2]
+
+ """
+ # Create a list of pairs. Each pair includes a configuration
+ # option and whether or not that option is activated
+ if isinstance(value, bool):
+ kind = 'BOOL'
+ value = "ON" if value else "OFF"
+ else:
+ kind = 'STRING'
+ if isinstance(value, (list, tuple)):
+ value = ";".join(str(v) for v in value)
+ else:
+ value = str(value)
+
+ return "".join(["-D", cmake_var, ":", kind, "=", value])
+
+ def define_from_variant(self, cmake_var, variant=None):
+ """Return a CMake command line argument from the given variant's value.
+
+ The optional ``variant`` argument defaults to the lower-case transform
+ of ``cmake_var``.
+
+ This utility function is similar to
+ :py:meth:`~.AutotoolsPackage.with_or_without`.
+
+ Examples:
+
+ Given a package with:
+
+ .. code-block:: python
+
+ variant('cxxstd', default='11', values=('11', '14'),
+ multi=False, description='')
+ variant('shared', default=True, description='')
+ variant('swr', values=any_combination_of('avx', 'avx2'),
+ description='')
+
+ calling this function like:
+
+ .. code-block:: python
+
+ [define_from_variant('BUILD_SHARED_LIBS', 'shared'),
+ define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'),
+ define_from_variant('SWR')]
+
+ will generate the following configuration options:
+
+ .. code-block:: console
+
+ ["-DBUILD_SHARED_LIBS:BOOL=ON",
+ "-DCMAKE_CXX_STANDARD:STRING=14",
+ "-DSWR:STRING=avx;avx2]
+
+ for ``<spec-name> cxxstd=14 +shared swr=avx,avx2``
+ """
+
+ if variant is None:
+ variant = cmake_var.lower()
+
+ if variant not in self.variants:
+ raise KeyError(
+ '"{0}" is not a variant of "{1}"'.format(variant, self.name))
+
+ value = self.spec.variants[variant].value
+ if isinstance(value, (tuple, list)):
+ # Sort multi-valued variants for reproducibility
+ value = sorted(value)
+
+ return self.define(cmake_var, value)
+
def flags_to_build_system_args(self, flags):
"""Produces a list of all command line arguments to pass the specified
compiler flags to cmake. Note CMAKE does not have a cppflags option,
diff --git a/lib/spack/spack/build_systems/cuda.py b/lib/spack/spack/build_systems/cuda.py
index fc96cffe60..cbee710049 100644
--- a/lib/spack/spack/build_systems/cuda.py
+++ b/lib/spack/spack/build_systems/cuda.py
@@ -13,39 +13,65 @@ class CudaPackage(PackageBase):
"""Auxiliary class which contains CUDA variant, dependencies and conflicts
and is meant to unify and facilitate its usage.
"""
+ maintainers = ['ax3l', 'svenevs']
- # FIXME: keep cuda and cuda_arch separate to make usage easier untill
+ # https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
+ # https://developer.nvidia.com/cuda-gpus
+ # https://en.wikipedia.org/wiki/CUDA#GPUs_supported
+ cuda_arch_values = [
+ '10', '11', '12', '13',
+ '20', '21',
+ '30', '32', '35', '37',
+ '50', '52', '53',
+ '60', '61', '62',
+ '70', '72', '75',
+ ]
+
+ # FIXME: keep cuda and cuda_arch separate to make usage easier until
# Spack has depends_on(cuda, when='cuda_arch!=None') or alike
variant('cuda', default=False,
description='Build with CUDA')
- # see http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
- # https://developer.nvidia.com/cuda-gpus
+
variant('cuda_arch',
description='CUDA architecture',
- values=spack.variant.any_combination_of(
- '20', '30', '32', '35', '50', '52', '53', '60', '61',
- '62', '70', '72', '75'
- ))
+ values=spack.variant.any_combination_of(*cuda_arch_values))
- # see http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-examples
- # and http://llvm.org/docs/CompileCudaWithLLVM.html#compiling-cuda-code
+ # https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-examples
+ # https://llvm.org/docs/CompileCudaWithLLVM.html#compiling-cuda-code
@staticmethod
def cuda_flags(arch_list):
return [('--generate-code arch=compute_{0},code=sm_{0} '
'--generate-code arch=compute_{0},code=compute_{0}').format(s)
for s in arch_list]
- depends_on("cuda@7:", when='+cuda')
+ depends_on('cuda', when='+cuda')
# CUDA version vs Architecture
- depends_on("cuda@8:", when='cuda_arch=60')
- depends_on("cuda@8:", when='cuda_arch=61')
- depends_on("cuda@8:", when='cuda_arch=62')
- depends_on("cuda@9:", when='cuda_arch=70')
- depends_on("cuda@9:", when='cuda_arch=72')
- depends_on("cuda@10:", when='cuda_arch=75')
+ # https://en.wikipedia.org/wiki/CUDA#GPUs_supported
+ depends_on('cuda@:6.0', when='cuda_arch=10')
+ depends_on('cuda@:6.5', when='cuda_arch=11')
+ depends_on('cuda@2.1:6.5', when='cuda_arch=12')
+ depends_on('cuda@2.1:6.5', when='cuda_arch=13')
+
+ depends_on('cuda@3.0:8.0', when='cuda_arch=20')
+ depends_on('cuda@3.2:8.0', when='cuda_arch=21')
+
+ depends_on('cuda@5.0:10.2', when='cuda_arch=30')
+ depends_on('cuda@5.0:10.2', when='cuda_arch=32')
+ depends_on('cuda@5.0:10.2', when='cuda_arch=35')
+ depends_on('cuda@6.5:10.2', when='cuda_arch=37')
+
+ depends_on('cuda@6.0:', when='cuda_arch=50')
+ depends_on('cuda@6.5:', when='cuda_arch=52')
+ depends_on('cuda@6.5:', when='cuda_arch=53')
+
+ depends_on('cuda@8.0:', when='cuda_arch=60')
+ depends_on('cuda@8.0:', when='cuda_arch=61')
+ depends_on('cuda@8.0:', when='cuda_arch=62')
- depends_on('cuda@:8', when='cuda_arch=20')
+ depends_on('cuda@9.0:', when='cuda_arch=70')
+ depends_on('cuda@9.0:', when='cuda_arch=72')
+ depends_on('cuda@10.0:', when='cuda_arch=75')
# There are at least three cases to be aware of for compiler conflicts
# 1. Linux x86_64
@@ -114,12 +140,12 @@ class CudaPackage(PackageBase):
conflicts('%intel@16.0:', when='+cuda ^cuda@:8.0.43')
conflicts('%intel@17.0:', when='+cuda ^cuda@:8.0.60')
conflicts('%intel@18.0:', when='+cuda ^cuda@:9.9')
- conflicts('%intel@19.0:', when='+cuda ^cuda@:10.2.89')
+ conflicts('%intel@19.0:', when='+cuda ^cuda@:10.0')
# XL is mostly relevant for ppc64le Linux
conflicts('%xl@:12,14:', when='+cuda ^cuda@:9.1')
conflicts('%xl@:12,14:15,17:', when='+cuda ^cuda@9.2')
- conflicts('%xl@17:', when='+cuda ^cuda@10.0.130:10.2.89')
+ conflicts('%xl@17:', when='+cuda ^cuda@:10.2.89')
# Mac OS X
# platform = ' platform=darwin'
@@ -130,18 +156,8 @@ class CudaPackage(PackageBase):
# `clang-apple@x.y.z as a possible fix.
# Compiler conflicts will be eventual taken from here:
# https://docs.nvidia.com/cuda/cuda-installation-guide-mac-os-x/index.html#abstract
+ conflicts('platform=darwin', when='+cuda ^cuda@11.0:')
# Make sure cuda_arch can not be used without +cuda
- conflicts('~cuda', when='cuda_arch=20')
- conflicts('~cuda', when='cuda_arch=30')
- conflicts('~cuda', when='cuda_arch=32')
- conflicts('~cuda', when='cuda_arch=35')
- conflicts('~cuda', when='cuda_arch=50')
- conflicts('~cuda', when='cuda_arch=52')
- conflicts('~cuda', when='cuda_arch=53')
- conflicts('~cuda', when='cuda_arch=60')
- conflicts('~cuda', when='cuda_arch=61')
- conflicts('~cuda', when='cuda_arch=62')
- conflicts('~cuda', when='cuda_arch=70')
- conflicts('~cuda', when='cuda_arch=72')
- conflicts('~cuda', when='cuda_arch=75')
+ for value in cuda_arch_values:
+ conflicts('~cuda', when='cuda_arch=' + value)
diff --git a/lib/spack/spack/build_systems/sip.py b/lib/spack/spack/build_systems/sip.py
index 314f91d5d2..f814ef1837 100644
--- a/lib/spack/spack/build_systems/sip.py
+++ b/lib/spack/spack/build_systems/sip.py
@@ -5,9 +5,10 @@
import inspect
-from llnl.util.filesystem import working_dir
-from spack.directives import depends_on, extends, resource
-from spack.package import PackageBase, run_before, run_after
+from llnl.util.filesystem import working_dir, join_path
+from spack.directives import depends_on, extends
+from spack.package import PackageBase, run_after
+import os
class SIPPackage(PackageBase):
@@ -40,33 +41,12 @@ class SIPPackage(PackageBase):
extends('python')
depends_on('qt')
-
- resource(name='sip',
- url='https://www.riverbankcomputing.com/static/Downloads/sip/4.19.18/sip-4.19.18.tar.gz',
- sha256='c0bd863800ed9b15dcad477c4017cdb73fa805c25908b0240564add74d697e1e',
- destination='.')
+ depends_on('py-sip')
def python(self, *args, **kwargs):
"""The python ``Executable``."""
inspect.getmodule(self).python(*args, **kwargs)
- @run_before('configure')
- def install_sip(self):
- args = [
- '--sip-module={0}'.format(self.sip_module),
- '--bindir={0}'.format(self.prefix.bin),
- '--destdir={0}'.format(inspect.getmodule(self).site_packages_dir),
- '--incdir={0}'.format(inspect.getmodule(self).python_include_dir),
- '--sipdir={0}'.format(self.prefix.share.sip),
- '--stubsdir={0}'.format(inspect.getmodule(self).site_packages_dir),
- ]
-
- with working_dir('sip-4.19.18'):
- self.python('configure.py', *args)
-
- inspect.getmodule(self).make()
- inspect.getmodule(self).make('install')
-
def configure_file(self):
"""Returns the name of the configure file to use."""
return 'configure.py'
@@ -77,12 +57,15 @@ class SIPPackage(PackageBase):
args = self.configure_args()
+ python_include_dir = 'python' + str(spec['python'].version.up_to(2))
+
args.extend([
'--verbose',
'--confirm-license',
'--qmake', spec['qt'].prefix.bin.qmake,
- '--sip', prefix.bin.sip,
- '--sip-incdir', inspect.getmodule(self).python_include_dir,
+ '--sip', spec['py-sip'].prefix.bin.sip,
+ '--sip-incdir', join_path(spec['py-sip'].prefix.include,
+ python_include_dir),
'--bindir', prefix.bin,
'--destdir', inspect.getmodule(self).site_packages_dir,
])
@@ -131,3 +114,14 @@ class SIPPackage(PackageBase):
# Check that self.prefix is there after installation
run_after('install')(PackageBase.sanity_check_prefix)
+
+ @run_after('install')
+ def extend_path_setup(self):
+ # See github issue #14121 and PR #15297
+ module = self.spec['py-sip'].variants['module'].value
+ if module != 'sip':
+ module = module.split('.')[0]
+ with working_dir(inspect.getmodule(self).site_packages_dir):
+ with open(os.path.join(module, '__init__.py'), 'a') as f:
+ f.write('from pkgutil import extend_path\n')
+ f.write('__path__ = extend_path(__path__, __name__)\n')
diff --git a/lib/spack/spack/build_systems/sourceware.py b/lib/spack/spack/build_systems/sourceware.py
new file mode 100644
index 0000000000..b779b530dc
--- /dev/null
+++ b/lib/spack/spack/build_systems/sourceware.py
@@ -0,0 +1,37 @@
+# Copyright 2013-2020 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)
+
+import spack.util.url
+import spack.package
+
+
+class SourcewarePackage(spack.package.PackageBase):
+ """Mixin that takes care of setting url and mirrors for Sourceware.org
+ packages."""
+ #: Path of the package in a Sourceware mirror
+ sourceware_mirror_path = None
+
+ #: List of Sourceware mirrors used by Spack
+ base_mirrors = [
+ 'https://sourceware.org/pub/',
+ 'https://mirrors.kernel.org/sourceware/',
+ 'https://ftp.gwdg.de/pub/linux/sources.redhat.com/'
+ ]
+
+ @property
+ def urls(self):
+ self._ensure_sourceware_mirror_path_is_set_or_raise()
+ return [
+ spack.util.url.join(m, self.sourceware_mirror_path,
+ resolve_href=True)
+ for m in self.base_mirrors
+ ]
+
+ def _ensure_sourceware_mirror_path_is_set_or_raise(self):
+ if self.sourceware_mirror_path is None:
+ cls_name = type(self).__name__
+ msg = ('{0} must define a `sourceware_mirror_path` attribute'
+ ' [none defined]')
+ raise AttributeError(msg.format(cls_name))
diff --git a/lib/spack/spack/build_systems/xorg.py b/lib/spack/spack/build_systems/xorg.py
new file mode 100644
index 0000000000..815bb7c26b
--- /dev/null
+++ b/lib/spack/spack/build_systems/xorg.py
@@ -0,0 +1,37 @@
+# Copyright 2013-2020 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)
+
+import spack.util.url
+import spack.package
+
+
+class XorgPackage(spack.package.PackageBase):
+ """Mixin that takes care of setting url and mirrors for x.org
+ packages."""
+ #: Path of the package in a x.org mirror
+ xorg_mirror_path = None
+
+ #: List of x.org mirrors used by Spack
+ base_mirrors = [
+ 'https://www.x.org/archive/individual/',
+ 'https://mirrors.ircam.fr/pub/x.org/individual/',
+ 'http://xorg.mirrors.pair.com/individual/'
+ ]
+
+ @property
+ def urls(self):
+ self._ensure_xorg_mirror_path_is_set_or_raise()
+ return [
+ spack.util.url.join(m, self.xorg_mirror_path,
+ resolve_href=True)
+ for m in self.base_mirrors
+ ]
+
+ def _ensure_xorg_mirror_path_is_set_or_raise(self):
+ if self.xorg_mirror_path is None:
+ cls_name = type(self).__name__
+ msg = ('{0} must define a `xorg_mirror_path` attribute'
+ ' [none defined]')
+ raise AttributeError(msg.format(cls_name))
diff --git a/lib/spack/spack/caches.py b/lib/spack/spack/caches.py
index 98fa8d5795..49624c06b2 100644
--- a/lib/spack/spack/caches.py
+++ b/lib/spack/spack/caches.py
@@ -50,8 +50,9 @@ def _fetch_cache():
class MirrorCache(object):
- def __init__(self, root):
+ def __init__(self, root, skip_unstable_versions):
self.root = os.path.abspath(root)
+ self.skip_unstable_versions = skip_unstable_versions
def store(self, fetcher, relative_dest):
"""Fetch and relocate the fetcher's target into our mirror cache."""
@@ -84,5 +85,3 @@ class MirrorCache(object):
#: Spack's local cache for downloaded source archives
fetch_cache = llnl.util.lang.Singleton(_fetch_cache)
-
-mirror_cache = None
diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py
index ed06524073..cbdfccb8bf 100644
--- a/lib/spack/spack/ci.py
+++ b/lib/spack/spack/ci.py
@@ -947,8 +947,9 @@ def read_cdashid_from_mirror(spec, mirror_url):
def push_mirror_contents(env, spec, yaml_path, mirror_url, build_id):
if mirror_url:
tty.debug('Creating buildcache')
- buildcache._createtarball(env, yaml_path, None, mirror_url, None,
- True, True, False, False, True, False)
+ buildcache._createtarball(env, yaml_path, None, True, False,
+ mirror_url, None, True, False, False, True,
+ False)
if build_id:
tty.debug('Writing cdashid ({0}) to remote mirror: {1}'.format(
build_id, mirror_url))
diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py
index 2a75a87b54..83e12004a1 100644
--- a/lib/spack/spack/cmd/__init__.py
+++ b/lib/spack/spack/cmd/__init__.py
@@ -177,7 +177,7 @@ def elide_list(line_list, max_num=10):
return line_list
-def disambiguate_spec(spec, env, local=False, installed=True):
+def disambiguate_spec(spec, env, local=False, installed=True, first=False):
"""Given a spec, figure out which installed package it refers to.
Arguments:
@@ -190,10 +190,11 @@ def disambiguate_spec(spec, env, local=False, installed=True):
database query. See ``spack.database.Database._query`` for details.
"""
hashes = env.all_hashes() if env else None
- return disambiguate_spec_from_hashes(spec, hashes, local, installed)
+ return disambiguate_spec_from_hashes(spec, hashes, local, installed, first)
-def disambiguate_spec_from_hashes(spec, hashes, local=False, installed=True):
+def disambiguate_spec_from_hashes(spec, hashes, local=False,
+ installed=True, first=False):
"""Given a spec and a list of hashes, get concrete spec the spec refers to.
Arguments:
@@ -213,6 +214,9 @@ def disambiguate_spec_from_hashes(spec, hashes, local=False, installed=True):
if not matching_specs:
tty.die("Spec '%s' matches no installed packages." % spec)
+ elif first:
+ return matching_specs[0]
+
elif len(matching_specs) > 1:
format_string = '{name}{@version}{%compiler}{arch=architecture}'
args = ["%s matches multiple packages." % spec,
diff --git a/lib/spack/spack/cmd/buildcache.py b/lib/spack/spack/cmd/buildcache.py
index 392984f852..35e735cdf1 100644
--- a/lib/spack/spack/cmd/buildcache.py
+++ b/lib/spack/spack/cmd/buildcache.py
@@ -52,16 +52,35 @@ def setup_parser(subparser):
create.add_argument('-k', '--key', metavar='key',
type=str, default=None,
help="Key for signing.")
- create.add_argument('-d', '--directory', metavar='directory',
- type=str, default='.',
- help="directory in which to save the tarballs.")
+ output = create.add_mutually_exclusive_group(required=True)
+ output.add_argument('-d', '--directory',
+ metavar='directory',
+ type=str,
+ help="local directory where " +
+ "buildcaches will be written.")
+ output.add_argument('-m', '--mirror-name',
+ metavar='mirror-name',
+ type=str,
+ help="name of the mirror where " +
+ "buildcaches will be written.")
+ output.add_argument('--mirror-url',
+ metavar='mirror-url',
+ type=str,
+ help="URL of the mirror where " +
+ "buildcaches will be written.")
create.add_argument('--no-rebuild-index', action='store_true',
default=False, help="skip rebuilding index after " +
"building package(s)")
create.add_argument('-y', '--spec-yaml', default=None,
help='Create buildcache entry for spec from yaml file')
- create.add_argument('--no-deps', action='store_true', default='false',
- help='Create buildcache entry wo/ dependencies')
+ create.add_argument('--only', default='package,dependencies',
+ dest='things_to_install',
+ choices=['package', 'dependencies'],
+ help=('Select the buildcache mode. the default is to'
+ ' build a cache for the package along with all'
+ ' its dependencies. Alternatively, one can'
+ ' decide to build a cache for only the package'
+ ' or only the dependencies'))
arguments.add_common_arguments(create, ['specs'])
create.set_defaults(func=createtarball)
@@ -76,6 +95,10 @@ def setup_parser(subparser):
install.add_argument('-u', '--unsigned', action='store_true',
help="install unsigned buildcache" +
" tarballs for testing")
+ install.add_argument('-o', '--otherarch', action='store_true',
+ help="install specs from other architectures" +
+ " instead of default platform and OS")
+
arguments.add_common_arguments(install, ['specs'])
install.set_defaults(func=installtarball)
@@ -252,7 +275,8 @@ def find_matching_specs(pkgs, allow_multiple_matches=False, env=None):
return specs_from_cli
-def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False):
+def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False,
+ other_arch=False):
"""Returns a list of specs matching the not necessarily
concretized specs given from cli
@@ -266,7 +290,7 @@ def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False):
# List of specs that match expressions given via command line
specs_from_cli = []
has_errors = False
- allarch = False
+ allarch = other_arch
specs = bindist.get_specs(force, allarch)
for pkg in pkgs:
matches = []
@@ -299,8 +323,9 @@ def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False):
return specs_from_cli
-def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
- rel, unsigned, allow_root, no_rebuild_index):
+def _createtarball(env, spec_yaml, packages, add_spec, add_deps,
+ output_location, key, force, rel, unsigned, allow_root,
+ no_rebuild_index):
if spec_yaml:
packages = set()
with open(spec_yaml, 'r') as fd:
@@ -320,13 +345,12 @@ def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
pkgs = set(packages)
specs = set()
- outdir = '.'
- if directory:
- outdir = directory
-
- mirror = spack.mirror.MirrorCollection().lookup(outdir)
+ mirror = spack.mirror.MirrorCollection().lookup(output_location)
outdir = url_util.format(mirror.push_url)
+ msg = 'Buildcache files will be output to %s/build_cache' % outdir
+ tty.msg(msg)
+
signkey = None
if key:
signkey = key
@@ -342,14 +366,23 @@ def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
tty.debug('skipping external or virtual spec %s' %
match.format())
else:
- tty.debug('adding matching spec %s' % match.format())
- specs.add(match)
- if no_deps is True:
+ if add_spec:
+ tty.debug('adding matching spec %s' % match.format())
+ specs.add(match)
+ else:
+ tty.debug('skipping matching spec %s' % match.format())
+
+ if not add_deps:
continue
+
tty.debug('recursing dependencies')
for d, node in match.traverse(order='post',
depth=True,
deptype=('link', 'run')):
+ # skip root, since it's handled above
+ if d == 0:
+ continue
+
if node.external or node.virtual:
tty.debug('skipping external or virtual dependency %s' %
node.format())
@@ -360,14 +393,10 @@ def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
tty.debug('writing tarballs to %s/build_cache' % outdir)
for spec in specs:
- tty.msg('creating binary cache file for package %s ' % spec.format())
- try:
- bindist.build_tarball(spec, outdir, force, rel,
- unsigned, allow_root, signkey,
- not no_rebuild_index)
- except Exception as e:
- tty.warn('%s' % e)
- pass
+ tty.debug('creating binary cache file for package %s ' % spec.format())
+ bindist.build_tarball(spec, outdir, force, rel,
+ unsigned, allow_root, signkey,
+ not no_rebuild_index)
def createtarball(args):
@@ -376,9 +405,47 @@ def createtarball(args):
# restrict matching to current environment if one is active
env = ev.get_env(args, 'buildcache create')
- _createtarball(env, args.spec_yaml, args.specs, args.directory,
- args.key, args.no_deps, args.force, args.rel, args.unsigned,
- args.allow_root, args.no_rebuild_index)
+ output_location = None
+ if args.directory:
+ output_location = args.directory
+
+ # User meant to provide a path to a local directory.
+ # Ensure that they did not accidentally pass a URL.
+ scheme = url_util.parse(output_location, scheme='<missing>').scheme
+ if scheme != '<missing>':
+ raise ValueError(
+ '"--directory" expected a local path; got a URL, instead')
+
+ # User meant to provide a path to a local directory.
+ # Ensure that the mirror lookup does not mistake it for a named mirror.
+ output_location = 'file://' + output_location
+
+ elif args.mirror_name:
+ output_location = args.mirror_name
+
+ # User meant to provide the name of a preconfigured mirror.
+ # Ensure that the mirror lookup actually returns a named mirror.
+ result = spack.mirror.MirrorCollection().lookup(output_location)
+ if result.name == "<unnamed>":
+ raise ValueError(
+ 'no configured mirror named "{name}"'.format(
+ name=output_location))
+
+ elif args.mirror_url:
+ output_location = args.mirror_url
+
+ # User meant to provide a URL for an anonymous mirror.
+ # Ensure that they actually provided a URL.
+ scheme = url_util.parse(output_location, scheme='<missing>').scheme
+ if scheme == '<missing>':
+ raise ValueError(
+ '"{url}" is not a valid URL'.format(url=output_location))
+ add_spec = ('package' in args.things_to_install)
+ add_deps = ('dependencies' in args.things_to_install)
+
+ _createtarball(env, args.spec_yaml, args.specs, add_spec, add_deps,
+ output_location, args.key, args.force, args.rel,
+ args.unsigned, args.allow_root, args.no_rebuild_index)
def installtarball(args):
@@ -387,7 +454,8 @@ def installtarball(args):
tty.die("build cache file installation requires" +
" at least one package spec argument")
pkgs = set(args.specs)
- matches = match_downloaded_specs(pkgs, args.multiple, args.force)
+ matches = match_downloaded_specs(pkgs, args.multiple, args.force,
+ args.otherarch)
for match in matches:
install_tarball(match, args)
diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py
index 343915868c..eaeaf5337f 100644
--- a/lib/spack/spack/cmd/checksum.py
+++ b/lib/spack/spack/cmd/checksum.py
@@ -56,7 +56,8 @@ def checksum(parser, args):
tty.die("Could not find any versions for {0}".format(pkg.name))
version_lines = spack.stage.get_checksums_for_versions(
- url_dict, pkg.name, keep_stage=args.keep_stage)
+ url_dict, pkg.name, keep_stage=args.keep_stage,
+ fetch_options=pkg.fetch_options)
print()
print(version_lines)
diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py
index f9b7a382ea..304b531b49 100644
--- a/lib/spack/spack/cmd/create.py
+++ b/lib/spack/spack/cmd/create.py
@@ -245,7 +245,9 @@ class PythonPackageTemplate(PackageTemplate):
base_class_name = 'PythonPackage'
dependencies = """\
- # FIXME: Add dependencies if required.
+ # FIXME: Add dependencies if required. Only add the python dependency
+ # if you need specific versions. A generic python dependency is
+ # added implicity by the PythonPackage class.
# depends_on('python@2.X:2.Y,3.Z:', type=('build', 'run'))
# depends_on('py-setuptools', type='build')
# depends_on('py-foo', type=('build', 'run'))"""
diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py
index 4fc39251af..074e95209a 100644
--- a/lib/spack/spack/cmd/debug.py
+++ b/lib/spack/spack/cmd/debug.py
@@ -3,7 +3,10 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+from __future__ import print_function
+
import os
+import platform
import re
from datetime import datetime
from glob import glob
@@ -11,7 +14,9 @@ from glob import glob
import llnl.util.tty as tty
from llnl.util.filesystem import working_dir
+import spack.architecture as architecture
import spack.paths
+from spack.main import get_version
from spack.util.executable import which
description = "debugging commands for troubleshooting Spack"
@@ -23,6 +28,7 @@ def setup_parser(subparser):
sp = subparser.add_subparsers(metavar='SUBCOMMAND', dest='debug_command')
sp.add_parser('create-db-tarball',
help="create a tarball of Spack's installation metadata")
+ sp.add_parser('report', help='print information useful for bug reports')
def _debug_tarball_suffix():
@@ -78,6 +84,16 @@ def create_db_tarball(args):
tty.msg('Created %s' % tarball_name)
+def report(args):
+ print('* **Spack:**', get_version())
+ print('* **Python:**', platform.python_version())
+ print('* **Platform:**', architecture.Arch(
+ architecture.platform(), 'frontend', 'frontend'))
+
+
def debug(parser, args):
- action = {'create-db-tarball': create_db_tarball}
+ action = {
+ 'create-db-tarball': create_db_tarball,
+ 'report': report,
+ }
action[args.debug_command](args)
diff --git a/lib/spack/spack/cmd/dependencies.py b/lib/spack/spack/cmd/dependencies.py
index e65e050bfa..7f390341ef 100644
--- a/lib/spack/spack/cmd/dependencies.py
+++ b/lib/spack/spack/cmd/dependencies.py
@@ -9,6 +9,7 @@ from llnl.util.tty.colify import colify
import spack.cmd
import spack.cmd.common.arguments as arguments
import spack.environment as ev
+import spack.package
import spack.repo
import spack.store
@@ -52,22 +53,15 @@ def dependencies(parser, args):
else:
spec = specs[0]
-
- if not spec.virtual:
- packages = [spec.package]
- else:
- packages = [
- spack.repo.get(s.name)
- for s in spack.repo.path.providers_for(spec)]
-
- dependencies = set()
- for pkg in packages:
- possible = pkg.possible_dependencies(
- args.transitive, args.expand_virtuals, deptype=args.deptype)
- dependencies.update(possible)
+ dependencies = spack.package.possible_dependencies(
+ spec,
+ transitive=args.transitive,
+ expand_virtuals=args.expand_virtuals,
+ deptype=args.deptype
+ )
if spec.name in dependencies:
- dependencies.remove(spec.name)
+ del dependencies[spec.name]
if dependencies:
colify(sorted(dependencies))
diff --git a/lib/spack/spack/cmd/dependents.py b/lib/spack/spack/cmd/dependents.py
index e60733f589..89fd15ffda 100644
--- a/lib/spack/spack/cmd/dependents.py
+++ b/lib/spack/spack/cmd/dependents.py
@@ -30,7 +30,7 @@ def setup_parser(subparser):
def inverted_dependencies():
"""Iterate through all packages and return a dictionary mapping package
- names to possible dependnecies.
+ names to possible dependencies.
Virtual packages are included as sources, so that you can query
dependents of, e.g., `mpi`, but virtuals are not included as
diff --git a/lib/spack/spack/cmd/load.py b/lib/spack/spack/cmd/load.py
index 09f3fd31ee..3ef485941f 100644
--- a/lib/spack/spack/cmd/load.py
+++ b/lib/spack/spack/cmd/load.py
@@ -34,6 +34,14 @@ def setup_parser(subparser):
help="print csh commands to load the package")
subparser.add_argument(
+ '--first',
+ action='store_true',
+ default=False,
+ dest='load_first',
+ help="load the first match if multiple packages match the spec"
+ )
+
+ subparser.add_argument(
'--only',
default='package,dependencies',
dest='things_to_load',
@@ -47,10 +55,11 @@ the dependencies"""
def load(parser, args):
env = ev.get_env(args, 'load')
- specs = [spack.cmd.disambiguate_spec(spec, env)
+ specs = [spack.cmd.disambiguate_spec(spec, env, first=args.load_first)
for spec in spack.cmd.parse_specs(args.specs)]
if not args.shell:
+ specs_string = ' '.join(args.specs)
msg = [
"This command works best with Spack's shell support",
""
@@ -58,8 +67,8 @@ def load(parser, args):
'Or, if you want to use `spack load` without initializing',
'shell support, you can run one of these:',
'',
- ' eval `spack load --sh %s` # for bash/sh' % args.specs,
- ' eval `spack load --csh %s` # for csh/tcsh' % args.specs,
+ ' eval `spack load --sh %s` # for bash/sh' % specs_string,
+ ' eval `spack load --csh %s` # for csh/tcsh' % specs_string,
]
tty.msg(*msg)
return 1
diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py
index 5206927895..1473550a56 100644
--- a/lib/spack/spack/cmd/mirror.py
+++ b/lib/spack/spack/cmd/mirror.py
@@ -45,7 +45,10 @@ def setup_parser(subparser):
" (this requires significant time and space)")
create_parser.add_argument(
'-f', '--file', help="file with specs of packages to put in mirror")
-
+ create_parser.add_argument(
+ '--skip-unstable-versions', action='store_true',
+ help="don't cache versions unless they identify a stable (unchanging)"
+ " source code")
create_parser.add_argument(
'-D', '--dependencies', action='store_true',
help="also fetch all dependencies")
@@ -308,7 +311,8 @@ def mirror_create(args):
existed = web_util.url_exists(directory)
# Actually do the work to create the mirror
- present, mirrored, error = spack.mirror.create(directory, mirror_specs)
+ present, mirrored, error = spack.mirror.create(
+ directory, mirror_specs, args.skip_unstable_versions)
p, m, e = len(present), len(mirrored), len(error)
verb = "updated" if existed else "created"
diff --git a/lib/spack/spack/cmd/python.py b/lib/spack/spack/cmd/python.py
index 2f2290aad8..a91f3663fb 100644
--- a/lib/spack/spack/cmd/python.py
+++ b/lib/spack/spack/cmd/python.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+from __future__ import print_function
+
import os
import sys
import code
@@ -21,6 +23,9 @@ level = "long"
def setup_parser(subparser):
subparser.add_argument(
+ '-V', '--version', action='store_true',
+ help='print the Python version number and exit')
+ subparser.add_argument(
'-c', dest='python_command', help='command to execute')
subparser.add_argument(
'-m', dest='module', action='store',
@@ -31,6 +36,10 @@ def setup_parser(subparser):
def python(parser, args, unknown_args):
+ if args.version:
+ print('Python', platform.python_version())
+ return
+
if args.module:
sys.argv = ['spack-python'] + unknown_args + args.python_args
runpy.run_module(args.module, run_name="__main__", alter_sys=True)
diff --git a/lib/spack/spack/cmd/repo.py b/lib/spack/spack/cmd/repo.py
index 83acf796a2..f271790994 100644
--- a/lib/spack/spack/cmd/repo.py
+++ b/lib/spack/spack/cmd/repo.py
@@ -8,10 +8,9 @@ from __future__ import print_function
import os
import llnl.util.tty as tty
-
-import spack.spec
import spack.config
-from spack.repo import Repo, create_repo, canonicalize_path, RepoError
+import spack.repo
+import spack.util.path
description = "manage package source repositories"
section = "config"
@@ -61,7 +60,9 @@ def setup_parser(subparser):
def repo_create(args):
"""Create a new package repository."""
- full_path, namespace = create_repo(args.directory, args.namespace)
+ full_path, namespace = spack.repo.create_repo(
+ args.directory, args.namespace
+ )
tty.msg("Created repo with namespace '%s'." % namespace)
tty.msg("To register it with spack, run this command:",
'spack repo add %s' % full_path)
@@ -72,7 +73,7 @@ def repo_add(args):
path = args.path
# real_path is absolute and handles substitution.
- canon_path = canonicalize_path(path)
+ canon_path = spack.util.path.canonicalize_path(path)
# check if the path exists
if not os.path.exists(canon_path):
@@ -83,7 +84,7 @@ def repo_add(args):
tty.die("Not a Spack repository: %s" % path)
# Make sure it's actually a spack repository by constructing it.
- repo = Repo(canon_path)
+ repo = spack.repo.Repo(canon_path)
# If that succeeds, finally add it to the configuration.
repos = spack.config.get('repos', scope=args.scope)
@@ -104,9 +105,9 @@ def repo_remove(args):
namespace_or_path = args.namespace_or_path
# If the argument is a path, remove that repository from config.
- canon_path = canonicalize_path(namespace_or_path)
+ canon_path = spack.util.path.canonicalize_path(namespace_or_path)
for repo_path in repos:
- repo_canon_path = canonicalize_path(repo_path)
+ repo_canon_path = spack.util.path.canonicalize_path(repo_path)
if canon_path == repo_canon_path:
repos.remove(repo_path)
spack.config.set('repos', repos, args.scope)
@@ -116,14 +117,14 @@ def repo_remove(args):
# If it is a namespace, remove corresponding repo
for path in repos:
try:
- repo = Repo(path)
+ repo = spack.repo.Repo(path)
if repo.namespace == namespace_or_path:
repos.remove(path)
spack.config.set('repos', repos, args.scope)
tty.msg("Removed repository %s with namespace '%s'."
% (repo.root, repo.namespace))
return
- except RepoError:
+ except spack.repo.RepoError:
continue
tty.die("No repository with path or namespace: %s"
@@ -136,8 +137,8 @@ def repo_list(args):
repos = []
for r in roots:
try:
- repos.append(Repo(r))
- except RepoError:
+ repos.append(spack.repo.Repo(r))
+ except spack.repo.RepoError:
continue
msg = "%d package repositor" % len(repos)
diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py
index 36a2704eac..9fc7aa51a2 100644
--- a/lib/spack/spack/compiler.py
+++ b/lib/spack/spack/compiler.py
@@ -250,13 +250,13 @@ class Compiler(object):
PrgEnv_compiler = None
def __init__(self, cspec, operating_system, target,
- paths, modules=[], alias=None, environment=None,
+ paths, modules=None, alias=None, environment=None,
extra_rpaths=None, enable_implicit_rpaths=None,
**kwargs):
self.spec = cspec
self.operating_system = str(operating_system)
self.target = target
- self.modules = modules
+ self.modules = modules or []
self.alias = alias
self.extra_rpaths = extra_rpaths
self.enable_implicit_rpaths = enable_implicit_rpaths
@@ -317,6 +317,10 @@ class Compiler(object):
first_compiler = next((c for c in paths if c), None)
if not first_compiler:
return []
+ if not cls.verbose_flag():
+ # In this case there is no mechanism to learn what link directories
+ # are used by the compiler
+ return []
try:
tmpdir = tempfile.mkdtemp(prefix='spack-implicit-link-info')
diff --git a/lib/spack/spack/compilers/arm.py b/lib/spack/spack/compilers/arm.py
index ffce1e2b01..ca17ff42e8 100644
--- a/lib/spack/spack/compilers/arm.py
+++ b/lib/spack/spack/compilers/arm.py
@@ -4,6 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import spack.compiler
+import re
class Arm(spack.compiler.Compiler):
@@ -35,7 +36,20 @@ class Arm(spack.compiler.Compiler):
# InstalledDir:
# /opt/arm/arm-hpc-compiler-19.0_Generic-AArch64_RHEL-7_aarch64-linux/bin
version_argument = '--version'
- version_regex = r'Arm C\/C\+\+\/Fortran Compiler version ([^ )]+)'
+ version_regex = r'Arm C\/C\+\+\/Fortran Compiler version ([\d\.]+) '\
+ r'\(build number (\d+)\) '
+
+ @classmethod
+ def extract_version_from_output(cls, output):
+ """Extracts the version from compiler's output."""
+ match = re.search(cls.version_regex, output)
+ temp = 'unknown'
+ if match:
+ if match.group(1).count('.') == 1:
+ temp = match.group(1) + ".0." + match.group(2)
+ else:
+ temp = match.group(1) + "." + match.group(2)
+ return temp
@classmethod
def verbose_flag(cls):
diff --git a/lib/spack/spack/compilers/fj.py b/lib/spack/spack/compilers/fj.py
index 083fe35b0d..1f7d52f026 100644
--- a/lib/spack/spack/compilers/fj.py
+++ b/lib/spack/spack/compilers/fj.py
@@ -61,7 +61,3 @@ class Fj(spack.compiler.Compiler):
@property
def pic_flag(self):
return "-KPIC"
-
- def setup_custom_environment(self, pkg, env):
- env.append_flags('fcc_ENV', '-Nclang')
- env.append_flags('FCC_ENV', '-Nclang')
diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py
index b1c0ad73c7..445d62d2ab 100644
--- a/lib/spack/spack/config.py
+++ b/lib/spack/spack/config.py
@@ -97,6 +97,7 @@ configuration_paths = (
config_defaults = {
'config': {
'debug': False,
+ 'connect_timeout': 10,
'verify_ssl': True,
'checksum': True,
'dirty': False,
@@ -279,6 +280,7 @@ class InternalConfigScope(ConfigScope):
self.sections = syaml.syaml_dict()
if data:
+ data = InternalConfigScope._process_dict_keyname_overrides(data)
for section in data:
dsec = data[section]
validate({section: dsec}, section_schemas[section])
@@ -305,6 +307,25 @@ class InternalConfigScope(ConfigScope):
def __repr__(self):
return '<InternalConfigScope: %s>' % self.name
+ @staticmethod
+ def _process_dict_keyname_overrides(data):
+ """Turn a trailing `:' in a key name into an override attribute."""
+ result = {}
+ for sk, sv in iteritems(data):
+ if sk.endswith(':'):
+ key = syaml.syaml_str(sk[:-1])
+ key.override = True
+ else:
+ key = sk
+
+ if isinstance(sv, dict):
+ result[key]\
+ = InternalConfigScope._process_dict_keyname_overrides(sv)
+ else:
+ result[key] = copy.copy(sv)
+
+ return result
+
class Configuration(object):
"""A full Spack configuration, from a hierarchy of config files.
@@ -504,14 +525,14 @@ class Configuration(object):
Accepts the path syntax described in ``get()``.
"""
- section, _, rest = path.partition(':')
+ parts = _process_config_path(path)
+ section = parts.pop(0)
- if not rest:
+ if not parts:
self.update_config(section, value, scope=scope)
else:
section_data = self.get_config(section, scope=scope)
- parts = rest.split(':')
data = section_data
while len(parts) > 1:
key = parts.pop(0)
@@ -611,7 +632,7 @@ def _config():
"""Singleton Configuration instance.
This constructs one instance associated with this module and returns
- it. It is bundled inside a function so that configuratoin can be
+ it. It is bundled inside a function so that configuration can be
initialized lazily.
Return:
@@ -762,17 +783,12 @@ def _merge_yaml(dest, source):
Config file authors can optionally end any attribute in a dict
with `::` instead of `:`, and the key will override that of the
parent instead of merging.
-
"""
def they_are(t):
return isinstance(dest, t) and isinstance(source, t)
- # If both are None, handle specially and return None.
- if source is None and dest is None:
- return None
-
# If source is None, overwrite with source.
- elif source is None:
+ if source is None:
return None
# Source list is prepended (for precedence)
@@ -798,8 +814,9 @@ def _merge_yaml(dest, source):
# to copy mark information on source keys to dest.
key_marks[sk] = sk
- # ensure that keys are marked in the destination. the key_marks dict
- # ensures we can get the actual source key objects from dest keys
+ # ensure that keys are marked in the destination. The
+ # key_marks dict ensures we can get the actual source key
+ # objects from dest keys
for dk in list(dest.keys()):
if dk in key_marks and syaml.markable(dk):
syaml.mark(dk, key_marks[dk])
@@ -811,9 +828,34 @@ def _merge_yaml(dest, source):
return dest
- # In any other case, overwrite with a copy of the source value.
- else:
- return copy.copy(source)
+ # If we reach here source and dest are either different types or are
+ # not both lists or dicts: replace with source.
+ return copy.copy(source)
+
+
+#
+# Process a path argument to config.set() that may contain overrides ('::' or
+# trailing ':')
+#
+def _process_config_path(path):
+ result = []
+ if path.startswith(':'):
+ raise syaml.SpackYAMLError("Illegal leading `:' in path `{0}'".
+ format(path), '')
+ seen_override_in_path = False
+ while path:
+ front, sep, path = path.partition(':')
+ if (sep and not path) or path.startswith(':'):
+ if seen_override_in_path:
+ raise syaml.SpackYAMLError("Meaningless second override"
+ " indicator `::' in path `{0}'".
+ format(path), '')
+ path = path.lstrip(':')
+ front = syaml.syaml_str(front)
+ front.override = True
+ seen_override_in_path = True
+ result.append(front)
+ return result
#
diff --git a/lib/spack/spack/fetch_strategy.py b/lib/spack/spack/fetch_strategy.py
index a01bc143aa..d7613ae58a 100644
--- a/lib/spack/spack/fetch_strategy.py
+++ b/lib/spack/spack/fetch_strategy.py
@@ -256,7 +256,7 @@ class URLFetchStrategy(FetchStrategy):
self.digest = kwargs[h]
self.expand_archive = kwargs.get('expand', True)
- self.extra_curl_options = kwargs.get('curl_options', [])
+ self.extra_options = kwargs.get('fetch_options', {})
self._curl = None
self.extension = kwargs.get('extension', None)
@@ -325,8 +325,6 @@ class URLFetchStrategy(FetchStrategy):
'-D',
'-', # print out HTML headers
'-L', # resolve 3xx redirects
- # Timeout if can't establish a connection after 10 sec.
- '--connect-timeout', '10',
url,
]
@@ -338,7 +336,22 @@ class URLFetchStrategy(FetchStrategy):
else:
curl_args.append('-sS') # just errors when not.
- curl_args += self.extra_curl_options
+ connect_timeout = spack.config.get('config:connect_timeout')
+
+ if self.extra_options:
+ cookie = self.extra_options.get('cookie')
+ if cookie:
+ curl_args.append('-j') # junk cookies
+ curl_args.append('-b') # specify cookie
+ curl_args.append(cookie)
+
+ timeout = self.extra_options.get('timeout')
+ if timeout:
+ connect_timeout = max(connect_timeout, int(timeout))
+
+ if connect_timeout > 0:
+ # Timeout if can't establish a connection after n sec.
+ curl_args.extend(['--connect-timeout', str(connect_timeout)])
# Run curl but grab the mime type from the http headers
curl = self.curl
@@ -1148,6 +1161,15 @@ class S3FetchStrategy(URLFetchStrategy):
raise FailedDownloadError(self.url)
+def stable_target(fetcher):
+ """Returns whether the fetcher target is expected to have a stable
+ checksum. This is only true if the target is a preexisting archive
+ file."""
+ if isinstance(fetcher, URLFetchStrategy) and fetcher.cachable:
+ return True
+ return False
+
+
def from_url(url):
"""Given a URL, find an appropriate fetch strategy for it.
Currently just gives you a URLFetchStrategy that uses curl.
@@ -1225,7 +1247,8 @@ def _check_version_attributes(fetcher, pkg, version):
def _extrapolate(pkg, version):
"""Create a fetcher from an extrapolated URL for this version."""
try:
- return URLFetchStrategy(pkg.url_for_version(version))
+ return URLFetchStrategy(pkg.url_for_version(version),
+ fetch_options=pkg.fetch_options)
except spack.package.NoURLError:
msg = ("Can't extrapolate a URL for version %s "
"because package %s defines no URLs")
@@ -1245,6 +1268,7 @@ def _from_merged_attrs(fetcher, pkg, version):
url = getattr(pkg, fetcher.url_attr)
attrs = {fetcher.url_attr: url}
+ attrs['fetch_options'] = pkg.fetch_options
attrs.update(pkg.versions[version])
return fetcher(**attrs)
@@ -1267,8 +1291,10 @@ def for_package_version(pkg, version):
if version not in pkg.versions:
return _extrapolate(pkg, version)
+ # Set package args first so version args can override them
+ args = {'fetch_options': pkg.fetch_options}
# Grab a dict of args out of the package version dict
- args = pkg.versions[version]
+ args.update(pkg.versions[version])
# If the version specifies a `url_attr` directly, use that.
for fetcher in all_strategies:
@@ -1348,7 +1374,8 @@ def from_list_url(pkg):
args.get('checksum'))
# construct a fetcher
- return URLFetchStrategy(url_from_list, checksum)
+ return URLFetchStrategy(url_from_list, checksum,
+ fetch_options=pkg.fetch_options)
except KeyError as e:
tty.debug(e)
tty.msg("Cannot find version %s in url_list" % pkg.version)
diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py
index 3f6b2b6a0e..045ca5ffec 100644
--- a/lib/spack/spack/mirror.py
+++ b/lib/spack/spack/mirror.py
@@ -401,7 +401,7 @@ def get_matching_versions(specs, num_versions=1):
return matching
-def create(path, specs):
+def create(path, specs, skip_unstable_versions=False):
"""Create a directory to be used as a spack mirror, and fill it with
package archives.
@@ -409,6 +409,9 @@ def create(path, specs):
path: Path to create a mirror directory hierarchy in.
specs: Any package versions matching these specs will be added \
to the mirror.
+ skip_unstable_versions: if true, this skips adding resources when
+ they do not have a stable archive checksum (as determined by
+ ``fetch_strategy.stable_target``)
Return Value:
Returns a tuple of lists: (present, mirrored, error)
@@ -440,16 +443,14 @@ def create(path, specs):
raise MirrorError(
"Cannot create directory '%s':" % mirror_root, str(e))
- mirror_cache = spack.caches.MirrorCache(mirror_root)
+ mirror_cache = spack.caches.MirrorCache(
+ mirror_root, skip_unstable_versions=skip_unstable_versions)
mirror_stats = MirrorStats()
- try:
- spack.caches.mirror_cache = mirror_cache
- # Iterate through packages and download all safe tarballs for each
- for spec in specs:
- mirror_stats.next_spec(spec)
- add_single_spec(spec, mirror_root, mirror_stats)
- finally:
- spack.caches.mirror_cache = None
+
+ # Iterate through packages and download all safe tarballs for each
+ for spec in specs:
+ mirror_stats.next_spec(spec)
+ _add_single_spec(spec, mirror_cache, mirror_stats)
return mirror_stats.stats()
@@ -495,7 +496,7 @@ class MirrorStats(object):
self.errors.add(self.current_spec)
-def add_single_spec(spec, mirror_root, mirror_stats):
+def _add_single_spec(spec, mirror, mirror_stats):
tty.msg("Adding package {pkg} to mirror".format(
pkg=spec.format("{name}{@version}")
))
@@ -503,10 +504,10 @@ def add_single_spec(spec, mirror_root, mirror_stats):
while num_retries > 0:
try:
with spec.package.stage as pkg_stage:
- pkg_stage.cache_mirror(mirror_stats)
+ pkg_stage.cache_mirror(mirror, mirror_stats)
for patch in spec.package.all_patches():
- if patch.cache():
- patch.cache().cache_mirror(mirror_stats)
+ if patch.stage:
+ patch.stage.cache_mirror(mirror, mirror_stats)
patch.clean()
exception = None
break
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index b2d841f145..b8ded0364b 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -477,6 +477,9 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)):
#: This is currently only used by package sanity tests.
manual_download = False
+ #: Set of additional options used when fetching package versions.
+ fetch_options = {}
+
#
# Set default licensing information
#
@@ -602,11 +605,10 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)):
"""
deptype = spack.dependency.canonical_deptype(deptype)
- if visited is None:
- visited = {cls.name: set()}
+ visited = {} if visited is None else visited
+ missing = {} if missing is None else missing
- if missing is None:
- missing = {cls.name: set()}
+ visited.setdefault(cls.name, set())
for name, conditions in cls.dependencies.items():
# check whether this dependency could be of the type asked for
@@ -621,6 +623,7 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)):
providers = spack.repo.path.providers_for(name)
dep_names = [spec.name for spec in providers]
else:
+ visited.setdefault(cls.name, set()).add(name)
visited.setdefault(name, set())
continue
else:
@@ -1033,6 +1036,14 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)):
)
@property
+ def virtuals_provided(self):
+ """
+ virtual packages provided by this package with its spec
+ """
+ return [vspec for vspec, constraints in self.provided.items()
+ if any(self.spec.satisfies(c) for c in constraints)]
+
+ @property
def installed(self):
"""Installation status of a package.
@@ -1135,8 +1146,8 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)):
for patch in self.spec.patches:
patch.fetch()
- if patch.cache():
- patch.cache().cache_local()
+ if patch.stage:
+ patch.stage.cache_local()
def do_stage(self, mirror_only=False):
"""Unpacks and expands the fetched tarball."""
@@ -2151,26 +2162,27 @@ def possible_dependencies(*pkg_or_spec, **kwargs):
See ``PackageBase.possible_dependencies`` for details.
"""
- transitive = kwargs.get('transitive', True)
- expand_virtuals = kwargs.get('expand_virtuals', True)
- deptype = kwargs.get('deptype', 'all')
- missing = kwargs.get('missing')
-
packages = []
for pos in pkg_or_spec:
if isinstance(pos, PackageMeta):
- pkg = pos
- elif isinstance(pos, spack.spec.Spec):
- pkg = pos.package
- else:
- pkg = spack.spec.Spec(pos).package
+ packages.append(pos)
+ continue
+
+ if not isinstance(pos, spack.spec.Spec):
+ pos = spack.spec.Spec(pos)
- packages.append(pkg)
+ if spack.repo.path.is_virtual(pos.name):
+ packages.extend(
+ p.package_class
+ for p in spack.repo.path.providers_for(pos.name)
+ )
+ continue
+ else:
+ packages.append(pos.package_class)
visited = {}
for pkg in packages:
- pkg.possible_dependencies(
- transitive, expand_virtuals, deptype, visited, missing)
+ pkg.possible_dependencies(visited=visited, **kwargs)
return visited
diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py
index 2801a6d123..0158c7063a 100644
--- a/lib/spack/spack/package_prefs.py
+++ b/lib/spack/spack/package_prefs.py
@@ -6,7 +6,6 @@
import stat
from six import string_types
-from six import iteritems
import spack.repo
import spack.error
@@ -23,27 +22,6 @@ def _spec_type(component):
return _lesser_spec_types.get(component, spack.spec.Spec)
-def get_packages_config():
- """Wrapper around get_packages_config() to validate semantics."""
- config = spack.config.get('packages')
-
- # Get a list of virtuals from packages.yaml. Note that because we
- # check spack.repo, this collects virtuals that are actually provided
- # by sometihng, not just packages/names that don't exist.
- # So, this won't include, e.g., 'all'.
- virtuals = [(pkg_name, pkg_name._start_mark) for pkg_name in config
- if spack.repo.path.is_virtual(pkg_name)]
-
- # die if there are virtuals in `packages.py`
- if virtuals:
- errors = ["%s: %s" % (line_info, name) for name, line_info in virtuals]
- raise VirtualInPackagesYAMLError(
- "packages.yaml entries cannot be virtual packages:",
- '\n'.join(errors))
-
- return config
-
-
class PackagePrefs(object):
"""Defines the sort order for a set of specs.
@@ -116,7 +94,7 @@ class PackagePrefs(object):
pkglist.append('all')
for pkg in pkglist:
- pkg_entry = get_packages_config().get(pkg)
+ pkg_entry = spack.config.get('packages').get(pkg)
if not pkg_entry:
continue
@@ -160,7 +138,8 @@ class PackagePrefs(object):
def preferred_variants(cls, pkg_name):
"""Return a VariantMap of preferred variants/values for a spec."""
for pkg in (pkg_name, 'all'):
- variants = get_packages_config().get(pkg, {}).get('variants', '')
+ variants = spack.config.get('packages').get(pkg, {}).get(
+ 'variants', '')
if variants:
break
@@ -181,33 +160,29 @@ def spec_externals(spec):
# break circular import.
from spack.util.module_cmd import get_path_from_module # NOQA: ignore=F401
- allpkgs = get_packages_config()
- name = spec.name
+ allpkgs = spack.config.get('packages')
+ names = set([spec.name])
+ names |= set(vspec.name for vspec in spec.package.virtuals_provided)
external_specs = []
- pkg_paths = allpkgs.get(name, {}).get('paths', None)
- pkg_modules = allpkgs.get(name, {}).get('modules', None)
- if (not pkg_paths) and (not pkg_modules):
- return []
-
- for external_spec, path in iteritems(pkg_paths):
- if not path:
- # skip entries without paths (avoid creating extra Specs)
+ for name in names:
+ pkg_config = allpkgs.get(name, {})
+ pkg_paths = pkg_config.get('paths', {})
+ pkg_modules = pkg_config.get('modules', {})
+ if (not pkg_paths) and (not pkg_modules):
continue
- external_spec = spack.spec.Spec(external_spec,
- external_path=canonicalize_path(path))
- if external_spec.satisfies(spec):
- external_specs.append(external_spec)
-
- for external_spec, module in iteritems(pkg_modules):
- if not module:
- continue
+ for external_spec, path in pkg_paths.items():
+ external_spec = spack.spec.Spec(
+ external_spec, external_path=canonicalize_path(path))
+ if external_spec.satisfies(spec):
+ external_specs.append(external_spec)
- external_spec = spack.spec.Spec(
- external_spec, external_module=module)
- if external_spec.satisfies(spec):
- external_specs.append(external_spec)
+ for external_spec, module in pkg_modules.items():
+ external_spec = spack.spec.Spec(
+ external_spec, external_module=module)
+ if external_spec.satisfies(spec):
+ external_specs.append(external_spec)
# defensively copy returned specs
return [s.copy() for s in external_specs]
@@ -215,12 +190,11 @@ def spec_externals(spec):
def is_spec_buildable(spec):
"""Return true if the spec pkgspec is configured as buildable"""
- allpkgs = get_packages_config()
- if spec.name not in allpkgs:
- return True
- if 'buildable' not in allpkgs[spec.name]:
- return True
- return allpkgs[spec.name]['buildable']
+ allpkgs = spack.config.get('packages')
+ do_not_build = [name for name, entry in allpkgs.items()
+ if not entry.get('buildable', True)]
+ return not (spec.name in do_not_build or
+ any(spec.package.provides(name) for name in do_not_build))
def get_package_dir_permissions(spec):
diff --git a/lib/spack/spack/patch.py b/lib/spack/spack/patch.py
index bcb45387a8..3a839c5b0f 100644
--- a/lib/spack/spack/patch.py
+++ b/lib/spack/spack/patch.py
@@ -85,7 +85,8 @@ class Patch(object):
apply_patch(stage, self.path, self.level, self.working_dir)
- def cache(self):
+ @property
+ def stage(self):
return None
def to_dict(self):
@@ -248,9 +249,6 @@ class UrlPatch(Patch):
self._stage.create()
return self._stage
- def cache(self):
- return self.stage
-
def clean(self):
self.stage.destroy()
@@ -348,7 +346,8 @@ class PatchCache(object):
sha_index = self.index.get(sha256)
if not sha_index:
raise NoSuchPatchError(
- "Couldn't find patch with sha256: %s" % sha256)
+ "Couldn't find patch for package %s with sha256: %s"
+ % (pkg.fullname, sha256))
patch_dict = sha_index.get(pkg.fullname)
if not patch_dict:
diff --git a/lib/spack/spack/pkgkit.py b/lib/spack/spack/pkgkit.py
index c304fb4fca..5c9c01ff9f 100644
--- a/lib/spack/spack/pkgkit.py
+++ b/lib/spack/spack/pkgkit.py
@@ -31,6 +31,8 @@ from spack.build_systems.intel import IntelPackage
from spack.build_systems.meson import MesonPackage
from spack.build_systems.sip import SIPPackage
from spack.build_systems.gnu import GNUMirrorPackage
+from spack.build_systems.sourceware import SourcewarePackage
+from spack.build_systems.xorg import XorgPackage
from spack.mixins import filter_compiler_wrappers
diff --git a/lib/spack/spack/provider_index.py b/lib/spack/spack/provider_index.py
index 9bf4af8911..326f6aa8f1 100644
--- a/lib/spack/spack/provider_index.py
+++ b/lib/spack/spack/provider_index.py
@@ -2,54 +2,147 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+"""Classes and functions to manage providers of virtual dependencies"""
+import itertools
-"""
-The ``virtual`` module contains utility classes for virtual dependencies.
-"""
-
-from itertools import product as iproduct
-from six import iteritems
-from pprint import pformat
-
+import six
import spack.error
import spack.util.spack_json as sjson
-class ProviderIndex(object):
- """This is a dict of dicts used for finding providers of particular
- virtual dependencies. The dict of dicts looks like:
+def _cross_provider_maps(lmap, rmap):
+ """Return a dictionary that combines constraint requests from both input.
- { vpkg name :
- { full vpkg spec : set(packages providing spec) } }
+ Args:
+ lmap: main provider map
+ rmap: provider map with additional constraints
+ """
+ # TODO: this is pretty darned nasty, and inefficient, but there
+ # TODO: are not that many vdeps in most specs.
+ result = {}
+ for lspec, rspec in itertools.product(lmap, rmap):
+ try:
+ constrained = lspec.constrained(rspec)
+ except spack.error.UnsatisfiableSpecError:
+ continue
+
+ # lp and rp are left and right provider specs.
+ for lp_spec, rp_spec in itertools.product(lmap[lspec], rmap[rspec]):
+ if lp_spec.name == rp_spec.name:
+ try:
+ const = lp_spec.constrained(rp_spec, deps=False)
+ result.setdefault(constrained, set()).add(const)
+ except spack.error.UnsatisfiableSpecError:
+ continue
+ return result
+
+
+class _IndexBase(object):
+ #: This is a dict of dicts used for finding providers of particular
+ #: virtual dependencies. The dict of dicts looks like:
+ #:
+ #: { vpkg name :
+ #: { full vpkg spec : set(packages providing spec) } }
+ #:
+ #: Callers can use this to first find which packages provide a vpkg,
+ #: then find a matching full spec. e.g., in this scenario:
+ #:
+ #: { 'mpi' :
+ #: { mpi@:1.1 : set([mpich]),
+ #: mpi@:2.3 : set([mpich2@1.9:]) } }
+ #:
+ #: Calling providers_for(spec) will find specs that provide a
+ #: matching implementation of MPI. Derived class need to construct
+ #: this attribute according to the semantics above.
+ providers = None
+
+ def providers_for(self, virtual_spec):
+ """Return a list of specs of all packages that provide virtual
+ packages with the supplied spec.
+
+ Args:
+ virtual_spec: virtual spec to be provided
+ """
+ result = set()
+ # Allow string names to be passed as input, as well as specs
+ if isinstance(virtual_spec, six.string_types):
+ virtual_spec = spack.spec.Spec(virtual_spec)
- Callers can use this to first find which packages provide a vpkg,
- then find a matching full spec. e.g., in this scenario:
+ # Add all the providers that satisfy the vpkg spec.
+ if virtual_spec.name in self.providers:
+ for p_spec, spec_set in self.providers[virtual_spec.name].items():
+ if p_spec.satisfies(virtual_spec, deps=False):
+ result.update(spec_set)
- { 'mpi' :
- { mpi@:1.1 : set([mpich]),
- mpi@:2.3 : set([mpich2@1.9:]) } }
+ # Return providers in order. Defensively copy.
+ return sorted(s.copy() for s in result)
- Calling providers_for(spec) will find specs that provide a
- matching implementation of MPI.
+ def __contains__(self, name):
+ return name in self.providers
- """
+ def satisfies(self, other):
+ """Determine if the providers of virtual specs are compatible.
- def __init__(self, specs=None, restrict=False):
- """Create a new ProviderIndex.
+ Args:
+ other: another provider index
+
+ Returns:
+ True if the providers are compatible, False otherwise.
+ """
+ common = set(self.providers) & set(other.providers)
+ if not common:
+ return True
+
+ # This ensures that some provider in other COULD satisfy the
+ # vpkg constraints on self.
+ result = {}
+ for name in common:
+ crossed = _cross_provider_maps(
+ self.providers[name], other.providers[name]
+ )
+ if crossed:
+ result[name] = crossed
+
+ return all(c in result for c in common)
+
+ def __eq__(self, other):
+ return self.providers == other.providers
- Optional arguments:
+ def _transform(self, transform_fun, out_mapping_type=dict):
+ """Transform this provider index dictionary and return it.
+
+ Args:
+ transform_fun: transform_fun takes a (vpkg, pset) mapping and runs
+ it on each pair in nested dicts.
+ out_mapping_type: type to be used internally on the
+ transformed (vpkg, pset)
+
+ Returns:
+ Transformed mapping
+ """
+ return _transform(self.providers, transform_fun, out_mapping_type)
+
+ def __str__(self):
+ return str(self.providers)
- specs
- List (or sequence) of specs. If provided, will call
- `update` on this ProviderIndex with each spec in the list.
+ def __repr__(self):
+ return repr(self.providers)
- restrict
- "restricts" values to the verbatim input specs; do not
- pre-apply package's constraints.
- TODO: rename this. It is intended to keep things as broad
- as possible without overly restricting results, so it is
- not the best name.
+class ProviderIndex(_IndexBase):
+ def __init__(self, specs=None, restrict=False):
+ """Provider index based on a single mapping of providers.
+
+ Args:
+ specs (list of specs): if provided, will call update on each
+ single spec to initialize this provider index.
+
+ restrict: "restricts" values to the verbatim input specs; do not
+ pre-apply package's constraints.
+
+ TODO: rename this. It is intended to keep things as broad
+ TODO: as possible without overly restricting results, so it is
+ TODO: not the best name.
"""
if specs is None:
specs = []
@@ -67,6 +160,11 @@ class ProviderIndex(object):
self.update(spec)
def update(self, spec):
+ """Update the provider index with additional virtual specs.
+
+ Args:
+ spec: spec potentially providing additional virtual specs
+ """
if not isinstance(spec, spack.spec.Spec):
spec = spack.spec.Spec(spec)
@@ -74,10 +172,10 @@ class ProviderIndex(object):
# Empty specs do not have a package
return
- assert(not spec.virtual)
+ assert not spec.virtual, "cannot update an index using a virtual spec"
pkg_provided = spec.package_class.provided
- for provided_spec, provider_specs in iteritems(pkg_provided):
+ for provided_spec, provider_specs in six.iteritems(pkg_provided):
for provider_spec in provider_specs:
# TODO: fix this comment.
# We want satisfaction other than flags
@@ -110,94 +208,24 @@ class ProviderIndex(object):
constrained.constrain(provider_spec)
provider_map[provided_spec].add(constrained)
- def providers_for(self, *vpkg_specs):
- """Gives specs of all packages that provide virtual packages
- with the supplied specs."""
- providers = set()
- for vspec in vpkg_specs:
- # Allow string names to be passed as input, as well as specs
- if type(vspec) == str:
- vspec = spack.spec.Spec(vspec)
-
- # Add all the providers that satisfy the vpkg spec.
- if vspec.name in self.providers:
- for p_spec, spec_set in self.providers[vspec.name].items():
- if p_spec.satisfies(vspec, deps=False):
- providers.update(spec_set)
-
- # Return providers in order. Defensively copy.
- return sorted(s.copy() for s in providers)
-
- # TODO: this is pretty darned nasty, and inefficient, but there
- # are not that many vdeps in most specs.
- def _cross_provider_maps(self, lmap, rmap):
- result = {}
- for lspec, rspec in iproduct(lmap, rmap):
- try:
- constrained = lspec.constrained(rspec)
- except spack.error.UnsatisfiableSpecError:
- continue
-
- # lp and rp are left and right provider specs.
- for lp_spec, rp_spec in iproduct(lmap[lspec], rmap[rspec]):
- if lp_spec.name == rp_spec.name:
- try:
- const = lp_spec.constrained(rp_spec, deps=False)
- result.setdefault(constrained, set()).add(const)
- except spack.error.UnsatisfiableSpecError:
- continue
- return result
-
- def __contains__(self, name):
- """Whether a particular vpkg name is in the index."""
- return name in self.providers
-
- def satisfies(self, other):
- """Check that providers of virtual specs are compatible."""
- common = set(self.providers) & set(other.providers)
- if not common:
- return True
-
- # This ensures that some provider in other COULD satisfy the
- # vpkg constraints on self.
- result = {}
- for name in common:
- crossed = self._cross_provider_maps(self.providers[name],
- other.providers[name])
- if crossed:
- result[name] = crossed
-
- return all(c in result for c in common)
-
def to_json(self, stream=None):
+ """Dump a JSON representation of this object.
+
+ Args:
+ stream: stream where to dump
+ """
provider_list = self._transform(
lambda vpkg, pset: [
vpkg.to_node_dict(), [p.to_node_dict() for p in pset]], list)
sjson.dump({'provider_index': {'providers': provider_list}}, stream)
- @staticmethod
- def from_json(stream):
- data = sjson.load(stream)
-
- if not isinstance(data, dict):
- raise ProviderIndexError("JSON ProviderIndex data was not a dict.")
-
- if 'provider_index' not in data:
- raise ProviderIndexError(
- "YAML ProviderIndex does not start with 'provider_index'")
-
- index = ProviderIndex()
- providers = data['provider_index']['providers']
- index.providers = _transform(
- providers,
- lambda vpkg, plist: (
- spack.spec.Spec.from_node_dict(vpkg),
- set(spack.spec.Spec.from_node_dict(p) for p in plist)))
- return index
-
def merge(self, other):
- """Merge `other` ProviderIndex into this one."""
+ """Merge another provider index into this one.
+
+ Args:
+ other (ProviderIndex): provider index to be merged
+ """
other = other.copy() # defensive copy.
for pkg in other.providers:
@@ -236,40 +264,61 @@ class ProviderIndex(object):
del self.providers[pkg]
def copy(self):
- """Deep copy of this ProviderIndex."""
+ """Return a deep copy of this index."""
clone = ProviderIndex()
clone.providers = self._transform(
lambda vpkg, pset: (vpkg, set((p.copy() for p in pset))))
return clone
- def __eq__(self, other):
- return self.providers == other.providers
+ @staticmethod
+ def from_json(stream):
+ """Construct a provider index from its JSON representation.
- def _transform(self, transform_fun, out_mapping_type=dict):
- return _transform(self.providers, transform_fun, out_mapping_type)
+ Args:
+ stream: stream where to read from the JSON data
+ """
+ data = sjson.load(stream)
- def __str__(self):
- return pformat(
- _transform(self.providers,
- lambda k, v: (k, list(v))))
+ if not isinstance(data, dict):
+ raise ProviderIndexError("JSON ProviderIndex data was not a dict.")
+
+ if 'provider_index' not in data:
+ raise ProviderIndexError(
+ "YAML ProviderIndex does not start with 'provider_index'")
+
+ index = ProviderIndex()
+ providers = data['provider_index']['providers']
+ index.providers = _transform(
+ providers,
+ lambda vpkg, plist: (
+ spack.spec.Spec.from_node_dict(vpkg),
+ set(spack.spec.Spec.from_node_dict(p) for p in plist)))
+ return index
def _transform(providers, transform_fun, out_mapping_type=dict):
"""Syntactic sugar for transforming a providers dict.
- transform_fun takes a (vpkg, pset) mapping and runs it on each
- pair in nested dicts.
+ Args:
+ providers: provider dictionary
+ transform_fun: transform_fun takes a (vpkg, pset) mapping and runs
+ it on each pair in nested dicts.
+ out_mapping_type: type to be used internally on the
+ transformed (vpkg, pset)
+ Returns:
+ Transformed mapping
"""
def mapiter(mappings):
if isinstance(mappings, dict):
- return iteritems(mappings)
+ return six.iteritems(mappings)
else:
return iter(mappings)
return dict(
- (name, out_mapping_type([
- transform_fun(vpkg, pset) for vpkg, pset in mapiter(mappings)]))
+ (name, out_mapping_type(
+ [transform_fun(vpkg, pset) for vpkg, pset in mapiter(mappings)]
+ ))
for name, mappings in providers.items())
diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py
index 56fc993b5f..9f8669f3d4 100644
--- a/lib/spack/spack/relocate.py
+++ b/lib/spack/spack/relocate.py
@@ -2,84 +2,99 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-
import os
+import platform
import re
import shutil
-import platform
-import spack.repo
-import spack.cmd
+
import llnl.util.lang
-from spack.util.executable import Executable, ProcessError
import llnl.util.tty as tty
+import macholib.MachO
+import macholib.mach_o
+import spack.cmd
+import spack.repo
+import spack.spec
+import spack.util.executable as executable
-class InstallRootStringException(spack.error.SpackError):
- """
- Raised when the relocated binary still has the install root string.
- """
-
+class InstallRootStringError(spack.error.SpackError):
def __init__(self, file_path, root_path):
- super(InstallRootStringException, self).__init__(
+ """Signal that the relocated binary still has the original
+ Spack's store root string
+
+ Args:
+ file_path (str): path of the binary
+ root_path (str): original Spack's store root string
+ """
+ super(InstallRootStringError, self).__init__(
"\n %s \ncontains string\n %s \n"
"after replacing it in rpaths.\n"
"Package should not be relocated.\n Use -a to override." %
(file_path, root_path))
-class BinaryStringReplacementException(spack.error.SpackError):
- """
- Raised when the size of the file changes after binary path substitution.
- """
-
+class BinaryStringReplacementError(spack.error.SpackError):
def __init__(self, file_path, old_len, new_len):
- super(BinaryStringReplacementException, self).__init__(
+ """The size of the file changed after binary path substitution
+
+ Args:
+ file_path (str): file with changing size
+ old_len (str): original length of the file
+ new_len (str): length of the file after substitution
+ """
+ super(BinaryStringReplacementError, self).__init__(
"Doing a binary string replacement in %s failed.\n"
"The size of the file changed from %s to %s\n"
"when it should have remanined the same." %
(file_path, old_len, new_len))
-class MissingMacholibException(spack.error.SpackError):
- """
- Raised when the size of the file changes after binary path substitution.
- """
+class BinaryTextReplaceError(spack.error.SpackError):
+ def __init__(self, old_path, new_path):
+ """Raised when the new install path is longer than the
+ old one, so binary text replacement cannot occur.
- def __init__(self, error):
- super(MissingMacholibException, self).__init__(
- "%s\n"
- "Python package macholib needs to be avaiable to list\n"
- "and modify a mach-o binary's rpaths, deps and id.\n"
- "Use virtualenv with pip install macholib or\n"
- "use spack to install the py-macholib package\n"
- "spack install py-macholib\n"
- "spack activate py-macholib\n"
- "spack load python\n"
- % error)
+ Args:
+ old_path (str): original path to be substituted
+ new_path (str): candidate path for substitution
+ """
+ msg = "New path longer than old path: binary text"
+ msg += " replacement not possible."
+ err_msg = "The new path %s" % new_path
+ err_msg += " is longer than the old path %s.\n" % old_path
+ err_msg += "Text replacement in binaries will not work.\n"
+ err_msg += "Create buildcache from an install path "
+ err_msg += "longer than new path."
+ super(BinaryTextReplaceError, self).__init__(msg, err_msg)
-def get_patchelf():
- """
- Builds and installs spack patchelf package on linux platforms
- using the first concretized spec.
- Returns the full patchelf binary path.
+
+def _patchelf():
+ """Return the full path to the patchelf binary, if available, else None.
+
+ Search first the current PATH for patchelf. If not found, try to look
+ if the default patchelf spec is installed and if not install it.
+
+ Return None on Darwin or if patchelf cannot be found.
"""
- # as we may need patchelf, find out where it is
+ # Check if patchelf is already in the PATH
patchelf = spack.util.executable.which('patchelf')
if patchelf is not None:
return patchelf.path
- else:
- if str(spack.architecture.platform()) == 'test':
- return None
- if str(spack.architecture.platform()) == 'darwin':
- return None
- patchelf_spec = spack.cmd.parse_specs("patchelf", concretize=True)[0]
- patchelf = spack.repo.get(patchelf_spec)
- if not patchelf.installed:
- patchelf.do_install(use_cache=False)
- patchelf_executable = os.path.join(patchelf.prefix.bin, "patchelf")
- return patchelf_executable
+
+ # Check if patchelf spec is installed
+ spec = spack.spec.Spec('patchelf').concretized()
+ exe_path = os.path.join(spec.prefix.bin, "patchelf")
+ if spec.package.installed and os.path.exists(exe_path):
+ return exe_path
+
+ # Skip darwin
+ if str(spack.architecture.platform()) == 'darwin':
+ return None
+
+ # Install the spec and return its path
+ spec.package.do_install()
+ return exe_path if os.path.exists(exe_path) else None
def get_existing_elf_rpaths(path_name):
@@ -90,38 +105,58 @@ def get_existing_elf_rpaths(path_name):
# if we're relocating patchelf itself, use it
- if path_name[-13:] == "/bin/patchelf":
- patchelf = Executable(path_name)
+ if path_name.endswith("/bin/patchelf"):
+ patchelf = executable.Executable(path_name)
else:
- patchelf = Executable(get_patchelf())
+ patchelf = executable.Executable(_patchelf())
+ rpaths = list()
try:
output = patchelf('--print-rpath', '%s' %
path_name, output=str, error=str)
- return output.rstrip('\n').split(':')
- except ProcessError as e:
- tty.debug('patchelf --print-rpath produced an error on %s' %
- path_name, e)
- return []
- return
+ rpaths = output.rstrip('\n').split(':')
+ except executable.ProcessError as e:
+ msg = 'patchelf --print-rpath %s produced an error %s' % (path_name, e)
+ tty.warn(msg)
+ return rpaths
-def get_relative_rpaths(path_name, orig_dir, orig_rpaths):
+def get_relative_elf_rpaths(path_name, orig_layout_root, orig_rpaths):
"""
- Replaces orig_dir with relative path from dirname(path_name) if an rpath
- in orig_rpaths contains orig_path. Prefixes $ORIGIN
+ Replaces orig rpath with relative path from dirname(path_name) if an rpath
+ in orig_rpaths contains orig_layout_root. Prefixes $ORIGIN
to relative paths and returns replacement rpaths.
"""
rel_rpaths = []
for rpath in orig_rpaths:
- if re.match(orig_dir, rpath):
+ if re.match(orig_layout_root, rpath):
rel = os.path.relpath(rpath, start=os.path.dirname(path_name))
- rel_rpaths.append('$ORIGIN/%s' % rel)
+ rel_rpaths.append(os.path.join('$ORIGIN', '%s' % rel))
else:
rel_rpaths.append(rpath)
return rel_rpaths
+def get_normalized_elf_rpaths(orig_path_name, rel_rpaths):
+ """
+ Normalize the relative rpaths with respect to the original path name
+ of the file. If the rpath starts with $ORIGIN replace $ORIGIN with the
+ dirname of the original path name and then normalize the rpath.
+ A dictionary mapping relativized rpaths to normalized rpaths is returned.
+ """
+ norm_rpaths = list()
+ for rpath in rel_rpaths:
+ if rpath.startswith('$ORIGIN'):
+ sub = re.sub(re.escape('$ORIGIN'),
+ os.path.dirname(orig_path_name),
+ rpath)
+ norm = os.path.normpath(sub)
+ norm_rpaths.append(norm)
+ else:
+ norm_rpaths.append(rpath)
+ return norm_rpaths
+
+
def set_placeholder(dirname):
"""
return string of @'s with same length
@@ -129,183 +164,157 @@ def set_placeholder(dirname):
return '@' * len(dirname)
-def get_placeholder_rpaths(path_name, orig_rpaths):
+def macho_make_paths_relative(path_name, old_layout_root,
+ rpaths, deps, idpath):
"""
- Replaces original layout root dir with a placeholder string in all rpaths.
+ Return a dictionary mapping the original rpaths to the relativized rpaths.
+ This dictionary is used to replace paths in mach-o binaries.
+ Replace old_dir with relative path from dirname of path name
+ in rpaths and deps; idpath is replaced with @rpath/libname.
"""
- rel_rpaths = []
- orig_dir = spack.store.layout.root
- for rpath in orig_rpaths:
- if re.match(orig_dir, rpath):
- placeholder = set_placeholder(orig_dir)
- rel = re.sub(orig_dir, placeholder, rpath)
- rel_rpaths.append('%s' % rel)
- else:
- rel_rpaths.append(rpath)
- return rel_rpaths
-
-
-def macho_get_paths(path_name):
- """
- Examines the output of otool -l path_name for these three fields:
- LC_ID_DYLIB, LC_LOAD_DYLIB, LC_RPATH and parses out the rpaths,
- dependiencies and library id.
- Returns these values.
- """
- otool = Executable('otool')
- output = otool("-l", path_name, output=str, err=str)
- last_cmd = None
- idpath = None
- rpaths = []
- deps = []
- for line in output.split('\n'):
- match = re.search('( *[a-zA-Z]+ )(.*)', line)
- if match:
- lhs = match.group(1).lstrip().rstrip()
- rhs = match.group(2)
- match2 = re.search(r'(.*) \(.*\)', rhs)
- if match2:
- rhs = match2.group(1)
- if lhs == 'cmd':
- last_cmd = rhs
- if lhs == 'path' and last_cmd == 'LC_RPATH':
- rpaths.append(rhs)
- if lhs == 'name' and last_cmd == 'LC_ID_DYLIB':
- idpath = rhs
- if lhs == 'name' and last_cmd == 'LC_LOAD_DYLIB':
- deps.append(rhs)
- return rpaths, deps, idpath
-
-
-def macho_make_paths_relative(path_name, old_dir, rpaths, deps, idpath):
- """
- Replace old_dir with relative path from dirname(path_name)
- in rpaths and deps; idpaths are replaced with @rpath/libname as needed;
- replacement are returned.
- """
- new_idpath = None
+ paths_to_paths = dict()
if idpath:
- new_idpath = '@rpath/%s' % os.path.basename(idpath)
- new_rpaths = list()
- new_deps = list()
+ paths_to_paths[idpath] = os.path.join(
+ '@rpath', '%s' % os.path.basename(idpath))
for rpath in rpaths:
- if re.match(old_dir, rpath):
+ if re.match(old_layout_root, rpath):
rel = os.path.relpath(rpath, start=os.path.dirname(path_name))
- new_rpaths.append('@loader_path/%s' % rel)
+ paths_to_paths[rpath] = os.path.join('@loader_path', '%s' % rel)
else:
- new_rpaths.append(rpath)
+ paths_to_paths[rpath] = rpath
for dep in deps:
- if re.match(old_dir, dep):
+ if re.match(old_layout_root, dep):
rel = os.path.relpath(dep, start=os.path.dirname(path_name))
- new_deps.append('@loader_path/%s' % rel)
+ paths_to_paths[dep] = os.path.join('@loader_path', '%s' % rel)
else:
- new_deps.append(dep)
- return (new_rpaths, new_deps, new_idpath)
+ paths_to_paths[dep] = dep
+ return paths_to_paths
-def macho_make_paths_placeholder(rpaths, deps, idpath):
+def macho_make_paths_normal(orig_path_name, rpaths, deps, idpath):
"""
- Replace old_dir with a placeholder of the same length
- in rpaths and deps and idpaths is needed.
- replacement are returned.
+ Return a dictionary mapping the relativized rpaths to the original rpaths.
+ This dictionary is used to replace paths in mach-o binaries.
+ Replace '@loader_path' with the dirname of the origname path name
+ in rpaths and deps; idpath is replaced with the original path name
"""
- new_idpath = None
- old_dir = spack.store.layout.root
- placeholder = set_placeholder(old_dir)
+ rel_to_orig = dict()
if idpath:
- new_idpath = re.sub(old_dir, placeholder, idpath)
- new_rpaths = list()
- new_deps = list()
+ rel_to_orig[idpath] = orig_path_name
+
for rpath in rpaths:
- if re.match(old_dir, rpath):
- ph = re.sub(old_dir, placeholder, rpath)
- new_rpaths.append('%s' % ph)
+ if re.match('@loader_path', rpath):
+ norm = os.path.normpath(re.sub(re.escape('@loader_path'),
+ os.path.dirname(orig_path_name),
+ rpath))
+ rel_to_orig[rpath] = norm
else:
- new_rpaths.append(rpath)
+ rel_to_orig[rpath] = rpath
for dep in deps:
- if re.match(old_dir, dep):
- ph = re.sub(old_dir, placeholder, dep)
- new_deps.append('%s' % ph)
+ if re.match('@loader_path', dep):
+ norm = os.path.normpath(re.sub(re.escape('@loader_path'),
+ os.path.dirname(orig_path_name),
+ dep))
+ rel_to_orig[dep] = norm
else:
- new_deps.append(dep)
- return (new_rpaths, new_deps, new_idpath)
-
+ rel_to_orig[dep] = dep
+ return rel_to_orig
+
+
+def macho_find_paths(orig_rpaths, deps, idpath,
+ old_layout_root, prefix_to_prefix):
+ """
+ Inputs
+ original rpaths from mach-o binaries
+ dependency libraries for mach-o binaries
+ id path of mach-o libraries
+ old install directory layout root
+ prefix_to_prefix dictionary which maps prefixes in the old directory layout
+ to directories in the new directory layout
+ Output
+ paths_to_paths dictionary which maps all of the old paths to new paths
+ """
+ paths_to_paths = dict()
+ for orig_rpath in orig_rpaths:
+ if orig_rpath.startswith(old_layout_root):
+ for old_prefix, new_prefix in prefix_to_prefix.items():
+ if orig_rpath.startswith(old_prefix):
+ new_rpath = re.sub(re.escape(old_prefix),
+ new_prefix, orig_rpath)
+ paths_to_paths[orig_rpath] = new_rpath
+ else:
+ paths_to_paths[orig_rpath] = orig_rpath
-def macho_replace_paths(old_dir, new_dir, rpaths, deps, idpath):
- """
- Replace old_dir with new_dir in rpaths, deps and idpath
- and return replacements
- """
- new_idpath = None
if idpath:
- new_idpath = idpath.replace(old_dir, new_dir)
- new_rpaths = list()
- new_deps = list()
- for rpath in rpaths:
- new_rpath = rpath.replace(old_dir, new_dir)
- new_rpaths.append(new_rpath)
+ for old_prefix, new_prefix in prefix_to_prefix.items():
+ if idpath.startswith(old_prefix):
+ paths_to_paths[idpath] = re.sub(
+ re.escape(old_prefix), new_prefix, idpath)
for dep in deps:
- new_dep = dep.replace(old_dir, new_dir)
- new_deps.append(new_dep)
- return new_rpaths, new_deps, new_idpath
+ for old_prefix, new_prefix in prefix_to_prefix.items():
+ if dep.startswith(old_prefix):
+ paths_to_paths[dep] = re.sub(
+ re.escape(old_prefix), new_prefix, dep)
+ if dep.startswith('@'):
+ paths_to_paths[dep] = dep
+
+ return paths_to_paths
def modify_macho_object(cur_path, rpaths, deps, idpath,
- new_rpaths, new_deps, new_idpath):
+ paths_to_paths):
"""
- Modify MachO binary path_name by replacing old_dir with new_dir
- or the relative path to spack install root.
- The old install dir in LC_ID_DYLIB is replaced with the new install dir
- using install_name_tool -id newid binary
- The old install dir in LC_LOAD_DYLIB is replaced with the new install dir
- using install_name_tool -change old new binary
- The old install dir in LC_RPATH is replaced with the new install dir using
- install_name_tool -rpath old new binary
+ This function is used to make machO buildcaches on macOS by
+ replacing old paths with new paths using install_name_tool
+ Inputs:
+ mach-o binary to be modified
+ original rpaths
+ original dependency paths
+ original id path if a mach-o library
+ dictionary mapping paths in old install layout to new install layout
"""
# avoid error message for libgcc_s
if 'libgcc_' in cur_path:
return
- install_name_tool = Executable('install_name_tool')
- if new_idpath and not idpath == new_idpath:
- install_name_tool('-id', new_idpath, str(cur_path))
-
- if len(deps) == len(new_deps):
- for orig, new in zip(deps, new_deps):
- if not orig == new:
- install_name_tool('-change', orig, new, str(cur_path))
-
- if len(rpaths) == len(new_rpaths):
- for orig, new in zip(rpaths, new_rpaths):
- if not orig == new:
- install_name_tool('-rpath', orig, new, str(cur_path))
+ install_name_tool = executable.Executable('install_name_tool')
+ if idpath:
+ new_idpath = paths_to_paths.get(idpath, None)
+ if new_idpath and not idpath == new_idpath:
+ install_name_tool('-id', new_idpath, str(cur_path))
+ for dep in deps:
+ new_dep = paths_to_paths.get(dep)
+ if new_dep and dep != new_dep:
+ install_name_tool('-change', dep, new_dep, str(cur_path))
+
+ for orig_rpath in rpaths:
+ new_rpath = paths_to_paths.get(orig_rpath)
+ if new_rpath and not orig_rpath == new_rpath:
+ install_name_tool('-rpath', orig_rpath, new_rpath, str(cur_path))
return
-def modify_object_macholib(cur_path, old_dir, new_dir):
+def modify_object_macholib(cur_path, paths_to_paths):
"""
- Modify MachO binary path_name by replacing old_dir with new_dir
- or the relative path to spack install root.
- The old install dir in LC_ID_DYLIB is replaced with the new install dir
- using py-macholib
- The old install dir in LC_LOAD_DYLIB is replaced with the new install dir
- using py-macholib
- The old install dir in LC_RPATH is replaced with the new install dir using
- using py-macholib
+ This function is used when install machO buildcaches on linux by
+ rewriting mach-o loader commands for dependency library paths of
+ mach-o binaries and the id path for mach-o libraries.
+ Rewritting of rpaths is handled by replace_prefix_bin.
+ Inputs
+ mach-o binary to be modified
+ dictionary mapping paths in old install layout to new install layout
"""
- if cur_path.endswith('.o'):
- return
- try:
- from macholib.MachO import MachO
- except ImportError as e:
- raise MissingMacholibException(e)
- def match_func(cpath):
- rpath = cpath.replace(old_dir, new_dir)
- return rpath
+ dll = macholib.MachO.MachO(cur_path)
+
+ changedict = paths_to_paths
+
+ def changefunc(path):
+ npath = changedict.get(path, None)
+ return npath
+
+ dll.rewriteLoadCommands(changefunc)
- dll = MachO(cur_path)
- dll.rewriteLoadCommands(match_func)
try:
f = open(dll.filename, 'rb+')
for header in dll.headers:
@@ -320,14 +329,32 @@ def modify_object_macholib(cur_path, old_dir, new_dir):
return
-def strings_contains_installroot(path_name, root_dir):
+def macholib_get_paths(cur_path):
"""
- Check if the file contain the install root string.
+ Get rpaths, dependencies and id of mach-o objects
+ using python macholib package
"""
- strings = Executable('strings')
- output = strings('%s' % path_name,
- output=str, err=str)
- return (root_dir in output or spack.paths.prefix in output)
+ dll = macholib.MachO.MachO(cur_path)
+
+ ident = None
+ rpaths = list()
+ deps = list()
+ for header in dll.headers:
+ rpaths = [data.rstrip(b'\0').decode('utf-8')
+ for load_command, dylib_command, data in header.commands if
+ load_command.cmd == macholib.mach_o.LC_RPATH]
+ deps = [data.rstrip(b'\0').decode('utf-8')
+ for load_command, dylib_command, data in header.commands if
+ load_command.cmd == macholib.mach_o.LC_LOAD_DYLIB]
+ idents = [data.rstrip(b'\0').decode('utf-8')
+ for load_command, dylib_command, data in header.commands if
+ load_command.cmd == macholib.mach_o.LC_ID_DYLIB]
+ if len(idents) == 1:
+ ident = idents[0]
+ tty.debug('ident: %s' % ident)
+ tty.debug('deps: %s' % deps)
+ tty.debug('rpaths: %s' % rpaths)
+ return (rpaths, deps, ident)
def modify_elf_object(path_name, new_rpaths):
@@ -338,21 +365,23 @@ def modify_elf_object(path_name, new_rpaths):
new_joined = ':'.join(new_rpaths)
# if we're relocating patchelf itself, use it
+ bak_path = path_name + ".bak"
if path_name[-13:] == "/bin/patchelf":
- bak_path = path_name + ".bak"
shutil.copy(path_name, bak_path)
- patchelf = Executable(bak_path)
+ patchelf = executable.Executable(bak_path)
else:
- patchelf = Executable(get_patchelf())
+ patchelf = executable.Executable(_patchelf())
try:
patchelf('--force-rpath', '--set-rpath', '%s' % new_joined,
'%s' % path_name, output=str, error=str)
- except ProcessError as e:
- tty.die('patchelf --set-rpath %s failed' %
- path_name, e)
- pass
+ except executable.ProcessError as e:
+ msg = 'patchelf --force-rpath --set-rpath %s failed with error %s' % (
+ path_name, e)
+ tty.warn(msg)
+ if os.path.exists(bak_path):
+ os.remove(bak_path)
def needs_binary_relocation(m_type, m_subtype):
@@ -412,18 +441,19 @@ def replace_prefix_bin(path_name, old_dir, new_dir):
if padding < 0:
return data
return match.group().replace(old_dir.encode('utf-8'),
- new_dir.encode('utf-8')) + b'\0' * padding
+ os.sep.encode('utf-8') * padding +
+ new_dir.encode('utf-8'))
with open(path_name, 'rb+') as f:
data = f.read()
f.seek(0)
original_data_len = len(data)
- pat = re.compile(old_dir.encode('utf-8') + b'([^\0]*?)\0')
+ pat = re.compile(old_dir.encode('utf-8'))
if not pat.search(data):
return
ndata = pat.sub(replace, data)
if not len(ndata) == original_data_len:
- raise BinaryStringReplacementException(
+ raise BinaryStringReplacementError(
path_name, original_data_len, len(ndata))
f.write(ndata)
f.truncate()
@@ -446,95 +476,148 @@ def replace_prefix_nullterm(path_name, old_dir, new_dir):
return data
return match.group().replace(old_dir.encode('utf-8'),
new_dir.encode('utf-8')) + b'\0' * padding
+
+ if len(new_dir) > len(old_dir):
+ raise BinaryTextReplaceError(old_dir, new_dir)
+
with open(path_name, 'rb+') as f:
data = f.read()
f.seek(0)
original_data_len = len(data)
- pat = re.compile(old_dir.encode('utf-8') + b'([^\0]*?)\0')
+ pat = re.compile(re.escape(old_dir).encode('utf-8') + b'([^\0]*?)\0')
if not pat.search(data):
return
ndata = pat.sub(replace, data)
if not len(ndata) == original_data_len:
- raise BinaryStringReplacementException(
+ raise BinaryStringReplacementError(
path_name, original_data_len, len(ndata))
f.write(ndata)
f.truncate()
-def relocate_macho_binaries(path_names, old_dir, new_dir, allow_root):
+def relocate_macho_binaries(path_names, old_layout_root, new_layout_root,
+ prefix_to_prefix, rel, old_prefix, new_prefix):
"""
- Change old_dir to new_dir in LC_RPATH of mach-o files (on macOS)
- Change old_dir to new_dir in LC_ID and LC_DEP of mach-o files
- Account for the case where old_dir is now a placeholder
+ Use macholib python package to get the rpaths, depedent libraries
+ and library identity for libraries from the MachO object. Modify them
+ with the replacement paths queried from the dictionary mapping old layout
+ prefixes to hashes and the dictionary mapping hashes to the new layout
+ prefixes.
"""
- placeholder = set_placeholder(old_dir)
+
for path_name in path_names:
+ # Corner case where macho object file ended up in the path name list
if path_name.endswith('.o'):
continue
- if new_dir == old_dir:
- continue
- if platform.system().lower() == 'darwin':
- rpaths, deps, idpath = macho_get_paths(path_name)
- # one pass to replace placeholder
- (n_rpaths,
- n_deps,
- n_idpath) = macho_replace_paths(placeholder,
- new_dir,
- rpaths,
- deps,
- idpath)
- # another pass to replace old_dir
- (new_rpaths,
- new_deps,
- new_idpath) = macho_replace_paths(old_dir,
- new_dir,
- n_rpaths,
- n_deps,
- n_idpath)
- modify_macho_object(path_name,
- rpaths, deps, idpath,
- new_rpaths, new_deps, new_idpath)
+ if rel:
+ # get the relativized paths
+ rpaths, deps, idpath = macholib_get_paths(path_name)
+ # get the file path name in the original prefix
+ orig_path_name = re.sub(re.escape(new_prefix), old_prefix,
+ path_name)
+ # get the mapping of the relativized paths to the original
+ # normalized paths
+ rel_to_orig = macho_make_paths_normal(orig_path_name,
+ rpaths, deps,
+ idpath)
+ # replace the relativized paths with normalized paths
+ if platform.system().lower() == 'darwin':
+ modify_macho_object(path_name, rpaths, deps,
+ idpath, rel_to_orig)
+ else:
+ modify_object_macholib(path_name,
+ rel_to_orig)
+ # get the normalized paths in the mach-o binary
+ rpaths, deps, idpath = macholib_get_paths(path_name)
+ # get the mapping of paths in old prefix to path in new prefix
+ paths_to_paths = macho_find_paths(rpaths, deps, idpath,
+ old_layout_root,
+ prefix_to_prefix)
+ # replace the old paths with new paths
+ if platform.system().lower() == 'darwin':
+ modify_macho_object(path_name, rpaths, deps,
+ idpath, paths_to_paths)
+ else:
+ modify_object_macholib(path_name,
+ paths_to_paths)
+ # get the new normalized path in the mach-o binary
+ rpaths, deps, idpath = macholib_get_paths(path_name)
+ # get the mapping of paths to relative paths in the new prefix
+ paths_to_paths = macho_make_paths_relative(path_name,
+ new_layout_root,
+ rpaths, deps, idpath)
+ # replace the new paths with relativized paths in the new prefix
+ if platform.system().lower() == 'darwin':
+ modify_macho_object(path_name, rpaths, deps,
+ idpath, paths_to_paths)
+ else:
+ modify_object_macholib(path_name,
+ paths_to_paths)
else:
- modify_object_macholib(path_name, placeholder, new_dir)
- modify_object_macholib(path_name, old_dir, new_dir)
- if len(new_dir) <= len(old_dir):
- replace_prefix_nullterm(path_name, old_dir, new_dir)
+ # get the paths in the old prefix
+ rpaths, deps, idpath = macholib_get_paths(path_name)
+ # get the mapping of paths in the old prerix to the new prefix
+ paths_to_paths = macho_find_paths(rpaths, deps, idpath,
+ old_layout_root,
+ prefix_to_prefix)
+ # replace the old paths with new paths
+ if platform.system().lower() == 'darwin':
+ modify_macho_object(path_name, rpaths, deps,
+ idpath, paths_to_paths)
+ else:
+ modify_object_macholib(path_name,
+ paths_to_paths)
+
+
+def elf_find_paths(orig_rpaths, old_layout_root, prefix_to_prefix):
+ new_rpaths = list()
+ for orig_rpath in orig_rpaths:
+ if orig_rpath.startswith(old_layout_root):
+ for old_prefix, new_prefix in prefix_to_prefix.items():
+ if orig_rpath.startswith(old_prefix):
+ new_rpaths.append(re.sub(re.escape(old_prefix),
+ new_prefix, orig_rpath))
else:
- tty.warn('Cannot do a binary string replacement'
- ' with padding for %s'
- ' because %s is longer than %s' %
- (path_name, new_dir, old_dir))
+ new_rpaths.append(orig_rpath)
+ return new_rpaths
-def relocate_elf_binaries(path_names, old_dir, new_dir, allow_root):
+def relocate_elf_binaries(path_names, old_layout_root, new_layout_root,
+ prefix_to_prefix, rel, old_prefix, new_prefix):
"""
- Change old_dir to new_dir in RPATHs of elf binaries
- Account for the case where old_dir is now a placeholder
+ Use patchelf to get the original rpaths and then replace them with
+ rpaths in the new directory layout.
+ New rpaths are determined from a dictionary mapping the prefixes in the
+ old directory layout to the prefixes in the new directory layout if the
+ rpath was in the old layout root, i.e. system paths are not replaced.
"""
- placeholder = set_placeholder(old_dir)
for path_name in path_names:
orig_rpaths = get_existing_elf_rpaths(path_name)
- if orig_rpaths:
- # one pass to replace placeholder
- n_rpaths = substitute_rpath(orig_rpaths,
- placeholder, new_dir)
- # one pass to replace old_dir
- new_rpaths = substitute_rpath(n_rpaths,
- old_dir, new_dir)
+ new_rpaths = list()
+ if rel:
+ # get the file path in the old_prefix
+ orig_path_name = re.sub(re.escape(new_prefix), old_prefix,
+ path_name)
+ # get the normalized rpaths in the old prefix using the file path
+ # in the orig prefix
+ orig_norm_rpaths = get_normalized_elf_rpaths(orig_path_name,
+ orig_rpaths)
+ # get the normalize rpaths in the new prefix
+ norm_rpaths = elf_find_paths(orig_norm_rpaths, old_layout_root,
+ prefix_to_prefix)
+ # get the relativized rpaths in the new prefix
+ new_rpaths = get_relative_elf_rpaths(path_name, new_layout_root,
+ norm_rpaths)
+ modify_elf_object(path_name, new_rpaths)
+ else:
+ new_rpaths = elf_find_paths(orig_rpaths, old_layout_root,
+ prefix_to_prefix)
modify_elf_object(path_name, new_rpaths)
- if not new_dir == old_dir:
- if len(new_dir) <= len(old_dir):
- replace_prefix_bin(path_name, old_dir, new_dir)
- else:
- tty.warn('Cannot do a binary string replacement'
- ' with padding for %s'
- ' because %s is longer than %s.' %
- (path_name, new_dir, old_dir))
def make_link_relative(cur_path_names, orig_path_names):
"""
- Change absolute links to be relative.
+ Change absolute links to relative links.
"""
for cur_path, orig_path in zip(cur_path_names, orig_path_names):
target = os.readlink(orig_path)
@@ -544,8 +627,8 @@ def make_link_relative(cur_path_names, orig_path_names):
os.symlink(relative_target, cur_path)
-def make_macho_binaries_relative(cur_path_names, orig_path_names, old_dir,
- allow_root):
+def make_macho_binaries_relative(cur_path_names, orig_path_names,
+ old_layout_root):
"""
Replace old RPATHs with paths relative to old_dir in binary files
"""
@@ -554,33 +637,26 @@ def make_macho_binaries_relative(cur_path_names, orig_path_names, old_dir,
deps = set()
idpath = None
if platform.system().lower() == 'darwin':
- (rpaths, deps, idpath) = macho_get_paths(cur_path)
- (new_rpaths,
- new_deps,
- new_idpath) = macho_make_paths_relative(orig_path, old_dir,
- rpaths, deps, idpath)
+ (rpaths, deps, idpath) = macholib_get_paths(cur_path)
+ paths_to_paths = macho_make_paths_relative(orig_path,
+ old_layout_root,
+ rpaths, deps, idpath)
modify_macho_object(cur_path,
rpaths, deps, idpath,
- new_rpaths, new_deps, new_idpath)
- if (not allow_root and
- not file_is_relocatable(cur_path)):
- raise InstallRootStringException(cur_path, old_dir)
+ paths_to_paths)
-def make_elf_binaries_relative(cur_path_names, orig_path_names, old_dir,
- allow_root):
+def make_elf_binaries_relative(cur_path_names, orig_path_names,
+ old_layout_root):
"""
Replace old RPATHs with paths relative to old_dir in binary files
"""
for cur_path, orig_path in zip(cur_path_names, orig_path_names):
orig_rpaths = get_existing_elf_rpaths(cur_path)
if orig_rpaths:
- new_rpaths = get_relative_rpaths(orig_path, old_dir,
- orig_rpaths)
+ new_rpaths = get_relative_elf_rpaths(orig_path, old_layout_root,
+ orig_rpaths)
modify_elf_object(cur_path, new_rpaths)
- if (not allow_root and
- not file_is_relocatable(cur_path)):
- raise InstallRootStringException(cur_path, old_dir)
def check_files_relocatable(cur_path_names, allow_root):
@@ -590,67 +666,77 @@ def check_files_relocatable(cur_path_names, allow_root):
for cur_path in cur_path_names:
if (not allow_root and
not file_is_relocatable(cur_path)):
- raise InstallRootStringException(
+ raise InstallRootStringError(
cur_path, spack.store.layout.root)
-def make_link_placeholder(cur_path_names, cur_dir, old_dir):
- """
- Replace old install path with placeholder in absolute links.
-
- Links in ``cur_path_names`` must link to absolute paths.
- """
- for cur_path in cur_path_names:
- placeholder = set_placeholder(spack.store.layout.root)
- placeholder_prefix = old_dir.replace(spack.store.layout.root,
- placeholder)
- cur_src = os.readlink(cur_path)
- rel_src = os.path.relpath(cur_src, cur_dir)
- new_src = os.path.join(placeholder_prefix, rel_src)
-
- os.unlink(cur_path)
- os.symlink(new_src, cur_path)
-
-
-def relocate_links(path_names, old_dir, new_dir):
- """
- Replace old path with new path in link sources.
-
- Links in ``path_names`` must link to absolute paths or placeholders.
- """
- placeholder = set_placeholder(old_dir)
- for path_name in path_names:
- old_src = os.readlink(path_name)
- # replace either placeholder or old_dir
- new_src = old_src.replace(placeholder, new_dir, 1)
- new_src = new_src.replace(old_dir, new_dir, 1)
-
- os.unlink(path_name)
- os.symlink(new_src, path_name)
-
+def relocate_links(linknames, old_layout_root, new_layout_root,
+ old_install_prefix, new_install_prefix, prefix_to_prefix):
+ """
+ The symbolic links in filenames are absolute links or placeholder links.
+ The old link target is read and the placeholder is replaced by the old
+ layout root. If the old link target is in the old install prefix, the new
+ link target is create by replacing the old install prefix with the new
+ install prefix.
+ """
+ placeholder = set_placeholder(old_layout_root)
+ link_names = [os.path.join(new_install_prefix, linkname)
+ for linkname in linknames]
+ for link_name in link_names:
+ link_target = os.readlink(link_name)
+ link_target = re.sub(placeholder, old_layout_root, link_target)
+ if link_target.startswith(old_install_prefix):
+ new_link_target = re.sub(
+ old_install_prefix, new_install_prefix, link_target)
+ os.unlink(link_name)
+ os.symlink(new_link_target, link_name)
+ if (os.path.isabs(link_target) and
+ not link_target.startswith(new_install_prefix)):
+ msg = 'Link target %s' % link_target
+ msg += ' for symbolic link %s is outside' % link_name
+ msg += ' of the newinstall prefix %s.\n' % new_install_prefix
+ tty.warn(msg)
+
+
+def relocate_text(path_names, old_layout_root, new_layout_root,
+ old_install_prefix, new_install_prefix,
+ old_spack_prefix, new_spack_prefix,
+ prefix_to_prefix):
+ """
+ Replace old paths with new paths in text files
+ including the path the the spack sbang script
+ """
+ sbangre = '#!/bin/bash %s/bin/sbang' % old_spack_prefix
+ sbangnew = '#!/bin/bash %s/bin/sbang' % new_spack_prefix
-def relocate_text(path_names, oldpath, newpath, oldprefix, newprefix):
- """
- Replace old path with new path in text files
- including the path the the spack sbang script.
- """
- sbangre = '#!/bin/bash %s/bin/sbang' % oldprefix
- sbangnew = '#!/bin/bash %s/bin/sbang' % newprefix
for path_name in path_names:
- replace_prefix_text(path_name, oldpath, newpath)
+ replace_prefix_text(path_name, old_install_prefix, new_install_prefix)
+ for orig_dep_prefix, new_dep_prefix in prefix_to_prefix.items():
+ replace_prefix_text(path_name, orig_dep_prefix, new_dep_prefix)
+ replace_prefix_text(path_name, old_layout_root, new_layout_root)
replace_prefix_text(path_name, sbangre, sbangnew)
- replace_prefix_text(path_name, oldprefix, newprefix)
-def substitute_rpath(orig_rpath, topdir, new_root_path):
- """
- Replace topdir with new_root_path RPATH list orig_rpath
- """
- new_rpaths = []
- for path in orig_rpath:
- new_rpath = path.replace(topdir, new_root_path)
- new_rpaths.append(new_rpath)
- return new_rpaths
+def relocate_text_bin(path_names, old_layout_root, new_layout_root,
+ old_install_prefix, new_install_prefix,
+ old_spack_prefix, new_spack_prefix,
+ prefix_to_prefix):
+ """
+ Replace null terminated path strings hard coded into binaries.
+ Raise an exception when the new path in longer than the old path
+ because this breaks the binary.
+ """
+ if len(new_install_prefix) <= len(old_install_prefix):
+ for path_name in path_names:
+ for old_dep_prefix, new_dep_prefix in prefix_to_prefix.items():
+ if len(new_dep_prefix) <= len(old_dep_prefix):
+ replace_prefix_bin(
+ path_name, old_dep_prefix, new_dep_prefix)
+ replace_prefix_bin(path_name, old_spack_prefix, new_spack_prefix)
+ else:
+ if len(path_names) > 0:
+ raise BinaryTextReplaceError(
+ old_install_prefix, new_install_prefix)
def is_relocatable(spec):
@@ -713,7 +799,7 @@ def file_is_relocatable(file, paths_to_relocate=None):
if not os.path.isabs(file):
raise ValueError('{0} is not an absolute path'.format(file))
- strings = Executable('strings')
+ strings = executable.Executable('strings')
# Remove the RPATHS from the strings in the executable
set_of_strings = set(strings(file, output=str).split())
@@ -728,7 +814,7 @@ def file_is_relocatable(file, paths_to_relocate=None):
set_of_strings.discard(rpaths)
if platform.system().lower() == 'darwin':
if m_subtype == 'x-mach-binary':
- rpaths, deps, idpath = macho_get_paths(file)
+ rpaths, deps, idpath = macholib_get_paths(file)
set_of_strings.discard(set(rpaths))
set_of_strings.discard(set(deps))
if idpath is not None:
@@ -775,9 +861,11 @@ def mime_type(file):
Returns:
Tuple containing the MIME type and subtype
"""
- file_cmd = Executable('file')
+ file_cmd = executable.Executable('file')
output = file_cmd('-b', '-h', '--mime-type', file, output=str, error=str)
tty.debug('[MIME_TYPE] {0} -> {1}'.format(file, output.strip()))
+ # In corner cases the output does not contain a subtype prefixed with a /
+ # In those cases add the / so the tuple can be formed.
if '/' not in output:
output += '/'
split_by_slash = output.strip().split('/')
diff --git a/lib/spack/spack/repo.py b/lib/spack/spack/repo.py
index 8e3dae5d47..764f1f9168 100644
--- a/lib/spack/spack/repo.py
+++ b/lib/spack/spack/repo.py
@@ -16,22 +16,20 @@ import shutil
import stat
import sys
import traceback
-
-from six import string_types, add_metaclass
+import types
try:
from collections.abc import Mapping # novm
except ImportError:
from collections import Mapping
-from types import ModuleType
+import six
import ruamel.yaml as yaml
import llnl.util.lang
import llnl.util.tty as tty
-from llnl.util.filesystem import mkdirp, install
-
+import llnl.util.filesystem as fs
import spack.config
import spack.caches
import spack.error
@@ -39,11 +37,9 @@ import spack.patch
import spack.spec
import spack.util.spack_json as sjson
import spack.util.imp as simp
-from spack.provider_index import ProviderIndex
-from spack.util.path import canonicalize_path
-from spack.util.naming import NamespaceTrie, valid_module_name
-from spack.util.naming import mod_to_class, possible_spack_module_names
-
+import spack.provider_index
+import spack.util.path
+import spack.util.naming as nm
#: Super-namespace for all packages.
#: Package modules are imported as spack.pkg.<namespace>.<pkg-name>.
@@ -95,7 +91,7 @@ def autospec(function):
return converter
-class SpackNamespace(ModuleType):
+class SpackNamespace(types.ModuleType):
""" Allow lazy loading of modules."""
def __init__(self, namespace):
@@ -151,7 +147,7 @@ class FastPackageChecker(Mapping):
pkg_dir = os.path.join(self.packages_path, pkg_name)
# Warn about invalid names that look like packages.
- if not valid_module_name(pkg_name):
+ if not nm.valid_module_name(pkg_name):
if not pkg_name.startswith('.'):
tty.warn('Skipping package at {0}. "{1}" is not '
'a valid Spack module name.'.format(
@@ -244,10 +240,11 @@ class TagIndex(Mapping):
# Add it again under the appropriate tags
for tag in getattr(package, 'tags', []):
+ tag = tag.lower()
self._tag_dict[tag].append(package.name)
-@add_metaclass(abc.ABCMeta)
+@six.add_metaclass(abc.ABCMeta)
class Indexer(object):
"""Adaptor for indexes that need to be generated when repos are updated."""
@@ -305,10 +302,10 @@ class TagIndexer(Indexer):
class ProviderIndexer(Indexer):
"""Lifecycle methods for virtual package providers."""
def _create(self):
- return ProviderIndex()
+ return spack.provider_index.ProviderIndex()
def read(self, stream):
- self.index = ProviderIndex.from_json(stream)
+ self.index = spack.provider_index.ProviderIndex.from_json(stream)
def update(self, pkg_fullname):
self.index.remove_provider(pkg_fullname)
@@ -447,7 +444,7 @@ class RepoPath(object):
def __init__(self, *repos):
self.repos = []
- self.by_namespace = NamespaceTrie()
+ self.by_namespace = nm.NamespaceTrie()
self._all_package_names = None
self._provider_index = None
@@ -456,7 +453,7 @@ class RepoPath(object):
# Add each repo to this path.
for repo in repos:
try:
- if isinstance(repo, string_types):
+ if isinstance(repo, six.string_types):
repo = Repo(repo)
self.put_last(repo)
except RepoError as e:
@@ -544,7 +541,7 @@ class RepoPath(object):
def provider_index(self):
"""Merged ProviderIndex from all Repos in the RepoPath."""
if self._provider_index is None:
- self._provider_index = ProviderIndex()
+ self._provider_index = spack.provider_index.ProviderIndex()
for repo in reversed(self.repos):
self._provider_index.merge(repo.provider_index)
@@ -707,7 +704,7 @@ class Repo(object):
"""
# Root directory, containing _repo.yaml and package dirs
# Allow roots to by spack-relative by starting with '$spack'
- self.root = canonicalize_path(root)
+ self.root = spack.util.path.canonicalize_path(root)
# check and raise BadRepoError on fail.
def check(condition, msg):
@@ -803,7 +800,7 @@ class Repo(object):
if import_name in self:
return import_name
- options = possible_spack_module_names(import_name)
+ options = nm.possible_spack_module_names(import_name)
options.remove(import_name)
for name in options:
if name in self:
@@ -921,18 +918,18 @@ class Repo(object):
% (self.namespace, spec.fullname))
# Install patch files needed by the package.
- mkdirp(path)
+ fs.mkdirp(path)
for patch in itertools.chain.from_iterable(
spec.package.patches.values()):
if patch.path:
if os.path.exists(patch.path):
- install(patch.path, path)
+ fs.install(patch.path, path)
else:
tty.warn("Patch file did not exist: %s" % patch.path)
# Install the package.py file itself.
- install(self.filename_for_package_name(spec.name), path)
+ fs.install(self.filename_for_package_name(spec.name), path)
def purge(self):
"""Clear entire package instance cache."""
@@ -1006,6 +1003,7 @@ class Repo(object):
index = self.tag_index
for t in tags:
+ t = t.lower()
v &= set(index[t])
return sorted(v)
@@ -1082,7 +1080,7 @@ class Repo(object):
raise InvalidNamespaceError('Invalid namespace for %s repo: %s'
% (self.namespace, namespace))
- class_name = mod_to_class(pkg_name)
+ class_name = nm.mod_to_class(pkg_name)
module = self._get_pkg_module(pkg_name)
cls = getattr(module, class_name)
@@ -1107,7 +1105,7 @@ def create_repo(root, namespace=None):
If the namespace is not provided, use basename of root.
Return the canonicalized path and namespace of the created repository.
"""
- root = canonicalize_path(root)
+ root = spack.util.path.canonicalize_path(root)
if not namespace:
namespace = os.path.basename(root)
@@ -1141,7 +1139,7 @@ def create_repo(root, namespace=None):
config_path = os.path.join(root, repo_config_name)
packages_path = os.path.join(root, packages_dir_name)
- mkdirp(packages_path)
+ fs.mkdirp(packages_path)
with open(config_path, 'w') as config:
config.write("repo:\n")
config.write(" namespace: '%s'\n" % namespace)
@@ -1163,7 +1161,7 @@ def create_repo(root, namespace=None):
def create_or_construct(path, namespace=None):
"""Create a repository, or just return a Repo if it already exists."""
if not os.path.exists(path):
- mkdirp(path)
+ fs.mkdirp(path)
create_repo(path, namespace)
return Repo(path)
diff --git a/lib/spack/spack/schema/config.py b/lib/spack/spack/schema/config.py
index 1378698825..a05af2f438 100644
--- a/lib/spack/spack/schema/config.py
+++ b/lib/spack/spack/schema/config.py
@@ -55,6 +55,7 @@ properties = {
},
'source_cache': {'type': 'string'},
'misc_cache': {'type': 'string'},
+ 'connect_timeout': {'type': 'integer', 'minimum': 0},
'verify_ssl': {'type': 'boolean'},
'suppress_gpg_warnings': {'type': 'boolean'},
'install_missing_compilers': {'type': 'boolean'},
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 718b5ef14d..c6fe2da762 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -3120,7 +3120,7 @@ class Spec(object):
A copy of this spec.
Examples:
- Deep copy with dependnecies::
+ Deep copy with dependencies::
spec.copy()
spec.copy(deps=True)
diff --git a/lib/spack/spack/stage.py b/lib/spack/spack/stage.py
index b445638228..54d370a50d 100644
--- a/lib/spack/spack/stage.py
+++ b/lib/spack/spack/stage.py
@@ -493,8 +493,14 @@ class Stage(object):
spack.caches.fetch_cache.store(
self.fetcher, self.mirror_paths.storage_path)
- def cache_mirror(self, stats):
- """Perform a fetch if the resource is not already cached"""
+ def cache_mirror(self, mirror, stats):
+ """Perform a fetch if the resource is not already cached
+
+ Arguments:
+ mirror (MirrorCache): the mirror to cache this Stage's resource in
+ stats (MirrorStats): this is updated depending on whether the
+ caching operation succeeded or failed
+ """
if isinstance(self.default_fetcher, fs.BundleFetchStrategy):
# BundleFetchStrategy has no source to fetch. The associated
# fetcher does nothing but the associated stage may still exist.
@@ -505,20 +511,23 @@ class Stage(object):
# must examine the type of the fetcher.
return
- dst_root = spack.caches.mirror_cache.root
+ if (mirror.skip_unstable_versions and
+ not fs.stable_target(self.default_fetcher)):
+ return
+
absolute_storage_path = os.path.join(
- dst_root, self.mirror_paths.storage_path)
+ mirror.root, self.mirror_paths.storage_path)
if os.path.exists(absolute_storage_path):
stats.already_existed(absolute_storage_path)
else:
self.fetch()
self.check()
- spack.caches.mirror_cache.store(
+ mirror.store(
self.fetcher, self.mirror_paths.storage_path)
stats.added(absolute_storage_path)
- spack.caches.mirror_cache.symlink(self.mirror_paths)
+ mirror.symlink(self.mirror_paths)
def expand_archive(self):
"""Changes to the stage directory and attempt to expand the downloaded
@@ -743,7 +752,8 @@ def purge():
def get_checksums_for_versions(
- url_dict, name, first_stage_function=None, keep_stage=False):
+ url_dict, name, first_stage_function=None, keep_stage=False,
+ fetch_options=None):
"""Fetches and checksums archives from URLs.
This function is called by both ``spack checksum`` and ``spack
@@ -757,6 +767,8 @@ def get_checksums_for_versions(
first_stage_function (callable): function that takes a Stage and a URL;
this is run on the stage of the first URL downloaded
keep_stage (bool): whether to keep staging area when command completes
+ fetch_options (dict): Options used for the fetcher (such as timeout
+ or cookies)
Returns:
(str): A multi-line string containing versions and corresponding hashes
@@ -790,7 +802,12 @@ def get_checksums_for_versions(
i = 0
for url, version in zip(urls, versions):
try:
- with Stage(url, keep=keep_stage) as stage:
+ if fetch_options:
+ url_or_fs = fs.URLFetchStrategy(
+ url, fetch_options=fetch_options)
+ else:
+ url_or_fs = url
+ with Stage(url_or_fs, keep=keep_stage) as stage:
# Fetch the archive
stage.fetch()
if i == 0 and first_stage_function:
diff --git a/lib/spack/spack/test/build_systems.py b/lib/spack/spack/test/build_systems.py
index 744821a04e..295704798f 100644
--- a/lib/spack/spack/test/build_systems.py
+++ b/lib/spack/spack/test/build_systems.py
@@ -181,3 +181,110 @@ class TestAutotoolsPackage(object):
assert '--without-bar' in options
assert '--without-baz' in options
assert '--no-fee' in options
+
+
+@pytest.mark.usefixtures('config', 'mock_packages')
+class TestCMakePackage(object):
+
+ def test_define(self):
+ s = Spec('cmake-client')
+ s.concretize()
+ pkg = spack.repo.get(s)
+
+ for cls in (list, tuple):
+ arg = pkg.define('MULTI', cls(['right', 'up']))
+ assert arg == '-DMULTI:STRING=right;up'
+
+ arg = pkg.define('ENABLE_TRUTH', False)
+ assert arg == '-DENABLE_TRUTH:BOOL=OFF'
+ arg = pkg.define('ENABLE_TRUTH', True)
+ assert arg == '-DENABLE_TRUTH:BOOL=ON'
+
+ arg = pkg.define('SINGLE', 'red')
+ assert arg == '-DSINGLE:STRING=red'
+
+ def test_define_from_variant(self):
+ s = Spec('cmake-client multi=up,right ~truthy single=red')
+ s.concretize()
+ pkg = spack.repo.get(s)
+
+ arg = pkg.define_from_variant('MULTI')
+ assert arg == '-DMULTI:STRING=right;up'
+
+ arg = pkg.define_from_variant('ENABLE_TRUTH', 'truthy')
+ assert arg == '-DENABLE_TRUTH:BOOL=OFF'
+
+ arg = pkg.define_from_variant('SINGLE')
+ assert arg == '-DSINGLE:STRING=red'
+
+ with pytest.raises(KeyError, match="not a variant"):
+ pkg.define_from_variant('NONEXISTENT')
+
+
+@pytest.mark.usefixtures('config', 'mock_packages')
+class TestGNUMirrorPackage(object):
+
+ def test_define(self):
+ s = Spec('mirror-gnu')
+ s.concretize()
+ pkg = spack.repo.get(s)
+
+ s = Spec('mirror-gnu-broken')
+ s.concretize()
+ pkg_broken = spack.repo.get(s)
+
+ cls_name = type(pkg_broken).__name__
+ with pytest.raises(AttributeError,
+ match=r'{0} must define a `gnu_mirror_path` '
+ r'attribute \[none defined\]'
+ .format(cls_name)):
+ pkg_broken.urls
+
+ assert pkg.urls[0] == 'https://ftpmirror.gnu.org/' \
+ 'make/make-4.2.1.tar.gz'
+
+
+@pytest.mark.usefixtures('config', 'mock_packages')
+class TestSourcewarePackage(object):
+
+ def test_define(self):
+ s = Spec('mirror-sourceware')
+ s.concretize()
+ pkg = spack.repo.get(s)
+
+ s = Spec('mirror-sourceware-broken')
+ s.concretize()
+ pkg_broken = spack.repo.get(s)
+
+ cls_name = type(pkg_broken).__name__
+ with pytest.raises(AttributeError,
+ match=r'{0} must define a `sourceware_mirror_path` '
+ r'attribute \[none defined\]'
+ .format(cls_name)):
+ pkg_broken.urls
+
+ assert pkg.urls[0] == 'https://sourceware.org/pub/' \
+ 'bzip2/bzip2-1.0.8.tar.gz'
+
+
+@pytest.mark.usefixtures('config', 'mock_packages')
+class TestXorgPackage(object):
+
+ def test_define(self):
+ s = Spec('mirror-xorg')
+ s.concretize()
+ pkg = spack.repo.get(s)
+
+ s = Spec('mirror-xorg-broken')
+ s.concretize()
+ pkg_broken = spack.repo.get(s)
+
+ cls_name = type(pkg_broken).__name__
+ with pytest.raises(AttributeError,
+ match=r'{0} must define a `xorg_mirror_path` '
+ r'attribute \[none defined\]'
+ .format(cls_name)):
+ pkg_broken.urls
+
+ assert pkg.urls[0] == 'https://www.x.org/archive/individual/' \
+ 'util/util-macros-1.19.1.tar.bz2'
diff --git a/lib/spack/spack/test/cmd/buildcache.py b/lib/spack/spack/test/cmd/buildcache.py
index 064daeb063..03d09b9771 100644
--- a/lib/spack/spack/test/cmd/buildcache.py
+++ b/lib/spack/spack/test/cmd/buildcache.py
@@ -3,6 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import errno
import platform
import pytest
@@ -11,6 +12,7 @@ import spack.main
import spack.binary_distribution
buildcache = spack.main.SpackCommand('buildcache')
+install = spack.main.SpackCommand('install')
@pytest.fixture()
@@ -41,3 +43,16 @@ def test_buildcache_list_duplicates(mock_get_specs, capsys):
output = buildcache('list', 'mpileaks', '@2.3')
assert output.count('mpileaks') == 3
+
+
+def test_buildcache_create_fail_on_perm_denied(
+ install_mockery, mock_fetch, monkeypatch, tmpdir):
+ """Ensure that buildcache create fails on permission denied error."""
+ install('trivial-install-test-package')
+
+ tmpdir.chmod(0)
+ with pytest.raises(OSError) as error:
+ buildcache('create', '-d', str(tmpdir),
+ '--unsigned', 'trivial-install-test-package')
+ assert error.value.errno == errno.EACCES
+ tmpdir.chmod(0o700)
diff --git a/lib/spack/spack/test/cmd/debug.py b/lib/spack/spack/test/cmd/debug.py
index 4a06276abf..2898ad670e 100644
--- a/lib/spack/spack/test/cmd/debug.py
+++ b/lib/spack/spack/test/cmd/debug.py
@@ -3,12 +3,15 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import platform
+
import pytest
import os
import os.path
-from spack.main import SpackCommand
+import spack.architecture as architecture
+from spack.main import SpackCommand, get_version
from spack.util.executable import which
debug = SpackCommand('debug')
@@ -41,3 +44,12 @@ def test_create_db_tarball(tmpdir, database):
spec_suffix = '%s/.spack/spec.yaml' % spec.dag_hash()
assert spec_suffix in contents
+
+
+def test_report():
+ out = debug('report')
+ arch = architecture.Arch(architecture.platform(), 'frontend', 'frontend')
+
+ assert get_version() in out
+ assert platform.python_version() in out
+ assert str(arch) in out
diff --git a/lib/spack/spack/test/cmd/dependencies.py b/lib/spack/spack/test/cmd/dependencies.py
index fc47069181..05d0556936 100644
--- a/lib/spack/spack/test/cmd/dependencies.py
+++ b/lib/spack/spack/test/cmd/dependencies.py
@@ -17,7 +17,7 @@ mpis = ['mpich', 'mpich2', 'multi-provider-mpi', 'zmpi']
mpi_deps = ['fake']
-def test_immediate_dependencies(mock_packages):
+def test_direct_dependencies(mock_packages):
out = dependencies('mpileaks')
actual = set(re.split(r'\s+', out.strip()))
expected = set(['callpath'] + mpis)
@@ -47,7 +47,7 @@ def test_transitive_dependencies_with_deptypes(mock_packages):
@pytest.mark.db
-def test_immediate_installed_dependencies(mock_packages, database):
+def test_direct_installed_dependencies(mock_packages, database):
with color_when(False):
out = dependencies('--installed', 'mpileaks^mpich')
diff --git a/lib/spack/spack/test/cmd/list.py b/lib/spack/spack/test/cmd/list.py
index 5d18787bc7..17f5a1b493 100644
--- a/lib/spack/spack/test/cmd/list.py
+++ b/lib/spack/spack/test/cmd/list.py
@@ -37,6 +37,14 @@ def test_list_tags():
assert 'cloverleaf3d' in output
assert 'hdf5' not in output
+ output = list('--tags', 'hpc')
+ assert 'nek5000' in output
+ assert 'mfem' in output
+
+ output = list('--tags', 'HPC')
+ assert 'nek5000' in output
+ assert 'mfem' in output
+
def test_list_format_name_only():
output = list('--format', 'name_only')
diff --git a/lib/spack/spack/test/cmd/load.py b/lib/spack/spack/test/cmd/load.py
index a10b99d45b..e6664a9d39 100644
--- a/lib/spack/spack/test/cmd/load.py
+++ b/lib/spack/spack/test/cmd/load.py
@@ -3,7 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
-from spack.main import SpackCommand
+import pytest
+from spack.main import SpackCommand, SpackCommandError
import spack.spec
import spack.user_environment as uenv
@@ -83,6 +84,18 @@ def test_load_includes_run_env(install_mockery, mock_fetch, mock_archive,
assert 'setenv FOOBAR mpileaks' in csh_out
+def test_load_first(install_mockery, mock_fetch, mock_archive, mock_packages):
+ """Test with and without the --first option"""
+ install('libelf@0.8.12')
+ install('libelf@0.8.13')
+ # Now there are two versions of libelf
+ with pytest.raises(SpackCommandError):
+ # This should cause an error due to multiple versions
+ load('--sh', 'libelf')
+ # Using --first should avoid the error condition
+ load('--sh', '--first', 'libelf')
+
+
def test_load_fails_no_shell(install_mockery, mock_fetch, mock_archive,
mock_packages):
"""Test that spack load prints an error message without a shell."""
diff --git a/lib/spack/spack/test/cmd/mirror.py b/lib/spack/spack/test/cmd/mirror.py
index d62d7df432..4bb4fad224 100644
--- a/lib/spack/spack/test/cmd/mirror.py
+++ b/lib/spack/spack/test/cmd/mirror.py
@@ -66,6 +66,29 @@ def test_mirror_from_env(tmpdir, mock_packages, mock_fetch, config,
assert mirror_res == expected
+@pytest.fixture
+def source_for_pkg_with_hash(mock_packages, tmpdir):
+ pkg = spack.repo.get('trivial-pkg-with-valid-hash')
+ local_url_basename = os.path.basename(pkg.url)
+ local_path = os.path.join(str(tmpdir), local_url_basename)
+ with open(local_path, 'w') as f:
+ f.write(pkg.hashed_content)
+ local_url = "file://" + local_path
+ pkg.versions[spack.version.Version('1.0')]['url'] = local_url
+
+
+def test_mirror_skip_unstable(tmpdir_factory, mock_packages, config,
+ source_for_pkg_with_hash):
+ mirror_dir = str(tmpdir_factory.mktemp('mirror-dir'))
+
+ specs = [spack.spec.Spec(x).concretized() for x in
+ ['git-test', 'trivial-pkg-with-valid-hash']]
+ spack.mirror.create(mirror_dir, specs, skip_unstable_versions=True)
+
+ assert (set(os.listdir(mirror_dir)) - set(['_source-cache']) ==
+ set(['trivial-pkg-with-valid-hash']))
+
+
def test_mirror_crud(tmp_scope, capsys):
with capsys.disabled():
mirror('add', '--scope', tmp_scope, 'mirror', 'http://spack.io')
diff --git a/lib/spack/spack/test/cmd/python.py b/lib/spack/spack/test/cmd/python.py
index 5bc05e0127..b1c9d3db00 100644
--- a/lib/spack/spack/test/cmd/python.py
+++ b/lib/spack/spack/test/cmd/python.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import platform
+
import pytest
import spack
@@ -16,6 +18,11 @@ def test_python():
assert out.strip() == spack.spack_version
+def test_python_version():
+ out = python('-V')
+ assert platform.python_version() in out
+
+
def test_python_with_module():
# pytest rewrites a lot of modules, which interferes with runpy, so
# it's hard to test this. Trying to import a module like sys, that
diff --git a/lib/spack/spack/test/cmd/repo.py b/lib/spack/spack/test/cmd/repo.py
new file mode 100644
index 0000000000..82fe872710
--- /dev/null
+++ b/lib/spack/spack/test/cmd/repo.py
@@ -0,0 +1,35 @@
+# Copyright 2013-2020 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)
+import os.path
+
+import pytest
+import spack.main
+
+repo = spack.main.SpackCommand('repo')
+
+
+def test_help_option():
+ # Test 'spack repo --help' to check basic import works
+ # and the command exits successfully
+ with pytest.raises(SystemExit):
+ repo('--help')
+ assert repo.returncode in (None, 0)
+
+
+def test_create_add_list_remove(mutable_config, tmpdir):
+ # Create a new repository and check that the expected
+ # files are there
+ repo('create', str(tmpdir), 'mockrepo')
+ assert os.path.exists(os.path.join(str(tmpdir), 'repo.yaml'))
+
+ # Add the new repository and check it appears in the list output
+ repo('add', '--scope=site', str(tmpdir))
+ output = repo('list', '--scope=site', output=str)
+ assert 'mockrepo' in output
+
+ # Then remove it and check it's not there
+ repo('remove', '--scope=site', str(tmpdir))
+ output = repo('list', '--scope=site', output=str)
+ assert 'mockrepo' not in output
diff --git a/lib/spack/spack/test/compilers.py b/lib/spack/spack/test/compilers.py
index 51eedd748f..13e3d9e695 100644
--- a/lib/spack/spack/test/compilers.py
+++ b/lib/spack/spack/test/compilers.py
@@ -369,7 +369,13 @@ def test_clang_version_detection(version_str, expected_version):
'Thread model: posix\n'
'InstalledDir:\n'
'/opt/arm/arm-hpc-compiler-19.0_Generic-AArch64_RHEL-7_aarch64-linux/bin\n', # NOQA
- '19.0')
+ '19.0.0.73'),
+ ('Arm C/C++/Fortran Compiler version 19.3.1 (build number 75) (based on LLVM 7.0.2)\n' # NOQA
+ 'Target: aarch64--linux-gnu\n'
+ 'Thread model: posix\n'
+ 'InstalledDir:\n'
+ '/opt/arm/arm-hpc-compiler-19.0_Generic-AArch64_RHEL-7_aarch64-linux/bin\n', # NOQA
+ '19.3.1.75')
])
def test_arm_version_detection(version_str, expected_version):
version = spack.compilers.arm.Arm.extract_version_from_output(version_str)
diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py
index 81b5360869..922d5a11d8 100644
--- a/lib/spack/spack/test/concretize_preferences.py
+++ b/lib/spack/spack/test/concretize_preferences.py
@@ -185,36 +185,39 @@ class TestConcretizePreferences(object):
spec.concretize()
assert spec.version == Version('0.2.15.develop')
- def test_no_virtuals_in_packages_yaml(self):
- """Verify that virtuals are not allowed in packages.yaml."""
+ def test_external_mpi(self):
+ # make sure this doesn't give us an external first.
+ spec = Spec('mpi')
+ spec.concretize()
+ assert not spec['mpi'].external
- # set up a packages.yaml file with a vdep as a key. We use
- # syaml.load_config here to make sure source lines in the config are
- # attached to parsed strings, as the error message uses them.
+ # load config
conf = syaml.load_config("""\
-mpi:
+all:
+ providers:
+ mpi: [mpich]
+mpich:
+ buildable: false
paths:
- mpi-with-lapack@2.1: /path/to/lapack
+ mpich@3.0.4: /dummy/path
""")
spack.config.set('packages', conf, scope='concretize')
- # now when we get the packages.yaml config, there should be an error
- with pytest.raises(spack.package_prefs.VirtualInPackagesYAMLError):
- spack.package_prefs.get_packages_config()
-
- def test_all_is_not_a_virtual(self):
- """Verify that `all` is allowed in packages.yaml."""
- conf = syaml.load_config("""\
-all:
- variants: [+mpi]
-""")
- spack.config.set('packages', conf, scope='concretize')
+ # ensure that once config is in place, external is used
+ spec = Spec('mpi')
+ spec.concretize()
+ assert spec['mpich'].external_path == '/dummy/path'
- # should be no error for 'all':
- spack.package_prefs.get_packages_config()
+ def test_external_module(self, monkeypatch):
+ """Test that packages can find externals specified by module
- def test_external_mpi(self):
+ The specific code for parsing the module is tested elsewhere.
+ This just tests that the preference is accounted for"""
# make sure this doesn't give us an external first.
+ def mock_module(cmd, module):
+ return 'prepend-path PATH /dummy/path'
+ monkeypatch.setattr(spack.util.module_cmd, 'module', mock_module)
+
spec = Spec('mpi')
spec.concretize()
assert not spec['mpi'].external
@@ -224,10 +227,10 @@ all:
all:
providers:
mpi: [mpich]
-mpich:
+mpi:
buildable: false
- paths:
- mpich@3.0.4: /dummy/path
+ modules:
+ mpich@3.0.4: dummy
""")
spack.config.set('packages', conf, scope='concretize')
diff --git a/lib/spack/spack/test/config.py b/lib/spack/spack/test/config.py
index feb2b9cae4..b8598616d5 100644
--- a/lib/spack/spack/test/config.py
+++ b/lib/spack/spack/test/config.py
@@ -46,7 +46,19 @@ config_merge_list = {
config_override_list = {
'config': {
- 'build_stage:': ['patha', 'pathb']}}
+ 'build_stage:': ['pathd', 'pathe']}}
+
+config_merge_dict = {
+ 'config': {
+ 'info': {
+ 'a': 3,
+ 'b': 4}}}
+
+config_override_dict = {
+ 'config': {
+ 'info:': {
+ 'a': 7,
+ 'c': 9}}}
@pytest.fixture()
@@ -382,7 +394,7 @@ def test_read_config_override_list(mock_low_high_config, write_config_file):
write_config_file('config', config_override_list, 'high')
assert spack.config.get('config') == {
'install_tree': 'install_tree_path',
- 'build_stage': ['patha', 'pathb']
+ 'build_stage': config_override_list['config']['build_stage:']
}
@@ -857,3 +869,74 @@ def test_dotkit_in_config_does_not_raise(
# we throw a a deprecation warning without raising
assert '_sp_sys_type' in captured[0] # stdout
assert 'Warning' in captured[1] # stderr
+
+
+def test_internal_config_section_override(mock_low_high_config,
+ write_config_file):
+ write_config_file('config', config_merge_list, 'low')
+ wanted_list = config_override_list['config']['build_stage:']
+ mock_low_high_config.push_scope(spack.config.InternalConfigScope
+ ('high', {
+ 'config:': {
+ 'build_stage': wanted_list
+ }
+ }))
+ assert mock_low_high_config.get('config:build_stage') == wanted_list
+
+
+def test_internal_config_dict_override(mock_low_high_config,
+ write_config_file):
+ write_config_file('config', config_merge_dict, 'low')
+ wanted_dict = config_override_dict['config']['info:']
+ mock_low_high_config.push_scope(spack.config.InternalConfigScope
+ ('high', config_override_dict))
+ assert mock_low_high_config.get('config:info') == wanted_dict
+
+
+def test_internal_config_list_override(mock_low_high_config,
+ write_config_file):
+ write_config_file('config', config_merge_list, 'low')
+ wanted_list = config_override_list['config']['build_stage:']
+ mock_low_high_config.push_scope(spack.config.InternalConfigScope
+ ('high', config_override_list))
+ assert mock_low_high_config.get('config:build_stage') == wanted_list
+
+
+def test_set_section_override(mock_low_high_config, write_config_file):
+ write_config_file('config', config_merge_list, 'low')
+ wanted_list = config_override_list['config']['build_stage:']
+ with spack.config.override('config::build_stage', wanted_list):
+ assert mock_low_high_config.get('config:build_stage') == wanted_list
+ assert config_merge_list['config']['build_stage'] == \
+ mock_low_high_config.get('config:build_stage')
+
+
+def test_set_list_override(mock_low_high_config, write_config_file):
+ write_config_file('config', config_merge_list, 'low')
+ wanted_list = config_override_list['config']['build_stage:']
+ with spack.config.override('config:build_stage:', wanted_list):
+ assert wanted_list == mock_low_high_config.get('config:build_stage')
+ assert config_merge_list['config']['build_stage'] == \
+ mock_low_high_config.get('config:build_stage')
+
+
+def test_set_dict_override(mock_low_high_config, write_config_file):
+ write_config_file('config', config_merge_dict, 'low')
+ wanted_dict = config_override_dict['config']['info:']
+ with spack.config.override('config:info:', wanted_dict):
+ assert wanted_dict == mock_low_high_config.get('config:info')
+ assert config_merge_dict['config']['info'] == \
+ mock_low_high_config.get('config:info')
+
+
+def test_set_bad_path(config):
+ with pytest.raises(syaml.SpackYAMLError, match='Illegal leading'):
+ with spack.config.override(':bad:path', ''):
+ pass
+
+
+def test_bad_path_double_override(config):
+ with pytest.raises(syaml.SpackYAMLError,
+ match='Meaningless second override'):
+ with spack.config.override('bad::double:override::directive', ''):
+ pass
diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py
index 6703742142..8912c0219b 100644
--- a/lib/spack/spack/test/conftest.py
+++ b/lib/spack/spack/test/conftest.py
@@ -301,8 +301,17 @@ def use_configuration(config):
"""Context manager to swap out the global Spack configuration."""
saved = spack.config.config
spack.config.config = config
+
+ # Avoid using real spack configuration that has been cached by other
+ # tests, and avoid polluting the cache with spack test configuration
+ # (including modified configuration)
+ saved_compiler_cache = spack.compilers._cache_config_file
+ spack.compilers._cache_config_file = []
+
yield
+
spack.config.config = saved
+ spack.compilers._cache_config_file = saved_compiler_cache
@contextlib.contextmanager
@@ -427,10 +436,6 @@ def mutable_config(tmpdir_factory, configuration_dir, monkeypatch):
*[spack.config.ConfigScope(name, str(mutable_dir))
for name in ['site', 'system', 'user']])
- # This is essential, otherwise the cache will create weird side effects
- # that will compromise subsequent tests if compilers.yaml is modified
- monkeypatch.setattr(spack.compilers, '_cache_config_file', [])
-
with use_configuration(cfg):
yield cfg
@@ -1035,6 +1040,13 @@ class MockPackage(object):
self.conflicts = {}
self.patches = {}
+ def provides(self, vname):
+ return vname in self.provided
+
+ @property
+ def virtuals_provided(self):
+ return [v.name for v, c in self.provided]
+
class MockPackageMultiRepo(object):
def __init__(self, packages):
diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py
index 08b32f74f1..05cf46dc20 100644
--- a/lib/spack/spack/test/mirror.py
+++ b/lib/spack/spack/test/mirror.py
@@ -52,52 +52,52 @@ def check_mirror():
mirror_root = os.path.join(stage.path, 'test-mirror')
# register mirror with spack config
mirrors = {'spack-mirror-test': 'file://' + mirror_root}
- spack.config.set('mirrors', mirrors)
- with spack.config.override('config:checksum', False):
- specs = [Spec(x).concretized() for x in repos]
- spack.mirror.create(mirror_root, specs)
-
- # Stage directory exists
- assert os.path.isdir(mirror_root)
-
- for spec in specs:
- fetcher = spec.package.fetcher[0]
- per_package_ref = os.path.join(
- spec.name, '-'.join([spec.name, str(spec.version)]))
- mirror_paths = spack.mirror.mirror_archive_paths(
- fetcher,
- per_package_ref)
- expected_path = os.path.join(
- mirror_root, mirror_paths.storage_path)
- assert os.path.exists(expected_path)
-
- # Now try to fetch each package.
- for name, mock_repo in repos.items():
- spec = Spec(name).concretized()
- pkg = spec.package
-
+ with spack.config.override('mirrors', mirrors):
with spack.config.override('config:checksum', False):
- with pkg.stage:
- pkg.do_stage(mirror_only=True)
-
- # Compare the original repo with the expanded archive
- original_path = mock_repo.path
- if 'svn' in name:
- # have to check out the svn repo to compare.
- original_path = os.path.join(
- mock_repo.path, 'checked_out')
-
- svn = which('svn', required=True)
- svn('checkout', mock_repo.url, original_path)
-
- dcmp = filecmp.dircmp(
- original_path, pkg.stage.source_path)
-
- # make sure there are no new files in the expanded
- # tarball
- assert not dcmp.right_only
- # and that all original files are present.
- assert all(l in exclude for l in dcmp.left_only)
+ specs = [Spec(x).concretized() for x in repos]
+ spack.mirror.create(mirror_root, specs)
+
+ # Stage directory exists
+ assert os.path.isdir(mirror_root)
+
+ for spec in specs:
+ fetcher = spec.package.fetcher[0]
+ per_package_ref = os.path.join(
+ spec.name, '-'.join([spec.name, str(spec.version)]))
+ mirror_paths = spack.mirror.mirror_archive_paths(
+ fetcher,
+ per_package_ref)
+ expected_path = os.path.join(
+ mirror_root, mirror_paths.storage_path)
+ assert os.path.exists(expected_path)
+
+ # Now try to fetch each package.
+ for name, mock_repo in repos.items():
+ spec = Spec(name).concretized()
+ pkg = spec.package
+
+ with spack.config.override('config:checksum', False):
+ with pkg.stage:
+ pkg.do_stage(mirror_only=True)
+
+ # Compare the original repo with the expanded archive
+ original_path = mock_repo.path
+ if 'svn' in name:
+ # have to check out the svn repo to compare.
+ original_path = os.path.join(
+ mock_repo.path, 'checked_out')
+
+ svn = which('svn', required=True)
+ svn('checkout', mock_repo.url, original_path)
+
+ dcmp = filecmp.dircmp(
+ original_path, pkg.stage.source_path)
+
+ # make sure there are no new files in the expanded
+ # tarball
+ assert not dcmp.right_only
+ # and that all original files are present.
+ assert all(l in exclude for l in dcmp.left_only)
def test_url_mirror(mock_archive):
@@ -213,7 +213,7 @@ def test_mirror_cache_symlinks(tmpdir):
"""
cosmetic_path = 'zlib/zlib-1.2.11.tar.gz'
global_path = '_source-cache/archive/c3/c3e5.tar.gz'
- cache = spack.caches.MirrorCache(str(tmpdir))
+ cache = spack.caches.MirrorCache(str(tmpdir), False)
reference = spack.mirror.MirrorReference(cosmetic_path, global_path)
cache.store(MockFetcher(), reference.storage_path)
diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py
index bbe18b1ad0..0bf485913f 100644
--- a/lib/spack/spack/test/module_parsing.py
+++ b/lib/spack/spack/test/module_parsing.py
@@ -20,28 +20,11 @@ test_module_lines = ['prepend-path LD_LIBRARY_PATH /path/to/lib',
'setenv LDFLAGS -L/path/to/lib',
'prepend-path PATH /path/to/bin']
+_test_template = "'. %s 2>&1' % args[1]"
-@pytest.fixture
-def module_function_test_mode():
- old_mode = spack.util.module_cmd._test_mode
- spack.util.module_cmd._test_mode = True
- yield
-
- spack.util.module_cmd._test_mode = old_mode
-
-
-@pytest.fixture
-def save_module_func():
- old_func = spack.util.module_cmd.module
-
- yield
-
- spack.util.module_cmd.module = old_func
-
-
-def test_module_function_change_env(tmpdir, working_env,
- module_function_test_mode):
+def test_module_function_change_env(tmpdir, working_env, monkeypatch):
+ monkeypatch.setattr(spack.util.module_cmd, '_cmd_template', _test_template)
src_file = str(tmpdir.join('src_me'))
with open(src_file, 'w') as f:
f.write('export TEST_MODULE_ENV_VAR=TEST_SUCCESS\n')
@@ -53,7 +36,8 @@ def test_module_function_change_env(tmpdir, working_env,
assert os.environ['NOT_AFFECTED'] == "NOT_AFFECTED"
-def test_module_function_no_change(tmpdir, module_function_test_mode):
+def test_module_function_no_change(tmpdir, monkeypatch):
+ monkeypatch.setattr(spack.util.module_cmd, '_cmd_template', _test_template)
src_file = str(tmpdir.join('src_me'))
with open(src_file, 'w') as f:
f.write('echo TEST_MODULE_FUNCTION_PRINT')
@@ -65,11 +49,11 @@ def test_module_function_no_change(tmpdir, module_function_test_mode):
assert os.environ == old_env
-def test_get_path_from_module_faked(save_module_func):
+def test_get_path_from_module_faked(monkeypatch):
for line in test_module_lines:
def fake_module(*args):
return line
- spack.util.module_cmd.module = fake_module
+ monkeypatch.setattr(spack.util.module_cmd, 'module', fake_module)
path = get_path_from_module('mod')
assert path == '/path/to'
diff --git a/lib/spack/spack/test/package_class.py b/lib/spack/spack/test/package_class.py
index b3351ffb49..d540ac663e 100644
--- a/lib/spack/spack/test/package_class.py
+++ b/lib/spack/spack/test/package_class.py
@@ -11,12 +11,17 @@ static DSL metadata for packages.
"""
import pytest
+import spack.package
import spack.repo
-@pytest.fixture
-def mpileaks_possible_deps(mock_packages):
- mpi_names = [spec.name for spec in spack.repo.path.providers_for('mpi')]
+@pytest.fixture(scope="module")
+def mpi_names(mock_repo_path):
+ return [spec.name for spec in mock_repo_path.providers_for('mpi')]
+
+
+@pytest.fixture()
+def mpileaks_possible_deps(mock_packages, mpi_names):
possible = {
'callpath': set(['dyninst'] + mpi_names),
'dyninst': set(['libdwarf', 'libelf']),
@@ -34,47 +39,72 @@ def mpileaks_possible_deps(mock_packages):
def test_possible_dependencies(mock_packages, mpileaks_possible_deps):
mpileaks = spack.repo.get('mpileaks')
- assert (mpileaks.possible_dependencies(expand_virtuals=True) ==
- mpileaks_possible_deps)
+ assert mpileaks_possible_deps == (
+ mpileaks.possible_dependencies(expand_virtuals=True))
- assert mpileaks.possible_dependencies(expand_virtuals=False) == {
- 'callpath': set(['dyninst']),
+ assert {
+ 'callpath': set(['dyninst', 'mpi']),
'dyninst': set(['libdwarf', 'libelf']),
'libdwarf': set(['libelf']),
'libelf': set(),
'mpi': set(),
- 'mpileaks': set(['callpath']),
- }
+ 'mpileaks': set(['callpath', 'mpi']),
+ } == mpileaks.possible_dependencies(expand_virtuals=False)
+
+
+def test_possible_direct_dependencies(mock_packages, mpileaks_possible_deps):
+ mpileaks = spack.repo.get('mpileaks')
+ deps = mpileaks.possible_dependencies(transitive=False,
+ expand_virtuals=False)
+
+ assert {
+ 'callpath': set(),
+ 'mpi': set(),
+ 'mpileaks': set(['callpath', 'mpi']),
+ } == deps
+
+
+def test_possible_dependencies_virtual(mock_packages, mpi_names):
+ expected = dict(
+ (name, set(spack.repo.get(name).dependencies))
+ for name in mpi_names
+ )
+
+ # only one mock MPI has a dependency
+ expected['fake'] = set()
+
+ assert expected == spack.package.possible_dependencies(
+ "mpi", transitive=False)
def test_possible_dependencies_missing(mock_packages):
md = spack.repo.get("missing-dependency")
missing = {}
md.possible_dependencies(transitive=True, missing=missing)
- assert missing["missing-dependency"] == set([
+ assert set([
"this-is-a-missing-dependency"
- ])
+ ]) == missing["missing-dependency"]
def test_possible_dependencies_with_deptypes(mock_packages):
dtbuild1 = spack.repo.get('dtbuild1')
- assert dtbuild1.possible_dependencies(deptype=('link', 'run')) == {
+ assert {
'dtbuild1': set(['dtrun2', 'dtlink2']),
'dtlink2': set(),
'dtrun2': set(),
- }
+ } == dtbuild1.possible_dependencies(deptype=('link', 'run'))
- assert dtbuild1.possible_dependencies(deptype=('build')) == {
+ assert {
'dtbuild1': set(['dtbuild2', 'dtlink2']),
'dtbuild2': set(),
'dtlink2': set(),
- }
+ } == dtbuild1.possible_dependencies(deptype=('build'))
- assert dtbuild1.possible_dependencies(deptype=('link')) == {
+ assert {
'dtbuild1': set(['dtlink2']),
'dtlink2': set(),
- }
+ } == dtbuild1.possible_dependencies(deptype=('link'))
def test_possible_dependencies_with_multiple_classes(
@@ -88,4 +118,4 @@ def test_possible_dependencies_with_multiple_classes(
'dt-diamond-bottom': set(),
})
- assert spack.package.possible_dependencies(*pkgs) == expected
+ assert expected == spack.package.possible_dependencies(*pkgs)
diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py
index 299c56481e..ffaad396c1 100644
--- a/lib/spack/spack/test/packages.py
+++ b/lib/spack/spack/test/packages.py
@@ -402,3 +402,24 @@ def test_bundle_patch_directive(mock_directive_bundle,
match="Patches are not allowed"):
patch = spack.directives.patch('mock/patch.txt')
patch(mock_directive_bundle)
+
+
+def test_fetch_options(mock_packages, config):
+ """Test fetch options inference."""
+
+ pkg = spack.repo.get('fetch-options')
+
+ fetcher = spack.fetch_strategy.for_package_version(pkg, '1.0')
+ assert isinstance(fetcher, spack.fetch_strategy.URLFetchStrategy)
+ assert fetcher.digest == 'abc10'
+ assert fetcher.extra_options == {'timeout': 42, 'cookie': 'foobar'}
+
+ fetcher = spack.fetch_strategy.for_package_version(pkg, '1.1')
+ assert isinstance(fetcher, spack.fetch_strategy.URLFetchStrategy)
+ assert fetcher.digest == 'abc11'
+ assert fetcher.extra_options == {'timeout': 65}
+
+ fetcher = spack.fetch_strategy.for_package_version(pkg, '1.2')
+ assert isinstance(fetcher, spack.fetch_strategy.URLFetchStrategy)
+ assert fetcher.digest == 'abc12'
+ assert fetcher.extra_options == {'cookie': 'baz'}
diff --git a/lib/spack/spack/test/packaging.py b/lib/spack/spack/test/packaging.py
index 39d12df7b7..39da7c3ae5 100644
--- a/lib/spack/spack/test/packaging.py
+++ b/lib/spack/spack/test/packaging.py
@@ -8,10 +8,11 @@ This test checks the binary packaging infrastructure
"""
import os
import stat
-import sys
import shutil
import pytest
import argparse
+import re
+import platform
from llnl.util.filesystem import mkdirp
@@ -19,16 +20,17 @@ import spack.repo
import spack.store
import spack.binary_distribution as bindist
import spack.cmd.buildcache as buildcache
-import spack.util.gpg
from spack.spec import Spec
from spack.paths import mock_gpg_keys_path
from spack.fetch_strategy import URLFetchStrategy, FetchStrategyComposite
from spack.relocate import needs_binary_relocation, needs_text_relocation
-from spack.relocate import strings_contains_installroot
-from spack.relocate import get_patchelf, relocate_text, relocate_links
-from spack.relocate import substitute_rpath, get_relative_rpaths
-from spack.relocate import macho_replace_paths, macho_make_paths_relative
-from spack.relocate import modify_macho_object, macho_get_paths
+from spack.relocate import relocate_text, relocate_links
+from spack.relocate import get_relative_elf_rpaths
+from spack.relocate import get_normalized_elf_rpaths
+from spack.relocate import macho_make_paths_relative
+from spack.relocate import macho_make_paths_normal
+from spack.relocate import set_placeholder, macho_find_paths
+from spack.relocate import file_is_relocatable
def has_gpg():
@@ -50,9 +52,9 @@ def fake_fetchify(url, pkg):
@pytest.mark.usefixtures('install_mockery', 'mock_gnupghome')
def test_buildcache(mock_archive, tmpdir):
# tweak patchelf to only do a download
- spec = Spec("patchelf")
- spec.concretize()
- pkg = spack.repo.get(spec)
+ pspec = Spec("patchelf")
+ pspec.concretize()
+ pkg = spack.repo.get(pspec)
fake_fetchify(pkg.fetcher, pkg)
mkdirp(os.path.join(pkg.prefix, "bin"))
patchelfscr = os.path.join(pkg.prefix, "bin", "patchelf")
@@ -71,7 +73,7 @@ echo $PATH"""
pkg = spec.package
fake_fetchify(mock_archive.url, pkg)
pkg.do_install()
- pkghash = '/' + spec.dag_hash(7)
+ pkghash = '/' + str(spec.dag_hash(7))
# Put some non-relocatable file in there
filename = os.path.join(spec.prefix, "dummy.txt")
@@ -99,88 +101,69 @@ echo $PATH"""
parser = argparse.ArgumentParser()
buildcache.setup_parser(parser)
+ create_args = ['create', '-a', '-f', '-d', mirror_path, pkghash]
# Create a private key to sign package with if gpg2 available
if spack.util.gpg.Gpg.gpg():
spack.util.gpg.Gpg.create(name='test key 1', expires='0',
email='spack@googlegroups.com',
comment='Spack test key')
- # Create build cache with signing
- args = parser.parse_args(['create', '-d', mirror_path, str(spec)])
- buildcache.buildcache(parser, args)
-
- # Uninstall the package
- pkg.do_uninstall(force=True)
-
- # test overwrite install
- args = parser.parse_args(['install', '-f', str(pkghash)])
- buildcache.buildcache(parser, args)
-
- files = os.listdir(spec.prefix)
+ else:
+ create_args.insert(create_args.index('-a'), '-u')
- # create build cache with relative path and signing
- args = parser.parse_args(
- ['create', '-d', mirror_path, '-f', '-r', str(spec)])
- buildcache.buildcache(parser, args)
+ args = parser.parse_args(create_args)
+ buildcache.buildcache(parser, args)
+ # trigger overwrite warning
+ buildcache.buildcache(parser, args)
- # Uninstall the package
- pkg.do_uninstall(force=True)
+ # Uninstall the package
+ pkg.do_uninstall(force=True)
- # install build cache with verification
- args = parser.parse_args(['install', str(spec)])
- buildcache.install_tarball(spec, args)
+ install_args = ['install', '-a', '-f', pkghash]
+ if not spack.util.gpg.Gpg.gpg():
+ install_args.insert(install_args.index('-a'), '-u')
+ args = parser.parse_args(install_args)
+ # Test install
+ buildcache.buildcache(parser, args)
- # test overwrite install
- args = parser.parse_args(['install', '-f', str(pkghash)])
- buildcache.buildcache(parser, args)
+ files = os.listdir(spec.prefix)
- else:
- # create build cache without signing
- args = parser.parse_args(
- ['create', '-d', mirror_path, '-f', '-u', str(spec)])
- buildcache.buildcache(parser, args)
-
- # Uninstall the package
- pkg.do_uninstall(force=True)
-
- # install build cache without verification
- args = parser.parse_args(['install', '-u', str(spec)])
- buildcache.install_tarball(spec, args)
-
- files = os.listdir(spec.prefix)
- assert 'link_to_dummy.txt' in files
- assert 'dummy.txt' in files
- # test overwrite install without verification
- args = parser.parse_args(['install', '-f', '-u', str(pkghash)])
- buildcache.buildcache(parser, args)
-
- # create build cache with relative path
- args = parser.parse_args(
- ['create', '-d', mirror_path, '-f', '-r', '-u', str(pkghash)])
- buildcache.buildcache(parser, args)
-
- # Uninstall the package
- pkg.do_uninstall(force=True)
-
- # install build cache
- args = parser.parse_args(['install', '-u', str(spec)])
- buildcache.install_tarball(spec, args)
-
- # test overwrite install
- args = parser.parse_args(['install', '-f', '-u', str(pkghash)])
- buildcache.buildcache(parser, args)
-
- files = os.listdir(spec.prefix)
- assert 'link_to_dummy.txt' in files
- assert 'dummy.txt' in files
- assert os.path.realpath(
- os.path.join(spec.prefix, 'link_to_dummy.txt')
- ) == os.path.realpath(os.path.join(spec.prefix, 'dummy.txt'))
+ assert 'link_to_dummy.txt' in files
+ assert 'dummy.txt' in files
# Validate the relocation information
buildinfo = bindist.read_buildinfo_file(spec.prefix)
assert(buildinfo['relocate_textfiles'] == ['dummy.txt'])
assert(buildinfo['relocate_links'] == ['link_to_dummy.txt'])
+ # create build cache with relative path
+ create_args.insert(create_args.index('-a'), '-f')
+ create_args.insert(create_args.index('-a'), '-r')
+ args = parser.parse_args(create_args)
+ buildcache.buildcache(parser, args)
+
+ # Uninstall the package
+ pkg.do_uninstall(force=True)
+
+ if not spack.util.gpg.Gpg.gpg():
+ install_args.insert(install_args.index('-a'), '-u')
+ args = parser.parse_args(install_args)
+ buildcache.buildcache(parser, args)
+
+ # test overwrite install
+ install_args.insert(install_args.index('-a'), '-f')
+ args = parser.parse_args(install_args)
+ buildcache.buildcache(parser, args)
+
+ files = os.listdir(spec.prefix)
+ assert 'link_to_dummy.txt' in files
+ assert 'dummy.txt' in files
+# assert os.path.realpath(
+# os.path.join(spec.prefix, 'link_to_dummy.txt')
+# ) == os.path.realpath(os.path.join(spec.prefix, 'dummy.txt'))
+
+ args = parser.parse_args(['keys'])
+ buildcache.buildcache(parser, args)
+
args = parser.parse_args(['list'])
buildcache.buildcache(parser, args)
@@ -200,6 +183,9 @@ echo $PATH"""
args = parser.parse_args(['keys', '-f'])
buildcache.buildcache(parser, args)
+ args = parser.parse_args(['keys', '-i', '-t'])
+ buildcache.buildcache(parser, args)
+
# unregister mirror with spack config
mirrors = {}
spack.config.set('mirrors', mirrors)
@@ -210,7 +196,10 @@ echo $PATH"""
bindist._cached_specs = set()
+@pytest.mark.usefixtures('install_mockery')
def test_relocate_text(tmpdir):
+ spec = Spec('trivial-install-test-package')
+ spec.concretize()
with tmpdir.as_cwd():
# Validate the text path replacement
old_dir = '/home/spack/opt/spack'
@@ -220,24 +209,46 @@ def test_relocate_text(tmpdir):
script.close()
filenames = [filename]
new_dir = '/opt/rh/devtoolset/'
- relocate_text(filenames, oldpath=old_dir, newpath=new_dir,
- oldprefix=old_dir, newprefix=new_dir)
+ relocate_text(filenames, old_dir, new_dir,
+ old_dir, new_dir,
+ old_dir, new_dir,
+ {old_dir: new_dir})
with open(filename, "r")as script:
for line in script:
assert(new_dir in line)
- assert(strings_contains_installroot(filename, old_dir) is False)
+ assert(file_is_relocatable(os.path.realpath(filename)))
+ # Remove cached binary specs since we deleted the mirror
+ bindist._cached_specs = set()
def test_relocate_links(tmpdir):
with tmpdir.as_cwd():
- old_dir = '/home/spack/opt/spack'
- filename = 'link.ln'
- old_src = os.path.join(old_dir, filename)
- os.symlink(old_src, filename)
- filenames = [filename]
- new_dir = '/opt/rh/devtoolset'
- relocate_links(filenames, old_dir, new_dir)
- assert os.path.realpath(filename) == os.path.join(new_dir, filename)
+ old_layout_root = os.path.join(
+ '%s' % tmpdir, 'home', 'spack', 'opt', 'spack')
+ old_install_prefix = os.path.join(
+ '%s' % old_layout_root, 'debian6', 'test')
+ old_binname = os.path.join(old_install_prefix, 'binfile')
+ placeholder = set_placeholder(old_layout_root)
+ re.sub(old_layout_root, placeholder, old_binname)
+ filenames = ['link.ln', 'outsideprefix.ln']
+ new_layout_root = os.path.join(
+ '%s' % tmpdir, 'opt', 'rh', 'devtoolset')
+ new_install_prefix = os.path.join(
+ '%s' % new_layout_root, 'test', 'debian6')
+ new_linkname = os.path.join(new_install_prefix, 'link.ln')
+ new_linkname2 = os.path.join(new_install_prefix, 'outsideprefix.ln')
+ new_binname = os.path.join(new_install_prefix, 'binfile')
+ mkdirp(new_install_prefix)
+ with open(new_binname, 'w') as f:
+ f.write('\n')
+ os.utime(new_binname, None)
+ os.symlink(old_binname, new_linkname)
+ os.symlink('/usr/lib/libc.so', new_linkname2)
+ relocate_links(filenames, old_layout_root, new_layout_root,
+ old_install_prefix, new_install_prefix,
+ {old_install_prefix: new_install_prefix})
+ assert os.readlink(new_linkname) == new_binname
+ assert os.readlink(new_linkname2) == '/usr/lib/libc.so'
def test_needs_relocation():
@@ -246,16 +257,223 @@ def test_needs_relocation():
assert needs_binary_relocation('application', 'x-executable')
assert not needs_binary_relocation('application', 'x-octet-stream')
assert not needs_binary_relocation('text', 'x-')
-
assert needs_text_relocation('text', 'x-')
assert not needs_text_relocation('symbolic link to', 'x-')
assert needs_binary_relocation('application', 'x-mach-binary')
-def test_macho_paths():
-
- out = macho_make_paths_relative('/Users/Shares/spack/pkgC/lib/libC.dylib',
+def test_replace_paths(tmpdir):
+ with tmpdir.as_cwd():
+ suffix = 'dylib' if platform.system().lower() == 'darwin' else 'so'
+ hash_a = '53moz6jwnw3xpiztxwhc4us26klribws'
+ hash_b = 'tk62dzu62kd4oh3h3heelyw23hw2sfee'
+ hash_c = 'hdkhduizmaddpog6ewdradpobnbjwsjl'
+ hash_d = 'hukkosc7ahff7o65h6cdhvcoxm57d4bw'
+ hash_loco = 'zy4oigsc4eovn5yhr2lk4aukwzoespob'
+
+ prefix2hash = dict()
+
+ old_spack_dir = os.path.join('%s' % tmpdir,
+ 'Users', 'developer', 'spack')
+ mkdirp(old_spack_dir)
+
+ oldprefix_a = os.path.join('%s' % old_spack_dir, 'pkgA-%s' % hash_a)
+ oldlibdir_a = os.path.join('%s' % oldprefix_a, 'lib')
+ mkdirp(oldlibdir_a)
+ prefix2hash[str(oldprefix_a)] = hash_a
+
+ oldprefix_b = os.path.join('%s' % old_spack_dir, 'pkgB-%s' % hash_b)
+ oldlibdir_b = os.path.join('%s' % oldprefix_b, 'lib')
+ mkdirp(oldlibdir_b)
+ prefix2hash[str(oldprefix_b)] = hash_b
+
+ oldprefix_c = os.path.join('%s' % old_spack_dir, 'pkgC-%s' % hash_c)
+ oldlibdir_c = os.path.join('%s' % oldprefix_c, 'lib')
+ oldlibdir_cc = os.path.join('%s' % oldlibdir_c, 'C')
+ mkdirp(oldlibdir_c)
+ prefix2hash[str(oldprefix_c)] = hash_c
+
+ oldprefix_d = os.path.join('%s' % old_spack_dir, 'pkgD-%s' % hash_d)
+ oldlibdir_d = os.path.join('%s' % oldprefix_d, 'lib')
+ mkdirp(oldlibdir_d)
+ prefix2hash[str(oldprefix_d)] = hash_d
+
+ oldprefix_local = os.path.join('%s' % tmpdir, 'usr', 'local')
+ oldlibdir_local = os.path.join('%s' % oldprefix_local, 'lib')
+ mkdirp(oldlibdir_local)
+ prefix2hash[str(oldprefix_local)] = hash_loco
+ libfile_a = 'libA.%s' % suffix
+ libfile_b = 'libB.%s' % suffix
+ libfile_c = 'libC.%s' % suffix
+ libfile_d = 'libD.%s' % suffix
+ libfile_loco = 'libloco.%s' % suffix
+ old_libnames = [os.path.join(oldlibdir_a, libfile_a),
+ os.path.join(oldlibdir_b, libfile_b),
+ os.path.join(oldlibdir_c, libfile_c),
+ os.path.join(oldlibdir_d, libfile_d),
+ os.path.join(oldlibdir_local, libfile_loco)]
+
+ for old_libname in old_libnames:
+ with open(old_libname, 'a'):
+ os.utime(old_libname, None)
+
+ hash2prefix = dict()
+
+ new_spack_dir = os.path.join('%s' % tmpdir, 'Users', 'Shared',
+ 'spack')
+ mkdirp(new_spack_dir)
+
+ prefix_a = os.path.join(new_spack_dir, 'pkgA-%s' % hash_a)
+ libdir_a = os.path.join(prefix_a, 'lib')
+ mkdirp(libdir_a)
+ hash2prefix[hash_a] = str(prefix_a)
+
+ prefix_b = os.path.join(new_spack_dir, 'pkgB-%s' % hash_b)
+ libdir_b = os.path.join(prefix_b, 'lib')
+ mkdirp(libdir_b)
+ hash2prefix[hash_b] = str(prefix_b)
+
+ prefix_c = os.path.join(new_spack_dir, 'pkgC-%s' % hash_c)
+ libdir_c = os.path.join(prefix_c, 'lib')
+ libdir_cc = os.path.join(libdir_c, 'C')
+ mkdirp(libdir_cc)
+ hash2prefix[hash_c] = str(prefix_c)
+
+ prefix_d = os.path.join(new_spack_dir, 'pkgD-%s' % hash_d)
+ libdir_d = os.path.join(prefix_d, 'lib')
+ mkdirp(libdir_d)
+ hash2prefix[hash_d] = str(prefix_d)
+
+ prefix_local = os.path.join('%s' % tmpdir, 'usr', 'local')
+ libdir_local = os.path.join(prefix_local, 'lib')
+ mkdirp(libdir_local)
+ hash2prefix[hash_loco] = str(prefix_local)
+
+ new_libnames = [os.path.join(libdir_a, libfile_a),
+ os.path.join(libdir_b, libfile_b),
+ os.path.join(libdir_cc, libfile_c),
+ os.path.join(libdir_d, libfile_d),
+ os.path.join(libdir_local, libfile_loco)]
+
+ for new_libname in new_libnames:
+ with open(new_libname, 'a'):
+ os.utime(new_libname, None)
+
+ prefix2prefix = dict()
+ for prefix, hash in prefix2hash.items():
+ prefix2prefix[prefix] = hash2prefix[hash]
+
+ out_dict = macho_find_paths([oldlibdir_a, oldlibdir_b,
+ oldlibdir_c,
+ oldlibdir_cc, oldlibdir_local],
+ [os.path.join(oldlibdir_a,
+ libfile_a),
+ os.path.join(oldlibdir_b,
+ libfile_b),
+ os.path.join(oldlibdir_local,
+ libfile_loco)],
+ os.path.join(oldlibdir_cc,
+ libfile_c),
+ old_spack_dir,
+ prefix2prefix
+ )
+ assert out_dict == {oldlibdir_a: libdir_a,
+ oldlibdir_b: libdir_b,
+ oldlibdir_c: libdir_c,
+ oldlibdir_cc: libdir_cc,
+ libdir_local: libdir_local,
+ os.path.join(oldlibdir_a, libfile_a):
+ os.path.join(libdir_a, libfile_a),
+ os.path.join(oldlibdir_b, libfile_b):
+ os.path.join(libdir_b, libfile_b),
+ os.path.join(oldlibdir_local, libfile_loco):
+ os.path.join(libdir_local, libfile_loco),
+ os.path.join(oldlibdir_cc, libfile_c):
+ os.path.join(libdir_cc, libfile_c)}
+
+ out_dict = macho_find_paths([oldlibdir_a, oldlibdir_b,
+ oldlibdir_c,
+ oldlibdir_cc,
+ oldlibdir_local],
+ [os.path.join(oldlibdir_a,
+ libfile_a),
+ os.path.join(oldlibdir_b,
+ libfile_b),
+ os.path.join(oldlibdir_cc,
+ libfile_c),
+ os.path.join(oldlibdir_local,
+ libfile_loco)],
+ None,
+ old_spack_dir,
+ prefix2prefix
+ )
+ assert out_dict == {oldlibdir_a: libdir_a,
+ oldlibdir_b: libdir_b,
+ oldlibdir_c: libdir_c,
+ oldlibdir_cc: libdir_cc,
+ libdir_local: libdir_local,
+ os.path.join(oldlibdir_a, libfile_a):
+ os.path.join(libdir_a, libfile_a),
+ os.path.join(oldlibdir_b, libfile_b):
+ os.path.join(libdir_b, libfile_b),
+ os.path.join(oldlibdir_local, libfile_loco):
+ os.path.join(libdir_local, libfile_loco),
+ os.path.join(oldlibdir_cc, libfile_c):
+ os.path.join(libdir_cc, libfile_c)}
+
+ out_dict = macho_find_paths([oldlibdir_a, oldlibdir_b,
+ oldlibdir_c, oldlibdir_cc,
+ oldlibdir_local],
+ ['@rpath/%s' % libfile_a,
+ '@rpath/%s' % libfile_b,
+ '@rpath/%s' % libfile_c,
+ '@rpath/%s' % libfile_loco],
+ None,
+ old_spack_dir,
+ prefix2prefix
+ )
+
+ assert out_dict == {'@rpath/%s' % libfile_a:
+ '@rpath/%s' % libfile_a,
+ '@rpath/%s' % libfile_b:
+ '@rpath/%s' % libfile_b,
+ '@rpath/%s' % libfile_c:
+ '@rpath/%s' % libfile_c,
+ '@rpath/%s' % libfile_loco:
+ '@rpath/%s' % libfile_loco,
+ oldlibdir_a: libdir_a,
+ oldlibdir_b: libdir_b,
+ oldlibdir_c: libdir_c,
+ oldlibdir_cc: libdir_cc,
+ libdir_local: libdir_local,
+ }
+
+ out_dict = macho_find_paths([oldlibdir_a,
+ oldlibdir_b,
+ oldlibdir_d,
+ oldlibdir_local],
+ ['@rpath/%s' % libfile_a,
+ '@rpath/%s' % libfile_b,
+ '@rpath/%s' % libfile_loco],
+ None,
+ old_spack_dir,
+ prefix2prefix)
+ assert out_dict == {'@rpath/%s' % libfile_a:
+ '@rpath/%s' % libfile_a,
+ '@rpath/%s' % libfile_b:
+ '@rpath/%s' % libfile_b,
+ '@rpath/%s' % libfile_loco:
+ '@rpath/%s' % libfile_loco,
+ oldlibdir_a: libdir_a,
+ oldlibdir_b: libdir_b,
+ oldlibdir_d: libdir_d,
+ libdir_local: libdir_local,
+ }
+
+
+def test_macho_make_paths():
+ out = macho_make_paths_relative('/Users/Shared/spack/pkgC/lib/libC.dylib',
'/Users/Shared/spack',
('/Users/Shared/spack/pkgA/lib',
'/Users/Shared/spack/pkgB/lib',
@@ -264,13 +482,43 @@ def test_macho_paths():
'/Users/Shared/spack/pkgB/libB.dylib',
'/usr/local/lib/libloco.dylib'),
'/Users/Shared/spack/pkgC/lib/libC.dylib')
- assert out == (['@loader_path/../../../../Shared/spack/pkgA/lib',
- '@loader_path/../../../../Shared/spack/pkgB/lib',
- '/usr/local/lib'],
- ['@loader_path/../../../../Shared/spack/pkgA/libA.dylib',
- '@loader_path/../../../../Shared/spack/pkgB/libB.dylib',
- '/usr/local/lib/libloco.dylib'],
- '@rpath/libC.dylib')
+ assert out == {'/Users/Shared/spack/pkgA/lib':
+ '@loader_path/../../pkgA/lib',
+ '/Users/Shared/spack/pkgB/lib':
+ '@loader_path/../../pkgB/lib',
+ '/usr/local/lib': '/usr/local/lib',
+ '/Users/Shared/spack/pkgA/libA.dylib':
+ '@loader_path/../../pkgA/libA.dylib',
+ '/Users/Shared/spack/pkgB/libB.dylib':
+ '@loader_path/../../pkgB/libB.dylib',
+ '/usr/local/lib/libloco.dylib':
+ '/usr/local/lib/libloco.dylib',
+ '/Users/Shared/spack/pkgC/lib/libC.dylib':
+ '@rpath/libC.dylib'}
+
+ out = macho_make_paths_normal('/Users/Shared/spack/pkgC/lib/libC.dylib',
+ ('@loader_path/../../pkgA/lib',
+ '@loader_path/../../pkgB/lib',
+ '/usr/local/lib'),
+ ('@loader_path/../../pkgA/libA.dylib',
+ '@loader_path/../../pkgB/libB.dylib',
+ '/usr/local/lib/libloco.dylib'),
+ '@rpath/libC.dylib')
+
+ assert out == {'@rpath/libC.dylib':
+ '/Users/Shared/spack/pkgC/lib/libC.dylib',
+ '@loader_path/../../pkgA/lib':
+ '/Users/Shared/spack/pkgA/lib',
+ '@loader_path/../../pkgB/lib':
+ '/Users/Shared/spack/pkgB/lib',
+ '/usr/local/lib': '/usr/local/lib',
+ '@loader_path/../../pkgA/libA.dylib':
+ '/Users/Shared/spack/pkgA/libA.dylib',
+ '@loader_path/../../pkgB/libB.dylib':
+ '/Users/Shared/spack/pkgB/libB.dylib',
+ '/usr/local/lib/libloco.dylib':
+ '/usr/local/lib/libloco.dylib'
+ }
out = macho_make_paths_relative('/Users/Shared/spack/pkgC/bin/exeC',
'/Users/Shared/spack',
@@ -281,98 +529,47 @@ def test_macho_paths():
'/Users/Shared/spack/pkgB/libB.dylib',
'/usr/local/lib/libloco.dylib'), None)
- assert out == (['@loader_path/../../pkgA/lib',
- '@loader_path/../../pkgB/lib',
- '/usr/local/lib'],
- ['@loader_path/../../pkgA/libA.dylib',
- '@loader_path/../../pkgB/libB.dylib',
- '/usr/local/lib/libloco.dylib'], None)
-
- out = macho_replace_paths('/Users/Shared/spack',
- '/Applications/spack',
- ('/Users/Shared/spack/pkgA/lib',
- '/Users/Shared/spack/pkgB/lib',
- '/usr/local/lib'),
- ('/Users/Shared/spack/pkgA/libA.dylib',
- '/Users/Shared/spack/pkgB/libB.dylib',
- '/usr/local/lib/libloco.dylib'),
- '/Users/Shared/spack/pkgC/lib/libC.dylib')
- assert out == (['/Applications/spack/pkgA/lib',
- '/Applications/spack/pkgB/lib',
- '/usr/local/lib'],
- ['/Applications/spack/pkgA/libA.dylib',
- '/Applications/spack/pkgB/libB.dylib',
- '/usr/local/lib/libloco.dylib'],
- '/Applications/spack/pkgC/lib/libC.dylib')
-
- out = macho_replace_paths('/Users/Shared/spack',
- '/Applications/spack',
- ('/Users/Shared/spack/pkgA/lib',
- '/Users/Shared/spack/pkgB/lib',
- '/usr/local/lib'),
- ('/Users/Shared/spack/pkgA/libA.dylib',
- '/Users/Shared/spack/pkgB/libB.dylib',
- '/usr/local/lib/libloco.dylib'),
- None)
- assert out == (['/Applications/spack/pkgA/lib',
- '/Applications/spack/pkgB/lib',
- '/usr/local/lib'],
- ['/Applications/spack/pkgA/libA.dylib',
- '/Applications/spack/pkgB/libB.dylib',
- '/usr/local/lib/libloco.dylib'],
- None)
+ assert out == {'/Users/Shared/spack/pkgA/lib':
+ '@loader_path/../../pkgA/lib',
+ '/Users/Shared/spack/pkgB/lib':
+ '@loader_path/../../pkgB/lib',
+ '/usr/local/lib': '/usr/local/lib',
+ '/Users/Shared/spack/pkgA/libA.dylib':
+ '@loader_path/../../pkgA/libA.dylib',
+ '/Users/Shared/spack/pkgB/libB.dylib':
+ '@loader_path/../../pkgB/libB.dylib',
+ '/usr/local/lib/libloco.dylib':
+ '/usr/local/lib/libloco.dylib'}
+
+ out = macho_make_paths_normal('/Users/Shared/spack/pkgC/bin/exeC',
+ ('@loader_path/../../pkgA/lib',
+ '@loader_path/../../pkgB/lib',
+ '/usr/local/lib'),
+ ('@loader_path/../../pkgA/libA.dylib',
+ '@loader_path/../../pkgB/libB.dylib',
+ '/usr/local/lib/libloco.dylib'),
+ None)
+
+ assert out == {'@loader_path/../../pkgA/lib':
+ '/Users/Shared/spack/pkgA/lib',
+ '@loader_path/../../pkgB/lib':
+ '/Users/Shared/spack/pkgB/lib',
+ '/usr/local/lib': '/usr/local/lib',
+ '@loader_path/../../pkgA/libA.dylib':
+ '/Users/Shared/spack/pkgA/libA.dylib',
+ '@loader_path/../../pkgB/libB.dylib':
+ '/Users/Shared/spack/pkgB/libB.dylib',
+ '/usr/local/lib/libloco.dylib':
+ '/usr/local/lib/libloco.dylib'}
def test_elf_paths():
- out = get_relative_rpaths(
+ out = get_relative_elf_rpaths(
'/usr/bin/test', '/usr',
('/usr/lib', '/usr/lib64', '/opt/local/lib'))
assert out == ['$ORIGIN/../lib', '$ORIGIN/../lib64', '/opt/local/lib']
- out = substitute_rpath(
- ('/usr/lib', '/usr/lib64', '/opt/local/lib'), '/usr', '/opt')
- assert out == ['/opt/lib', '/opt/lib64', '/opt/local/lib']
-
-
-@pytest.mark.skipif(sys.platform != 'darwin',
- reason="only works with Mach-o objects")
-def test_relocate_macho(tmpdir):
- with tmpdir.as_cwd():
-
- get_patchelf() # this does nothing on Darwin
-
- rpaths, deps, idpath = macho_get_paths('/bin/bash')
- nrpaths, ndeps, nid = macho_make_paths_relative('/bin/bash', '/usr',
- rpaths, deps, idpath)
- shutil.copyfile('/bin/bash', 'bash')
- modify_macho_object('bash',
- rpaths, deps, idpath,
- nrpaths, ndeps, nid)
-
- rpaths, deps, idpath = macho_get_paths('/bin/bash')
- nrpaths, ndeps, nid = macho_replace_paths('/usr', '/opt',
- rpaths, deps, idpath)
- shutil.copyfile('/bin/bash', 'bash')
- modify_macho_object('bash',
- rpaths, deps, idpath,
- nrpaths, ndeps, nid)
-
- path = '/usr/lib/libncurses.5.4.dylib'
- rpaths, deps, idpath = macho_get_paths(path)
- nrpaths, ndeps, nid = macho_make_paths_relative(path, '/usr',
- rpaths, deps, idpath)
- shutil.copyfile(
- '/usr/lib/libncurses.5.4.dylib', 'libncurses.5.4.dylib')
- modify_macho_object('libncurses.5.4.dylib',
- rpaths, deps, idpath,
- nrpaths, ndeps, nid)
-
- rpaths, deps, idpath = macho_get_paths(path)
- nrpaths, ndeps, nid = macho_replace_paths('/usr', '/opt',
- rpaths, deps, idpath)
- shutil.copyfile(
- '/usr/lib/libncurses.5.4.dylib', 'libncurses.5.4.dylib')
- modify_macho_object(
- 'libncurses.5.4.dylib',
- rpaths, deps, idpath,
- nrpaths, ndeps, nid)
+ out = get_normalized_elf_rpaths(
+ '/usr/bin/test',
+ ['$ORIGIN/../lib', '$ORIGIN/../lib64', '/opt/local/lib'])
+ assert out == ['/usr/lib', '/usr/lib64', '/opt/local/lib']
diff --git a/lib/spack/spack/test/relocate.py b/lib/spack/spack/test/relocate.py
index 113bdcf66a..0a9e9f7f0a 100644
--- a/lib/spack/spack/test/relocate.py
+++ b/lib/spack/spack/test/relocate.py
@@ -3,15 +3,18 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import collections
import os.path
import platform
import shutil
-import pytest
-
import llnl.util.filesystem
+import pytest
+import spack.architecture
+import spack.concretize
import spack.paths
import spack.relocate
+import spack.spec
import spack.store
import spack.tengine
import spack.util.executable
@@ -45,6 +48,47 @@ def source_file(tmpdir, is_relocatable):
return src
+@pytest.fixture(params=['which_found', 'installed', 'to_be_installed'])
+def expected_patchelf_path(request, mutable_database, monkeypatch):
+ """Prepare the stage to tests different cases that can occur
+ when searching for patchelf.
+ """
+ case = request.param
+
+ # Mock the which function
+ which_fn = {
+ 'which_found': lambda x: collections.namedtuple(
+ '_', ['path']
+ )('/usr/bin/patchelf')
+ }
+ monkeypatch.setattr(
+ spack.util.executable, 'which',
+ which_fn.setdefault(case, lambda x: None)
+ )
+ if case == 'which_found':
+ return '/usr/bin/patchelf'
+
+ # TODO: Mock a case for Darwin architecture
+
+ spec = spack.spec.Spec('patchelf')
+ spec.concretize()
+
+ patchelf_cls = type(spec.package)
+ do_install = patchelf_cls.do_install
+ expected_path = os.path.join(spec.prefix.bin, 'patchelf')
+
+ def do_install_mock(self, **kwargs):
+ do_install(self, fake=True)
+ with open(expected_path):
+ pass
+
+ monkeypatch.setattr(patchelf_cls, 'do_install', do_install_mock)
+ if case == 'installed':
+ spec.package.do_install()
+
+ return expected_path
+
+
@pytest.mark.requires_executables(
'/usr/bin/gcc', 'patchelf', 'strings', 'file'
)
@@ -64,7 +108,7 @@ def test_file_is_relocatable(source_file, is_relocatable):
'patchelf', 'strings', 'file'
)
def test_patchelf_is_relocatable():
- patchelf = spack.relocate.get_patchelf()
+ patchelf = spack.relocate._patchelf()
assert llnl.util.filesystem.is_exe(patchelf)
assert spack.relocate.file_is_relocatable(patchelf)
@@ -87,3 +131,12 @@ def test_file_is_relocatable_errors(tmpdir):
with pytest.raises(ValueError) as exc_info:
spack.relocate.file_is_relocatable('delete.me')
assert 'is not an absolute path' in str(exc_info.value)
+
+
+@pytest.mark.skipif(
+ platform.system().lower() != 'linux',
+ reason='implementation for MacOS still missing'
+)
+def test_search_patchelf(expected_patchelf_path):
+ current = spack.relocate._patchelf()
+ assert current == expected_patchelf_path
diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py
index 419a39968e..e031f02c25 100644
--- a/lib/spack/spack/test/spec_dag.py
+++ b/lib/spack/spack/test/spec_dag.py
@@ -189,7 +189,7 @@ def test_conditional_dep_with_user_constraints():
assert ('y@3' in spec)
-@pytest.mark.usefixtures('mutable_mock_repo')
+@pytest.mark.usefixtures('mutable_mock_repo', 'config')
class TestSpecDag(object):
def test_conflicting_package_constraints(self, set_dependency):
@@ -387,7 +387,6 @@ class TestSpecDag(object):
with pytest.raises(spack.spec.UnsatisfiableArchitectureSpecError):
spec.normalize()
- @pytest.mark.usefixtures('config')
def test_invalid_dep(self):
spec = Spec('libelf ^mpich')
with pytest.raises(spack.spec.InvalidDependencyError):
@@ -602,7 +601,6 @@ class TestSpecDag(object):
copy_ids = set(id(s) for s in copy.traverse())
assert not orig_ids.intersection(copy_ids)
- @pytest.mark.usefixtures('config')
def test_copy_concretized(self):
orig = Spec('mpileaks')
orig.concretize()
diff --git a/lib/spack/spack/test/url_fetch.py b/lib/spack/spack/test/url_fetch.py
index 679240049d..20648b4766 100644
--- a/lib/spack/spack/test/url_fetch.py
+++ b/lib/spack/spack/test/url_fetch.py
@@ -26,10 +26,10 @@ def checksum_type(request):
@pytest.fixture
def pkg_factory():
Pkg = collections.namedtuple(
- 'Pkg', ['url_for_version', 'urls', 'url', 'versions']
+ 'Pkg', ['url_for_version', 'urls', 'url', 'versions', 'fetch_options']
)
- def factory(url, urls):
+ def factory(url, urls, fetch_options={}):
def fn(v):
main_url = url or urls[0]
@@ -37,7 +37,8 @@ def pkg_factory():
return Pkg(
url_for_version=fn, url=url, urls=urls,
- versions=collections.defaultdict(dict)
+ versions=collections.defaultdict(dict),
+ fetch_options=fetch_options
)
return factory
@@ -130,6 +131,10 @@ def test_from_list_url(mock_packages, config, spec, url, digest):
assert isinstance(fetch_strategy, fs.URLFetchStrategy)
assert os.path.basename(fetch_strategy.url) == url
assert fetch_strategy.digest == digest
+ assert fetch_strategy.extra_options == {}
+ pkg.fetch_options = {'timeout': 60}
+ fetch_strategy = fs.from_list_url(pkg)
+ assert fetch_strategy.extra_options == {'timeout': 60}
def test_from_list_url_unspecified(mock_packages, config):
@@ -142,6 +147,10 @@ def test_from_list_url_unspecified(mock_packages, config):
assert isinstance(fetch_strategy, fs.URLFetchStrategy)
assert os.path.basename(fetch_strategy.url) == 'foo-2.0.0.tar.gz'
assert fetch_strategy.digest is None
+ assert fetch_strategy.extra_options == {}
+ pkg.fetch_options = {'timeout': 60}
+ fetch_strategy = fs.from_list_url(pkg)
+ assert fetch_strategy.extra_options == {'timeout': 60}
def test_nosource_from_list_url(mock_packages, config):
@@ -191,3 +200,7 @@ def test_candidate_urls(pkg_factory, url, urls, version, expected):
pkg = pkg_factory(url, urls)
f = fs._from_merged_attrs(fs.URLFetchStrategy, pkg, version)
assert f.candidate_urls == expected
+ assert f.extra_options == {}
+ pkg = pkg_factory(url, urls, fetch_options={'timeout': 60})
+ f = fs._from_merged_attrs(fs.URLFetchStrategy, pkg, version)
+ assert f.extra_options == {'timeout': 60}
diff --git a/lib/spack/spack/util/compression.py b/lib/spack/spack/util/compression.py
index d617954ab1..1688b49f1b 100644
--- a/lib/spack/spack/util/compression.py
+++ b/lib/spack/spack/util/compression.py
@@ -32,6 +32,9 @@ def decompressor_for(path, extension=None):
if extension and re.match(r'gz', extension):
gunzip = which('gunzip', required=True)
return gunzip
+ if extension and re.match(r'bz2', extension):
+ bunzip2 = which('bunzip2', required=True)
+ return bunzip2
tar = which('tar', required=True)
tar.add_default_arg('-xf')
return tar
diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py
index ce30e18f42..1f5fdfb761 100644
--- a/lib/spack/spack/util/executable.py
+++ b/lib/spack/spack/util/executable.py
@@ -209,7 +209,7 @@ class Executable(object):
istream.close()
def __eq__(self, other):
- return self.exe == other.exe
+ return hasattr(other, 'exe') and self.exe == other.exe
def __neq__(self, other):
return not (self == other)
diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py
index 0edf7e6102..74790156ae 100644
--- a/lib/spack/spack/util/module_cmd.py
+++ b/lib/spack/spack/util/module_cmd.py
@@ -19,16 +19,11 @@ import llnl.util.tty as tty
# If we need another option that changes the environment, add it here.
module_change_commands = ['load', 'swap', 'unload', 'purge', 'use', 'unuse']
py_cmd = "'import os;import json;print(json.dumps(dict(os.environ)))'"
-
-# This is just to enable testing. I hate it but we can't find a better way
-_test_mode = False
+_cmd_template = "'module ' + ' '.join(args) + ' 2>&1'"
def module(*args):
- module_cmd = 'module ' + ' '.join(args) + ' 2>&1'
- if _test_mode:
- tty.warn('module function operating in test mode')
- module_cmd = ". %s 2>&1" % args[1]
+ module_cmd = eval(_cmd_template) # So we can monkeypatch for testing
if args[0] in module_change_commands:
# Do the module manipulation, then output the environment in JSON
# and read the JSON back in the parent process to update os.environ
diff --git a/lib/spack/spack/util/web.py b/lib/spack/spack/util/web.py
index 4fb8c5a591..8039dc5fda 100644
--- a/lib/spack/spack/util/web.py
+++ b/lib/spack/spack/util/web.py
@@ -205,6 +205,8 @@ def push_to_url(
# needs to be done in separate steps.
shutil.copy2(local_file_path, remote_file_path)
os.remove(local_file_path)
+ else:
+ raise
elif remote_url.scheme == 's3':
if extra_args is None:
diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash
index 8f677adbf9..a4d59220fa 100755
--- a/share/spack/spack-completion.bash
+++ b/share/spack/spack-completion.bash
@@ -382,7 +382,7 @@ _spack_buildcache() {
_spack_buildcache_create() {
if $list_options
then
- SPACK_COMPREPLY="-h --help -r --rel -f --force -u --unsigned -a --allow-root -k --key -d --directory --no-rebuild-index -y --spec-yaml --no-deps"
+ SPACK_COMPREPLY="-h --help -r --rel -f --force -u --unsigned -a --allow-root -k --key -d --directory -m --mirror-name --mirror-url --no-rebuild-index -y --spec-yaml --only"
else
_all_packages
fi
@@ -391,7 +391,7 @@ _spack_buildcache_create() {
_spack_buildcache_install() {
if $list_options
then
- SPACK_COMPREPLY="-h --help -f --force -m --multiple -a --allow-root -u --unsigned"
+ SPACK_COMPREPLY="-h --help -f --force -m --multiple -a --allow-root -u --unsigned -o --otherarch"
else
_all_packages
fi
@@ -655,7 +655,7 @@ _spack_debug() {
then
SPACK_COMPREPLY="-h --help"
else
- SPACK_COMPREPLY="create-db-tarball"
+ SPACK_COMPREPLY="create-db-tarball report"
fi
}
@@ -663,6 +663,10 @@ _spack_debug_create_db_tarball() {
SPACK_COMPREPLY="-h --help"
}
+_spack_debug_report() {
+ SPACK_COMPREPLY="-h --help"
+}
+
_spack_dependencies() {
if $list_options
then
@@ -980,7 +984,7 @@ _spack_list() {
_spack_load() {
if $list_options
then
- SPACK_COMPREPLY="-h --help -r --dependencies --sh --csh --only"
+ SPACK_COMPREPLY="-h --help -r --dependencies --sh --csh --first --only"
else
_installed_packages
fi
@@ -1025,7 +1029,7 @@ _spack_mirror() {
_spack_mirror_create() {
if $list_options
then
- SPACK_COMPREPLY="-h --help -d --directory -a --all -f --file -D --dependencies -n --versions-per-spec"
+ SPACK_COMPREPLY="-h --help -d --directory -a --all -f --file --skip-unstable-versions -D --dependencies -n --versions-per-spec"
else
_all_packages
fi
@@ -1272,7 +1276,7 @@ _spack_pydoc() {
_spack_python() {
if $list_options
then
- SPACK_COMPREPLY="-h --help -c -m"
+ SPACK_COMPREPLY="-h --help -V --version -c -m"
else
SPACK_COMPREPLY=""
fi
diff --git a/var/spack/repos/builtin.mock/packages/cmake-client/package.py b/var/spack/repos/builtin.mock/packages/cmake-client/package.py
index 286ee08086..2350259b22 100644
--- a/var/spack/repos/builtin.mock/packages/cmake-client/package.py
+++ b/var/spack/repos/builtin.mock/packages/cmake-client/package.py
@@ -21,6 +21,14 @@ class CmakeClient(CMakePackage):
version('1.0', '4cb3ff35b2472aae70f542116d616e63')
+ variant(
+ 'multi', description='',
+ values=any_combination_of('up', 'right', 'back').with_default('up')
+ )
+ variant('single', description='', default='blue',
+ values=('blue', 'red', 'green'), multi=False)
+ variant('truthy', description='', default=True)
+
callback_counter = 0
flipped = False
diff --git a/var/spack/repos/builtin.mock/packages/fetch-options/package.py b/var/spack/repos/builtin.mock/packages/fetch-options/package.py
new file mode 100644
index 0000000000..1a31a535e1
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/fetch-options/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2020 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 FetchOptions(Package):
+ """Mock package with fetch_options."""
+
+ homepage = "http://www.fetch-options-example.com"
+
+ url = 'https://example.com/some/tarball-1.0.tar.gz'
+
+ fetch_options = {'timeout': 42, 'cookie': 'foobar'}
+ timeout = {'timeout': 65}
+ cookie = {'cookie': 'baz'}
+
+ version('1.2', 'abc12', fetch_options=cookie)
+ version('1.1', 'abc11', fetch_options=timeout)
+ version('1.0', 'abc10')
diff --git a/var/spack/repos/builtin.mock/packages/mirror-gnu-broken/package.py b/var/spack/repos/builtin.mock/packages/mirror-gnu-broken/package.py
new file mode 100644
index 0000000000..d55f57f114
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/mirror-gnu-broken/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2020 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 MirrorGnuBroken(AutotoolsPackage, GNUMirrorPackage):
+ """Simple GNU package"""
+
+ homepage = "https://www.gnu.org/software/make/"
+ url = "https://ftpmirror.gnu.org/make/make-4.2.1.tar.gz"
+
+ version('4.2.1', sha256='e40b8f018c1da64edd1cc9a6fce5fa63b2e707e404e20cad91fbae337c98a5b7')
diff --git a/var/spack/repos/builtin.mock/packages/mirror-gnu/package.py b/var/spack/repos/builtin.mock/packages/mirror-gnu/package.py
new file mode 100644
index 0000000000..fe94998e8c
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/mirror-gnu/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2020 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 MirrorGnu(AutotoolsPackage, GNUMirrorPackage):
+ """Simple GNU package"""
+
+ homepage = "https://www.gnu.org/software/make/"
+ gnu_mirror_path = "make/make-4.2.1.tar.gz"
+
+ version('4.2.1', sha256='e40b8f018c1da64edd1cc9a6fce5fa63b2e707e404e20cad91fbae337c98a5b7')
diff --git a/var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/mirror-gnu-broken/package.py b/var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/mirror-gnu-broken/package.py
new file mode 100644
index 0000000000..d55f57f114
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/mirror-gnu-broken/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2020 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 MirrorGnuBroken(AutotoolsPackage, GNUMirrorPackage):
+ """Simple GNU package"""
+
+ homepage = "https://www.gnu.org/software/make/"
+ url = "https://ftpmirror.gnu.org/make/make-4.2.1.tar.gz"
+
+ version('4.2.1', sha256='e40b8f018c1da64edd1cc9a6fce5fa63b2e707e404e20cad91fbae337c98a5b7')
diff --git a/var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/package.py b/var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/package.py
new file mode 100644
index 0000000000..82c3d99819
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/mirror-sourceware-broken/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2020 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 MirrorSourcewareBroken(AutotoolsPackage, SourcewarePackage):
+ """Simple sourceware.org package"""
+
+ homepage = "https://sourceware.org/bzip2/"
+ url = "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz"
+
+ version('1.0.8', sha256='ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269')
diff --git a/var/spack/repos/builtin.mock/packages/mirror-sourceware/package.py b/var/spack/repos/builtin.mock/packages/mirror-sourceware/package.py
new file mode 100644
index 0000000000..31c4ad2ed7
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/mirror-sourceware/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2020 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 MirrorSourceware(AutotoolsPackage, SourcewarePackage):
+ """Simple sourceware.org package"""
+
+ homepage = "https://sourceware.org/bzip2/"
+ sourceware_mirror_path = "bzip2/bzip2-1.0.8.tar.gz"
+
+ version('1.0.8', sha256='ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269')
diff --git a/var/spack/repos/builtin.mock/packages/mirror-xorg-broken/package.py b/var/spack/repos/builtin.mock/packages/mirror-xorg-broken/package.py
new file mode 100644
index 0000000000..42e9a2be2a
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/mirror-xorg-broken/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2020 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 MirrorXorgBroken(AutotoolsPackage, XorgPackage):
+ """Simple x.org package"""
+
+ homepage = "http://cgit.freedesktop.org/xorg/util/macros/"
+ url = "https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2"
+
+ version('1.19.1', sha256='18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6')
diff --git a/var/spack/repos/builtin.mock/packages/mirror-xorg/package.py b/var/spack/repos/builtin.mock/packages/mirror-xorg/package.py
new file mode 100644
index 0000000000..513eb90780
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/mirror-xorg/package.py
@@ -0,0 +1,15 @@
+# Copyright 2013-2020 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 MirrorXorg(AutotoolsPackage, XorgPackage):
+ """Simple x.org package"""
+
+ homepage = "http://cgit.freedesktop.org/xorg/util/macros/"
+ xorg_mirror_path = "util/util-macros-1.19.1.tar.bz2"
+
+ version('1.19.1', sha256='18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6')
diff --git a/var/spack/repos/builtin.mock/packages/trivial-pkg-with-valid-hash/package.py b/var/spack/repos/builtin.mock/packages/trivial-pkg-with-valid-hash/package.py
new file mode 100644
index 0000000000..52fd3d99a6
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/trivial-pkg-with-valid-hash/package.py
@@ -0,0 +1,17 @@
+# Copyright 2013-2020 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 TrivialPkgWithValidHash(Package):
+ url = "http://www.unit-test-should-replace-this-url/trivial_install-1.0"
+
+ version('1.0', '6ae8a75555209fd6c44157c0aed8016e763ff435a19cf186f76863140143ff72', expand=False)
+
+ hashed_content = "test content"
+
+ def install(self, spec, prefix):
+ pass
diff --git a/var/spack/repos/builtin/packages/acl/package.py b/var/spack/repos/builtin/packages/acl/package.py
new file mode 100644
index 0000000000..ea9bf4172f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/acl/package.py
@@ -0,0 +1,30 @@
+# Copyright 2013-2020 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 Acl(AutotoolsPackage):
+ """Commands for Manipulating POSIX Access Control Lists."""
+
+ homepage = "https://savannah.nongnu.org/projects/acl"
+ url = "http://git.savannah.nongnu.org/cgit/acl.git/snapshot/acl-2.2.53.tar.gz"
+
+ version('2.2.53', sha256='9e905397ac10d06768c63edd0579c34b8431555f2ea8e8f2cee337b31f856805')
+ version('2.2.52', sha256='f3f31d2229c903184ff877aa0ee658b87ec20fec8aebb51e65eaa68d7b24e629')
+ version('2.2.51', sha256='31a43d96a274a39bfcb805fb903d45840515344884d224cef166b482693a9f48')
+ version('2.2.50', sha256='39e21d623a9f0da8c042cde346c01871b498d51400e92c2ab1490d5ffd724401')
+ version('2.2.49', sha256='c6e01460cac4e47673dd60a7f57b970b49f6998bb564eff141cca129aa8940d1')
+ version('2.2.48', sha256='877eaeccc1500baec58391935b46ac7dfc5ffd8c54fbc0385ccd8b2b18ac3fa6')
+
+ depends_on('m4', type='build')
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('attr')
+
+ def autoreconf(self, spec, prefix):
+ bash = which('bash')
+ bash('./autogen.sh')
diff --git a/var/spack/repos/builtin/packages/acts-core/package.py b/var/spack/repos/builtin/packages/acts-core/package.py
index 1cd9fe6375..ea3498b4f3 100644
--- a/var/spack/repos/builtin/packages/acts-core/package.py
+++ b/var/spack/repos/builtin/packages/acts-core/package.py
@@ -30,10 +30,15 @@ class ActsCore(CMakePackage):
"""
homepage = "http://acts.web.cern.ch/ACTS/"
- git = "https://gitlab.cern.ch/acts/acts-core.git"
+ git = "https://github.com/acts-project/acts.git"
maintainers = ['HadrienG2']
- version('develop', branch='master')
+ version('master', branch='master')
+ version('0.21.0', commit='10b719e68ddaca15b28ac25b3daddce8c0d3368d')
+ version('0.20.0', commit='1d37a849a9c318e8ca4fa541ef8433c1f004637b')
+ version('0.19.0', commit='408335636486c421c6222a64372250ef12544df6')
+ version('0.18.0', commit='d58a68cf75b52a5e0f563bc237f09250aa9da80c')
+ version('0.17.0', commit='0789f654ff484b013fd27e5023cf342785ea8d97')
version('0.16.0', commit='b3d965fe0b8ae335909d79114ef261c6b996773a')
version('0.15.0', commit='267c28f69c561e64369661a6235b03b5a610d6da')
version('0.14.0', commit='38d678fcb205b77d60326eae913fbb1b054acea1')
@@ -75,7 +80,8 @@ class ActsCore(CMakePackage):
depends_on('cmake @3.11:', type='build')
depends_on('boost @1.62:1.69.99 +program_options +test', when='@:0.10.3')
- depends_on('boost @1.62: +program_options +test', when='@0.10.4:')
+ depends_on('boost @1.62: +program_options +test', when='@0.10.4:0.18.0')
+ depends_on('boost @1.69: +program_options +test', when='@0.19.0:')
depends_on('eigen @3.2.9:', type='build')
depends_on('nlohmann-json @3.2.0:', when='@0.14.0: +json')
depends_on('root @6.10: cxxstd=14', when='+tgeo @:0.8.0')
diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py
index c9e32faec5..9d298b4213 100644
--- a/var/spack/repos/builtin/packages/adios2/package.py
+++ b/var/spack/repos/builtin/packages/adios2/package.py
@@ -16,7 +16,7 @@ class Adios2(CMakePackage):
maintainers = ['ax3l', 'chuckatkins', 'williamfgc']
- version('develop', branch='master')
+ version('master', branch='master')
version('2.5.0', sha256='7c8ff3bf5441dd662806df9650c56a669359cb0185ea232ecb3578de7b065329')
version('2.4.0', sha256='50ecea04b1e41c88835b4b3fd4e7bf0a0a2a3129855c9cc4ba6cf6a1575106e2')
version('2.3.1', sha256='3bf81ccc20a7f2715935349336a76ba4c8402355e1dc3848fcd6f4c3c5931893')
@@ -100,8 +100,12 @@ class Adios2(CMakePackage):
extends('python', when='+python')
depends_on('python@2.7:2.8,3.5:',
- when='@:2.4.0 +python', type=('build', 'run'))
- depends_on('python@3.5:', when='@2.5.0: +python', type=('build', 'run'))
+ when='@:2.4.0 +python',
+ type=('build', 'run'))
+ depends_on('python@3.5:', when='@2.5.0: +python',
+ type=('build', 'run'))
+ depends_on('python@2.7:2.8,3.5:', when='@:2.4.0', type='test')
+ depends_on('python@3.5:', when='@2.5.0:', type='test')
depends_on('py-numpy@1.6.1:', type=('build', 'run'), when='+python')
depends_on('py-mpi4py@2.0.0:', type=('build', 'run'), when='+mpi +python')
@@ -141,9 +145,11 @@ class Adios2(CMakePackage):
'ON' if '+fortran' in spec else 'OFF'),
'-DADIOS2_USE_Endian_Reverse={0}'.format(
'ON' if '+endian_reverse' in spec else 'OFF'),
+ '-DBUILD_TESTING:BOOL={0}'.format(
+ 'ON' if self.run_tests else 'OFF'),
]
- if self.spec.version >= Version('2.4.0'):
+ if spec.version >= Version('2.4.0'):
args.append('-DADIOS2_USE_Blosc={0}'.format(
'ON' if '+blosc' in spec else 'OFF'))
args.append('-DADIOS2_USE_BZip2={0}'.format(
@@ -153,7 +159,7 @@ class Adios2(CMakePackage):
args.append('-DADIOS2_USE_SSC={0}'.format(
'ON' if '+ssc' in spec else 'OFF'))
- if self.spec.version >= Version('2.5.0'):
+ if spec.version >= Version('2.5.0'):
args.append('-DADIOS2_USE_DataSpaces={0}'.format(
'ON' if '+dataspaces' in spec else 'OFF'))
@@ -173,8 +179,8 @@ class Adios2(CMakePackage):
args.append('-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL={0}'.format(
'ON' if '+pic' in spec else 'OFF'))
- if spec.satisfies('+python'):
+ if spec.satisfies('+python') or self.run_tests:
args.append('-DPYTHON_EXECUTABLE:FILEPATH=%s'
- % self.spec['python'].command.path)
+ % spec['python'].command.path)
return args
diff --git a/var/spack/repos/builtin/packages/adol-c/package.py b/var/spack/repos/builtin/packages/adol-c/package.py
index 336f1833db..def99d8a4e 100644
--- a/var/spack/repos/builtin/packages/adol-c/package.py
+++ b/var/spack/repos/builtin/packages/adol-c/package.py
@@ -11,15 +11,20 @@ class AdolC(AutotoolsPackage):
derivatives of vector functions in C and C++ programs by operator
overloading."""
- homepage = "https://projects.coin-or.org/ADOL-C"
- url = "http://www.coin-or.org/download/source/ADOL-C/ADOL-C-2.6.1.tgz"
- git = "https://gitlab.com/adol-c/adol-c.git"
-
- version('develop', branch='master')
- version('2.6.3', sha256='6ed74580695a0d2c960581e5430ebfcd380eb5da9337daf488bf2e89039e9c21')
- version('2.6.2', sha256='f6326e7ba994d02074816132d4461915221069267c31862b31fab7020965c658')
- version('2.6.1', sha256='037089e0f64224e5e6255b61af4fe7faac080533fd778b76fe946e52491918b5')
- version('2.5.2', sha256='2fa514d9799989d6379738c2bcf75070d9834e4d227eb32a5b278840893b2af9')
+ homepage = "https://github.com/coin-or/ADOL-C"
+ url = "https://github.com/coin-or/ADOL-C/archive/releases/2.7.2.tar.gz"
+ git = "https://github.com/coin-or/ADOL-C.git"
+ version('master', branch='master')
+ version('2.7.2', sha256='701e0856baae91b98397960d5e0a87a549988de9d4002d0e9a56fa08f5455f6e')
+ version('2.7.1', sha256='a05422cc7faff5700e134e113822d1934fb540ad247e63778524d5d6d75bb0ef')
+ version('2.7.0', sha256='a75cfa6240de8692b2a3e8e782319efefc316f1e595234fcee972ab0e7afa3cd')
+ version('2.6.3', sha256='9750a0a06dcab9a0dba2010f07872ea9057ed29781e9e7d571691c27aa559b04')
+ version('2.6.2', sha256='4ef6ff15b4691235c0ea6580917c7eb17d09ded485ac524a0a33ac7e99ab004b')
+ version('2.6.1', sha256='48b41c40d1c8437fb98eeed4b24deaf3e59da804f34ac9c848da1b049b3b071a')
+ version('2.6.0', sha256='26a1fcb8561f15781f645d245fc345c83497147ec7bb64d4bfc96e32c34c6c1c')
+ version('2.5.2', sha256='390edb1513f749b2dbf6fb90db12ce786f6532af80e589f161ff43646b3a78a6')
+ version('2.5.1', sha256='dedb93c3bb291366d799014b04b6d1ec63ca4e7216edf16167776c07961e3b4a')
+ version('2.5.0', sha256='9d51c426d831884aac8f418be410c001eb62f3a11cb8f30c66af0b842edffb96')
variant('advanced_branching', default=False,
description='Enable advanced branching to reduce retaping')
diff --git a/var/spack/repos/builtin/packages/agrep/package.py b/var/spack/repos/builtin/packages/agrep/package.py
new file mode 100644
index 0000000000..dce047ad05
--- /dev/null
+++ b/var/spack/repos/builtin/packages/agrep/package.py
@@ -0,0 +1,23 @@
+# Copyright 2013-2020 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 Agrep(MakefilePackage):
+ """AGREP - an approximate GREP.
+ Fast searching files for a string or regular expression,
+ with approximate matching capabilities and user-definable records.
+ Developed 1989-1991 by Udi Manber, Sun Wu et al. at the University
+ of Arizona."""
+
+ homepage = "http://www.tgries.de/agrep"
+ url = "https://www.tgries.de/agrep/agrep-3.41.tgz"
+
+ version('3.41', sha256='0508eafaf9725fc67cc955eb6d32ba4f50138443a4fea4275508d2c3f67a234e')
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install('agrep', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/amdblis/package.py b/var/spack/repos/builtin/packages/amdblis/package.py
index 5b216bebd7..706e7f6bd2 100644
--- a/var/spack/repos/builtin/packages/amdblis/package.py
+++ b/var/spack/repos/builtin/packages/amdblis/package.py
@@ -15,6 +15,7 @@ class Amdblis(BlisBase):
computationally intensive operations.
"""
+ _name = 'amdblis'
homepage = "https://developer.amd.com/amd-aocl/blas-library/"
url = "https://github.com/amd/blis/archive/2.1.tar.gz"
git = "https://github.com/amd/blis.git"
diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py
index 8d0b15ead6..5bd19e582b 100644
--- a/var/spack/repos/builtin/packages/amrex/package.py
+++ b/var/spack/repos/builtin/packages/amrex/package.py
@@ -18,6 +18,8 @@ class Amrex(CMakePackage):
maintainers = ['mic84', 'asalmgren']
version('develop', branch='development')
+ version('20.04', sha256='ce951105336d6fcc07abe3eadf9f71161f0ccbe3e45f4547be4d0ae99e15f3c6')
+ version('20.03', sha256='a535dcc016f0d38b55d0ab8e9067c1c53e3686961f6a1fb471cb18a0ebc909e6')
version('20.02', sha256='33529a23694283d12eb37d4682aa86c9cc1240bd50124efcf4464747a7554147')
version('20.01', sha256='f7026d267ca5de79ec7e740264d54230f419776d40feae705e939be0b1d8e0d3')
version('19.10', commit='52844b32b7da11e9733b9a7f4a782e51de7f5e1e') # tag:19.10
diff --git a/var/spack/repos/builtin/packages/anaconda2/package.py b/var/spack/repos/builtin/packages/anaconda2/package.py
new file mode 100644
index 0000000000..e22ab88c8b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/anaconda2/package.py
@@ -0,0 +1,47 @@
+# 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 *
+from os.path import split
+
+
+class Anaconda2(Package):
+ """Anaconda is a free and open-source distribution of the Python and
+ R programming languages for scientific computing, that aims to
+ simplify package management and deployment. Package versions are
+ managed by the package management system conda.
+ """
+
+ homepage = "https://www.anaconda.com"
+ url = "https://repo.anaconda.com/archive/Anaconda2-2019.10-Linux-x86_64.sh"
+
+ maintainers = ['ajkotobi']
+
+ version('2019.10', sha256='8b2e7dea2da7d8cc18e822e8ec1804052102f4eefb94c1b3d0e586e126e8cd2f', expand=False)
+ version('2019.07', sha256='189e16e7adf9ba4b7b7d06ecdc10ce4ad4153e5e3505b9331f3d142243e18e97', expand=False)
+ version('2019.03', sha256='cedfee5b5a3f62fcdac0a1d2d12396d0f232d2213d24d6dc893df5d8e64b8773', expand=False)
+ version('2018.12', sha256='1821d4b623ed449e0acb6df3ecbabd3944cffa98f96a5234b7a102a7c0853dc6', expand=False)
+ version('5.3.1', sha256='f0650ad2f9ca4ae3f3162d7204a32950bc794f37f322eb47b5ad9412454f998c', expand=False)
+ version('5.3.0', sha256='50eeaab24bfa2472bc6485fe8f0e612ed67e561eda1ff9fbf07b62c96443c1be', expand=False)
+ version('5.2.0', sha256='cb0d7a08b0e2cec4372033d3269979b4e72e2353ffd1444f57cb38bc9621219f', expand=False)
+ version('5.1.0', sha256='5f26ee92860d1dffdcd20910ff2cf75572c39d2892d365f4e867a611cca2af5b', expand=False)
+ version('5.0.1', sha256='23c676510bc87c95184ecaeb327c0b2c88007278e0d698622e2dd8fb14d9faa4', expand=False)
+ version('5.0.0.1', sha256='18730808d863a5c194ab3f59dd395c1a63cbd769c9bfb1df65efe61ee62fc6d6', expand=False)
+ version('5.0.0', sha256='58a7117f89c40275114bf7e824a613a963da2b0fe63f2ec3c1175fea785b468e', expand=False)
+ version('4.4.0', sha256='2d30b91ed4d215b6b4a15162a3389e9057b15445a0c02da71bd7bd272e7b824e', expand=False)
+ version('4.3.1', sha256='e9b8f2645df6b1527ba56d61343162e0794acc3ee8dde2a6bba353719e2d878d', expand=False)
+ version('4.3.0', sha256='7c52e6e99aabb24a49880130615a48e685da444c3c14eb48d6a65f3313bf745c', expand=False)
+ version('4.2.0', sha256='beee286d24fb37dd6555281bba39b3deb5804baec509a9dc5c69185098cf661a', expand=False)
+ version('4.1.1', sha256='9413b1d3ca9498ba6f53913df9c43d685dd973440ff10b7fe0c45b1cbdcb582e', expand=False)
+ version('4.1.0', sha256='3b7e504ca0132fb555d1f10e174cae07007f1bc6898cad0f7d416a68aca01f45', expand=False)
+ version('4.0.0', sha256='ae312143952ca00e061a656c2080e0e4fd3532721282ba8e2978177cad71a5f0', expand=False)
+ version('2.5.0', sha256='e10abf459cde4a838bd6fc5ca03023c3401b81ad470627acde5a298d56715321', expand=False)
+ version('2.4.1', sha256='2de682c96edf8cca2852071a84ff860025fbe8c502218e1995acd5ab47e8c9ac', expand=False)
+ version('2.4.0', sha256='49d19834da06b1b82b6fa85bc647d2e78fa5957d0cbae3ccd6c695a541befa6b', expand=False)
+
+ def install(self, spec, prefix):
+ dir, anaconda_script = split(self.stage.archive_file)
+ bash = which('bash')
+ bash(anaconda_script, '-b', '-f', '-p', self.prefix)
diff --git a/var/spack/repos/builtin/packages/anaconda3/package.py b/var/spack/repos/builtin/packages/anaconda3/package.py
new file mode 100644
index 0000000000..2925b0a458
--- /dev/null
+++ b/var/spack/repos/builtin/packages/anaconda3/package.py
@@ -0,0 +1,53 @@
+# 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 *
+from os.path import split
+
+
+class Anaconda3(Package):
+ """
+ Anaconda is a free and open-source distribution of the Python and R
+ programming languages for scientific computing, that aims to simplify
+ package management and deployment. Package versions are managed by
+ the package management system conda.
+ """
+ homepage = "https://www.anaconda.com"
+ url = "https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh"
+
+ maintainers = ['ajkotobi']
+
+ version('2019.10', sha256='46d762284d252e51cd58a8ca6c8adc9da2eadc82c342927b2f66ed011d1d8b53', expand=False)
+ version('2019.07', sha256='69581cf739365ec7fb95608eef694ba959d7d33b36eb961953f2b82cb25bdf5a', expand=False)
+ version('2019.03', sha256='45c851b7497cc14d5ca060064394569f724b67d9b5f98a926ed49b834a6bb73a', expand=False)
+ version('2018.12', sha256='1019d0857e5865f8a6861eaf15bfe535b87e92b72ce4f531000dc672be7fce00', expand=False)
+ version('5.3.1', sha256='d4c4256a8f46173b675dd6a62d12f566ed3487f932bab6bb7058f06c124bcc27', expand=False)
+ version('5.3.0', sha256='cfbf5fe70dd1b797ec677e63c61f8efc92dad930fd1c94d60390bb07fdc09959', expand=False)
+ version('5.2.0', sha256='09f53738b0cd3bb96f5b1bac488e5528df9906be2480fe61df40e0e0d19e3d48', expand=False)
+ version('5.1.0', sha256='7e6785caad25e33930bc03fac4994a434a21bc8401817b7efa28f53619fa9c29', expand=False)
+ version('5.0.1', sha256='55e4db1919f49c92d5abbf27a4be5986ae157f074bf9f8238963cd4582a4068a', expand=False)
+ version('5.0.0.1', sha256='092c92427f44687d789a41922ce8426fbdc3c529cc9d6d4ee6de5b62954b93b2', expand=False)
+ version('5.0.0', sha256='67f5c20232a3e493ea3f19a8e273e0618ab678fa14b03b59b1783613062143e9', expand=False)
+ version('4.4.0', sha256='3301b37e402f3ff3df216fe0458f1e6a4ccbb7e67b4d626eae9651de5ea3ab63', expand=False)
+ version('4.3.1', sha256='4447b93d2c779201e5fb50cfc45de0ec96c3804e7ad0fe201ab6b99f73e90302', expand=False)
+ version('4.3.0', sha256='e9169c3a5029aa820393ac92704eb9ee0701778a085ca7bdc3c57b388ac1beb6', expand=False)
+ version('4.2.0', sha256='73b51715a12b6382dd4df3dd1905b531bd6792d4aa7273b2377a0436d45f0e78', expand=False)
+ version('4.1.1', sha256='4f5c95feb0e7efeadd3d348dcef117d7787c799f24b0429e45017008f3534e55', expand=False)
+ version('4.1.0', sha256='11d32cf4026603d3b327dc4299863be6b815905ff51a80329085e1bb9f96c8bd', expand=False)
+ version('4.0.0', sha256='36a558a1109868661a5735f5f32607643f6dc05cf581fefb1c10fb8abbe22f39', expand=False)
+ version('2.5.0', sha256='addadcb927f15cb0b5b6e36890563d3352a8ff6a901ea753d389047d274a29a9', expand=False)
+ version('2.4.1', sha256='0735e69199fc37135930ea2fd4fb6ad0adef215a2a7ba9fd6b0a0a4daaadb1cf', expand=False)
+ version('2.4.0', sha256='fb4e480059e991f2fa632b5a9bcdd284c7f0677814cd719c11d524453f96a40d', expand=False)
+ version('2.3.0', sha256='3be5410b2d9db45882c7de07c554cf4f1034becc274ec9074b23fd37a5c87a6f', expand=False)
+ version('2.2.0', sha256='4aac68743e7706adb93f042f970373a6e7e087dbf4b02ac467c94ca4ce33d2d1', expand=False)
+ version('2.1.0', sha256='af3225ccbe8df0ffb918939e009aa57740e35058ebf9dfcf5fec794a77556c3c', expand=False)
+ version('2.0.1', sha256='3c3b834793e461f3316ad1d9a9178c67859a9d74aaf7bcade076f04134dd1e26', expand=False)
+ version('2.0.0', sha256='57ce4f97e300cf94c5724f72d992e9eecef708fdaa13bc672ae9779773056540', expand=False)
+
+ def install(self, spec, prefix):
+
+ dir, anaconda_script = split(self.stage.archive_file)
+ bash = which('bash')
+ bash(anaconda_script, '-b', '-f', '-p', self.prefix)
diff --git a/var/spack/repos/builtin/packages/aperture-photometry/package.py b/var/spack/repos/builtin/packages/aperture-photometry/package.py
index 4eec8ad727..3de6e1d8d7 100644
--- a/var/spack/repos/builtin/packages/aperture-photometry/package.py
+++ b/var/spack/repos/builtin/packages/aperture-photometry/package.py
@@ -13,7 +13,7 @@ class AperturePhotometry(Package):
homepage = "http://www.aperturephotometry.org/aptool/"
url = "http://www.aperturephotometry.org/aptool/wp-content/plugins/download-monitor/download.php?id=1"
- version('2.7.2', '2beca6aac14c5e0a94d115f81edf0caa9ec83dc9d32893ea00ee376c9360deb0', extension='tar.gz')
+ version('2.8.2', 'cb29eb39a630dc5d17c02fb824c69571fe1870a910a6acf9115c5f76fd89dd7e', extension='tar.gz')
depends_on('java')
diff --git a/var/spack/repos/builtin/packages/applewmproto/package.py b/var/spack/repos/builtin/packages/applewmproto/package.py
index a9d52c7d59..ea1bbe19e2 100644
--- a/var/spack/repos/builtin/packages/applewmproto/package.py
+++ b/var/spack/repos/builtin/packages/applewmproto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Applewmproto(AutotoolsPackage):
+class Applewmproto(AutotoolsPackage, XorgPackage):
"""Apple Rootless Window Management Extension.
This extension defines a protcol that allows X window managers
@@ -14,7 +14,7 @@ class Applewmproto(AutotoolsPackage):
running X11 in a rootless mode."""
homepage = "http://cgit.freedesktop.org/xorg/proto/applewmproto"
- url = "https://www.x.org/archive/individual/proto/applewmproto-1.4.2.tar.gz"
+ xorg_mirror_path = "proto/applewmproto-1.4.2.tar.gz"
version('1.4.2', sha256='ff8ac07d263a23357af2d6ff0cca3c1d56b043ddf7797a5a92ec624f4704df2e')
diff --git a/var/spack/repos/builtin/packages/appres/package.py b/var/spack/repos/builtin/packages/appres/package.py
index 9369d5a7e5..ddf6ebfe9b 100644
--- a/var/spack/repos/builtin/packages/appres/package.py
+++ b/var/spack/repos/builtin/packages/appres/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Appres(AutotoolsPackage):
+class Appres(AutotoolsPackage, XorgPackage):
"""The appres program prints the resources seen by an application (or
subhierarchy of an application) with the specified class and instance
names. It can be used to determine which resources a particular
program will load."""
homepage = "http://cgit.freedesktop.org/xorg/app/appres"
- url = "https://www.x.org/archive/individual/app/appres-1.0.4.tar.gz"
+ xorg_mirror_path = "app/appres-1.0.4.tar.gz"
version('1.0.4', sha256='22cb6f639c891ffdbb5371bc50a88278185789eae6907d05e9e0bd1086a80803')
diff --git a/var/spack/repos/builtin/packages/apr-util/package.py b/var/spack/repos/builtin/packages/apr-util/package.py
index 2d9354e817..0bb2fecfa6 100644
--- a/var/spack/repos/builtin/packages/apr-util/package.py
+++ b/var/spack/repos/builtin/packages/apr-util/package.py
@@ -24,7 +24,7 @@ class AprUtil(AutotoolsPackage):
depends_on('apr')
depends_on('expat')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('openssl', when='+crypto')
depends_on('gdbm', when='+gdbm')
@@ -38,7 +38,7 @@ class AprUtil(AutotoolsPackage):
args = [
'--with-apr={0}'.format(spec['apr'].prefix),
'--with-expat={0}'.format(spec['expat'].prefix),
- '--with-iconv={0}'.format(spec['libiconv'].prefix),
+ '--with-iconv={0}'.format(spec['iconv'].prefix),
# TODO: Add support for the following database managers
'--without-ndbm',
'--without-berkeley-db',
diff --git a/var/spack/repos/builtin/packages/argobots/package.py b/var/spack/repos/builtin/packages/argobots/package.py
index 11c8febea6..8f967d020b 100644
--- a/var/spack/repos/builtin/packages/argobots/package.py
+++ b/var/spack/repos/builtin/packages/argobots/package.py
@@ -21,6 +21,7 @@ class Argobots(AutotoolsPackage):
maintainers = ['shintaro-iwasaki']
version("master", branch="master")
+ version("1.0", sha256="36a0815f7bf99900a9c9c1eef61ef9b3b76aa2cfc4594a304f6c8c3296da8def")
version("1.0rc2", sha256="7496b8bd39930a548b01aa3b1fe8f8b582c272600ef6a05ddc4398cf21dc12a2")
version("1.0rc1", sha256="2dc4487556dce602655a6535f501136f0edc3575708029c80b1af6dccd069ce7")
version("1.0b1", sha256="480b85b0e8db288400088a57c2dc5639f556843b06b0492841920c38348a2a3e")
diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py
index 468a8947c2..35a263541f 100644
--- a/var/spack/repos/builtin/packages/arpack-ng/package.py
+++ b/var/spack/repos/builtin/packages/arpack-ng/package.py
@@ -108,7 +108,11 @@ class ArpackNg(Package):
if '+mpi' in spec:
options.append('-DMPI=ON')
- # TODO: -DINTERFACE64=ON
+ # If 64-bit BLAS is used:
+ if (spec.satisfies('^openblas+ilp64') or
+ spec.satisfies('^intel-mkl+ilp64') or
+ spec.satisfies('^intel-parallel-studio+mkl+ilp64')):
+ options.append('-DINTERFACE64=1')
if '+shared' in spec:
options.append('-DBUILD_SHARED_LIBS=ON')
diff --git a/var/spack/repos/builtin/packages/attr/package.py b/var/spack/repos/builtin/packages/attr/package.py
index a58dc75f4d..549909d209 100644
--- a/var/spack/repos/builtin/packages/attr/package.py
+++ b/var/spack/repos/builtin/packages/attr/package.py
@@ -12,9 +12,17 @@ class Attr(AutotoolsPackage):
homepage = "https://savannah.nongnu.org/projects/attr"
url = "http://download.savannah.gnu.org/releases/attr/attr-2.4.47.src.tar.gz"
+ version('2.4.48', sha256='5ead72b358ec709ed00bbf7a9eaef1654baad937c001c044fe8b74c57f5324e7')
version('2.4.47', sha256='25772f653ac5b2e3ceeb89df50e4688891e21f723c460636548971652af0a859')
version('2.4.46', sha256='dcd69bdca7ff166bc45141eddbcf21967999a6b66b0544be12a1cc2fd6340e1f')
+ def url_for_version(self, version):
+ if version >= Version('2.4.48'):
+ url = 'http://download.savannah.gnu.org/releases/attr/attr-{0}.tar.gz'
+ else:
+ url = 'http://download.savannah.gnu.org/releases/attr/attr-{0}.src.tar.gz'
+ return url.format(version)
+
def configure_args(self):
args = []
args.append('--disable-static')
@@ -22,5 +30,7 @@ class Attr(AutotoolsPackage):
# Ref. http://www.linuxfromscratch.org/blfs/view/7.5/postlfs/attr.html
def install(self, spec, prefix):
- make()
- make('install', 'install-dev', 'install-lib')
+ if self.version >= Version('2.4.48'):
+ make('install')
+ else:
+ make('install', 'install-dev', 'install-lib')
diff --git a/var/spack/repos/builtin/packages/autoconf-archive/package.py b/var/spack/repos/builtin/packages/autoconf-archive/package.py
new file mode 100644
index 0000000000..91e89d46e9
--- /dev/null
+++ b/var/spack/repos/builtin/packages/autoconf-archive/package.py
@@ -0,0 +1,14 @@
+# Copyright 2013-2020 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)
+
+
+class AutoconfArchive(AutotoolsPackage, GNUMirrorPackage):
+ """The GNU Autoconf Archive is a collection of more than 500 macros for
+ GNU Autoconf."""
+
+ homepage = "https://www.gnu.org/software/autoconf-archive/"
+ gnu_mirror_path = "autoconf-archive/autoconf-archive-2019.01.06.tar.xz"
+
+ version('2019.01.06', sha256='17195c833098da79de5778ee90948f4c5d90ed1a0cf8391b4ab348e2ec511e3f')
diff --git a/var/spack/repos/builtin/packages/automake/package.py b/var/spack/repos/builtin/packages/automake/package.py
index aa5d16de5d..5327c90daf 100644
--- a/var/spack/repos/builtin/packages/automake/package.py
+++ b/var/spack/repos/builtin/packages/automake/package.py
@@ -12,6 +12,7 @@ class Automake(AutotoolsPackage, GNUMirrorPackage):
homepage = 'http://www.gnu.org/software/automake/'
gnu_mirror_path = 'automake/automake-1.15.tar.gz'
+ version('1.16.2', sha256='b2f361094b410b4acbf4efba7337bdb786335ca09eb2518635a09fb7319ca5c1')
version('1.16.1', sha256='608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8')
version('1.15.1', sha256='988e32527abe052307d21c8ca000aa238b914df363a617e38f4fb89f5abf6260')
version('1.15', sha256='7946e945a96e28152ba5a6beb0625ca715c6e32ac55f2e353ef54def0c8ed924')
diff --git a/var/spack/repos/builtin/packages/aws-parallelcluster/package.py b/var/spack/repos/builtin/packages/aws-parallelcluster/package.py
index 9a0bb4a9cc..5737f07855 100644
--- a/var/spack/repos/builtin/packages/aws-parallelcluster/package.py
+++ b/var/spack/repos/builtin/packages/aws-parallelcluster/package.py
@@ -12,7 +12,7 @@ class AwsParallelcluster(PythonPackage):
tool to deploy and manage HPC clusters in the AWS cloud."""
homepage = "https://github.com/aws/aws-parallelcluster"
- url = "https://pypi.io/packages/source/a/aws-parallelcluster/aws-parallelcluster-2.5.1.tar.gz"
+ url = "https://pypi.io/packages/source/a/aws-parallelcluster/aws-parallelcluster-2.6.1.tar.gz"
maintainers = [
'sean-smith', 'demartinofra', 'enrico-usai', 'lukeseawalker', 'rexcsn',
@@ -23,6 +23,8 @@ class AwsParallelcluster(PythonPackage):
'pcluster.config', 'pcluster.networking'
]
+ version('2.6.1', sha256='2ce9015d90b5d4dc88b46a44cb8a82e8fb0bb2b4cca30335fc5759202ec1b343')
+ version('2.6.0', sha256='aaed6962cf5027206834ac24b3d312da91e0f96ae8607f555e12cb124b869f0c')
version('2.5.1', sha256='4fd6e14583f8cf81f9e4aa1d6188e3708d3d14e6ae252de0a94caaf58be76303')
version('2.5.0', sha256='3b0209342ea0d9d8cc95505456103ad87c2d4e35771aa838765918194efd0ad3')
diff --git a/var/spack/repos/builtin/packages/axl/package.py b/var/spack/repos/builtin/packages/axl/package.py
index 1725a2751c..73eb5acdcd 100644
--- a/var/spack/repos/builtin/packages/axl/package.py
+++ b/var/spack/repos/builtin/packages/axl/package.py
@@ -19,13 +19,15 @@ def async_api_validator(pkg_name, variant_name, values):
class Axl(CMakePackage):
"""Asynchronous transfer library"""
- homepage = "https://github.com/ECP-VeloC/AXL"
- url = "https://github.com/ECP-VeloC/AXL/archive/v0.1.1.zip"
+ homepage = "https://github.com/ecp-veloc/AXL"
+ url = "https://github.com/ecp-veloc/AXL/archive/v0.1.1.zip"
git = "https://github.com/ecp-veloc/axl.git"
tags = ['ecp']
version('master', branch='master')
+ version('0.3.0', sha256='3f5efff87be700a5792a0ee9a7aeae45c640e2936623b024e8bc1056f7952a46')
+ version('0.2.0', sha256='a0babe3576da30919f89df2f83c76bd01d06345919f2e54d4dddcd6f73faedcc')
version('0.1.1', sha256='ebbf231bb542a6c91efb79fce05d4c8a346d5506d88ae1899fb670be52e81933')
variant('async_api', default='daemon',
diff --git a/var/spack/repos/builtin/packages/bart/Makefile.patch b/var/spack/repos/builtin/packages/bart/Makefile.patch
new file mode 100644
index 0000000000..5077d767f1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bart/Makefile.patch
@@ -0,0 +1,30 @@
+--- a/Makefile 2020-04-08 17:21:01.982819829 -0500
++++ b/Makefile 2020-04-08 17:21:42.982804931 -0500
+@@ -289,7 +289,7 @@
+ ifeq ($(BUILDTYPE), MacOSX)
+ CUDA_L := -L$(CUDA_BASE)/lib -lcufft -lcudart -lcublas -m64 -lstdc++
+ else
+-CUDA_L := -L$(CUDA_BASE)/lib64 -lcufft -lcudart -lcublas -lstdc++ -Wl,-rpath $(CUDA_BASE)/lib64
++CUDA_L := -L$(CUDA_BASE)/lib64 -lcufft -lcudart -lcublas -lstdc++
+ endif
+ else
+ CUDA_H :=
+@@ -327,14 +327,13 @@
+ CPPFLAGS += -DUSE_ACML
+ else
+ BLAS_H := -I$(BLAS_BASE)/include
+-ifeq ($(BUILDTYPE), MacOSX)
+-BLAS_L := -L$(BLAS_BASE)/lib -lopenblas
++ifeq ($(OPENBLAS),1)
++BLAS_L := -lopenblas
+ else
+ ifeq ($(NOLAPACKE),1)
+-BLAS_L := -L$(BLAS_BASE)/lib -llapack -lblas
+-CPPFLAGS += -Isrc/lapacke
++BLAS_L := -llapack -lcblas
+ else
+-BLAS_L := -L$(BLAS_BASE)/lib -llapacke -lblas
++BLAS_L := -llapacke -lcblas
+ endif
+ endif
+ endif
diff --git a/var/spack/repos/builtin/packages/bart/bart_path.patch b/var/spack/repos/builtin/packages/bart/bart_path.patch
new file mode 100644
index 0000000000..c1b6c98da5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bart/bart_path.patch
@@ -0,0 +1,107 @@
+diff -ru a/matlab/bart.m b/matlab/bart.m
+--- a/matlab/bart.m 2020-04-10 18:50:50.056248692 -0500
++++ b/matlab/bart.m 2020-04-10 18:52:20.541178180 -0500
+@@ -11,7 +11,7 @@
+ return
+ end
+
+- bart_path = getenv('TOOLBOX_PATH');
++ bart_path = [getenv('TOOLBOX_PATH') '/bin'];
+ isWSL = false;
+
+ if isempty(bart_path)
+diff -ru a/python/bart.py b/python/bart.py
+--- a/python/bart.py 2020-04-10 18:50:50.056248692 -0500
++++ b/python/bart.py 2020-04-10 19:18:09.481950358 -0500
+@@ -19,7 +19,7 @@
+ return None
+
+ try:
+- bart_path = os.environ['TOOLBOX_PATH'] + '/bart '
++ bart_path = os.environ['TOOLBOX_PATH'] + '/bin '
+ except:
+ bart_path = None
+ isWSL = False
+diff -ru a/scripts/espirit_econ.sh b/scripts/espirit_econ.sh
+--- a/scripts/espirit_econ.sh 2020-04-10 18:50:50.055248693 -0500
++++ b/scripts/espirit_econ.sh 2020-04-10 19:13:06.463193324 -0500
+@@ -56,8 +56,6 @@
+ fi
+
+
+-export PATH=$TOOLBOX_PATH:$PATH
+-
+ input=$(readlink -f "$1")
+ output=$(readlink -f "$2")
+
+@@ -67,7 +65,7 @@
+ exit 1
+ fi
+
+-if [ ! -e $TOOLBOX_PATH/bart ] ; then
++if [ ! -e $TOOLBOX_PATH/bin/bart ] ; then
+ echo "\$TOOLBOX_PATH is not set correctly!" >&2
+ exit 1
+ fi
+diff -ru a/scripts/grasp.sh b/scripts/grasp.sh
+--- a/scripts/grasp.sh 2020-04-10 18:50:50.055248693 -0500
++++ b/scripts/grasp.sh 2020-04-10 19:13:31.461173327 -0500
+@@ -90,8 +90,6 @@
+ fi
+
+
+-export PATH=$TOOLBOX_PATH:$PATH
+-
+ input=$(readlink -f "$1")
+ output=$(readlink -f "$2")
+
+@@ -101,7 +99,7 @@
+ exit 1
+ fi
+
+-if [ ! -e $TOOLBOX_PATH/bart ] ; then
++if [ ! -e $TOOLBOX_PATH/bin/bart ] ; then
+ echo "\$TOOLBOX_PATH is not set correctly!" >&2
+ exit 1
+ fi
+diff -ru a/scripts/octview.m b/scripts/octview.m
+--- a/scripts/octview.m 2020-04-10 18:50:50.055248693 -0500
++++ b/scripts/octview.m 2020-04-10 19:14:33.386123750 -0500
+@@ -1,6 +1,6 @@
+ #! /usr/bin/octave -qf
+
+-addpath(strcat(getenv("TOOLBOX_PATH"), "/matlab"));
++addpath(strcat(getenv("TOOLBOX_PATH"), "/bin", "/matlab"));
+ arg_list = argv();
+
+
+diff -ru a/scripts/profile.sh b/scripts/profile.sh
+--- a/scripts/profile.sh 2020-04-10 18:50:50.055248693 -0500
++++ b/scripts/profile.sh 2020-04-10 19:15:00.723101850 -0500
+@@ -45,7 +45,7 @@
+ exit 1
+ fi
+
+-if [ ! -e $TOOLBOX_PATH/bart ] ; then
++if [ ! -e $TOOLBOX_PATH/bin/bart ] ; then
+ echo "\$TOOLBOX_PATH is not set correctly!" >&2
+ exit 1
+ fi
+@@ -57,7 +57,7 @@
+ cd $WORKDIR
+
+
+-nm --defined-only $TOOLBOX_PATH/bart | cut -c11-16,19- | sort > bart.syms
++nm --defined-only $TOOLBOX_PATH/bin/bart | cut -c11-16,19- | sort > bart.syms
+
+
+ cat $in | grep "^TRACE" \
+diff -ru a/startup.m b/startup.m
+--- a/startup.m 2020-04-10 18:50:50.048248699 -0500
++++ b/startup.m 2020-04-10 18:51:40.390209486 -0500
+@@ -1,4 +1,3 @@
+ % set Matlab path and TOOLBOX_PATH environment variable
+-addpath(fullfile(pwd, 'matlab'));
+-setenv('TOOLBOX_PATH', pwd);
++addpath(fullfile(getenv('TOOLBOX_PATH'), 'matlab'));
+
diff --git a/var/spack/repos/builtin/packages/bart/package.py b/var/spack/repos/builtin/packages/bart/package.py
new file mode 100644
index 0000000000..954a4e6930
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bart/package.py
@@ -0,0 +1,84 @@
+# Copyright 2013-2020 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 Bart(MakefilePackage, CudaPackage):
+ """BART: Toolbox for Computational Magnetic Resonance Imaging"""
+
+ homepage = "https://mrirecon.github.io/bart/"
+ url = "https://github.com/mrirecon/bart/archive/v0.5.00.tar.gz"
+
+ version('0.5.00', sha256='30eedcda0f0ef3808157542e0d67df5be49ee41e4f41487af5c850632788f643')
+
+ # patch to fix build with MKL
+ patch('https://github.com/mrirecon/bart/commit/b62ca4972d5ac41a44217a5c27123c15daae74db.patch',
+ sha256='8fd1be181da928448da750b32d45ee6dce7ba6af0424617c4f8d653cf3f05445',
+ when='@0.5.00')
+
+ # patch to fix Makefile for openblas and cuda
+ patch('Makefile.patch')
+
+ # patch to set path to bart
+ patch('bart_path.patch')
+
+ depends_on('libpng')
+ depends_on('fftw')
+ depends_on('blas')
+ depends_on('lapack')
+ depends_on('py-numpy', type='run')
+ depends_on('py-matplotlib', type='run')
+ extends('python')
+
+ conflicts('^atlas', msg='BART does not currently support atlas')
+
+ def edit(self, spec, prefix):
+ env['PREFIX'] = prefix
+ env['FFTW_BASE'] = spec['fftw'].prefix
+
+ if spec['blas'].name == 'openblas':
+ env['OPENBLAS'] = '1'
+
+ if spec['blas'].name in ['intel-mkl', 'intel-parallel-studio']:
+ env['MKL'] = '1'
+ env['MKL_BASE'] = env['MKLROOT']
+ else:
+ env['BLAS_BASE'] = spec['blas'].prefix
+
+ if '^netlib-lapack+lapacke' not in spec:
+ env['NOLAPACKE'] = '1'
+
+ if '+cuda' in spec:
+ cuda_arch = self.spec.variants['cuda_arch'].value
+ env['CUDA'] = '1'
+ env['CUDA_BASE'] = spec['cuda'].prefix
+ env['GPUARCH_FLAGS'] = ' '.join(self.cuda_flags(cuda_arch))
+
+ def install(self, spec, prefix):
+ python_dir = join_path(prefix,
+ spec['python'].package.site_packages_dir)
+
+ make('install')
+
+ install_tree('scripts', prefix.scripts)
+ install_tree('matlab', prefix.matlab)
+ install('startup.m', prefix)
+
+ install('python/bart.py', python_dir)
+ install('python/cfl.py', python_dir)
+ install('python/wslsupport.py', python_dir)
+
+ if '^python@3:' in spec:
+ install('python/bartview3.py', join_path(prefix.bin, 'bartview'))
+ filter_file(r'#!/usr/bin/python3', '#!/usr/bin/env python',
+ prefix.bin.bartview)
+ else:
+ install('python/bartview.py', join_path(prefix.bin, 'bartview'))
+ filter_file(r'#!/usr/bin/python', '#!/usr/bin/env python',
+ prefix.bin.bartview)
+
+ def setup_run_environment(self, env):
+ env.set('TOOLBOX_PATH', self.prefix)
diff --git a/var/spack/repos/builtin/packages/bash/package.py b/var/spack/repos/builtin/packages/bash/package.py
index 2723b66790..f690129424 100644
--- a/var/spack/repos/builtin/packages/bash/package.py
+++ b/var/spack/repos/builtin/packages/bash/package.py
@@ -19,7 +19,7 @@ class Bash(AutotoolsPackage, GNUMirrorPackage):
depends_on('ncurses')
depends_on('readline@5.0:')
- depends_on('libiconv')
+ depends_on('iconv')
patches = [
('5.0', '001', 'f2fe9e1f0faddf14ab9bfa88d450a75e5d028fedafad23b88716bd657c737289'),
@@ -33,6 +33,11 @@ class Bash(AutotoolsPackage, GNUMirrorPackage):
('5.0', '009', 'ed3ca21767303fc3de93934aa524c2e920787c506b601cc40a4897d4b094d903'),
('5.0', '010', 'd6fbc325f0b5dc54ddbe8ee43020bced8bd589ddffea59d128db14b2e52a8a11'),
('5.0', '011', '2c4de332b91eaf797abbbd6c79709690b5cbd48b12e8dfe748096dbd7bf474ea'),
+ ('5.0', '012', '2943ee19688018296f2a04dbfe30b7138b889700efa8ff1c0524af271e0ee233'),
+ ('5.0', '013', 'f5d7178d8da30799e01b83a0802018d913d6aa972dd2ddad3b927f3f3eb7099a'),
+ ('5.0', '014', '5d6eee6514ee6e22a87bba8d22be0a8621a0ae119246f1c5a9a35db1f72af589'),
+ ('5.0', '015', 'a517df2dda93b26d5cbf00effefea93e3a4ccd6652f152f4109170544ebfa05e'),
+ ('5.0', '016', 'ffd1d7a54a99fa7f5b1825e4f7e95d8c8876bc2ca151f150e751d429c650b06d'),
]
# TODO: patches below are not managed by the GNUMirrorPackage base class
@@ -49,7 +54,7 @@ class Bash(AutotoolsPackage, GNUMirrorPackage):
'--with-curses',
'--enable-readline',
'--with-installed-readline',
- '--with-libiconv-prefix={0}'.format(spec['libiconv'].prefix),
+ '--with-libiconv-prefix={0}'.format(spec['iconv'].prefix),
]
def check(self):
diff --git a/var/spack/repos/builtin/packages/bat/package.py b/var/spack/repos/builtin/packages/bat/package.py
new file mode 100644
index 0000000000..50c3b5349a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bat/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 Bat(Package):
+ """A cat(1) clone with wings."""
+
+ homepage = "https://github.com/sharkdp/bat"
+ url = "https://github.com/sharkdp/bat/archive/v0.10.0.tar.gz"
+
+ version('0.12.1', sha256='1dd184ddc9e5228ba94d19afc0b8b440bfc1819fef8133fe331e2c0ec9e3f8e2')
+
+ depends_on('rust')
+
+ def install(self, spec, prefix):
+ cargo = which('cargo')
+ cargo('install', '--root', prefix, '--path', '.')
+
+ # cargo seems to need these to be set so that when it's building
+ # onig_sys it can run llvm-config and link against libclang.
+ def setup_build_environment(self, env):
+ env.append_flags('LLVM_CONFIG_PATH',
+ join_path(self.spec['llvm'].prefix.libexec.llvm,
+ 'llvm-config'))
+ env.append_flags('LIBCLANG_PATH', self.spec['llvm'].prefix.lib)
diff --git a/var/spack/repos/builtin/packages/batctl/package.py b/var/spack/repos/builtin/packages/batctl/package.py
new file mode 100644
index 0000000000..45bd5ecd73
--- /dev/null
+++ b/var/spack/repos/builtin/packages/batctl/package.py
@@ -0,0 +1,24 @@
+# Copyright 2013-2020 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 Batctl(MakefilePackage):
+ """B.A.T.M.A.N. advanced control and management tool"""
+
+ homepage = "https://github.com/open-mesh-mirror/batctl"
+ url = "https://github.com/open-mesh-mirror/batctl/archive/v2019.5.tar.gz"
+
+ version('2019.5', sha256='ffe5857a33068ec174140c154610d76d833524d840a2fc2d1a15e16686213cad')
+ version('2019.4', sha256='a3564eb9727335352dc0cfa2f2b29474c2c837384689ac5fcb387784a56e7685')
+ version('2019.3', sha256='2bd93fa14925a8dc63a67e64266c8ccd2fa3ac44b10253d93e6f8a630350070c')
+ version('2019.2', sha256='fb656208ff7d4cd8b1b422f60c9e6d8747302a347cbf6c199d7afa9b80f80ea3')
+
+ depends_on('libnl')
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install('batctl', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py
index 655c915178..1ea1a6ce9c 100644
--- a/var/spack/repos/builtin/packages/bazel/package.py
+++ b/var/spack/repos/builtin/packages/bazel/package.py
@@ -92,6 +92,7 @@ class Bazel(Package):
# https://docs.bazel.build/versions/master/install-compile-source.html#bootstrap-unix-prereq
depends_on('jdk@1.8.0:1.8.999', type=('build', 'run'))
depends_on('python', type=('build', 'run'))
+ depends_on('zip', type=('build', 'run'))
# Pass Spack environment variables to the build
patch('bazelruleclassprovider-0.25.patch', when='@0.25:')
@@ -128,7 +129,17 @@ class Bazel(Package):
def setup_build_environment(self, env):
env.set('EXTRA_BAZEL_ARGS',
# Spack's logs don't handle colored output well
- '--color=no --host_javabase=@local_jdk//:jdk')
+ '--color=no --host_javabase=@local_jdk//:jdk'
+ # Enable verbose output for failures
+ ' --verbose_failures'
+ # Ask bazel to explain what it's up to
+ # Needs a filename as argument
+ ' --explain=explainlogfile.txt'
+ # Increase verbosity of explanation,
+ ' --verbose_explanations'
+ # Show (formatted) subcommands being executed
+ ' --subcommands=pretty_print'
+ ' --jobs={0}'.format(make_jobs))
def bootstrap(self, spec, prefix):
bash = which('bash')
diff --git a/var/spack/repos/builtin/packages/bcache/func_crc64.patch b/var/spack/repos/builtin/packages/bcache/func_crc64.patch
new file mode 100644
index 0000000000..7acc312139
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bcache/func_crc64.patch
@@ -0,0 +1,13 @@
+diff --git a/bcache.c b/bcache.c
+index 8f37445..8b4b986 100644
+--- a/bcache.c
++++ b/bcache.c
+@@ -115,7 +115,7 @@ static const uint64_t crc_table[256] = {
+ 0x9AFCE626CE85B507ULL
+ };
+
+-inline uint64_t crc64(const void *_data, size_t len)
++uint64_t crc64(const void *_data, size_t len)
+ {
+ uint64_t crc = 0xFFFFFFFFFFFFFFFFULL;
+ const unsigned char *data = _data;
diff --git a/var/spack/repos/builtin/packages/bcache/package.py b/var/spack/repos/builtin/packages/bcache/package.py
new file mode 100644
index 0000000000..63c42de333
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bcache/package.py
@@ -0,0 +1,36 @@
+# Copyright 2013-2020 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 Bcache(MakefilePackage):
+ """Bcache is a patch for the Linux kernel to use SSDs to cache other block
+ devices."""
+
+ homepage = "http://bcache.evilpiepirate.org"
+ url = "https://github.com/g2p/bcache-tools/archive/v1.0.8.tar.gz"
+
+ version('1.0.8', sha256='d56923936f37287efc57a46315679102ef2c86cd0be5874590320acd48c1201c')
+ version('1.0.7', sha256='64d76d1085afba8c3d5037beb67bf9d69ee163f357016e267bf328c0b1807abd')
+ version('1.0.6', sha256='9677c6da3ceac4e1799d560617c4d00ea7e9d26031928f8f94b8ab327496d4e0')
+ version('1.0.5', sha256='1449294ef545b3dc6f715f7b063bc2c8656984ad73bcd81a0dc048cbba416ea9')
+ version('1.0.4', sha256='102ffc3a8389180f4b491188c3520f8a4b1a84e5a7ca26d2bd6de1821f4d913d')
+
+ depends_on('libuuid')
+ depends_on('util-linux')
+ depends_on('gettext')
+
+ def setup_build_environment(self, env):
+ env.append_flags('LDFLAGS', '-lintl')
+
+ patch('func_crc64.patch', sha256='558b35cadab4f410ce8f87f0766424a429ca0611aa2fd247326ad10da115737d')
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install('bcache-register', prefix.bin)
+ install('bcache-super-show', prefix.bin)
+ install('make-bcache', prefix.bin)
+ install('probe-bcache', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/bdftopcf/package.py b/var/spack/repos/builtin/packages/bdftopcf/package.py
index 78ff26c2d9..8c410358c7 100644
--- a/var/spack/repos/builtin/packages/bdftopcf/package.py
+++ b/var/spack/repos/builtin/packages/bdftopcf/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Bdftopcf(AutotoolsPackage):
+class Bdftopcf(AutotoolsPackage, XorgPackage):
"""bdftopcf is a font compiler for the X server and font server. Fonts
in Portable Compiled Format can be read by any architecture, although
the file is structured to allow one particular architecture to read
@@ -15,7 +15,7 @@ class Bdftopcf(AutotoolsPackage):
slowly) on other machines."""
homepage = "http://cgit.freedesktop.org/xorg/app/bdftopcf"
- url = "https://www.x.org/archive/individual/app/bdftopcf-1.0.5.tar.gz"
+ xorg_mirror_path = "app/bdftopcf-1.0.5.tar.gz"
version('1.0.5', sha256='78a5ec945de1d33e6812167b1383554fda36e38576849e74a9039dc7364ff2c3')
diff --git a/var/spack/repos/builtin/packages/beforelight/package.py b/var/spack/repos/builtin/packages/beforelight/package.py
index b4646eafc0..3fff45aa59 100644
--- a/var/spack/repos/builtin/packages/beforelight/package.py
+++ b/var/spack/repos/builtin/packages/beforelight/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Beforelight(AutotoolsPackage):
+class Beforelight(AutotoolsPackage, XorgPackage):
"""The beforelight program is a sample implementation of a screen saver
for X servers supporting the MIT-SCREEN-SAVER extension. It is only
recommended for use as a code sample, as it does not include features
such as screen locking or configurability."""
homepage = "http://cgit.freedesktop.org/xorg/app/beforelight"
- url = "https://www.x.org/archive/individual/app/beforelight-1.0.5.tar.gz"
+ xorg_mirror_path = "app/beforelight-1.0.5.tar.gz"
version('1.0.5', sha256='93bb3c457d6d5e8def3180fdee07bc84d1b7f0e5378a95812e2193cd51455cdc')
diff --git a/var/spack/repos/builtin/packages/bigreqsproto/package.py b/var/spack/repos/builtin/packages/bigreqsproto/package.py
index 1e4a1fc1bd..caa8fcd51e 100644
--- a/var/spack/repos/builtin/packages/bigreqsproto/package.py
+++ b/var/spack/repos/builtin/packages/bigreqsproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Bigreqsproto(AutotoolsPackage):
+class Bigreqsproto(AutotoolsPackage, XorgPackage):
"""Big Requests Extension.
This extension defines a protocol to enable the use of requests
that exceed 262140 bytes in length."""
homepage = "http://cgit.freedesktop.org/xorg/proto/bigreqsproto"
- url = "https://www.x.org/archive/individual/proto/bigreqsproto-1.1.2.tar.gz"
+ xorg_mirror_path = "proto/bigreqsproto-1.1.2.tar.gz"
version('1.1.2', sha256='de68a1a9dd1a1219ad73531bff9f662bc62fcd777387549c43cd282399f4a6ea')
diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py
index d84dd32bc5..60cd9563fa 100644
--- a/var/spack/repos/builtin/packages/binutils/package.py
+++ b/var/spack/repos/builtin/packages/binutils/package.py
@@ -14,6 +14,7 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage):
homepage = "http://www.gnu.org/software/binutils/"
gnu_mirror_path = "binutils/binutils-2.28.tar.bz2"
+ version('2.34', sha256='89f010078b6cf69c23c27897d686055ab89b198dddf819efb0a4f2c38a0b36e6')
version('2.33.1', sha256='0cb4843da15a65a953907c96bad658283f3c4419d6bcc56bf2789db16306adb2')
version('2.32', sha256='de38b15c902eb2725eac6af21183a5f34ea4634cb0bcef19612b50e5ed31072d')
version('2.31.1', sha256='ffcc382695bf947da6135e7436b8ed52d991cf270db897190f19d6f9838564d0')
@@ -34,6 +35,9 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage):
variant('libiberty', default=False, description='Also install libiberty.')
variant('nls', default=True, description='Enable Native Language Support')
variant('headers', default=False, description='Install extra headers (e.g. ELF)')
+ variant('lto', default=False, description='Enable lto.')
+ variant('ld', default=False, description='Enable ld.')
+ variant('interwork', default=False, description='Enable interwork.')
patch('cr16.patch', when='@:2.29.1')
patch('update_symbol-2.26.patch', when='@2.26')
@@ -46,6 +50,10 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage):
depends_on('m4', type='build', when='@:2.29.99 +gold')
depends_on('bison', type='build', when='@:2.29.99 +gold')
+ # 2.34 needs makeinfo due to a bug, see:
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=25491
+ depends_on('texinfo', type='build', when='@2.34')
+
conflicts('+gold', when='platform=darwin',
msg="Binutils cannot build linkers on macOS")
@@ -63,6 +71,15 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage):
'--with-sysroot=/',
]
+ if '+lto' in spec:
+ configure_args.append('--enable-lto')
+
+ if '+ld' in spec:
+ configure_args.append('--enable-ld')
+
+ if '+interwork' in spec:
+ configure_args.append('--enable-interwork')
+
if '+gold' in spec:
configure_args.append('--enable-gold')
diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py
index a0b0406240..0a51dd583e 100644
--- a/var/spack/repos/builtin/packages/bison/package.py
+++ b/var/spack/repos/builtin/packages/bison/package.py
@@ -18,6 +18,7 @@ class Bison(AutotoolsPackage, GNUMirrorPackage):
version('3.4.2', sha256='ff3922af377d514eca302a6662d470e857bd1a591e96a2050500df5a9d59facf')
version('3.4.1', sha256='7007fc89c216fbfaff5525359b02a7e5b612694df5168c74673f67055f015095')
+ version('3.3.2', sha256='0fda1d034185397430eb7b0c9e140fb37e02fbfc53b90252fa5575e382b6dbd1')
version('3.0.5', sha256='cd399d2bee33afa712bac4b1f4434e20379e9b4099bce47189e09a7675a2d566')
version('3.0.4', sha256='b67fd2daae7a64b5ba862c66c07c1addb9e6b1b05c5f2049392cfd8a2172952e')
version('2.7', sha256='19bbe7374fd602f7a6654c131c21a15aebdc06cc89493e8ff250cb7f9ed0a831')
diff --git a/var/spack/repos/builtin/packages/bitmap/package.py b/var/spack/repos/builtin/packages/bitmap/package.py
index c8937e1520..06e793bcd3 100644
--- a/var/spack/repos/builtin/packages/bitmap/package.py
+++ b/var/spack/repos/builtin/packages/bitmap/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Bitmap(AutotoolsPackage):
+class Bitmap(AutotoolsPackage, XorgPackage):
"""bitmap, bmtoa, atobm - X bitmap (XBM) editor and converter utilities."""
homepage = "http://cgit.freedesktop.org/xorg/app/bitmap"
- url = "https://www.x.org/archive/individual/app/bitmap-1.0.8.tar.gz"
+ xorg_mirror_path = "app/bitmap-1.0.8.tar.gz"
version('1.0.8', sha256='1a2fbd10a2ca5cd93f7b77bbb0555b86d8b35e0fc18d036b1607c761755006fc')
diff --git a/var/spack/repos/builtin/packages/blis/package.py b/var/spack/repos/builtin/packages/blis/package.py
index ea7ca8ff42..c2fc1545a3 100644
--- a/var/spack/repos/builtin/packages/blis/package.py
+++ b/var/spack/repos/builtin/packages/blis/package.py
@@ -102,6 +102,10 @@ class BlisBase(Package):
if self.spec.satisfies('platform=darwin'):
fix_darwin_install_name(self.prefix.lib)
+ @property
+ def libs(self):
+ return find_libraries(['libblis'], root=self.prefix, recursive=True)
+
class Blis(BlisBase):
"""BLIS is a portable software framework for instantiating high-performance
diff --git a/var/spack/repos/builtin/packages/bmi/package.py b/var/spack/repos/builtin/packages/bmi/package.py
index dfdacf5a49..c2862ed3ee 100644
--- a/var/spack/repos/builtin/packages/bmi/package.py
+++ b/var/spack/repos/builtin/packages/bmi/package.py
@@ -12,6 +12,8 @@ class Bmi(AutotoolsPackage):
homepage = 'https://xgitlab.cels.anl.gov/sds/bmi'
git = 'https://xgitlab.cels.anl.gov/sds/bmi.git'
+ maintainers = ['carns']
+
version('develop', branch='master')
depends_on('autoconf', type='build')
diff --git a/var/spack/repos/builtin/packages/boinc-client/package.py b/var/spack/repos/builtin/packages/boinc-client/package.py
new file mode 100644
index 0000000000..80e6416e4b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/boinc-client/package.py
@@ -0,0 +1,63 @@
+# 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 BoincClient(AutotoolsPackage):
+ """BOINC is a platform for high-throughput computing on a
+ large scale (thousands or millions of computers). It can be
+ used for volunteer computing (using consumer devices) or
+ grid computing (using organizational resources). It
+ supports virtualized, parallel, and GPU-based
+ applications."""
+
+ homepage = "https://boinc.berkeley.edu/"
+ url = "https://github.com/BOINC/boinc/archive/client_release/7.16/7.16.5.tar.gz"
+
+ version('7.16.5', sha256='33db60991b253e717c6124cce4750ae7729eaab4e54ec718b9e37f87012d668a')
+
+ variant('manager', default=False, description='Builds the client manager')
+ variant('graphics', default=False, description='Graphic apps support')
+
+ # Dependency documentation:
+ # https://boinc.berkeley.edu/trac/wiki/SoftwarePrereqsUnix
+ conflicts('%gcc@:3.0.4')
+
+ depends_on('autoconf@2.58:', type='build')
+ depends_on('automake@1.8:', type='build')
+ depends_on('libtool@1.5:', type='build')
+ depends_on('m4@1.4:', type='build')
+
+ depends_on('curl@7.17.1:')
+ depends_on('openssl@0.9.8:')
+
+ depends_on('freeglut@3:', when='+graphics')
+ depends_on('libsm', when='+graphics')
+ depends_on('libice', when='+graphics')
+ depends_on('libxmu', when='+graphics')
+ depends_on('libxi', when='+graphics')
+ depends_on('libx11', when='+graphics')
+ depends_on('libjpeg', when='+graphics')
+
+ depends_on('wxwidgets@3.0.0:', when='+manager')
+ depends_on('libnotify', when='+manager')
+ depends_on('sqlite@3.1:', when='+manager')
+
+ patch('systemd-fix.patch')
+
+ def configure_args(self):
+ spec = self.spec
+ args = []
+
+ args.append("--disable-server")
+ args.append("--enable-client")
+
+ if '+manager' in spec:
+ args.append('--enable-manager')
+ else:
+ args.append('--disable-manager')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/boinc-client/systemd-fix.patch b/var/spack/repos/builtin/packages/boinc-client/systemd-fix.patch
new file mode 100644
index 0000000000..499aa56826
--- /dev/null
+++ b/var/spack/repos/builtin/packages/boinc-client/systemd-fix.patch
@@ -0,0 +1,13 @@
+--- a/client/scripts/Makefile.am 2020-02-23 22:22:11.000000000 -0500
++++ b/client/scripts/Makefile.am 2020-03-27 18:40:28.881826512 -0400
+@@ -7,8 +7,8 @@
+ $(INSTALL) -b boinc-client $(DESTDIR)$(sysconfdir)/init.d/boinc-client ; \
+ fi
+ if [ -d /usr/lib/systemd/system ] ; then \
+- $(INSTALL) -d $(DESTDIR)/usr/lib/systemd/system/ ; \
+- $(INSTALL_DATA) boinc-client.service $(DESTDIR)/usr/lib/systemd/system/boinc-client.service ; \
++ $(INSTALL) -d $(DESTDIR)$(prefix)/lib/systemd/system/ ; \
++ $(INSTALL_DATA) boinc-client.service $(DESTDIR)$(prefix)/lib/systemd/system/boinc-client.service ; \
+ elif [ -d /lib/systemd/system ] ; then \
+ $(INSTALL) -d $(DESTDIR)/lib/systemd/system/ ; \
+ $(INSTALL_DATA) boinc-client.service $(DESTDIR)/lib/systemd/system/boinc-client.service ; \
diff --git a/var/spack/repos/builtin/packages/boost/darwin_clang_version.patch b/var/spack/repos/builtin/packages/boost/darwin_clang_version.patch
new file mode 100644
index 0000000000..4ae5ad1e8d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/boost/darwin_clang_version.patch
@@ -0,0 +1,31 @@
+From 40960b23338da0a359d6aa83585ace09ad8804d2 Mon Sep 17 00:00:00 2001
+From: Bo Anderson <mail@boanderson.me>
+Date: Sun, 29 Mar 2020 14:55:08 +0100
+Subject: [PATCH] Fix compiler version check on macOS
+
+Fixes #440.
+---
+ src/tools/darwin.jam | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/tools/darwin.jam b/src/tools/darwin.jam
+index 8d477410b0..97e7ecb851 100644
+--- tools/build/src/tools/darwin.jam
++++ tools/build/src/tools/darwin.jam
+@@ -137,13 +137,14 @@ rule init ( version ? : command * : options * : requirement * )
+ # - Set the toolset generic common options.
+ common.handle-options darwin : $(condition) : $(command) : $(options) ;
+
++ real-version = [ regex.split $(real-version) \\. ] ;
+ # - GCC 4.0 and higher in Darwin does not have -fcoalesce-templates.
+- if $(real-version) < "4.0.0"
++ if [ version.version-less $(real-version) : 4 0 ]
+ {
+ flags darwin.compile.c++ OPTIONS $(condition) : -fcoalesce-templates ;
+ }
+ # - GCC 4.2 and higher in Darwin does not have -Wno-long-double.
+- if $(real-version) < "4.2.0"
++ if [ version.version-less $(real-version) : 4 2 ]
+ {
+ flags darwin.compile OPTIONS $(condition) : -Wno-long-double ;
+ }
diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py
index 452ae99b8a..0f4c8394cf 100644
--- a/var/spack/repos/builtin/packages/boost/package.py
+++ b/var/spack/repos/builtin/packages/boost/package.py
@@ -96,8 +96,12 @@ class Boost(Package):
# mpi/python are not installed by default because they pull in many
# dependencies and/or because there is a great deal of customization
# possible (and it would be difficult to choose sensible defaults)
+ #
+ # Boost.Container can be both header-only and compiled. '+container'
+ # indicates the compiled version which requires Extended Allocator
+ # support. The header-only library is installed when no variant is given.
default_noinstall_libs\
- = set(['context', 'coroutine', 'fiber', 'mpi', 'python'])
+ = set(['container', 'context', 'coroutine', 'fiber', 'mpi', 'python'])
all_libs = default_install_libs | default_noinstall_libs
@@ -174,6 +178,12 @@ class Boost(Package):
conflicts('+taggedlayout', when='+versionedlayout')
conflicts('+numpy', when='~python')
+ # boost-python in 1.72.0 broken with cxxstd=98
+ conflicts('cxxstd=98', when='+mpi+python @1.72.0:')
+
+ # Container's Extended Allocators were not added until 1.56.0
+ conflicts('+container', when='@:1.55.99')
+
# Patch fix from https://svn.boost.org/trac/boost/ticket/11856
patch('boost_11856.patch', when='@1.60.0%gcc@4.4.7')
@@ -193,6 +203,12 @@ class Boost(Package):
patch('boost_1.63.0_pgi.patch', when='@1.63.0%pgi')
patch('boost_1.63.0_pgi_17.4_workaround.patch', when='@1.63.0%pgi@17.4')
+ # Fix for version comparison on newer Clang on darwin
+ # See: https://github.com/boostorg/build/issues/440
+ # See: https://github.com/macports/macports-ports/pull/6726
+ patch('darwin_clang_version.patch', level=0,
+ when='@1.56.0:1.72.0 platform=darwin')
+
# Fix the bootstrap/bjam build for Cray
patch('bootstrap-path.patch', when='@1.39.0: platform=cray')
diff --git a/var/spack/repos/builtin/packages/bowtie2/package.py b/var/spack/repos/builtin/packages/bowtie2/package.py
index 9989f37c02..8100b9dfed 100644
--- a/var/spack/repos/builtin/packages/bowtie2/package.py
+++ b/var/spack/repos/builtin/packages/bowtie2/package.py
@@ -11,7 +11,7 @@ class Bowtie2(Package):
"""Bowtie 2 is an ultrafast and memory-efficient tool for aligning
sequencing reads to long reference sequences"""
- homepage = "bowtie-bio.sourceforge.net/bowtie2/index.shtml"
+ homepage = "http://bowtie-bio.sourceforge.net/bowtie2/index.shtml"
url = "http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.3.1/bowtie2-2.3.1-source.zip"
version('2.3.5.1', sha256='335c8dafb1487a4a9228ef922fbce4fffba3ce8bc211e2d7085aac092155a53f')
diff --git a/var/spack/repos/builtin/packages/bubblewrap/package.py b/var/spack/repos/builtin/packages/bubblewrap/package.py
new file mode 100644
index 0000000000..dc00c56148
--- /dev/null
+++ b/var/spack/repos/builtin/packages/bubblewrap/package.py
@@ -0,0 +1,28 @@
+# Copyright 2013-2020 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 Bubblewrap(AutotoolsPackage):
+ """Unprivileged sandboxing tool"""
+
+ homepage = "https://github.com/containers/bubblewrap"
+ url = "https://github.com/containers/bubblewrap/archive/v0.4.0.tar.gz"
+
+ version('0.4.0', sha256='dedea228f53dd5f589d8225b4584a9b354849a221caf7304874ca2e4d4bcdafb')
+ version('0.3.3', sha256='439e4cd84d9d19c9e5b0c6aa0f0c3a55bbb893ae5ec112a5b575eadd2165f039')
+ version('0.3.2', sha256='c66c1b6da3257e06b38a339611e76b21dc52a47975d55429071c22455259d010')
+ version('0.3.1', sha256='3757cb021d1a3ccc36828a58363817e1923c458ed03260d0c2b3a99da61bfb81')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+ depends_on('libcap')
+
+ def autoreconf(self, spec, prefix):
+ bash = which('bash')
+ bash('autogen.sh')
diff --git a/var/spack/repos/builtin/packages/bzip2/package.py b/var/spack/repos/builtin/packages/bzip2/package.py
index 57d7046f93..e46b9e4dfc 100644
--- a/var/spack/repos/builtin/packages/bzip2/package.py
+++ b/var/spack/repos/builtin/packages/bzip2/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Bzip2(Package):
+class Bzip2(Package, SourcewarePackage):
"""bzip2 is a freely available, patent free high-quality data
compressor. It typically compresses files to within 10% to 15%
of the best available techniques (the PPM family of statistical
@@ -14,7 +14,7 @@ class Bzip2(Package):
and six times faster at decompression."""
homepage = "https://sourceware.org/bzip2/"
- url = "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz"
+ sourceware_mirror_path = "bzip2/bzip2-1.0.8.tar.gz"
version('1.0.8', sha256='ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269')
version('1.0.7', sha256='e768a87c5b1a79511499beb41500bcc4caf203726fff46a6f5f9ad27fe08ab2b')
diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py
index 8e11cb0956..7128059056 100644
--- a/var/spack/repos/builtin/packages/c-blosc/package.py
+++ b/var/spack/repos/builtin/packages/c-blosc/package.py
@@ -50,6 +50,13 @@ class CBlosc(CMakePackage):
args.append('-DPREFER_EXTERNAL_ZSTD=ON')
args.append('-DPREFER_EXTERNAL_LZ4=ON')
+ if self.run_tests:
+ args.append('-DBUILD_TESTS=ON')
+ args.append('-DBUILD_BENCHMARKS=ON')
+ else:
+ args.append('-DBUILD_TESTS=OFF')
+ args.append('-DBUILD_BENCHMARKS=OFF')
+
return args
@run_after('install')
diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py
index 6169a7ee78..fb12a78704 100644
--- a/var/spack/repos/builtin/packages/caliper/package.py
+++ b/var/spack/repos/builtin/packages/caliper/package.py
@@ -19,6 +19,7 @@ class Caliper(CMakePackage):
git = "https://github.com/LLNL/Caliper.git"
version('master')
+ version('2.3.0', tag='v2.3.0')
version('2.2.0', tag='v2.2.0')
version('2.1.1', tag='v2.1.1')
version('2.0.1', tag='v2.0.1')
@@ -64,21 +65,23 @@ class Caliper(CMakePackage):
depends_on('libpfm4@4.8:4.99', when='+libpfm')
depends_on('mpi', when='+mpi')
- depends_on('unwind@2018.10.12,1.2:1.99', when='+callpath')
+ depends_on('unwind@1.2:1.99', when='+callpath')
depends_on('sosflow@spack', when='@1.0:1.99+sosflow')
depends_on('cmake', type='build')
- depends_on('python', type='build')
+ depends_on('python@3:', type='build')
# sosflow support not yet in 2.0
- conflicts('+sosflow', '@2.0.0:2.2.99')
+ conflicts('+sosflow', '@2.0.0:2.3.99')
conflicts('+adiak', '@:2.1.99')
def cmake_args(self):
spec = self.spec
args = [
+ ('-DPYTHON_EXECUTABLE=%s' %
+ spec['python'].command.path),
'-DBUILD_TESTING=Off',
'-DBUILD_DOCS=Off',
'-DBUILD_SHARED_LIBS=%s' % ('On' if '+shared' in spec else 'Off'),
diff --git a/var/spack/repos/builtin/packages/catch2/package.py b/var/spack/repos/builtin/packages/catch2/package.py
index 989c96f7fb..6961afad29 100644
--- a/var/spack/repos/builtin/packages/catch2/package.py
+++ b/var/spack/repos/builtin/packages/catch2/package.py
@@ -14,6 +14,14 @@ class Catch2(CMakePackage):
url = "https://github.com/catchorg/Catch2/archive/v2.9.1.tar.gz"
maintainers = ['ax3l']
+ version('2.11.3', sha256='9a6967138062688f04374698fce4ce65908f907d8c0fe5dfe8dc33126bd46543')
+ version('2.11.2', sha256='a96203fa531092375678ad2d81c43317ee58c684787f24b2a55748f6c6839799')
+ version('2.11.1', sha256='9af06ca5b10362620c6c9c729821367e1aeb0f76adfc7bc3a468da83db3c50c6')
+ version('2.11.0', sha256='b9957af46a04327d80833960ae51cf5e67765fd264389bd1e275294907f1a3e0')
+ version('2.10.2', sha256='79aa46ee6c5a87bc5306bfffc6ecde6a1ad6327715b208ee2e846873f282a494')
+ version('2.10.1', sha256='dcbbe0a5f4d2a4330bdf5bcb9ef6a02303d679d46596e4ed06ca462f2372d4de')
+ version('2.10.0', sha256='a3beaa8ba6238c189e1f81238ab38e585836af13204a7099e22eff6c25b98558')
+ version('2.9.2', sha256='54bea6d80a388a80f895cd0e2343fca72b0d9093a776af40904aefce49c13bda')
version('2.9.1', sha256='0b36488aca6265e7be14da2c2d0c748b4ddb9c70a1ea4da75736699c629f14ac')
version('2.9.0', sha256='00040cad9b6d6bb817ebd5853ff6dda23f9957153d8c4eedf85def0c9e787c42')
version('2.8.0', sha256='b567c37446cd22c8550bfeb7e2fe3f981b8f3ab8b2148499a522e7f61b8a481d')
diff --git a/var/spack/repos/builtin/packages/cctools/package.py b/var/spack/repos/builtin/packages/cctools/package.py
index 481e4a47f1..bf74c320ae 100644
--- a/var/spack/repos/builtin/packages/cctools/package.py
+++ b/var/spack/repos/builtin/packages/cctools/package.py
@@ -13,16 +13,18 @@ class Cctools(AutotoolsPackage):
"""
homepage = "https://github.com/cooperative-computing-lab/cctools"
- url = "https://github.com/cooperative-computing-lab/cctools/archive/release/6.1.1.tar.gz"
+ url = "https://github.com/cooperative-computing-lab/cctools/archive/release/7.1.2.tar.gz"
+ version('7.1.2', sha256='ca871e9fe245d047d4c701271cf2b868e6e3a170e8834c1887157ed855985131')
+ version('7.1.0', sha256='84748245db10ff26c0c0a7b9fd3ec20fbbb849dd4aadc5e8531fd1671abe7a81')
version('7.0.18', sha256='5b6f3c87ae68dd247534a5c073eb68cb1a60176a7f04d82699fbc05e649a91c2')
version('6.1.1', sha256='97f073350c970d6157f80891b3bf6d4f3eedb5f031fea386dc33e22f22b8af9d')
depends_on('openssl')
depends_on('perl+shared', type=('build', 'run'))
- depends_on('python@:2.9', when='@6.1.1', type=('build', 'run'))
depends_on('python', type=('build', 'run'))
depends_on('readline')
+ depends_on('gettext') # Corrects python linking of -lintl flag.
depends_on('swig')
# depends_on('xrootd')
depends_on('zlib')
@@ -44,21 +46,49 @@ class Cctools(AutotoolsPackage):
def configure_args(self):
args = []
- # For python
- if self.spec.satisfies('^python@3:'):
- args.append('--with-python-path=no')
- args.append(
- '--with-python3-path={0}'.format(self.spec['python'].prefix)
- )
+
+ # make sure we do not pick a python outside spack:
+ if self.spec.satisfies('@6.1.1'):
+ if self.spec.satisfies('^python@3:'):
+ args.extend([
+ '--with-python3-path', self.spec['python'].prefix,
+ '--with-python-path', 'no'
+ ])
+ elif self.spec.satisfies('^python@:2.9'):
+ args.extend([
+ '--with-python-path', self.spec['python'].prefix,
+ '--with-python3-path', 'no'
+ ])
+ else:
+ args.extend([
+ '--with-python-path', 'no',
+ '--with-python3-path', 'no'
+ ])
else:
- args.append('--with-python3-path=no')
- args.append(
- '--with-python-path={0}'.format(self.spec['python'].prefix)
- )
+ # versions 7 and above, where --with-python-path recognized the
+ # python version:
+ if self.spec.satisfies('^python@3:'):
+ args.extend([
+ '--with-python-path', self.spec['python'].prefix,
+ '--with-python2-path', 'no'
+ ])
+ elif self.spec.satisfies('^python@:2.9'):
+ args.extend([
+ '--with-python-path', self.spec['python'].prefix,
+ '--with-python3-path', 'no'
+ ])
+ else:
+ args.extend([
+ '--with-python2-path', 'no',
+ '--with-python3-path', 'no'
+ ])
+
# disable these bits
for p in ['mysql', 'xrootd']:
args.append('--with-{0}-path=no'.format(p))
+
# point these bits at the Spack installations
for p in ['openssl', 'perl', 'readline', 'swig', 'zlib']:
args.append('--with-{0}-path={1}'.format(p, self.spec[p].prefix))
+
return args
diff --git a/var/spack/repos/builtin/packages/ceres-solver/package.py b/var/spack/repos/builtin/packages/ceres-solver/package.py
index 599c180121..ab84b4f9b7 100644
--- a/var/spack/repos/builtin/packages/ceres-solver/package.py
+++ b/var/spack/repos/builtin/packages/ceres-solver/package.py
@@ -17,19 +17,38 @@ class CeresSolver(CMakePackage):
homepage = "http://ceres-solver.org"
url = "http://ceres-solver.org/ceres-solver-1.12.0.tar.gz"
+ version('1.14.0', sha256='4744005fc3b902fed886ea418df70690caa8e2ff6b5a90f3dd88a3d291ef8e8e')
version('1.12.0', sha256='745bfed55111e086954126b748eb9efe20e30be5b825c6dec3c525cf20afc895')
+ variant('suitesparse', default=False, description='Build with SuiteSparse')
+ variant('shared', default=True, description='Build shared libraries')
+ variant('examples', default=False, description='Build examples')
+
depends_on('eigen@3:')
depends_on('lapack')
depends_on('glog')
def cmake_args(self):
args = [
- '-DSUITESPARSE=OFF',
'-DCXSPARSE=OFF',
'-DEIGENSPARSE=ON',
'-DLAPACK=ON',
- '-DBUILD_SHARED_LIBS=ON',
'-DSCHUR_SPECIALIZATIONS=OFF'
]
+
+ if '+suitesparse' in self.spec:
+ args.append('-DSUITESPARSE=ON')
+ else:
+ args.append('-DSUITESPARSE=OFF')
+
+ if '+shared' in self.spec:
+ args.append('-DBUILD_SHARED_LIBS=ON')
+ else:
+ args.append('-DBUILD_SHARED_LIBS=OFF')
+
+ if '+examples' in self.spec:
+ args.append('-DBUILD_EXAMPLES=ON')
+ else:
+ args.append('-DBUILD_EXAMPLES=OFF')
+
return args
diff --git a/var/spack/repos/builtin/packages/cgns/package.py b/var/spack/repos/builtin/packages/cgns/package.py
index 4e8a112634..5e05c805af 100644
--- a/var/spack/repos/builtin/packages/cgns/package.py
+++ b/var/spack/repos/builtin/packages/cgns/package.py
@@ -18,15 +18,26 @@ class Cgns(CMakePackage):
version('develop', branch='develop')
version('master', branch='master')
+ version('4.1.1', sha256='055d345c3569df3ae832fb2611cd7e0bc61d56da41b2be1533407e949581e226')
+ version('4.1.0', sha256='4674de1fac3c47998248725fd670377be497f568312c5903d1bb8090a3cf4da0')
+ version('4.0.0', sha256='748585a8e52dff4d250d6b603e6b847d05498e4566aba2dc3d7a7d85c4d55849')
+ version('3.4.1', sha256='d32595e7737b9332243bd3de1eb8c018a272f620f09b289dea8292eba1365994')
version('3.4.0', sha256='6372196caf25b27d38cf6f056258cb0bdd45757f49d9c59372b6dbbddb1e05da')
version('3.3.1', sha256='81093693b2e21a99c5640b82b267a495625b663d7b8125d5f1e9e7aaa1f8d469')
version('3.3.0', sha256='8422c67994f8dc6a2f201523a14f6c7d7e16313bdd404c460c16079dbeafc662')
- variant('hdf5', default=True, description='Enable HDF5 interface')
- variant('fortran', default=False, description='Enable Fortran interface')
- variant('scoping', default=True, description='Enable scoping')
- variant('mpi', default=True, description='Enable parallel cgns')
- variant('int64', default=False, description='Build with 64-bit integers')
+ variant('hdf5', default=True, description='Enable HDF5 interface')
+ variant('fortran', default=False, description='Enable Fortran interface')
+ variant('base_scope', default=False, description='Enable base scope')
+ variant('scoping', default=True, description='Enable scoping')
+ variant('mpi', default=True, description='Enable parallel cgns')
+ variant('int64', default=False, description='Build with 64-bit integers')
+ variant('shared', default=True, description='Enable shared library')
+ variant('static', default=False, description='Build static libraries')
+ variant('testing', default=False, description='Build CGNS testing')
+ variant('legacy', default=False, description='Enable legacy options')
+ variant('parallel', default=False, description='Enable parallel features')
+ variant('mem_debug', default=False, description='Enable memory debugging option')
depends_on('hdf5~mpi', when='+hdf5~mpi')
depends_on('hdf5+mpi', when='+hdf5+mpi')
@@ -44,7 +55,21 @@ class Cgns(CMakePackage):
'-DCGNS_ENABLE_PARALLEL:BOOL=%s' % (
'ON' if '+mpi' in spec else 'OFF'),
'-DCGNS_ENABLE_TESTS:BOOL=OFF',
- '-DCGNS_BUILD_CGNSTOOLS:BOOL=OFF'
+ '-DCGNS_BUILD_TESTING:BOOL=%s' % (
+ 'ON' if '+testing' in spec else 'OFF'),
+ '-DCGNS_BUILD_CGNSTOOLS:BOOL=OFF',
+ '-DCGNS_BUILD_SHARED:BOOL=%s' % (
+ 'ON' if '+shared' in spec else 'OFF'),
+ '-DCGNS_BUILD_STATIC:BOOL=%s' % (
+ 'ON' if '+static' in spec else 'OFF'),
+ '-DCGNS_ENABLE_BASE_SCOPE:BOOL=%s' % (
+ 'ON' if '+base_scope' in spec else 'OFF'),
+ '-DCGNS_ENABLE_LEGACY:BOOL=%s' % (
+ 'ON' if '+legacy' in spec else 'OFF'),
+ '-DCGNS_ENABLE_PARALLEL:BOOL=%s' % (
+ 'ON' if '+parallel' in spec else 'OFF'),
+ '-DCGNS_ENABLE_MEM_DEBUG:BOOL=%s' % (
+ 'ON' if '+mem_debug' in spec else 'OFF')
])
if '+mpi' in spec:
diff --git a/var/spack/repos/builtin/packages/charliecloud/package.py b/var/spack/repos/builtin/packages/charliecloud/package.py
index 9329455d84..0e562b6997 100644
--- a/var/spack/repos/builtin/packages/charliecloud/package.py
+++ b/var/spack/repos/builtin/packages/charliecloud/package.py
@@ -9,27 +9,32 @@ from spack import *
class Charliecloud(AutotoolsPackage):
"""Lightweight user-defined software stacks for HPC."""
+ maintainers = ['j-ogas']
homepage = "https://hpc.github.io/charliecloud"
- url = "https://github.com/hpc/charliecloud/releases/download/v0.9.10/charliecloud-0.9.10.tar.gz"
+ url = "https://github.com/hpc/charliecloud/releases/download/v0.14/charliecloud-0.9.10.tar.gz"
git = "https://github.com/hpc/charliecloud.git"
version('master', branch='master')
- version('0.13', sha256='5740bff6e410ca99484c1bdf3dbe834c0f753c846d55c19d6162967a3e2718e0')
+ version('0.15', sha256='2163420d43c934151c4f44a188313bdb7f79e576d5a86ba64b9ea45f784b9921')
+ version('0.14', sha256='4ae23c2d6442949e16902f9d5604dbd1d6059aeb5dd461b11fc5c74d49dcb194')
- depends_on('python@3.4:', type=('build', 'run'))
+ depends_on('m4', type='build')
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
- # experimental builder (ch-grow)
- variant('builder', default=False, description='Bundle dependencies for unprivileged builder (ch-grow)')
- depends_on('py-lark-parser', type='run', when='+builder')
- depends_on('skopeo', type='run', when='+builder')
- depends_on('umoci', type='run', when='+builder')
+ depends_on('python@3.5:', type='run')
+ depends_on('py-lark-parser', type='run')
+ depends_on('py-requests', type='run')
- # man pages and html docs
+ # man pages and html docs variant
variant('docs', default=False, description='Build man pages and html docs')
depends_on('rsync', type='build', when='+docs')
depends_on('py-sphinx', type='build', when='+docs')
depends_on('py-sphinx-rtd-theme', type='build', when='+docs')
+ conflicts('platform=darwin', msg='This package does not build on macOS')
+
# bash automated testing harness (bats)
depends_on('bats@0.4.0', type='test')
@@ -37,10 +42,9 @@ class Charliecloud(AutotoolsPackage):
args = []
- if '+docs' not in self.spec:
+ if '+docs' in self.spec:
+ args.append('--enable-html')
+ else:
args.append('--disable-html')
- if '+builder' not in self.spec:
- args.append('--disable-ch-grow')
-
return args
diff --git a/var/spack/repos/builtin/packages/charmpp/package.py b/var/spack/repos/builtin/packages/charmpp/package.py
index 8021321614..158dd59937 100644
--- a/var/spack/repos/builtin/packages/charmpp/package.py
+++ b/var/spack/repos/builtin/packages/charmpp/package.py
@@ -18,10 +18,12 @@ class Charmpp(Package):
(your laptop) to the largest supercomputers."""
homepage = "http://charmplusplus.org"
- url = "https://charm.cs.illinois.edu/distrib/charm-6.8.2.tar.gz"
+ url = "http://charm.cs.illinois.edu/distrib/charm-6.8.2.tar.gz"
git = "https://github.com/UIUC-PPL/charm.git"
- version("develop", branch="charm")
+ version("develop", branch="master")
+
+ version('6.10.1', sha256='ab96198105daabbb8c8bdf370f87b0523521ce502c656cb6cd5b89f69a2c70a8')
version('6.10.0', sha256='7c526a78aa0c202b7f0418b345138e7dc40496f0bb7b9e301e0381980450b25c')
version("6.9.0", sha256="85ed660e46eeb7a6fc6b32deab08226f647c244241948f6b592ebcd2b6050cbd")
version("6.8.2", sha256="08e6001b0e9cd00ebde179f76098767149bf7e454f29028fb9a8bfb55778698e")
diff --git a/var/spack/repos/builtin/packages/cinch/package.py b/var/spack/repos/builtin/packages/cinch/package.py
index 65281b8455..f46a801cd4 100644
--- a/var/spack/repos/builtin/packages/cinch/package.py
+++ b/var/spack/repos/builtin/packages/cinch/package.py
@@ -16,7 +16,7 @@ class Cinch(Package):
url = "https://github.com/laristra/cinch/archive/1.0.zip"
git = "https://github.com/laristra/cinch.git"
- version('develop', branch='master', submodules=False)
+ version('master', branch='master', submodules=False)
version('1.0', sha256='98b73473829b478191481621d84c3d63c662da6e951321f858a032eae3ca07b7')
def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/citcoms/package.py b/var/spack/repos/builtin/packages/citcoms/package.py
index 2529e544f6..35fe86b2b4 100644
--- a/var/spack/repos/builtin/packages/citcoms/package.py
+++ b/var/spack/repos/builtin/packages/citcoms/package.py
@@ -12,12 +12,14 @@ class Citcoms(AutotoolsPackage):
homepage = "https://geodynamics.org/cig/software/citcoms/"
url = "https://github.com/geodynamics/citcoms/releases/download/v3.3.1/CitcomS-3.3.1.tar.gz"
+ git = "https://github.com/geodynamics/citcoms.git"
+ maintainers = ['adamjstewart']
+
+ version('master', branch='master', submodules=True)
version('3.3.1', sha256='e3520e0a933e4699d31e86fe309b8c154ea6ecb0f42a1cf6f25e8d13d825a4b3')
version('3.2.0', sha256='773a14d91ecbb4a4d1e04317635fab79819d83c57b47f19380ff30b9b19cb07a')
- variant('pyre', default=False, description='build Pyre modules')
- variant('exchanger', default=False, description='use Exchanger')
variant('ggrd', default=False, description='use GGRD file support')
variant('cuda', default=False, description='use CUDA')
variant('hdf5', default=False, description='add HDF5 support')
@@ -25,17 +27,17 @@ class Citcoms(AutotoolsPackage):
# Required dependencies
depends_on('mpi')
depends_on('zlib')
+ depends_on('python@:2', type='run') # needed for post-processing scripts
+ depends_on('automake', when='@master', type='build')
+ depends_on('autoconf', when='@master', type='build')
+ depends_on('libtool', when='@master', type='build')
+ depends_on('m4', when='@master', type='build')
# Optional dependencies
- depends_on('exchanger', when='+exchanger')
- depends_on('py-pythia', type=('build', 'run'), when='+pyre')
depends_on('hc', when='+ggrd')
depends_on('cuda', when='+cuda')
depends_on('hdf5+mpi', when='+hdf5')
- conflicts('+pyre', when='@3.3:', msg='Pyre support was removed from 3.3+')
- conflicts('+exchanger', when='@3.3:', msg='Exchanger support was removed from 3.3+')
-
def setup_build_environment(self, env):
if '+ggrd' in self.spec:
env.set('HC_HOME', self.spec['hc'].prefix)
@@ -45,15 +47,8 @@ class Citcoms(AutotoolsPackage):
# Flags only valid in 3.2
if self.spec.satisfies('@:3.2'):
- if '+pyre' in self.spec:
- args.append('--with-pyre')
- else:
- args.append('--without-pyre')
-
- if '+exchanger' in self.spec:
- args.append('--with-exchanger')
- else:
- args.append('--without-exchanger')
+ args.append('--without-pyre')
+ args.append('--without-exchanger')
if '+ggrd' in self.spec:
args.append('--with-ggrd')
diff --git a/var/spack/repos/builtin/packages/clhep/package.py b/var/spack/repos/builtin/packages/clhep/package.py
index 828f46ec97..4fca7f7efb 100644
--- a/var/spack/repos/builtin/packages/clhep/package.py
+++ b/var/spack/repos/builtin/packages/clhep/package.py
@@ -14,6 +14,8 @@ class Clhep(CMakePackage):
list_url = "https://proj-clhep.web.cern.ch/proj-clhep/"
list_depth = 1
+ maintainers = ['drbenmorgan']
+
version('2.4.1.3', sha256='27c257934929f4cb1643aa60aeaad6519025d8f0a1c199bc3137ad7368245913')
version('2.4.1.2', sha256='ff96e7282254164380460bc8cf2dff2b58944084eadcd872b5661eb5a33fa4b8')
version('2.4.1.0', sha256='d14736eb5c3d21f86ce831dc1afcf03d423825b35c84deb6f8fd16773528c54d')
diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py
index fdfa46af42..ce436d2ea9 100644
--- a/var/spack/repos/builtin/packages/cmake/package.py
+++ b/var/spack/repos/builtin/packages/cmake/package.py
@@ -13,6 +13,8 @@ class Cmake(Package):
url = 'https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5.tar.gz'
maintainers = ['chuckatkins']
+ version('3.17.0', sha256='b74c05b55115eacc4fa2b77a814981dbda05cdc95a53e279fe16b7b272f00847')
+ version('3.16.5', sha256='5f760b50b8ecc9c0c37135fae5fbf00a2fef617059aa9d61c1bb91653e5a8bfc')
version('3.16.2', sha256='8c09786ec60ca2be354c29829072c38113de9184f29928eb9da8446a5f2ce6a9')
version('3.16.1', sha256='a275b3168fa8626eca4465da7bb159ff07c8c6cb0fb7179be59e12cbdfa725fd')
version('3.16.0', sha256='6da56556c63cab6e9a3e1656e8763ed4a841ac9859fefb63cbe79472e67e8c5f')
@@ -49,6 +51,7 @@ class Cmake(Package):
version('3.10.0', sha256='b3345c17609ea0f039960ef470aa099de9942135990930a57c14575aae884987')
version('3.9.6', sha256='7410851a783a41b521214ad987bb534a7e4a65e059651a2514e6ebfc8f46b218')
version('3.9.4', sha256='b5d86f12ae0072db520fdbdad67405f799eb728b610ed66043c20a92b4906ca1')
+ version('3.9.2', sha256='954a5801a456ee48e76f01107c9a4961677dd0f3e115275bbd18410dc22ba3c1')
version('3.9.0', sha256='167701525183dbb722b9ffe69fb525aa2b81798cf12f5ce1c020c93394dfae0f')
version('3.8.2', sha256='da3072794eb4c09f2d782fcee043847b99bb4cf8d4573978d9b2024214d6e92d')
version('3.8.1', sha256='ce5d9161396e06501b00e52933783150a87c33080d4bdcef461b5b7fd24ac228')
diff --git a/var/spack/repos/builtin/packages/cminpack/link_with_blas_pr_21.patch b/var/spack/repos/builtin/packages/cminpack/link_with_blas_pr_21.patch
new file mode 100644
index 0000000000..a28d67ea0f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cminpack/link_with_blas_pr_21.patch
@@ -0,0 +1,267 @@
+From 3b386a0ed507a9923f942098a4dcf2df2bcde7d7 Mon Sep 17 00:00:00 2001
+From: Michel Zou <xantares09@hotmail.com>
+Date: Thu, 6 Dec 2018 23:38:07 +0100
+Subject: [PATCH] cmake to link to cblas
+
+---
+ CMakeLists.txt | 30 ++++---
+ cmake/CMakeLists.txt | 2 +-
+ cmake/FindCBLAS.cmake | 180 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 201 insertions(+), 11 deletions(-)
+ create mode 100644 cmake/FindCBLAS.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6c8d16b..f22039f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -5,6 +5,8 @@ cmake_minimum_required (VERSION 2.8.9)
+ project (CMINPACK)
+ string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
+
++set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
++
+ include(${PROJECT_SOURCE_DIR}/cmake/cminpack_utils.cmake)
+ # Set version and OS-specific settings
+ set(CMINPACK_VERSION 1.3.6 CACHE STRING "CMinpack version")
+@@ -34,7 +36,7 @@ else ()
+ endif(WIN32)
+ endif ()
+
+-option(USE_BLAS "Compile cminpack using a blas library if possible" ON)
++option(USE_BLAS "Compile cminpack using cblas library if possible" ON)
+
+ #set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/../build)
+
+@@ -61,16 +63,24 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
+ TARGET_LINK_LIBRARIES(cminpack m)
+ endif()
+
+-# Link with a BLAS library if requested
+-if (USE_BLAS)
+- if (NOT BUILD_SHARED_LIBS)
+- set(BLA_STATIC True)
++
++include (CheckLibraryExists)
++include (CheckFunctionExists)
++check_function_exists (sqrt HAVE_SQRT_NO_LIBM)
++if (NOT HAVE_SQRT_NO_LIBM)
++ check_library_exists ("m" sqrt "" HAVE_LIBM)
++ if (HAVE_LIBM)
++ target_link_libraries(cminpack PUBLIC m)
+ endif()
+- find_package(BLAS)
+- if (BLAS_FOUND)
+- target_link_libraries(cminpack PUBLIC ${BLAS_LIBRARIES})
+- set_target_properties(cminpack PROPERTIES LINK_FLAGS "${BLAS_LINKER_FLAGS}")
+- target_compile_definitions(cminpack PUBLIC -DUSE_CBLAS)
++endif ()
++
++# Link with CBLAS library if requested
++if (USE_BLAS)
++ find_package (CBLAS)
++ if (CBLAS_FOUND)
++ target_link_libraries(cminpack PUBLIC ${CBLAS_LIBRARIES})
++ set_target_properties(cminpack PROPERTIES LINK_FLAGS "${CBLAS_LINKER_FLAGS}")
++ target_compile_definitions(cminpack PUBLIC USE_CBLAS)
+ endif()
+ endif()
+
+diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
+index 058a89b..d8277bc 100644
+--- a/cmake/CMakeLists.txt
++++ b/cmake/CMakeLists.txt
+@@ -1,7 +1,7 @@
+ set(PKG_DESC "CMinPack")
+ set(PKG_EXTERNAL_DEPS "")
+ set(pkg_conf_file ${CMAKE_CURRENT_BINARY_DIR}/cminpack.pc)
+-if (USE_BLAS AND BLAS_FOUND)
++if (USE_BLAS AND CBLAS_FOUND)
+ set(PC_CMINPACK_CFLAGS "-DUSE_CBLAS")
+ if (NOT "${BLAS_LIBRARIES}" STREQUAL "")
+ string(REPLACE ";" " -l" PC_CMINPACK_LIBRARIES "${BLAS_LIBRARIES}")
+diff --git a/cmake/FindCBLAS.cmake b/cmake/FindCBLAS.cmake
+new file mode 100644
+index 0000000..e4fb422
+--- /dev/null
++++ b/cmake/FindCBLAS.cmake
+@@ -0,0 +1,180 @@
++# - Find CBLAS library
++#
++# This module finds an installed fortran library that implements the CBLAS
++# linear-algebra interface (see http://www.netlib.org/blas/), with CBLAS
++# interface.
++#
++# This module sets the following variables:
++# CBLAS_FOUND - set to true if a library implementing the CBLAS interface is found
++# CBLAS_LIBRARIES - list of libraries (using full path name) to link against to use CBLAS
++# CBLAS_INCLUDE_DIR - path to includes
++# CBLAS_INCLUDE_FILE - the file to be included to use CBLAS
++#
++
++SET(CBLAS_LIBRARIES)
++SET(CBLAS_INCLUDE_DIR)
++SET(CBLAS_INCLUDE_FILE)
++
++# CBLAS in Intel mkl
++FIND_PACKAGE(MKL)
++IF (MKL_FOUND AND NOT CBLAS_LIBRARIES)
++ SET(CBLAS_LIBRARIES ${MKL_LIBRARIES})
++ SET(CBLAS_INCLUDE_DIR ${MKL_INCLUDE_DIR})
++ SET(CBLAS_INCLUDE_FILE "mkl_cblas.h")
++ENDIF (MKL_FOUND AND NOT CBLAS_LIBRARIES)
++
++# Old CBLAS search
++SET(_verbose TRUE)
++INCLUDE(CheckFunctionExists)
++INCLUDE(CheckIncludeFile)
++
++MACRO(CHECK_ALL_LIBRARIES LIBRARIES _prefix _name _flags _list _include _search_include)
++ # This macro checks for the existence of the combination of fortran libraries
++ # given by _list. If the combination is found, this macro checks (using the
++ # Check_Fortran_Function_Exists macro) whether can link against that library
++ # combination using the name of a routine given by _name using the linker
++ # flags given by _flags. If the combination of libraries is found and passes
++ # the link test, LIBRARIES is set to the list of complete library paths that
++ # have been found. Otherwise, LIBRARIES is set to FALSE.
++ # N.B. _prefix is the prefix applied to the names of all cached variables that
++ # are generated internally and marked advanced by this macro.
++ SET(__list)
++ FOREACH(_elem ${_list})
++ IF(__list)
++ SET(__list "${__list} - ${_elem}")
++ ELSE(__list)
++ SET(__list "${_elem}")
++ ENDIF(__list)
++ ENDFOREACH(_elem)
++ IF(_verbose)
++ MESSAGE(STATUS "Checking for [${__list}]")
++ ENDIF(_verbose)
++ SET(_libraries_work TRUE)
++ SET(${LIBRARIES})
++ SET(_combined_name)
++ SET(_paths)
++ FOREACH(_library ${_list})
++ SET(_combined_name ${_combined_name}_${_library})
++ # did we find all the libraries in the _list until now?
++ # (we stop at the first unfound one)
++ IF(_libraries_work)
++ IF(APPLE)
++ FIND_LIBRARY(${_prefix}_${_library}_LIBRARY
++ NAMES ${_library}
++ PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 ENV
++ DYLD_LIBRARY_PATH
++ )
++ ELSE(APPLE)
++ FIND_LIBRARY(${_prefix}_${_library}_LIBRARY
++ NAMES ${_library}
++ PATHS /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 ENV
++ LD_LIBRARY_PATH
++ )
++ ENDIF(APPLE)
++ MARK_AS_ADVANCED(${_prefix}_${_library}_LIBRARY)
++ IF(${_prefix}_${_library}_LIBRARY)
++ GET_FILENAME_COMPONENT(_path ${${_prefix}_${_library}_LIBRARY} PATH)
++ LIST(APPEND _paths ${_path}/../include ${_path}/../../include)
++ ENDIF(${_prefix}_${_library}_LIBRARY)
++ SET(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY})
++ SET(_libraries_work ${${_prefix}_${_library}_LIBRARY})
++ ENDIF(_libraries_work)
++ ENDFOREACH(_library ${_list})
++ # Test include
++ SET(_bug_search_include ${_search_include}) #CMAKE BUG!!! SHOULD NOT BE THAT
++ IF(_bug_search_include)
++ FIND_PATH(${_prefix}${_combined_name}_INCLUDE ${_include} ${_paths})
++ MARK_AS_ADVANCED(${_prefix}${_combined_name}_INCLUDE)
++ IF(${_prefix}${_combined_name}_INCLUDE)
++ IF (_verbose)
++ MESSAGE(STATUS "Includes found")
++ ENDIF (_verbose)
++ SET(${_prefix}_INCLUDE_DIR ${${_prefix}${_combined_name}_INCLUDE})
++ SET(${_prefix}_INCLUDE_FILE ${_include})
++ ELSE(${_prefix}${_combined_name}_INCLUDE)
++ SET(_libraries_work FALSE)
++ ENDIF(${_prefix}${_combined_name}_INCLUDE)
++ ELSE(_bug_search_include)
++ SET(${_prefix}_INCLUDE_DIR)
++ SET(${_prefix}_INCLUDE_FILE ${_include})
++ ENDIF(_bug_search_include)
++ # Test this combination of libraries.
++ IF(_libraries_work)
++ SET(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}})
++ CHECK_FUNCTION_EXISTS(${_name} ${_prefix}${_combined_name}_WORKS)
++ SET(CMAKE_REQUIRED_LIBRARIES)
++ MARK_AS_ADVANCED(${_prefix}${_combined_name}_WORKS)
++ SET(_libraries_work ${${_prefix}${_combined_name}_WORKS})
++ IF(_verbose AND _libraries_work)
++ MESSAGE(STATUS "Libraries found")
++ ENDIF(_verbose AND _libraries_work)
++ ENDIF(_libraries_work)
++ # Fin
++ IF(NOT _libraries_work)
++ SET(${LIBRARIES} NOTFOUND)
++ ENDIF(NOT _libraries_work)
++ENDMACRO(CHECK_ALL_LIBRARIES)
++
++# Generic CBLAS library
++IF(NOT CBLAS_LIBRARIES)
++ CHECK_ALL_LIBRARIES(
++ CBLAS_LIBRARIES
++ CBLAS
++ cblas_dgemm
++ ""
++ "cblas"
++ "cblas.h"
++ TRUE )
++ENDIF()
++
++# CBLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
++IF(NOT CBLAS_LIBRARIES)
++ CHECK_ALL_LIBRARIES(
++ CBLAS_LIBRARIES
++ CBLAS
++ cblas_dgemm
++ ""
++ "cblas;atlas"
++ "cblas.h"
++ TRUE )
++ENDIF()
++
++# CBLAS in BLAS library
++IF(NOT CBLAS_LIBRARIES)
++ CHECK_ALL_LIBRARIES(
++ CBLAS_LIBRARIES
++ CBLAS
++ cblas_dgemm
++ ""
++ "blas"
++ "cblas.h"
++ TRUE )
++ENDIF()
++
++# Apple CBLAS library?
++IF(NOT CBLAS_LIBRARIES)
++ CHECK_ALL_LIBRARIES(
++ CBLAS_LIBRARIES
++ CBLAS
++ cblas_dgemm
++ ""
++ "Accelerate"
++ "Accelerate/Accelerate.h"
++ FALSE )
++ENDIF()
++
++IF( NOT CBLAS_LIBRARIES )
++ CHECK_ALL_LIBRARIES(
++ CBLAS_LIBRARIES
++ CBLAS
++ cblas_dgemm
++ ""
++ "vecLib"
++ "vecLib/vecLib.h"
++ FALSE )
++ENDIF()
++
++include ( FindPackageHandleStandardArgs )
++find_package_handle_standard_args ( CBLAS DEFAULT_MSG CBLAS_LIBRARIES
++)
++
diff --git a/var/spack/repos/builtin/packages/cminpack/package.py b/var/spack/repos/builtin/packages/cminpack/package.py
new file mode 100644
index 0000000000..e269accabf
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cminpack/package.py
@@ -0,0 +1,39 @@
+# Copyright 2013-2020 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 Cminpack(CMakePackage):
+ """This is a C version of the minpack minimization package.
+ Minpack includes software for solving nonlinear equations
+ and nonlinear least squares problems.
+ """
+
+ homepage = "http://devernay.free.fr/hacks/cminpack"
+ url = "https://github.com/devernay/cminpack/archive/v1.3.6.tar.gz"
+ git = 'https://github.com/devernay/cminpack.git'
+
+ version('master', branch='master')
+ version('1.3.6', sha256='3c07fd21308c96477a2c900032e21d937739c233ee273b4347a0d4a84a32d09f')
+
+ variant('shared', default=False, description='Build shared libraries')
+ variant('blas', default=True, description='Compile with BLAS')
+
+ depends_on('blas', when='+blas')
+
+ # Backport a pull request for correctly linking blas.
+ # See https://github.com/devernay/cminpack/pull/21
+ patch('link_with_blas_pr_21.patch', when='@:1.3.6')
+
+ def cmake_args(self):
+ args = [
+ '-DBUILD_SHARED_LIBS=%s' % (
+ 'ON' if '+shared' in self.spec else 'OFF'),
+ '-DUSE_BLAS=%s' % (
+ 'ON' if 'blas' in self.spec else 'OFF')
+ ]
+
+ return args
diff --git a/var/spack/repos/builtin/packages/compiz/package.py b/var/spack/repos/builtin/packages/compiz/package.py
index b78dcd410f..ed90e45174 100644
--- a/var/spack/repos/builtin/packages/compiz/package.py
+++ b/var/spack/repos/builtin/packages/compiz/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Compiz(AutotoolsPackage):
+class Compiz(AutotoolsPackage, XorgPackage):
"""compiz - OpenGL window and compositing manager.
Compiz is an OpenGL compositing manager that use
@@ -15,7 +15,7 @@ class Compiz(AutotoolsPackage):
and it is designed to run well on most graphics hardware."""
homepage = "http://www.compiz.org/"
- url = "https://www.x.org/archive/individual/app/compiz-0.7.8.tar.gz"
+ xorg_mirror_path = "app/compiz-0.7.8.tar.gz"
version('0.7.8', sha256='b46f52b776cc78e85357a07688d04b36ec19c65eadeaf6f6cfcca7b8515e6503')
diff --git a/var/spack/repos/builtin/packages/compositeproto/package.py b/var/spack/repos/builtin/packages/compositeproto/package.py
index eb8b8fc078..bf1bedaf20 100644
--- a/var/spack/repos/builtin/packages/compositeproto/package.py
+++ b/var/spack/repos/builtin/packages/compositeproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Compositeproto(AutotoolsPackage):
+class Compositeproto(AutotoolsPackage, XorgPackage):
"""Composite Extension.
This package contains header files and documentation for the composite
extension. Library and server implementations are separate."""
homepage = "http://cgit.freedesktop.org/xorg/proto/compositeproto"
- url = "https://www.x.org/archive/individual/proto/compositeproto-0.4.2.tar.gz"
+ xorg_mirror_path = "proto/compositeproto-0.4.2.tar.gz"
version('0.4.2', sha256='22195b7e50036440b1c6b3b2d63eb03dfa6e71c8a1263ed1f07b0f31ae7dad50')
diff --git a/var/spack/repos/builtin/packages/constype/package.py b/var/spack/repos/builtin/packages/constype/package.py
index 98d2ea6f38..92ea0c3f4f 100644
--- a/var/spack/repos/builtin/packages/constype/package.py
+++ b/var/spack/repos/builtin/packages/constype/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Constype(AutotoolsPackage):
+class Constype(AutotoolsPackage, XorgPackage):
"""constype prints on the standard output the Sun code for the type of
display that the specified device is.
@@ -14,7 +14,7 @@ class Constype(AutotoolsPackage):
SPARC OS'es and to Solaris on both SPARC & x86."""
homepage = "http://cgit.freedesktop.org/xorg/app/constype"
- url = "https://www.x.org/archive/individual/app/constype-1.0.4.tar.gz"
+ xorg_mirror_path = "app/constype-1.0.4.tar.gz"
version('1.0.4', sha256='ec09aff369cf1d527fd5b8075fb4dd0ecf89d905190cf1a0a0145d5e523f913d')
diff --git a/var/spack/repos/builtin/packages/coreutils/package.py b/var/spack/repos/builtin/packages/coreutils/package.py
index 4aa938a434..5743bfdc57 100644
--- a/var/spack/repos/builtin/packages/coreutils/package.py
+++ b/var/spack/repos/builtin/packages/coreutils/package.py
@@ -12,8 +12,9 @@ class Coreutils(AutotoolsPackage, GNUMirrorPackage):
the core utilities which are expected to exist on every
operating system.
"""
- homepage = "http://www.gnu.org/software/coreutils/"
- gnu_mirror_path = "coreutils/coreutils-8.26.tar.xz"
+
+ homepage = 'http://www.gnu.org/software/coreutils/'
+ gnu_mirror_path = 'coreutils/coreutils-8.26.tar.xz'
version('8.31', sha256='ff7a9c918edce6b4f4b2725e3f9b37b0c4d193531cac49a48b56c4d0d3a9e9fd')
version('8.30', sha256='e831b3a86091496cdba720411f9748de81507798f6130adeaef872d206e1b057')
@@ -22,3 +23,14 @@ class Coreutils(AutotoolsPackage, GNUMirrorPackage):
version('8.23', sha256='ec43ca5bcfc62242accb46b7f121f6b684ee21ecd7d075059bf650ff9e37b82d')
build_directory = 'spack-build'
+
+ def configure_args(self):
+ spec = self.spec
+ configure_args = []
+ if spec.satisfies('platform=darwin'):
+ configure_args.append('--program-prefix=g')
+ configure_args.append('--without-gmp')
+ configure_args.append('gl_cv_func_ftello_works=yes')
+ configure_args.append('FORCE_UNSAFE_CONFIGURE=1')
+
+ return configure_args
diff --git a/var/spack/repos/builtin/packages/cosma/package.py b/var/spack/repos/builtin/packages/cosma/package.py
new file mode 100644
index 0000000000..efb81035da
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cosma/package.py
@@ -0,0 +1,69 @@
+# Copyright 2013-2020 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 Cosma(CMakePackage):
+ """
+ Distributed Communication-Optimal Matrix-Matrix Multiplication Library
+ """
+
+ maintainers = ['teonnik', 'kabicm']
+ homepage = 'https://github.com/eth-cscs/COSMA'
+ url = 'https://github.com/eth-cscs/COSMA/releases/download/v2.0.2/cosma.tar.gz'
+ git = 'https://github.com/eth-cscs/COSMA.git'
+
+ # note: The default archives produced with github do not have the archives
+ # of the submodules.
+ version('master', branch='master', submodules=True)
+ version('2.0.2', sha256='4f3354828bc718f3eef2f0098c3bdca3499297497a220da32db1acd57920c68d')
+ # note: this version fails to build at the moment
+ # version('1.0.0',
+ # url='https://github.com/eth-cscs/COSMA/releases/download/1.0/cosma.tar.gz',
+ # sha256='c142104258dcca4c17fa7faffc2990a08d2777235c7980006e93c5dca51061f6')
+
+ variant('cuda', default=False,
+ description='Build with the CUBLAS back end.')
+ variant('scalapack', default=False,
+ description='Build with ScaLAPACK support.')
+
+ depends_on('cmake@3.12:', type='build')
+ depends_on('mpi@3:')
+ depends_on('blas', when='~cuda')
+ depends_on('scalapack', when='+scalapack')
+ # COSMA is written entirely in C++, it may use cublasXt but a CUDA capable
+ # compiler is not needed. There is no need for CudaPackage in this recipe.
+ depends_on('cuda', when='+cuda')
+
+ def setup_build_environment(self, env):
+ if '+cuda' in self.spec:
+ env.set('CUDA_PATH', self.spec['cuda'].prefix)
+
+ def cmake_args(self):
+ spec = self.spec
+ args = ['-DCOSMA_WITH_TESTS=OFF',
+ '-DCOSMA_WITH_APPS=OFF',
+ '-DCOSMA_WITH_PROFILING=OFF',
+ '-DCOSMA_WITH_BENCHMARKS=OFF']
+
+ if '^mkl' in spec:
+ args += ['-DCOSMA_BLAS=MKL']
+ elif '^netlib-lapack' in spec:
+ args += ['-DCOSMA_BLAS=CUSTOM']
+ elif '^openblas' in spec:
+ args += ['-DCOSMA_BLAS=OPENBLAS']
+ elif '+cuda' in spec:
+ args += ['-DCOSMA_BLAS=CUDA']
+ else: # TODO '^rocm' in spec:
+ args += ['-DCOSMA_BLAS=ROCM']
+
+ if '+scalapack' and '^mkl' in spec:
+ args += ['-DCOSMA_SCALAPACK=MKL']
+ elif '+scalapack' and '^netlib-scalapack' in spec:
+ args += ['-DCOSMA_SCALAPACK=CUSTOM']
+
+ return args
diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py
index e551e790a7..734b2c0aa3 100644
--- a/var/spack/repos/builtin/packages/cp2k/package.py
+++ b/var/spack/repos/builtin/packages/cp2k/package.py
@@ -20,6 +20,7 @@ class Cp2k(MakefilePackage, CudaPackage):
git = 'https://github.com/cp2k/cp2k.git'
list_url = 'https://github.com/cp2k/cp2k/releases'
+ version('7.1', sha256='ccd711a09a426145440e666310dd01cc5772ab103493c4ae6a3470898cd0addb')
version('6.1', sha256='af803558e0a6b9e9d9ce8a3ab955ba32bacd179922455424e061c82c9fefa34b')
version('5.1', sha256='e23613b593354fa82e0b8410e17d94c607a0b8c6d9b5d843528403ab09904412')
version('4.1', sha256='4a3e4a101d8a35ebd80a9e9ecb02697fb8256364f1eccdbe4e5a85d31fe21343')
@@ -43,6 +44,7 @@ class Cp2k(MakefilePackage, CudaPackage):
variant('sirius', default=False,
description=('Enable planewave electronic structure'
' calculations via SIRIUS'))
+ variant('cosma', default=False, description='Use COSMA for p?gemm')
# override cuda_arch from CudaPackage since we only support one arch
# at a time and only specific ones for which we have parameter files
@@ -104,10 +106,13 @@ class Cp2k(MakefilePackage, CudaPackage):
depends_on('mpi@2:', when='+mpi')
depends_on('scalapack', when='+mpi')
+ depends_on('cosma+scalapack', when='+cosma')
+ depends_on('cosma+cuda+scalapack', when='+cosma+cuda')
depends_on('elpa@2011.12:2016.13+openmp', when='+openmp+elpa@:5.999')
depends_on('elpa@2011.12:2017.11+openmp', when='+openmp+elpa@6.0:')
depends_on('elpa@2011.12:2016.13~openmp', when='~openmp+elpa@:5.999')
depends_on('elpa@2011.12:2017.11~openmp', when='~openmp+elpa@6.0:')
+ depends_on('elpa@2018.05:~openmp', when='~openmp+elpa@7.0:')
depends_on('plumed+shared+mpi', when='+plumed+mpi')
depends_on('plumed+shared~mpi', when='+plumed~mpi')
@@ -123,13 +128,17 @@ class Cp2k(MakefilePackage, CudaPackage):
depends_on('sirius+fortran+vdwxc+shared~openmp', when='+sirius~openmp')
# the bundled libcusmm uses numpy in the parameter prediction (v7+)
+ # which is written using Python 3
depends_on('py-numpy', when='@7:+cuda', type='build')
+ depends_on('python@3.6:', when='@7:+cuda', type='build')
- # PEXSI, ELPA and SIRIUS need MPI in CP2K
+ # PEXSI, ELPA, COSMA and SIRIUS depend on MPI
conflicts('~mpi', '+pexsi')
conflicts('~mpi', '+elpa')
conflicts('~mpi', '+sirius')
+ conflicts('~mpi', '+cosma')
conflicts('+sirius', '@:6.999') # sirius support was introduced in 7+
+ conflicts('+cosma', '@:7.999') # COSMA support was introduced in 8+
conflicts('~cuda', '+cuda_fft')
conflicts('~cuda', '+cuda_blas')
@@ -286,6 +295,12 @@ class Cp2k(MakefilePackage, CudaPackage):
elif self.spec.variants['blas'].value == 'accelerate':
cppflags += ['-D__ACCELERATE']
+ if '+cosma' in spec:
+ # add before ScaLAPACK to override the p?gemm symbols
+ cosma = spec['cosma'].libs
+ ldflags.append(cosma.search_flags)
+ libs.extend(cosma)
+
# MPI
if '+mpi' in self.spec:
cppflags.extend([
diff --git a/var/spack/repos/builtin/packages/cpio/package.py b/var/spack/repos/builtin/packages/cpio/package.py
index ae6b429ccc..2381a82499 100644
--- a/var/spack/repos/builtin/packages/cpio/package.py
+++ b/var/spack/repos/builtin/packages/cpio/package.py
@@ -16,3 +16,8 @@ class Cpio(AutotoolsPackage, GNUMirrorPackage):
version('2.13', sha256='e87470d9c984317f658567c03bfefb6b0c829ff17dbf6b0de48d71a4c8f3db88')
build_directory = 'spack-build'
+
+ def flag_handler(self, name, flags):
+ if self.spec.satisfies('%intel') and name == 'cflags':
+ flags.append('-no-gcc')
+ return (flags, None, None)
diff --git a/var/spack/repos/builtin/packages/cppgsl/package.py b/var/spack/repos/builtin/packages/cppgsl/package.py
index 4f4c68841f..ce045a7c68 100644
--- a/var/spack/repos/builtin/packages/cppgsl/package.py
+++ b/var/spack/repos/builtin/packages/cppgsl/package.py
@@ -13,7 +13,8 @@ class Cppgsl(CMakePackage):
url = "https://github.com/Microsoft/GSL/archive/v2.0.0.tar.gz"
git = "https://github.com/Microsoft/GSL.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('2.1.0', sha256='ef73814657b073e1be86c8f7353718771bf4149b482b6cb54f99e79b23ff899d')
version('2.0.0', sha256='6cce6fb16b651e62711a4f58e484931013c33979b795d1b1f7646f640cfa9c8e')
version('1.0.0', sha256='9694b04cd78e5b1a769868f19fdd9eea2002de3d4c3a81a1b769209364543c36')
diff --git a/var/spack/repos/builtin/packages/cpprestsdk/Release.patch b/var/spack/repos/builtin/packages/cpprestsdk/Release.patch
new file mode 100644
index 0000000000..e860b85f18
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cpprestsdk/Release.patch
@@ -0,0 +1,45 @@
+diff -ur spack-src/Release.org/include/pplx/pplxlinux.h spack-src/Release/include/pplx/pplxlinux.h
+--- spack-src/Release.org/include/pplx/pplxlinux.h 2020-03-12 13:52:40.161917503 +0900
++++ spack-src/Release/include/pplx/pplxlinux.h 2020-03-12 14:05:50.834896829 +0900
+@@ -240,6 +240,11 @@
+ {
+ public:
+ _PPLXIMP virtual void schedule( TaskProc_t proc, _In_ void* param);
++#if defined(__APPLE__)
++ virtual ~apple_scheduler() {}
++#else
++ virtual ~linux_scheduler() {}
++#endif
+ };
+
+ } // namespace details
+diff -ur spack-src/Release.org/libs/websocketpp/websocketpp/transport/asio/connection.hpp spack-src/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp
+--- spack-src/Release.org/libs/websocketpp/websocketpp/transport/asio/connection.hpp 2020-03-12 13:52:40.201921703 +0900
++++ spack-src/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp 2020-03-12 14:09:13.586186467 +0900
+@@ -422,7 +422,7 @@
+ m_io_service = io_service;
+
+ if (config::enable_multithreading) {
+- m_strand = lib::make_shared<boost::asio::strand>(
++ m_strand = lib::make_shared<boost::asio::io_service::strand>(
+ lib::ref(*io_service));
+
+ m_async_read_handler = m_strand->wrap(lib::bind(
+diff -ur spack-src/Release.org/src/uri/uri.cpp spack-src/Release/src/uri/uri.cpp
+--- spack-src/Release.org/src/uri/uri.cpp 2020-03-12 13:52:40.241925902 +0900
++++ spack-src/Release/src/uri/uri.cpp 2020-03-12 13:53:58.610152210 +0900
+@@ -22,12 +22,12 @@
+ // canonicalize components first
+
+ // convert scheme to lowercase
+- std::transform(m_scheme.begin(), m_scheme.end(), m_scheme.begin(), [this](utility::char_t c) {
++ std::transform(m_scheme.begin(), m_scheme.end(), m_scheme.begin(), [](utility::char_t c) {
+ return (utility::char_t)tolower(c);
+ });
+
+ // convert host to lowercase
+- std::transform(m_host.begin(), m_host.end(), m_host.begin(), [this](utility::char_t c) {
++ std::transform(m_host.begin(), m_host.end(), m_host.begin(), [](utility::char_t c) {
+ return (utility::char_t)tolower(c);
+ });
+
diff --git a/var/spack/repos/builtin/packages/cpprestsdk/package.py b/var/spack/repos/builtin/packages/cpprestsdk/package.py
index 51acc882b6..3bfbf52c29 100644
--- a/var/spack/repos/builtin/packages/cpprestsdk/package.py
+++ b/var/spack/repos/builtin/packages/cpprestsdk/package.py
@@ -17,6 +17,11 @@ class Cpprestsdk(CMakePackage):
version('2.9.1', sha256='537358760acd782f4d2ed3a85d92247b4fc423aff9c85347dc31dbb0ab9bab16')
- depends_on('boost')
+ depends_on('boost@:1.69.0')
+
+ # Ref: https://github.com/microsoft/cpprestsdk/commit/f9f518e4ad84577eb684ad8235181e4495299af4
+ # Ref: https://github.com/Microsoft/cpprestsdk/commit/6b2e0480018530b616f61d5cdc786c92ba148bb7
+ # Ref: https://github.com/microsoft/cpprestsdk/commit/70c1b14f39f5d47984fdd8a31fc357ebb5a37851
+ patch('Release.patch')
root_cmakelists_dir = 'Release'
diff --git a/var/spack/repos/builtin/packages/cryptsetup/package.py b/var/spack/repos/builtin/packages/cryptsetup/package.py
index 10519100ee..c81e024d4d 100644
--- a/var/spack/repos/builtin/packages/cryptsetup/package.py
+++ b/var/spack/repos/builtin/packages/cryptsetup/package.py
@@ -16,6 +16,9 @@ class Cryptsetup(AutotoolsPackage):
# If you're adding newer versions, check whether the patch below
# still needs to be applied.
+ version('2.3.1', sha256='92aba4d559a2cf7043faed92e0f22c5addea36bd63f8c039ba5a8f3a159fe7d2')
+ version('2.2.3', sha256='2af0ec9551ab9c870074cae9d3f68d82cab004f4095fa89db0e4413713424a46')
+ version('2.2.2', sha256='2af0ec9551ab9c870074cae9d3f68d82cab004f4095fa89db0e4413713424a46')
version('2.2.1', sha256='94e79a31ed38bdb0acd9af7ccca1605a2ac62ca850ed640202876b1ee11c1c61')
depends_on('libuuid', type=('build', 'link'))
@@ -25,17 +28,20 @@ class Cryptsetup(AutotoolsPackage):
depends_on('util-linux~libuuid', type=('build', 'link'))
depends_on('gettext', type=('build', 'link'))
+ depends_on('pkgconfig', type='build')
depends_on('autoconf', type='build')
depends_on('automake', type='build')
depends_on('libtool', type='build')
depends_on('m4', type='build')
+ depends_on('automake@:1.16.1', when='@2.2.1', type='build')
+
# Upstream includes support for discovering the location of the libintl
# library but is missing the bit in the Makefile.ac that includes it in
# the LDFLAGS. See https://gitlab.com/cryptsetup/cryptsetup/issues/479
# This *should* be unnecessary starting with release 2.2.2, see
# https://gitlab.com/cryptsetup/cryptsetup/issues/479#note_227617031
- patch('autotools-libintl.patch')
+ patch('autotools-libintl.patch', when='@:2.2.1')
def url_for_version(self, version):
url = "https://www.kernel.org/pub/linux/utils/cryptsetup/v{0}/cryptsetup-{1}.tar.xz"
diff --git a/var/spack/repos/builtin/packages/cscope/package.py b/var/spack/repos/builtin/packages/cscope/package.py
index f0cc8f9fc5..2682ffea70 100644
--- a/var/spack/repos/builtin/packages/cscope/package.py
+++ b/var/spack/repos/builtin/packages/cscope/package.py
@@ -10,8 +10,9 @@ class Cscope(AutotoolsPackage):
"""Cscope is a developer's tool for browsing source code."""
homepage = "http://cscope.sourceforge.net/"
- url = "http://downloads.sourceforge.net/project/cscope/cscope/15.8b/cscope-15.8b.tar.gz"
+ url = "https://sourceforge.net/projects/cscope/files/cscope/v15.9/cscope-15.9.tar.gz"
+ version('15.9', sha256='c5505ae075a871a9cd8d9801859b0ff1c09782075df281c72c23e72115d9f159')
version('15.8b', sha256='4889d091f05aa0845384b1e4965aa31d2b20911fb2c001b2cdcffbcb7212d3af')
depends_on('ncurses')
@@ -20,4 +21,11 @@ class Cscope(AutotoolsPackage):
depends_on('bison', type='build')
depends_on('pkgconfig', type='build')
- build_targets = ['CURSES_LIBS=-lncursesw']
+ build_targets = ['CURSES_LIBS=-lncursesw -ltinfo']
+
+ def url_for_version(self, version):
+ url = "https://sourceforge.net/projects/cscope/files/cscope/{0}{1}/cscope-{1}.tar.gz"
+ if version >= Version('15.9'):
+ return url.format('v', version)
+ else:
+ return url.format('', version)
diff --git a/var/spack/repos/builtin/packages/damageproto/package.py b/var/spack/repos/builtin/packages/damageproto/package.py
index 1b1e9f71f4..ad8f08d7de 100644
--- a/var/spack/repos/builtin/packages/damageproto/package.py
+++ b/var/spack/repos/builtin/packages/damageproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Damageproto(AutotoolsPackage):
+class Damageproto(AutotoolsPackage, XorgPackage):
"""X Damage Extension.
This package contains header files and documentation for the X Damage
extension. Library and server implementations are separate."""
homepage = "https://cgit.freedesktop.org/xorg/proto/damageproto"
- url = "https://www.x.org/releases/individual/proto/damageproto-1.2.1.tar.gz"
+ xorg_mirror_path = "proto/damageproto-1.2.1.tar.gz"
version('1.2.1', sha256='f65ccbf1de9750a527ea6e85694085b179f2d06495cbdb742b3edb2149fef303')
diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py
index d728bf4037..3789612f12 100644
--- a/var/spack/repos/builtin/packages/darshan-runtime/package.py
+++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py
@@ -18,7 +18,10 @@ class DarshanRuntime(Package):
url = "http://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz"
git = "https://xgitlab.cels.anl.gov/darshan/darshan.git"
+ maintainers = ['shanedsnyder', 'carns']
+
version('develop', branch='master')
+ version('3.1.8', sha256='3ed51c8d5d93b4a8cbb7d53d13052140a9dffe0bc1a3e1ebfc44a36a184b5c82')
version('3.1.7', sha256='9ba535df292727ac1e8025bdf2dc42942715205cad8319d925723fd88709e8d6')
version('3.1.6', sha256='21cb24e2a971c45e04476e00441b7fbea63d2afa727a5cf8b7a4a9d9004dd856')
version('3.1.0', sha256='b847047c76759054577823fbe21075cfabb478cdafad341d480274fb1cef861c')
diff --git a/var/spack/repos/builtin/packages/darshan-util/package.py b/var/spack/repos/builtin/packages/darshan-util/package.py
index 4acc4452fd..8d25fa9965 100644
--- a/var/spack/repos/builtin/packages/darshan-util/package.py
+++ b/var/spack/repos/builtin/packages/darshan-util/package.py
@@ -16,7 +16,10 @@ class DarshanUtil(Package):
url = "http://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.1.0.tar.gz"
git = "https://xgitlab.cels.anl.gov/darshan/darshan.git"
+ maintainers = ['shanedsnyder', 'carns']
+
version('develop', branch='master')
+ version('3.1.8', sha256='3ed51c8d5d93b4a8cbb7d53d13052140a9dffe0bc1a3e1ebfc44a36a184b5c82')
version('3.1.7', sha256='9ba535df292727ac1e8025bdf2dc42942715205cad8319d925723fd88709e8d6')
version('3.1.6', sha256='21cb24e2a971c45e04476e00441b7fbea63d2afa727a5cf8b7a4a9d9004dd856')
version('3.1.0', sha256='b847047c76759054577823fbe21075cfabb478cdafad341d480274fb1cef861c')
diff --git a/var/spack/repos/builtin/packages/davix/package.py b/var/spack/repos/builtin/packages/davix/package.py
index faed2f16fe..4062fb4dae 100644
--- a/var/spack/repos/builtin/packages/davix/package.py
+++ b/var/spack/repos/builtin/packages/davix/package.py
@@ -19,7 +19,18 @@ class Davix(CMakePackage):
version('0.6.9', sha256='fbd97eb5fdf82ca48770d06bf8e2805b35f23255478aa381a9d25a49eb98e348')
version('0.6.8', sha256='e1820f4cc3fc44858ae97197a3922cce2a1130ff553b080ba19e06eb8383ddf7')
+ variant('cxxstd',
+ default='11',
+ values=('11', '14', '17'),
+ multi=False,
+ description='Use the specified C++ standard when building.')
+
depends_on('pkgconfig', type='build')
depends_on('libxml2')
depends_on('libuuid')
depends_on('openssl')
+
+ def cmake_args(self):
+ cmake_args = ['-DCMAKE_CXX_STANDARD={0}'.format(
+ self.spec.variants['cxxstd'].value)]
+ return cmake_args
diff --git a/var/spack/repos/builtin/packages/dcmtk/package.py b/var/spack/repos/builtin/packages/dcmtk/package.py
index de7a4c6ef2..2bf3db66d1 100644
--- a/var/spack/repos/builtin/packages/dcmtk/package.py
+++ b/var/spack/repos/builtin/packages/dcmtk/package.py
@@ -32,7 +32,7 @@ class Dcmtk(CMakePackage):
depends_on('libxml2', type=('build', 'link'), when='+xml')
variant('iconv', default=True, description="Charset conversion support (iconv)")
- depends_on('libiconv', type=('build', 'link'))
+ depends_on('iconv', type=('build', 'link'))
variant('cxx11', default=False, description="Enable c++11 features")
variant('stl', default=True, description="Use native STL implementation")
diff --git a/var/spack/repos/builtin/packages/ddd/package.py b/var/spack/repos/builtin/packages/ddd/package.py
new file mode 100644
index 0000000000..d0edde042d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ddd/package.py
@@ -0,0 +1,75 @@
+# Copyright 2013-2020 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 Ddd(AutotoolsPackage, GNUMirrorPackage):
+ """A graphical front-end for command-line debuggers such as GDB, DBX,
+ WDB, Ladebug, JDB, XDB, the Perl debugger, the bash debugger bashdb,
+ the GNU Make debugger remake, or the Python debugger pydb."""
+
+ homepage = "https://www.gnu.org/software/ddd"
+ gnu_mirror_path = "ddd/ddd-3.3.12.tar.gz"
+
+ version('3.3.12', sha256='3ad6cd67d7f4b1d6b2d38537261564a0d26aaed077bf25c51efc1474d0e8b65c')
+
+ variant('shared', default=True, description='Build shared libraries')
+ variant('static', default=False, description='Build static libraries')
+
+ depends_on('gdb@4.16:')
+ depends_on('lesstif@0.89:')
+
+ # Needed for OSX 10.9 DP6 build failure:
+ # https://savannah.gnu.org/patch/?8178
+ patch('https://savannah.gnu.org/patch/download.php?file_id=29114',
+ sha256='aaacae79ce27446ead3483123abef0f8222ebc13fd61627bfadad96016248af6',
+ working_dir='ddd')
+
+ # https://savannah.gnu.org/bugs/?41997
+ patch('https://savannah.gnu.org/patch/download.php?file_id=31132',
+ sha256='f3683f23c4b4ff89ba701660031d4b5ef27594076f6ef68814903ff3141f6714')
+
+ # Patch to fix compilation with Xcode 9
+ # https://savannah.gnu.org/bugs/?52175
+ patch('https://raw.githubusercontent.com/macports/macports-ports/a71fa9f4/devel/ddd/files/patch-unknown-type-name-a_class.diff',
+ sha256='c187a024825144f186f0cf9cd175f3e972bb84590e62079793d0182cb15ca183',
+ working_dir='ddd')
+
+ def configure_args(self):
+ spec = self.spec
+
+ args = [
+ '--disable-debug',
+ '--disable-dependency-tracking',
+ '--enable-builtin-app-defaults',
+ '--enable-builtin-manual',
+ '--enable-shared' if '+shared' in spec else '--disable-shared',
+ '--enable-static' if '+static' in spec else '--disable-static',
+ ]
+
+ return args
+
+ # From MacPorts: make will build the executable "ddd" and the X
+ # resource file "Ddd" in the same directory. As HFS+ is case-
+ # insensitive by default this will loosely FAIL. Mitigate this by
+ # building/installing 'dddexe' on Darwin and fixing up post install.
+ def build(self, spec, prefix):
+ make('EXEEXT={0}'.
+ format('exe' if spec.satisfies('platform=darwin') else ''))
+
+ # DDD won't install in parallel
+ def install(self, spec, prefix):
+ make('install',
+ 'EXEEXT={0}'.
+ format('exe' if spec.satisfies('platform=darwin') else ''),
+ parallel=False)
+
+ @run_after('install')
+ def _rename_exe_on_darwin(self):
+ if self.spec.satisfies('platform=darwin'):
+ with working_dir(self.prefix.bin):
+ os.rename('dddexe', 'ddd')
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index 797931052e..d3a58cb835 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -5,6 +5,8 @@
from spack import *
+import os
+
class Dealii(CMakePackage, CudaPackage):
"""C++ software library providing well-documented tools to build finite
@@ -151,6 +153,7 @@ class Dealii(CMakePackage, CudaPackage):
depends_on('slepc@:3.6.3', when='@:8.4.1+slepc+petsc+mpi')
depends_on('slepc~arpack', when='+slepc+petsc+mpi+int64')
depends_on('sundials@:3~pthread', when='@9.0:+sundials')
+ depends_on('trilinos gotype=int', when='+trilinos')
# Both Trilinos and SymEngine bundle the Teuchos RCP library.
# This leads to conflicts between macros defined in the included
# headers when they are not compiled in the same mode.
@@ -458,6 +461,13 @@ class Dealii(CMakePackage, CudaPackage):
' '.join(cxx_flags))
])
+ # Add flags for machine vectorization, used when tutorials
+ # and user code is built.
+ # See https://github.com/dealii/dealii/issues/9164
+ options.extend([
+ '-DDEAL_II_CXX_FLAGS=%s' % os.environ['SPACK_TARGET_ARGS']
+ ])
+
return options
def setup_run_environment(self, env):
diff --git a/var/spack/repos/builtin/packages/denovogear/newmat6.cpp.patch b/var/spack/repos/builtin/packages/denovogear/newmat6.cpp.patch
new file mode 100644
index 0000000000..36d2e240cd
--- /dev/null
+++ b/var/spack/repos/builtin/packages/denovogear/newmat6.cpp.patch
@@ -0,0 +1,11 @@
+--- spack-src/src/contrib/newmat/newmat6.cpp.org 2020-03-19 14:06:13.679032667 +0900
++++ spack-src/src/contrib/newmat/newmat6.cpp 2020-03-19 14:07:34.267492838 +0900
+@@ -428,7 +428,7 @@
+ {
+ if (&gm == this) { REPORT tag_val = -1; return; }
+ REPORT
+- if (indx > 0) { delete [] indx; indx = 0; }
++ if (indx != NULL) { delete [] indx; indx = 0; }
+ ((CroutMatrix&)gm).get_aux(*this);
+ Eq(gm);
+ }
diff --git a/var/spack/repos/builtin/packages/denovogear/package.py b/var/spack/repos/builtin/packages/denovogear/package.py
index 8f475492c1..bc683febef 100644
--- a/var/spack/repos/builtin/packages/denovogear/package.py
+++ b/var/spack/repos/builtin/packages/denovogear/package.py
@@ -25,3 +25,5 @@ class Denovogear(CMakePackage):
depends_on('zlib', type=('link'))
patch('stream-open.patch', when='@:1.1.1')
+ # fix: ordered comparison between pointer and zero.
+ patch('newmat6.cpp.patch')
diff --git a/var/spack/repos/builtin/packages/dhpmm-f/package.py b/var/spack/repos/builtin/packages/dhpmm-f/package.py
new file mode 100644
index 0000000000..5e2bfa3154
--- /dev/null
+++ b/var/spack/repos/builtin/packages/dhpmm-f/package.py
@@ -0,0 +1,51 @@
+# Copyright 2013-2020 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 DhpmmF(MakefilePackage):
+ """DHPMM_P:High-precision Matrix Multiplication with Faithful Rounding"""
+
+ homepage = "http://www.math.twcu.ac.jp/ogita/post-k/"
+ url = "http://www.math.twcu.ac.jp/ogita/post-k/software/DHPMM_F/DHPMM_F_alpha.tar.gz"
+
+ version('alpha', sha256='35321ecbc749f2682775ffcd27833afc8c8eb4fa7753ce769727c9d1fe097848')
+
+ depends_on('blas', type='link')
+ depends_on('lapack', type='link')
+
+ def patch(self):
+ math_libs = self.spec['lapack'].libs + self.spec['blas'].libs
+ makefile = FileFilter('Makefile')
+ if self.spec.satisfies('%gcc'):
+ makefile.filter(r'^MKL\s+=\s1', 'MKL=0')
+ makefile.filter(r'^CC\s+=\sgcc',
+ 'CC={0}'.format(spack_cc))
+ makefile.filter(r'^CXX\s+=\sg\+\+',
+ 'CXX={0}'.format(spack_cxx))
+ makefile.filter(r'^BLASLIBS\s+=\s-llapack\s-lblas',
+ 'BLASLIBS={0}'.format(math_libs.ld_flags))
+ elif self.spec.satisfies('%fj'):
+ makefile.filter(r'^#ENV\s+=\sFX100', 'ENV=FX100')
+ makefile.filter(r'^ENV\s+=\sGCC', '#ENV=GCC')
+ makefile.filter(r'^MKL\s+=\s1', 'MKL=0')
+ makefile.filter(r'^CC\s+=\sfccpx',
+ 'CC={0}'.format(spack_cc))
+ makefile.filter(r'^CXX\s+=\sFCCpx',
+ 'CXX={0}'.format(spack_cxx))
+ makefile.filter(r'^BLASLIBS\s+=\s-llapack\s-lblas',
+ 'BLASLIBS={0}'.format(math_libs.ld_flags))
+ elif self.spec.satisfies('%intel'):
+ makefile.filter(r'^ENV\s+=\sGCC', '#ENV=GCC')
+ makefile.filter(r'^ENV\s+=\sICC', 'ENV=ICC')
+ makefile.filter(r'^CC\s+=\sicc',
+ 'CC={0}'.format(spack_cc))
+ makefile.filter(r'^CXX\s+=\sicc',
+ 'CXX={0}'.format(spack_cxx))
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install('test/source4_SpMV', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/diffutils/package.py b/var/spack/repos/builtin/packages/diffutils/package.py
index c8f2dca83f..d41086113a 100644
--- a/var/spack/repos/builtin/packages/diffutils/package.py
+++ b/var/spack/repos/builtin/packages/diffutils/package.py
@@ -18,7 +18,7 @@ class Diffutils(AutotoolsPackage, GNUMirrorPackage):
build_directory = 'spack-build'
- depends_on('libiconv')
+ depends_on('iconv')
def setup_build_environment(self, env):
if self.spec.satisfies('%fj'):
diff --git a/var/spack/repos/builtin/packages/dihydrogen/package.py b/var/spack/repos/builtin/packages/dihydrogen/package.py
new file mode 100644
index 0000000000..6de0cfb516
--- /dev/null
+++ b/var/spack/repos/builtin/packages/dihydrogen/package.py
@@ -0,0 +1,111 @@
+# Copyright 2013-2020 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 Dihydrogen(CMakePackage, CudaPackage):
+ """DiHydrogen is the second version of the Hydrogen fork of the
+ well-known distributed linear algebra library,
+ Elemental. DiHydrogen aims to be a basic distributed
+ multilinear algebra interface with a particular emphasis on the
+ needs of the distributed machine learning effort, LBANN."""
+
+ homepage = "https://github.com/LLNL/DiHydrogen.git"
+ git = "https://github.com/LLNL/DiHydrogen.git"
+
+ maintainers = ['bvanessen']
+
+ version('master', branch='master')
+
+ variant('al', default=True,
+ description='Builds with Aluminum communication library')
+ variant('developer', default=False,
+ description='Enable extra warnings and force tests to be enabled.')
+ variant('half', default=False,
+ description='Enable FP16 support on the CPU.')
+ variant('legacy', default=False,
+ description='Enable the legacy DistConv code branch.')
+ variant('nvshmem', default=False,
+ description='Builds with support for NVSHMEM')
+ variant('openmp', default=False,
+ description='Enable CPU acceleration with OpenMP threads.')
+ variant('rocm', default=False,
+ description='Enable ROCm/HIP language features.')
+ variant('shared', default=True,
+ description='Enables the build of shared libraries')
+
+ # Override the default set of CUDA architectures with the relevant
+ # subset from lib/spack/spack/build_systems/cuda.py
+ cuda_arch_values = [
+ '60', '61', '62',
+ '70', '72', '75',
+ ]
+ variant('cuda_arch',
+ description='CUDA architecture',
+ values=spack.variant.auto_or_any_combination_of(*cuda_arch_values))
+
+ depends_on('mpi')
+ depends_on('catch2', type='test')
+
+ depends_on('aluminum', when='+al ~cuda')
+ depends_on('aluminum +gpu +nccl +mpi_cuda', when='+al +cuda')
+
+ depends_on('cuda', when=('+cuda' or '+legacy'))
+ depends_on('cudnn', when=('+cuda' or '+legacy'))
+ depends_on('cub', when=('+cuda' or '+legacy'))
+
+ # Legacy builds require cuda
+ conflicts('~cuda', when='+legacy')
+
+ depends_on('half', when='+half')
+
+ generator = 'Ninja'
+ depends_on('ninja', type='build')
+ depends_on('cmake@3.14.0:', type='build')
+
+ illegal_cuda_arch_values = [
+ '10', '11', '12', '13',
+ '20', '21',
+ '30', '32', '35', '37',
+ '50', '52', '53',
+ ]
+ for value in illegal_cuda_arch_values:
+ conflicts('cuda_arch=' + value)
+
+ @property
+ def libs(self):
+ shared = True if '+shared' in self.spec else False
+ return find_libraries(
+ 'libH2Core', root=self.prefix, shared=shared, recursive=True
+ )
+
+ def cmake_args(self):
+ spec = self.spec
+
+ args = [
+ '-DCMAKE_INSTALL_MESSAGE:STRING=LAZY',
+ '-DBUILD_SHARED_LIBS:BOOL=%s' % ('+shared' in spec),
+ '-DH2_ENABLE_CUDA=%s' % ('+cuda' in spec),
+ '-DH2_ENABLE_DISTCONV_LEGACY=%s' % ('+legacy' in spec),
+ '-DH2_ENABLE_OPENMP=%s' % ('+openmp' in spec),
+ '-DH2_ENABLE_FP16=%s' % ('+half' in spec),
+ '-DH2_ENABLE_HIP_ROCM=%s' % ('+rocm' in spec),
+ '-DH2_DEVELOPER_BUILD=%s' % ('+developer' in spec),
+ ]
+
+ if '+cuda' in spec:
+ cuda_arch = spec.variants['cuda_arch'].value
+ if len(cuda_arch) == 1 and cuda_arch[0] == 'auto':
+ args.append('-DCMAKE_CUDA_FLAGS=-arch=sm_60')
+ else:
+ cuda_arch = [x for x in spec.variants['cuda_arch'].value
+ if x != 'auto']
+ if cuda_arch:
+ args.append('-DCMAKE_CUDA_FLAGS={0}'.format(
+ ' '.join(self.cuda_flags(cuda_arch))
+ ))
+
+ return args
diff --git a/var/spack/repos/builtin/packages/dmxproto/package.py b/var/spack/repos/builtin/packages/dmxproto/package.py
index 4c18d6de98..31959981a0 100644
--- a/var/spack/repos/builtin/packages/dmxproto/package.py
+++ b/var/spack/repos/builtin/packages/dmxproto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Dmxproto(AutotoolsPackage):
+class Dmxproto(AutotoolsPackage, XorgPackage):
"""Distributed Multihead X (DMX) Extension.
This extension defines a protocol for clients to access a front-end proxy
@@ -14,7 +14,7 @@ class Dmxproto(AutotoolsPackage):
display."""
homepage = "http://dmx.sourceforge.net/"
- url = "https://www.x.org/archive/individual/proto/dmxproto-2.3.1.tar.gz"
+ xorg_mirror_path = "proto/dmxproto-2.3.1.tar.gz"
version('2.3.1', sha256='3262bbf5902211a3ce88f5c6ab4528145ff84f69c52fd386ae0312bc45fb8a40')
diff --git a/var/spack/repos/builtin/packages/doxygen/package.py b/var/spack/repos/builtin/packages/doxygen/package.py
index aa99ca73ee..c43863543d 100644
--- a/var/spack/repos/builtin/packages/doxygen/package.py
+++ b/var/spack/repos/builtin/packages/doxygen/package.py
@@ -17,6 +17,8 @@ class Doxygen(CMakePackage):
git = "https://github.com/doxygen/doxygen.git"
# Doxygen versions on GitHub
+ version('1.8.17', commit='b5fa3cd1c6e6240e20d3b80a70e3f04040b32021')
+ version('1.8.16', commit='cfd73d5c4d1a66c620a3b7c08b72a3f3c3f94255')
version('1.8.15', commit='dc89ac01407c24142698c1374610f2cee1fbf200')
version('1.8.14', commit='2f4139de014bf03898320a45fe52c92872c1e0f4')
version('1.8.12', commit='4951df8d0d0acf843b4147136f945504b96536e7')
@@ -27,9 +29,12 @@ class Doxygen(CMakePackage):
variant('graphviz', default=False,
description='Build with dot command support from Graphviz.')
+ variant('mscgen', default=False,
+ description='Build with support for code graphs from mscgen.')
+
depends_on("cmake@2.8.12:", type='build')
depends_on("python", type='build') # 2 or 3 OK; used in CMake build
- depends_on("libiconv")
+ depends_on("iconv")
depends_on("flex", type='build')
# code.l just checks subminor version <=2.5.4 or >=2.5.33
# but does not recognize 2.6.x as newer...could be patched if needed
@@ -38,6 +43,7 @@ class Doxygen(CMakePackage):
# optional dependencies
depends_on("graphviz", when="+graphviz", type='run')
+ depends_on("mscgen", when="+mscgen", type='run')
# Support C++14's std::shared_ptr. For details about this patch, see
# https://github.com/Sleepyowl/doxygen/commit/6c380ba91ae41c6d5c409a5163119318932ae2a3?diff=unified
@@ -45,6 +51,8 @@ class Doxygen(CMakePackage):
patch('shared_ptr.patch', when='@1.8.14')
def patch(self):
+ if self.spec['iconv'].name == 'libc':
+ return
# On Linux systems, iconv is provided by libc. Since CMake finds the
# symbol in libc, it does not look for libiconv, which leads to linker
# errors. This makes sure that CMake always looks for the external
diff --git a/var/spack/repos/builtin/packages/dpdk/package.py b/var/spack/repos/builtin/packages/dpdk/package.py
new file mode 100644
index 0000000000..c25b32c8d7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/dpdk/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 Dpdk(MakefilePackage):
+ """DPDK is a set of libraries and drivers for fast packet processing.
+ It supports many processor architectures and both FreeBSD and Linux."""
+
+ homepage = "https://github.com/DPDK/dpdk"
+ url = "https://github.com/DPDK/dpdk/archive/v19.11.tar.gz"
+
+ version('20.02', sha256='29e56ea8e47e30110ecb881fa5a37125a865dd2d45b61f68e93e334caaab16b7')
+ version('19.11', sha256='ce1befb20a5e5c5399b326a39cfa23314a5229c0ced2553f53b09b1ae630706b')
+ version('19.08', sha256='1ceff1a6f4f8d5f6f62c1682097249227ac5225ccd9638e0af09f5411c681038')
+ version('19.05', sha256='5fea95cb726e6adaa506dab330e79563ccd4dacf03f126c826aabdced605d32b')
+ version('19.02', sha256='04885d32c86fff5aefcfffdb8257fed405233602dbcd22f8298be13c2e285a50')
+
+ depends_on('numactl')
+
+ def build(self, spec, prefix):
+ make('defconfig')
+ make()
+
+ def install(self, spec, prefix):
+ install_tree('.', prefix)
diff --git a/var/spack/repos/builtin/packages/draco/package.py b/var/spack/repos/builtin/packages/draco/package.py
index de1e3696b5..6299a9c06c 100644
--- a/var/spack/repos/builtin/packages/draco/package.py
+++ b/var/spack/repos/builtin/packages/draco/package.py
@@ -18,6 +18,8 @@ class Draco(CMakePackage):
maintainers = ['KineticTheory']
version('develop', branch='develop')
+ version('7.6.0', sha256='c2c6b329620d7bcb0f2fc14371f105dfb80a84e7c5adbb34620777034b15c7c9')
+ version('7.5.0', sha256='0bb12b5f5ff60ba3087310c07da42e8d4f481ec4259daaa24ec240815a2e9dec')
version('7.4.0', sha256='61da2c3feace0e92c5410c9e9e613708fdf8954b1367cdc62c415329b0ddab6e')
version('7.3.0', sha256='dc47ef6c1e04769ea177a10fc6ddf506f3e1e8d36eb5d49f4bc38cc509e24f10')
version('7.2.0', sha256='ac4eac03703d4b7344fa2390a54140533c5e1f6ea0d59ef1f1d525c434ebe639')
diff --git a/var/spack/repos/builtin/packages/dri2proto/package.py b/var/spack/repos/builtin/packages/dri2proto/package.py
index fb535220e0..66b73a7bbc 100644
--- a/var/spack/repos/builtin/packages/dri2proto/package.py
+++ b/var/spack/repos/builtin/packages/dri2proto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Dri2proto(AutotoolsPackage):
+class Dri2proto(AutotoolsPackage, XorgPackage):
"""Direct Rendering Infrastructure 2 Extension.
This extension defines a protocol to securely allow user applications to
@@ -14,7 +14,7 @@ class Dri2proto(AutotoolsPackage):
X server."""
homepage = "https://cgit.freedesktop.org/xorg/proto/dri2proto/"
- url = "https://www.x.org/releases/individual/proto/dri2proto-2.8.tar.gz"
+ xorg_mirror_path = "proto/dri2proto-2.8.tar.gz"
version('2.8', sha256='7e65b031eaa6ebe23c75583d4abd993ded7add8009b4200a4db7aa10728b0f61')
diff --git a/var/spack/repos/builtin/packages/dri3proto/package.py b/var/spack/repos/builtin/packages/dri3proto/package.py
index c3955f41be..e66ce72403 100644
--- a/var/spack/repos/builtin/packages/dri3proto/package.py
+++ b/var/spack/repos/builtin/packages/dri3proto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Dri3proto(AutotoolsPackage):
+class Dri3proto(AutotoolsPackage, XorgPackage):
"""Direct Rendering Infrastructure 3 Extension.
This extension defines a protocol to securely allow user applications to
@@ -14,7 +14,7 @@ class Dri3proto(AutotoolsPackage):
X server."""
homepage = "https://cgit.freedesktop.org/xorg/proto/dri3proto/"
- url = "https://www.x.org/releases/individual/proto/dri3proto-1.0.tar.gz"
+ xorg_mirror_path = "proto/dri3proto-1.0.tar.gz"
version('1.0', sha256='e1a0dad3009ecde52c0bf44187df5f95cc9a7cc0e76dfc2f2bbf3e909fe03fa9')
diff --git a/var/spack/repos/builtin/packages/eagle/package.py b/var/spack/repos/builtin/packages/eagle/package.py
new file mode 100644
index 0000000000..81e0be6f90
--- /dev/null
+++ b/var/spack/repos/builtin/packages/eagle/package.py
@@ -0,0 +1,46 @@
+# Copyright 2013-2020 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 Eagle(MakefilePackage):
+ """EAGLE: Explicit Alternative Genome Likelihood Evaluator"""
+
+ homepage = "https://github.com/tony-kuo/eagle"
+ url = "https://github.com/tony-kuo/eagle/archive/v1.1.2.tar.gz"
+
+ version('1.1.2', sha256='afe967560d1f8fdbd0caf4b93b5f2a86830e9e4d399fee4a526140431343045e')
+
+ depends_on('curl')
+ depends_on('zlib')
+ depends_on('lzma')
+ depends_on('htslib')
+
+ def edit(self, spec, prefix):
+ # remove unused gcc flags
+ filter_file('$(LFLAGS) $(INCLUDES)', '', 'Makefile', string=True)
+
+ # drop static link to htslib
+ filter_file('$(LIBS)', '', 'Makefile', string=True)
+
+ # don't try to build htslib.
+ filter_file('all: UTIL HTSLIB', 'all: UTIL',
+ 'Makefile', string=True)
+
+ # add htslib link to ldflags
+ filter_file('-lcurl', '-lcurl -lhts', 'Makefile', string=True)
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+
+ bins = [
+ 'eagle',
+ 'eagle-rc',
+ 'eagle-nm',
+ ]
+
+ for b in bins:
+ install(b, prefix.bin)
diff --git a/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py b/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py
index 11054b409c..13100d89a8 100644
--- a/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py
+++ b/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py
@@ -19,6 +19,9 @@ class EclipseGcjParser(Package):
maintainers = ['citibeth']
+ # The server is sometimes a bit slow to respond
+ fetch_options = {'timeout': 60}
+
version('4.8', sha256='98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781', expand=False)
phases = ('build', 'install')
diff --git a/var/spack/repos/builtin/packages/ecp-proxy-apps/package.py b/var/spack/repos/builtin/packages/ecp-proxy-apps/package.py
index c3f79c33bb..d11e8e2a83 100644
--- a/var/spack/repos/builtin/packages/ecp-proxy-apps/package.py
+++ b/var/spack/repos/builtin/packages/ecp-proxy-apps/package.py
@@ -4,34 +4,37 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-import os
from spack import *
-class EcpProxyApps(Package):
+class EcpProxyApps(BundlePackage):
"""This is a collection of packages that represents the official suite of
DOE/ECP proxy applications. This is a Spack bundle package that
installs the ECP proxy application suite.
"""
tags = ['proxy-app', 'ecp-proxy-app']
- maintainers = ['bhatele']
+ maintainers = ['rspavel']
homepage = "https://proxyapps.exascaleproject.org"
- # Dummy url
- url = 'https://github.com/exascaleproject/proxy-apps/archive/v1.0.tar.gz'
- version('2.1', sha256='604da008fc4ef3bdbc25505088d610333249e3e9745eac7dbfd05b91e33e218d')
- version('2.0', sha256='5f3cb3a772224e738c1dab42fb34d40f6b313af51ab1c575fb334e573e41e09a')
- version('1.1', sha256='8537e03588c0f46bebf5b7f07146c79812f2ebfb77d29e184baa4dd5f4603ee3')
- version('1.0', sha256='13d9795494dabdb4c724d2c0f322c2149b2507d2fd386ced12b54292b7ecf595')
+ version('3.0')
+ version('2.1')
+ version('2.0')
+ version('1.1')
+ version('1.0')
variant('candle', default=False,
description='Also build CANDLE Benchmarks')
+ # Added with release 3.0
+ depends_on('miniamr@1.4.4', when='@3.0:')
+ depends_on('xsbench@19', when='@3.0:')
+ depends_on('laghos@3.0', when='@3.0:')
+
# Added with release 2.1
depends_on('amg@1.2', when='@2.1:')
- depends_on('miniamr@1.4.3', when='@2.1:')
+ depends_on('miniamr@1.4.3', when='@2.1')
# Added with release 2.0
depends_on('ember@1.0.0', when='@2.0:')
@@ -40,15 +43,15 @@ class EcpProxyApps(Package):
depends_on('picsarlite@0.1', when='@2.0:')
depends_on('thornado-mini@1.0', when='@2.0:')
- depends_on('candle-benchmarks@0.1', when='+candle @2.0:')
- depends_on('laghos@2.0', when='@2.0:')
+ depends_on('candle-benchmarks@0.1', when='+candle @2.0:2.1')
+ depends_on('laghos@2.0', when='@2.0:2.1')
depends_on('macsio@1.1', when='@2.0:')
depends_on('sw4lite@1.1', when='@2.0:')
- depends_on('xsbench@18', when='@2.0:')
+ depends_on('xsbench@18', when='@2.0:2.1')
# Dependencies for version 2.0
depends_on('amg@1.1', when='@2.0')
- depends_on('miniamr@1.4.1', when='@2.0')
+ depends_on('miniamr@1.4.1', when='@2.0:2.1')
# Added with release 1.1
depends_on('examinimd@1.0', when='@1.1:')
@@ -71,12 +74,3 @@ class EcpProxyApps(Package):
# Removed after release 1.0
depends_on('comd@1.1', when='@1.0')
-
- # Dummy install for now, will be removed when metapackage is available
- def install(self, spec, prefix):
- with open(os.path.join(spec.prefix, 'package-list.txt'), 'w') as out:
- for dep in spec.dependencies(deptype='build'):
- out.write("%s\n" % dep.format(
- format_string='${PACKAGE} ${VERSION}'))
- os.symlink(dep.prefix, os.path.join(spec.prefix, dep.name))
- out.close()
diff --git a/var/spack/repos/builtin/packages/editres/package.py b/var/spack/repos/builtin/packages/editres/package.py
index 0aa661a682..90dcc1d49a 100644
--- a/var/spack/repos/builtin/packages/editres/package.py
+++ b/var/spack/repos/builtin/packages/editres/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Editres(AutotoolsPackage):
+class Editres(AutotoolsPackage, XorgPackage):
"""Dynamic resource editor for X Toolkit applications."""
homepage = "http://cgit.freedesktop.org/xorg/app/editres"
- url = "https://www.x.org/archive/individual/app/editres-1.0.6.tar.gz"
+ xorg_mirror_path = "app/editres-1.0.6.tar.gz"
version('1.0.6', sha256='85f4664ca582effb01ee972d006124569b757b9a08ae6608c3f45fc36b3b7b1a')
diff --git a/var/spack/repos/builtin/packages/eigen/find-ptscotch.patch b/var/spack/repos/builtin/packages/eigen/find-ptscotch.patch
deleted file mode 100644
index 4f6e286b72..0000000000
--- a/var/spack/repos/builtin/packages/eigen/find-ptscotch.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Version 3.3.4 contained a bug that prevented it from finding scotch~mpi.
-
-diff --git a/tmp/FindPTSCOTCH.cmake b/cmake/FindPTSCOTCH.cmake
-index 1396d05..23451b1 100644
---- a/tmp/FindPTSCOTCH.cmake
-+++ b/cmake/FindPTSCOTCH.cmake
-@@ -167,11 +167,11 @@ endif()
-
- # If found, add path to cmake variable
- # ------------------------------------
-+unset(PTSCOTCH_INCLUDE_DIRS)
- foreach(ptscotch_hdr ${PTSCOTCH_hdrs_to_find})
- if (PTSCOTCH_${ptscotch_hdr}_DIRS)
- list(APPEND PTSCOTCH_INCLUDE_DIRS "${PTSCOTCH_${ptscotch_hdr}_DIRS}")
- else ()
-- set(PTSCOTCH_INCLUDE_DIRS "PTSCOTCH_INCLUDE_DIRS-NOTFOUND")
- if (NOT PTSCOTCH_FIND_QUIETLY)
- message(STATUS "Looking for ptscotch -- ${ptscotch_hdr} not found")
- endif()
-@@ -255,7 +255,6 @@ foreach(ptscotch_lib ${PTSCOTCH_libs_to_find})
- list(APPEND PTSCOTCH_LIBRARIES "${PTSCOTCH_${ptscotch_lib}_LIBRARY}")
- list(APPEND PTSCOTCH_LIBRARY_DIRS "${${ptscotch_lib}_lib_path}")
- else ()
-- list(APPEND PTSCOTCH_LIBRARIES "${PTSCOTCH_${ptscotch_lib}_LIBRARY}")
- if (NOT PTSCOTCH_FIND_QUIETLY)
- message(STATUS "Looking for ptscotch -- lib ${ptscotch_lib} not found")
- endif()
diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py
index 9b01807bad..283bd65165 100644
--- a/var/spack/repos/builtin/packages/eigen/package.py
+++ b/var/spack/repos/builtin/packages/eigen/package.py
@@ -3,8 +3,6 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-from spack import *
-
class Eigen(CMakePackage):
"""Eigen is a C++ template library for linear algebra matrices,
@@ -12,41 +10,32 @@ class Eigen(CMakePackage):
"""
homepage = 'http://eigen.tuxfamily.org/'
- url = 'https://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2'
-
- version('3.3.7', sha256='9f13cf90dedbe3e52a19f43000d71fdf72e986beb9a5436dddcd61ff9d77a3ce')
- version('3.3.5', sha256='7352bff3ea299e4c7d7fbe31c504f8eb9149d7e685dec5a12fbaa26379f603e2')
- version('3.3.4', sha256='dd254beb0bafc695d0f62ae1a222ff85b52dbaa3a16f76e781dce22d0d20a4a6')
- version('3.3.3', sha256='a4143fc45e4454b4b98fcea3516b3a79b8cdb3bc7fadf996d088c6a0d805fea1')
- version('3.3.1', sha256='a0b4cebaabd8f371d1b364f9723585fbcc7c9640ca60273b99835e6cf115f056')
- version('3.2.10', sha256='760e6656426fde71cc48586c971390816f456d30f0b5d7d4ad5274d8d2cb0a6d')
- version('3.2.9', sha256='4d1e036ec1ed4f4805d5c6752b76072d67538889f4003fadf2f6e00a825845ff')
- version('3.2.8', sha256='722a63d672b70f39c271c5e2a4a43ba14d12015674331790414fcb167c357e55')
- version('3.2.7', sha256='e58e1a11b23cf2754e32b3c5990f318a8461a3613c7acbf6035870daa45c2f3e')
-
- variant('metis', default=False,
- description='Enables metis permutations in sparse algebra')
- variant('scotch', default=False,
- description='Enables scotch/pastix sparse factorization methods')
- variant('fftw', default=False,
- description='Enables FFTW backend for the FFT plugin')
- variant('suitesparse', default=False,
- description='Enables SuiteSparse sparse factorization methods')
- variant('mpfr', default=False,
- description='Enables the multi-precisions floating-point plugin')
+ url = 'https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz'
+
+ version('3.3.7', sha256='d56fbad95abf993f8af608484729e3d87ef611dd85b3380a8bad1d5cbc373a57')
+ version('3.3.6', sha256='e7cd8c94d6516d1ada9893ccc7c9a400fcee99927c902f15adba940787104dba')
+ version('3.3.5', sha256='383407ab3d0c268074e97a2cbba84ac197fd24532f014aa2adc522355c1aa2d0')
+ version('3.3.4', sha256='c5ca6e3442fb48ae75159ca7568854d9ba737bc351460f27ee91b6f3f9fd1f3d')
+ version('3.3.3', sha256='fd72694390bd8e81586205717d2cf823e718f584b779a155db747d1e68481a2e')
+ version('3.3.2', sha256='8d7611247fba1236da4dee7a64607017b6fb9ca5e3f0dc44d480e5d33d5663a5')
+ version('3.3.1', sha256='50dd21a8997fce0857b27a126811ae8ee7619984ab5425ecf33510cec649e642')
+ version('3.3.0', sha256='de82e01f97e1a95f121bd3ace87aa1237818353c14e38f630a65f5ba2c92f0e1')
+ version('3.2.10', sha256='0920cb60ec38de5fb509650014eff7cc6d26a097c7b38c7db4b1aa5df5c85042')
+ version('3.2.9', sha256='f683b20259ad72c3d384c00278166dd2a42d99b78dcd589ed4a6ca74bbb4ca07')
+ version('3.2.8', sha256='64c54781cfe9eefef2792003ab04b271d4b2ec32eda6e9cdf120d7aad4ebb282')
+ version('3.2.7', sha256='0ea9df884873275bf39c2965d486fa2d112f3a64b97b60b45b8bc4bb034a36c1')
+ version('3.2.6', sha256='e097b8dcc5ad30d40af4ad72d7052e3f78639469baf83cffaadc045459cda21f')
+ version('3.2.5', sha256='8068bd528a2ff3885eb55225c27237cf5cda834355599f05c2c85345db8338b4')
+
+ # From http://eigen.tuxfamily.org/index.php?title=Main_Page#Requirements
+ # "Eigen doesn't have any dependencies other than the C++ standard
+ # library."
variant('build_type', default='RelWithDebInfo',
description='The build type to build',
values=('Debug', 'Release', 'RelWithDebInfo'))
- # TODO : dependency on googlehash, superlu, adolc missing
- depends_on('metis@5:', when='+metis')
- depends_on('scotch', when='+scotch')
- depends_on('fftw', when='+fftw')
- depends_on('suite-sparse', when='+suitesparse')
- depends_on('mpfr@2.3.0:', when='+mpfr')
- depends_on('gmp', when='+mpfr')
-
- patch('find-ptscotch.patch', when='@3.3.4')
+ # TODO: latex and doxygen needed to produce docs with make doc
+ # TODO: Other dependencies might be needed to test this package
def setup_run_environment(self, env):
env.prepend_path('CPATH', self.prefix.include.eigen3)
diff --git a/var/spack/repos/builtin/packages/elasticsearch/package.py b/var/spack/repos/builtin/packages/elasticsearch/package.py
index 23d4146de5..e543b3d875 100644
--- a/var/spack/repos/builtin/packages/elasticsearch/package.py
+++ b/var/spack/repos/builtin/packages/elasticsearch/package.py
@@ -19,7 +19,7 @@ class Elasticsearch(Package):
version('6.3.0', sha256='0464127140820d82b24bd2830232131ea85bcd49267a8bc7365e4fa391dee2a3')
version('6.2.4', sha256='91e6f1ea1e1dd39011e7a703d2751ca46ee374665b08b0bfe17e0c0c27000e8e')
- depends_on('jdk', type='run')
+ depends_on('java', type='run')
def install(self, spec, prefix):
dirs = [
diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py
index 07d852f254..e32c68c60d 100644
--- a/var/spack/repos/builtin/packages/elfutils/package.py
+++ b/var/spack/repos/builtin/packages/elfutils/package.py
@@ -8,7 +8,7 @@ import glob
import os.path
-class Elfutils(AutotoolsPackage):
+class Elfutils(AutotoolsPackage, SourcewarePackage):
"""elfutils is a collection of various binary tools such as
eu-objdump, eu-readelf, and other utilities that allow you to
inspect and manipulate ELF files. Refer to Table 5.Tools Included
@@ -17,7 +17,7 @@ class Elfutils(AutotoolsPackage):
version of elfutils."""
homepage = "https://fedorahosted.org/elfutils/"
- url = "https://sourceware.org/elfutils/ftp/0.178/elfutils-0.178.tar.bz2"
+ sourceware_mirror_path = "elfutils/0.178/elfutils-0.178.tar.bz2"
list_url = "https://sourceware.org/elfutils/ftp"
list_depth = 1
diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py
index 14670da0ae..cb6699cf3a 100644
--- a/var/spack/repos/builtin/packages/environment-modules/package.py
+++ b/var/spack/repos/builtin/packages/environment-modules/package.py
@@ -12,10 +12,11 @@ class EnvironmentModules(Package):
"""
homepage = 'https://cea-hpc.github.io/modules/'
- url = 'https://github.com/cea-hpc/modules/releases/download/v4.4.1/modules-4.4.1.tar.gz'
+ url = 'https://github.com/cea-hpc/modules/releases/download/v4.5.0/modules-4.5.0.tar.gz'
maintainers = ['xdelaruelle']
+ version('4.5.0', sha256='5f46336f612553af5553d99347f387f733de0aaa0d80d4572e67615289382ec8')
version('4.4.1', sha256='3c20cfb2ff8a4d74ac6d566e7b5fa9dd220d96d17e6d8a4ae29b1ec0107ee407')
version('4.4.0', sha256='4dd55ad6cc684905e891ad1ba9e3c542e79eea0a9cd9a0e99cd77abe6ed63fab')
version('4.3.1', sha256='979efb5b3d3c8df2c3c364aaba61f97a459456fc5bbc092dfc02677da63e5654')
@@ -92,7 +93,7 @@ class EnvironmentModules(Package):
# Variables in quarantine are empty during module command
# start-up and they will be restored to the value they had
# in the environment once the command starts
- '--with-quarantine-vars=LD_LIBRARY_PATH'
+ '--with-quarantine-vars=LD_LIBRARY_PATH LD_PRELOAD'
])
if '@4.0.0:' in self.spec:
diff --git a/var/spack/repos/builtin/packages/er/package.py b/var/spack/repos/builtin/packages/er/package.py
index 55e5067f12..343a08ff91 100644
--- a/var/spack/repos/builtin/packages/er/package.py
+++ b/var/spack/repos/builtin/packages/er/package.py
@@ -9,8 +9,8 @@ from spack import *
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.3.zip"
+ homepage = "https://github.com/ecp-veloc/er"
+ 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/evieext/package.py b/var/spack/repos/builtin/packages/evieext/package.py
index af7386dca6..a926727e5d 100644
--- a/var/spack/repos/builtin/packages/evieext/package.py
+++ b/var/spack/repos/builtin/packages/evieext/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Evieext(AutotoolsPackage):
+class Evieext(AutotoolsPackage, XorgPackage):
"""Extended Visual Information Extension (XEVIE).
This extension defines a protocol for a client to determine information
about core X visuals beyond what the core protocol provides."""
homepage = "http://cgit.freedesktop.org/xorg/proto/evieproto"
- url = "https://www.x.org/archive/individual/proto/evieext-1.1.1.tar.gz"
+ xorg_mirror_path = "proto/evieext-1.1.1.tar.gz"
version('1.1.1', sha256='e58080443c279dfb5a23c37076922df535e42bf209d21a1f3e88442cc01b4a0e')
diff --git a/var/spack/repos/builtin/packages/exchanger/package.py b/var/spack/repos/builtin/packages/exchanger/package.py
deleted file mode 100644
index 018459d8c3..0000000000
--- a/var/spack/repos/builtin/packages/exchanger/package.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2013-2020 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 Exchanger(AutotoolsPackage):
- """Exchanger is a package containing several C++ base classes. These
- classes, when customized for a solver, can provide communication channels
- between solvers. This packaged is used by CitcomS for solver coupling."""
-
- homepage = "https://geodynamics.org/cig/software/exchanger/"
- url = "https://geodynamics.org/cig/software/exchanger/Exchanger-1.0.1.tar.gz"
-
- version('1.0.1', sha256='1e6c8311db96582bcf2c9aee16a863a5730c1aa54cb3aa7d0249239c6e0b68ee')
-
- depends_on('python', type=('build', 'run'))
- depends_on('py-merlin', type='build')
- depends_on('py-pythia@0.8.1.0:0.8.1.999', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/exiv2/package.py b/var/spack/repos/builtin/packages/exiv2/package.py
index 05d6de7bd8..53fad9cdfe 100644
--- a/var/spack/repos/builtin/packages/exiv2/package.py
+++ b/var/spack/repos/builtin/packages/exiv2/package.py
@@ -15,3 +15,6 @@ class Exiv2(CMakePackage):
url = "https://github.com/Exiv2/exiv2/archive/v0.27.2.tar.gz"
version('0.27.2', sha256='3dbcaf01fbc5b98d42f091d1ff0d4b6cd9750dc724de3d9c0d113948570b2934')
+
+ depends_on('zlib', type='link')
+ depends_on('expat@2.2.6:', type='link')
diff --git a/var/spack/repos/builtin/packages/expect/package.py b/var/spack/repos/builtin/packages/expect/package.py
index 4cab48a064..1afe8add1e 100644
--- a/var/spack/repos/builtin/packages/expect/package.py
+++ b/var/spack/repos/builtin/packages/expect/package.py
@@ -66,7 +66,8 @@ class Expect(AutotoolsPackage):
fix_darwin_install_name(
join_path(self.prefix.lib, 'expect{0}'.format(self.version)))
- old = 'libexpect{0}.dylib'.format(self.version)
- new = glob.glob(join_path(self.prefix.lib, 'expect*', 'libexpect*'))[0]
- install_name_tool = Executable('install_name_tool')
- install_name_tool('-change', old, new, self.prefix.bin.expect)
+ old = 'libexpect{0}.dylib'.format(self.version)
+ new = glob.glob(join_path(self.prefix.lib, 'expect*',
+ 'libexpect*'))[0]
+ install_name_tool = Executable('install_name_tool')
+ install_name_tool('-change', old, new, self.prefix.bin.expect)
diff --git a/var/spack/repos/builtin/packages/extrae/package.py b/var/spack/repos/builtin/packages/extrae/package.py
index 4ea5928b02..bab7b365d8 100644
--- a/var/spack/repos/builtin/packages/extrae/package.py
+++ b/var/spack/repos/builtin/packages/extrae/package.py
@@ -35,7 +35,7 @@ class Extrae(AutotoolsPackage):
OpenMP, CUDA, OpenCL, pthread, OmpSs"""
homepage = "https://tools.bsc.es/extrae"
url = "https://ftp.tools.bsc.es/extrae/extrae-3.4.1-src.tar.bz2"
- version('3.7.1', sha256='95810b057f95e91bfc89813eb8bd320dfe40614fc8e98c63d95c5101c56dd213')
+ version('3.7.1', sha256='c83ddd18a380c9414d64ee5de263efc6f7bac5fe362d5b8374170c7f18360378')
version('3.4.1', sha256='77bfec16d6b5eee061fbaa879949dcef4cad28395d6a546b1ae1b9246f142725')
depends_on("autoconf", type='build')
@@ -51,7 +51,7 @@ class Extrae(AutotoolsPackage):
depends_on("elf", type="link")
depends_on("libxml2")
depends_on("numactl")
- depends_on("binutils+libiberty")
+ depends_on("binutils+libiberty@:2.33")
depends_on("gettext")
# gettext dependency added to find -lintl
# https://www.gnu.org/software/gettext/FAQ.html#integrating_undefined
diff --git a/var/spack/repos/builtin/packages/exuberant-ctags/package.py b/var/spack/repos/builtin/packages/exuberant-ctags/package.py
index 6efb00602c..421b995050 100644
--- a/var/spack/repos/builtin/packages/exuberant-ctags/package.py
+++ b/var/spack/repos/builtin/packages/exuberant-ctags/package.py
@@ -8,7 +8,7 @@ from spack import *
class ExuberantCtags(AutotoolsPackage):
"""The canonical ctags generator"""
- homepage = "ctags.sourceforge.net"
+ homepage = "http://ctags.sourceforge.net"
url = "http://downloads.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz"
version('5.8', sha256='0e44b45dcabe969e0bbbb11e30c246f81abe5d32012db37395eb57d66e9e99c7')
diff --git a/var/spack/repos/builtin/packages/eztrace/package.py b/var/spack/repos/builtin/packages/eztrace/package.py
index 9468ce8214..ddf9808f7b 100644
--- a/var/spack/repos/builtin/packages/eztrace/package.py
+++ b/var/spack/repos/builtin/packages/eztrace/package.py
@@ -11,9 +11,10 @@ class Eztrace(AutotoolsPackage):
of HPC applications."""
homepage = "http://eztrace.gforge.inria.fr"
- url = "https://gforge.inria.fr/frs/download.php/file/37703/eztrace-1.1-8.tar.gz"
+ url = "https://gitlab.com/eztrace/eztrace/-/archive/eztrace-1.1-10/eztrace-eztrace-1.1-10.tar.gz"
+ maintainers = ['trahay']
- version('1.1-8', sha256='d80d78a25f1eb0e6e60a3e535e3972cd178c6a8663a3d6109105dfa6a880b8ec')
+ version('1.1-10', sha256='97aba8f3b3b71e8e2f7ef47e00c262234e27b9cb4a870c85c525317a83a3f0d4')
depends_on('mpi')
diff --git a/var/spack/repos/builtin/packages/f18/package.py b/var/spack/repos/builtin/packages/f18/package.py
index b766a8f17c..699cfde6c6 100644
--- a/var/spack/repos/builtin/packages/f18/package.py
+++ b/var/spack/repos/builtin/packages/f18/package.py
@@ -21,9 +21,12 @@ class F18(CMakePackage):
description='The build type to build',
values=('Debug', 'Release', 'RelWithDebInfo'))
+ variant('fir', default='False', description='Build with support for FIR')
+
# Dependencies
depends_on('cmake@3.9.0:', type='build')
- depends_on('llvm+clang@7:')
+ depends_on('llvm+clang@9:', when='~fir')
+ depends_on('llvm+clang+mlir@10.0.1:', when='+fir')
# Conflicts
compiler_warning = 'F18 requires a compiler with support for C++17'
@@ -31,3 +34,23 @@ class F18(CMakePackage):
conflicts('%gcc@:7.1', msg=compiler_warning)
conflicts('%intel', msg=compiler_warning)
conflicts('%pgi', msg=compiler_warning)
+
+ def cmake_args(self):
+ spec = self.spec
+ args = ['-DLLVM_DIR=%s' % self.spec['llvm'].prefix.lib.cmake.llvm]
+ # Tests have linking errors with older compilers (before GCC 8.x).
+ # Don't build tests for now.
+ # https://bugs.llvm.org/show_bug.cgi?id=45463
+ if self.run_tests:
+ args.append('-DFLANG_INCLUDE_TESTS:BOOL=ON')
+ else:
+ args.append('-DFLANG_INCLUDE_TESTS:BOOL=OFF')
+
+ if '+fir' in spec:
+ args.append('-DLINK_WITH_FIR:BOOL=ON')
+ args.append(
+ '-DMLIR_DIR=%s' % self.spec['llvm'].prefix.lib.cmake.mlir)
+ else:
+ args.append('-DLINK_WITH_FIR:BOOL=OFF')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/f77-zmq/package.py b/var/spack/repos/builtin/packages/f77-zmq/package.py
index c78f3f4110..bab4469442 100644
--- a/var/spack/repos/builtin/packages/f77-zmq/package.py
+++ b/var/spack/repos/builtin/packages/f77-zmq/package.py
@@ -15,10 +15,12 @@ class F77Zmq(MakefilePackage):
maintainers = ['scemama']
+ version('4.3.2', sha256='f1fb7544d38d9bb7235f98c96f241875ddcb0d37ed950618c23d4e4d666a73ca')
version('4.3.1', sha256='a15d72d93022d3e095528d2808c7767cece974a2dc0e2dd95e4c122f60fcf0a8')
depends_on('libzmq')
- depends_on('python', type='build')
+ depends_on('python@3:', type='build', when="@:4.3.1")
+ depends_on('python', type='build', when="@4.3.2:")
def setup_build_environment(self, env):
env.append_flags('CFLAGS', '-O3')
diff --git a/var/spack/repos/builtin/packages/fabtests/package.py b/var/spack/repos/builtin/packages/fabtests/package.py
index a71a69ab37..a9f76b5d07 100644
--- a/var/spack/repos/builtin/packages/fabtests/package.py
+++ b/var/spack/repos/builtin/packages/fabtests/package.py
@@ -7,15 +7,30 @@ from spack import *
class Fabtests(AutotoolsPackage):
- """Fabtests provides a set of examples that uses libfabric.
-
- DEPRECATED. Fabtests has merged with the libfabric git repo."""
+ """Fabtests provides a set of runtime analysis tools and examples that use
+ libfabric."""
homepage = "http://libfabric.org"
- url = "https://github.com/ofiwg/fabtests/releases/download/v1.5.3/fabtests-1.5.3.tar.gz"
+ url = "https://github.com/ofiwg/libfabric/releases/download/v1.9.1/fabtests-1.9.1.tar.bz2"
+ version('1.9.1', sha256='6f8ced2c6b3514759a0e177c8b2a19125e4ef0714d4cc0fe0386b33bd6cd5585')
+ version('1.9.0', sha256='60cc21db7092334904cbdafd142b2403572976018a22218e7c453195caef366e')
+ version('1.8.1', sha256='e9005d8fe73ca3849c872649c29811846bd72a62f897ecab73a08c7a9514f37b')
+ # old releases, published in a separate repository
+ version('1.6.2', sha256='37405c6202f5b1aa81f8ea211237a2d87937f06254fa3ed44a9b69ac73b234e8')
+ version('1.6.1', sha256='d357466b868fdaf1560d89ffac4c4e93a679486f1b4221315644d8d3e21174bf')
version('1.6.0', sha256='dc3eeccccb005205017f5af60681ede15782ce202a0103450a6d56a7ff515a67')
version('1.5.3', sha256='3835b3bf86cd00d23df0ddba8bf317e4a195e8d5c3c2baa918b373d548f77f29')
+ version('1.5.0', sha256='1dddd446c3f1df346899f9a8636f1b4265de5b863103ae24876e9f0c1e40a69d')
+ version('1.4.2', sha256='3b78d0ca1b223ff21b7f5b3627e67e358e3c18b700f86b017e2233fee7e88c2e')
+
+ for v in ['1.4.2', '1.5.0', '1.5.3', '1.6.0', '1.6.1', '1.6.2',
+ '1.8.1', '1.9.0', '1.9.1']:
+ depends_on('libfabric@{0}'.format(v), when='@{0}'.format(v))
- depends_on('libfabric@1.6.0', when='@1.6.0')
- depends_on('libfabric@1.5.3', when='@1.5.3')
+ def url_for_version(self, version):
+ if version >= Version('1.8.1'):
+ url = "https://github.com/ofiwg/libfabric/releases/download/v{0}/fabtests-{0}.tar.bz2"
+ else:
+ url = "https://github.com/ofiwg/fabtests/releases/download/v{0}/fabtests-{0}.tar.gz"
+ return url.format(version.dotted)
diff --git a/var/spack/repos/builtin/packages/fairlogger/package.py b/var/spack/repos/builtin/packages/fairlogger/package.py
index 3190f1702c..77d4616097 100644
--- a/var/spack/repos/builtin/packages/fairlogger/package.py
+++ b/var/spack/repos/builtin/packages/fairlogger/package.py
@@ -17,7 +17,8 @@ class Fairlogger(CMakePackage):
maintainers = ['dennisklein', 'ChristianTackeGSI']
# generator = 'Ninja'
- version('develop', branch='dev')
+ version('develop', branch='dev', get_full_repo=True)
+ version('1.6.2', sha256='5c6ef0c0029eb451fee71756cb96e6c5011040a9813e8889667b6f3b6b04ed03')
version('1.6.1', sha256='3894580f4c398d724ba408e410e50f70c9f452e8cfaf7c3ff8118c08df28eaa8')
version('1.6.0', sha256='721e8cadfceb2f63014c2a727e098babc6deba653baab8866445a772385d0f5b')
version('1.5.0', sha256='8e74e0b1e50ee86f4fca87a44c6b393740b32099ac3880046bf252c31c58dd42')
@@ -31,19 +32,22 @@ class Fairlogger(CMakePackage):
values=('Debug', 'Release', 'RelWithDebInfo'),
multi=False,
description='CMake build type')
- variant('cxxstd', default='11',
+ variant('cxxstd', default='default',
values=('11', '14', '17'),
multi=False,
description='Use the specified C++ standard when building.')
variant('pretty',
default=False,
- description='Use BOOST_PRETTY_FUNCTION macro.')
+ description='Use BOOST_PRETTY_FUNCTION macro (Supported by 1.4+).')
conflicts('+pretty', when='@:1.3.99')
depends_on('cmake@3.9.4:', type='build')
depends_on('git', type='build', when='@develop')
+
depends_on('boost', when='+pretty')
- depends_on('fmt@5.3.0:', when='@1.6.0:')
+ conflicts('^boost@1.70:', when='^cmake@:3.14')
+ depends_on('fmt@5.3.0:5.99', when='@1.6.0:1.6.1')
+ depends_on('fmt@5.3.0:', when='@1.6.2:')
def patch(self):
"""FairLogger gets its version number from git.
@@ -55,9 +59,10 @@ class Fairlogger(CMakePackage):
'CMakeLists.txt')
def cmake_args(self):
- cxxstd = self.spec.variants['cxxstd'].value
args = []
- args.append('-DCMAKE_CXX_STANDARD=%s' % cxxstd)
+ cxxstd = self.spec.variants['cxxstd'].value
+ if cxxstd != 'default':
+ args.append('-DCMAKE_CXX_STANDARD=%s' % cxxstd)
args.append('-DUSE_BOOST_PRETTY_FUNCTION=%s' %
('ON' if '+pretty' in self.spec else 'OFF'))
if self.spec.satisfies('@1.6:'):
diff --git a/var/spack/repos/builtin/packages/fast-global-file-status/package.py b/var/spack/repos/builtin/packages/fast-global-file-status/package.py
index afc2ef23de..1f48dc4319 100644
--- a/var/spack/repos/builtin/packages/fast-global-file-status/package.py
+++ b/var/spack/repos/builtin/packages/fast-global-file-status/package.py
@@ -18,6 +18,7 @@ class FastGlobalFileStatus(AutotoolsPackage):
depends_on('mrnet')
depends_on('mount-point-attributes')
depends_on('mpi')
+ depends_on('openssl')
def configure_args(self):
spec = self.spec
diff --git a/var/spack/repos/builtin/packages/fd-find/package.py b/var/spack/repos/builtin/packages/fd-find/package.py
new file mode 100644
index 0000000000..faf7374cb6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/fd-find/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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 FdFind(Package):
+ """A simple, fast and user-friendly alternative to 'find'."""
+
+ homepage = "https://github.com/sharkdp/fd"
+ url = "https://github.com/sharkdp/fd/archive/v7.3.0.tar.gz"
+
+ version('7.4.0', sha256='33570ba65e7f8b438746cb92bb9bc4a6030b482a0d50db37c830c4e315877537')
+
+ depends_on('rust')
+
+ def install(self, spec, prefix):
+ cargo = which('cargo')
+ cargo('install', '--root', prefix, '--path', '.')
diff --git a/var/spack/repos/builtin/packages/ffmpeg/package.py b/var/spack/repos/builtin/packages/ffmpeg/package.py
index b4ef8cc790..eda88445ee 100644
--- a/var/spack/repos/builtin/packages/ffmpeg/package.py
+++ b/var/spack/repos/builtin/packages/ffmpeg/package.py
@@ -13,29 +13,129 @@ class Ffmpeg(AutotoolsPackage):
homepage = "https://ffmpeg.org"
url = "http://ffmpeg.org/releases/ffmpeg-4.1.1.tar.bz2"
- version('4.1.1', sha256='0cb40e3b8acaccd0ecb38aa863f66f0c6e02406246556c2992f67bf650fab058')
+ version('4.2.2', sha256='b620d187c26f76ca19e74210a0336c3b8380b97730df5cdf45f3e69e89000e5c')
+ version('4.1.1', sha256='0cb40e3b8acaccd0ecb38aa863f66f0c6e02406246556c2992f67bf650fab058')
version('4.1', sha256='b684fb43244a5c4caae652af9022ed5d85ce15210835bce054a33fb26033a1a5')
version('3.2.4', sha256='c0fa3593a2e9e96ace3c1757900094437ad96d1d6ca19f057c378b5f394496a4')
- variant('shared', default=True,
- description='build shared libraries')
+ # Licensing
+ variant('gpl', default=True,
+ description='allow use of GPL code, the resulting libs '
+ 'and binaries will be under GPL')
+ variant('version3', default=True,
+ description='upgrade (L)GPL to version 3')
+ variant('nonfree', default=False,
+ description='allow use of nonfree code, the resulting libs '
+ 'and binaries will be unredistributable')
- variant('aom', default=False,
- description='build Alliance for Open Media libraries')
+ # NOTE: The libopencv option creates a circular dependency.
+ # NOTE: There are more possible variants that would require additional
+ # spack packages.
+ # meta variants: These will toggle several settings
+ variant('X', default=False, description='X11 support')
+ variant('drawtext', default=False, description='drawtext filter')
+
+ # options
+ variant('bzlib', default=True, description='bzip2 support')
+ variant('libaom', default=False, description='AV1 video encoding/decoding')
+ variant('libmp3lame', default=False, description='MP3 encoding')
+ variant('libopenjpeg', default=False, description='JPEG 2000 de/encoding')
+ variant('libopus', default=False, description='Opus de/encoding')
+ variant('libsnappy', default=False,
+ description='Snappy compression, needed for hap encoding')
+ variant('libspeex', default=False, description='Speex de/encoding')
+ variant('libssh', default=False, description='SFTP protocol')
+ variant('libvorbis', default=False, description='Vorbis en/decoding')
+ variant('libwebp', default=False, description='WebP encoding via libwebp')
+ # TODO: There is an issue with the spack headers property in the libxml2
+ # package recipe. Comment out the libxml2 variant until that is resolved.
+ # variant('libxml2', default=False,
+ # description='XML parsing, needed for dash demuxing support')
+ variant('libzmq', default=False, description='message passing via libzmq')
+ variant('lzma', default=True, description='lzma support')
+ variant('openssl', default=False, description='needed for https support')
+ variant('sdl2', default=True, description='sdl2 support')
+ variant('shared', default=True, description='build shared libraries')
+
+ depends_on('alsa-lib')
+ depends_on('libiconv')
depends_on('yasm@1.2.0:')
- depends_on('aom', when='+aom')
+ depends_on('zlib')
+
+ depends_on('aom', when='+libaom')
+ depends_on('bzip2', when='+bzlib')
+ depends_on('fontconfig', when='+drawtext')
+ depends_on('freetype', when='+drawtext')
+ depends_on('fribidi', when='+drawtext')
+ depends_on('lame', when='+libmp3lame')
+ depends_on('libssh', when='+libssh')
+ depends_on('libvorbis', when='+libvorbis')
+ depends_on('libwebp', when='+libwebp')
+ # TODO: enable libxml2 when libxml2 header issue is resolved
+ # depends_on('libxml2', when='+libxml2')
+ depends_on('libxv', when='+X')
+ depends_on('libzmq', when='+libzmq')
+ depends_on('openjpeg', when='+libopenjpeg')
+ depends_on('openssl', when='+openssl')
+ depends_on('opus', when='+libopus')
+ depends_on('sdl2', when='+sdl2')
+ depends_on('snappy', when='+libsnappy')
+ depends_on('speex', when='+libspeex')
+ depends_on('xz', when='+lzma')
def configure_args(self):
spec = self.spec
config_args = ['--enable-pic']
- if '+shared' in spec:
- config_args.append('--enable-shared')
+ if '+X' in spec:
+ config_args.extend([
+ '--enable-libxcb',
+ '--enable-libxcb-shape',
+ '--enable-libxcb-shm',
+ '--enable-libxcb-xfixes',
+ '--enable-xlib',
+ ])
+ else:
+ config_args.extend([
+ '--disable-libxcb',
+ '--disable-libxcb-shape',
+ '--disable-libxcb-shm',
+ '--disable-libxcb-xfixes',
+ '--disable-xlib',
+ ])
- if '+aom' in spec:
- config_args.append('--enable-libaom')
+ if '+drawtext' in spec:
+ config_args.extend([
+ '--enable-libfontconfig',
+ '--enable-libfreetype',
+ '--enable-libfribidi',
+ ])
else:
- config_args.append('--disable-libaom')
+ config_args.extend([
+ '--disable-libfontconfig',
+ '--disable-libfreetype',
+ '--disable-libfribidi',
+ ])
+ for variant in [
+ 'bzlib',
+ 'libaom',
+ 'libmp3lame',
+ 'libopenjpeg',
+ 'libopus',
+ 'libsnappy',
+ 'libspeex',
+ 'libssh',
+ 'libvorbis',
+ 'libwebp',
+ # TODO: enable when libxml2 header issue is resolved
+ # 'libxml2',
+ 'libzmq',
+ 'lzma',
+ 'openssl',
+ 'sdl2',
+ 'shared',
+ ]:
+ config_args += self.enable_or_disable(variant)
return config_args
diff --git a/var/spack/repos/builtin/packages/filo/package.py b/var/spack/repos/builtin/packages/filo/package.py
new file mode 100644
index 0000000000..aeba476c04
--- /dev/null
+++ b/var/spack/repos/builtin/packages/filo/package.py
@@ -0,0 +1,32 @@
+# Copyright 2013-2020 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 Filo(CMakePackage):
+ """File flush and fetch, with MPI"""
+
+ homepage = "https://github.com/ecp-veloc/filo"
+ git = "https://github.com/ecp-veloc/filo.git"
+
+ tags = ['ecp']
+
+ version('master', branch='master')
+
+ depends_on('mpi')
+ depends_on('axl')
+ depends_on('kvtree')
+ depends_on('spath')
+
+ def cmake_args(self):
+ args = []
+ args.append("-DMPI_C_COMPILER=%s" % self.spec['mpi'].mpicc)
+ if self.spec.satisfies('platform=cray'):
+ args.append("-DFILO_LINK_STATIC=ON")
+ args.append("-DWITH_AXL_PREFIX=%s" % self.spec['axl'].prefix)
+ args.append("-DWITH_KVTREE_PREFIX=%s" % self.spec['kvtree'].prefix)
+ args.append("-DWITH_SPATH_PREFIX=%s" % self.spec['spath'].prefix)
+ return args
diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py
index 57ca658a18..7b5761e0d2 100644
--- a/var/spack/repos/builtin/packages/fish/package.py
+++ b/var/spack/repos/builtin/packages/fish/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Fish(AutotoolsPackage):
+class Fish(CMakePackage):
"""fish is a smart and user-friendly command line shell for OS X, Linux, and
the rest of the family.
"""
@@ -17,7 +17,5 @@ class Fish(AutotoolsPackage):
depends_on('ncurses')
+ version('3.1.0', sha256='e5db1e6839685c56f172e1000c138e290add4aa521f187df4cd79d4eab294368')
version('3.0.0', sha256='ea9dd3614bb0346829ce7319437c6a93e3e1dfde3b7f6a469b543b0d2c68f2cf')
- version('2.7.1', sha256='e42bb19c7586356905a58578190be792df960fa81de35effb1ca5a5a981f0c5a')
- version('2.7.0', sha256='3a76b7cae92f9f88863c35c832d2427fb66082f98e92a02203dc900b8fa87bcb')
- version('2.2.0', sha256='a76339fd14ce2ec229283c53e805faac48c3e99d9e3ede9d82c0554acfc7b77a')
diff --git a/var/spack/repos/builtin/packages/fixesproto/package.py b/var/spack/repos/builtin/packages/fixesproto/package.py
index 14cbf18d26..b550f0bec0 100644
--- a/var/spack/repos/builtin/packages/fixesproto/package.py
+++ b/var/spack/repos/builtin/packages/fixesproto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Fixesproto(AutotoolsPackage):
+class Fixesproto(AutotoolsPackage, XorgPackage):
"""X Fixes Extension.
The extension makes changes to many areas of the protocol to resolve
@@ -14,7 +14,7 @@ class Fixesproto(AutotoolsPackage):
that cannot be adequately worked around on the client side of the wire."""
homepage = "http://cgit.freedesktop.org/xorg/proto/fixesproto"
- url = "https://www.x.org/archive/individual/proto/fixesproto-5.0.tar.gz"
+ xorg_mirror_path = "proto/fixesproto-5.0.tar.gz"
version('5.0', sha256='67865a0e3cdc7dec1fd676f0927f7011ad4036c18eb320a2b41dbd56282f33b8')
diff --git a/var/spack/repos/builtin/packages/fl/package.py b/var/spack/repos/builtin/packages/fl/package.py
index f314ca6cdc..98809a21f1 100644
--- a/var/spack/repos/builtin/packages/fl/package.py
+++ b/var/spack/repos/builtin/packages/fl/package.py
@@ -17,7 +17,7 @@ class Fl(Package):
def install(self, spec, prefix):
if (self.spec.satisfies('platform=linux') and
- self.spec.satisfies('target=x86_64')):
+ self.spec.target.family == 'x86_64'):
with working_dir('fl_{0}'.format(spec.version)):
install_tree('.', prefix)
else:
diff --git a/var/spack/repos/builtin/packages/flatbuffers/package.py b/var/spack/repos/builtin/packages/flatbuffers/package.py
index 538922a7de..72ad2e599c 100644
--- a/var/spack/repos/builtin/packages/flatbuffers/package.py
+++ b/var/spack/repos/builtin/packages/flatbuffers/package.py
@@ -17,3 +17,16 @@ class Flatbuffers(CMakePackage):
version('1.10.0', sha256='3714e3db8c51e43028e10ad7adffb9a36fc4aa5b1a363c2d0c4303dd1be59a7c')
version('1.9.0', sha256='5ca5491e4260cacae30f1a5786d109230db3f3a6e5a0eb45d0d0608293d247e3')
version('1.8.0', sha256='c45029c0a0f1a88d416af143e34de96b3091642722aa2d8c090916c6d1498c2e')
+
+ variant('shared', default=True,
+ description='Build shared instead of static libraries')
+
+ def cmake_args(self):
+ args = []
+ args.append('-DFLATBUFFERS_BUILD_SHAREDLIB={0}'.format(
+ 'ON' if '+shared' in self.spec else 'OFF'))
+ args.append('-DFLATBUFFERS_BUILD_FLATLIB={0}'.format(
+ 'ON' if '+shared' not in self.spec else 'OFF'))
+ if 'darwin' in self.spec.architecture:
+ args.append('-DCMAKE_MACOSX_RPATH=ON')
+ return args
diff --git a/var/spack/repos/builtin/packages/flecsi/package.py b/var/spack/repos/builtin/packages/flecsi/package.py
index d78f350c59..fccdd686b0 100644
--- a/var/spack/repos/builtin/packages/flecsi/package.py
+++ b/var/spack/repos/builtin/packages/flecsi/package.py
@@ -20,12 +20,17 @@ class Flecsi(CMakePackage):
homepage = 'http://flecsi.org/'
git = 'https://github.com/laristra/flecsi.git'
- version('master', branch='master', submodules=False, preferred=True)
+ version('devel', branch='devel', submodules=False, preferred=False)
+ version('1', branch='1', submodules=False, preferred=True)
+ version('1.4', branch='1.4', submodules=False, preferred=False)
- variant('build_type', default='Release', values=('Debug', 'Release'),
+ variant('build_type', default='Release',
+ values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'),
description='The build type to build', multi=False)
- variant('backend', default='mpi', values=('serial', 'mpi', 'legion', 'hpx'),
+ variant('backend', default='mpi', values=('serial', 'mpi', 'legion', 'hpx', 'charmpp'),
description='Backend to use for distributed memory', multi=False)
+ variant('debug_backend', default=False,
+ description='Build Backend with Debug Mode')
variant('minimal', default=False,
description='Disable FindPackageMetis')
variant('shared', default=True,
@@ -48,28 +53,32 @@ class Flecsi(CMakePackage):
description='Build FleCSI Tutorials')
variant('flecstan', default=False,
description='Build FleCSI Static Analyzer')
+ variant('cinch', default=False,
+ description='Enable External Cinch')
depends_on('cmake@3.12:', type='build')
# Requires cinch > 1.0 due to cinchlog installation issue
- depends_on('cinch@1.01:', type='build')
+ depends_on('cinch@1.01:', type='build', when='+cinch')
depends_on('mpi', when='backend=mpi')
depends_on('mpi', when='backend=legion')
depends_on('mpi', when='backend=hpx')
- depends_on('legion@ctrl-rep +shared +mpi +hdf5', when='backend=legion +hdf5')
- depends_on('legion@ctrl-rep +shared +mpi', when='backend=legion ~hdf5')
- depends_on('hpx@1.3.0 cxxstd=14', when='backend=hpx')
+ depends_on('legion@ctrl-rep+shared+mpi+hdf5 build_type=Debug', when='backend=legion +debug_backend +hdf5')
+ depends_on('legion@ctrl-rep+shared+mpi build_type=Debug', when='backend=legion +debug_backend ~hdf5')
+ depends_on('legion@ctrl-rep+shared+mpi+hdf5 build_type=Release', when='backend=legion ~debug_backend +hdf5')
+ depends_on('legion@ctrl-rep+shared+mpi build_type=Release', when='backend=legion ~debug_backend ~hdf5')
+ depends_on('hpx@1.3.0 cxxstd=14 malloc=system build_type=Debug', when='backend=hpx +debug_backend')
+ depends_on('hpx@1.3.0 cxxstd=14 malloc=system build_type=Release', when='backend=hpx ~debug_backend')
depends_on('boost@1.70.0: cxxstd=14 +program_options')
depends_on('metis@5.1.0:')
depends_on('parmetis@4.0.3:')
- depends_on('hdf5', when='+hdf5')
+ depends_on('hdf5+mpi', when='+hdf5')
depends_on('caliper', when='+caliper')
depends_on('graphviz', when='+graphviz')
depends_on('python@3.0:', when='+tutorial')
depends_on('llvm', when='+flecstan')
conflicts('+tutorial', when='backend=hpx')
-# conflicts('+hdf5', when='backend=hpx')
-# conflicts('+hdf5', when='backend=mpi')
+ # conflicts('+hdf5', when='backend=hpx')
def cmake_args(self):
spec = self.spec
@@ -80,7 +89,9 @@ class Flecsi(CMakePackage):
'-DENABLE_COLORING=ON',
'-DENABLE_DEVEL_TARGETS=ON'
]
- options.append('-DCINCH_SOURCE_DIR=' + spec['cinch'].prefix)
+
+ if '+cinch' in spec:
+ options.append('-DCINCH_SOURCE_DIR=' + spec['cinch'].prefix)
if spec.variants['backend'].value == 'legion':
options.append('-DFLECSI_RUNTIME_MODEL=legion')
@@ -95,6 +106,11 @@ class Flecsi(CMakePackage):
options.append('-DFLECSI_RUNTIME_MODEL=serial')
options.append('-DENABLE_MPI=OFF')
+ if self.run_tests:
+ options.append('-DENABLE_UNIT_TESTS=ON')
+ else:
+ options.append('-DENABLE_UNIT_TESTS=OFF')
+
if '+minimal' in spec:
options.append('-DCMAKE_DISABLE_FIND_PACKAGE_METIS=ON')
else:
@@ -104,12 +120,7 @@ class Flecsi(CMakePackage):
else:
options.append('-DBUILD_SHARED_LIBS=OFF')
- if self.run_tests:
- options.append('-DENABLE_UNIT_TESTS=ON')
- else:
- options.append('-DENABLE_UNIT_TESTS=OFF')
-
- if '+hdf5' in spec and spec.variants['backend'].value == 'legion':
+ if '+hdf5' in spec and spec.variants['backend'].value != 'hpx':
options.append('-DENABLE_HDF5=ON')
else:
options.append('-DENABLE_HDF5=OFF')
diff --git a/var/spack/repos/builtin/packages/flit/package.py b/var/spack/repos/builtin/packages/flit/package.py
index 66f4c43452..fbe1d2f342 100644
--- a/var/spack/repos/builtin/packages/flit/package.py
+++ b/var/spack/repos/builtin/packages/flit/package.py
@@ -14,16 +14,18 @@ class Flit(MakefilePackage):
homepage = "https://pruners.github.io/flit"
url = "https://github.com/PRUNERS/FLiT"
- url = "https://github.com/PRUNERS/FLiT/archive/v2.0-alpha.1.tar.gz"
+ url = "https://github.com/PRUNERS/FLiT/archive/v2.1.0.tar.gz"
- version('2.0-alpha.1', sha256='8de2bd400acf0f513d69f3dbf588e8984dfb18b8ccaaf684391811a0582f694b')
+ version('2.1.0', sha256='b31ffa02fda1ab0f5555acdc6edc353d93d53ae8ef85e099f83bcf1c83e70885')
+
+ maintainers = ['mikebentley15']
# Add dependencies
- depends_on('python@3:', type='run')
- depends_on('py-numpy', type='run')
- depends_on('py-matplotlib tk=False', type='run')
- depends_on('py-toml', type='run')
-
- @property
- def install_targets(self):
- return ['install', 'PREFIX=%s' % self.prefix]
+ depends_on('python@3:', type='run')
+ depends_on('py-toml', type='run')
+ depends_on('py-pyelftools', type='run')
+ depends_on('gmake', type=('run', 'build'))
+ depends_on('sqlite@3:', type='run')
+
+ def edit(self, spec, prefix):
+ env['PREFIX'] = prefix
diff --git a/var/spack/repos/builtin/packages/fmt/package.py b/var/spack/repos/builtin/packages/fmt/package.py
index 8cba74d000..be39f6cc83 100644
--- a/var/spack/repos/builtin/packages/fmt/package.py
+++ b/var/spack/repos/builtin/packages/fmt/package.py
@@ -14,6 +14,7 @@ class Fmt(CMakePackage):
homepage = "http://fmtlib.net/latest/index.html"
url = "https://github.com/fmtlib/fmt/releases/download/5.2.1/fmt-5.2.1.zip"
+ version('6.1.2', sha256='63650f3c39a96371f5810c4e41d6f9b0bb10305064e6faf201cbafe297ea30e8')
version('5.3.0', sha256='4c0741e10183f75d7d6f730b8708a99b329b2f942dad5a9da3385ab92bb4a15c')
version('5.2.1', sha256='43894ab8fe561fc9e523a8024efc23018431fa86b95d45b06dbe6ddb29ffb6cd')
version('5.2.0', sha256='c016db7f825bce487a7929e1edb747b9902a2935057af6512cad3df3a080a027')
diff --git a/var/spack/repos/builtin/packages/font-util/package.py b/var/spack/repos/builtin/packages/font-util/package.py
index 41923f5ad1..647b0b417b 100644
--- a/var/spack/repos/builtin/packages/font-util/package.py
+++ b/var/spack/repos/builtin/packages/font-util/package.py
@@ -6,11 +6,12 @@
from spack import *
-class FontUtil(AutotoolsPackage):
+class FontUtil(AutotoolsPackage, XorgPackage):
"""X.Org font package creation/installation utilities and fonts."""
homepage = "http://cgit.freedesktop.org/xorg/font/util"
- url = "https://www.x.org/archive/individual/font/font-util-1.3.1.tar.gz"
+ xorg_mirror_path = "font/font-util-1.3.1.tar.gz"
+
version('1.3.2', sha256='f115a3735604de1e852a4bf669be0269d8ce8f21f8e0e74ec5934b31dadc1e76')
version('1.3.1', sha256='34ebb0c9c14e0a392cdd5ea055c92489ad88d55ae148b2f1cfded0f3f63f2b5b')
diff --git a/var/spack/repos/builtin/packages/fontcacheproto/package.py b/var/spack/repos/builtin/packages/fontcacheproto/package.py
index 52d1a23fe0..8397bba192 100644
--- a/var/spack/repos/builtin/packages/fontcacheproto/package.py
+++ b/var/spack/repos/builtin/packages/fontcacheproto/package.py
@@ -6,10 +6,10 @@
from spack import *
-class Fontcacheproto(AutotoolsPackage):
+class Fontcacheproto(AutotoolsPackage, XorgPackage):
"""X.org FontcacheProto protocol headers."""
homepage = "http://cgit.freedesktop.org/xorg/proto/fontcacheproto"
- url = "https://www.x.org/archive/individual/proto/fontcacheproto-0.1.3.tar.gz"
+ xorg_mirror_path = "proto/fontcacheproto-0.1.3.tar.gz"
version('0.1.3', sha256='759b4863b55a25bfc8f977d8ed969da0b99b3c823f33c674d6da5825f9df9a79')
diff --git a/var/spack/repos/builtin/packages/fontsproto/package.py b/var/spack/repos/builtin/packages/fontsproto/package.py
index 419984c624..b91524d548 100644
--- a/var/spack/repos/builtin/packages/fontsproto/package.py
+++ b/var/spack/repos/builtin/packages/fontsproto/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Fontsproto(AutotoolsPackage):
+class Fontsproto(AutotoolsPackage, XorgPackage):
"""X Fonts Extension."""
homepage = "http://cgit.freedesktop.org/xorg/proto/fontsproto"
- url = "https://www.x.org/archive/individual/proto/fontsproto-2.1.3.tar.gz"
+ xorg_mirror_path = "proto/fontsproto-2.1.3.tar.gz"
version('2.1.3', sha256='72c44e63044b2b66f6fa112921621ecc20c71193982de4f198d9a29cda385c5e')
diff --git a/var/spack/repos/builtin/packages/fonttosfnt/package.py b/var/spack/repos/builtin/packages/fonttosfnt/package.py
index 74b870ca64..5294686a4b 100644
--- a/var/spack/repos/builtin/packages/fonttosfnt/package.py
+++ b/var/spack/repos/builtin/packages/fonttosfnt/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Fonttosfnt(AutotoolsPackage):
+class Fonttosfnt(AutotoolsPackage, XorgPackage):
"""Wrap a bitmap font in a sfnt (TrueType) wrapper."""
homepage = "http://cgit.freedesktop.org/xorg/app/fonttosfnt"
- url = "https://www.x.org/archive/individual/app/fonttosfnt-1.0.4.tar.gz"
+ xorg_mirror_path = "app/fonttosfnt-1.0.4.tar.gz"
version('1.0.4', sha256='3873636be5b3b8e4160070e8f9a7a9221b5bd5efbf740d7abaa9092e10732673')
diff --git a/var/spack/repos/builtin/packages/freeipmi/package.py b/var/spack/repos/builtin/packages/freeipmi/package.py
new file mode 100644
index 0000000000..bcb3e502cd
--- /dev/null
+++ b/var/spack/repos/builtin/packages/freeipmi/package.py
@@ -0,0 +1,40 @@
+# Copyright 2013-2020 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 llnl.util.tty as tty
+
+
+class Freeipmi(AutotoolsPackage):
+ """FreeIPMI provides in-band and out-of-band IPMI software based on the IPMI
+ v1.5/2.0 specification. The IPMI specification defines a set of interfaces
+ for platform management and is implemented by a number vendors for system
+ management. The features of IPMI that most users will be interested in are
+ sensor monitoring, system event monitoring, power control, and
+ serial-over-LAN (SOL). The FreeIPMI tools and libraries listed below should
+ provide users with the ability to access and utilize these and many other
+ features. A number of useful features for large HPC or cluster environments
+ have also been implemented into FreeIPMI. See the README or FAQ for more
+ info."""
+
+ homepage = "https://www.gnu.org/software/freeipmi/"
+ url = "https://ftp.gnu.org/gnu/freeipmi/freeipmi-1.6.4.tar.gz"
+
+ version('1.6.4',
+ sha256='65dfbb95a30438ba247f01a58498862a37d2e71c8c950bcfcee459d079241a3c')
+
+ depends_on('libgcrypt')
+
+ parallel = False
+
+ def configure_args(self):
+ # FIXME: If root checking of root installation is added fix this:
+ # Discussed in issue #4432
+ tty.warn("Requires 'root' for bmc-watchdog.service installation to"
+ " /lib/systemd/system/ !")
+
+ args = ['--prefix={0}'.format(prefix)]
+
+ return args
diff --git a/var/spack/repos/builtin/packages/fslsfonts/package.py b/var/spack/repos/builtin/packages/fslsfonts/package.py
index 32083f58dc..f491b2631e 100644
--- a/var/spack/repos/builtin/packages/fslsfonts/package.py
+++ b/var/spack/repos/builtin/packages/fslsfonts/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Fslsfonts(AutotoolsPackage):
+class Fslsfonts(AutotoolsPackage, XorgPackage):
"""fslsfonts produces a list of fonts served by an X font server."""
homepage = "http://cgit.freedesktop.org/xorg/app/fslsfonts"
- url = "https://www.x.org/archive/individual/app/fslsfonts-1.0.5.tar.gz"
+ xorg_mirror_path = "app/fslsfonts-1.0.5.tar.gz"
version('1.0.5', sha256='27e58d2313835ce0f08cf47c59a43798b122f605a55f54b170db27b57a492007')
diff --git a/var/spack/repos/builtin/packages/fstobdf/package.py b/var/spack/repos/builtin/packages/fstobdf/package.py
index 76ee5a731e..ae83adf5ca 100644
--- a/var/spack/repos/builtin/packages/fstobdf/package.py
+++ b/var/spack/repos/builtin/packages/fstobdf/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Fstobdf(AutotoolsPackage):
+class Fstobdf(AutotoolsPackage, XorgPackage):
"""The fstobdf program reads a font from a font server and prints a BDF
file on the standard output that may be used to recreate the font.
This is useful in testing servers, debugging font metrics, and
reproducing lost BDF files."""
homepage = "http://cgit.freedesktop.org/xorg/app/fstobdf"
- url = "https://www.x.org/archive/individual/app/fstobdf-1.0.6.tar.gz"
+ xorg_mirror_path = "app/fstobdf-1.0.6.tar.gz"
version('1.0.6', sha256='bb903ae76cbcb0a08a71f06762b64db7d5c2064f6e88e8dc3a604e76d0bcb93d')
diff --git a/var/spack/repos/builtin/packages/g4abla/package.py b/var/spack/repos/builtin/packages/g4abla/package.py
index 2ce2f6ece1..bed114d825 100644
--- a/var/spack/repos/builtin/packages/g4abla/package.py
+++ b/var/spack/repos/builtin/packages/g4abla/package.py
@@ -12,10 +12,11 @@ class G4abla(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.3.0.tar.gz"
- version(
- '3.0', sha256='99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014')
- version(
- '3.1', sha256='7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed')
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('3.1', sha256='7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed')
+ version('3.0', sha256='99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -23,6 +24,11 @@ class G4abla(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4ABLA{0}'
+ .format(self.version))
+ env.set('G4ABLADATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4emlow/package.py b/var/spack/repos/builtin/packages/g4emlow/package.py
index 81e6b856d4..713b9da631 100644
--- a/var/spack/repos/builtin/packages/g4emlow/package.py
+++ b/var/spack/repos/builtin/packages/g4emlow/package.py
@@ -12,10 +12,13 @@ class G4emlow(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.6.50.tar.gz"
- version(
- '6.50', sha256='c97be73fece5fb4f73c43e11c146b43f651c6991edd0edf8619c9452f8ab1236')
- version(
- '7.3', sha256='583aa7f34f67b09db7d566f904c54b21e95a9ac05b60e2bfb794efb569dba14e')
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('7.9', sha256='4abf9aa6cda91e4612676ce4d2d8a73b91184533aa66f9aad19a53a8c4dc3aff')
+ version('7.7', sha256='16dec6adda6477a97424d749688d73e9bd7d0b84d0137a67cf341f1960984663')
+ version('7.3', sha256='583aa7f34f67b09db7d566f904c54b21e95a9ac05b60e2bfb794efb569dba14e')
+ version('6.50', sha256='c97be73fece5fb4f73c43e11c146b43f651c6991edd0edf8619c9452f8ab1236')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -23,6 +26,11 @@ class G4emlow(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4EMLOW{0}'
+ .format(self.version))
+ env.set('G4LEDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
- return ("http://geant4.web.cern.ch/support/source/G4EMLOW.%s.tar.gz" % version)
+ return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4ensdfstate/package.py b/var/spack/repos/builtin/packages/g4ensdfstate/package.py
index 514593f34c..36bc897f4b 100644
--- a/var/spack/repos/builtin/packages/g4ensdfstate/package.py
+++ b/var/spack/repos/builtin/packages/g4ensdfstate/package.py
@@ -12,8 +12,11 @@ class G4ensdfstate(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4ENSDFSTATE.2.1.tar.gz"
- version('2.1', sha256='933e7f99b1c70f24694d12d517dfca36d82f4e95b084c15d86756ace2a2790d9')
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
version('2.2', sha256='dd7e27ef62070734a4a709601f5b3bada6641b111eb7069344e4f99a01d6e0a6')
+ version('2.1', sha256='933e7f99b1c70f24694d12d517dfca36d82f4e95b084c15d86756ace2a2790d9')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -22,7 +25,9 @@ class G4ensdfstate(Package):
install_tree(self.stage.source_path, install_path)
def setup_dependent_run_environment(self, env, dependent_spec):
- env.set('G4ENSDFSTATEDATA', self.prefix.share.data)
+ install_path = join_path(self.prefix.share, 'data', 'G4ENSDFSTATE{0}'
+ .format(self.version))
+ env.set('G4ENSDFSTATEDATA', install_path)
def url_for_version(self, version):
"""Handle version string."""
diff --git a/var/spack/repos/builtin/packages/g4incl/package.py b/var/spack/repos/builtin/packages/g4incl/package.py
new file mode 100644
index 0000000000..e21010f411
--- /dev/null
+++ b/var/spack/repos/builtin/packages/g4incl/package.py
@@ -0,0 +1,34 @@
+# Copyright 2013-2020 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 G4incl(Package):
+ """Geant4 data for evaluated particle cross-sections on natural
+ composition of elements"""
+ homepage = "http://geant4.web.cern.ch"
+ url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.1.0.tar.gz"
+
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('1.0', sha256='716161821ae9f3d0565fbf3c2cf34f4e02e3e519eb419a82236eef22c2c4367d')
+
+ def install(self, spec, prefix):
+ mkdirp(join_path(prefix.share, 'data'))
+ install_path = join_path(prefix.share, 'data', "G4INCL{0}"
+ .format(self.version))
+ install_tree(self.stage.source_path, install_path)
+
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4INCL{0}'
+ .format(self.version))
+ env.set('G4INCLDATA', install_path)
+
+ def url_for_version(self, version):
+ """Handle version string."""
+ return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.%s.tar.gz" % version) \ No newline at end of file
diff --git a/var/spack/repos/builtin/packages/g4ndl/package.py b/var/spack/repos/builtin/packages/g4ndl/package.py
index 909f732b5c..3eaad0f101 100644
--- a/var/spack/repos/builtin/packages/g4ndl/package.py
+++ b/var/spack/repos/builtin/packages/g4ndl/package.py
@@ -12,6 +12,9 @@ class G4ndl(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NDL.4.5.tar.gz"
+ maintainers = ['drbenmorgan']
+
+ version('4.6', sha256='9d287cf2ae0fb887a2adce801ee74fb9be21b0d166dab49bcbee9408a5145408')
version('4.5', sha256='cba928a520a788f2bc8229c7ef57f83d0934bb0c6a18c31ef05ef4865edcdf8e')
def install(self, spec, prefix):
@@ -20,6 +23,11 @@ class G4ndl(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4NDL{0}'
+ .format(self.version))
+ env.set('G4NEUTRONHPDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4NDL.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4neutronxs/package.py b/var/spack/repos/builtin/packages/g4neutronxs/package.py
index f853780c35..41acc423a6 100644
--- a/var/spack/repos/builtin/packages/g4neutronxs/package.py
+++ b/var/spack/repos/builtin/packages/g4neutronxs/package.py
@@ -13,6 +13,10 @@ class G4neutronxs(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NEUTRONXS.1.4.tar.gz"
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ # Dataset not used after Geant4 10.4.x
version('1.4', sha256='57b38868d7eb060ddd65b26283402d4f161db76ed2169437c266105cca73a8fd')
def install(self, spec, prefix):
@@ -21,6 +25,11 @@ class G4neutronxs(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4NEUTRONXS{0}'
+ .format(self.version))
+ env.set('G4NEUTRONXSDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NEUTRONXS.%s.tar.gz" % version
diff --git a/var/spack/repos/builtin/packages/g4particlexs/package.py b/var/spack/repos/builtin/packages/g4particlexs/package.py
new file mode 100644
index 0000000000..e573025b64
--- /dev/null
+++ b/var/spack/repos/builtin/packages/g4particlexs/package.py
@@ -0,0 +1,35 @@
+# Copyright 2013-2020 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 G4particlexs(Package):
+ """Geant4 data for evaluated particle cross-sections on
+ natural composition of elements"""
+ homepage = "http://geant4.web.cern.ch"
+ url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.2.1.tar.gz"
+
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('2.1', sha256='094d103372bbf8780d63a11632397e72d1191dc5027f9adabaf6a43025520b41')
+ version('1.1', sha256='100a11c9ed961152acfadcc9b583a9f649dda4e48ab314fcd4f333412ade9d62')
+
+ def install(self, spec, prefix):
+ mkdirp(join_path(prefix.share, 'data'))
+ install_path = join_path(prefix.share, 'data', "G4PARTICLEXS{0}"
+ .format(self.version))
+ install_tree(self.stage.source_path, install_path)
+
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4PARTICLEXS{0}'
+ .format(self.version))
+ env.set('G4PARTICLEXSDATA', install_path)
+
+ def url_for_version(self, version):
+ """Handle version string."""
+ return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.%s.tar.gz" % version) \ No newline at end of file
diff --git a/var/spack/repos/builtin/packages/g4photonevaporation/package.py b/var/spack/repos/builtin/packages/g4photonevaporation/package.py
index ff47072c50..93d7f82de4 100644
--- a/var/spack/repos/builtin/packages/g4photonevaporation/package.py
+++ b/var/spack/repos/builtin/packages/g4photonevaporation/package.py
@@ -12,8 +12,13 @@ class G4photonevaporation(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PhotonEvaporation.4.3.2.tar.gz"
- version('4.3.2', sha256='d4641a6fe1c645ab2a7ecee09c34e5ea584fb10d63d2838248bfc487d34207c7')
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('5.5', sha256='5995dda126c18bd7f68861efde87b4af438c329ecbe849572031ceed8f5e76d7')
+ version('5.3', sha256='d47ababc8cbe548065ef644e9bd88266869e75e2f9e577ebc36bc55bf7a92ec8')
version('5.2', sha256='83607f8d36827b2a7fca19c9c336caffbebf61a359d0ef7cee44a8bcf3fc2d1f')
+ version('4.3.2', sha256='d4641a6fe1c645ab2a7ecee09c34e5ea584fb10d63d2838248bfc487d34207c7')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -22,6 +27,12 @@ class G4photonevaporation(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data',
+ 'PhotonEvaporation{0}'
+ .format(self.version))
+ env.set('G4LEVELGAMMADATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4PhotonEvaporation.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4pii/package.py b/var/spack/repos/builtin/packages/g4pii/package.py
index 65ca27aba2..ea91b5b9c9 100644
--- a/var/spack/repos/builtin/packages/g4pii/package.py
+++ b/var/spack/repos/builtin/packages/g4pii/package.py
@@ -12,6 +12,9 @@ class G4pii(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz"
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
version('1.3', sha256='6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926')
def install(self, spec, prefix):
@@ -20,6 +23,11 @@ class G4pii(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4PII{0}'
+ .format(self.version))
+ env.set('G4PIIDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py
index e36b0464e1..6f34e89cea 100644
--- a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py
+++ b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py
@@ -12,15 +12,27 @@ class G4radioactivedecay(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4RadioactiveDecay.5.1.1.tar.gz"
- version('5.1.1', sha256='f7a9a0cc998f0d946359f2cb18d30dff1eabb7f3c578891111fc3641833870ae')
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('5.4', sha256='240779da7d13f5bf0db250f472298c3804513e8aca6cae301db97f5ccdcc4a61')
+ version('5.3', sha256='5c8992ac57ae56e66b064d3f5cdfe7c2fee76567520ad34a625bfb187119f8c1')
version('5.2', sha256='99c038d89d70281316be15c3c98a66c5d0ca01ef575127b6a094063003e2af5d')
+ version('5.1.1', sha256='f7a9a0cc998f0d946359f2cb18d30dff1eabb7f3c578891111fc3641833870ae')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
- install_path = join_path(prefix.share, 'data', 'RadioactiveDecay{0}'
+ install_path = join_path(prefix.share, 'data',
+ 'RadioactiveDecay{0}'
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data',
+ 'RadioactiveDecay{0}'
+ .format(self.version))
+ env.set('G4RADIOACTIVEDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4RadioactiveDecay.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/g4realsurface/package.py b/var/spack/repos/builtin/packages/g4realsurface/package.py
index d20e6fddc5..dee32da8b9 100644
--- a/var/spack/repos/builtin/packages/g4realsurface/package.py
+++ b/var/spack/repos/builtin/packages/g4realsurface/package.py
@@ -12,9 +12,12 @@ class G4realsurface(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/RealSurface.1.0.tar.gz"
- version('1.0', sha256='3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1')
- version('2.1', sha256='2a287adbda1c0292571edeae2082a65b7f7bd6cf2bf088432d1d6f889426dcf3')
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
version('2.1.1', sha256='90481ff97a7c3fa792b7a2a21c9ed80a40e6be386e581a39950c844b2dd06f50')
+ version('2.1', sha256='2a287adbda1c0292571edeae2082a65b7f7bd6cf2bf088432d1d6f889426dcf3')
+ version('1.0', sha256='3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -22,6 +25,11 @@ class G4realsurface(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'RealSurface{0}'
+ .format(self.version))
+ env.set('G4REALSURFACEDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return "http://geant4-data.web.cern.ch/geant4-data/datasets/{0}RealSurface.{1}.tar.gz".format(
diff --git a/var/spack/repos/builtin/packages/g4saiddata/package.py b/var/spack/repos/builtin/packages/g4saiddata/package.py
index 0565276d90..0091d09744 100644
--- a/var/spack/repos/builtin/packages/g4saiddata/package.py
+++ b/var/spack/repos/builtin/packages/g4saiddata/package.py
@@ -12,6 +12,10 @@ class G4saiddata(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4SAIDDATA.1.1.tar.gz"
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
+ version('2.0', sha256='1d26a8e79baa71e44d5759b9f55a67e8b7ede31751316a9e9037d80090c72e91')
version('1.1', sha256='a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f')
def install(self, spec, prefix):
@@ -20,6 +24,11 @@ class G4saiddata(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4SAIDDATA{0}'
+ .format(self.version))
+ env.set('G4SAIDXSDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4SAIDDATA.%s.tar.gz" % version
diff --git a/var/spack/repos/builtin/packages/g4tendl/package.py b/var/spack/repos/builtin/packages/g4tendl/package.py
index 04ad834271..aac083f539 100644
--- a/var/spack/repos/builtin/packages/g4tendl/package.py
+++ b/var/spack/repos/builtin/packages/g4tendl/package.py
@@ -12,8 +12,11 @@ class G4tendl(Package):
homepage = "http://geant4.web.cern.ch"
url = "http://geant4-data.web.cern.ch/geant4-data/datasets/G4TENDL.1.3.tar.gz"
- version('1.3', sha256='52ad77515033a5d6f995c699809b464725a0e62099b5e55bf07c8bdd02cd3bce')
+ maintainers = ['drbenmorgan']
+
+ # Only versions relevant to Geant4 releases built by spack are added
version('1.3.2', sha256='3b2987c6e3bee74197e3bd39e25e1cc756bb866c26d21a70f647959fc7afb849')
+ version('1.3', sha256='52ad77515033a5d6f995c699809b464725a0e62099b5e55bf07c8bdd02cd3bce')
def install(self, spec, prefix):
mkdirp(join_path(prefix.share, 'data'))
@@ -21,6 +24,11 @@ class G4tendl(Package):
.format(self.version))
install_tree(self.stage.source_path, install_path)
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ install_path = join_path(self.prefix.share, 'data', 'G4TENDL{0}'
+ .format(self.version))
+ env.set('G4PARTICLEHPDATA', install_path)
+
def url_for_version(self, version):
"""Handle version string."""
return ("http://geant4-data.web.cern.ch/geant4-data/datasets/G4TENDL.%s.tar.gz" % version)
diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py
index d705344b39..4a48df005e 100644
--- a/var/spack/repos/builtin/packages/gasnet/package.py
+++ b/var/spack/repos/builtin/packages/gasnet/package.py
@@ -13,9 +13,13 @@ class Gasnet(AutotoolsPackage):
SPMD languages and libraries such as UPC, Co-Array Fortran, SHMEM,
Cray Chapel, and Titanium.
"""
- homepage = "http://gasnet.lbl.gov"
- url = "http://gasnet.lbl.gov/download/GASNet-1.24.0.tar.gz"
+ homepage = "https://gasnet.lbl.gov"
+ url = "https://gasnet.lbl.gov/EX/GASNet-2020.3.0.tar.gz"
+ version('2020.3.0', sha256='019eb2d2284856e6fabe6c8c0061c874f10e95fa0265245f227fd3497f1bb274')
+ version('2019.9.0', sha256='117f5fdb16e53d0fa8a47a1e28cccab1d8020ed4f6e50163d985dc90226aaa2c')
+ version('2019.6.0', sha256='839ba115bfb48083c66b4c1c27703d73063b75d2f1e0501d5eab2ad7f0f776c8')
+ version('2019.3.2', sha256='9e2175047879f1e8c7c4b0a9db3c2cd20c978371cd7f209cf669d402119b6fdb')
version('2019.3.0', sha256='97fe19bb5ab32d14a96d2dd19d0f03048f68bb20ca83abe0c00cdab40e86eba5')
version('1.32.0', sha256='42e4774b3bbc7c142f77c41b6ce86b594f579073f46c31f47f424c7e31ee1511')
version('1.30.0', sha256='b5d8c98c53174a98a41efb4ec9dedb62c0a9e8fa111bb6460cd4493beb80d497')
@@ -23,8 +27,9 @@ class Gasnet(AutotoolsPackage):
version('1.28.0', sha256='a7999fbaa1f220c2eb9657279c7e7cccd1b21865d5383c9a5685cfe05a0702bc')
version('1.24.0', sha256='76b4d897d5e2261ef83d0885c192e8ac039e32cb2464f11eb64eb3f9f2df38c0')
- variant('ibv', default=False, description="Support InfiniBand")
variant('mpi', default=True, description="Support MPI")
+ variant('ibv', default=False, description="Support InfiniBand")
+ variant('udp', default=False, description="Support UDP")
variant('aligned-segments', default=False,
description="Requirement to achieve aligned VM segments")
variant('pshm', default=True,
@@ -37,7 +42,7 @@ class Gasnet(AutotoolsPackage):
depends_on('mpi', when='+mpi')
def url_for_version(self, version):
- url = "http://gasnet.lbl.gov/"
+ url = "https://gasnet.lbl.gov/"
if version >= Version('2019'):
url += "EX/GASNet-{0}.tar.gz".format(version)
else:
@@ -48,11 +53,15 @@ class Gasnet(AutotoolsPackage):
def configure_args(self):
args = [
# TODO: factor IB suport out into architecture description.
- "--enable-par",
- "--enable-mpi-compat",
+ '--enable-par',
+ '--enable-mpi-compat',
+ '--enable-segment-fast',
+ '--disable-parsync',
+ '--with-segment-mmap-max=%s '
+ % (self.spec.variants['segment-mmap-max'].value),
# for consumers with shared libs
- "CC=%s %s" % (spack_cc, self.compiler.pic_flag),
- "CXX=%s %s" % (spack_cxx, self.compiler.pic_flag),
+ 'CC=%s %s' % (spack_cc, self.compiler.pic_flag),
+ 'CXX=%s %s' % (spack_cxx, self.compiler.pic_flag),
]
if '+aligned-segments' in self.spec:
@@ -60,17 +69,33 @@ class Gasnet(AutotoolsPackage):
else:
args.append('--disable-aligned-segments')
+ if '+pshm' in self.spec:
+ args.append('--enable-pshm')
+ else:
+ args.append('--disable-pshm')
+
if '+mpi' in self.spec:
args.extend(['--enable-mpi',
'--disable-udp',
'--disable-ibv',
+ '--disable-seq',
'MPI_CC=%s %s'
% (self.spec['mpi'].mpicc, self.compiler.pic_flag)])
if '+ibv' in self.spec:
- args.extend(['--enable-ibv', '--disable-udp', '--disable-mpi'])
+ args.extend(['--enable-ibv',
+ '--with-ibv-max-hcas=1',
+ '--enable-pthreads',
+ '--disable-udp',
+ '--disable-mpi',
+ '--disable-seq',
+ '--disable-smp',
+ '--disable-portals'])
if '+udp' in self.spec:
- args.extend(['--enable-udp', '--disable-ibv', '--disable-mpi'])
+ args.extend(['--enable-udp',
+ '--disable-ibv',
+ '--disable-mpi',
+ '--disable-seq'])
return args
diff --git a/var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-1.patch b/var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-1.patch
new file mode 100644
index 0000000000..96037707d3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-1.patch
@@ -0,0 +1,37 @@
+From ce9568e9e9cf6094be30e748821421e703754ffc Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Fri, 8 Nov 2019 19:53:18 +0100
+Subject: [PATCH] backport: re PR sanitizer/92154 (new glibc breaks arm
+ bootstrap due to libsanitizer)
+
+ Backported from mainline
+ 2019-10-22 Tamar Christina <tamar.christina@arm.com>
+
+ PR sanitizer/92154
+ * sanitizer_common/sanitizer_platform_limits_posix.cc:
+ Cherry-pick compiler-rt revision r375220.
+
+From-SVN: r277981
+---
+ libsanitizer/ChangeLog | 9 +++++++++
+ .../sanitizer_common/sanitizer_platform_limits_posix.cc | 6 +++++-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+index 6cd4a5bac8b0..06a605ff4670 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -1156,8 +1156,12 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
+-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
++#if (!defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)) && \
++ !defined(__arm__)
+ /* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
++/* On Arm glibc 2.31 and later provide a different mode field, this field is
++ never used by libsanitizer so we can simply ignore this assert for all glibc
++ versions. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
+ #endif
+
diff --git a/var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-2.patch b/var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-2.patch
new file mode 100644
index 0000000000..75234436e8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gcc/glibc-2.31-libsanitizer-2.patch
@@ -0,0 +1,73 @@
+From 75003cdd23c310ec385344e8040d490e8dd6d2be Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Fri, 20 Dec 2019 17:58:35 +0100
+Subject: [PATCH] backport: re PR sanitizer/92154 (new glibc breaks arm
+ bootstrap due to libsanitizer)
+
+ Backported from mainline
+ 2019-11-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/92154
+ * sanitizer_common/sanitizer_platform_limits_posix.h: Cherry-pick
+ llvm-project revision 947f9692440836dcb8d88b74b69dd379d85974ce.
+ * sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
+
+From-SVN: r279653
+---
+ libsanitizer/ChangeLog | 10 ++++++++++
+ .../sanitizer_platform_limits_posix.cc | 9 +++------
+ .../sanitizer_platform_limits_posix.h | 15 +--------------
+ 3 files changed, 14 insertions(+), 20 deletions(-)
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+index 06a605ff4670..d823a12190c0 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -1156,12 +1156,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
+-#if (!defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)) && \
+- !defined(__arm__)
+-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
+-/* On Arm glibc 2.31 and later provide a different mode field, this field is
+- never used by libsanitizer so we can simply ignore this assert for all glibc
+- versions. */
++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
++ on many architectures. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
+ #endif
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index 73af92af1e8f..6a673a7c9959 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -211,26 +211,13 @@ namespace __sanitizer {
+ u64 __unused1;
+ u64 __unused2;
+ #elif defined(__sparc__)
+-#if defined(__arch64__)
+ unsigned mode;
+- unsigned short __pad1;
+-#else
+- unsigned short __pad1;
+- unsigned short mode;
+ unsigned short __pad2;
+-#endif
+ unsigned short __seq;
+ unsigned long long __unused1;
+ unsigned long long __unused2;
+-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
+- unsigned int mode;
+- unsigned short __seq;
+- unsigned short __pad1;
+- unsigned long __unused1;
+- unsigned long __unused2;
+ #else
+- unsigned short mode;
+- unsigned short __pad1;
++ unsigned int mode;
+ unsigned short __seq;
+ unsigned short __pad2;
+ #if defined(__x86_64__) && !defined(_LP64)
diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py
index 431fcaa9da..cf16f1bc8f 100644
--- a/var/spack/repos/builtin/packages/gcc/package.py
+++ b/var/spack/repos/builtin/packages/gcc/package.py
@@ -25,9 +25,11 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
version('develop', svn=svn + 'trunk')
+ version('9.3.0', sha256='71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1')
version('9.2.0', sha256='ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206')
version('9.1.0', sha256='79a66834e96a6050d8fe78db2c3b32fb285b230b855d0a66288235bc04b327a0')
+ version('8.4.0', sha256='e30a6e52d10e1f27ed55104ad233c30bd1e99cfb5ff98ab022dc941edd1b2dd4')
version('8.3.0', sha256='64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c')
version('8.2.0', sha256='196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080')
version('8.1.0', sha256='1d1866f992626e61349a1ccd0b8d5253816222cdc13390dcfaa74b093aa2b153')
@@ -101,18 +103,22 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
depends_on('isl@0.15:0.18', when='@6:8.9')
depends_on('isl@0.15:0.20', when='@9:')
depends_on('zlib', when='@6:')
- depends_on('libiconv', when='platform=darwin')
+ depends_on('iconv', when='platform=darwin')
depends_on('gnat', when='languages=ada')
depends_on('binutils~libiberty', when='+binutils')
depends_on('zip', type='build', when='languages=java')
depends_on('cuda', when='+nvptx')
+ # The server is sometimes a bit slow to respond
+ timeout = {'timeout': 60}
+
resource(
name='newlib',
url='ftp://sourceware.org/pub/newlib/newlib-3.0.0.20180831.tar.gz',
sha256='3ad3664f227357df15ff34e954bfd9f501009a647667cd307bf0658aefd6eb5b',
destination='newlibsource',
- when='+nvptx'
+ when='+nvptx',
+ fetch_options=timeout
)
# nvptx-tools does not seem to work as a dependency,
@@ -193,6 +199,11 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
# Binutils can't build ld on macOS
conflicts('+binutils', when='platform=darwin')
+ # Newer binutils than RHEL's is required to run `as` on some instructions
+ # generated by new GCC (see https://github.com/spack/spack/issues/12235)
+ conflicts('~binutils', when='@7: os=rhel6',
+ msg='New GCC cannot use system assembler on RHEL6')
+
if sys.platform == 'darwin':
# Fix parallel build on APFS filesystem
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797
@@ -212,7 +223,7 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
# Fix system headers for Catalina SDK
# (otherwise __OSX_AVAILABLE_STARTING ends up undefined)
patch('https://raw.githubusercontent.com/Homebrew/formula-patches/b8b8e65e/gcc/9.2.0-catalina.patch',
- sha256='0b8d14a7f3c6a2f0d2498526e86e088926671b5da50a554ffa6b7f73ac4f132b', when='@9.2.0:')
+ sha256='0b8d14a7f3c6a2f0d2498526e86e088926671b5da50a554ffa6b7f73ac4f132b', when='@9.2.0')
# Use -headerpad_max_install_names in the build,
# otherwise updated load commands won't fit in the Mach-O header.
# This is needed because `gcc` avoids the superenv shim.
@@ -224,6 +235,10 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
patch('piclibs.patch', when='+piclibs')
patch('gcc-backport.patch', when='@4.7:4.9.2,5:5.3')
+ # Backport libsanitizer patch for glibc >= 2.31 and 8.1.0 <= gcc <= 9.2.0
+ # https://bugs.gentoo.org/708346
+ patch('glibc-2.31-libsanitizer-1.patch', when='@8.1.0:8.3.99,9.0.0:9.2.0')
+ patch('glibc-2.31-libsanitizer-2.patch', when='@8.1.0:8.3.99,9.0.0:9.2.0')
# Older versions do not compile with newer versions of glibc
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
patch('ucontext_t.patch', when='@4.9,5.1:5.4,6.1:6.4,7.1')
@@ -341,7 +356,7 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
options.extend([
'--with-native-system-header-dir=/usr/include',
'--with-sysroot={0}'.format(macos_sdk_path()),
- '--with-libiconv-prefix={0}'.format(spec['libiconv'].prefix)
+ '--with-libiconv-prefix={0}'.format(spec['iconv'].prefix)
])
return options
diff --git a/var/spack/repos/builtin/packages/gccmakedep/package.py b/var/spack/repos/builtin/packages/gccmakedep/package.py
index ffe068a35f..1b8614af2d 100644
--- a/var/spack/repos/builtin/packages/gccmakedep/package.py
+++ b/var/spack/repos/builtin/packages/gccmakedep/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Gccmakedep(AutotoolsPackage):
+class Gccmakedep(AutotoolsPackage, XorgPackage):
"""X.org gccmakedep utilities."""
homepage = "https://cgit.freedesktop.org/xorg/util/gccmakedep/"
- url = "https://www.x.org/archive/individual/util/gccmakedep-1.0.3.tar.gz"
+ xorg_mirror_path = "util/gccmakedep-1.0.3.tar.gz"
version('1.0.3', sha256='f9e2e7a590e27f84b6708ab7a81e546399b949bf652fb9b95193e0e543e6a548')
diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py
index 2182811233..af3165db1f 100644
--- a/var/spack/repos/builtin/packages/gdal/package.py
+++ b/var/spack/repos/builtin/packages/gdal/package.py
@@ -107,7 +107,7 @@ class Gdal(AutotoolsPackage):
# Optional dependencies
depends_on('libtool', type='build', when='+libtool')
depends_on('zlib', when='+libz')
- depends_on('libiconv', when='+libiconv')
+ depends_on('iconv', when='+libiconv')
depends_on('xz', when='+liblzma')
depends_on('zstd', when='+zstd @2.3:')
depends_on('postgresql', when='+pg')
@@ -172,6 +172,7 @@ class Gdal(AutotoolsPackage):
# https://trac.osgeo.org/gdal/wiki/BuildHints
def configure_args(self):
spec = self.spec
+ libs = []
# Required dependencies
args = [
@@ -250,7 +251,7 @@ class Gdal(AutotoolsPackage):
if '+libiconv' in spec:
args.append('--with-libiconv-prefix={0}'.format(
- spec['libiconv'].prefix))
+ spec['iconv'].prefix))
else:
args.append('--with-libiconv-prefix=no')
@@ -294,6 +295,9 @@ class Gdal(AutotoolsPackage):
# https://trac.osgeo.org/gdal/wiki/HDF
if '+hdf4' in spec:
args.append('--with-hdf4={0}'.format(spec['hdf'].prefix))
+ hdf4 = self.spec['hdf']
+ if '+libtirpc' in hdf4:
+ libs.append('-ltirpc')
else:
args.append('--with-hdf4=no')
@@ -480,6 +484,9 @@ class Gdal(AutotoolsPackage):
'--with-pdfium=no',
])
+ if libs:
+ args.append('LIBS=' + ' '.join(libs))
+
return args
@run_after('install')
diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py
index 825291feb0..e6aef7d671 100644
--- a/var/spack/repos/builtin/packages/gdb/package.py
+++ b/var/spack/repos/builtin/packages/gdb/package.py
@@ -33,6 +33,11 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage):
variant('python', default=True, description='Compile with Python support')
variant('xz', default=True, description='Compile with lzma support')
+ variant('source-highlight', default=False, description='Compile with source-highlight support')
+ variant('lto', default=False, description='Enable lto')
+ variant('quad', default=False, description='Enable quad')
+ variant('gold', default=False, description='Enable gold linker')
+ variant('ld', default=False, description='Enable ld')
# Required dependency
depends_on('texinfo', type='build')
@@ -40,6 +45,7 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage):
# Optional dependencies
depends_on('python', when='+python')
depends_on('xz', when='+xz')
+ depends_on('source-highlight', when='+source-highlight')
build_directory = 'spack-build'
@@ -49,4 +55,17 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage):
args.append('--with-python')
args.append('LDFLAGS={0}'.format(
self.spec['python'].libs.ld_flags))
+
+ if '+lto' in self.spec:
+ args.append('--enable-lto')
+
+ if '+quad' in self.spec:
+ args.append('--with-quad')
+
+ if '+gold' in self.spec:
+ args.append('--enable-gold')
+
+ if '+ld' in self.spec:
+ args.append('--enable-ld')
+
return args
diff --git a/var/spack/repos/builtin/packages/gdrcopy/package.py b/var/spack/repos/builtin/packages/gdrcopy/package.py
new file mode 100644
index 0000000000..e85c8fb0c0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gdrcopy/package.py
@@ -0,0 +1,27 @@
+# Copyright 2013-2020 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 Gdrcopy(MakefilePackage):
+ """A fast GPU memory copy library based on NVIDIA GPUDirect
+ RDMA technology."""
+
+ homepage = "https://github.com/NVIDIA/gdrcopy"
+ url = "https://github.com/NVIDIA/gdrcopy/archive/v2.0-beta.3.tar.gz"
+ git = "https://github.com/NVIDIA/gdrcopy"
+
+ version('master', branch='master')
+ version('2.0', sha256='98320e6e980a7134ebc4eedd6cf23647104f2b3c557f2eaf0d31a02609f5f2b0')
+ version('1.3', sha256='f11cdfe389b685f6636b80b4a3312dc014a385ad7220179c1318c60e2e28af3a')
+
+ def build(self, spec, prefix):
+ make('lib')
+
+ def install(self, spec, prefix):
+ mkdir(prefix.include)
+ mkdir(prefix.lib64)
+ make('lib_install', 'PREFIX={0}'.format(self.prefix))
diff --git a/var/spack/repos/builtin/packages/geant4-data/package.py b/var/spack/repos/builtin/packages/geant4-data/package.py
index c1372dee1a..4157fb76c6 100644
--- a/var/spack/repos/builtin/packages/geant4-data/package.py
+++ b/var/spack/repos/builtin/packages/geant4-data/package.py
@@ -8,88 +8,89 @@ import os
import glob
-class Geant4Data(Package):
- """An umbrella package to hold Geant4 data packages"""
+class Geant4Data(BundlePackage):
+ """A bundle package to hold Geant4 data packages"""
homepage = "http://geant4.cern.ch"
- url = "http://geant4-data.web.cern.ch/geant4-data/ReleaseNotes/ReleaseNotes4.10.3.html"
-
- version('10.03.p03', sha256='3e0d4d4e6854c8667d930fd5beaec09b7e6ec41f4847935e5d6a2720d0094b30', expand=False)
- version('10.04', sha256='f67fb899b99348a1a7e471a05f249f972e7e303c78238fc5f693b99968642255', expand=False)
-
- # geant4@10.03.p03
- depends_on("g4abla@3.0", when='@10.03.p03 ')
- depends_on("g4emlow@6.50", when='@10.03.p03 ')
- depends_on("g4ndl@4.5", when='@10.03.p03 ')
- depends_on("g4neutronxs@1.4", when='@10.03.p03 ')
- depends_on("g4saiddata@1.1", when='@10.03.p03 ')
- depends_on("g4ensdfstate@2.1", when='@10.03.p03 ')
- depends_on("g4photonevaporation@4.3.2", when='@10.03.p03 ')
- depends_on("g4pii@1.3", when='@10.03.p03 ')
- depends_on("g4radioactivedecay@5.1.1", when='@10.03.p03 ')
- depends_on("g4realsurface@1.0", when='@10.03.p03 ')
- depends_on("g4tendl@1.3", when='@10.03.p03 ')
- # geant4@10.04
- depends_on("g4abla@3.1", when='@10.04 ')
- depends_on("g4emlow@7.3", when='@10.04 ')
- depends_on("g4ndl@4.5", when='@10.04 ')
- depends_on("g4neutronxs@1.4", when='@10.04 ')
- depends_on("g4saiddata@1.1", when='@10.04 ')
- depends_on("g4ensdfstate@2.2", when='@10.04 ')
- depends_on("g4photonevaporation@5.2", when='@10.04 ')
- depends_on("g4pii@1.3", when='@10.04 ')
- depends_on("g4radioactivedecay@5.2", when='@10.04 ')
- depends_on("g4realsurface@2.1", when='@10.04 ')
- depends_on("g4tendl@1.3.2", when='@10.04 ')
+
+ maintainers = ['drbenmorgan']
+
+ version('10.6.0')
+ version('10.5.1')
+ version('10.4.3')
+ version('10.4.0')
+ version('10.3.3')
+
+ # Add install phase so we can create the data "view"
+ phases = ['install']
+
+ # For clarity, declare deps on a Major-Minor version basis as
+ # they generally don't change on the patch level
+ # Can move to declaring on a dataset basis if needed
+ # geant4@10.6.X
+ depends_on("g4ndl@4.6", when='@10.6.0')
+ depends_on("g4emlow@7.9", when='@10.6.0')
+ depends_on("g4photonevaporation@5.5", when='@10.6.0')
+ depends_on("g4radioactivedecay@5.4", when='@10.6.0')
+ depends_on("g4particlexs@2.1", when='@10.6.0')
+ depends_on("g4pii@1.3", when='@10.6.0')
+ depends_on("g4realsurface@2.1.1", when='@10.6.0')
+ depends_on("g4saiddata@2.0", when='@10.6.0')
+ depends_on("g4abla@3.1", when='@10.6.0')
+ depends_on("g4incl@1.0", when='@10.6.0')
+ depends_on("g4ensdfstate@2.2", when='@10.6.0')
+
+ # geant4@10.5.X
+ depends_on("g4ndl@4.5", when='@10.5.0:10.5.9999')
+ depends_on("g4emlow@7.7", when='@10.5.0:10.5.9999')
+ depends_on("g4photonevaporation@5.3", when='@10.5.0:10.5.9999')
+ depends_on("g4radioactivedecay@5.3", when='@10.5.0:10.5.9999')
+ depends_on("g4particlexs@1.1", when='@10.5.0:10.5.9999')
+ depends_on("g4pii@1.3", when='@10.5.0:10.5.9999')
+ depends_on("g4realsurface@2.1.1", when='@10.5.0:10.5.9999')
+ depends_on("g4saiddata@2.0", when='@10.5.0:10.5.9999')
+ depends_on("g4abla@3.1", when='@10.5.0:10.5.9999')
+ depends_on("g4incl@1.0", when='@10.5.0:10.5.9999')
+ depends_on("g4ensdfstate@2.2", when='@10.5.0:10.5.9999')
+
+ # geant4@10.4.X
+ depends_on("g4ndl@4.5", when='@10.4.0:10.4.9999')
+ depends_on("g4emlow@7.3", when='@10.4.0:10.4.9999')
+ depends_on("g4photonevaporation@5.2", when='@10.4.0:10.4.9999')
+ depends_on("g4radioactivedecay@5.2", when='@10.4.0:10.4.9999')
+ depends_on("g4neutronxs@1.4", when='@10.4.0:10.4.9999')
+ depends_on("g4pii@1.3", when='@10.4.0:10.4.9999')
+
+ depends_on("g4realsurface@2.1.1", when='@10.4.2:10.4.9999')
+ depends_on("g4realsurface@2.1", when='@10.4.0:10.4.1')
+
+ depends_on("g4saiddata@1.1", when='@10.4.0:10.4.9999')
+ depends_on("g4abla@3.1", when='@10.4.0:10.4.9999')
+ depends_on("g4ensdfstate@2.2", when='@10.4.0:10.4.9999')
+
+ # geant4@10.3.X
+ depends_on("g4ndl@4.5", when='@10.3.0:10.3.9999')
+ depends_on("g4emlow@6.50", when='@10.3.0:10.3.9999')
+
+ depends_on("g4photonevaporation@4.3.2", when='@10.3.1:10.3.9999')
+ depends_on("g4photonevaporation@4.3", when='@10.3.0')
+
+ depends_on("g4radioactivedecay@5.1.1", when='@10.3.1:10.3.9999')
+ depends_on("g4radioactivedecay@5.1", when='@10.3.0')
+
+ depends_on("g4neutronxs@1.4", when='@10.3.0:10.3.9999')
+ depends_on("g4pii@1.3", when='@10.3.0:10.3.9999')
+ depends_on("g4realsurface@1.0", when='@10.3.0:10.3.9999')
+ depends_on("g4saiddata@1.1", when='@10.3.0:10.3.9999')
+ depends_on("g4abla@3.0", when='@10.3.0:10.3.9999')
+ depends_on("g4ensdfstate@2.1", when='@10.3.0:10.3.9999')
def install(self, spec, prefix):
spec = self.spec
- version = self.version
- major = version[0]
- minor = version[1]
- if len(version) > 2:
- patch = version[-1]
- else:
- patch = 0
- data = 'Geant4-%s.%s.%s/data' % (major, minor, patch)
+ data = '{0}-{1}'.format(self.name, self.version.dotted)
datadir = join_path(spec.prefix.share, data)
+
with working_dir(datadir, create=True):
- for d in glob.glob('%s/share/data/*' %
- spec['g4abla'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4emlow'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4ndl'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4saiddata'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4neutronxs'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4ensdfstate'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4photonevaporation'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4pii'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4radioactivedecay'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4realsurface'].prefix):
- os.symlink(d, os.path.basename(d))
- for d in glob.glob('%s/share/data/*' %
- spec['g4tendl'].prefix):
- os.symlink(d, os.path.basename(d))
-
- def url_for_version(self, version):
- """Handle version string."""
- url = 'http://geant4-data.web.cern.ch/geant4-data/ReleaseNotes/'
- url = url + 'ReleaseNotes4.{0}.{1}.html'.format(version[0], version[1])
- return url
+ for s in spec.dependencies():
+ for d in glob.glob('{0}/data/*'.format(s.prefix.share)):
+ os.symlink(d, os.path.basename(d))
diff --git a/var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch b/var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch
new file mode 100644
index 0000000000..a493887679
--- /dev/null
+++ b/var/spack/repos/builtin/packages/geant4/geant4-10.4.3-cxx17-removed-features.patch
@@ -0,0 +1,18 @@
+diff --git a/cmake/Modules/G4BuildSettings.cmake b/cmake/Modules/G4BuildSettings.cmake
+index f68cb0a44..6bf4b6948 100644
+--- a/cmake/Modules/G4BuildSettings.cmake
++++ b/cmake/Modules/G4BuildSettings.cmake
+@@ -205,6 +205,13 @@ endif()
+ # Add Definition to flags for temporary back compatibility
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DG4USE_STD11")
+
++# Spack patch to support use of C++ features deprecated/removed in C++17
++# Only checked on AppleClang for now
++if(GEANT4_BUILD_CXXSTD GREATER 14)
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES=1")
++endif()
++#----
++
+ # Hold any appropriate compile flag(s) in variable for later export to
+ # config files. Needed to support clients using late CMake 2.8 where compile features
+ # are not available.
diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py
index 6fb2318479..4bf35792aa 100644
--- a/var/spack/repos/builtin/packages/geant4/package.py
+++ b/var/spack/repos/builtin/packages/geant4/package.py
@@ -4,8 +4,6 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
-import os
-import glob
class Geant4(CMakePackage):
@@ -15,83 +13,113 @@ class Geant4(CMakePackage):
science."""
homepage = "http://geant4.cern.ch/"
- url = "http://geant4.cern.ch/support/source/geant4.10.01.p03.tar.gz"
+ url = "https://gitlab.cern.ch/geant4/geant4/-/archive/v10.6.0/geant4-v10.6.0.tar.gz"
- version('10.05.p01', sha256='f4a292220500fad17e0167ce3153e96e3410ecbe96284e572dc707f63523bdff')
- version('10.04', sha256='f6d883132f110eb036c69da2b21df51f13c585dc7b99d4211ddd32f4ccee1670')
- version('10.03.p03', sha256='a164f49c038859ab675eec474d08c9d02be8c4be9c0c2d3aa8e69adf89e1e138')
+ maintainers = ['drbenmorgan']
- variant('qt', default=False, description='Enable Qt support')
- variant('vecgeom', default=False, description='Enable vecgeom support')
- variant('opengl', default=False, description='Optional OpenGL support')
- variant('x11', default=False, description='Optional X11 support')
- variant('motif', default=False, description='Optional motif support')
- variant('threads', default=True, description='Build with multithreading')
- variant('data', default=True, description='Install geant4 data')
+ version('10.6.0', sha256='eebe6a170546064ff81ab3b00f513ccd1d4122a026514982368d503ac55a4ee4')
+ version('10.5.1', sha256='2397eb859dc4de095ff66059d8bda9f060fdc42e10469dd7890946293eeb0e39')
+ version('10.4.3', sha256='67f3bb6405a2c77e573936c2b933f5a4a33915aa379626a2eb3012009b91e1da')
+ version('10.4.0', sha256='e919b9b0a88476e00c0b18ab65d40e6a714b55ee4778f66bac32a5396c22aa74')
+ version('10.3.3', sha256='bcd36a453da44de9368d1d61b0144031a58e4b43a6d2d875e19085f2700a89d8')
+ _cxxstd_values = ('11', '14', '17')
variant('cxxstd',
- default='11',
- values=('11', '14', '17'),
+ default=_cxxstd_values[0],
+ values=_cxxstd_values,
multi=False,
description='Use the specified C++ standard when building.')
- depends_on('cmake@3.5:', type='build')
-
- # C++11 support
- depends_on("xerces-c cxxstd=11", when="cxxstd=11")
- depends_on("clhep@2.3.3.0: cxxstd=11", when="@10.03.p03: cxxstd=11")
- depends_on("vecgeom cxxstd=11", when="+vecgeom cxxstd=11")
+ variant('threads', default=True, description='Build with multithreading')
+ variant('vecgeom', default=False, description='Enable vecgeom support')
+ variant('opengl', default=False, description='Optional OpenGL support')
+ variant('x11', default=False, description='Optional X11 support')
+ variant('motif', default=False, description='Optional motif support')
+ variant('qt', default=False, description='Enable Qt support')
- # C++14 support
- depends_on("xerces-c cxxstd=14", when="cxxstd=14")
- depends_on("clhep@2.3.3.0: cxxstd=14", when="@10.03.p03: cxxstd=14")
- depends_on("vecgeom cxxstd=14", when="+vecgeom cxxstd=14")
+ depends_on('cmake@3.5:', type='build')
+ depends_on('cmake@3.8:', type='build', when='@10.6.0:')
- # C++17 support
- depends_on("xerces-c cxxstd=17", when="cxxstd=17")
- depends_on("clhep@2.3.3.0: cxxstd=17", when="@10.03.p03: cxxstd=17")
- patch('cxx17.patch', when='@:10.03.p99 cxxstd=17')
- patch('cxx17_geant4_10_0.patch', level=1, when='@10.04.00: cxxstd=17')
- depends_on("vecgeom cxxstd=17", when="+vecgeom cxxstd=17")
+ depends_on('geant4-data@10.6.0', when='@10.6.0')
+ depends_on('geant4-data@10.5.1', when='@10.5.1')
+ depends_on('geant4-data@10.4.3', when='@10.4.3')
+ depends_on('geant4-data@10.4.0', when='@10.4.0')
+ depends_on('geant4-data@10.3.3', when='@10.3.3')
depends_on("expat")
depends_on("zlib")
- depends_on("xerces-c")
+
+ for std in _cxxstd_values:
+ # CLHEP version requirements to be reviewed
+ depends_on('clhep@2.3.3.0: cxxstd=' + std,
+ when='@10.3.3: cxxstd=' + std)
+
+ # Spack only supports Xerces-c 3 and above, so no version req
+ depends_on('xerces-c cxxstd=' + std, when='cxxstd=' + std)
+
+ # Vecgeom specific versions for each Geant4 version
+ depends_on('vecgeom@1.1.5 cxxstd=' + std,
+ when='@10.6.0:10.6.99 +vecgeom cxxstd=' + std)
+ depends_on('vecgeom@1.1.0 cxxstd=' + std,
+ when='@10.5.0:10.5.99 +vecgeom cxxstd=' + std)
+ depends_on('vecgeom@0.5.2 cxxstd=' + std,
+ when='@10.4.0:10.4.99 +vecgeom cxxstd=' + std)
+ depends_on('vecgeom@0.3rc cxxstd=' + std,
+ when='@10.3.0:10.3.99 +vecgeom cxxstd=' + std)
+
+ # Visualization driver ependencies
depends_on("gl", when='+opengl')
depends_on("glx", when='+opengl+x11')
depends_on("libx11", when='+x11')
depends_on("libxmu", when='+x11')
depends_on("motif", when='+motif')
- depends_on("qt@4.8:", when="+qt")
-
- # if G4 data not installed with geant4
- # depend on G4 data packages
- # this allows external data installations
- # to avoid duplication
-
- depends_on('geant4-data@10.03.p03', when='@10.03.p03 ~data')
- depends_on('geant4-data@10.04', when='@10.04 ~data')
- depends_on('geant4-data@10.05.p01', when='@10.05.p01 ~data')
+ depends_on("qt@5:", when="+qt")
# As released, 10.03.03 has issues with respect to using external
# CLHEP.
- patch('CLHEP-10.03.03.patch', level=1, when='@10.03.p03')
+ patch('CLHEP-10.03.03.patch', level=1, when='@10.3.3')
+ # These patches can be applied independent of the cxxstd value?
+ patch('cxx17.patch', when='@:10.3.99 cxxstd=17')
+ patch('cxx17_geant4_10_0.patch', level=1, when='@10.4.0 cxxstd=17')
+ patch('geant4-10.4.3-cxx17-removed-features.patch',
+ level=1, when='@10.4.3 cxxstd=17')
def cmake_args(self):
spec = self.spec
+ # Core options
options = [
- '-DGEANT4_USE_GDML=ON',
+ '-DGEANT4_BUILD_CXXSTD=c++{0}'.format(
+ self.spec.variants['cxxstd'].value),
'-DGEANT4_USE_SYSTEM_CLHEP=ON',
- '-DGEANT4_USE_SYSTEM_CLHEP_GRANULAR=ON',
- '-DGEANT4_USE_G3TOG4=ON',
- '-DGEANT4_INSTALL_DATA=ON',
- '-DGEANT4_BUILD_TLS_MODEL=global-dynamic',
'-DGEANT4_USE_SYSTEM_EXPAT=ON',
'-DGEANT4_USE_SYSTEM_ZLIB=ON',
- '-DXERCESC_ROOT_DIR:STRING=%s' %
- spec['xerces-c'].prefix, ]
+ '-DGEANT4_USE_G3TOG4=ON',
+ '-DGEANT4_USE_GDML=ON',
+ '-DXERCESC_ROOT_DIR={0}'.format(spec['xerces-c'].prefix)
+ ]
+
+ # Multithreading
+ options.append(self.define_from_variant('GEANT4_BUILD_MULTITHREADED',
+ 'threads'))
+ if '+threads' in spec:
+ # This should be a variant
+ options.append('-DGEANT4_BUILD_TLS_MODEL=global-dynamic')
+
+ # install the data with geant4
+ datadir = spec['geant4-data'].prefix.share
+ dataver = '{0}-{1}'.format(spec['geant4-data'].name,
+ spec['geant4-data'].version.dotted)
+ datapath = join_path(datadir, dataver)
+ options.append('-DGEANT4_INSTALL_DATADIR={0}'.format(datapath))
+ # Vecgeom
+ if '+vecgeom' in spec:
+ options.append('-DGEANT4_USE_USOLIDS=ON')
+ options.append('-DUSolids_DIR=%s' % spec[
+ 'vecgeom'].prefix.lib.CMake.USolids)
+
+ # Visualization options
if 'platform=darwin' not in spec:
if "+x11" in spec and "+opengl" in spec:
options.append('-DGEANT4_USE_OPENGL_X11=ON')
@@ -100,61 +128,10 @@ class Geant4(CMakePackage):
if "+x11" in spec:
options.append('-DGEANT4_USE_RAYTRACER_X11=ON')
- options.append('-DGEANT4_BUILD_CXXSTD=c++{0}'.format(
- self.spec.variants['cxxstd'].value))
-
if '+qt' in spec:
options.append('-DGEANT4_USE_QT=ON')
options.append(
'-DQT_QMAKE_EXECUTABLE=%s' %
spec['qt'].prefix.bin.qmake)
- if '+vecgeom' in spec:
- options.append('-DGEANT4_USE_USOLIDS=ON')
- options.append('-DUSolids_DIR=%s' % spec[
- 'vecgeom'].prefix.lib.CMake.USolids)
-
- on_or_off = lambda opt: 'ON' if '+' + opt in spec else 'OFF'
- options.append('-DGEANT4_BUILD_MULTITHREADED=' + on_or_off('threads'))
-
- # install the data with geant4
- options.append('-DGEANT4_INSTALL_DATA=' + on_or_off('data'))
-
return options
-
- def url_for_version(self, version):
- """Handle Geant4's unusual version string."""
- return ("http://geant4.cern.ch/support/source/geant4.%s.tar.gz" % version)
-
- @run_before('cmake')
- def make_data_links(self):
- if '+data' in self.spec:
- return
- spec = self.spec
- version = self.version
- major = version[0]
- minor = version[1]
- if len(version) > 2:
- patch = version[-1]
- else:
- patch = 0
- datadir = 'Geant4-%s.%s.%s/data' % (major, minor, patch)
- with working_dir(join_path(spec.prefix.share, datadir),
- create=True):
- dirs = glob.glob('%s/%s/*' %
- (spec['geant4-data'].prefix.share, datadir))
- for d in dirs:
- target = os.readlink(d)
- os.symlink(target, os.path.basename(target))
-
- def setup_dependent_build_environment(self, env, dependent_spec):
- version = self.version
- major = version[0]
- minor = version[1]
- if len(version) > 2:
- patch = version[-1]
- else:
- patch = 0
- datadir = 'Geant4-%s.%s.%s' % (major, minor, patch)
- env.append_path('CMAKE_MODULE_PATH', join_path(
- self.prefix.lib64, datadir, 'Modules'))
diff --git a/var/spack/repos/builtin/packages/gengetopt/package.py b/var/spack/repos/builtin/packages/gengetopt/package.py
new file mode 100644
index 0000000000..44389fa38a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gengetopt/package.py
@@ -0,0 +1,36 @@
+# Copyright 2013-2020 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 Gengetopt(AutotoolsPackage):
+ """Tool to write command line option parsing code for C programs"""
+
+ homepage = "https://www.gnu.org/software/gengetopt/gengetopt.html"
+ url = "ftp://ftp.gnu.org/gnu/gengetopt/gengetopt-2.23.tar.xz"
+
+ maintainers = ['rblake-llnl']
+
+ version('2.23', sha256='b941aec9011864978dd7fdeb052b1943535824169d2aa2b0e7eae9ab807584ac')
+ version('2.22.6', sha256='30b05a88604d71ef2a42a2ef26cd26df242b41f5b011ad03083143a31d9b01f7')
+ version('2.22.5', sha256='3b6fb3240352b0eb0c5b8583b58b62cbba58167cef5a7e82fa08a7f968ed2137')
+ version('2.22.4', sha256='4edf6b24ec8085929c86835c51d5bf904052cc671530c15f9314d9b87fe54421')
+ version('2.22.3', sha256='8ce6b3df49cefea97bd522dc054ede2037939978bf23754d5c17311e5a1df3dc')
+ version('2.22.2', sha256='4bf96bea9f80ac85c716cd07f5fe68602db7f380f6dc2d025f17139aa0b56455')
+ version('2.22.1', sha256='e8d1de4f8c102263844886a2f2b57d82c291c1eae6307ea406fb96f29a67c3a7')
+ version('2.22', sha256='b605555e41e9bf7e852a37b051e6a49014e561f21290680e3a60c279488d417e')
+ version('2.21', sha256='355a32310b2fee5e7289d6d6e89eddd13275a7c85a243dc5dd293a6cb5bb047e')
+ version('2.20', sha256='4c8b3b42cecff579f5f9de5ccad47e0849e0245e325a04ff5985c248141af1a4')
+
+ parallel = False
+
+ def url_for_version(self, version):
+ url = 'ftp://ftp.gnu.org/gnu/gengetopt/gengetopt-{0}.tar.{1}'
+ if version >= Version('2.23'):
+ suffix = 'xz'
+ else:
+ suffix = 'gz'
+ return url.format(version, suffix)
diff --git a/var/spack/repos/builtin/packages/genometools/package.py b/var/spack/repos/builtin/packages/genometools/package.py
index 082fc77741..ac7ef81805 100644
--- a/var/spack/repos/builtin/packages/genometools/package.py
+++ b/var/spack/repos/builtin/packages/genometools/package.py
@@ -11,16 +11,17 @@ class Genometools(MakefilePackage):
of genome informatics) combined into a single binary named gt."""
homepage = "http://genometools.org/"
- url = "http://genometools.org/pub/genometools-1.5.9.tar.gz"
+ url = "https://github.com/genometools/genometools/archive/v1.6.1.tar.gz"
- version('1.5.9', sha256='36923198a4214422886fd1425ef986bd7e558c73b94194982431cfd3dc7eb387')
+ version('1.6.1', sha256='528ca143a7f1d42af8614d60ea1e5518012913a23526d82e434f0dad2e2d863f')
+ version('1.5.9', sha256='bba8e043f097e7c72e823f73cb0efbd20bbd60f1ce797a0e4c0ab632b170c909')
depends_on('perl', type=('build', 'run'))
depends_on('cairo')
depends_on('pango')
# build fails with gcc 7"
- conflicts('%gcc@7.1.0:')
+ conflicts('%gcc@7.1.0:', when='@:1.5.9')
def install(self, spec, prefix):
make('install', 'prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py
index 1bd236051a..7b92fb6545 100644
--- a/var/spack/repos/builtin/packages/git/package.py
+++ b/var/spack/repos/builtin/packages/git/package.py
@@ -25,6 +25,11 @@ class Git(AutotoolsPackage):
releases = [
{
+ 'version': '2.26.0',
+ 'sha256': 'aa168c2318e7187cd295a645f7370cc6d71a324aafc932f80f00c780b6a26bed',
+ 'sha256_manpages': 'c1ffaf0b4cd1e80a0eb0d4039e208c9d411ef94d5da44e38363804e1a7961218'
+ },
+ {
'version': '2.25.0',
'sha256': 'a98c9b96d91544b130f13bf846ff080dda2867e77fe08700b793ab14ba5346f6',
'sha256_manpages': '22b2380842ef75e9006c0358de250ead449e1376d7e5138070b9a3073ef61d44'
@@ -177,7 +182,7 @@ class Git(AutotoolsPackage):
depends_on('curl')
depends_on('expat')
depends_on('gettext')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('libidn2')
depends_on('openssl')
depends_on('pcre', when='@:2.13')
@@ -221,7 +226,7 @@ class Git(AutotoolsPackage):
configure_args = [
'--with-curl={0}'.format(spec['curl'].prefix),
'--with-expat={0}'.format(spec['expat'].prefix),
- '--with-iconv={0}'.format(spec['libiconv'].prefix),
+ '--with-iconv={0}'.format(spec['iconv'].prefix),
'--with-openssl={0}'.format(spec['openssl'].prefix),
'--with-perl={0}'.format(spec['perl'].command.path),
'--with-zlib={0}'.format(spec['zlib'].prefix),
diff --git a/var/spack/repos/builtin/packages/gitconddb/package.py b/var/spack/repos/builtin/packages/gitconddb/package.py
new file mode 100644
index 0000000000..9400ea549c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gitconddb/package.py
@@ -0,0 +1,43 @@
+# Copyright 2013-2020 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 Gitconddb(CMakePackage):
+ """Conditions Database library using a Git repository as the
+ storage backend"""
+
+ homepage = "https://gitlab.cern.ch/lhcb/GitCondDB"
+ url = "https://gitlab.cern.ch/lhcb/GitCondDB/-/archive/0.1.1/GitCondDB-0.1.1.tar.gz"
+ git = "https://gitlab.cern.ch/lhcb/GitCondDB.git"
+
+ maintainers = ['drbenmorgan']
+
+ version('master', branch='master')
+ version('0.1.1', sha256='024a6867722a3a622ed4327ea7d15641dd48e4e8411bdcc21915e406b3c479a2')
+
+ # Add the cxxstd variant for forward compatibility, though we require 17
+ _cxxstd_values = ('17',)
+ variant('cxxstd',
+ default='17',
+ values=_cxxstd_values,
+ multi=False,
+ description='Use the specified C++ standard when building.')
+
+ depends_on('cmake@3.10:', type='build')
+ depends_on('pkgconfig', type='build')
+ depends_on('nlohmann-json@3.2.0:', type='build')
+ depends_on('googletest@1.8.1:', type='build')
+
+ for s in _cxxstd_values:
+ depends_on('fmt@5.2.0: cxxstd=' + s, when='cxxstd=' + s)
+ # Maybe also a boost dependency for macOS older than catalina
+
+ depends_on('libgit2')
+
+ # Known conflicts on C++17 compatibility (aggressive for now)
+ conflicts('%gcc@:7.9.999', msg="GitCondDB requires GCC 8 or newer for C++17 support")
+ conflicts('%clang platform=darwin', when="@:0.1.99", msg="No Darwin support for clang in older versions")
diff --git a/var/spack/repos/builtin/packages/glfw/package.py b/var/spack/repos/builtin/packages/glfw/package.py
new file mode 100644
index 0000000000..168fff8b0e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/glfw/package.py
@@ -0,0 +1,39 @@
+# 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 Glfw(CMakePackage):
+ """GLFW is an Open Source, multi-platform library for
+ OpenGL, OpenGL ES and Vulkan development on the desktop. It
+ provides a simple API for creating windows, contexts and
+ surfaces, receiving input and events."""
+
+ homepage = "https://www.glfw.org/"
+ url = "https://github.com/glfw/glfw/archive/3.3.2.tar.gz"
+
+ version('3.3.2', sha256='98768e12e615fbe9f3386f5bbfeb91b5a3b45a8c4c77159cef06b1f6ff749537')
+ version('3.3.1', sha256='6bca16e69361798817a4b62a5239a77253c29577fcd5d52ae8b85096e514177f')
+ version('3.3', sha256='81bf5fde487676a8af55cb317830703086bb534c53968d71936e7b48ee5a0f3e')
+ version('3.2.1', sha256='e10f0de1384d75e6fc210c53e91843f6110d6c4f3afbfb588130713c2f9d8fe8')
+ version('3.2', sha256='cb3aab46757981a39ae108e5207a1ecc4378e68949433a2b040ce2e17d8f6aa6')
+ version('3.1.2', sha256='6ac642087682aaf7f8397761a41a99042b2c656498217a1c63ba9706d1eef122')
+ version('3.1.1', sha256='4de311ec9bf43bfdc8423ddf93b91dc54dc73dcfbedfb0991b6fbb3a9baf245f')
+ version('3.1', sha256='2140f4c532e7ce4c84cb7e4c419d0979d5954fa1ce204b7646491bd2cc5bf308')
+ version('3.0.4', sha256='a4e7c57db2086803de4fc853bd472ff8b6d2639b9aa16e6ac6b19ffb53958caf')
+ version('3.0.3', sha256='7a182047ba6b1fdcda778b79aac249bb2328b6d141188cb5df29560715d01693')
+
+ depends_on('libxrandr')
+ depends_on('libxinerama')
+ depends_on('libxcursor')
+ depends_on('libxdamage')
+ depends_on('libxft')
+ depends_on('libxi')
+ depends_on('libxmu')
+ depends_on('freetype')
+ depends_on('fontconfig')
+ depends_on('doxygen', type='build')
+ depends_on('pkgconfig', type='build')
diff --git a/var/spack/repos/builtin/packages/glib/meson-gettext.patch b/var/spack/repos/builtin/packages/glib/meson-gettext.patch
new file mode 100644
index 0000000000..c0c13065e2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/glib/meson-gettext.patch
@@ -0,0 +1,34 @@
+--- a/meson.build
++++ b/meson.build
+@@ -1916,10 +1916,14 @@ endif
+ # proxy-libintl subproject.
+ # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
+ # implementations. This could be extended if issues are found in some platforms.
+-if cc.has_function('ngettext')
++gettext_opt = get_option('gettext')
++found_gettext = false
++if ['auto', 'libc'].contains(gettext_opt) and cc.has_function('ngettext')
+ libintl = []
+ have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset')
+-else
++ found_gettext = true
++endif
++if not found_gettext and ['auto', 'external'].contains(gettext_opt)
+ libintl = cc.find_library('intl', required : false)
+ if not libintl.found()
+ libintl = subproject('proxy-libintl').get_variable('intl_dep')
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -9,6 +9,12 @@ option('iconv',
+ value : 'auto',
+ description : 'iconv implementation to use (\'libc\' = \'Part of the C library\'; \'external\' = \'External libiconv\'; \'auto\' = \'Auto-detect which iconv is available\')')
+
++option('gettext',
++ type : 'combo',
++ choices : ['auto', 'libc', 'external'],
++ value : 'auto',
++ description : 'gettext implementation to use (\'libc\' = \'Part of the C library\'; \'external\' = \'External libintl\'; \'auto\' = \'Auto-detect which gettext is available\')')
++
+ option('charsetalias_dir',
+ type : 'string',
+ value : '',
diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py
index e43a9d1728..b7cf326e85 100644
--- a/var/spack/repos/builtin/packages/glib/package.py
+++ b/var/spack/repos/builtin/packages/glib/package.py
@@ -8,7 +8,7 @@ from spack import *
import os.path
-class Glib(AutotoolsPackage):
+class Glib(Package):
"""GLib provides the core application building blocks for
libraries and applications written in C.
@@ -21,6 +21,11 @@ class Glib(AutotoolsPackage):
homepage = "https://developer.gnome.org/glib/"
url = "https://ftp.gnome.org/pub/gnome/sources/glib/2.53/glib-2.53.1.tar.xz"
+ version('2.64.1', sha256='17967603bcb44b6dbaac47988d80c29a3d28519210b28157c2bd10997595bbc7')
+ version('2.62.6', sha256='104fa26fbefae8024ff898330c671ec23ad075c1c0bce45c325c6d5657d58b9c')
+ version('2.60.7', sha256='8b12c0af569afd3b71200556ad751bad4cf4bf7bc4b5f880638459a42ca86310')
+ version('2.58.3', sha256='8f43c31767e88a25da72b52a40f3301fefc49a665b56dc10ee7cc9565cbe7481')
+ version('2.56.4', sha256='27f703d125efb07f8a743666b580df0b4095c59fc8750e8890132c91d437504c')
version('2.56.3', sha256='a9a4c5b4c81b6c75bc140bdf5e32120ef3ce841b7413214ecf5f987acec74cb2')
version('2.56.2', sha256='d64abd16813501c956c4e123ae79f47f1b58de573df9fdd3b0795f1e2c1aa789')
version('2.56.1', sha256='40ef3f44f2c651c7a31aedee44259809b6f03d3d20be44545cd7d177221c0b8d')
@@ -38,6 +43,10 @@ class Glib(AutotoolsPackage):
description='Enable tracing support'
)
+ depends_on('meson@0.49.2:', when='@2.61.2:', type='build')
+ depends_on('meson@0.48.0:', when='@2.58.0:', type='build')
+ depends_on('ninja', when='@2.58.0:', type='build')
+
depends_on('pkgconfig', type='build')
depends_on('libffi')
depends_on('zlib')
@@ -46,32 +55,94 @@ class Glib(AutotoolsPackage):
depends_on('python', type=('build', 'run'), when='@2.53.4:')
depends_on('pcre+utf', when='@2.48:')
depends_on('util-linux', when='+libmount')
- depends_on('libiconv')
+ depends_on('iconv')
# The following patch is needed for gcc-6.1
patch('g_date_strftime.patch', when='@2.42.1')
# Clang doesn't seem to acknowledge the pragma lines to disable the -Werror
# around a legitimate usage.
- patch('no-Werror=format-security.patch')
+ patch('no-Werror=format-security.patch', when='@:2.57.99')
# Patch to prevent compiler errors in kernels older than 2.6.35
patch('old-kernels.patch', when='@2.56.0:2.56.1 os=rhel6')
patch('old-kernels.patch', when='@2.56.0:2.56.1 os=centos6')
patch('old-kernels.patch', when='@2.56.0:2.56.1 os=scientific6')
+ # glib prefers the libc version of gettext, which breaks the build if the
+ # external version is also found.
+ patch('meson-gettext.patch', when='@2.58.0:')
+
def url_for_version(self, version):
"""Handle glib's version-based custom URLs."""
url = 'http://ftp.gnome.org/pub/gnome/sources/glib'
return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version)
+ def meson_args(self):
+ args = ['-Dgettext=external']
+ if self.spec.satisfies('@2.63.5:'):
+ if '+libmount' in self.spec:
+ args.append('-Dlibmount=enabled')
+ else:
+ args.append('-Dlibmount=disabled')
+ else:
+ if '+libmount' in self.spec:
+ args.append('-Dlibmount=true')
+ else:
+ args.append('-Dlibmount=false')
+ if 'libc' in self.spec:
+ args.append('-Diconv=libc')
+ else:
+ if self.spec.satisfies('@2.61.0:'):
+ args.append('-Diconv=external')
+ else:
+ args.append('-Diconv=gnu')
+ if 'tracing=dtrace' in self.spec:
+ args.append('-Ddtrace=true')
+ else:
+ args.append('-Ddtrace=false')
+ if 'tracing=systemtap' in self.spec:
+ args.append('-Dsystemtap=true')
+ else:
+ args.append('-Dsystemtap=false')
+ if self.spec.satisfies('@2.59.0:'):
+ args.append('-Dselinux=disabled')
+ else:
+ args.append('-Dselinux=false')
+ args.append('-Dgtk_doc=false')
+ return args
+
+ def install(self, spec, prefix):
+ with working_dir('spack-build', create=True):
+ # We cannot simply do
+ # meson('..', *std_meson_args, *self.meson_args())
+ # because that is not Python 2 compatible. Instead, collect
+ # arguments into a temporary buffer first.
+ args = []
+ args.extend(std_meson_args)
+ args.extend(self.meson_args())
+ meson('..', *args)
+ ninja('-v')
+ if self.run_tests:
+ ninja('test')
+ ninja('install')
+
def configure_args(self):
args = []
- args.extend(self.enable_or_disable('libmount'))
+ if '+libmount' in self.spec:
+ args.append('--enable-libmount')
+ else:
+ args.append('--disable-libmount')
if self.spec.satisfies('@2.53.4:'):
args.append('--with-python={0}'.format(
os.path.basename(self.spec['python'].command.path))
)
- args.append('--with-libiconv=gnu')
- args.extend(self.enable_or_disable('tracing'))
+ if 'libc' in self.spec:
+ args.append('--with-libiconv=maybe')
+ else:
+ args.append('--with-libiconv=gnu')
+ if 'tracing=dtrace' in self.spec or 'tracing=systemtap' in self.spec:
+ args.append('--enable-tracing')
+ else:
+ args.append('--disable-tracing')
# SELinux is not available in Spack, so glib should not use it.
args.append('--disable-selinux')
# glib should not use the globally installed gtk-doc. Otherwise,
@@ -88,11 +159,21 @@ class Glib(AutotoolsPackage):
args.append('GTKDOC_REBASE={0}'.format(true))
return args
+ @when('@:2.57.99')
+ def install(self, spec, prefix):
+ configure('--prefix={0}'.format(prefix), *self.configure_args())
+ make()
+ if self.run_tests:
+ make('check')
+ make('install')
+ if self.run_tests:
+ make('installcheck')
+
@property
def dtrace_copy_path(self):
return join_path(self.stage.source_path, 'dtrace-copy')
- @run_before('configure')
+ @run_before('install')
def fix_python_path(self):
if not self.spec.satisfies('@2.53.4:'):
return
@@ -104,7 +185,7 @@ class Glib(AutotoolsPackage):
os.path.basename(self.spec['python'].command.path)),
*files)
- @run_before('configure')
+ @run_before('install')
def fix_dtrace_usr_bin_path(self):
if 'tracing=dtrace' not in self.spec:
return
diff --git a/var/spack/repos/builtin/packages/glproto/package.py b/var/spack/repos/builtin/packages/glproto/package.py
index ff78f859bd..59259d7e5f 100644
--- a/var/spack/repos/builtin/packages/glproto/package.py
+++ b/var/spack/repos/builtin/packages/glproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Glproto(AutotoolsPackage):
+class Glproto(AutotoolsPackage, XorgPackage):
"""OpenGL Extension to the X Window System.
This extension defines a protocol for the client to send 3D rendering
commands to the X server."""
homepage = "https://www.x.org/wiki/"
- url = "https://www.x.org/archive/individual/proto/glproto-1.4.17.tar.gz"
+ xorg_mirror_path = "proto/glproto-1.4.17.tar.gz"
version('1.4.17', sha256='9d8130fec2b98bd032db7730fa092dd9dec39f3de34f4bb03ceb43b9903dbc96')
diff --git a/var/spack/repos/builtin/packages/glusterfs/package.py b/var/spack/repos/builtin/packages/glusterfs/package.py
new file mode 100644
index 0000000000..89024cf977
--- /dev/null
+++ b/var/spack/repos/builtin/packages/glusterfs/package.py
@@ -0,0 +1,44 @@
+# Copyright 2013-2020 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 Glusterfs(AutotoolsPackage):
+ """Gluster is a software defined distributed storage that can scale to
+ several petabytes. It provides interfaces for object, block and file
+ storage."""
+
+ homepage = "https://www.gluster.org/"
+ url = "https://download.gluster.org/pub/gluster/glusterfs/7/7.3/glusterfs-7.3.tar.gz"
+ list_url = "https://download.gluster.org/pub/gluster/glusterfs/"
+ list_depth = 2
+
+ version('7.3', sha256='2401cc7c3f5488f6fc5ea09ce2ab30c918612f592571fb3de6124f8482ad4954')
+ version('7.2', sha256='8e43614967b90d64495fbe2c52230dd72572ce219507fb48bc317b1c228a06e1')
+ version('7.1', sha256='ffc5bd78b079009382bd01391865646bc9b2e8e72366afc96d62ba891dd9dbce')
+ version('7.0', sha256='8a872518bf9bd4dc1568f45c716bcde09e3bf7abf5b156ea90405e0fc2e9f07b')
+ version('6.8', sha256='41e855bdc456759c8c15ef494c636a25cc7b62c55ad132ecd55bec05df64793f')
+ version('6.7', sha256='e237dd59a2d5b73e156b0b71df49ff64a143b3aaf8f0a65daaf369bb40f5e923')
+
+ depends_on('m4', type='build')
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('flex', type='build')
+ depends_on('bison', type='build')
+ depends_on('rpcsvc-proto')
+ depends_on('acl')
+ depends_on('libuuid')
+ depends_on('libtirpc')
+ depends_on('userspace-rcu')
+
+ def url_for_version(self, version):
+ url = 'https://download.gluster.org/pub/gluster/glusterfs/{0}/{1}/glusterfs-{1}.tar.gz'
+ return url.format(version.up_to(1), version)
+
+ def autoreconf(self, spec, prefix):
+ bash = which('bash')
+ bash('./autogen.sh')
diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py
index b5d677bd99..522a315f29 100644
--- a/var/spack/repos/builtin/packages/gmsh/package.py
+++ b/var/spack/repos/builtin/packages/gmsh/package.py
@@ -19,6 +19,7 @@ class Gmsh(CMakePackage):
homepage = 'http://gmsh.info'
url = 'http://gmsh.info/src/gmsh-4.4.1-source.tgz'
+ version('4.5.4', sha256='ccf8c74f43cbe3c371abe79862025d41642b3538a0148f018949494e3b3e2ecd')
version('4.4.1', sha256='853c6438fc4e4b765206e66a514b09182c56377bb4b73f1d0d26eda7eb8af0dc')
version('4.2.2', sha256='e9ee9f5c606bbec5f2adbb8c3d6023c4e2577f487fa4e4ecfcfc94a241cc8dcc')
version('4.0.0', sha256='fb0c8afa37425c6f4315ab3b3124e9e102fcf270a35198423a4002796f04155f')
@@ -31,16 +32,18 @@ class Gmsh(CMakePackage):
variant('shared', default=True, description='Enables the build of shared libraries')
variant('mpi', default=True, description='Builds MPI support for parser and solver')
- variant('openmp', default=False, description='Enable OpenMP support')
+ variant('openmp', default=False, description='Enable OpenMP support')
variant('fltk', default=False, description='Enables the build of the FLTK GUI')
variant('hdf5', default=False, description='Enables HDF5 support')
variant('compression', default=True, description='Enables IO compression through zlib')
variant('netgen', default=False, description='Build with Netgen')
+ variant('opencascade', default=False, description='Build with OpenCASCADE')
variant('oce', default=False, description='Build with OCE')
variant('petsc', default=False, description='Build with PETSc')
variant('slepc', default=False, description='Build with SLEPc (only when PETSc is enabled)')
variant('tetgen', default=False, description='Build with Tetgen')
- variant('metis', default=False, description='Build with Metis')
+ variant('metis', default=False, description='Build with Metis')
+ variant('privateapi', default=False, description='Enable the private API')
depends_on('blas')
depends_on('lapack')
@@ -51,6 +54,7 @@ class Gmsh(CMakePackage):
depends_on('fltk', when='+fltk')
depends_on('hdf5', when='+hdf5')
depends_on('netgen', when='+netgen')
+ depends_on('opencascade', when='+opencascade')
depends_on('oce', when='+oce')
depends_on('petsc+mpi', when='+petsc+mpi')
depends_on('petsc', when='+petsc~mpi')
@@ -60,6 +64,7 @@ class Gmsh(CMakePackage):
depends_on('metis', when='+metis')
conflicts('+slepc', when='~petsc')
+ conflicts('+oce', when='+opencascade')
def cmake_args(self):
spec = self.spec
@@ -96,6 +101,9 @@ class Gmsh(CMakePackage):
if '+oce' in spec:
env['CASROOT'] = self.spec['oce'].prefix
options.append('-DENABLE_OCC=ON')
+ elif '+opencascade' in spec:
+ env['CASROOT'] = self.spec['opencascade'].prefix
+ options.append('-DENABLE_OCC=ON')
else:
options.append('-DENABLE_OCC=OFF')
@@ -142,4 +150,9 @@ class Gmsh(CMakePackage):
if '+compression' in spec:
options.append('-DENABLE_COMPRESSED_IO:BOOL=ON')
+ if '+privateapi' in spec:
+ options.append('-DENABLE_PRIVATE_API=ON')
+ else:
+ options.append('-DENABLE_PRIVATE_API=OFF')
+
return options
diff --git a/var/spack/repos/builtin/packages/gmt/package.py b/var/spack/repos/builtin/packages/gmt/package.py
index b9bb7b71d9..003c0d24be 100644
--- a/var/spack/repos/builtin/packages/gmt/package.py
+++ b/var/spack/repos/builtin/packages/gmt/package.py
@@ -14,34 +14,49 @@ class Gmt(Package):
contour maps to artificially illuminated surfaces and 3D perspective views.
"""
- homepage = "http://gmt.soest.hawaii.edu/"
- url = "https://github.com/GenericMappingTools/gmt/archive/5.4.4.tar.gz"
+ homepage = "https://www.generic-mapping-tools.org/"
+ url = "https://github.com/GenericMappingTools/gmt/archive/6.0.0.tar.gz"
+ git = "https://github.com/GenericMappingTools/gmt.git"
+ maintainers = ['adamjstewart']
+
+ version('master', branch='master')
+ version('6.0.0', sha256='7a733e670f01d99f8fc0da51a4337320d764c06a68746621f83ccf2e3453bcb7')
version('5.4.4', sha256='b593dfb101e6507c467619f3d2190a9f78b09d49fe2c27799750b8c4c0cd2da0')
version('4.5.9', sha256='9b13be96ccf4bbd38c14359c05dfa7eeeb4b5f06d6f4be9c33d6c3ea276afc86',
url='ftp://ftp.soest.hawaii.edu/gmt/legacy/gmt-4.5.9.tar.bz2')
- variant('pcre', default=False, description='Enable the PCRE interface')
- variant('gdal', default=False, description='Enable the GDAL interface')
- variant('fftw', default=True, description='Fast FFTs')
- variant('lapack', default=True, description='Fast matrix inversion')
- variant('blas', default=True, description='Fast matrix multiplications')
+ variant('ghostscript', default=False, description='Ability to convert PostScript plots to PDF and rasters')
+ variant('gdal', default=False, description='Ability to read and write numerous grid and image formats')
+ variant('pcre', default=False, description='Regular expression support')
+ variant('fftw', default=False, description='Fast FFTs')
+ variant('glib', default=False, description='GTHREAD support')
+ variant('lapack', default=False, description='Fast matrix inversion')
+ variant('blas', default=False, description='Fast matrix multiplications')
+ variant('graphicsmagick', default=False, description='Convert images to animated GIFs')
+ variant('ffmpeg', default=False, description='Convert images to videos')
+ variant('docs', default=False, description='Build manpage and HTML documentation')
- # http://gmt.soest.hawaii.edu/projects/gmt/wiki/BuildingGMT
+ # https://github.com/GenericMappingTools/gmt/blob/master/BUILDING.md
+ # https://github.com/GenericMappingTools/gmt/blob/master/MAINTENANCE.md
# Required dependencies
- depends_on('ghostscript')
- depends_on('subversion')
- depends_on('cmake@2.8.5:', type='build', when='@5:')
+ depends_on('cmake@2.8.7:', type='build', when='@5:')
depends_on('netcdf-c@4:')
depends_on('curl', when='@5.4:')
# Optional dependencies
- depends_on('pcre', when='+pcre')
+ depends_on('ghostscript', when='+ghostscript')
depends_on('gdal', when='+gdal')
+ depends_on('pcre', when='+pcre')
depends_on('fftw', when='+fftw')
+ depends_on('glib', when='+glib')
depends_on('lapack', when='+lapack')
depends_on('blas', when='+blas')
+ depends_on('graphicsmagick', when='+graphicsmagick')
+ depends_on('ffmpeg', when='+ffmpeg')
+ depends_on('py-sphinx@1.4:', when='+docs', type='build')
+
depends_on('graphicsmagick', type='test')
patch('type.patch', when='@4.5.9')
@@ -49,9 +64,56 @@ class Gmt(Package):
@when('@5:')
def install(self, spec, prefix):
with working_dir('spack-build', create=True):
- cmake('..', *std_cmake_args)
+ args = std_cmake_args
+
+ args.extend([
+ '-DNETCDF_CONFIG={0}'.format(
+ spec['netcdf-c'].prefix.bin.join('nc-config')),
+ '-DNETCDF_INCLUDE_DIR={0}'.format(
+ spec['netcdf-c'].headers.directories[0]),
+ '-DNETCDF_LIBRARY={0}'.format(
+ spec['netcdf-c'].libs[0])
+ ])
+
+ # If these options aren't explicitly disabled,
+ # CMake will search OS for dependencies
+ if '+ghostscript' in spec:
+ args.append('-DGS={0}'.format(
+ spec['ghostscript'].prefix.bin.gs))
+ else:
+ args.append('-DGS=')
+
+ if '+gdal' in spec:
+ args.extend([
+ '-DGDAL_TRANSLATE={0}'.format(
+ spec['gdal'].prefix.bin.gdal_translate),
+ '-DOGR2OGR={0}'.format(
+ spec['gdal'].prefix.bin.ogr2ogr),
+ ])
+ else:
+ args.extend(['-DGDAL_TRANSLATE=', '-DOGR2OGR='])
+
+ if 'graphicsmagick' in spec:
+ args.extend([
+ '-DGM={0}'.format(
+ spec['graphicsmagick'].prefix.bin.gm),
+ '-DGRAPHICSMAGICK={0}'.format(
+ spec['graphicsmagick'].prefix.bin.gm),
+ ])
+ else:
+ args.extend(['-DGM=', '-DGRAPHICSMAGICK='])
+
+ if '+ffmpeg' in spec:
+ args.append('-DFFMPEG={0}'.format(
+ spec['ffmpeg'].prefix.bin.ffmpeg))
+ else:
+ args.append('-DFFMPEG=')
+
+ cmake('..', *args)
make()
+ if self.run_tests:
+ make('check')
make('install')
@when('@:4')
diff --git a/var/spack/repos/builtin/packages/gnupg/package.py b/var/spack/repos/builtin/packages/gnupg/package.py
index 65005a4bba..d97aa10569 100644
--- a/var/spack/repos/builtin/packages/gnupg/package.py
+++ b/var/spack/repos/builtin/packages/gnupg/package.py
@@ -7,38 +7,49 @@ from spack import *
class Gnupg(AutotoolsPackage):
- """GnuPG is a complete and free implementation of the OpenPGP
- standard as defined by RFC4880 """
+ """GNU Pretty Good Privacy (PGP) package."""
homepage = "https://gnupg.org/index.html"
- url = "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.17.tar.bz2"
+ url = "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.19.tar.bz2"
+ version('2.2.19', sha256='242554c0e06f3a83c420b052f750b65ead711cc3fddddb5e7274fcdbb4e9dec0')
version('2.2.17', sha256='afa262868e39b651a2db4c071fba90415154243e83a830ca00516f9a807fd514')
version('2.2.15', sha256='cb8ce298d7b36558ffc48aec961b14c830ff1783eef7a623411188b5e0f5d454')
version('2.2.3', sha256='cbd37105d139f7aa74f92b6f65d136658682094b0e308666b820ae4b984084b4')
version('2.1.21', sha256='7aead8a8ba75b69866f583b6c747d91414d523bfdfbe9a8e0fe026b16ba427dd')
+ depends_on('npth@1.2:')
+ depends_on('libgpg-error@1.24:')
depends_on('libgcrypt@1.7.0:')
+ depends_on('libksba@1.3.4:')
depends_on('libassuan@2.4:', when='@:2.2.3')
depends_on('libassuan@2.5:', when='@2.2.15:')
- depends_on('libksba@1.3.4:')
- depends_on('libgpg-error@1.24:')
- depends_on('npth@1.2:')
+ depends_on('pinentry', type='run')
+ depends_on('iconv')
depends_on('zlib')
- depends_on('libiconv')
def configure_args(self):
- return [
- '--without-tar',
+ args = [
+ '--disable-bzip2',
+ '--disable-sqlite',
+ '--disable-ntbtls',
+ '--disable-gnutls',
+ '--disable-ldap',
+ '--disable-regex',
+ '--with-pinentry-pgm=' + self.spec['pinentry'].command.path,
'--with-libgpg-error-prefix=' + self.spec['libgpg-error'].prefix,
'--with-libgcrypt-prefix=' + self.spec['libgcrypt'].prefix,
'--with-libassuan-prefix=' + self.spec['libassuan'].prefix,
'--with-ksba-prefix=' + self.spec['libksba'].prefix,
'--with-npth-prefix=' + self.spec['npth'].prefix,
- '--without-ldap',
- '--with-libiconv-prefix=' + self.spec['libiconv'].prefix,
- '--without-regex',
+ '--with-libiconv-prefix=' + self.spec['iconv'].prefix,
'--with-zlib=' + self.spec['zlib'].prefix,
- '--without-bzip2',
+ '--without-tar',
+ '--without-libiconv-prefix',
'--without-readline',
]
+
+ if self.run_tests:
+ args.append('--enable-all-tests')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/gnuplot/package.py b/var/spack/repos/builtin/packages/gnuplot/package.py
index 17ee973eee..9fb79e6746 100644
--- a/var/spack/repos/builtin/packages/gnuplot/package.py
+++ b/var/spack/repos/builtin/packages/gnuplot/package.py
@@ -55,7 +55,7 @@ class Gnuplot(AutotoolsPackage):
depends_on('readline')
depends_on('pkgconfig', type='build')
depends_on('libxpm')
- depends_on('libiconv')
+ depends_on('iconv')
# optional dependencies:
depends_on('libcerf', when='+libcerf')
diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py
index 75d183148f..600d426a7a 100644
--- a/var/spack/repos/builtin/packages/go/package.py
+++ b/var/spack/repos/builtin/packages/go/package.py
@@ -35,15 +35,20 @@ class Go(Package):
extendable = True
+ version('1.14.2', sha256='98de84e69726a66da7b4e58eac41b99cbe274d7e8906eeb8a5b7eb0aadee7f7c')
+ version('1.14.1', sha256='2ad2572115b0d1b4cb4c138e6b3a31cee6294cb48af75ee86bec3dca04507676')
+ version('1.14', sha256='6d643e46ad565058c7a39dac01144172ef9bd476521f42148be59249e4b74389')
+ version('1.13.10', sha256='eb9ccc8bf59ed068e7eff73e154e4f5ee7eec0a47a610fb864e3332a2fdc8b8c')
+ version('1.13.9', sha256='34bb19d806e0bc4ad8f508ae24bade5e9fedfa53d09be63b488a9314d2d4f31d')
version('1.13.8', sha256='b13bf04633d4d8cf53226ebeaace8d4d2fd07ae6fa676d0844a688339debec34')
version('1.13.7', sha256='e4ad42cc5f5c19521fbbbde3680995f2546110b5c6aa2b48c3754ff7af9b41f4')
version('1.13.6', sha256='aae5be954bdc40bcf8006eb77e8d8a5dde412722bc8effcdaf9772620d06420c')
version('1.13.5', sha256='27d356e2a0b30d9983b60a788cf225da5f914066b37a6b4f69d457ba55a626ff')
- version('1.13.4', sha256='95dbeab442ee2746b9acf0934c8e2fc26414a0565c008631b04addb8c02e7624')
+ version('1.13.4', sha256='95dbeab442ee2746b9acf0934c8e2fc26414a0565c008631b04addb8c02e7624')
version('1.13.3', sha256='4f7123044375d5c404280737fbd2d0b17064b66182a65919ffe20ffe8620e3df')
version('1.13.2', sha256='1ea68e01472e4276526902b8817abd65cf84ed921977266f0c11968d5e915f44')
version('1.13.1', sha256='81f154e69544b9fa92b1475ff5f11e64270260d46e7e36c34aafc8bc96209358')
- version('1.13', sha256='3fc0b8b6101d42efd7da1da3029c0a13f22079c0c37ef9730209d8ec665bf122')
+ version('1.13', sha256='3fc0b8b6101d42efd7da1da3029c0a13f22079c0c37ef9730209d8ec665bf122')
version('1.12.17', sha256='de878218c43aa3c3bad54c1c52d95e3b0e5d336e1285c647383e775541a28b25')
version('1.12.15', sha256='8aba74417e527524ad5724e6e6c21016795d1017692db76d1b0851c6bdec84c3')
version('1.12.14', sha256='39dbf05f7e2ffcb19b08f07d53dcc96feadeb1987fef9e279e7ff0c598213064')
diff --git a/var/spack/repos/builtin/packages/grandr/package.py b/var/spack/repos/builtin/packages/grandr/package.py
index aa5f96976e..85339772fa 100644
--- a/var/spack/repos/builtin/packages/grandr/package.py
+++ b/var/spack/repos/builtin/packages/grandr/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Grandr(AutotoolsPackage):
+class Grandr(AutotoolsPackage, XorgPackage):
"""RandR user interface using GTK+ libraries."""
homepage = "https://cgit.freedesktop.org/xorg/app/grandr"
- url = "https://www.x.org/archive/individual/app/grandr-0.1.tar.gz"
+ xorg_mirror_path = "app/grandr-0.1.tar.gz"
version('0.1', sha256='67a049c8dccdb48897efbd86c2b1d3b0ff5ce3c7859c46b0297d64c881b36d24')
diff --git a/var/spack/repos/builtin/packages/grass/package.py b/var/spack/repos/builtin/packages/grass/package.py
index c80255fb43..cb83a5cc2a 100644
--- a/var/spack/repos/builtin/packages/grass/package.py
+++ b/var/spack/repos/builtin/packages/grass/package.py
@@ -58,7 +58,7 @@ class Grass(AutotoolsPackage):
# http://htmlpreview.github.io/?https://github.com/OSGeo/grass/blob/master/REQUIREMENTS.html
# General requirements
depends_on('gmake@3.81:', type='build')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('zlib')
depends_on('flex', type='build')
depends_on('bison', type='build')
@@ -254,5 +254,8 @@ class Grass(AutotoolsPackage):
# hence invoke the following function afterwards
@run_after('configure')
def fix_iconv_linking(self):
+ if self.spec['iconv'].name != 'libiconv':
+ return
+
makefile = FileFilter('include/Make/Platform.make')
makefile.filter(r'^ICONVLIB\s*=.*', 'ICONVLIB = -liconv')
diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py
index bc61efdbe9..2175d7a611 100644
--- a/var/spack/repos/builtin/packages/gromacs/package.py
+++ b/var/spack/repos/builtin/packages/gromacs/package.py
@@ -2,8 +2,7 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
+import llnl.util.cpu
class Gromacs(CMakePackage):
@@ -24,8 +23,10 @@ class Gromacs(CMakePackage):
git = 'https://github.com/gromacs/gromacs.git'
maintainers = ['junghans', 'marvinbernhardt']
- version('develop', branch='master')
+ version('master', branch='master')
+ version('2020.1', sha256='e1666558831a3951c02b81000842223698016922806a8ce152e8f616e29899cf')
version('2020', sha256='477e56142b3dcd9cb61b8f67b24a55760b04d1655e8684f979a75a5eec40ba01')
+ version('2019.6', sha256='bebe396dc0db11a9d4cc205abc13b50d88225617642508168a2195324f06a358')
version('2019.5', sha256='438061a4a2d45bbb5cf5c3aadd6c6df32d2d77ce8c715f1c8ffe56156994083a')
version('2019.4', sha256='ba4366eedfc8a1dbf6bddcef190be8cd75de53691133f305a7f9c296e5ca1867')
version('2019.3', sha256='4211a598bf3b7aca2b14ad991448947da9032566f13239b1a05a2d4824357573')
@@ -60,12 +61,6 @@ class Gromacs(CMakePackage):
description='The build type to build',
values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel',
'Reference', 'RelWithAssert', 'Profile'))
- variant('simd', default='auto',
- description='The SIMD instruction set to use',
- values=('auto', 'none', 'SSE2', 'SSE4.1', 'AVX_128_FMA', 'AVX_256',
- 'AVX2_128', 'AVX2_256', 'AVX_512', 'AVX_512_KNL',
- 'IBM_QPX', 'Sparc64_HPC_ACE', 'IBM_VMX', 'IBM_VSX',
- 'ARM_NEON', 'ARM_NEON_ASIMD'))
variant('rdtscp', default=True, description='Enable RDTSCP instruction usage')
variant('mdrun_only', default=False,
description='Enables the build of a cut-down version'
@@ -96,6 +91,9 @@ class Gromacs(CMakePackage):
options = []
+ if self.spec.satisfies('@2020:'):
+ options.append('-DGMX_INSTALL_LEGACY_API=ON')
+
if '+mpi' in self.spec:
options.append('-DGMX_MPI:BOOL=ON')
@@ -117,13 +115,40 @@ class Gromacs(CMakePackage):
else:
options.append('-DGMX_GPU:BOOL=OFF')
- simd_value = self.spec.variants['simd'].value
- if simd_value == 'auto':
- pass
- elif simd_value == 'none':
- options.append('-DGMX_SIMD:STRING=None')
+ # Activate SIMD based on properties of the target
+ target = self.spec.target
+ if target >= llnl.util.cpu.targets['bulldozer']:
+ # AMD Family 15h
+ options.append('-DGMX_SIMD=AVX_128_FMA')
+ elif target >= llnl.util.cpu.targets['zen']:
+ # AMD Family 17h
+ options.append('-DGMX_SIMD=AVX2_128')
+ elif target >= llnl.util.cpu.targets['power7']:
+ # IBM Power 7 and beyond
+ options.append('-DGMX_SIMD=IBM_VSX')
+ elif target.family == llnl.util.cpu.targets['aarch64']:
+ # ARMv8
+ options.append('-DGMX_SIMD=ARM_NEON_ASIMD')
+ elif target == llnl.util.cpu.targets['mic_knl']:
+ # Intel KNL
+ options.append('-DGMX_SIMD=AVX_512_KNL')
+ elif target.vendor == 'GenuineIntel':
+ # Other Intel architectures
+ simd_features = [
+ ('sse2', 'SSE2'),
+ ('sse4_1', 'SSE4.1'),
+ ('avx', 'AVX_256'),
+ ('axv128', 'AVX2_128'),
+ ('avx2', 'AVX2_256'),
+ ('avx512', 'AVX_512'),
+ ]
+ for feature, flag in reversed(simd_features):
+ if feature in target:
+ options.append('-DGMX_SIMD:STRING={0}'.format(flag))
+ break
else:
- options.append('-DGMX_SIMD:STRING=' + simd_value)
+ # Fall back to this for unknown microarchitectures
+ options.append('-DGMX_SIMD:STRING=None')
if '-rdtscp' in self.spec:
options.append('-DGMX_USE_RDTSCP:BOOL=OFF')
diff --git a/var/spack/repos/builtin/packages/grpc/package.py b/var/spack/repos/builtin/packages/grpc/package.py
index 8cbfe77328..7996a6865b 100644
--- a/var/spack/repos/builtin/packages/grpc/package.py
+++ b/var/spack/repos/builtin/packages/grpc/package.py
@@ -8,6 +8,8 @@ from spack import *
class Grpc(CMakePackage):
"""A high performance, open-source universal RPC framework."""
+ maintainers = ['nazavode']
+
homepage = "https://grpc.io"
url = "https://github.com/grpc/grpc/archive/v1.27.0.tar.gz"
@@ -25,6 +27,7 @@ class Grpc(CMakePackage):
depends_on('openssl')
depends_on('zlib')
depends_on('c-ares')
+ depends_on('abseil-cpp', when='@1.27.0:')
def cmake_args(self):
args = [
@@ -44,4 +47,6 @@ class Grpc(CMakePackage):
'-DgRPC_GFLAGS_PROVIDER:String=none',
'-DgRPC_BENCHMARK_PROVIDER:String=none',
]
+ if self.spec.satisfies('@1.27.0:'):
+ args.append('-DgRPC_ABSL_PROVIDER:String=package')
return args
diff --git a/var/spack/repos/builtin/packages/gsl/gsl-2.3-cblas.patch b/var/spack/repos/builtin/packages/gsl/gsl-2.3-cblas.patch
new file mode 100644
index 0000000000..7417ca57a7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gsl/gsl-2.3-cblas.patch
@@ -0,0 +1,323 @@
+ Makefile.am | 8 +-
+ ax_cblas.m4 | 69 +++++
+ bspline/Makefile.am | 2 +-
+ configure.ac | 10 +
+ eigen/Makefile.am | 2 +-
+ gsl-config.in | 4 +-
+ gsl.pc.in | 2 +-
+ interpolation/Makefile.am | 2 +-
+ linalg/Makefile.am | 2 +-
+ multifit/Makefile.am | 4 +-
+ multimin/Makefile.am | 4 +-
+ multiroots/Makefile.am | 2 +-
+ ode-initval/Makefile.am | 2 +-
+ poly/Makefile.am | 2 +-
+ specfunc/Makefile.am | 2 +-
+ wavelet/Makefile.am | 2 +-
+ 31 files changed, 1157 insertions(+), 19 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index c522001..4513bc8 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -19,7 +19,7 @@ EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.ac THANKS BUGS gsl.spe
+
+ lib_LTLIBRARIES = libgsl.la
+ libgsl_la_SOURCES = version.c
+-libgsl_la_LIBADD = $(GSL_LIBADD) $(SUBLIBS)
++libgsl_la_LIBADD = $(GSL_LIBADD) $(SUBLIBS) @CBLAS_LINK_LIBS@
+ libgsl_la_LDFLAGS = $(GSL_LDFLAGS) -version-info $(GSL_LT_VERSION)
+ noinst_HEADERS = templates_on.h templates_off.h build.h
+
+@@ -29,10 +29,10 @@ m4data_DATA = gsl.m4
+ bin_PROGRAMS = gsl-randist gsl-histogram
+
+ gsl_randist_SOURCES = gsl-randist.c
+-gsl_randist_LDADD = libgsl.la cblas/libgslcblas.la
++gsl_randist_LDADD = libgsl.la
+
+ gsl_histogram_SOURCES = gsl-histogram.c
+-gsl_histogram_LDADD = libgsl.la cblas/libgslcblas.la
++gsl_histogram_LDADD = libgsl.la
+
+ check_SCRIPTS = test_gsl_histogram.sh pkgconfig.test
+ TESTS = test_gsl_histogram.sh pkgconfig.test
+@@ -51,6 +51,8 @@ edit = $(SED) \
+ -e 's|@GSL_CFLAGS[@]|$(GSL_CFLAGS)|g' \
+ -e 's|@GSL_LIBM[@]|$(GSL_LIBM)|g' \
+ -e 's|@GSL_LIBS[@]|$(GSL_LIBS)|g' \
++ -e 's|@CBLAS_CFLAGS[@]|$(CBLAS_CFLAGS)|g' \
++ -e 's|@CBLAS_LIBS[@]|$(CBLAS_LIBS)|g' \
+ -e 's|@LIBS[@]|$(LIBS)|g' \
+ -e 's|@VERSION[@]|$(VERSION)|g'
+
+diff --git a/ax_cblas.m4 b/ax_cblas.m4
+new file mode 100644
+index 0000000..6ef143a
+--- /dev/null
++++ b/ax_cblas.m4
+@@ -0,0 +1,69 @@
++AC_DEFUN([AX_CBLAS],[
++
++ ext_cblas=no
++ ext_cblas_libs="-lcblas"
++ ext_cblas_cflags=""
++
++ AC_ARG_WITH(cblas-external,
++ [AS_HELP_STRING([--with-cblas-external],
++ [Use external CBLAS library (default is no)])],
++ [with_ext_cblas=$withval],
++ [with_ext_cblas=no])
++
++ case $with_ext_cblas in
++ no) ext_cblas=no ;;
++ yes) ext_cblas=yes ;;
++ -* | */* | *.a | *.so | *.so.* | *.o)
++ ext_cblas=yes
++ ext_cblas_libs="$with_cblas" ;;
++ *) ext_cblas=yes
++ ext_cblas_libs="-l$with_cblas" ;;
++ esac
++
++ AC_ARG_WITH(cblas-external-libs,
++ [AS_HELP_STRING([--with-cblas-external-libs=<libs>],
++ [External cblas libraries to link with (default is "$ext_cblas_libs")])],
++ [ext_cblas_libs=$withval],
++ [])
++
++ AC_ARG_WITH(cblas-external-cflags,
++ [AS_HELP_STRING([--with-cblas-external-cflags=<flags>],
++ [Pre-processing flags to compile with external cblas ("-I<dir>")])],
++ [ext_cblas_cflags=$withval],
++ [])
++
++ if test x$ext_cblas != xno; then
++ if test "x$CBLAS_LIBS" = x; then
++ CBLAS_LIBS="$ext_cblas_libs"
++ fi
++ if test "x$CBLAS_CFLAGS" = x; then
++ CBLAS_CFLAGS="$ext_cblas_cflags"
++ fi
++
++ CFLAGS_sav="$CFLAGS"
++ CFLAGS="$CFLAGS $CBLAS_CFLAGS"
++ AC_CHECK_HEADER(cblas.h, ,
++ [AC_MSG_ERROR([
++ *** Header file cblas.h not found.
++ *** If you installed cblas header in a non standard place,
++ *** specify its install prefix using the following option
++ *** --with-cblas-external-cflags="-I<include_dir>"])
++ ])
++ CFLAGS="$CFLAGS_sav"
++
++ LIBS_sav="$LIBS"
++ LIBS="$LIBS $CBLAS_LIBS -lm"
++ AC_MSG_CHECKING([for cblas_sgemm in $CBLAS_LIBS])
++ AC_TRY_LINK_FUNC(cblas_sgemm, [ext_cblas=yes],
++ [AC_MSG_ERROR([
++ *** Linking with cblas with $LIBS failed.
++ *** If you installed cblas library in a non standard place,
++ *** specify its install prefix using the following option
++ *** --with-cblas-external-libs="-L<lib_dir> -l<lib>"])
++ ])
++ AC_MSG_RESULT($ext_cblas)
++ LIBS="$LIBS_sav"
++ AC_SUBST([CBLAS_CFLAGS])
++ AC_SUBST([CBLAS_LIBS])
++ fi
++])
+diff --git a/bspline/Makefile.am b/bspline/Makefile.am
+index 3f4f950..d413036 100644
+--- a/bspline/Makefile.am
++++ b/bspline/Makefile.am
+@@ -12,6 +12,6 @@ check_PROGRAMS = test
+
+ TESTS = $(check_PROGRAMS)
+
+-test_LDADD = libgslbspline.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la
++test_LDADD = libgslbspline.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la @CBLAS_LINK_LIBS@ ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../statistics/libgslstatistics.la
+
+ test_SOURCES = test.c
+diff --git a/configure.ac b/configure.ac
+index a26fc1e..564d426 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -208,6 +208,16 @@ if test "x$LIBS" = "x" ; then
+ AC_CHECK_LIB(m, cos)
+ fi
+
++sinclude(ax_cblas.m4)
++AX_CBLAS
++if test "x$CBLAS_LIBS" != "x"; then
++ CBLAS_LINK_LIBS="$CBLAS_LIBS"
++else
++ CBLAS_LINK_LIBS="\$(top_builddir)/cblas/libgslcblas.la"
++ CBLAS_LIBS="-lgslcblas"
++fi
++AC_SUBST(CBLAS_LINK_LIBS)
++
+ dnl Remember to put a definition in acconfig.h for each of these
+ AC_CHECK_DECLS(feenableexcept,,,[#define _GNU_SOURCE 1
+ #include <fenv.h>])
+diff --git a/eigen/Makefile.am b/eigen/Makefile.am
+index c28bfde..14197a4 100644
+--- a/eigen/Makefile.am
++++ b/eigen/Makefile.am
+@@ -11,7 +11,7 @@ noinst_HEADERS = qrstep.c
+
+ TESTS = $(check_PROGRAMS)
+
+-test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la ../sort/libgslsort.la
++test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la ../rng/libgslrng.la ../sort/libgslsort.la
+
+ test_SOURCES = test.c
+
+diff --git a/gsl-config.in b/gsl-config.in
+old mode 100755
+new mode 100644
+index 3f3fa61..c9c4262
+--- a/gsl-config.in
++++ b/gsl-config.in
+@@ -58,11 +58,11 @@ while test $# -gt 0; do
+ ;;
+
+ --cflags)
+- echo @GSL_CFLAGS@
++ echo @GSL_CFLAGS@ @CBLAS_CFLAGS@
+ ;;
+
+ --libs)
+- : ${GSL_CBLAS_LIB=-lgslcblas}
++ : ${GSL_CBLAS_LIB=@CBLAS_LIBS@}
+ echo @GSL_LIBS@ $GSL_CBLAS_LIB @GSL_LIBM@
+ ;;
+
+diff --git a/gsl.pc.in b/gsl.pc.in
+index 5e9ef21..5a7a0f3 100644
+--- a/gsl.pc.in
++++ b/gsl.pc.in
+@@ -2,7 +2,7 @@ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+ includedir=@includedir@
+-GSL_CBLAS_LIB=-lgslcblas
++GSL_CBLAS_LIB=@CBLAS_LIBS@
+
+ Name: GSL
+ Description: GNU Scientific Library
+diff --git a/interpolation/Makefile.am b/interpolation/Makefile.am
+index 1d80755..e45bd51 100644
+--- a/interpolation/Makefile.am
++++ b/interpolation/Makefile.am
+@@ -12,7 +12,7 @@ AM_CPPFLAGS = -I$(top_srcdir)
+
+ TESTS = $(check_PROGRAMS)
+
+-test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
++test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la @CBLAS_LINK_LIBS@ ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+
+ test_SOURCES = test.c
+
+diff --git a/linalg/Makefile.am b/linalg/Makefile.am
+index a6c15b0..447ebbe 100644
+--- a/linalg/Makefile.am
++++ b/linalg/Makefile.am
+@@ -13,4 +13,4 @@ TESTS = $(check_PROGRAMS)
+ check_PROGRAMS = test
+
+ test_SOURCES = test.c
+-test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la
++test_LDADD = libgsllinalg.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../rng/libgslrng.la
+diff --git a/multifit/Makefile.am b/multifit/Makefile.am
+index 988614e..793b485 100644
+--- a/multifit/Makefile.am
++++ b/multifit/Makefile.am
+@@ -67,8 +67,8 @@ check_PROGRAMS = test #demo
+ TESTS = $(check_PROGRAMS)
+
+ test_SOURCES = test.c
+-test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../min/libgslmin.la
++test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../sort/libgslsort.la ../statistics/libgslstatistics.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../min/libgslmin.la
+
+ #demo_SOURCES = demo.c
+-#demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la
++#demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la
+
+diff --git a/multimin/Makefile.am b/multimin/Makefile.am
+index 7071359..65a488a 100644
+--- a/multimin/Makefile.am
++++ b/multimin/Makefile.am
+@@ -13,8 +13,8 @@ check_PROGRAMS = test #demo
+ TESTS = $(check_PROGRAMS)
+
+ test_SOURCES = test.c test_funcs.c test_funcs.h
+-test_LDADD = libgslmultimin.la ../min/libgslmin.la ../poly/libgslpoly.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
++test_LDADD = libgslmultimin.la ../min/libgslmin.la ../poly/libgslpoly.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+
+ #demo_SOURCES = demo.c
+-#demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
++#demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+
+diff --git a/multiroots/Makefile.am b/multiroots/Makefile.am
+index a351c3f..6178448 100644
+--- a/multiroots/Makefile.am
++++ b/multiroots/Makefile.am
+@@ -15,5 +15,5 @@ check_PROGRAMS = test
+ TESTS = $(check_PROGRAMS)
+
+ test_SOURCES = test.c test_funcs.c test_funcs.h
+-test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
++test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+
+diff --git a/ode-initval/Makefile.am b/ode-initval/Makefile.am
+index 9c774b5..346c381 100644
+--- a/ode-initval/Makefile.am
++++ b/ode-initval/Makefile.am
+@@ -12,7 +12,7 @@ check_PROGRAMS = test
+
+ TESTS = $(check_PROGRAMS)
+
+-test_LDADD = libgslodeiv.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
++test_LDADD = libgslodeiv.la ../linalg/libgsllinalg.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+
+ test_SOURCES = test.c
+
+diff --git a/poly/Makefile.am b/poly/Makefile.am
+index f1dae5d..e0f8e83 100644
+--- a/poly/Makefile.am
++++ b/poly/Makefile.am
+@@ -10,7 +10,7 @@ noinst_HEADERS = balance.c companion.c qr.c
+
+ TESTS = $(check_PROGRAMS)
+
+-check_PROGRAMS = test
++#check_PROGRAMS = test
+
+ test_SOURCES = test.c
+ test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ../sort/libgslsort.la
+diff --git a/specfunc/Makefile.am b/specfunc/Makefile.am
+index eba9ab2..772cc7e 100644
+--- a/specfunc/Makefile.am
++++ b/specfunc/Makefile.am
+@@ -12,7 +12,7 @@ TESTS = $(check_PROGRAMS)
+
+ check_PROGRAMS = test
+
+-test_LDADD = libgslspecfunc.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../sort/libgslsort.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../block/libgslblock.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
++test_LDADD = libgslspecfunc.la ../eigen/libgsleigen.la ../linalg/libgsllinalg.la ../sort/libgslsort.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../block/libgslblock.la ../complex/libgslcomplex.la ../poly/libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+
+ test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hyperg.c test_legendre.c test_mathieu.c
+
+diff --git a/wavelet/Makefile.am b/wavelet/Makefile.am
+index 9da20d8..8cdbd77 100644
+--- a/wavelet/Makefile.am
++++ b/wavelet/Makefile.am
+@@ -10,7 +10,7 @@ check_PROGRAMS = test
+
+ TESTS = $(check_PROGRAMS)
+
+-test_LDADD = libgslwavelet.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
++test_LDADD = libgslwavelet.la ../blas/libgslblas.la @CBLAS_LINK_LIBS@ ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la
+
+ test_SOURCES = test.c
+
diff --git a/var/spack/repos/builtin/packages/gsl/package.py b/var/spack/repos/builtin/packages/gsl/package.py
index 3ad7b11971..fb81843c64 100644
--- a/var/spack/repos/builtin/packages/gsl/package.py
+++ b/var/spack/repos/builtin/packages/gsl/package.py
@@ -24,3 +24,31 @@ class Gsl(AutotoolsPackage, GNUMirrorPackage):
version('2.1', sha256='59ad06837397617f698975c494fe7b2b698739a59e2fcf830b776428938a0c66')
version('2.0', sha256='e361f0b19199b5e6c21922e9f16adf7eca8dd860842802424906d0f83485ca2d')
version('1.16', sha256='73bc2f51b90d2a780e6d266d43e487b3dbd78945dd0b04b14ca5980fe28d2f53')
+
+ variant('external-cblas', default=False, description='Build against external blas')
+
+ # from https://dev.gentoo.org/~mgorny/dist/gsl-2.3-cblas.patch.bz2
+ patch('gsl-2.3-cblas.patch', when="+external-cblas")
+
+ conflicts('+external-cblas', when="@:2.2.9999")
+ depends_on('m4', type='build', when='+external-cblas')
+ depends_on('autoconf', type='build', when='+external-cblas')
+ depends_on('automake', type='build', when='+external-cblas')
+ depends_on('libtool', type='build', when='+external-cblas')
+ depends_on('blas', when='+external-cblas')
+
+ @property
+ def force_autoreconf(self):
+ # The external cblas patch touches configure
+ return self.spec.satisfies('+external-cblas')
+
+ def configure_args(self):
+ configure_args = []
+ if self.spec.satisfies('+external-cblas'):
+ configure_args.append('--with-external-cblas')
+ configure_args.append('CBLAS_CFLAGS=%s'
+ % self.spec['blas'].headers.include_flags)
+ configure_args.append('CBLAS_LIBS=%s'
+ % self.spec['blas'].libs.ld_flags)
+
+ return configure_args
diff --git a/var/spack/repos/builtin/packages/gtk-doc/package.py b/var/spack/repos/builtin/packages/gtk-doc/package.py
new file mode 100644
index 0000000000..82706d9fdc
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gtk-doc/package.py
@@ -0,0 +1,41 @@
+# 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 GtkDoc(AutotoolsPackage):
+ """GtkDoc is a tool used to extract API documentation from
+ C-code like Doxygen, but handles documentation of GObject
+ (including signals and properties) that makes it very
+ suitable for GTK+ apps and libraries. It uses docbook for
+ intermediate files and can produce html by default and
+ pdf/man-pages with some extra work."""
+
+ homepage = "https://wiki.gnome.org/DocumentationProject/GtkDoc"
+ url = 'https://gitlab.gnome.org/GNOME/gtk-doc/-/archive/GTK_DOC_1_32/gtk-doc-GTK_DOC_1_32.tar.gz'
+
+ version('1.32', sha256='0890c1f00d4817279be51602e67c4805daf264092adc58f9c04338566e8225ba')
+
+ # Commented out until package dblatex has been created
+ # variant('pdf', default=False, description='Adds PDF support')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+ depends_on('pkgconfig', type='build')
+
+ depends_on('python@3.2:', type=('build', 'run'))
+ depends_on('py-pygments', type=('build', 'run'))
+ depends_on('libxslt')
+ depends_on('libxml2')
+ depends_on('docbook-xsl')
+ # depends_on('dblatex', when='+pdf')
+
+ def url_for_version(self, version):
+ """Handle gnome's version-based custom URLs."""
+ url = 'https://gitlab.gnome.org/GNOME/gtk-doc/-/archive/GTK_DOC_{0}/gtk-doc-GTK_DOC_{0}.tar.gz'
+ return url.format(version.underscored)
diff --git a/var/spack/repos/builtin/packages/gtkorvo-dill/2.1-fix-clear_cache.patch b/var/spack/repos/builtin/packages/gtkorvo-dill/2.1-fix-clear_cache.patch
new file mode 100644
index 0000000000..cfab723414
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gtkorvo-dill/2.1-fix-clear_cache.patch
@@ -0,0 +1,148 @@
+diff -ur spack-src.org/CMakeLists.txt spack-src/CMakeLists.txt
+--- spack-src.org/CMakeLists.txt 2020-03-26 16:38:53.358339744 +0900
++++ spack-src/CMakeLists.txt 2020-03-26 16:44:04.581014766 +0900
+@@ -184,6 +184,9 @@
+ CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H)
+ CHECK_INCLUDE_FILES(memory.h HAVE_MEMORY_H)
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
++include(CheckSymbolExists)
++check_symbol_exists(__clear_cache "" CLEAR_CACHE_DEFINED)
++message(STATUS "Clear cache defined is ${CLEAR_CACHE_DEFINED}")
+
+ set (NO_DISASSEMBLER TRUE)
+ if (ENABLE_DISASSEMBLY)
+diff -ur spack-src.org/arm6.c spack-src/arm6.c
+--- spack-src.org/arm6.c 2020-03-26 16:38:53.358339744 +0900
++++ spack-src/arm6.c 2020-03-26 16:45:20.428978615 +0900
+@@ -1524,22 +1524,9 @@
+ }
+
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm6_flush(void *base, void *limit)
+diff -ur spack-src.org/arm6_rt.c spack-src/arm6_rt.c
+--- spack-src.org/arm6_rt.c 2020-03-26 16:38:53.358339744 +0900
++++ spack-src/arm6_rt.c 2020-03-26 16:48:18.927720543 +0900
+@@ -109,22 +109,9 @@
+ }
+ }
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm6_flush(void *base, void *limit)
+diff -ur spack-src.org/arm8.c spack-src/arm8.c
+--- spack-src.org/arm8.c 2020-03-26 16:38:53.358339744 +0900
++++ spack-src/arm8.c 2020-03-26 16:49:38.386063473 +0900
+@@ -1524,22 +1524,9 @@
+ }
+
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm8_flush(void *base, void *limit)
+diff -ur spack-src.org/arm8_rt.c spack-src/arm8_rt.c
+--- spack-src.org/arm8_rt.c 2020-03-26 16:38:53.358339744 +0900
++++ spack-src/arm8_rt.c 2020-03-26 16:50:37.902312532 +0900
+@@ -109,22 +109,9 @@
+ }
+ }
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm8_flush(void *base, void *limit)
+diff -ur spack-src.org/config.h.cmake spack-src/config.h.cmake
+--- spack-src.org/config.h.cmake 2020-03-26 16:38:53.358339744 +0900
++++ spack-src/config.h.cmake 2020-03-26 16:52:52.256419382 +0900
+@@ -13,10 +13,13 @@
+ #cmakedefine HAVE_DIS_ASM_H
+
+ /* Define to 1 if you have the <dlfcn.h> header file. */
+-#undef HAVE_DLFCN_H
++#cmakedefine HAVE_DLFCN_H
+
+ /* Define to 1 if you have the <inttypes.h> header file. */
+-#undef HAVE_INTTYPES_H
++#cmakedefine HAVE_INTTYPES_H
++
++/* Define to 1 if you have __clear_cache is defined */
++#cmakedefine CLEAR_CACHE_DEFINED
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+ #cmakedefine HAVE_MALLOC_H
diff --git a/var/spack/repos/builtin/packages/gtkorvo-dill/2.4-fix-clear_cache.patch b/var/spack/repos/builtin/packages/gtkorvo-dill/2.4-fix-clear_cache.patch
new file mode 100644
index 0000000000..7f47fba952
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gtkorvo-dill/2.4-fix-clear_cache.patch
@@ -0,0 +1,148 @@
+diff -ur spack-src.org/CMakeLists.txt spack-src/CMakeLists.txt
+--- spack-src.org/CMakeLists.txt 2020-03-26 09:35:43.403836842 +0900
++++ spack-src/CMakeLists.txt 2020-03-26 09:37:57.397837929 +0900
+@@ -267,6 +267,9 @@
+ CHECK_INCLUDE_FILES(stdarg.h STDC_HEADERS)
+ CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H)
+ CHECK_INCLUDE_FILES(memory.h HAVE_MEMORY_H)
++include(CheckSymbolExists)
++check_symbol_exists(__clear_cache "" CLEAR_CACHE_DEFINED)
++message(STATUS "Clear cache defined is ${CLEAR_CACHE_DEFINED}")
+
+ set (NO_DISASSEMBLER TRUE)
+ if (DILL_ENABLE_DISASSEMBLY)
+diff -ur spack-src.org/arm6.c spack-src/arm6.c
+--- spack-src.org/arm6.c 2020-03-26 09:35:43.403836842 +0900
++++ spack-src/arm6.c 2020-03-26 09:40:06.021306329 +0900
+@@ -1526,22 +1526,9 @@
+ }
+
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm6_flush(void *base, void *limit)
+diff -ur spack-src.org/arm6_rt.c spack-src/arm6_rt.c
+--- spack-src.org/arm6_rt.c 2020-03-26 09:35:43.403836842 +0900
++++ spack-src/arm6_rt.c 2020-03-26 09:41:59.823222738 +0900
+@@ -109,22 +109,9 @@
+ }
+ }
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm6_flush(void *base, void *limit)
+diff -ur spack-src.org/arm8.c spack-src/arm8.c
+--- spack-src.org/arm8.c 2020-03-26 09:35:43.403836842 +0900
++++ spack-src/arm8.c 2020-03-26 09:43:04.630008776 +0900
+@@ -1524,22 +1524,9 @@
+ }
+
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm8_flush(void *base, void *limit)
+diff -ur spack-src.org/arm8_rt.c spack-src/arm8_rt.c
+--- spack-src.org/arm8_rt.c 2020-03-26 09:35:43.403836842 +0900
++++ spack-src/arm8_rt.c 2020-03-26 09:44:19.027799105 +0900
+@@ -109,22 +109,9 @@
+ }
+ }
+
+-/* Clear the instruction cache from `beg' to `end'. This makes an
+- inline system call to SYS_cacheflush. */
+-#define CLEAR_INSN_CACHE(BEG, END) \
+-{ \
+- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
+- register unsigned long _end __asm ("a2") = (unsigned long) (END); \
+- register unsigned long _flg __asm ("a3") = 0; \
+- __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
+- : "=r" (_beg) \
+- : "0" (_beg), "r" (_end), "r" (_flg)); \
+-}
+-/*
+- * Cache flush code grabbed from a Dec 1999 posting on libc-hacker
+- * mailing list
+- */
+-extern void __clear_cache(char*, char *);
++#ifndef CLEAR_CACHE_DEFINED
++extern void __clear_cache(void *, void *);
++#endif
+
+ static void
+ arm8_flush(void *base, void *limit)
+diff -ur spack-src.org/config.h.cmake spack-src/config.h.cmake
+--- spack-src.org/config.h.cmake 2020-03-26 09:35:43.403836842 +0900
++++ spack-src/config.h.cmake 2020-03-26 09:46:56.124248964 +0900
+@@ -16,10 +16,13 @@
+ #cmakedefine HAVE_DIS_ASM_H
+
+ /* Define to 1 if you have the <dlfcn.h> header file. */
+-#undef HAVE_DLFCN_H
++#cmakedefine HAVE_DLFCN_H
+
+ /* Define to 1 if you have the <inttypes.h> header file. */
+-#undef HAVE_INTTYPES_H
++#cmakedefine HAVE_INTTYPES_H
++
++/* Define to 1 if you have __clear_cache is defined */
++#cmakedefine CLEAR_CACHE_DEFINED
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+ #cmakedefine HAVE_MALLOC_H
diff --git a/var/spack/repos/builtin/packages/gtkorvo-dill/package.py b/var/spack/repos/builtin/packages/gtkorvo-dill/package.py
index cb5920ae5b..b708666d4f 100644
--- a/var/spack/repos/builtin/packages/gtkorvo-dill/package.py
+++ b/var/spack/repos/builtin/packages/gtkorvo-dill/package.py
@@ -20,6 +20,10 @@ class GtkorvoDill(CMakePackage):
version('2.4', sha256='ed7745d13e8c6a556f324dcc0e48a807fc993bdd5bb1daa94c1df116cb7e81fa')
version('2.1', sha256='7671e1f3c25ac6a4ec2320cec2c342a2f668efb170e3dba186718ed17d2cf084')
+ # Ref: https://github.com/GTkorvo/dill/commit/dac6dfcc7fdaceeb4c157f9ecdf5ecc28f20477f
+ patch('2.4-fix-clear_cache.patch', when='@2.4')
+ patch('2.1-fix-clear_cache.patch', when='@2.1')
+
def cmake_args(self):
args = []
if self.spec.satisfies('@2.4:'):
diff --git a/var/spack/repos/builtin/packages/gtksourceview/package.py b/var/spack/repos/builtin/packages/gtksourceview/package.py
index 01876610b2..ed6737133a 100644
--- a/var/spack/repos/builtin/packages/gtksourceview/package.py
+++ b/var/spack/repos/builtin/packages/gtksourceview/package.py
@@ -35,7 +35,7 @@ class Gtksourceview(AutotoolsPackage):
depends_on('pango')
depends_on('gdk-pixbuf')
depends_on('atk')
- depends_on('libiconv')
+ depends_on('iconv')
def url_for_version(self, version):
url = 'https://download.gnome.org/sources/gtksourceview/'
diff --git a/var/spack/repos/builtin/packages/gunrock/package.py b/var/spack/repos/builtin/packages/gunrock/package.py
new file mode 100644
index 0000000000..f47c1bf635
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gunrock/package.py
@@ -0,0 +1,31 @@
+# Copyright 2013-2020 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 Gunrock(CMakePackage, CudaPackage):
+ """High-Performance Graph Primitives on GPUs"""
+
+ homepage = "https://gunrock.github.io/docs/"
+ git = "https://github.com/gunrock/gunrock.git"
+
+ version('master', submodules=True)
+ version('1.1', submodules=True, tag='v1.1')
+ version('1.0', submodules=True, tag='v1.0')
+ version('0.5.1', submodules=True, tag='v0.5.1')
+ version('0.5', submodules=True, tag='v0.5')
+ version('0.4', submodules=True, tag='v0.4')
+ version('0.3.1', submodules=True, tag='v0.3.1')
+ version('0.3', submodules=True, tag='v0.3')
+ version('0.2', submodules=True, tag='v0.2')
+ version('0.1', submodules=True, tag='v0.1')
+
+ depends_on('cuda')
+
+ def install(self, spec, prefix):
+ with working_dir(self.build_directory):
+ install_tree('bin', prefix.bin)
+ install_tree('lib', prefix.lib)
diff --git a/var/spack/repos/builtin/packages/hcol/package.py b/var/spack/repos/builtin/packages/hcol/package.py
new file mode 100644
index 0000000000..70278eba93
--- /dev/null
+++ b/var/spack/repos/builtin/packages/hcol/package.py
@@ -0,0 +1,25 @@
+# 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 Hcol(Package):
+ """This is the SPIRAL package for the Hybrid Control Operator Language
+ (HCOL)."""
+
+ homepage = "https://https://spiral.net"
+ url = "https://github.com/spiral-software/spiral-package-hcol/archive/1.0.0.zip"
+
+ maintainers = ['spiralgen']
+ extends('spiral')
+
+ version('1.0.0', sha256='9a95574e2b061d03d264c32dbf733e893017d1644b6486c7a8a55a3b24783f58')
+
+ # HCOL package is an extension for Spiral. Install the files in their own
+ # prefix, in "namespaces/packages/hcol". This allows 'spack activate' to
+ # symlink hcol at the right location for spiral packages.
+ def install(self, spec, prefix):
+ install_tree('.', prefix.namespaces.packages.hcol)
diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py
index 0c30501560..14f04ea294 100644
--- a/var/spack/repos/builtin/packages/hdf/package.py
+++ b/var/spack/repos/builtin/packages/hdf/package.py
@@ -21,9 +21,11 @@ class Hdf(AutotoolsPackage):
version('4.2.11', sha256='c3f7753b2fb9b27d09eced4d2164605f111f270c9a60b37a578f7de02de86d24')
variant('szip', default=False, description="Enable szip support")
+ variant('libtirpc', default=False, description="Use xdr library from libtirpc package; if false, will use system or hdf internal")
depends_on('jpeg@6b:')
depends_on('szip', when='+szip')
+ depends_on('libtirpc', when='+libtirpc')
depends_on('zlib@1.1.4:')
depends_on('bison', type='build')
@@ -49,4 +51,9 @@ class Hdf(AutotoolsPackage):
else:
config_args.append('--without-szlib')
+ if '+libtirpc' in spec:
+ config_args.append('LIBS=-ltirpc')
+ config_args.append('CPPFLAGS=-I{0}/include/tirpc'.format(
+ spec['libtirpc'].prefix))
+
return config_args
diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py
index 3c62d46f0d..9d5505b5f7 100644
--- a/var/spack/repos/builtin/packages/hdf5/package.py
+++ b/var/spack/repos/builtin/packages/hdf5/package.py
@@ -23,7 +23,12 @@ class Hdf5(AutotoolsPackage):
version('develop', branch='develop')
- version('1.10.6', sha256='5f9a3ee85db4ea1d3b1fa9159352aebc2af72732fc2f58c96a3f0768dba0e9aa')
+ version('1.12.0', sha256='a62dcb276658cb78e6795dd29bf926ed7a9bc4edf6e77025cd2c689a8f97c17a')
+
+ # HDF5 1.12 broke API compatibility, so we currently prefer the latest
+ # 1.10 release. packages that want later versions of HDF5 should specify,
+ # e.g., depends_on("hdf5@1.12:") to get 1.12 or higher.
+ version('1.10.6', sha256='5f9a3ee85db4ea1d3b1fa9159352aebc2af72732fc2f58c96a3f0768dba0e9aa', preferred=True)
version('1.10.5', sha256='6d4ce8bf902a97b050f6f491f4268634e252a63dadd6656a1a9be5b7b7726fa8')
version('1.10.4', sha256='8f60dc4dd6ab5fcd23c750d1dc5bca3d0453bdce5c8cdaf0a4a61a9d1122adb2')
version('1.10.3', sha256='b600d7c914cfa80ae127cd1a1539981213fee9994ac22ebec9e3845e951d9b39')
diff --git a/var/spack/repos/builtin/packages/helics/package.py b/var/spack/repos/builtin/packages/helics/package.py
new file mode 100644
index 0000000000..7aa4a06c46
--- /dev/null
+++ b/var/spack/repos/builtin/packages/helics/package.py
@@ -0,0 +1,105 @@
+# Copyright 2013-2020 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 Helics(CMakePackage):
+ """HELICS is a general-purpose, modular, highly-scalable co-simulation
+ framework that runs cross-platform (Linux, Windows, and Mac OS X) and
+ supports both event driven and time series simulation."""
+
+ homepage = "https://github.com/GMLC-TDC/HELICS"
+ url = "https://github.com/GMLC-TDC/HELICS/releases/download/v2.4.1/Helics-v2.4.1-source.tar.gz"
+ git = "https://github.com/GMLC-TDC/HELICS.git"
+
+ maintainers = ['nightlark']
+
+ version('develop', branch='develop', submodules=True)
+ version('master', branch='master', submodules=True)
+ version('2.4.2', sha256='957856f06ed6d622f05dfe53df7768bba8fe2336d841252f5fac8345070fa5cb')
+ version('2.4.1', sha256='ac077e9efe466881ea366721cb31fb37ea0e72a881a717323ba4f3cdda338be4')
+
+ variant('build_type', default='Release',
+ description='CMake build type',
+ values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'))
+ variant('apps', default=True, description="Install the HELICS apps")
+ variant('c_shared', default=True, description="Install the C shared library")
+ variant('cxx_shared', default=True, description="Install the CXX shared library")
+ variant('zmq', default=True, description="Enable ZeroMQ core types")
+ variant('tcp', default=True, description="Enable TCP core types")
+ variant('udp', default=True, description="Enable UDP core type")
+ variant('ipc', default=True, description="Enable IPC core type")
+ variant('inproc', default=True, description="Enable in-process core type")
+ variant('mpi', default=False, description="Enable MPI core type")
+ variant('boost', default=True, description="Compile with Boost libraries")
+ variant('asio', default=True, description="Compile with ASIO libraries")
+ variant('swig', default=False, description="Build language bindings with SWIG")
+ variant('webserver', default=True, description="Enable the integrated webserver in the HELICS broker server")
+
+ # Build dependency
+ depends_on('git', type='build', when='@master:')
+ depends_on('cmake@3.4:', type='build')
+ depends_on('boost@1.70: ~atomic ~chrono ~date_time ~exception ~filesystem ~graph ~iostreams ~locale ~log ~math ~program_options ~random ~regex ~serialization ~signals ~system ~test ~thread ~timer ~wave', type='build', when='+boost')
+ depends_on('swig@3.0:', type='build', when='+swig')
+
+ depends_on('libzmq@4.3:', when='+zmq')
+ depends_on('mpi@2', when='+mpi')
+
+ # OpenMPI doesn't work with HELICS <=2.4.1
+ conflicts('^openmpi', when='@:2.4.1 +mpi')
+
+ # Boost is required for ipc and webserver options
+ conflicts('+ipc', when='~boost')
+ conflicts('+webserver', when='~boost')
+
+ # ASIO (vendored in HELICS repo) is required for tcp and udp options
+ conflicts('+tcp', when='~asio')
+ conflicts('+udp', when='~asio')
+
+ def cmake_args(self):
+ spec = self.spec
+ args = [
+ '-DHELICS_BUILD_EXAMPLES=OFF',
+ '-DHELICS_BUILD_TESTS=OFF',
+ ]
+
+ # HELICS core type CMake options
+ args.append('-DENABLE_ZMQ_CORE={0}'.format(
+ 'ON' if '+zmq' in spec else 'OFF'))
+ args.append('-DENABLE_TCP_CORE={0}'.format(
+ 'ON' if '+tcp' in spec else 'OFF'))
+ args.append('-DENABLE_UDP_CORE={0}'.format(
+ 'ON' if '+udp' in spec else 'OFF'))
+ args.append('-DENABLE_IPC_CORE={0}'.format(
+ 'ON' if '+ipc' in spec else 'OFF'))
+ args.append('-DENABLE_INPROC_CORE={0}'.format(
+ 'ON' if '+inproc' in spec else 'OFF'))
+ args.append('-DENABLE_MPI_CORE={0}'.format(
+ 'ON' if '+mpi' in spec else 'OFF'))
+
+ # HELICS shared library options
+ args.append('-DHELICS_DISABLE_C_SHARED_LIB={0}'.format(
+ 'OFF' if '+c_shared' in spec else 'ON'))
+ args.append('-DHELICS_BUILD_CXX_SHARED_LIB={0}'.format(
+ 'ON' if '+cxx_shared' in spec else 'OFF'))
+
+ # HELICS executable app options
+ args.append('-DHELICS_BUILD_APP_EXECUTABLES={0}'.format(
+ 'ON' if '+apps' in spec else 'OFF'))
+ args.append('-DHELICS_DISABLE_WEBSERVER={0}'.format(
+ 'OFF' if '+webserver' in spec else 'ON'))
+
+ # Extra HELICS library dependencies
+ args.append('-DHELICS_DISABLE_BOOST={0}'.format(
+ 'OFF' if '+boost' in spec else 'ON'))
+ args.append('-DHELICS_DISABLE_ASIO={0}'.format(
+ 'OFF' if '+asio' in spec else 'ON'))
+
+ # SWIG
+ args.append('-DHELICS_ENABLE_SWIG={0}'.format(
+ 'ON' if '+swig' in spec else 'OFF'))
+
+ return args
diff --git a/var/spack/repos/builtin/packages/hepmc/package.py b/var/spack/repos/builtin/packages/hepmc/package.py
index 2828a179ff..d208e7ecde 100644
--- a/var/spack/repos/builtin/packages/hepmc/package.py
+++ b/var/spack/repos/builtin/packages/hepmc/package.py
@@ -28,24 +28,46 @@ class Hepmc(CMakePackage):
variant('python', default=False, description='Enable Python bindings')
variant('rootio', default=False, description='Enable ROOT I/O')
+ variant('interfaces', default=False, description='Install interfaces for some Monte-Carlo Event Gens')
depends_on('cmake@2.8.9:', type='build')
- # FIXME: Officially supports Python3, but the build system doesn't find it
- depends_on('python@:2.99.99', when='+python')
+ depends_on('python', when='+python')
depends_on('root', when='+rootio')
- conflicts('+python', when='@:3.1.99')
- conflicts('+rootio', when='@:2.99.99')
+ conflicts('+python', when='@:3.1')
+ conflicts('+rootio', when='@:2')
+ conflicts('+interfaces', when='@:2')
+ @when('@:2')
+ def cmake_args(self):
+ return ['-Dmomentum:STRING=GEV', '-Dlength:STRING=MM']
+
+ @when('@3:')
def cmake_args(self):
spec = self.spec
- return [
+ args = [
'-Dmomentum:STRING=GEV',
'-Dlength:STRING=MM',
'-DHEPMC3_ENABLE_PYTHON={0}'.format(spec.satisfies('+python')),
- '-DHEPMC3_ENABLE_ROOTIO={0}'.format(spec.satisfies('+rootio'))
+ '-DHEPMC3_ENABLE_ROOTIO={0}'.format(spec.satisfies('+rootio')),
+ '-DHEPMC3_INSTALL_INTERFACES={0}'.format(
+ spec.satisfies('+interfaces')),
]
+ if self.spec.satisfies('+python'):
+ py_ver = spec['python'].version.up_to(2)
+ py_sitepkg = join_path(self.prefix, site_packages_dir)
+ args.extend([
+ '-DHEPMC3_PYTHON_VERSIONS={0}'.format(py_ver),
+ '-DHEPMC3_Python_SITEARCH{0}={1}'.format(
+ py_ver.joined, py_sitepkg)
+ ])
+
+ if self.spec.satisfies('+rootio'):
+ args.append('-DROOT_DIR={0}'.format(self.spec['root'].prefix))
+
+ return args
+
def url_for_version(self, version):
if version > Version("3.0.0"):
url = "http://hepmc.web.cern.ch/hepmc/releases/HepMC3-{0}.tar.gz"
diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py
index fef2ec7b3e..d64ce78fad 100644
--- a/var/spack/repos/builtin/packages/hpctoolkit/package.py
+++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py
@@ -19,6 +19,7 @@ class Hpctoolkit(AutotoolsPackage):
maintainers = ['mwkrentel']
version('master', branch='master')
+ version('2020.03.01', commit='94ede4e6fa1e05e6f080be8dc388240ea027f769')
version('2019.12.28', commit='b4e1877ff96069fd8ed0fdf0e36283a5b4b62240')
version('2019.08.14', commit='6ea44ed3f93ede2d0a48937f288a2d41188a277c')
version('2018.12.28', commit='8dbf0d543171ffa9885344f32f23cc6f7f6e39bc')
@@ -52,27 +53,28 @@ class Hpctoolkit(AutotoolsPackage):
'for the compute nodes.')
variant('cuda', default=False,
- description='Support CUDA on NVIDIA GPUs (master branch).')
+ description='Support CUDA on NVIDIA GPUs (2020.03.01 or later).')
boost_libs = (
'+atomic +chrono +date_time +filesystem +system +thread +timer'
' +graph +regex +shared +multithreaded visibility=global'
)
- depends_on('binutils+libiberty~nls', type='link')
+ depends_on('binutils+libiberty~nls', type='link', when='@master')
+ depends_on('binutils@:2.33.1+libiberty~nls', type='link', when='@:2020.03.99')
depends_on('boost' + boost_libs)
- depends_on('bzip2', type='link')
- depends_on('dyninst')
- depends_on('elfutils~nls', type='link')
- depends_on('intel-tbb')
+ depends_on('bzip2+shared', type='link')
+ depends_on('dyninst@9.3.2:')
+ depends_on('elfutils+bzip2+xz~nls', type='link')
+ depends_on('intel-tbb+shared')
depends_on('libdwarf')
- depends_on('libmonitor+hpctoolkit')
- depends_on('libmonitor+bgq', when='+bgq')
- depends_on('libunwind@1.4:')
+ depends_on('libmonitor+hpctoolkit+bgq', when='+bgq')
+ depends_on('libmonitor+hpctoolkit~bgq', when='~bgq')
+ depends_on('libunwind@1.4: +xz')
depends_on('mbedtls+pic')
depends_on('xerces-c transcoder=iconv')
depends_on('xz', type='link')
- depends_on('zlib')
+ depends_on('zlib+shared')
depends_on('cuda', when='+cuda')
depends_on('intel-xed', when='target=x86_64:')
@@ -83,11 +85,14 @@ class Hpctoolkit(AutotoolsPackage):
conflicts('%gcc@:4.7.99', when='^dyninst@10.0.0:',
msg='hpctoolkit requires gnu gcc 4.8.x or later')
- conflicts('%gcc@:4.99.99', when='@master',
- msg='the master branch requires gnu gcc 5.x or later')
+ conflicts('%gcc@:4.99.99', when='@2020.03.01:',
+ msg='hpctoolkit requires gnu gcc 5.x or later')
conflicts('+cuda', when='@2018.0.0:2019.99.99',
- msg='cuda is only available on the master branch')
+ msg='cuda requires 2020.03.01 or later')
+
+ conflicts('+bgq', when='@2020.03.01:',
+ msg='blue gene requires 2019.12.28 or earlier')
flag_handler = AutotoolsPackage.build_system_flags
diff --git a/var/spack/repos/builtin/packages/hpcviewer/package.py b/var/spack/repos/builtin/packages/hpcviewer/package.py
index 21cfa67daa..97688963cf 100644
--- a/var/spack/repos/builtin/packages/hpcviewer/package.py
+++ b/var/spack/repos/builtin/packages/hpcviewer/package.py
@@ -37,6 +37,9 @@ class Hpcviewer(Package):
maintainers = ['mwkrentel']
viewer_sha = {
+ ('2020.02', 'x86_64'): 'af1f514547a9325aee30eb891b31e38c7ea3f33d2d1978b44f83e7daa3d5de6b',
+ ('2020.02', 'ppc64'): '7bb4926202db663aedd5a6830778c5f73f6b08a65d56861824ea95ba83b1f59c',
+ ('2020.02', 'ppc64le'): 'cfcebb7ba301affd6d21d2afd43c540e6dd4c5bc39b0d20e8bd1e4fed6aa3481',
('2020.01', 'x86_64'): '3cd5a2a382cec1d64c8bd0abaf2b1461dcd4092a4b4074ddbdc1b96d2a0b4220',
('2020.01', 'ppc64'): '814394a5f410033cc1019526c268ef98b5b381e311fcd39ae8b2bde6c6ff017c',
('2020.01', 'ppc64le'): 'e830e956b8088c415fb25ef44a8aca16ebcb27bcd34536866612343217e3f9e4',
@@ -61,6 +64,9 @@ class Hpcviewer(Package):
}
trace_sha = {
+ ('2020.02', 'x86_64'): 'b7b634e91108aa50a2e8647ac6bac87df775ae38aff078545efaa84735e0a666',
+ ('2020.02', 'ppc64'): 'a3e845901689e1b32bc6ab2826c6ac6ed352df4839090fa530b20f747e6e0957',
+ ('2020.02', 'ppc64le'): 'a64a283f61e706d988952a7cede9fac0328b09d2d0b64e4c08acc54e38781c98',
('2020.01', 'x86_64'): '9459177a2445e85d648384e2ccee20524592e91a74d615262f32d0876831cd7c',
('2020.01', 'ppc64'): '02366a2ba30b9b2450d50cf44933288f04fae5bf9868eef7bb2ae1b49d4f454e',
('2020.01', 'ppc64le'): '39970e84e397ed96bc994e7b8db3b7b3aab4e3155fa7ca8e68b9274bb58115f0',
diff --git a/var/spack/repos/builtin/packages/hpx/package.py b/var/spack/repos/builtin/packages/hpx/package.py
index 9d24fc0e88..a8f028b27b 100644
--- a/var/spack/repos/builtin/packages/hpx/package.py
+++ b/var/spack/repos/builtin/packages/hpx/package.py
@@ -15,6 +15,8 @@ class Hpx(CMakePackage, CudaPackage):
maintainers = ['msimberg', 'albestro']
version('master', git='https://github.com/STEllAR-GROUP/hpx.git', branch='master')
+ version('stable', git='https://github.com/STEllAR-GROUP/hpx.git', tag='stable')
+ version('1.4.1', sha256='965dabe44d17480e326d92da4eec56722d98b33943c53d2b0f8f4655cb208023')
version('1.4.0', sha256='241a1c47fafba751848fac12446e7bf4ad3d342d5eb2fa1ef94dd904acc329ed')
version('1.3.0', sha256='cd34da674064c4cc4a331402edbd65c5a1f8058fb46003314ca18fa08423c5ad')
version('1.2.1', sha256='8cba9b48e919035176d3b7bbfc2c110df6f07803256626f1dad8d9dde16ab77a')
@@ -67,6 +69,7 @@ class Hpx(CMakePackage, CudaPackage):
depends_on('boost cxxstd=11', when='cxxstd=11')
depends_on('boost cxxstd=14', when='cxxstd=14')
depends_on('boost cxxstd=17', when='cxxstd=17')
+ depends_on('boost cxxstd=17', when='@stable')
# Malloc
depends_on('gperftools', when='malloc=tcmalloc')
@@ -156,7 +159,8 @@ class Hpx(CMakePackage, CudaPackage):
'-DBOOST_ROOT={0}'.format(spec['boost'].prefix),
'-DHWLOC_ROOT={0}'.format(spec['hwloc'].prefix),
'-DHPX_WITH_BOOST_ALL_DYNAMIC_LINK=ON',
- '-DBUILD_SHARED_LIBS=ON'
+ '-DBUILD_SHARED_LIBS=ON',
+ '-DHPX_DATASTRUCTURES_WITH_ADAPT_STD_TUPLE=OFF'
])
return args
diff --git a/var/spack/repos/builtin/packages/hsakmt/package.py b/var/spack/repos/builtin/packages/hsakmt/package.py
index 3af48b66cd..07a1afdb32 100644
--- a/var/spack/repos/builtin/packages/hsakmt/package.py
+++ b/var/spack/repos/builtin/packages/hsakmt/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Hsakmt(AutotoolsPackage):
+class Hsakmt(AutotoolsPackage, XorgPackage):
"""hsakmt is a thunk library that provides a userspace interface to amdkfd
(AMD's HSA Linux kernel driver). It is the HSA equivalent of libdrm."""
homepage = "https://cgit.freedesktop.org/amd/hsakmt/"
- url = "https://www.x.org/archive/individual/lib/hsakmt-1.0.0.tar.gz"
+ xorg_mirror_path = "lib/hsakmt-1.0.0.tar.gz"
version('1.0.0', sha256='3d46af85c27091937618f5e92f7446cff3e9e6378888645e6e238806461e5b77')
diff --git a/var/spack/repos/builtin/packages/htop/package.py b/var/spack/repos/builtin/packages/htop/package.py
index 9de69ae0bf..e0d9960467 100644
--- a/var/spack/repos/builtin/packages/htop/package.py
+++ b/var/spack/repos/builtin/packages/htop/package.py
@@ -18,6 +18,7 @@ class Htop(AutotoolsPackage):
version('2.0.2', sha256='179be9dccb80cee0c5e1a1f58c8f72ce7b2328ede30fb71dcdf336539be2f487')
depends_on('ncurses')
+ depends_on('python+pythoncmd', type='build')
def configure_args(self):
return ['--enable-shared']
diff --git a/var/spack/repos/builtin/packages/http-parser/package.py b/var/spack/repos/builtin/packages/http-parser/package.py
new file mode 100644
index 0000000000..552b7d2cbb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/http-parser/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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 HttpParser(MakefilePackage):
+ """http request/response parser for c"""
+
+ homepage = "https://github.com/nodejs/http-parser"
+ url = "https://github.com/nodejs/http-parser/archive/v2.9.4.tar.gz"
+
+ version('2.9.4', sha256='467b9e30fd0979ee301065e70f637d525c28193449e1b13fbcb1b1fab3ad224f')
+ version('2.9.3', sha256='8fa0ab8770fd8425a9b431fdbf91623c4d7a9cdb842b9339289bd2b0b01b0d3d')
+ version('2.9.2', sha256='5199500e352584852c95c13423edc5f0cb329297c81dd69c3c8f52a75496da08')
+ version('2.9.1', sha256='33220771208bcacecd970b6de03bebe239374a8e9cf3baeda79b4f3920bede21')
+
+ def install(self, spec, prefix):
+ make('install', "DESTDIR=%s" % prefix, "PREFIX=")
diff --git a/var/spack/repos/builtin/packages/httpress/package.py b/var/spack/repos/builtin/packages/httpress/package.py
new file mode 100644
index 0000000000..b4a9dab270
--- /dev/null
+++ b/var/spack/repos/builtin/packages/httpress/package.py
@@ -0,0 +1,24 @@
+# Copyright 2013-2020 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 Httpress(MakefilePackage):
+ """High performance HTTP server stress & benchmark utility."""
+
+ homepage = "https://bitbucket.org/yarosla/httpress/wiki/Home"
+ hg = "https://bitbucket.org/yarosla/httpress"
+
+ version('develop')
+ version('1.1.0', revision='1.1.0')
+
+ depends_on('mercurial', type='build')
+ depends_on('libev')
+ depends_on('gnutls')
+
+ def install(self, spec, prefix):
+ install_tree('./bin/Release', prefix.bin)
+ install_tree('./obj/Release', prefix.obj)
diff --git a/var/spack/repos/builtin/packages/hugo/package.py b/var/spack/repos/builtin/packages/hugo/package.py
index ea2891cfe4..079843524b 100644
--- a/var/spack/repos/builtin/packages/hugo/package.py
+++ b/var/spack/repos/builtin/packages/hugo/package.py
@@ -13,14 +13,21 @@ class Hugo(Package):
homepage = "https://gohugo.io"
url = "https://github.com/gohugoio/hugo/archive/v0.53.tar.gz"
+ version('0.68.3', sha256='38e743605e45e3aafd9563feb9e78477e72d79535ce83b56b243ff991d3a2b6e')
version('0.53', sha256='48e65a33d3b10527101d13c354538379d9df698e5c38f60f4660386f4232e65c')
# Uses go modules.
# See https://gohugo.io/getting-started/installing/#fetch-from-github
depends_on('go@1.11:', when='@0.48:', type='build')
+ variant('extended', default=False, description="Enable extended features")
+
def install(self, spec, prefix):
+ go_args = ['build']
+ if self.spec.satisfies('+extended'):
+ go_args.extend(['--tags', 'extended'])
+
go = which('go')
- go('build')
+ go(*go_args)
mkdir(prefix.bin)
install('hugo', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/hydrogen/package.py b/var/spack/repos/builtin/packages/hydrogen/package.py
index 625c336fff..d0aef797e7 100644
--- a/var/spack/repos/builtin/packages/hydrogen/package.py
+++ b/var/spack/repos/builtin/packages/hydrogen/package.py
@@ -18,7 +18,7 @@ class Hydrogen(CMakePackage):
maintainers = ['bvanessen']
version('develop', branch='hydrogen')
- version('1.3.3', sha256='140112066b84d33ca4b75c8e520fb15748fa648c4d2b934c1eb5510173ede5f5')
+ version('1.3.3', sha256='a51a1cfd40ac74d10923dfce35c2c04a3082477683f6b35e7b558ea9f4bb6d51')
version('1.3.2', sha256='50bc5e87955f8130003d04dfd9dcad63107e92b82704f8107baf95b0ccf98ed6')
version('1.3.1', sha256='a8b8521458e9e747f2b24af87c4c2749a06e500019c383e0cefb33e5df6aaa1d')
version('1.3.0', sha256='0f3006aa1d8235ecdd621e7344c99f56651c6836c2e1bc0cf006331b70126b36')
diff --git a/var/spack/repos/builtin/packages/iceauth/package.py b/var/spack/repos/builtin/packages/iceauth/package.py
index fc55defa42..28497c8d9e 100644
--- a/var/spack/repos/builtin/packages/iceauth/package.py
+++ b/var/spack/repos/builtin/packages/iceauth/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Iceauth(AutotoolsPackage):
+class Iceauth(AutotoolsPackage, XorgPackage):
"""The iceauth program is used to edit and display the authorization
information used in connecting with ICE. It operates very much
like the xauth program for X11 connection authentication records."""
homepage = "http://cgit.freedesktop.org/xorg/app/iceauth"
- url = "https://www.x.org/archive/individual/app/iceauth-1.0.7.tar.gz"
+ xorg_mirror_path = "app/iceauth-1.0.7.tar.gz"
version('1.0.7', sha256='6c9706cce276609876e768759ed4ee3b447cd17af4a61f9b5a374c7dda9696d8')
diff --git a/var/spack/repos/builtin/packages/ico/package.py b/var/spack/repos/builtin/packages/ico/package.py
index f5cfe58dae..b2c5f991b8 100644
--- a/var/spack/repos/builtin/packages/ico/package.py
+++ b/var/spack/repos/builtin/packages/ico/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Ico(AutotoolsPackage):
+class Ico(AutotoolsPackage, XorgPackage):
"""ico is a simple animation program that may be used for testing various
X11 operations and extensions. It displays a wire-frame rotating
polyhedron, with hidden lines removed, or a solid-fill polyhedron with
hidden faces removed."""
homepage = "http://cgit.freedesktop.org/xorg/app/ico"
- url = "https://www.x.org/archive/individual/app/ico-1.0.4.tar.gz"
+ xorg_mirror_path = "app/ico-1.0.4.tar.gz"
version('1.0.4', sha256='eb8609c3b43dc2e575272f2702590525fe13229e022c4aff8b9a0cc2a3f3205d')
diff --git a/var/spack/repos/builtin/packages/imake/package.py b/var/spack/repos/builtin/packages/imake/package.py
index 60f705e9aa..9157a9951a 100644
--- a/var/spack/repos/builtin/packages/imake/package.py
+++ b/var/spack/repos/builtin/packages/imake/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Imake(AutotoolsPackage):
+class Imake(AutotoolsPackage, XorgPackage):
"""The imake build system."""
homepage = "http://www.snake.net/software/imake-stuff/"
- url = "https://www.x.org/archive/individual/util/imake-1.0.7.tar.gz"
+ xorg_mirror_path = "util/imake-1.0.7.tar.gz"
version('1.0.7', sha256='6bda266a07eb33445d513f1e3c82a61e4822ccb94d420643d58e1be5f881e5cb')
diff --git a/var/spack/repos/builtin/packages/inputproto/package.py b/var/spack/repos/builtin/packages/inputproto/package.py
index f6db7868de..b429a12350 100644
--- a/var/spack/repos/builtin/packages/inputproto/package.py
+++ b/var/spack/repos/builtin/packages/inputproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Inputproto(AutotoolsPackage):
+class Inputproto(AutotoolsPackage, XorgPackage):
"""X Input Extension.
This extension defines a protocol to provide additional input devices
management such as graphic tablets."""
homepage = "http://cgit.freedesktop.org/xorg/proto/inputproto"
- url = "https://www.x.org/archive/individual/proto/inputproto-2.3.2.tar.gz"
+ xorg_mirror_path = "proto/inputproto-2.3.2.tar.gz"
version('2.3.2', sha256='10eaadd531f38f7c92ab59ef0708ca195caf3164a75c4ed99f0c04f2913f6ef3')
diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py
index 9d5ab0f2ef..8ac099e65d 100644
--- a/var/spack/repos/builtin/packages/intel-daal/package.py
+++ b/var/spack/repos/builtin/packages/intel-daal/package.py
@@ -11,6 +11,8 @@ class IntelDaal(IntelPackage):
homepage = "https://software.intel.com/en-us/daal"
+ version('2020.1.217', sha256='3f84dea0ce1038ac1b9c25b3e2c02e9fac440fa36cc8adfce69edfc06fe0edda',
+ url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16536/l_daal_2020.1.217.tgz')
version('2020.0.166', sha256='695166c9ab32ac5d3006d6d35162db3c98734210507144e315ed7c3b7dbca9c1',
url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16234/l_daal_2020.0.166.tgz')
version('2019.5.281', sha256='e92aaedbe35c9daf1c9483260cb2363da8a85fa1aa5566eb38cf4b1f410bc368',
diff --git a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py
index 80abcc3938..0102c42caa 100644
--- a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py
+++ b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py
@@ -7,7 +7,7 @@ from spack import *
import sys
-class IntelGpuTools(AutotoolsPackage):
+class IntelGpuTools(AutotoolsPackage, XorgPackage):
"""Intel GPU Tools is a collection of tools for development and testing of
the Intel DRM driver. There are many macro-level test suites that get used
against the driver, including xtest, rendercheck, piglit, and oglconform,
@@ -18,7 +18,7 @@ class IntelGpuTools(AutotoolsPackage):
Intel DRM Driver."""
homepage = "https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/"
- url = "https://www.x.org/archive/individual/app/intel-gpu-tools-1.16.tar.gz"
+ xorg_mirror_path = "app/intel-gpu-tools-1.16.tar.gz"
version('1.16', sha256='4874e6e7704c8d315deaf5b44cc9467ea5e502c7f816470a4a28827fcb34643f')
diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py
index 1727e488be..04df142bf5 100644
--- a/var/spack/repos/builtin/packages/intel-ipp/package.py
+++ b/var/spack/repos/builtin/packages/intel-ipp/package.py
@@ -11,6 +11,8 @@ class IntelIpp(IntelPackage):
homepage = "https://software.intel.com/en-us/intel-ipp"
+ version('2020.1.217', sha256='0bf8ac7e635e7e602cf201063a1a7dea3779b093104563fdb15e6b7ecf2f00a7',
+ url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16534/l_ipp_2020.1.217.tgz')
version('2020.0.166', sha256='6844007892ba524e828f245355cee44e8149f4c233abbbea16f7bb55a7d6ecff',
url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16233/l_ipp_2020.0.166.tgz')
version('2019.5.281', sha256='61d1e1da1a4a50f1cf02a3ed44e87eed05e94d58b64ef1e67a3bdec363bee713',
diff --git a/var/spack/repos/builtin/packages/intel-mkl-dnn/package.py b/var/spack/repos/builtin/packages/intel-mkl-dnn/package.py
deleted file mode 100644
index ab3a7cde46..0000000000
--- a/var/spack/repos/builtin/packages/intel-mkl-dnn/package.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 2013-2020 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 IntelMklDnn(CMakePackage):
- """Intel(R) Math Kernel Library for Deep Neural Networks
- (Intel(R) MKL-DNN)."""
-
- homepage = "https://intel.github.io/mkl-dnn/"
- url = "https://github.com/intel/mkl-dnn/archive/v1.1.1.tar.gz"
-
- maintainers = ['adamjstewart']
-
- version('1.2', sha256='30979a09753e8e35d942446c3778c9f0eba543acf2fb0282af8b9c89355d0ddf')
- version('1.1.3', sha256='0e9bcbc86cc215a84a5455a395ce540c68e255eaa586e37222fff622b9b17df7')
- version('1.1.2', sha256='284b20e0cab67025bb7d21317f805d6217ad77fb3a47ad84b3bacf37bde62da9')
- version('1.1.1', sha256='a31b08a89473bfe3bd6ed542503336d21b4177ebe4ccb9a97810808f634db6b6')
- version('1.1', sha256='c5aac67e5ed4d95fe9943f835df49bbe6d608507780787c64aa620bdbd2171ba')
- version('1.0.4', sha256='2a3ca90a8b690e65ddd0ccc95a09818e6da439cc854d014367645fcfd58a9690')
- version('1.0.3', sha256='e0de341bd0bbebde7637e69383899ba415ce67682ff2f0f3d5a0d268e1bea69b')
- version('1.0.2', sha256='3164eb2914e2160ac6ffd345781cf7554ce410830398cc6b2761e8668faf5ca8')
- version('1.0.1', sha256='91fb84601c18f8a5a87eccd7b63d61f03495f36c5c533bd7f59443e4f8bb2595')
- version('1.0', sha256='27fd9da9720c452852f1226581e7914efcf74e1ff898468fdcbe1813528831ba')
- version('0.21.3', sha256='31e78581e59d7e60d4becaba3834fc6a5bf2dccdae3e16b7f70d89ceab38423f')
- version('0.21.2', sha256='ed56652dd237deb86ee9bf102c18de5f2625c059e5ab1d7512c8dc01e316b694')
- version('0.21.1', sha256='766ecfa5ac68be8cf9eacd4c712935c0ed945e5e6fe51640f05ee735cff62a38')
- version('0.21', sha256='eb0aff133134898cf173d582a90e39b90ea9ea59544de7914208c2392b51a15f')
- version('0.20.6', sha256='74675e93eef339ff3d9a9be95c15d0c7ad8736a5356c23428ab2e33dcdb8e3e1')
- version('0.20.5', sha256='081d9f853c00fe0b597c8f00f2f3ff8d79c2a9cb95f292ff2c90557709763021')
- version('0.20.4', sha256='b6422a000a6754334bdae673c25f84efd95e6d3cd016b752145b9391dc13e729')
- version('0.20.3', sha256='a198a9bd3c584607e6a467f780beca92c8411cd656fcc8ec6fa5abe73d4af823')
- version('0.20.2', sha256='1ae0e8a1a3df58deadc08ca0a01f8d3720600b26ca9e53685493e8e8250243b2')
- version('0.20.1', sha256='26f720ed912843ba293e8a1e0822fe5318e93c529d80c87af1cf555d68e642d0')
- version('0.20', sha256='52e111fefbf5a38e36f7bae7646860f7cbc985eba0725768f3fee8cdb31a9977')
- version('0.19', sha256='ba39da6adb263df05c4ca2a120295641fc97be75b588922e4274cb628dbe1dcd')
- version('0.18.1', sha256='fc7506701dfece9b03c0dc83d0cda9a44a5de17cdb54bc7e09168003f02dbb70')
- version('0.11', sha256='4cb4a85b05fe42aa527fd70a048caddcba9361f6d3d7bea9f33d74524e206d7d')
- version('0.10', sha256='59828764ae43f1151f77b8997012c52e0e757bc50af1196b86fce8934178c570')
- version('0.9', sha256='8606a80851c45b0076f7d4047fbf774ce13d6b6d857cb2edf95c7e1fd4bca1c7')
-
- depends_on('cmake@2.8.11:', type='build')
- depends_on('intel-mkl')
- depends_on('llvm-openmp', when='%clang platform=darwin')
-
- def cmake_args(self):
- args = []
-
- # https://github.com/intel/mkl-dnn/issues/591
- if self.spec.satisfies('%clang platform=darwin'):
- args.extend([
- '-DOpenMP_CXX_FLAGS={0}'.format(self.compiler.openmp_flag),
- '-DOpenMP_C_FLAGS={0}'.format(self.compiler.openmp_flag),
- '-DOpenMP_CXX_LIB_NAMES=libomp',
- '-DOpenMP_C_LIB_NAMES=libomp',
- '-DOpenMP_libomp_LIBRARY={0}'.format(
- self.spec['llvm-openmp'].libs.libraries[0]
- ),
- '-DCMAKE_SHARED_LINKER_FLAGS={0}'.format(
- self.spec['llvm-openmp'].libs.ld_flags
- ),
- ])
-
- return args
diff --git a/var/spack/repos/builtin/packages/intel-mkl/package.py b/var/spack/repos/builtin/packages/intel-mkl/package.py
index 423223589a..4247f9bb8e 100644
--- a/var/spack/repos/builtin/packages/intel-mkl/package.py
+++ b/var/spack/repos/builtin/packages/intel-mkl/package.py
@@ -13,6 +13,8 @@ class IntelMkl(IntelPackage):
homepage = "https://software.intel.com/en-us/intel-mkl"
+ version('2020.1.217', sha256='082a4be30bf4f6998e4d6e3da815a77560a5e66a68e254d161ab96f07086066d',
+ url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16533/l_mkl_2020.1.217.tgz')
version('2020.0.166', sha256='f6d92deb3ff10b11ba3df26b2c62bb4f0f7ae43e21905a91d553e58f0f5a8ae0',
url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16232/l_mkl_2020.0.166.tgz')
version('2019.5.281', sha256='9995ea4469b05360d509c9705e9309dc983c0a10edc2ae3a5384bc837326737e',
diff --git a/var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py b/var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py
new file mode 100644
index 0000000000..a619d0d8cb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py
@@ -0,0 +1,81 @@
+# Copyright 2013-2020 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 IntelMpiBenchmarks(MakefilePackage):
+ """Intel(R) MPI Benchmarks provides a set of elementary benchmarks
+ that conform to MPI-1, MPI-2, and MPI-3 standard.
+ You can run all of the supported benchmarks, or a subset specified
+ in the command line using one executable file.
+ Use command-line parameters to specify various settings, such as
+ time measurement, message lengths, and selection of communicators. """
+
+ homepage = "https://software.intel.com/en-us/articles/intel-mpi-benchmarks"
+ url = "https://github.com/intel/mpi-benchmarks/archive/IMB-v2019.5.tar.gz"
+
+ maintainers = ['carsonwoods']
+
+ version('2019.5', sha256='61f8e872a3c3076af53007a68e4da3a8d66be2ba7a051dc21e626a4e2d26e651')
+ version('2019.4', sha256='aeb336be10275c1a2f579b491b6631122876b461ac7148b1d0764f13b7552690')
+ version('2019.3', sha256='4f256d11bfed9ca6166548486d61a062e67be61f13dd9f30690232720e185f31')
+ version('2019.2', sha256='0bc2224a913073aaa5958f6ae08341e5fcd39cedc6722a09bfd4a3d7591a340b')
+
+ depends_on('mpi')
+
+ variant(
+ 'benchmark', default='all',
+ values=('mpi1', 'ext', 'io', 'nbc',
+ 'p2p', 'rma', 'mt', 'all'),
+ multi=False,
+ description='Specify which benchmark to build')
+
+ def build(self, spec, prefix):
+ env['CC'] = spec['mpi'].mpicc
+ env['CXX'] = spec['mpi'].mpicxx
+
+ if 'benchmark=mpi1' in spec:
+ make('IMB-MPI1')
+ elif 'benchmark=ext' in spec:
+ make('IMB-EXT')
+ elif 'benchmark=io' in spec:
+ make('IMB-IO')
+ elif 'benchmark=nbc' in spec:
+ make('IMB-NBC')
+ elif 'benchmark=p2p' in spec:
+ make('IMB-P2P')
+ elif 'benchmark=rma' in spec:
+ make('IMB-RMA')
+ elif 'benchmark=mt' in spec:
+ make('IMB-MT')
+ else:
+ make("all")
+
+ def install(self, spec, prefix):
+ mkdir(prefix.bin)
+
+ if 'benchmark=mpi1' in spec:
+ install('IMB-MPI1', prefix.bin)
+ elif 'benchmark=ext' in spec:
+ install('IMB-EXT', prefix.bin)
+ elif 'benchmark=io' in spec:
+ install('IMB-IO', prefix.bin)
+ elif 'benchmark=nbc' in spec:
+ install('IMB-NBC', prefix.bin)
+ elif 'benchmark=p2p' in spec:
+ install('IMB-P2P', prefix.bin)
+ elif 'benchmark=rma' in spec:
+ install('IMB-RMA', prefix.bin)
+ elif 'benchmark=mt' in spec:
+ install('IMB-MT', prefix.bin)
+ else:
+ install('IMB-EXT', prefix.bin)
+ install('IMB-IO', prefix.bin)
+ install('IMB-MPI1', prefix.bin)
+ install('IMB-MT', prefix.bin)
+ install('IMB-NBC', prefix.bin)
+ install('IMB-P2P', prefix.bin)
+ install('IMB-RMA', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py
index 27885ed1f2..15cb84150e 100644
--- a/var/spack/repos/builtin/packages/intel-mpi/package.py
+++ b/var/spack/repos/builtin/packages/intel-mpi/package.py
@@ -11,6 +11,8 @@ class IntelMpi(IntelPackage):
homepage = "https://software.intel.com/en-us/intel-mpi-library"
+ version('2019.7.217', sha256='90383b0023f84ac003a55d8bb29dbcf0c639f43a25a2d8d8698a16e770ac9c07',
+ url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16546/l_mpi_2019.7.217.tgz')
version('2019.6.166', sha256='119be69f1117c93a9e5e9b8b4643918e55d2a55a78ad9567f77d16cdaf18cd6e',
url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16120/l_mpi_2019.6.166.tgz')
version('2019.5.281', sha256='9c59da051f1325b221e5bc4d8b689152e85d019f143069fa39e17989306811f4',
diff --git a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
index f1b453c257..410cd4045e 100644
--- a/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
+++ b/var/spack/repos/builtin/packages/intel-parallel-studio/package.py
@@ -20,6 +20,7 @@ class IntelParallelStudio(IntelPackage):
# in the 'intel' package.
# Cluster Edition (top tier; all components included)
+ version('cluster.2020.1', sha256='fd11d8de72b2bd60474f8bce7b463e4cbb2255969b9eaf24f689575aa2a2abab', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16526/parallel_studio_xe_2020_update1_cluster_edition.tgz')
version('cluster.2020.0', sha256='573b1d20707d68ce85b70934cfad15b5ad9cc14124a261c17ddd7717ba842c64', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16225/parallel_studio_xe_2020_cluster_edition.tgz')
#
version('cluster.2019.5', sha256='c03421de616bd4e640ed25ce4103ec9c5c85768a940a5cb5bd1e97b45be33904', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15809/parallel_studio_xe_2019_update5_cluster_edition.tgz')
@@ -58,6 +59,7 @@ class IntelParallelStudio(IntelPackage):
# NB: Pre-2018 download packages for Professional are the same as for
# Cluster; differences manifest only in the tokens present in the license
# file delivered as part of the purchase.
+ version('professional.2020.1', sha256='5b547be92ecf50cb338b3038a565f5609135b27aa98a8b7964879eb2331eb29a', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16527/parallel_studio_xe_2020_update1_professional_edition.tgz')
version('professional.2020.0', sha256='e88cad18d28da50ed9cb87b12adccf13efd91bf94731dc33290481306c6f15ac', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16226/parallel_studio_xe_2020_professional_edition.tgz')
#
version('professional.2019.5', sha256='0ec638330214539361f8632e20759f385a5a78013dcc980ee93743d86d354452', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15810/parallel_studio_xe_2019_update5_professional_edition.tgz')
@@ -92,6 +94,7 @@ class IntelParallelStudio(IntelPackage):
version('professional.2015.1', sha256='84fdf48d1de20e1d580ba5d419a5bc1c55d217a4f5dc1807190ecffe0229a62b', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/4992/parallel_studio_xe_2015_update1.tgz')
# Composer Edition (basic tier; excluded: MPI/..., Advisor/Inspector/Vtune)
+ version('composer.2020.1', sha256='26c7e7da87b8a83adfd408b2a354d872be97736abed837364c1bf10f4469b01e', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16530/parallel_studio_xe_2020_update1_composer_edition.tgz')
version('composer.2020.0', sha256='9168045466139b8e280f50f0606b9930ffc720bbc60bc76f5576829ac15757ae', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16229/parallel_studio_xe_2020_composer_edition.tgz')
#
version('composer.2019.5', sha256='e8c8e4b9b46826a02c49325c370c79f896858611bf33ddb7fb204614838ad56c', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15813/parallel_studio_xe_2019_update5_composer_edition.tgz')
diff --git a/var/spack/repos/builtin/packages/intel-pin/package.py b/var/spack/repos/builtin/packages/intel-pin/package.py
index ae0473734c..e886ba0784 100644
--- a/var/spack/repos/builtin/packages/intel-pin/package.py
+++ b/var/spack/repos/builtin/packages/intel-pin/package.py
@@ -15,6 +15,7 @@ class IntelPin(Package):
homepage = "http://www.pintool.org"
maintainers = ['matthiasdiener']
+ version('3.13', sha256='04a36e91f3f85119c3496f364a8806c82bb675f7536a8ab45344c9890b5e2714', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.13-98189-g60a6ef199-gcc-linux.tar.gz')
version('3.11', sha256='aa5abca475a6e106a75e6ed4ba518fb75a57549a59f00681e6bd6e3f221bd23a', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.11-97998-g7ecce2dac-gcc-linux.tar.gz')
version('3.10', sha256='7c8f14c3a0654bab662b58aba460403138fa44517bd40052501e8e0075b2702a', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.10-97971-gc5e41af74-gcc-linux.tar.gz')
version('3.7', sha256='4730328795be61f1addb0e505a3792a4b4ca80b1b9405acf217beec6b5b90fb8', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.7-97619-g0d0c92f4f-gcc-linux.tar.gz')
diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py
index 72ed301bd8..94eec8a06e 100644
--- a/var/spack/repos/builtin/packages/intel-tbb/package.py
+++ b/var/spack/repos/builtin/packages/intel-tbb/package.py
@@ -17,45 +17,48 @@ class IntelTbb(Package):
portable and composable, and that have future-proof scalability.
"""
homepage = "http://www.threadingbuildingblocks.org/"
+ url_prefix = 'https://github.com/oneapi-src/oneTBB/'
+ url = url_prefix + 'archive/v2020.1.tar.gz'
# Note: when adding new versions, please check and update the
# patches, filters and url_for_version() below as needed.
- version('2020.1', sha256='48d51c63b16787af54e1ee4aaf30042087f20564b4eecf9a032d5568bc2f0bf8')
- version('2020.0', sha256='8eed2377ac62e6ac10af5a8303ce861e4525ffe491a061b48e8fe094fc741ce9')
- version('2019.9', sha256='15652f5328cf00c576f065e5cd3eaf3317422fe82afb67a9bcec0dc065bd2abe')
- version('2019.8', sha256='7b1fd8caea14be72ae4175896510bf99c809cd7031306a1917565e6de7382fba')
- version('2019.7', sha256='4204a93f4c0fd989fb6f79acae74feb02ee39725c93968773d9b6efeb75c7a6a')
- version('2019.6', sha256='2ba197b3964fce8a84429dd15b75eba7434cb89afc54f86d5ee6f726fdbe97fd')
- version('2019.5', sha256='2ea82d74dec50e18075b4982b8d360f8bd2bf2950f38e2db483aef82e0047444')
- version('2019.4', sha256='342a0a2cd583879850658284b86e9351ea019b4f3fcd731f4c18456f0ce9f900')
- version('2019.3', sha256='b2244147bc8159cdd8f06a38afeb42f3237d3fc822555499d7ccfbd4b86f8ece')
- version('2019.2', sha256='1245aa394a92099e23ce2f60cdd50c90eb3ddcd61d86cae010ef2f1de61f32d9')
- version('2019.1', sha256='a4875c6b6853213083e52ecd303546bdf424568ec67cfc7e51d132a7c037c66a')
- version('2019', sha256='4d149895826cea785cd3b9a14f4aa743b6ef0df520eca7ee27d438fdc3d73399')
- version('2018.6', sha256='d3e5fbca3cc643d03bf332d576ff85e19aa774b483f148f95cd7d09958372109')
- version('2018.5', sha256='c4c2896af527392496c5e01ef8579058a71b6eebbd695924cd138841c13f07be')
- version('2018.4', sha256='d5604a04787c8a037d4944eeb89792e7c45f6a83c141b20df7ee89c2fb012ed1')
- version('2018.3', sha256='23793c8645480148e9559df96b386b780f92194c80120acce79fcdaae0d81f45')
- version('2018.2', sha256='78bb9bae474736d213342f01fe1a6d00c6939d5c75b367e2e43e7bf29a6d8eca')
- version('2018.1', sha256='c6462217d4ecef2b44fce63cfdf31f9db4f6ff493869899d497a5aef68b05fc5')
- version('2018', sha256='94f643f1edfaccb57d64b503c7c96f00dec64e8635c054bbaa33855d72c5822d')
- version('2017.8', sha256='1b1357f280e750d42506212adad02f85ac07c9d3e3c0813104f9122ef350497f')
- version('2017.7', sha256='78ad6ec9dd492b9dcc4753938b06716f7458506084adc138ced09aa0aa609b6b')
- version('2017.6', sha256='40d5409a6fd7e214a21fd1949df422ba113fa78fde42a6aac40a2fba36e9bcdb')
- version('2017.5', sha256='3122c87a35fde759567c8579ba36a36037c6df84c3f9c4df6c9e171f866f352f')
- version('2017.4', sha256='ed4f0cfc4acec8a0cf253037e8c555dd32ebe1b80b34fb0e3b2bf54087932562')
- version('2017.3', sha256='00a8b2798c498507572e24c2db7bf4896f05b760a38ed9ba566ffd348a7c6cef')
- version('2017.2', sha256='85e44041d967ce8c70077dbb57941cfa1d351688855aec47eb14c74eb2075f28')
- version('2017.1', sha256='a68bb7926fb9bee2a5f17b293c6d6aa33ccb089c3b321569bd4fe281cf65fa77')
- version('2017', sha256='c49139279067df1260dae4f0fe7e4d485898ce45e5f7e314c37eb5da8a0c303a')
- version('4.4.6', sha256='1d6b7e7db9141238c70984103f04280605dbcaa7fbcd049d332d2e73deed4f6d')
- version('4.4.5', sha256='984308f9dd8a36ff274c124b6f7f7d0ff74d4b7ebdf06511af78e098b5b6e70f')
- version('4.4.4', sha256='40e94c1adfd13308d207971629316ae9f76639b24f080bae8757c42d35778f10')
- version('4.4.3', sha256='9acb1c4e71edc3d5004ab9f0ed2bbd697ecec28a4315bbd2be8c5365e8214b90')
- version('4.4.2', sha256='3f6d7a32ac8b58469de7df3a2fcfe318793241ea39ce73aae1e637dbed833375')
- version('4.4.1', sha256='d67c5860ba1116b320b0d60a0ce403b088dc19355ab32c28cdaa3e352609713a')
- version('4.4', sha256='88e37f08ffcfaa24a2caf6c1a9084000cce689cc4b11edea7e89b20ab74ceceb')
+ version('2020.2', sha256='4804320e1e6cbe3a5421997b52199e3c1a3829b2ecb6489641da4b8e32faf500')
+ version('2020.1', sha256='7c96a150ed22bc3c6628bc3fef9ed475c00887b26d37bca61518d76a56510971')
+ version('2020.0', sha256='57714f2d2cf33935db33cee93af57eb3ecd5a7bef40c1fb7ca4a41d79684b118')
+ version('2019.9', sha256='3f5ea81b9caa195f1967a599036b473b2e7c347117330cda99b79cfcf5b77c84')
+ version('2019.8', sha256='6b540118cbc79f9cbc06a35033c18156c21b84ab7b6cf56d773b168ad2b68566')
+ version('2019.7', sha256='94847fc627ed081c63ea253e31f23645ed3671548106b095ce303d1da5d76275')
+ version('2019.6', sha256='21cd496ac768560e70d35e5423878aa3bcf0285f7194be77935d8febf0b18f47')
+ version('2019.5', sha256='abf9236e6ec9a3675fa59ab56c2192c7ab4f7096a82af118e8efa514b2541578')
+ version('2019.4', sha256='673e540aba6e526b220cbeacc3e4ff7b19a8689a00d7a09a9dc94396d73b24df')
+ version('2019.3', sha256='4cb6bde796ae056e7c29f31bfdc6cfd0cfe848925219e9c82a20f09158e81542')
+ version('2019.2', sha256='3bbe21054bd5b593ef99d4dfe451432cbf1f6f9429cd0dd543e879ef7e4e3327')
+ version('2019.1', sha256='e6fb8dd1a1ae834b4e5f4ae6c4c87a3362f81a3aaeddfa6325168c6cfee59391')
+ version('2019', sha256='91f00308a4e431bd9632b439d516134d7084f1eb35f52b7c9b111b46bdfcf093')
+ version('2018.6', sha256='0ebb5fc877871ef15f7395d6e3c86de4ffedb820dc336383a3ab71fc39426aa7')
+ version('2018.5', sha256='b8dbab5aea2b70cf07844f86fa413e549e099aa3205b6a04059ca92ead93a372')
+ version('2018.4', sha256='c973b41b6da3db10efa7e14ce64a850e3fbfbcc16374494a005bf994d53a770a')
+ version('2018.3', sha256='e5f19d747f6adabfc7daf2cc0a1ddcfab0f26bc083d70ea0a63def4a9f3919c5')
+ version('2018.2', sha256='733c4dba646573b8285b1923dc106f0d771725bea620baa3659c86ab9312a1f4')
+ version('2018.1', sha256='a9f51e0d081fbdda441d0150e759c7562318d6d7bc5a0c9a9d8064217d4d8d8d')
+ version('2018', sha256='d427c58a59863c5f9510fffb3d05cd1bcc7abb94cdde1613407559e88b1263ab')
+ version('2017.8', sha256='227cc1a8329da67f9957285f0020ad4d73d9ce26cbf88614349b8b74bb189ae1')
+ version('2017.7', sha256='f487243e5931e967479189ef75946f02e3bb666ea73dcc19ac2828edd5550746')
+ version('2017.6', sha256='b0f40edd010b90ce2519c1cebfa6f33216a1828d4fba19291b5cd23bd7fe809b')
+ version('2017.5', sha256='b785e7181317350f0bb20f7bffda20bdecde7e82b824d2e5eb6d408a3b9cbeaf')
+ version('2017.4', sha256='9a70ae3068767bf8c530bf98b9bbc655e36e82a301b347f7de76f99f401df1dd')
+ version('2017.3', sha256='230ed3ff32bb3e91df1f59e4a3a567bde02639d9970b7e87cee0421b4c0b0f23')
+ version('2017.2', sha256='dd37c896f95ca2357e828c24c9c4a169c6a6b5c905b3862a6cab09474d164497')
+ version('2017.1', sha256='9b5b36b6d0ed97a3a1711b9095e78aed79bc998957a4a6b3d8a7af063523f037')
+ version('2017', sha256='470544b0f374987273cc12e7706353edba8f9547578291d45b5b29358d4e5e81')
+ version('4.4.6', sha256='65101b3a0eda38320ec3e3603daa79c54e6a60fb59ed2959738eaf4ce6d17f0a')
+ version('4.4.5', sha256='2e372703fe444442c77760229897f00bb4babff62f7d0861b3f2783883cb257e')
+ version('4.4.4', sha256='3ed03838c4e368b78305b0561cac48d369919bb4d9d68edd4d8a3becd6f62f5c')
+ version('4.4.3', sha256='f0ff2e3735c8057b792f29c96f4f7623c1e4c76abfeda88be48645b8338c0f00')
+ version('4.4.2', sha256='1ab10e70354685cee3ddf614f3e291434cea86c8eb62031e025f4052278152ad')
+ version('4.4.1', sha256='05737bf6dd220b31aad63d77ca59c742271f81b4cc6643aa6f93d37450ae32b5')
+ version('4.4', sha256='93c74b6054c69c86fa49d0fce7c50061fc907cb198a7237b8dd058298fd40c0e')
provides('tbb')
@@ -113,7 +116,7 @@ class IntelTbb(Package):
# 4.4.6 --> 4.4.6.tar.gz
#
def url_for_version(self, version):
- url = 'https://github.com/intel/tbb/archive/{0}.tar.gz'
+ url = self.url_prefix + 'archive/{0}.tar.gz'
if version[0] >= 2020:
name = 'v{0}'.format(version)
elif version[0] >= 2017 and len(version) > 1:
diff --git a/var/spack/repos/builtin/packages/intel-xed/package.py b/var/spack/repos/builtin/packages/intel-xed/package.py
index ac9a7a4b0c..31b157531e 100644
--- a/var/spack/repos/builtin/packages/intel-xed/package.py
+++ b/var/spack/repos/builtin/packages/intel-xed/package.py
@@ -42,7 +42,8 @@ class IntelXed(Package):
variant('debug', default=False, description='Enable debug symbols')
- depends_on('python@2.7:', type='build')
+ # python module 'platform.linux_distribution' was removed in python 3.8
+ depends_on('python@2.7:3.7', type='build')
conflicts('target=ppc64:', msg='intel-xed only runs on x86')
conflicts('target=ppc64le:', msg='intel-xed only runs on x86')
diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py
index 5f3c19d578..e4461b072d 100644
--- a/var/spack/repos/builtin/packages/intel/package.py
+++ b/var/spack/repos/builtin/packages/intel/package.py
@@ -13,14 +13,17 @@ class Intel(IntelPackage):
# Same as in ../intel-parallel-studio/package.py, Composer Edition,
# but the version numbering in Spack differs.
+ version('19.1.1', sha256='26c7e7da87b8a83adfd408b2a354d872be97736abed837364c1bf10f4469b01e', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16530/parallel_studio_xe_2020_update1_composer_edition.tgz')
version('19.1.0', sha256='9168045466139b8e280f50f0606b9930ffc720bbc60bc76f5576829ac15757ae', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16229/parallel_studio_xe_2020_composer_edition.tgz')
version('19.0.5', sha256='e8c8e4b9b46826a02c49325c370c79f896858611bf33ddb7fb204614838ad56c', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15813/parallel_studio_xe_2019_update5_composer_edition.tgz')
version('19.0.4', sha256='1915993445323e1e78d6de73702a88fa3df2036109cde03d74ee38fef9f1abf2', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15537/parallel_studio_xe_2019_update4_composer_edition.tgz')
version('19.0.3', sha256='15373ac6df2a84e6dd9fa0eac8b5f07ab00cdbb67f494161fd0d4df7a71aff8e', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15272/parallel_studio_xe_2019_update3_composer_edition.tgz')
version('19.0.1', sha256='db000cb2ebf411f6e91719db68a0c68b8d3f7d38ad7f2049ea5b2f1b5f006c25', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/14832/parallel_studio_xe_2019_update1_composer_edition.tgz')
version('19.0.0', sha256='e1a29463038b063e01f694e2817c0fcf1a8e824e24f15a26ce85f20afa3f963a', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13581/parallel_studio_xe_2019_composer_edition.tgz')
- #
- version('18.0.4', sha256='94aca8f091dff9535b02f022a37aef150b36925c8ef069335621496f8e4db267', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13722/parallel_studio_xe_2018_update4_composer_edition.tgz')
+
+ # Version 18.0.5 comes with parallel studio 2018 update 4. See:
+ # https://software.intel.com/en-us/articles/intel-compiler-and-composer-update-version-numbers-to-compiler-version-number-mapping
+ version('18.0.5', sha256='94aca8f091dff9535b02f022a37aef150b36925c8ef069335621496f8e4db267', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13722/parallel_studio_xe_2018_update4_composer_edition.tgz')
version('18.0.3', sha256='f21f7759709a3d3e3390a8325fa89ac79b1fce8890c292e73b2ba3ec576ebd2b', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13002/parallel_studio_xe_2018_update3_composer_edition.tgz')
version('18.0.2', sha256='02d2a9fb10d9810f85dd77700215c4348d2e4475e814e4f086eb1442462667ff', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/12722/parallel_studio_xe_2018_update2_composer_edition.tgz')
version('18.0.1', sha256='db9aa417da185a03a63330c9d76ee8e88496ae6b771584d19003a29eedc7cab5', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/12381/parallel_studio_xe_2018_update1_composer_edition.tgz')
diff --git a/var/spack/repos/builtin/packages/iq-tree/package.py b/var/spack/repos/builtin/packages/iq-tree/package.py
new file mode 100644
index 0000000000..9058a66f10
--- /dev/null
+++ b/var/spack/repos/builtin/packages/iq-tree/package.py
@@ -0,0 +1,51 @@
+# Copyright 2013-2020 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 IqTree(CMakePackage):
+ """IQ-TREE Efficient software for phylogenomic inference"""
+
+ homepage = "http://www.iqtree.org"
+ git = "https://github.com/Cibiv/IQ-TREE.git"
+ url = "https://github.com/Cibiv/IQ-TREE/archive/v1.6.12.tar.gz"
+
+ version('1.6.12', sha256='9614092de7a157de82c9cc402b19cc8bfa0cb0ffc93b91817875c2b4bb46a284')
+
+ variant('openmp', default=True, description='Enable OpenMP support.')
+ variant('mpi', default=False, description='Enable MPI support.')
+
+ maintainers = ['ilbiondo']
+
+ # Depends on Eigen3 and zlib
+
+ depends_on("boost")
+ depends_on("eigen")
+ depends_on("zlib")
+ depends_on('mpi', when='+mpi')
+
+ def cmake_args(self):
+
+ # Note that one has to specify "single" to get a single
+ # threaded build. Otherwise OpenMP is assumed
+
+ spec = self.spec
+ args = []
+ iqflags = []
+
+ if '+openmp' in spec:
+ iqflags.append('omp')
+
+ if '+mpi' in spec:
+ iqflags.append('mpi')
+
+ if not iqflags:
+ iqflags.append('single')
+
+ args.append('-DIQTREE_FLAGS=' + ",".join(iqflags))
+
+ return args
diff --git a/var/spack/repos/builtin/packages/iwyu/iwyu-013-cmake.patch b/var/spack/repos/builtin/packages/iwyu/iwyu-013-cmake.patch
new file mode 100644
index 0000000000..78cb1a2d10
--- /dev/null
+++ b/var/spack/repos/builtin/packages/iwyu/iwyu-013-cmake.patch
@@ -0,0 +1,34 @@
+--- include-what-you-use/CMakeLists.txt 2019-10-24 15:47:52.000000000 -0400
++++ spack-src/CMakeLists.txt 2020-03-26 07:16:53.284593661 -0400
+@@ -60,21 +60,22 @@
+ # Use only major.minor.patch for the resource directory structure; some
+ # platforms include suffix in LLVM_VERSION.
+ set(llvm_ver ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})
+- set(clang_headers_src ${CMAKE_PREFIX_PATH}/lib/clang/${llvm_ver}/include)
+- set(clang_headers_dst ${CMAKE_BINARY_DIR}/lib/clang/${llvm_ver}/include)
++ set(clang_headers_src "${LLVM_INSTALL_PREFIX}/lib/clang/${llvm_ver}/include")
++ set(clang_headers_dst "${CMAKE_BINARY_DIR}/lib/clang/${llvm_ver}/include")
+
+- file(GLOB_RECURSE in_files RELATIVE ${clang_headers_src} ${clang_headers_src}/*)
++ file(GLOB_RECURSE in_files RELATIVE "${clang_headers_src}"
++ "${clang_headers_src}/*")
+
+ set(out_files)
+ foreach (file ${in_files})
+- set(src ${clang_headers_src}/${file})
+- set(dst ${clang_headers_dst}/${file})
++ set(src "${clang_headers_src}/${file}")
++ set(dst "${clang_headers_dst}/${file}")
+
+- add_custom_command(OUTPUT ${dst}
+- DEPENDS ${src}
+- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
++ add_custom_command(OUTPUT "${dst}"
++ DEPENDS "${src}"
++ COMMAND ${CMAKE_COMMAND} -E copy_if_different "${src}" "${dst}"
+ COMMENT "Copying clang's ${file}...")
+- list(APPEND out_files ${dst})
++ list(APPEND out_files "${dst}")
+ endforeach()
+
+ add_custom_target(clang-resource-headers ALL DEPENDS ${out_files})
diff --git a/var/spack/repos/builtin/packages/iwyu/package.py b/var/spack/repos/builtin/packages/iwyu/package.py
new file mode 100644
index 0000000000..a05ff073b7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/iwyu/package.py
@@ -0,0 +1,27 @@
+# Copyright 2013-2020 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 Iwyu(CMakePackage):
+ """include-what-you-use: A tool for use with clang to analyze #includes in
+ C and C++ source files
+ """
+
+ homepage = "https://include-what-you-use.org"
+ url = "https://include-what-you-use.org/downloads/include-what-you-use-0.13.src.tar.gz"
+
+ maintainers = ['sethrj']
+
+ version('0.13', sha256='49294270aa64e8c04182369212cd919f3b3e0e47601b1f935f038c761c265bc9')
+ version('0.12', sha256='a5892fb0abccb820c394e4e245c00ef30fc94e4ae58a048b23f94047c0816025')
+ version('0.11', sha256='2d2877726c4aed9518cbb37673ffbc2b7da9c239bf8fe29432da35c1c0ec367a')
+
+ patch('iwyu-013-cmake.patch', when='@0.13')
+
+ depends_on('llvm+clang@9.0:9.999', when='@0.13')
+ depends_on('llvm+clang@8.0:8.999', when='@0.12')
+ depends_on('llvm+clang@7.0:7.999', when='@0.11')
diff --git a/var/spack/repos/builtin/packages/jasper/package.py b/var/spack/repos/builtin/packages/jasper/package.py
index f8351bbbc6..9599aec8f4 100644
--- a/var/spack/repos/builtin/packages/jasper/package.py
+++ b/var/spack/repos/builtin/packages/jasper/package.py
@@ -10,13 +10,11 @@ class Jasper(Package):
"""Library for manipulating JPEG-2000 images"""
homepage = "https://www.ece.uvic.ca/~frodo/jasper/"
- url = "https://www.ece.uvic.ca/~frodo/jasper/software/jasper-2.0.14.tar.gz"
- list_url = homepage
+ url = "https://github.com/mdadams/jasper/archive/version-2.0.16.tar.gz"
- version('2.0.14', sha256='2a1f61e55afe8b4ce8115e1508c5d7cb314d56dfcc2dd323f90c072f88ccf57b',
- url="https://www.ece.uvic.ca/~frodo/jasper/software/jasper-2.0.14.tar.gz")
- version('1.900.1', sha256='6b905a9c2aca2e275544212666eefc4eb44d95d0a57e4305457b407fe63f9494',
- url="https://www.ece.uvic.ca/~frodo/jasper/software/jasper-1.900.1.zip")
+ version('2.0.16', sha256='f1d8b90f231184d99968f361884e2054a1714fdbbd9944ba1ae4ebdcc9bbfdb1')
+ version('2.0.14', sha256='85266eea728f8b14365db9eaf1edc7be4c348704e562bb05095b9a077cf1a97b')
+ version('1.900.1', sha256='c2b03f28166f9dc8ae434918839ae9aa9962b880fcfd24eebddd0a2daeb9192c')
variant('jpeg', default=True, description='Enable the use of the JPEG library')
variant('opengl', default=False, description='Enable the use of the OpenGL and GLUT libraries')
diff --git a/var/spack/repos/builtin/packages/jblob/package.py b/var/spack/repos/builtin/packages/jblob/package.py
new file mode 100644
index 0000000000..1aa1738230
--- /dev/null
+++ b/var/spack/repos/builtin/packages/jblob/package.py
@@ -0,0 +1,35 @@
+# 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 Jblob(Package):
+ """
+ The German Climate Computing Center
+ (DKRZ: Deutsches Klimarechenzentrum GmbH)
+ provides a Long Term Archiving Service for large research
+ data sets which are relevant for climate or Earth system research.
+ """
+
+ homepage = "https://cera-www.dkrz.de/WDCC/ui/cerasearch"
+ url = "https://cera-www.dkrz.de/jblob/jblob-3.0.zip"
+
+ maintainers = ['ajkotobi']
+
+ version('3.0', sha256='576b5956358386a8832c6d1d13c410705e54888354a10cfd4f094513458067e4')
+
+ depends_on('java@8:', type='run')
+
+ def setup_run_environment(self, env):
+ env.set('JAVA_HOME', self.spec['java'].prefix)
+
+ def install(self, spec, prefix):
+ filter_file('/opt/jblob-' + self.version, prefix, 'jblob')
+
+ mkdir(prefix.bin)
+ install('jblob', prefix.bin)
+ install_tree('lib', prefix.lib)
+ install_tree('docs', prefix.docs)
diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py
index 431943ac86..025d12be65 100644
--- a/var/spack/repos/builtin/packages/jdk/package.py
+++ b/var/spack/repos/builtin/packages/jdk/package.py
@@ -24,11 +24,7 @@ class Jdk(Package):
# automate this process, we need to utilize these additional curl
# command-line options. See:
# http://stackoverflow.com/questions/10268583/how-to-automate-download-and-installation-of-java-jdk-on-linux
- curl_options = [
- '-j', # junk cookies
- '-b', # specify required License Agreement cookie
- 'oraclelicense=accept-securebackup-cookie'
- ]
+ fetch_options = {'cookie': 'oraclelicense=accept-securebackup-cookie'}
# To add the latest version, go to the homepage listed above,
# click "JDK Download", click "Accept License Agreement", right-click the
@@ -36,29 +32,29 @@ class Jdk(Package):
# found in a link above. The build number can be deciphered from the URL.
# Alternatively, run `bin/java -version` after extracting. Replace '+'
# symbol in version with '_', otherwise it will be interpreted as a variant
- version('12.0.2_10', sha256='2dde6fda89a4ec6e6560ed464e917861c9e40bf576e7a64856dafc55abaaff51', curl_options=curl_options,
+ version('12.0.2_10', sha256='2dde6fda89a4ec6e6560ed464e917861c9e40bf576e7a64856dafc55abaaff51',
url='https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.tar.gz')
- version('12.0.1_12', sha256='9fd6dcdaf2cfca7da59e39b009a0f5bcd53bec2fb16105f7ca8d689cdab68d75', curl_options=curl_options,
+ version('12.0.1_12', sha256='9fd6dcdaf2cfca7da59e39b009a0f5bcd53bec2fb16105f7ca8d689cdab68d75',
url='https://download.oracle.com/otn-pub/java/jdk/12.0.1+12/69cfe15208a647278a19ef0990eea691/jdk-12.0.1_linux-x64_bin.tar.gz')
- version('11.0.2_9', sha256='7b4fd8ffcf53e9ff699d964a80e4abf9706b5bdb5644a765c2b96f99e3a2cdc8', curl_options=curl_options,
+ version('11.0.2_9', sha256='7b4fd8ffcf53e9ff699d964a80e4abf9706b5bdb5644a765c2b96f99e3a2cdc8',
url='https://download.oracle.com/otn-pub/java/jdk/11.0.2+9/f51449fcd52f4d52b93a989c5c56ed3c/jdk-11.0.2_linux-x64_bin.tar.gz')
- version('11.0.1_13', sha256='e7fd856bacad04b6dbf3606094b6a81fa9930d6dbb044bbd787be7ea93abc885', curl_options=curl_options,
+ version('11.0.1_13', sha256='e7fd856bacad04b6dbf3606094b6a81fa9930d6dbb044bbd787be7ea93abc885',
url='https://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7/jdk-11.0.1_linux-x64_bin.tar.gz')
- version('10.0.2_13', sha256='6633c20d53c50c20835364d0f3e172e0cbbce78fff81867488f22a6298fa372b', curl_options=curl_options,
+ version('10.0.2_13', sha256='6633c20d53c50c20835364d0f3e172e0cbbce78fff81867488f22a6298fa372b',
url='https://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.tar.gz')
- version('10.0.1_10', sha256='ae8ed645e6af38432a56a847597ac61d4283b7536688dbab44ab536199d1e5a4', curl_options=curl_options,
+ version('10.0.1_10', sha256='ae8ed645e6af38432a56a847597ac61d4283b7536688dbab44ab536199d1e5a4',
url='https://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8c52526dc134031e/jdk-10.0.1_linux-x64_bin.tar.gz')
- version('1.8.0_241-b07', sha256='419d32677855f676076a25aed58e79432969142bbd778ff8eb57cb618c69e8cb', curl_options=curl_options,
+ version('1.8.0_241-b07', sha256='419d32677855f676076a25aed58e79432969142bbd778ff8eb57cb618c69e8cb',
url='https://download.oracle.com/otn-pub/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz')
- version('1.8.0_231-b11', sha256='a011584a2c9378bf70c6903ef5fbf101b30b08937441dc2ec67932fb3620b2cf', curl_options=curl_options,
+ version('1.8.0_231-b11', sha256='a011584a2c9378bf70c6903ef5fbf101b30b08937441dc2ec67932fb3620b2cf',
url='https://download.oracle.com/otn-pub/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz')
- version('1.8.0_212-b10', sha256='3160c50aa8d8e081c8c7fe0f859ea452922eca5d2ae8f8ef22011ae87e6fedfb', curl_options=curl_options,
+ version('1.8.0_212-b10', sha256='3160c50aa8d8e081c8c7fe0f859ea452922eca5d2ae8f8ef22011ae87e6fedfb',
url='https://download.oracle.com/otn-pub/java/jdk/8u212-b10/59066701cf1a433da9770636fbc4c9aa/jdk-8u212-linux-x64.tar.gz')
- version('1.8.0_202-b08', sha256='9a5c32411a6a06e22b69c495b7975034409fa1652d03aeb8eb5b6f59fd4594e0', curl_options=curl_options,
+ version('1.8.0_202-b08', sha256='9a5c32411a6a06e22b69c495b7975034409fa1652d03aeb8eb5b6f59fd4594e0',
url='https://download.oracle.com/otn-pub/java/jdk/8u202-b08/1961070e4c9b4e26a04e7f5a083f551e/jdk-8u202-linux-x64.tar.gz')
- version('1.8.0_141-b15', sha256='041d5218fbea6cd7e81c8c15e51d0d32911573af2ed69e066787a8dc8a39ba4f', curl_options=curl_options,
+ version('1.8.0_141-b15', sha256='041d5218fbea6cd7e81c8c15e51d0d32911573af2ed69e066787a8dc8a39ba4f',
url='https://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz')
- version('1.8.0_131-b11', sha256='62b215bdfb48bace523723cdbb2157c665e6a25429c73828a32f00e587301236', curl_options=curl_options,
+ version('1.8.0_131-b11', sha256='62b215bdfb48bace523723cdbb2157c665e6a25429c73828a32f00e587301236',
url='https://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz')
provides('java@12', when='@12.0:12.999')
diff --git a/var/spack/repos/builtin/packages/julea/package.py b/var/spack/repos/builtin/packages/julea/package.py
new file mode 100644
index 0000000000..029b5ad7aa
--- /dev/null
+++ b/var/spack/repos/builtin/packages/julea/package.py
@@ -0,0 +1,42 @@
+# Copyright 2013-2020 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 Julea(MesonPackage):
+ """JULEA is a flexible storage framework that allows offering arbitrary
+ I/O interfaces to applications. To be able to rapidly prototype new
+ approaches, it offers object, key-value and database backends. Support
+ for popular storage technologies such as POSIX, LevelDB and MongoDB is
+ already included."""
+
+ homepage = "https://github.com/wr-hamburg/julea"
+ git = "https://github.com/wr-hamburg/julea.git"
+
+ tags = ['HPC', 'I/O', 'storage']
+ maintainers = ['michaelkuhn']
+
+ version('master', branch='master')
+
+ variant('hdf5', default=True, description='Enable HDF5 support')
+ variant('leveldb', default=True, description='Enable LevelDB support')
+ variant('lmdb', default=True, description='Enable LMDB support')
+ variant('mariadb', default=True, description='Enable MariaDB support')
+ variant('mongodb', default=True, description='Enable MongoDB support')
+ variant('sqlite', default=True, description='Enable SQLite support')
+
+ depends_on('pkgconfig', type='build')
+
+ depends_on('glib')
+ depends_on('libbson')
+ # depends_on('libfabric')
+
+ depends_on('hdf5@1.12.0:', when='+leveldb')
+ depends_on('leveldb', when='+leveldb')
+ depends_on('lmdb', when='+lmdb')
+ depends_on('mariadb-c-client', when='+mariadb')
+ depends_on('mongo-c-driver', when='+mongodb')
+ depends_on('sqlite', when='+sqlite')
diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py
index 9dae676d9a..ec86c04886 100644
--- a/var/spack/repos/builtin/packages/julia/package.py
+++ b/var/spack/repos/builtin/packages/julia/package.py
@@ -18,6 +18,7 @@ class Julia(Package):
maintainers = ['glennpj']
version('master', branch='master')
+ version('1.4.0', sha256='880c73a08296ce8d94ad9605149f2a2b2b028e7202a700ef725da899300b8be9')
version('1.3.1', sha256='053908ec2706eb76cfdc998c077de123ecb1c60c945b4b5057aa3be19147b723')
version('1.2.0', sha256='2419b268fc5c3666dd9aeb554815fe7cf9e0e7265bc9b94a43957c31a68d9184')
version('1.1.1', sha256='3c5395dd3419ebb82d57bcc49dc729df3b225b9094e74376f8c649ee35ed79c2')
diff --git a/var/spack/repos/builtin/packages/kallisto/package.py b/var/spack/repos/builtin/packages/kallisto/package.py
index 337b50f188..d33bd970a2 100644
--- a/var/spack/repos/builtin/packages/kallisto/package.py
+++ b/var/spack/repos/builtin/packages/kallisto/package.py
@@ -13,8 +13,37 @@ class Kallisto(CMakePackage):
homepage = "http://pachterlab.github.io/kallisto"
url = "https://github.com/pachterlab/kallisto/archive/v0.43.1.tar.gz"
+ version('0.46.2', sha256='c447ca8ddc40fcbd7d877d7c868bc8b72807aa8823a8a8d659e19bdd515baaf2')
version('0.43.1', sha256='7baef1b3b67bcf81dc7c604db2ef30f5520b48d532bf28ec26331cb60ce69400')
depends_on('zlib')
depends_on('hdf5')
depends_on('mpich')
+
+ # htslib isn't built in time to be used....
+ parallel = False
+
+ # v0.44.0 vendored a copy of htslib and uses auto* to build
+ # its configure script.
+ depends_on('autoconf', type='build', when='@0.44.0:')
+ depends_on('automake', type='build', when='@0.44.0:')
+ depends_on('libtool', type='build', when='@0.44.0:')
+ depends_on('m4', type='build', when='@0.44.0:')
+
+ # Including '-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON' in the cmake args
+ # causes bits of cmake's output to end up in the autoconf-generated
+ # configure script.
+ # See https://github.com/spack/spack/issues/15274 and
+ # https://github.com/pachterlab/kallisto/issues/253
+ @property
+ def std_cmake_args(self):
+ """Call the original std_cmake_args and then filter the verbose
+ setting.
+ """
+ a = super(Kallisto, self).std_cmake_args
+ if (self.spec.version >= Version('0.44.0')):
+ args = [i for i in a if i != '-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON']
+ else:
+ args = a
+
+ return args
diff --git a/var/spack/repos/builtin/packages/kbproto/package.py b/var/spack/repos/builtin/packages/kbproto/package.py
index 8fa865bab2..2d2dbf63bc 100644
--- a/var/spack/repos/builtin/packages/kbproto/package.py
+++ b/var/spack/repos/builtin/packages/kbproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Kbproto(AutotoolsPackage):
+class Kbproto(AutotoolsPackage, XorgPackage):
"""X Keyboard Extension.
This extension defines a protcol to provide a number of new capabilities
and controls for text keyboards."""
homepage = "https://cgit.freedesktop.org/xorg/proto/kbproto"
- url = "https://www.x.org/archive/individual/proto/kbproto-1.0.7.tar.gz"
+ xorg_mirror_path = "proto/kbproto-1.0.7.tar.gz"
version('1.0.7', sha256='828cb275b91268b1a3ea950d5c0c5eb076c678fdf005d517411f89cc8c3bb416')
diff --git a/var/spack/repos/builtin/packages/kealib/package.py b/var/spack/repos/builtin/packages/kealib/package.py
index e164dac4b4..3e050a213c 100644
--- a/var/spack/repos/builtin/packages/kealib/package.py
+++ b/var/spack/repos/builtin/packages/kealib/package.py
@@ -23,12 +23,13 @@ class Kealib(CMakePackage):
Development work on this project has been funded by Landcare Research.
"""
homepage = "http://www.kealib.org/"
- url = "https://bitbucket.org/chchrsc/kealib/downloads/kealib-1.4.11.tar.gz"
- hg = "https://bitbucket.org/chchrsc/kealib"
+ url = "https://github.com/ubarsc/kealib/releases/download/kealib-1.4.12/kealib-1.4.12.tar.gz"
+ git = "https://github.com/ubarsc/kealib"
maintainers = ['gillins']
- version('develop', hg=hg)
+ version('develop', git=git)
+ version('1.4.12', sha256='0b100e36b3e25e57487aa197d7be47f22e1b30afb16a57fdaa5f877696ec321e')
version('1.4.11', sha256='3d64cdec560c7a338ccb38e3a456db4e3b176ac62f945daa6e332e60fe4eca90')
version('1.4.10', sha256='b1bd2d6834d2fe09ba456fce77f7a9452b406dbe302f7ef1aabe924e45e6bb5e')
version('1.4.9', sha256='1c80489f17114a229097c2e8c61d5e4c82ea63ae631c81a817fef95cfd527174')
diff --git a/var/spack/repos/builtin/packages/keyutils/package.py b/var/spack/repos/builtin/packages/keyutils/package.py
new file mode 100644
index 0000000000..049dbb1c22
--- /dev/null
+++ b/var/spack/repos/builtin/packages/keyutils/package.py
@@ -0,0 +1,27 @@
+# Copyright 2013-2020 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 glob
+
+
+class Keyutils(MakefilePackage):
+ """These tools are used to control the key management system built
+ into the Linux kernel."""
+
+ homepage = "https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/"
+ url = "https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/snapshot/keyutils-1.6.1.tar.gz"
+
+ version('1.6.1', sha256='3c71dcfc6900d07b02f4e061d8fb218a4ae6519c1d283d6a57b8e27718e2f557')
+ version('1.6', sha256='c6a27b4e3d0122d921f3dcea4b1f02a8616ca844535960d6af76ef67d015b5cf')
+ version('1.5.10', sha256='e1fdbde234c786b65609a4cf080a2c5fbdb57f049249c139160c85fc3dfa7da9')
+ version('1.5.9', sha256='2dc0bdb099ab8331e02e5dbbce320359bef76eda0a4ddbd2ba1d1b9d3a8cdff8')
+
+ def install(self, spec, prefix):
+ install_tree('.', prefix)
+ mkdirp(prefix.include)
+ headers = glob.glob(join_path(prefix, '*.h'))
+ for h in headers:
+ install(h, prefix.include)
diff --git a/var/spack/repos/builtin/packages/kinesis/package.py b/var/spack/repos/builtin/packages/kinesis/package.py
new file mode 100644
index 0000000000..c106f5bebc
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kinesis/package.py
@@ -0,0 +1,27 @@
+# Copyright 2013-2020 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 Kinesis(Package):
+ """The Amazon Kinesis Client Library for Java (Amazon KCL) enables Java
+ developers to easily consume and process data from Amazon Kinesis."""
+
+ homepage = "http://aws.amazon.com/kinesis"
+ url = "https://github.com/awslabs/amazon-kinesis-client/archive/v2.2.10.tar.gz"
+
+ version('2.2.10', sha256='ab1fa33466d07c41d0bbf0d1c7d2380d6f5d2957dea040ca5fe911be83bfe9f9')
+ version('2.2.9', sha256='8d743c2dae127ce7c08627e7944aad4ccf025b4d71aa5486b57469c32daf20e6')
+ version('2.2.8', sha256='0753d6c84247fa58c09749ca7d258a11c658b64eb65286eff74a2115613183a8')
+ version('2.2.7', sha256='1838ef2327920d1df6f41db1de55318d6935d16ddde90b6e65ec65d374993177')
+
+ depends_on('maven', type='build')
+ depends_on('java@8', type=('build', 'run'))
+
+ def install(self, spec, prefix):
+ mvn = which('mvn')
+ mvn('clean', 'install', '-Dgpg.skip=true', '-DskipITs')
+ install_tree('.', prefix)
diff --git a/var/spack/repos/builtin/packages/kmod/package.py b/var/spack/repos/builtin/packages/kmod/package.py
new file mode 100644
index 0000000000..0ee203e7a2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kmod/package.py
@@ -0,0 +1,30 @@
+# Copyright 2013-2020 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 Kmod(AutotoolsPackage):
+ """kmod is a set of tools to handle common tasks with Linux kernel modules
+ like insert, remove, list, check properties, resolve dependencies and
+ aliases."""
+
+ homepage = "https://github.com/lucasdemarchi/kmod"
+ url = "https://github.com/lucasdemarchi/kmod/archive/v27.tar.gz"
+
+ version('27', sha256='969c4573b01f4c9e1d3e3c9d179bd16ec999bbb99dd55b7623f42551328478c3')
+ version('26', sha256='f28bc40ead548dce4a8e956fccfc36fd80f2b40884d270b812f1bfbd886e858c')
+ version('25', sha256='16a8bbd3ee321d0847847256ea2fd124f6250257c055c8cf97e78f18bf27559c')
+ version('24', sha256='f7a5ee07d4901c87711880536604de7e31c182d85a72de7b8d7dd04d4ee0aa59')
+ version('23', sha256='8f139543d82e8ccc2227dec4c016d6656e9789365a6dce73f90b620a53e62ee6')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+
+ def autoreconf(self, spec, prefix):
+ bash = which("bash")
+ bash('autogen.sh')
diff --git a/var/spack/repos/builtin/packages/kraken2/package.py b/var/spack/repos/builtin/packages/kraken2/package.py
new file mode 100644
index 0000000000..e970752ad2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kraken2/package.py
@@ -0,0 +1,35 @@
+# Copyright 2013-2020 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 glob
+import os
+
+
+class Kraken2(Package):
+ """Kraken2 is a system for assigning taxonomic labels to short DNA
+ sequences, usually obtained through metagenomic studies."""
+
+ homepage = "https://ccb.jhu.edu/software/kraken2/"
+ url = "https://github.com/DerrickWood/kraken2/archive/v2.0.8-beta.tar.gz"
+
+ maintainers = ['rberg2']
+
+ version('2.0.8-beta', sha256='f2a91fc57a40b3e87df8ac2ea7c0ff1060cc9295c95de417ee53249ee3f7ad8e')
+ version('2.0.7-beta', sha256='baa160f5aef73327e1a79e6d1c54b64b2fcdaee0be31b456f7bc411d1897a744')
+ version('2.0.6-beta', sha256='d77db6251179c4d7e16bc9b5e5e9043d25acf81f3e32ad6eadfba829a31e1d09')
+
+ depends_on('perl', type=('build', 'run'))
+ depends_on('rsync', type=('run'))
+ depends_on('wget', type=('run'))
+
+ def install(self, spec, prefix):
+ installer = Executable('./install_kraken2.sh')
+ installer(self.stage.source_path)
+ mkdirp(prefix.bin)
+ files = glob.iglob('*')
+ for file in files:
+ if os.path.isfile(file):
+ install(file, prefix.bin)
diff --git a/var/spack/repos/builtin/packages/kripke/package.py b/var/spack/repos/builtin/packages/kripke/package.py
index 8a54f71d48..cd605fda3c 100644
--- a/var/spack/repos/builtin/packages/kripke/package.py
+++ b/var/spack/repos/builtin/packages/kripke/package.py
@@ -11,16 +11,22 @@ class Kripke(CMakePackage):
transport proxy/mini app.
"""
homepage = "https://computing.llnl.gov/projects/co-design/kripke"
- url = "https://computing.llnl.gov/projects/co-design/download/kripke-openmp-1.1.tar.gz"
+ git = "https://github.com/LLNL/Kripke.git"
tags = ['proxy-app']
- version('1.1', sha256='232d74072fc7b848fa2adc8a1bc839ae8fb5f96d50224186601f55554a25f64a')
+ version('1.2.4', submodules=True, tag='v1.2.4')
+ version('1.2.3', submodules=True, tag='v1.2.3')
+ version('1.2.2', submodules=True, tag='v1.2.2-CORAL2')
+ version('1.2.1', submodules=True, tag='v1.2.1-CORAL2')
+ version('1.2.0', submodules=True, tag='v1.2.0-CORAL2')
variant('mpi', default=True, description='Build with MPI.')
variant('openmp', default=True, description='Build with OpenMP enabled.')
+ variant('caliper', default=False, description='Build with Caliper support enabled.')
depends_on('mpi', when='+mpi')
depends_on('cmake@3.0:', type='build')
+ depends_on('caliper', when='+caliper')
def cmake_args(self):
def enabled(variant):
@@ -29,10 +35,11 @@ class Kripke(CMakePackage):
return [
'-DENABLE_OPENMP=%d' % enabled('+openmp'),
'-DENABLE_MPI=%d' % enabled('+mpi'),
+ '-DENABLE_CALIPER=%d' % enabled('+caliper'),
]
def install(self, spec, prefix):
# Kripke does not provide install target, so we have to copy
# things into place.
mkdirp(prefix.bin)
- install('../spack-build/kripke', prefix.bin)
+ install('../spack-build/bin/kripke.exe', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/kvtree/package.py b/var/spack/repos/builtin/packages/kvtree/package.py
index be265f5ecd..40e57ed0ee 100644
--- a/var/spack/repos/builtin/packages/kvtree/package.py
+++ b/var/spack/repos/builtin/packages/kvtree/package.py
@@ -10,8 +10,8 @@ class Kvtree(CMakePackage):
"""KVTree provides a fully extensible C datastructure modeled after perl
hashes."""
- homepage = "https://github.com/ECP-VeloC/KVTree"
- url = "https://github.com/ECP-VeloC/KVTree/archive/v1.0.2.zip"
+ homepage = "https://github.com/ecp-veloc/KVTree"
+ 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/laghos/package.py b/var/spack/repos/builtin/packages/laghos/package.py
index 7edb886a83..438da2f5cf 100644
--- a/var/spack/repos/builtin/packages/laghos/package.py
+++ b/var/spack/repos/builtin/packages/laghos/package.py
@@ -18,15 +18,15 @@ class Laghos(MakefilePackage):
url = "https://github.com/CEED/Laghos/archive/v1.0.tar.gz"
git = "https://github.com/CEED/Laghos.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('3.0', sha256='4db56286e15b42ecdc8d540c4888a7dec698b019df9c7ccb8319b7ea1f92d8b4')
version('2.0', sha256='dd3632d5558889beec2cd3c49eb60f633f99e6d886ac868731610dd006c44c14')
version('1.1', sha256='53b9bfe2af263c63eb4544ca1731dd26f40b73a0d2775a9883db51821bf23b7f')
version('1.0', sha256='af50a126355a41c758fcda335a43fdb0a3cd97e608ba51c485afda3dd84a5b34')
variant('metis', default=True, description='Enable/disable METIS support')
- depends_on('mfem@develop+mpi+metis', when='@develop+metis')
- depends_on('mfem@develop+mpi~metis', when='@develop~metis')
+ depends_on('metis@4.0.3:', when='+metis')
# Recommended mfem version for laghos v2.0 is: ^mfem@3.4.1-laghos-v2.0
depends_on('mfem@3.4.0:+mpi+metis', when='@2.0+metis')
@@ -36,6 +36,11 @@ class Laghos(MakefilePackage):
depends_on('mfem@3.3.1-laghos-v1.0:+mpi+metis', when='@1.0,1.1+metis')
depends_on('mfem@3.3.1-laghos-v1.0:+mpi~metis', when='@1.0,1.1~metis')
+ # 3.0 requirements
+ depends_on('hypre@2.11.2', when='@3.0:')
+ depends_on('mfem@develop+mpi+metis', when='@3.0:+metis')
+ depends_on('mfem@develop+mpi~metis', when='@3.0:~metis')
+
@property
def build_targets(self):
targets = []
@@ -46,6 +51,11 @@ class Laghos(MakefilePackage):
targets.append('TEST_MK=%s' % spec['mfem'].package.test_mk)
targets.append('CXX=%s' % spec['mpi'].mpicxx)
+ if self.version >= ver('3.0'):
+ targets.append('HYPRE_DIR=%s' % spec['hypre'].prefix)
+ if '+metis' in self.spec:
+ targets.append('METIS_DIR=%s' % spec['metis'].prefix)
+
return targets
# See lib/spack/spack/build_systems/makefile.py
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py
index 72a1a9246f..9a6ef2e2b4 100644
--- a/var/spack/repos/builtin/packages/lammps/package.py
+++ b/var/spack/repos/builtin/packages/lammps/package.py
@@ -20,7 +20,16 @@ class Lammps(CMakePackage, CudaPackage):
tags = ['ecp', 'ecp-apps']
- version('develop', branch='master')
+ version('master', branch='master')
+ version('20200303', sha256='9aa56dfb8673a06e6c88588505ec1dfc01dd94f9d60e719ed0c605e48cc06c58')
+ version('20200227', sha256='1aabcf38bc72285797c710b648e906151a912c36b634a9c88ac383aacf85516e')
+ version('20200218', sha256='73bcf146660804ced954f6a0a8dce937482677778d46018ca5a688127bf97211')
+ version('20200204', sha256='3bf3de546ede34ffcd89f1fca5fd66aa78c662e7c8a76e30ce593e44a00d23ce')
+ version('20200124', sha256='443829560d760690e1ae21ad54922f56f34f640a81e817f5cc65d2a4af3a6a5d')
+ version('20200109', sha256='f2fd24f6c10837801f490913d73f672ec7c6becda08465d7e834a2bfbe3d7cd6')
+ version('20191120', sha256='fd146bf517a6c2fb8a69ecb3749dc352eef94414739cd7855c668c690af85d27')
+ version('20191030', sha256='5279567f731386ffdb87800b448903a63de2591064e13b4d5216acae25b7e541')
+ version('20190919', sha256='0f693203afe86bc70c084c55f29330bdeea3e3ad6791f81c727f7a34a7f6caf3')
version('20190807', sha256='895d71914057e070fdf0ae5ccf9d6552b932355056690bdb8e86d96549218cc0')
version('20190605', sha256='c7b35090aef7b114d2b47a7298c1e8237dd811da87995c997bf7639cca743152')
version('20181212', sha256='ccc5d2c21c4b62ce4afe7b3a0fe2f37b83e5a5e43819b7c2e2e255cce2ce0f24')
diff --git a/var/spack/repos/builtin/packages/lastz/package.py b/var/spack/repos/builtin/packages/lastz/package.py
index cbe4ee4e14..4b0431b2e9 100644
--- a/var/spack/repos/builtin/packages/lastz/package.py
+++ b/var/spack/repos/builtin/packages/lastz/package.py
@@ -12,7 +12,15 @@ class Lastz(MakefilePackage):
homepage = "https://lastz.github.io/lastz"
url = "https://github.com/lastz/lastz/archive/1.04.00.tar.gz"
+ version('1.04.03', sha256='c58ed8e37c4b0e82492b3a2b3e12447a3c40286fb8358906d19f10b0a713e9f4')
version('1.04.00', sha256='a4c2c7a77430387e96dbc9f5bdc75874334c672be90f5720956c0f211abf9f5a')
+ # Ref: https://github.com/lastz/lastz/commit/20aa14f483265b4eac97f25aca666c708b9655e4
+ patch('sequences.c.patch', when='@:1.04.03')
+
+ # set compile commands for each compiler
+ def edit(self, spec, prefix):
+ filter_file('gcc', spack_cc, 'src/Makefile')
+
def install(self, spec, prefix):
make('install', 'LASTZ_INSTALL={0}'.format(prefix.bin))
diff --git a/var/spack/repos/builtin/packages/lastz/sequences.c.patch b/var/spack/repos/builtin/packages/lastz/sequences.c.patch
new file mode 100644
index 0000000000..b5c34108aa
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lastz/sequences.c.patch
@@ -0,0 +1,244 @@
+--- spack-src/src/sequences.c.org 2020-03-05 13:34:15.764971874 +0900
++++ spack-src/src/sequences.c 2020-03-05 13:49:45.315370741 +0900
+@@ -2180,7 +2180,7 @@
+
+ ch = skip_seq_whitespace (_seq);
+
+- if (ch != '>') seq_ungetc (ch, _seq);
++ if (ch != '>') seq_ungetc ((char)ch, _seq);
+ else parse_fasta_header (_seq);
+
+ debugFastaFile_2;
+@@ -2298,7 +2298,7 @@
+ if (ch == '\r') // handle possible DOS CR-LF line ending
+ {
+ ch = seq_getc (_seq);
+- if (ch != '\n') seq_ungetc (ch, _seq);
++ if (ch != '\n') seq_ungetc ((char)ch, _seq);
+ }
+
+ }
+@@ -2346,7 +2346,7 @@
+ while (ch != EOF)
+ {
+ if ((prevCh == '\n') && (ch == '>')) // (start of next sequence)
+- { seq_ungetc (ch, _seq); break; }
++ { seq_ungetc ((char)ch, _seq); break; }
+
+ if ((_seq->separatorCh == 0) || (ch != _seq->separatorCh))
+ {
+@@ -2445,7 +2445,7 @@
+ // while (ch != EOF)
+ // {
+ // if ((prevCh == '\n') && (ch == '>')) // (start of next sequence)
+-// { seq_ungetc (ch, _seq); break; }
++// { seq_ungetc ((char)ch, _seq); break; }
+ //
+ // switch (char_to_fasta_type[(u8)ch])
+ // {
+@@ -2627,7 +2627,7 @@
+ if (ch == '\r') // handle possible DOS CR-LF line ending
+ {
+ ch = seq_getc (_seq);
+- if (ch != '\n') seq_ungetc (ch, _seq);
++ if (ch != '\n') seq_ungetc ((char)ch, _seq);
+ }
+
+ // copy from trueHeader into the header (unless the header is locked), then
+@@ -2762,7 +2762,7 @@
+ if (ch == '\r') // handle possible DOS CR-LF line ending
+ {
+ ch = seq_getc (_seq);
+- if (ch != '\n') seq_ungetc (ch, _seq);
++ if (ch != '\n') seq_ungetc ((char)ch, _seq);
+ }
+
+ _seq->v[_seq->len] = 0; // (set the terminating zero)
+@@ -2834,7 +2834,7 @@
+ if (ch == '\r') // handle possible DOS CR-LF line ending
+ {
+ ch = seq_getc (_seq);
+- if (ch != '\n') seq_ungetc (ch, _seq);
++ if (ch != '\n') seq_ungetc ((char)ch, _seq);
+ }
+
+ //////////
+@@ -2877,7 +2877,7 @@
+ if (ch == '\r') // handle possible DOS CR-LF line ending
+ {
+ ch = seq_getc (_seq);
+- if (ch != '\n') seq_ungetc (ch, _seq);
++ if (ch != '\n') seq_ungetc ((char)ch, _seq);
+ }
+
+ if (qualCount < nucCount) goto not_enough_qualities;
+@@ -3061,7 +3061,7 @@
+ ch = seq_getc (_seq);
+ }
+
+- if (ch != '>') seq_ungetc (ch, _seq);
++ if (ch != '>') seq_ungetc ((char)ch, _seq);
+ else parse_csfasta_header (_seq);
+
+ //////////
+@@ -3166,7 +3166,7 @@
+ if (ch == '\r') // handle possible DOS CR-LF line ending
+ {
+ ch = seq_getc (_seq);
+- if (ch != '\n') seq_ungetc (ch, _seq);
++ if (ch != '\n') seq_ungetc ((char)ch, _seq);
+ }
+
+ }
+@@ -3223,7 +3223,7 @@
+ {
+ if ((prevCh == '\n')
+ && ((ch == '#') || (ch == '>'))) // (start of next sequence)
+- { seq_ungetc (ch, _seq); break; }
++ { seq_ungetc ((char)ch, _seq); break; }
+
+ chType = char_to_csfasta_type[(u8)ch];
+ switch (chType)
+@@ -3324,7 +3324,7 @@
+ // {
+ // if ((prevCh == '\n')
+ // && ((ch == '#') || (ch == '>'))) // (start of next sequence)
+-// { seq_ungetc (ch, _seq); break; }
++// { seq_ungetc ((char)ch, _seq); break; }
+ //
+ // switch (char_to_csfasta_type[(u8)ch])
+ // {
+@@ -4701,10 +4701,10 @@
+ else if (magic == oldQdnaMagicBig) { oldFormat = bigEndian = true; }
+ else
+ {
+- seq_ungetc ((magic >> 24) & 0xFF, _seq);
+- seq_ungetc ((magic >> 16) & 0xFF, _seq);
+- seq_ungetc ((magic >> 8) & 0xFF, _seq);
+- seq_ungetc ( magic & 0xFF, _seq);
++ seq_ungetc ((char) ((magic >> 24) & 0xFF), _seq);
++ seq_ungetc ((char) ((magic >> 16) & 0xFF), _seq);
++ seq_ungetc ((char) ((magic >> 8) & 0xFF), _seq);
++ seq_ungetc ((char) ( magic & 0xFF), _seq);
+ oldFormat = true;
+ }
+
+@@ -5050,7 +5050,7 @@
+ _seq->filename);
+ if (ch == EOF) return false; // we're at end of file now
+
+- seq_ungetc (ch, _seq); // save what we peeked at
++ seq_ungetc ((char)ch, _seq); // save what we peeked at
+ return true; // we have characters to process
+ }
+
+@@ -5074,7 +5074,8 @@
+ int headerLen;
+ int mustBeHeader;
+ int leadingWhite;
+- char ch, *s;
++ int ch;
++ char* s;
+ int ix;
+
+ debugNamesFile_12;
+@@ -5118,7 +5119,7 @@
+
+ ch = seq_getc (_seq);
+ if (ch == EOF) goto failure;
+- while ((ch != '\n') && (isspace (ch)))
++ while ((ch != '\n') && (isspace (ch))) // nota bene: isspace's arg type is an int
+ {
+ leadingWhite++;
+ ch = seq_getc (_seq);
+@@ -5186,7 +5187,7 @@
+
+ // unget the header
+
+- seq_ungetc (ch, _seq); // (ch terminated the header)
++ seq_ungetc ((char)ch, _seq); // (ch terminated the header)
+
+ for (ix=strlen(buffer) ; ix>0 ; )
+ seq_ungetc (buffer[--ix], _seq);
+@@ -5218,7 +5219,8 @@
+ char buffer[maxSequenceHeader+1];
+ char* header;
+ int headerLen;
+- char ch, *s;
++ int ch;
++ char* s;
+ int ix;
+ int ok;
+
+@@ -5257,7 +5259,7 @@
+ if (ch == '\r') // handle possible DOS CR-LF line ending
+ {
+ ch = seq_getc (_seq);
+- if (ch != '\n') seq_ungetc (ch, _seq);
++ if (ch != '\n') seq_ungetc ((char)ch, _seq);
+ }
+
+ // if we have a name trigger, locate the sequence's name
+@@ -5310,7 +5312,7 @@
+
+ // unget the header
+
+- seq_ungetc (ch, _seq); // (ch terminated the header)
++ seq_ungetc ((char)ch, _seq); // (ch terminated the header)
+
+ for (ix=strlen(buffer) ; ix>0 ; )
+ seq_ungetc (buffer[--ix], _seq);
+@@ -9067,10 +9069,10 @@
+
+ // put those four bytes back in the file (in reverse of the read order)
+
+- seq_ungetc (magic >> 24, _seq);
+- seq_ungetc (magic >> 16, _seq);
+- seq_ungetc (magic >> 8, _seq);
+- seq_ungetc (magic , _seq);
++ seq_ungetc ((char) (magic >> 24), _seq);
++ seq_ungetc ((char) (magic >> 16), _seq);
++ seq_ungetc ((char) (magic >> 8), _seq);
++ seq_ungetc ((char) magic , _seq);
+
+ if (type != seq_type_unknown)
+ return type;
+@@ -9080,7 +9082,7 @@
+ //////////
+
+ ch = seq_getc (_seq);
+- seq_ungetc (ch, _seq);
++ seq_ungetc ((char)ch, _seq);
+ if (ch == '@')
+ return seq_type_fastq;
+
+@@ -9095,12 +9097,12 @@
+ ch = seq_getc (_seq);
+ if (ch == '#')
+ {
+- seq_ungetc (ch, _seq);
++ seq_ungetc ((char)ch, _seq);
+ return seq_type_csfasta;
+ }
+
+ if (ch != '>')
+- seq_ungetc (ch, _seq);
++ seq_ungetc ((char)ch, _seq);
+ else
+ {
+ // read header
+@@ -9122,12 +9124,12 @@
+
+ intCh = seq_getc (_seq);
+ if (intCh == EOF) goto unknown;
+- buffer[bufferLen++] = intCh;
++ buffer[bufferLen++] = (char) intCh;
+ if (ustrchr ("ACGTacgtNn", intCh) != NULL)
+ {
+ intCh = seq_getc (_seq);
+ if (intCh == EOF) goto unknown;
+- buffer[bufferLen++] = intCh;
++ buffer[bufferLen++] = (char) intCh;
+ if (ustrchr ("ACGTacgtNn", intCh) != NULL)
+ type = seq_type_fasta;
+ else if (ustrchr ("0123", intCh) != NULL)
diff --git a/var/spack/repos/builtin/packages/lbxproxy/package.py b/var/spack/repos/builtin/packages/lbxproxy/package.py
index 3080e95b0b..94cf8afb36 100644
--- a/var/spack/repos/builtin/packages/lbxproxy/package.py
+++ b/var/spack/repos/builtin/packages/lbxproxy/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Lbxproxy(AutotoolsPackage):
+class Lbxproxy(AutotoolsPackage, XorgPackage):
"""lbxproxy accepts client connections, multiplexes them over a single
connection to the X server, and performs various optimizations on the
X protocol to make it faster over low bandwidth and/or high latency
@@ -17,7 +17,7 @@ class Lbxproxy(AutotoolsPackage):
X servers."""
homepage = "http://cgit.freedesktop.org/xorg/app/lbxproxy"
- url = "https://www.x.org/archive/individual/app/lbxproxy-1.0.3.tar.gz"
+ xorg_mirror_path = "app/lbxproxy-1.0.3.tar.gz"
version('1.0.3', sha256='db36251c9656c7da720f31e10df384f8946a9a5395915371b60d9423ad8f6a80')
diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py
index 5b8b761d49..15effc6bea 100644
--- a/var/spack/repos/builtin/packages/legion/package.py
+++ b/var/spack/repos/builtin/packages/legion/package.py
@@ -27,9 +27,9 @@ class Legion(CMakePackage):
version('master', branch='master')
version('ctrl-rep', branch='control_replication')
- version('ctrl-rep-2', commit='96682fd8aae071ecd30a3ed5f481a9d84457a4b6')
- version('ctrl-rep-1', commit='a03671b21851d5f0d3f63210343cb61a630f4405')
- version('ctrl-rep-0', commit='177584e77036c9913d8a62e33b55fa784748759c')
+ version('19.12.0', sha256='ea517638de7256723bb9c119796d4d9d4ef662c52d0151ad24af5288e5a72e7d')
+ version('19.09.1', sha256='c507133fb9dce16b7fcccd7eb2933d13cce96ecf835da60a27c0f66840cabf51')
+ version('19.09.0', sha256='a01c3e3c6698cafb64b77a66341cc06d039faed4fa31b764159f021b94ce13e8')
version('19.06.0', sha256='31cd97e9264c510ab83b1f9e8e1e6bf72021a0c6ee4a028966fce08736e39fbf')
version('19.04.0', sha256='279bbc8dcdab4c75be570318989a9fc9821178143e9db9c3f62e58bf9070b5ac')
version('18.12.0', sha256='71f2c409722975c0ad92f2caffcc9eaa9260f7035e2b55b731d819eb6a94016c')
@@ -46,14 +46,15 @@ class Legion(CMakePackage):
description='Build on top of ibv conduit for InfiniBand support')
variant('shared', default=True, description='Build shared libraries')
variant('hdf5', default=True, description='Enable HDF5 support')
- variant('build_type', default='Release', values=('Debug', 'Release'),
- description='The build type to build')
+ variant('build_type', default='Release',
+ values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'),
+ description='The build type to build', multi=False)
depends_on("cmake@3.1:", type='build')
depends_on("gasnet~aligned-segments~pshm segment-mmap-max='16GB'", when='~mpi')
depends_on("gasnet~aligned-segments~pshm segment-mmap-max='16GB' +mpi", when='+mpi')
depends_on("gasnet~aligned-segments~pshm segment-mmap-max='16GB' +ibv", when='+ibv')
- depends_on("hdf5~mpi", when='+hdf5')
+ depends_on("hdf5", when='+hdf5')
def cmake_args(self):
cmake_cxx_flags = [
@@ -69,7 +70,11 @@ class Legion(CMakePackage):
'-DBUILD_SHARED_LIBS=%s' % ('+shared' in self.spec)]
if self.spec.variants['build_type'].value == 'Debug':
- cmake_cxx_flags.append('-DDEBUG_REALM', '-DDEBUG_LEGION', '-ggdb')
+ cmake_cxx_flags.extend([
+ '-DDEBUG_REALM',
+ '-DDEBUG_LEGION',
+ '-ggdb',
+ ])
options.append('-DCMAKE_CXX_FLAGS=%s' % (" ".join(cmake_cxx_flags)))
diff --git a/var/spack/repos/builtin/packages/lesstif/package.py b/var/spack/repos/builtin/packages/lesstif/package.py
new file mode 100644
index 0000000000..c36b90e9b7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lesstif/package.py
@@ -0,0 +1,51 @@
+# Copyright 2013-2020 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 Lesstif(AutotoolsPackage):
+ """LessTif is the Hungry Programmers' version of OSF/Motif."""
+
+ homepage = "https://sourceforge.net/projects/lesstif"
+ url = "https://sourceforge.net/projects/lesstif/files/lesstif/0.95.2/lesstif-0.95.2.tar.bz2/download"
+
+ version('0.95.2', sha256='eb4aa38858c29a4a3bcf605cfe7d91ca41f4522d78d770f69721e6e3a4ecf7e3')
+
+ variant('shared', default=True, description='Build shared libraries')
+ variant('static', default=False, description='Build static libraries')
+
+ depends_on('libice')
+ depends_on('libsm')
+ depends_on('libxt')
+
+ def patch(self):
+ filter_file("ACLOCALDIR=.*",
+ "ACLOCALDIR='${datarootdir}/aclocal'",
+ "configure")
+
+ def setup_build_environment(self, env):
+ # 'sed' fails if LANG=en_US.UTF-8 as is often the case on Macs.
+ # The configure script finds our superenv sed wrapper, sets
+ # SED, but then doesn't use that variable.
+ env.set('LANG', 'C')
+
+ def configure_args(self):
+ spec = self.spec
+
+ args = [
+ '--disable-debug',
+ '--enable-production',
+ '--disable-dependency-tracking',
+ '--enable-shared' if '+shared' in spec else '--disable-shared',
+ '--enable-static' if '+static' in spec else '--disable-static',
+ ]
+
+ return args
+
+ # LessTif won't install in parallel 'cause several parts of the
+ # Makefile will try to make the same directory and `mkdir` will fail.
+ def install(self, spec, prefix):
+ make('install', parallel=False)
diff --git a/var/spack/repos/builtin/packages/lftp/package.py b/var/spack/repos/builtin/packages/lftp/package.py
index 508dbdd586..b67b79bd5b 100644
--- a/var/spack/repos/builtin/packages/lftp/package.py
+++ b/var/spack/repos/builtin/packages/lftp/package.py
@@ -18,7 +18,7 @@ class Lftp(AutotoolsPackage):
version('4.6.4', sha256='791e783779d3d6b519d0c23155430b9785f2854023eb834c716f5ba78873b15a')
depends_on('expat')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('ncurses')
depends_on('openssl')
depends_on('readline')
@@ -27,7 +27,7 @@ class Lftp(AutotoolsPackage):
def configure_args(self):
return [
'--with-expat={0}'.format(self.spec['expat'].prefix),
- '--with-libiconv={0}'.format(self.spec['libiconv'].prefix),
+ '--with-libiconv={0}'.format(self.spec['iconv'].prefix),
'--with-openssl={0}'.format(self.spec['openssl'].prefix),
'--with-readline={0}'.format(self.spec['readline'].prefix),
'--with-zlib={0}'.format(self.spec['zlib'].prefix),
diff --git a/var/spack/repos/builtin/packages/libapplewm/package.py b/var/spack/repos/builtin/packages/libapplewm/package.py
index b05d4c82fe..b795fafe05 100644
--- a/var/spack/repos/builtin/packages/libapplewm/package.py
+++ b/var/spack/repos/builtin/packages/libapplewm/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Libapplewm(AutotoolsPackage):
+class Libapplewm(AutotoolsPackage, XorgPackage):
"""AppleWM is a simple library designed to interface with the Apple-WM
extension. This extension allows X window managers to better interact with
the Mac OS X Aqua user interface when running X11 in a rootless mode."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libAppleWM"
- url = "https://www.x.org/archive/individual/lib/libAppleWM-1.4.1.tar.gz"
+ xorg_mirror_path = "lib/libAppleWM-1.4.1.tar.gz"
version('1.4.1', sha256='d7fb098d65ad4d840f60e5c92de7f58f1725bd70d0d132755ea453462fd50049')
diff --git a/var/spack/repos/builtin/packages/libbacktrace/package.py b/var/spack/repos/builtin/packages/libbacktrace/package.py
new file mode 100644
index 0000000000..64e5832114
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libbacktrace/package.py
@@ -0,0 +1,23 @@
+# Copyright 2013-2020 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 Libbacktrace(AutotoolsPackage):
+ """A C library that may be linked into a C/C++ program to produce
+ symbolic backtraces."""
+
+ homepage = "https://github.com/ianlancetaylor/libbacktrace"
+ git = "https://github.com/ianlancetaylor/libbacktrace.git"
+ maintainers = ['trahay']
+
+ version('master', branch='master')
+ version('2020-02-19', commit='ca0de0517f3be44fedf5a2c01cfaf6437d4cae68')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
diff --git a/var/spack/repos/builtin/packages/libc/package.py b/var/spack/repos/builtin/packages/libc/package.py
new file mode 100644
index 0000000000..a4fa9ac3a6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libc/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 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 Libc(Package):
+ """Dummy libc package to provide `iconv` virtual package"""
+
+ homepage = "https://en.wikipedia.org/wiki/C_standard_library"
+ url = ""
+ has_code = False
+ phases = []
+
+ version('1.0') # Dummy
+ variant('iconv', default=False, description='Set to True if libc provides iconv')
+ provides('iconv', when='+iconv')
diff --git a/var/spack/repos/builtin/packages/libdmx/package.py b/var/spack/repos/builtin/packages/libdmx/package.py
index 5986547c5d..852f313dd3 100644
--- a/var/spack/repos/builtin/packages/libdmx/package.py
+++ b/var/spack/repos/builtin/packages/libdmx/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Libdmx(AutotoolsPackage):
+class Libdmx(AutotoolsPackage, XorgPackage):
"""libdmx - X Window System DMX (Distributed Multihead X) extension
library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libdmx"
- url = "https://www.x.org/archive/individual/lib/libdmx-1.1.3.tar.gz"
+ xorg_mirror_path = "lib/libdmx-1.1.3.tar.gz"
version('1.1.3', sha256='c4b24d7e13e5a67ead7a18f0b4cc9b7b5363c9d04cd01b83b5122ff92b3b4996')
diff --git a/var/spack/repos/builtin/packages/libfabric/package.py b/var/spack/repos/builtin/packages/libfabric/package.py
index 030b4b0788..cddaee99a7 100644
--- a/var/spack/repos/builtin/packages/libfabric/package.py
+++ b/var/spack/repos/builtin/packages/libfabric/package.py
@@ -3,7 +3,6 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-import os.path
from spack import *
@@ -12,24 +11,22 @@ class Libfabric(AutotoolsPackage):
fabric communication services to applications."""
homepage = "https://libfabric.org/"
- url = "https://github.com/ofiwg/libfabric/releases/download/v1.6.1/libfabric-1.6.1.tar.gz"
+ url = "https://github.com/ofiwg/libfabric/releases/download/v1.8.0/libfabric-1.8.0.tar.bz2"
git = "https://github.com/ofiwg/libfabric.git"
- version('develop', branch='master')
- version('1.9.0', sha256='559bfb7376c38253c936d0b104591c3394880376d676894895706c4f5f88597c',
- url='https://github.com/ofiwg/libfabric/releases/download/v1.9.0/libfabric-1.9.0.tar.bz2')
- version('1.8.1', sha256='3c560b997f9eafd89f961dd8e8a29a81aad3e39aee888e3f3822da419047dc88',
- url='https://github.com/ofiwg/libfabric/releases/download/v1.8.1/libfabric-1.8.1.tar.bz2')
- version('1.8.0', sha256='c4763383a96af4af52cd81b3b094227f5cf8e91662f861670965994539b7ee37',
- url='https://github.com/ofiwg/libfabric/releases/download/v1.8.0/libfabric-1.8.0.tar.bz2')
- version('1.7.1', sha256='312e62c57f79b7274f89c41823932c00b15f1cc8de9c1f8dce17cd7fdae66fa1')
- version('1.7.0', sha256='9d7059e2ef48341f967f2a20ee215bc50f9079b32aad485f654098f83040e4be')
- version('1.6.2', sha256='b1a9cf8c47189a1c918f8b5710d05cb50df6b47a1c9b2ba51d927e97503b4df0')
- version('1.6.1', sha256='ac85f18bbf09226e868d72771ecba39cfdb7915aab3aeb855c95f8be7817f8bc')
- version('1.6.0', sha256='cd7d4543cf706820e4a33003457eff97336b5160f35d0e8b001aea18b5470423')
- version('1.5.3', sha256='770e505185074b4c66a0c33ac2155670142746a71a6299c286f6d5cd220cbff8')
- version('1.5.0', sha256='f62709e70fab6abea719402da854f3c6ab60369be6b1e31e4f77554c7454da28')
- version('1.4.2', sha256='858e30d92b69ee5e47ac10a8ac0c731b491d75a6e28267a128f3d6eb43f940a1')
+ version('master', branch='master')
+ version('1.9.1', sha256='c305c6035c992523e08c7591a6a3707225ba3e72de40443eaed837a10df6771a')
+ version('1.9.0', sha256='559bfb7376c38253c936d0b104591c3394880376d676894895706c4f5f88597c')
+ version('1.8.1', sha256='3c560b997f9eafd89f961dd8e8a29a81aad3e39aee888e3f3822da419047dc88')
+ version('1.8.0', sha256='c4763383a96af4af52cd81b3b094227f5cf8e91662f861670965994539b7ee37')
+ version('1.7.1', sha256='f4e9cc48319763cff4943de96bf527b737c9f1d6ac3088b8b5c75d07bd719569')
+ version('1.7.0', sha256='b3dd9cc0fa36fe8c3b9997ba279ec831a905704816c25fe3c4c09fc7eeceaac4')
+ version('1.6.2', sha256='ec63f61f5e529964ef65fd101627d8782c0efc2b88b3d5fc7f0bfd2c1e95ab2c')
+ version('1.6.1', sha256='33215a91450e2234ebdc7c467f041b6757f76f5ba926425e89d80c27b3fd7da2')
+ version('1.6.0', sha256='b3ce7bd655052ea4da7bf01a3177d96d94e5f41b3fd6011ac43f50fcb2dc7581')
+ version('1.5.3', sha256='f62a40da06f8951db267a59a4ee7363b6ee60a7abbc55cd5db6c8b067d93fa0c')
+ version('1.5.0', sha256='88a8ad6772f11d83e5b6f7152a908ffcb237af273a74a1bd1cb4202f577f1f23')
+ version('1.4.2', sha256='5d027d7e4e34cb62508803e51d6bd2f477932ad68948996429df2bfff37ca2a5')
fabrics = ('psm',
'psm2',
@@ -76,38 +73,8 @@ class Libfabric(AutotoolsPackage):
depends_on('automake', when='@develop', type='build')
depends_on('libtool', when='@develop', type='build')
- resource(name='fabtests',
- url='https://github.com/ofiwg/libfabric/releases/download/v1.9.0/fabtests-1.9.0.tar.bz2',
- sha256='60cc21db7092334904cbdafd142b2403572976018a22218e7c453195caef366e',
- placement='fabtests', when='@1.9.0')
- resource(name='fabtests',
- url='https://github.com/ofiwg/libfabric/releases/download/v1.8.0/fabtests-1.8.0.tar.gz',
- sha256='4b9af18c9c7c8b28eaeac4e6e9148bd2ea7dc6b6f00f8e31c90a6fc536c5bb6c',
- placement='fabtests', when='@1.8.0')
- resource(name='fabtests',
- url='https://github.com/ofiwg/libfabric/releases/download/v1.7.0/fabtests-1.7.0.tar.gz',
- sha256='ebb4129dc69dc0e1f48310ce1abb96673d8ddb18166bc595312ebcb96e803de9',
- placement='fabtests', when='@1.7.0')
- resource(name='fabtests',
- url='https://github.com/ofiwg/fabtests/releases/download/v1.6.1/fabtests-1.6.1.tar.gz',
- sha256='d357466b868fdaf1560d89ffac4c4e93a679486f1b4221315644d8d3e21174bf',
- placement='fabtests', when='@1.6.1')
- resource(name='fabtests',
- url='https://github.com/ofiwg/fabtests/releases/download/v1.6.0/fabtests-1.6.0.tar.gz',
- sha256='dc3eeccccb005205017f5af60681ede15782ce202a0103450a6d56a7ff515a67',
- placement='fabtests', when='@1.6.0')
- resource(name='fabtests',
- url='https://github.com/ofiwg/fabtests/releases/download/v1.5.3/fabtests-1.5.3.tar.gz',
- sha256='3835b3bf86cd00d23df0ddba8bf317e4a195e8d5c3c2baa918b373d548f77f29',
- placement='fabtests', when='@1.5.3')
- resource(name='fabtests',
- url='https://github.com/ofiwg/fabtests/releases/download/v1.5.0/fabtests-1.5.0.tar.gz',
- sha256='1dddd446c3f1df346899f9a8636f1b4265de5b863103ae24876e9f0c1e40a69d',
- placement='fabtests', when='@1.5.0')
- resource(name='fabtests',
- url='https://github.com/ofiwg/fabtests/releases/download/v1.4.2/fabtests-1.4.2.tar.gz',
- sha256='3b78d0ca1b223ff21b7f5b3627e67e358e3c18b700f86b017e2233fee7e88c2e',
- placement='fabtests', when='@1.4.2')
+ conflicts('@1.9.0', when='platform=darwin',
+ msg='This distribution is missing critical files')
def setup_build_environment(self, env):
if self.run_tests:
@@ -118,10 +85,6 @@ class Libfabric(AutotoolsPackage):
bash = which('bash')
bash('./autogen.sh')
- if self.run_tests:
- with working_dir('fabtests'):
- bash('./autogen.sh')
-
def configure_args(self):
args = []
@@ -138,29 +101,6 @@ class Libfabric(AutotoolsPackage):
return args
- def install(self, spec, prefix):
- # Call main install method
- super(Libfabric, self).install(spec, prefix)
-
- # Build and install fabtests, if available
- if not os.path.isdir('fabtests'):
- return
- with working_dir('fabtests'):
- configure = Executable('./configure')
- configure('--prefix={0}'.format(self.prefix),
- '--with-libfabric={0}'.format(self.prefix))
- make()
- make('install')
-
def installcheck(self):
fi_info = Executable(self.prefix.bin.fi_info)
fi_info()
-
- # Run fabtests test suite if available
- if not os.path.isdir('fabtests'):
- return
- if self.spec.satisfies('@1.8.0,1.9.0'):
- # make test seems broken.
- return
- with working_dir('fabtests'):
- make('test')
diff --git a/var/spack/repos/builtin/packages/libffi/package.py b/var/spack/repos/builtin/packages/libffi/package.py
index e5bf7b1df6..4add7b1785 100644
--- a/var/spack/repos/builtin/packages/libffi/package.py
+++ b/var/spack/repos/builtin/packages/libffi/package.py
@@ -6,15 +6,15 @@
from spack import *
-class Libffi(AutotoolsPackage):
+class Libffi(AutotoolsPackage, SourcewarePackage):
"""The libffi library provides a portable, high level programming
interface to various calling conventions. This allows a programmer
to call any function specified by a call interface description at
run time."""
homepage = "https://sourceware.org/libffi/"
+ sourceware_mirror_path = "libffi/libffi-3.2.1.tar.gz"
- version('3.2.1', sha256='d06ebb8e1d9a22d19e38d63fdb83954253f39bedc5d46232a05645685722ca37',
- url="https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz")
+ version('3.2.1', sha256='d06ebb8e1d9a22d19e38d63fdb83954253f39bedc5d46232a05645685722ca37')
@property
def headers(self):
diff --git a/var/spack/repos/builtin/packages/libfontenc/package.py b/var/spack/repos/builtin/packages/libfontenc/package.py
index 0f4f6a87a8..b99b708721 100644
--- a/var/spack/repos/builtin/packages/libfontenc/package.py
+++ b/var/spack/repos/builtin/packages/libfontenc/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libfontenc(AutotoolsPackage):
+class Libfontenc(AutotoolsPackage, XorgPackage):
"""libfontenc - font encoding library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libfontenc"
- url = "https://www.x.org/archive/individual/lib/libfontenc-1.1.3.tar.gz"
+ xorg_mirror_path = "lib/libfontenc-1.1.3.tar.gz"
version('1.1.3', sha256='6fba26760ca8d5045f2b52ddf641c12cedc19ee30939c6478162b7db8b6220fb')
diff --git a/var/spack/repos/builtin/packages/libfs/package.py b/var/spack/repos/builtin/packages/libfs/package.py
index b250ab7353..bfbedabc2a 100644
--- a/var/spack/repos/builtin/packages/libfs/package.py
+++ b/var/spack/repos/builtin/packages/libfs/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Libfs(AutotoolsPackage):
+class Libfs(AutotoolsPackage, XorgPackage):
"""libFS - X Font Service client library.
This library is used by clients of X Font Servers (xfs), such as
xfsinfo, fslsfonts, and the X servers themselves."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libFS"
- url = "https://www.x.org/archive/individual/lib/libFS-1.0.7.tar.gz"
+ xorg_mirror_path = "lib/libFS-1.0.7.tar.gz"
version('1.0.7', sha256='91bf1c5ce4115b7dbf4e314fdbee54052708e8f7b6a2ec6e82c309bcbe40ef3d')
diff --git a/var/spack/repos/builtin/packages/libgcrypt/package.py b/var/spack/repos/builtin/packages/libgcrypt/package.py
index 496bfc3465..bc566fad52 100644
--- a/var/spack/repos/builtin/packages/libgcrypt/package.py
+++ b/var/spack/repos/builtin/packages/libgcrypt/package.py
@@ -7,14 +7,10 @@ from spack import *
class Libgcrypt(AutotoolsPackage):
- """Libgcrypt is a general purpose cryptographic library based on
- the code from GnuPG. It provides functions for all cryptographic
- building blocks: symmetric ciphers, hash algorithms, MACs, public
- key algorithms, large integer functions, random numbers and a lot
- of supporting functions."""
+ """Cryptographic library based on the code from GnuPG."""
- homepage = "http://www.gnu.org/software/libgcrypt/"
- url = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.5.tar.bz2"
+ homepage = "https://gnupg.org/software/libgcrypt/index.html"
+ url = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.5.tar.bz2"
version('1.8.5', sha256='3b4a2a94cb637eff5bdebbcaf46f4d95c4f25206f459809339cdada0eb577ac3')
version('1.8.4', sha256='f638143a0672628fde0cad745e9b14deb85dffb175709cacc1f4fe24b93f2227')
@@ -23,3 +19,18 @@ class Libgcrypt(AutotoolsPackage):
version('1.6.2', sha256='de084492a6b38cdb27b67eaf749ceba76bf7029f63a9c0c3c1b05c88c9885c4c')
depends_on('libgpg-error@1.25:')
+
+ def check(self):
+ # Without this hack, `make check` fails on macOS when SIP is enabled
+ # https://bugs.gnupg.org/gnupg/issue2056
+ # https://github.com/Homebrew/homebrew-core/pull/3004
+ if self.spec.satisfies('platform=darwin'):
+ old = self.prefix.lib.join('libgcrypt.20.dylib')
+ new = join_path(
+ self.stage.source_path, 'src', '.libs', 'libgcrypt.20.dylib')
+ filename = 'tests/.libs/random'
+
+ install_name_tool = Executable('install_name_tool')
+ install_name_tool('-change', old, new, filename)
+
+ make('check')
diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py
index 232b826bbf..d4907ae3e1 100644
--- a/var/spack/repos/builtin/packages/libgd/package.py
+++ b/var/spack/repos/builtin/packages/libgd/package.py
@@ -31,7 +31,7 @@ class Libgd(AutotoolsPackage):
depends_on('gettext', type='build')
depends_on('pkgconfig', type='build')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('libpng')
depends_on('jpeg')
depends_on('libtiff')
diff --git a/var/spack/repos/builtin/packages/libgit2/package.py b/var/spack/repos/builtin/packages/libgit2/package.py
index 58ea638de0..6fe9022179 100644
--- a/var/spack/repos/builtin/packages/libgit2/package.py
+++ b/var/spack/repos/builtin/packages/libgit2/package.py
@@ -16,8 +16,84 @@ class Libgit2(CMakePackage):
homepage = "https://libgit2.github.com/"
url = "https://github.com/libgit2/libgit2/archive/v0.26.0.tar.gz"
- version('0.28.2', sha256='42b5f1e9b9159d66d86fff0394215c5733b6ef8f9b9d054cdd8c73ad47177fc3')
- version('0.26.0', sha256='6a62393e0ceb37d02fe0d5707713f504e7acac9006ef33da1e88960bd78b6eac')
+ maintainers = ["AndrewGaspar"]
- depends_on('cmake@2.8:', type='build')
- depends_on('libssh2')
+ version('1.0.0', sha256='6a1fa16a7f6335ce8b2630fbdbb5e57c4027929ebc56fcd1ac55edb141b409b4')
+ version('0.99.0', sha256='174024310c1563097a6613a0d3f7539d11a9a86517cd67ce533849065de08a11')
+ version('0.28.5', sha256='2b7b68aee6f123bc84cc502a9c12738435b8054e7d628962e091cd2a25be4f42')
+ version('0.28.4', sha256='30f3877469d09f2e4a21be933b4e2800560d16646028dd800744dc5f7fb0c749')
+ version('0.28.3', sha256='ee5344730fe11ce7c86646e19c2d257757be293f5a567548d398fb3af8b8e53b')
+ version('0.28.2', sha256='42b5f1e9b9159d66d86fff0394215c5733b6ef8f9b9d054cdd8c73ad47177fc3')
+ version('0.28.1', sha256='0ca11048795b0d6338f2e57717370208c2c97ad66c6d5eac0c97a8827d13936b')
+ version('0.28.0', sha256='9d60d64dc77085e8e530e5c66314057eafe0c06e4a7a61149a70ff3e0688f284')
+ version('0.27.10', sha256='f6fd26378ff71bd7a4b17b576c82c774a2e9c2d6b74b24718a8fb29551e1c4a5')
+ version('0.27.9', sha256='adf17310b590e6e7618f070c742b5ee028aeeed2c60099bc4190c386b5060de1')
+ version('0.27.8', sha256='8313873d49dc01e8b880ec334d7430ae67496a89aaa8c6e7bbd3affb47a00c76')
+ version('0.27.7', sha256='1a5435a483759b1cd96feb12b11abb5231b0688016db506ce5947178f6ba2531')
+ version('0.27.6', sha256='d98db2ed11ec82fee94dce4819b466524613852c2c9c3426d351c57729ec49da')
+ version('0.27.5', sha256='15f2775f4f325951d9139ed906502b6c71fee6787cada9b045f5994072ccbd33')
+ version('0.27.4', sha256='0b7ca31cb959ff1b22afa0da8621782afe61f99242bf716c403802ffbdb21d51')
+ version('0.27.3', sha256='50a57bd91f57aa310fb7d5e2a340b3779dc17e67b4e7e66111feac5c2432f1a5')
+ version('0.27.2', sha256='ffacdbd5588aeb03e98e3866a7e2ceace468723a439bdc9bb01362fe140fa9e5')
+ version('0.27.1', sha256='837b11927bc5f64e7f9ab0376f57cfe3ca5aa52ffd2007ac41184b21124fb086')
+ version('0.27.0', sha256='545b0458292c786aba334f1bf1c8f73600ae73dd7205a7bb791a187ee48ab8d2')
+ version('0.26.8', sha256='0f20d7e239be030db33d7350bab38ada2830b3bffab5539730074e71b0267796')
+ version('0.26.7', sha256='65584ac1f4de2c3ab8491351c8629eb68bad2d65e67f6411bf0333b8976dc4ef')
+ version('0.26.6', sha256='7669dd47ebdab86ced8888816c552596ec923b6e126704a3445b2081cb0e5662')
+ version('0.26.5', sha256='52e28a5166564bc4365a2e4112f5e5c6e334708dbf13596241b2fd34efc1b0a9')
+ version('0.26.4', sha256='292fa2600bbb4e52641793cfcc1c19ffc0bf97b5fd8378d422a6bfe7afffcb97')
+ version('0.26.3', sha256='0da4e211dfb63c22e5f43f2a4a5373e86a140afa88a25ca6ba3cc2cae58263d2')
+ version('0.26.2', sha256='747b47d5b02a2387ff81301c694763785181b895690b6eb91ed1ae4b7904307b')
+ version('0.26.1', sha256='68cd0f8ee9e0ca84dcf0f0267d0a8297471d3365622d22d3da67c57165bb0722')
+ version('0.26.0', sha256='6a62393e0ceb37d02fe0d5707713f504e7acac9006ef33da1e88960bd78b6eac')
+
+ # Backends
+ variant(
+ 'https', default='system', description='HTTPS support',
+ values=('system', 'openssl', 'none'), multi=False)
+ variant('ssh', default=True, description='Enable SSH support')
+ variant('curl', default=False, description='Enable libcurl support (only supported through v0.27)')
+
+ # Build Dependencies
+ depends_on('cmake@2.8:', type='build', when="@:0.28")
+ depends_on('cmake@3.5:', type='build', when="@0.99:")
+ depends_on('pkgconfig', type='build')
+
+ # Runtime Dependencies
+ depends_on('libssh2', when='+ssh')
+ depends_on('openssl', when='https=system platform=linux')
+ depends_on('openssl', when='https=system platform=cray')
+ depends_on('openssl', when='https=openssl')
+ depends_on('curl', when='+curl')
+
+ conflicts('+curl', when='@0.28:')
+
+ def cmake_args(self):
+ args = []
+ if 'https=system' in self.spec:
+ if 'platform=linux' in self.spec or 'platform=cray' in self.spec:
+ args.append('-DUSE_HTTPS=OpenSSL')
+ elif 'platform=darwin' in self.spec:
+ args.append('-DUSE_HTTPS=SecureTransport')
+ else:
+ # Let CMake try to find an HTTPS implementation. Mileage on
+ # your platform may vary
+ args.append('-DUSE_HTTPS=ON')
+ elif 'https=openssl' in self.spec:
+ args.append('-DUSE_HTTPS=OpenSSL')
+ else:
+ args.append('-DUSE_HTTPS=OFF')
+
+ args.append(
+ '-DUSE_SSH={0}'.format('ON' if '+ssh' in self.spec else 'OFF'))
+
+ # The curl backed is not supported after 0.27.x
+ if '@:0.27 +curl' in self.spec:
+ args.append(
+ '-DCURL={0}'.format('ON' if '+curl' in self.spec else 'OFF'))
+
+ # Control tests
+ args.append(
+ '-DBUILD_CLAR={0}'.format('ON' if self.run_tests else 'OFF'))
+
+ return args
diff --git a/var/spack/repos/builtin/packages/libgpg-error/package.py b/var/spack/repos/builtin/packages/libgpg-error/package.py
index 6e61bf1403..c4978751ff 100644
--- a/var/spack/repos/builtin/packages/libgpg-error/package.py
+++ b/var/spack/repos/builtin/packages/libgpg-error/package.py
@@ -7,14 +7,12 @@ from spack import *
class LibgpgError(AutotoolsPackage):
- """Libgpg-error is a small library that defines common error
- values for all GnuPG components. Among these are GPG, GPGSM,
- GPGME, GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry,
- SmartCard Daemon and possibly more in the future. """
+ """Common error values for all GnuPG components."""
- homepage = "https://www.gnupg.org/related_software/libgpg-error"
- url = "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2"
+ homepage = "https://www.gnupg.org/related_software/libgpg-error/index.en.html"
+ url = "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.37.tar.bz2"
+ version('1.37', sha256='b32d6ff72a73cf79797f7f2d039e95e9c6f92f0c1450215410840ab62aea9763')
version('1.36', sha256='babd98437208c163175c29453f8681094bcaf92968a15cafb1a276076b33c97c')
version('1.27', sha256='4f93aac6fecb7da2b92871bb9ee33032be6a87b174f54abf8ddf0911a22d29d2')
version('1.21', sha256='b7dbdb3cad63a740e9f0c632a1da32d4afdb694ec86c8625c98ea0691713b84d')
@@ -23,3 +21,13 @@ class LibgpgError(AutotoolsPackage):
depends_on('awk', type=('build'))
# Patch for using gawk@5, c.f. https://dev.gnupg.org/T4459
patch('awk-5.patch', when='@1.36^gawk@5:')
+
+ def configure_args(self):
+ args = ['--enable-static']
+
+ if self.run_tests:
+ args.append('--enable-tests')
+ else:
+ args.append('--disable-tests')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/libhio/package.py b/var/spack/repos/builtin/packages/libhio/package.py
index 42ef377a5a..f04dc7c660 100644
--- a/var/spack/repos/builtin/packages/libhio/package.py
+++ b/var/spack/repos/builtin/packages/libhio/package.py
@@ -16,11 +16,15 @@ class Libhio(AutotoolsPackage):
homepage = "https://github.com/hpc/libhio"
url = "https://github.com/hpc/libhio/releases/download/hio.1.4.1.0/libhio-1.4.1.0.tar.bz2"
+ git = "https://github.com/hpc/libhio.git"
+ maintainers = ['plamborn']
#
# We don't include older versions since they are missing features
# needed by current and future consumers of libhio
#
+ version('master', branch='master')
+ version('1.4.1.4', sha256='6998a424cff97be9a207032b3addd19f292d8ebda72043be92a8f942ae3b4da1')
version('1.4.1.3', sha256='b6ad2354f1bc597e7e55fc989ff50944835d64149f4925c2f45df950919e4d08')
version('1.4.1.2', sha256='87a0f9b72b7aa69485c40d9bd36f02af653b70e8eed3eb0b50eaeb02ff0a9049')
version('1.4.1.1', sha256='5c65d18bf74357f9d9960bf6b9ad2432f8fc5a2b653e72befe4d1caabb9a2f7a')
@@ -57,4 +61,6 @@ class Libhio(AutotoolsPackage):
if '+hdf5' in spec:
args.append('--with-hdf5={0}'.format(spec['hdf5'].prefix))
+ args.append('--with-external-json={0}'.format(spec['json-c'].prefix))
+
return args
diff --git a/var/spack/repos/builtin/packages/libice/package.py b/var/spack/repos/builtin/packages/libice/package.py
index 2dedf163cb..32aa445dd3 100644
--- a/var/spack/repos/builtin/packages/libice/package.py
+++ b/var/spack/repos/builtin/packages/libice/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libice(AutotoolsPackage):
+class Libice(AutotoolsPackage, XorgPackage):
"""libICE - Inter-Client Exchange Library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libICE"
- url = "https://www.x.org/archive/individual/lib/libICE-1.0.9.tar.gz"
+ xorg_mirror_path = "lib/libICE-1.0.9.tar.gz"
version('1.0.9', sha256='7812a824a66dd654c830d21982749b3b563d9c2dfe0b88b203cefc14a891edc0')
diff --git a/var/spack/repos/builtin/packages/libiconv/package.py b/var/spack/repos/builtin/packages/libiconv/package.py
index 642ad289fd..9331dfb399 100644
--- a/var/spack/repos/builtin/packages/libiconv/package.py
+++ b/var/spack/repos/builtin/packages/libiconv/package.py
@@ -20,6 +20,7 @@ class Libiconv(AutotoolsPackage, GNUMirrorPackage):
# We cannot set up a warning for gets(), since gets() is not part
# of C11 any more and thus might not exist.
patch('gets.patch', when='@1.14')
+ provides('iconv')
conflicts('@1.14', when='%gcc@5:')
diff --git a/var/spack/repos/builtin/packages/libiscsi/package.py b/var/spack/repos/builtin/packages/libiscsi/package.py
new file mode 100644
index 0000000000..621cc875d6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libiscsi/package.py
@@ -0,0 +1,28 @@
+# Copyright 2013-2020 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 Libiscsi(AutotoolsPackage):
+ """Libiscsi is a client-side library to implement the iSCSI protocol that can
+ be used to access the resources of an iSCSI target."""
+
+ homepage = "https://github.com/sahlberg/libiscsi"
+ url = "https://github.com/sahlberg/libiscsi/archive/1.19.0.tar.gz"
+
+ version('1.19.0', sha256='c7848ac722c8361d5064654bc6e926c2be61ef11dd3875020a63931836d806df')
+ version('1.18.0', sha256='464d104e12533dc11f0dd7662cbc2f01c132f94aa4f5bd519e3413ef485830e8')
+ version('1.17.0', sha256='80a7f75bfaffc8bec9920ba7af3f1d14cd862c35c3c5f2c9617b45b975232112')
+ version('1.16.0', sha256='35c7be63a8c3a7cee7b697901b6d2dd464e098e1881671eb67462983053b3c7b')
+ version('1.15.0', sha256='489e625e58c1e6da2fa3536f9c4b12290f2d3fb4ce14edc0583b8ba500605c34')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+
+ def autoreconf(self, spec, prefix):
+ autoreconf('--install', '--force')
diff --git a/var/spack/repos/builtin/packages/liblbxutil/package.py b/var/spack/repos/builtin/packages/liblbxutil/package.py
index 6a8f48dbfd..0ab82308c2 100644
--- a/var/spack/repos/builtin/packages/liblbxutil/package.py
+++ b/var/spack/repos/builtin/packages/liblbxutil/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Liblbxutil(AutotoolsPackage):
+class Liblbxutil(AutotoolsPackage, XorgPackage):
"""liblbxutil - Low Bandwith X extension (LBX) utility routines."""
homepage = "http://cgit.freedesktop.org/xorg/lib/liblbxutil"
- url = "https://www.x.org/archive/individual/lib/liblbxutil-1.1.0.tar.gz"
+ xorg_mirror_path = "lib/liblbxutil-1.1.0.tar.gz"
version('1.1.0', sha256='285c1bc688cc71ec089e9284f2566d1780cc5d90816e9997890af8689f386951')
diff --git a/var/spack/repos/builtin/packages/libmesh/package.py b/var/spack/repos/builtin/packages/libmesh/package.py
index 541e98a0d4..a828b3c87a 100644
--- a/var/spack/repos/builtin/packages/libmesh/package.py
+++ b/var/spack/repos/builtin/packages/libmesh/package.py
@@ -79,10 +79,7 @@ class Libmesh(AutotoolsPackage):
'variant.')
depends_on('boost', when='+boost')
- # The Scotch dependency of Eigen is not used by libMesh. Since Scotch can
- # only be used with certain versions of flex it conflicts with several
- # versions of GCC, so explicitly disable it.
- depends_on('eigen~scotch', when='+eigen')
+ depends_on('eigen', when='+eigen')
depends_on('hdf5+mpi', when='+hdf5+mpi')
depends_on('mpi', when='+mpi')
depends_on('mpi', when='+slepc')
diff --git a/var/spack/repos/builtin/packages/libnetworkit/0001-Name-agnostic-import-of-tlx-library.patch b/var/spack/repos/builtin/packages/libnetworkit/0001-Name-agnostic-import-of-tlx-library.patch
new file mode 100644
index 0000000000..900a298d9b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libnetworkit/0001-Name-agnostic-import-of-tlx-library.patch
@@ -0,0 +1,17 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -203,10 +203,11 @@ if(NOT NETWORKIT_EXT_TLX)
+ "Please run `git submodule update --init` to fetch the submodule.")
+ endif()
+ else()
++ file(GLOB tlx_path ${NETWORKIT_EXT_TLX}/lib/**.a)
+ add_library(tlx STATIC IMPORTED)
+ set_target_properties(tlx PROPERTIES
+- IMPORTED_LOCATION "${NETWORKIT_EXT_TLX}/lib/libtlx.a"
+- INTERFACE_INCLUDE_DIRECTORIES "${NETWORKIT_EXT_TLX}/include/")
++ IMPORTED_LOCATION "${tlx_path}"
++ INTERFACE_INCLUDE_DIRECTORIES "${NETWORKIT_EXT_TLX}/include/")
+ endif()
+
+ ################################################################################
+
diff --git a/var/spack/repos/builtin/packages/libnetworkit/package.py b/var/spack/repos/builtin/packages/libnetworkit/package.py
new file mode 100644
index 0000000000..5d7f58eb90
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libnetworkit/package.py
@@ -0,0 +1,44 @@
+# Copyright 2013-2020 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 Libnetworkit(CMakePackage):
+ """NetworKit is a growing open-source toolkit for large-scale network
+ analysis. Its aim is to provide tools for the analysis of large networks
+ in the size range from thousands to billions of edges. For this purpose,
+ it implements efficient graph algorithms, many of them parallel to
+ utilize multicore architectures. These are meant to compute standard
+ measures of network analysis, such as degree sequences, clustering
+ coefficients, and centrality measures. In this respect, NetworKit is
+ comparable to packages such as NetworkX, albeit with a focus on
+ parallelism and scalability."""
+
+ homepage = "https://networkit.github.io/"
+ url = "https://github.com/networkit/networkit/archive/6.1.tar.gz"
+
+ maintainers = ['fabratu']
+
+ version('6.1', sha256='22c953ea1054c356663b31c77114c2f0c8fec17e0e707aeec23026241beab9b2')
+
+ variant('static', default=False, description='Enables the build of shared libraries')
+ variant('doc', default=False, description='Enables the build with sphinx documentation')
+
+ depends_on('libtlx')
+ depends_on('py-sphinx', when='+doc', type='build')
+
+ patch('0001-Name-agnostic-import-of-tlx-library.patch', when='@6.1')
+
+ def cmake_args(self):
+ spec = self.spec
+
+ tlx_libs = spec['libtlx'].prefix
+
+ args = ['-DNETWORKIT_EXT_TLX=%s' % tlx_libs,
+ '-DNETWORKIT_STATIC=%s' %
+ ('ON' if '+static' in spec else 'OFF')]
+
+ return args
diff --git a/var/spack/repos/builtin/packages/libnotify/docbook-location.patch b/var/spack/repos/builtin/packages/libnotify/docbook-location.patch
new file mode 100644
index 0000000000..5fcaf2ddb7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libnotify/docbook-location.patch
@@ -0,0 +1,11 @@
+--- a/meson.build 2020-03-30 14:00:26.851258170 -0400
++++ b/meson.build 2020-03-30 14:03:43.134195999 -0400
+@@ -54,7 +54,7 @@
+
+ if get_option('man')
+ xsltproc = find_program('xsltproc', required: true)
+- stylesheet = 'http://docbook.sourceforge.net/release/xsl-ns/current/manpages/docbook.xsl'
++ stylesheet = 'http://cdn.docbook.org/release/xsl/current/manpages/docbook.xsl'
+ xsltproc_command = [
+ xsltproc,
+ '--nonet',
diff --git a/var/spack/repos/builtin/packages/libnotify/package.py b/var/spack/repos/builtin/packages/libnotify/package.py
new file mode 100644
index 0000000000..6407fd6406
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libnotify/package.py
@@ -0,0 +1,57 @@
+# 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 Libnotify(MesonPackage):
+ """libnotify is a library for sending desktop notifications"""
+
+ homepage = "https://github.com/GNOME/libnotify"
+ url = "https://github.com/GNOME/libnotify/archive/0.7.9.tar.gz"
+
+ version('0.7.9', sha256='9bd4f5fa911d27567e7cc2d2d09d69356c16703c4e8d22c0b49a5c45651f3af0')
+
+ # Libnotify is having trouble with finding the DTD and XSLT for docbook,
+ # which is required for both of these varients.
+ # variant('docbook', default=False,
+ # description='Build docbook docs. Currently broken')
+ # variant('gtkdoc', default=False,
+ # description='Build with gtkdoc. Currently broken')
+
+ depends_on('pkgconfig', type='build')
+ depends_on('glib@2.26.0:')
+ depends_on('gtkplus@2.90:')
+ depends_on('gobject-introspection')
+ depends_on('libxslt', type='build')
+ depends_on('docbook-xsl', type='build')
+ # depends_on('gtk-doc', when='+gtkdoc', type='build')
+ # depends_on('xmlto', when='+docbook', type='build')
+
+ patch('docbook-location.patch')
+
+ def meson_args(self):
+ # spec = self.spec
+ args = []
+
+ # if '+docbook' in spec:
+ # args.append('-Ddocbook_docs=enabled')
+ # else:
+ # args.append('-Ddocbook_docs=disabled')
+ args.append('-Ddocbook_docs=disabled')
+
+ # if self.run_tests:
+ # args.append('-Dtests=true')
+ # else:
+ # args.append('-Dtests=false')
+ args.append('-Dtests=false')
+
+ # if '+gtkdoc' in spec:
+ # args.append('-Dgtk_doc=true')
+ # else:
+ # args.append('-Dgtk_doc=false')
+ args.append('-Dgtk_doc=false')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/liboldx/package.py b/var/spack/repos/builtin/packages/liboldx/package.py
index 264a8546d7..bab3d9513b 100644
--- a/var/spack/repos/builtin/packages/liboldx/package.py
+++ b/var/spack/repos/builtin/packages/liboldx/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Liboldx(AutotoolsPackage):
+class Liboldx(AutotoolsPackage, XorgPackage):
"""X version 10 backwards compatibility."""
homepage = "https://cgit.freedesktop.org/xorg/lib/liboldX/"
- url = "https://www.x.org/archive/individual/lib/liboldX-1.0.1.tar.gz"
+ xorg_mirror_path = "lib/liboldX-1.0.1.tar.gz"
version('1.0.1', sha256='74322dbf04df69787485eb24b16e12783dfc3454befaf18482ead51bd7b55dc8')
diff --git a/var/spack/repos/builtin/packages/libsm/package.py b/var/spack/repos/builtin/packages/libsm/package.py
index 3856c526c7..cabd2aae3d 100644
--- a/var/spack/repos/builtin/packages/libsm/package.py
+++ b/var/spack/repos/builtin/packages/libsm/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libsm(AutotoolsPackage):
+class Libsm(AutotoolsPackage, XorgPackage):
"""libSM - X Session Management Library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libSM"
- url = "https://www.x.org/archive/individual/lib/libSM-1.2.2.tar.gz"
+ xorg_mirror_path = "lib/libSM-1.2.2.tar.gz"
version('1.2.2', sha256='14bb7c669ce2b8ff712fbdbf48120e3742a77edcd5e025d6b3325ed30cf120f4')
diff --git a/var/spack/repos/builtin/packages/libsndfile/package.py b/var/spack/repos/builtin/packages/libsndfile/package.py
new file mode 100644
index 0000000000..4c5c294d48
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libsndfile/package.py
@@ -0,0 +1,40 @@
+# Copyright 2013-2020 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 Libsndfile(AutotoolsPackage):
+ """Libsndfile is a C library for reading and writing files containing
+ sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format)
+ through one standard library interface. It is released in source code
+ format under the Gnu Lesser General Public License."""
+
+ homepage = "http://www.mega-nerd.com/libsndfile/"
+ url = "http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28.tar.gz"
+
+ version('1.0.28', sha256='1ff33929f042fa333aed1e8923aa628c3ee9e1eb85512686c55092d1e5a9dfa9')
+
+ variant('alsa', default=False, description='Use alsa in example programs')
+ variant('external-libs',
+ default=False,
+ description='Build with support for FLAC, Ogg and Vorbis')
+ variant('sqlite', default=False, description='Build with sqlite support')
+
+ depends_on('pkgconfig', type='build')
+ depends_on('alsa-lib', when='+alsa')
+ depends_on('flac@1.3.1:', when='+external-libs')
+ depends_on('libogg@1.1.3:', when='+external-libs')
+ depends_on('libvorbis@1.2.3:', when='+external-libs')
+ depends_on('sqlite@3.2:', when='+sqlite')
+
+ def configure_args(self):
+ args = []
+
+ args += self.enable_or_disable('alsa')
+ args += self.enable_or_disable('external-libs')
+ args += self.enable_or_disable('sqlite')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/libspatialite/package.py b/var/spack/repos/builtin/packages/libspatialite/package.py
index e725fdfe0f..45fe1f6109 100644
--- a/var/spack/repos/builtin/packages/libspatialite/package.py
+++ b/var/spack/repos/builtin/packages/libspatialite/package.py
@@ -21,5 +21,5 @@ class Libspatialite(AutotoolsPackage):
depends_on('proj@:5')
depends_on('geos')
depends_on('freexl')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('libxml2')
diff --git a/var/spack/repos/builtin/packages/libssh2/package.py b/var/spack/repos/builtin/packages/libssh2/package.py
index 3cada3de90..cb3bcab1c3 100644
--- a/var/spack/repos/builtin/packages/libssh2/package.py
+++ b/var/spack/repos/builtin/packages/libssh2/package.py
@@ -28,3 +28,9 @@ class Libssh2(CMakePackage):
spec = self.spec
return [
'-DBUILD_SHARED_LIBS=%s' % ('YES' if '+shared' in spec else 'NO')]
+
+ @run_after('install')
+ def darwin_fix(self):
+ # The shared library is not installed correctly on Darwin; fix this
+ if self.spec.satisfies('platform=darwin'):
+ fix_darwin_install_name(self.prefix.lib)
diff --git a/var/spack/repos/builtin/packages/libtlx/package.py b/var/spack/repos/builtin/packages/libtlx/package.py
new file mode 100644
index 0000000000..619f90dfb5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libtlx/package.py
@@ -0,0 +1,28 @@
+# Copyright 2013-2020 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 Libtlx(CMakePackage):
+ """ tlx is a collection of C++ helpers and extensions universally needed,
+ but not found in the STL.
+ The most important design goals and conventions are:
+ 1) high modularity with as little dependencies between
+ modules as possible.
+ 2) attempt to never break existing interfaces.
+ 3) compile on all platforms with C++ - smartphones, supercomputers,
+ windows, etc.
+ 4) zero external dependencies: no additional libraries are required.
+ 5) warning and bug-freeness on all compilers.
+ 6) keep overhead down - small overall size such that is can be included
+ without bloating applications."""
+
+ homepage = "https://tlx.github.io/"
+ url = "https://github.com/tlx/tlx/archive/v0.5.20191212.tar.gz"
+
+ maintainers = ['fabratu']
+
+ version('0.5.20191212', sha256='5e67d3042a390dbb831b6d46437e3c7fadf738bff362aa7376b210b10ecd532d')
diff --git a/var/spack/repos/builtin/packages/libtree/package.py b/var/spack/repos/builtin/packages/libtree/package.py
new file mode 100644
index 0000000000..d2146d6b27
--- /dev/null
+++ b/var/spack/repos/builtin/packages/libtree/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 Libtree(CMakePackage):
+ """ldd as a tree with an option to bundle dependencies into a
+ single folder"""
+
+ homepage = "https://github.com/haampie/libtree"
+ url = "https://github.com/haampie/libtree/releases/download/v1.0.3/sources.tar.gz"
+
+ maintainers = ['haampie']
+
+ version('1.1.0', sha256='6cf36fb9a4c8c3af01855527d4931110732bb2d1c19be9334c689f1fd1c78536')
+ version('1.0.4', sha256='b15a54b6f388b8bd8636e288fcb581029f1e65353660387b0096a554ad8e9e45')
+ version('1.0.3', sha256='67ce886c191d50959a5727246cdb04af38872cd811c9ed4e3822f77a8f40b20b')
diff --git a/var/spack/repos/builtin/packages/libunistring/package.py b/var/spack/repos/builtin/packages/libunistring/package.py
index 94b1c24b98..9812fb32cb 100644
--- a/var/spack/repos/builtin/packages/libunistring/package.py
+++ b/var/spack/repos/builtin/packages/libunistring/package.py
@@ -19,7 +19,7 @@ class Libunistring(AutotoolsPackage, GNUMirrorPackage):
version('0.9.7', sha256='2e3764512aaf2ce598af5a38818c0ea23dedf1ff5460070d1b6cee5c3336e797')
version('0.9.6', sha256='2df42eae46743e3f91201bf5c100041540a7704e8b9abfd57c972b2d544de41b')
- depends_on('libiconv')
+ depends_on('iconv')
# glibc 2.28+ removed libio.h and thus _IO_ftrylockfile
patch('removed_libio.patch', when='@:0.9.9')
diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py
index b8e01f0a92..971840f5e0 100644
--- a/var/spack/repos/builtin/packages/libunwind/package.py
+++ b/var/spack/repos/builtin/packages/libunwind/package.py
@@ -13,9 +13,10 @@ class Libunwind(AutotoolsPackage):
homepage = "http://www.nongnu.org/libunwind/"
url = "http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz"
git = "https://github.com/libunwind/libunwind"
+ maintainers = ['mwkrentel']
- version('develop', branch='master')
- version('2018.10.12', commit='f551e16213c52169af8bda554e4051b756a169cc')
+ version('master', branch='master')
+ version('1.4-head', branch='v1.4-stable')
version('1.4-rc1', sha256='1928459139f048f9b4aca4bb5010540cb7718d44220835a2980b85429007fa9f')
version('1.3.1', sha256='43997a3939b6ccdf2f669b50fdb8a4d3205374728c2923ddc2354c65260214f8', preferred=True)
version('1.2.1', sha256='3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb')
@@ -24,14 +25,19 @@ class Libunwind(AutotoolsPackage):
variant('xz', default=False,
description='Support xz (lzma) compressed symbol tables.')
+ variant('zlib', default=False,
+ description='Support zlib compressed symbol tables (master '
+ 'branch only).')
+
# The libunwind releases contain the autotools generated files,
# but the git repo snapshots do not.
- depends_on('autoconf', type='build', when='@2018:')
- depends_on('automake', type='build', when='@2018:')
- depends_on('libtool', type='build', when='@2018:')
- depends_on('m4', type='build', when='@2018:')
+ depends_on('autoconf', type='build', when='@master,1.4-head')
+ depends_on('automake', type='build', when='@master,1.4-head')
+ depends_on('libtool', type='build', when='@master,1.4-head')
+ depends_on('m4', type='build', when='@master,1.4-head')
depends_on('xz', type='link', when='+xz')
+ depends_on('zlib', type='link', when='+zlib')
conflicts('platform=darwin',
msg='Non-GNU libunwind needs ELF libraries Darwin does not have')
@@ -49,4 +55,11 @@ class Libunwind(AutotoolsPackage):
else:
args.append('--disable-minidebuginfo')
+ # zlib support is only in the master branch (for now).
+ if spec.satisfies('@master'):
+ if '+zlib' in spec:
+ args.append('--enable-zlibdebuginfo')
+ else:
+ args.append('--disable-zlibdebuginfo')
+
return args
diff --git a/var/spack/repos/builtin/packages/libwebp/package.py b/var/spack/repos/builtin/packages/libwebp/package.py
index 9c5f56a804..fd8dee8e9e 100644
--- a/var/spack/repos/builtin/packages/libwebp/package.py
+++ b/var/spack/repos/builtin/packages/libwebp/package.py
@@ -14,7 +14,7 @@ class Libwebp(AutotoolsPackage):
homepage = "https://developers.google.com/speed/webp/"
url = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.0.3.tar.gz"
- version('1.0.3', sha256='082d114bcb18a0e2aafc3148d43367c39304f86bf18ba0b2e766447e111a4a91')
+ version('1.0.3', sha256='e20a07865c8697bba00aebccc6f54912d6bc333bb4d604e6b07491c1a226b34f')
variant('libwebpmux', default=False, description='Build libwebpmux')
variant('libwebpdemux', default=False, description='Build libwebpdemux')
diff --git a/var/spack/repos/builtin/packages/libwindowswm/package.py b/var/spack/repos/builtin/packages/libwindowswm/package.py
index 543cdad3ec..4c5d32d247 100644
--- a/var/spack/repos/builtin/packages/libwindowswm/package.py
+++ b/var/spack/repos/builtin/packages/libwindowswm/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Libwindowswm(AutotoolsPackage):
+class Libwindowswm(AutotoolsPackage, XorgPackage):
"""WindowsWM - Cygwin/X rootless window management extension.
WindowsWM is a simple library designed to interface with the
@@ -15,7 +15,7 @@ class Libwindowswm(AutotoolsPackage):
rootless mode."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libWindowsWM"
- url = "https://www.x.org/archive/individual/lib/libWindowsWM-1.0.1.tar.gz"
+ xorg_mirror_path = "lib/libWindowsWM-1.0.1.tar.gz"
version('1.0.1', sha256='94f9c0add3bad38ebd84bc43d854207c4deaaa74fb15339276e022546124b98a')
diff --git a/var/spack/repos/builtin/packages/libx11/package.py b/var/spack/repos/builtin/packages/libx11/package.py
index 0668ba7fad..924b3c1dbb 100644
--- a/var/spack/repos/builtin/packages/libx11/package.py
+++ b/var/spack/repos/builtin/packages/libx11/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libx11(AutotoolsPackage):
+class Libx11(AutotoolsPackage, XorgPackage):
"""libX11 - Core X11 protocol client library."""
homepage = "https://www.x.org/"
- url = "https://www.x.org/archive/individual/lib/libX11-1.6.7.tar.gz"
+ xorg_mirror_path = "lib/libX11-1.6.7.tar.gz"
version('1.6.7', sha256='f62ab88c2a87b55e1dc338726a55bb6ed8048084fe6a3294a7ae324ca45159d1')
version('1.6.5', sha256='3abce972ba62620611fab5b404dafb852da3da54e7c287831c30863011d28fb3')
diff --git a/var/spack/repos/builtin/packages/libxau/package.py b/var/spack/repos/builtin/packages/libxau/package.py
index 72650a35aa..f94b92841d 100644
--- a/var/spack/repos/builtin/packages/libxau/package.py
+++ b/var/spack/repos/builtin/packages/libxau/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Libxau(AutotoolsPackage):
+class Libxau(AutotoolsPackage, XorgPackage):
"""The libXau package contains a library implementing the X11
Authorization Protocol. This is useful for restricting client
access to the display."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libXau/"
- url = "https://www.x.org/archive/individual/lib/libXau-1.0.8.tar.gz"
+ xorg_mirror_path = "lib/libXau-1.0.8.tar.gz"
version('1.0.8', sha256='c343b4ef66d66a6b3e0e27aa46b37ad5cab0f11a5c565eafb4a1c7590bc71d7b')
diff --git a/var/spack/repos/builtin/packages/libxaw/package.py b/var/spack/repos/builtin/packages/libxaw/package.py
index 9a6dc204c1..efd5120ef0 100644
--- a/var/spack/repos/builtin/packages/libxaw/package.py
+++ b/var/spack/repos/builtin/packages/libxaw/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Libxaw(AutotoolsPackage):
+class Libxaw(AutotoolsPackage, XorgPackage):
"""Xaw is the X Athena Widget Set.
Xaw is a widget set based on the X Toolkit Intrinsics (Xt) Library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXaw"
- url = "https://www.x.org/archive/individual/lib/libXaw-1.0.13.tar.gz"
+ xorg_mirror_path = "lib/libXaw-1.0.13.tar.gz"
version('1.0.13', sha256='7e74ac3e5f67def549722ff0333d6e6276b8becd9d89615cda011e71238ab694')
version('1.0.12', sha256='e32abc68d759ffb643f842329838f8b6c157e31023cc91059aabf730e7222ad2')
diff --git a/var/spack/repos/builtin/packages/libxaw3d/package.py b/var/spack/repos/builtin/packages/libxaw3d/package.py
index 2d3e028e93..78f94d3423 100644
--- a/var/spack/repos/builtin/packages/libxaw3d/package.py
+++ b/var/spack/repos/builtin/packages/libxaw3d/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Libxaw3d(AutotoolsPackage):
+class Libxaw3d(AutotoolsPackage, XorgPackage):
"""Xaw3d is the X 3D Athena Widget Set.
Xaw3d is a widget set based on the X Toolkit Intrinsics (Xt) Library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXaw3d"
- url = "https://www.x.org/archive/individual/lib/libXaw3d-1.6.2.tar.gz"
+ xorg_mirror_path = "lib/libXaw3d-1.6.2.tar.gz"
version('1.6.2', sha256='847dab01aeac1448916e3b4edb4425594b3ac2896562d9c7141aa4ac6c898ba9')
diff --git a/var/spack/repos/builtin/packages/libxcomposite/package.py b/var/spack/repos/builtin/packages/libxcomposite/package.py
index 0f990ca424..f1c2301b49 100644
--- a/var/spack/repos/builtin/packages/libxcomposite/package.py
+++ b/var/spack/repos/builtin/packages/libxcomposite/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Libxcomposite(AutotoolsPackage):
+class Libxcomposite(AutotoolsPackage, XorgPackage):
"""libXcomposite - client library for the Composite extension to the
X11 protocol."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXcomposite"
- url = "https://www.x.org/archive/individual/lib/libXcomposite-0.4.4.tar.gz"
+ xorg_mirror_path = "lib/libXcomposite-0.4.4.tar.gz"
version('0.4.4', sha256='83c04649819c6f52cda1b0ce8bcdcc48ad8618428ad803fb07f20b802f1bdad1')
diff --git a/var/spack/repos/builtin/packages/libxcursor/package.py b/var/spack/repos/builtin/packages/libxcursor/package.py
index 6ff52d9e1d..4022033f1d 100644
--- a/var/spack/repos/builtin/packages/libxcursor/package.py
+++ b/var/spack/repos/builtin/packages/libxcursor/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxcursor(AutotoolsPackage):
+class Libxcursor(AutotoolsPackage, XorgPackage):
"""libXcursor - X Window System Cursor management library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXcursor"
- url = "https://www.x.org/archive/individual/lib/libXcursor-1.1.14.tar.gz"
+ xorg_mirror_path = "lib/libXcursor-1.1.14.tar.gz"
version('1.1.14', sha256='be0954faf274969ffa6d95b9606b9c0cfee28c13b6fc014f15606a0c8b05c17b')
diff --git a/var/spack/repos/builtin/packages/libxdamage/package.py b/var/spack/repos/builtin/packages/libxdamage/package.py
index dd722cb70a..6e14c62707 100644
--- a/var/spack/repos/builtin/packages/libxdamage/package.py
+++ b/var/spack/repos/builtin/packages/libxdamage/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxdamage(AutotoolsPackage):
+class Libxdamage(AutotoolsPackage, XorgPackage):
"""This package contains the library for the X Damage extension."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXdamage"
- url = "https://www.x.org/archive/individual/lib/libXdamage-1.1.4.tar.gz"
+ xorg_mirror_path = "lib/libXdamage-1.1.4.tar.gz"
version('1.1.4', sha256='4bb3e9d917f5f593df2277d452926ee6ad96de7b7cd1017cbcf4579fe5d3442b')
diff --git a/var/spack/repos/builtin/packages/libxdmcp/package.py b/var/spack/repos/builtin/packages/libxdmcp/package.py
index 0a6af544fc..a6d81dc34f 100644
--- a/var/spack/repos/builtin/packages/libxdmcp/package.py
+++ b/var/spack/repos/builtin/packages/libxdmcp/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxdmcp(AutotoolsPackage):
+class Libxdmcp(AutotoolsPackage, XorgPackage):
"""libXdmcp - X Display Manager Control Protocol library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXdmcp"
- url = "https://www.x.org/archive/individual/lib/libXdmcp-1.1.2.tar.gz"
+ xorg_mirror_path = "lib/libXdmcp-1.1.2.tar.gz"
version('1.1.2', sha256='6f7c7e491a23035a26284d247779174dedc67e34e93cc3548b648ffdb6fc57c0')
diff --git a/var/spack/repos/builtin/packages/libxevie/package.py b/var/spack/repos/builtin/packages/libxevie/package.py
index 4fc3187a1f..a9781f4848 100644
--- a/var/spack/repos/builtin/packages/libxevie/package.py
+++ b/var/spack/repos/builtin/packages/libxevie/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxevie(AutotoolsPackage):
+class Libxevie(AutotoolsPackage, XorgPackage):
"""Xevie - X Event Interception Extension (XEvIE)."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXevie"
- url = "https://www.x.org/archive/individual/lib/libXevie-1.0.3.tar.gz"
+ xorg_mirror_path = "lib/libXevie-1.0.3.tar.gz"
version('1.0.3', sha256='3759bb1f7fdade13ed99bfc05c0717bc42ce3f187e7da4eef80beddf5e461258')
diff --git a/var/spack/repos/builtin/packages/libxext/package.py b/var/spack/repos/builtin/packages/libxext/package.py
index 73f1ce77de..bd615f0fa7 100644
--- a/var/spack/repos/builtin/packages/libxext/package.py
+++ b/var/spack/repos/builtin/packages/libxext/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxext(AutotoolsPackage):
+class Libxext(AutotoolsPackage, XorgPackage):
"""libXext - library for common extensions to the X11 protocol."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXext"
- url = "https://www.x.org/archive/individual/lib/libXext-1.3.3.tar.gz"
+ xorg_mirror_path = "lib/libXext-1.3.3.tar.gz"
version('1.3.3', sha256='eb0b88050491fef4716da4b06a4d92b4fc9e76f880d6310b2157df604342cfe5')
diff --git a/var/spack/repos/builtin/packages/libxfixes/package.py b/var/spack/repos/builtin/packages/libxfixes/package.py
index 84b4caad8f..3a3d92a9e8 100644
--- a/var/spack/repos/builtin/packages/libxfixes/package.py
+++ b/var/spack/repos/builtin/packages/libxfixes/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Libxfixes(AutotoolsPackage):
+class Libxfixes(AutotoolsPackage, XorgPackage):
"""This package contains header files and documentation for the XFIXES
extension. Library and server implementations are separate."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXfixes"
- url = "https://www.x.org/archive/individual/lib/libXfixes-5.0.2.tar.gz"
+ xorg_mirror_path = "lib/libXfixes-5.0.2.tar.gz"
version('5.0.2', sha256='ad8df1ecf3324512b80ed12a9ca07556e561b14256d94216e67a68345b23c981')
diff --git a/var/spack/repos/builtin/packages/libxfont/package.py b/var/spack/repos/builtin/packages/libxfont/package.py
index 561371d523..ebaf8a3570 100644
--- a/var/spack/repos/builtin/packages/libxfont/package.py
+++ b/var/spack/repos/builtin/packages/libxfont/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Libxfont(AutotoolsPackage):
+class Libxfont(AutotoolsPackage, XorgPackage):
"""libXfont provides the core of the legacy X11 font system, handling the
index files (fonts.dir, fonts.alias, fonts.scale), the various font file
formats, and rasterizing them. It is used by the X servers, the
@@ -15,7 +15,7 @@ class Libxfont(AutotoolsPackage):
via either the new API's in libXft, or the legacy API's in libX11."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXfont"
- url = "https://www.x.org/archive/individual/lib/libXfont-1.5.2.tar.gz"
+ xorg_mirror_path = "lib/libXfont-1.5.2.tar.gz"
version('1.5.2', sha256='a7350c75171d03d06ae0d623e42240356d6d3e1ac7dfe606639bf20f0d653c93')
diff --git a/var/spack/repos/builtin/packages/libxfont2/package.py b/var/spack/repos/builtin/packages/libxfont2/package.py
index 7c2de91db4..2cd8d5c3de 100644
--- a/var/spack/repos/builtin/packages/libxfont2/package.py
+++ b/var/spack/repos/builtin/packages/libxfont2/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Libxfont2(AutotoolsPackage):
+class Libxfont2(AutotoolsPackage, XorgPackage):
"""libXfont provides the core of the legacy X11 font system, handling the
index files (fonts.dir, fonts.alias, fonts.scale), the various font file
formats, and rasterizing them. It is used by the X servers, the
@@ -15,7 +15,7 @@ class Libxfont2(AutotoolsPackage):
via either the new API's in libXft, or the legacy API's in libX11."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXfont"
- url = "https://www.x.org/archive/individual/lib/libXfont2-2.0.1.tar.gz"
+ xorg_mirror_path = "lib/libXfont2-2.0.1.tar.gz"
version('2.0.1', sha256='381b6b385a69343df48a082523c856aed9042fbbc8ee0a6342fb502e4321230a')
diff --git a/var/spack/repos/builtin/packages/libxfontcache/package.py b/var/spack/repos/builtin/packages/libxfontcache/package.py
index f764df19b1..6ee00368ec 100644
--- a/var/spack/repos/builtin/packages/libxfontcache/package.py
+++ b/var/spack/repos/builtin/packages/libxfontcache/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxfontcache(AutotoolsPackage):
+class Libxfontcache(AutotoolsPackage, XorgPackage):
"""Xfontcache - X-TrueType font cache extension client library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXfontcache"
- url = "https://www.x.org/archive/individual/lib/libXfontcache-1.0.5.tar.gz"
+ xorg_mirror_path = "lib/libXfontcache-1.0.5.tar.gz"
version('1.0.5', sha256='fdba75307a0983d2566554e0e9effa7079551f1b7b46e8de642d067998619659')
diff --git a/var/spack/repos/builtin/packages/libxft/package.py b/var/spack/repos/builtin/packages/libxft/package.py
index 144450e2ba..9cbb296856 100644
--- a/var/spack/repos/builtin/packages/libxft/package.py
+++ b/var/spack/repos/builtin/packages/libxft/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Libxft(AutotoolsPackage):
+class Libxft(AutotoolsPackage, XorgPackage):
"""X FreeType library.
Xft version 2.1 was the first stand alone release of Xft, a library that
@@ -14,7 +14,7 @@ class Libxft(AutotoolsPackage):
uses fontconfig to locate fonts so it has no configuration files."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXft"
- url = "https://www.x.org/archive/individual/lib/libXft-2.3.2.tar.gz"
+ xorg_mirror_path = "lib/libXft-2.3.2.tar.gz"
version('2.3.2', sha256='26cdddcc70b187833cbe9dc54df1864ba4c03a7175b2ca9276de9f05dce74507')
diff --git a/var/spack/repos/builtin/packages/libxi/package.py b/var/spack/repos/builtin/packages/libxi/package.py
index e1cbac1433..7464deff73 100644
--- a/var/spack/repos/builtin/packages/libxi/package.py
+++ b/var/spack/repos/builtin/packages/libxi/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxi(AutotoolsPackage):
+class Libxi(AutotoolsPackage, XorgPackage):
"""libXi - library for the X Input Extension."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXi"
- url = "https://www.x.org/archive/individual/lib/libXi-1.7.6.tar.gz"
+ xorg_mirror_path = "lib/libXi-1.7.6.tar.gz"
version('1.7.6', sha256='4e88fa7decd287e58140ea72238f8d54e4791de302938c83695fc0c9ac102b7e')
diff --git a/var/spack/repos/builtin/packages/libxinerama/package.py b/var/spack/repos/builtin/packages/libxinerama/package.py
index 374b151d17..3855fb97de 100644
--- a/var/spack/repos/builtin/packages/libxinerama/package.py
+++ b/var/spack/repos/builtin/packages/libxinerama/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxinerama(AutotoolsPackage):
+class Libxinerama(AutotoolsPackage, XorgPackage):
"""libXinerama - API for Xinerama extension to X11 Protocol."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXinerama"
- url = "https://www.x.org/archive/individual/lib/libXinerama-1.1.3.tar.gz"
+ xorg_mirror_path = "lib/libXinerama-1.1.3.tar.gz"
version('1.1.3', sha256='0ba243222ae5aba4c6a3d7a394c32c8b69220a6872dbb00b7abae8753aca9a44')
diff --git a/var/spack/repos/builtin/packages/libxkbfile/package.py b/var/spack/repos/builtin/packages/libxkbfile/package.py
index ac28aeb1b4..504709f808 100644
--- a/var/spack/repos/builtin/packages/libxkbfile/package.py
+++ b/var/spack/repos/builtin/packages/libxkbfile/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxkbfile(AutotoolsPackage):
+class Libxkbfile(AutotoolsPackage, XorgPackage):
"""XKB file handling routines."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libxkbfile"
- url = "https://www.x.org/archive/individual/lib/libxkbfile-1.0.9.tar.gz"
+ xorg_mirror_path = "lib/libxkbfile-1.0.9.tar.gz"
version('1.0.9', sha256='95df50570f38e720fb79976f603761ae6eff761613eb56f258c3cb6bab4fd5e3')
diff --git a/var/spack/repos/builtin/packages/libxkbui/package.py b/var/spack/repos/builtin/packages/libxkbui/package.py
index 3e0c734425..8b969b9d35 100644
--- a/var/spack/repos/builtin/packages/libxkbui/package.py
+++ b/var/spack/repos/builtin/packages/libxkbui/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxkbui(AutotoolsPackage):
+class Libxkbui(AutotoolsPackage, XorgPackage):
"""X.org libxkbui library."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libxkbui/"
- url = "https://www.x.org/archive/individual/lib/libxkbui-1.0.2.tar.gz"
+ xorg_mirror_path = "lib/libxkbui-1.0.2.tar.gz"
version('1.0.2', sha256='196ab4867f3754caae34e51a663cbce26b4af819db3960f1fc4fb42c6a3c535d')
diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py
index 8c91852ae3..8c024854ea 100644
--- a/var/spack/repos/builtin/packages/libxml2/package.py
+++ b/var/spack/repos/builtin/packages/libxml2/package.py
@@ -23,7 +23,7 @@ class Libxml2(AutotoolsPackage):
variant('python', default=False, description='Enable Python support')
depends_on('pkgconfig@0.9.0:', type='build')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('zlib')
depends_on('xz')
@@ -49,7 +49,7 @@ class Libxml2(AutotoolsPackage):
spec = self.spec
args = ['--with-lzma={0}'.format(spec['xz'].prefix),
- '--with-iconv={0}'.format(spec['libiconv'].prefix)]
+ '--with-iconv={0}'.format(spec['iconv'].prefix)]
if '+python' in spec:
args.extend([
diff --git a/var/spack/repos/builtin/packages/libxmu/package.py b/var/spack/repos/builtin/packages/libxmu/package.py
index 9f7904404d..d53732752e 100644
--- a/var/spack/repos/builtin/packages/libxmu/package.py
+++ b/var/spack/repos/builtin/packages/libxmu/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Libxmu(AutotoolsPackage):
+class Libxmu(AutotoolsPackage, XorgPackage):
"""This library contains miscellaneous utilities and is not part of the
Xlib standard. It contains routines which only use public interfaces so
that it may be layered on top of any proprietary implementation of Xlib
or Xt."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXmu"
- url = "https://www.x.org/archive/individual/lib/libXmu-1.1.2.tar.gz"
+ xorg_mirror_path = "lib/libXmu-1.1.2.tar.gz"
version('1.1.2', sha256='e5fd4bacef068f9509b8226017205040e38d3fba8d2de55037200e7176c13dba')
diff --git a/var/spack/repos/builtin/packages/libxp/package.py b/var/spack/repos/builtin/packages/libxp/package.py
index ff590a14cf..d8c41790de 100644
--- a/var/spack/repos/builtin/packages/libxp/package.py
+++ b/var/spack/repos/builtin/packages/libxp/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxp(AutotoolsPackage):
+class Libxp(AutotoolsPackage, XorgPackage):
"""libXp - X Print Client Library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXp"
- url = "https://www.x.org/archive/individual/lib/libXp-1.0.3.tar.gz"
+ xorg_mirror_path = "lib/libXp-1.0.3.tar.gz"
version('1.0.3', sha256='f6b8cc4ef05d3eafc9ef5fc72819dd412024b4ed60197c0d5914758125817e9c')
diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py
index 0e73980d19..48a78dfe1c 100644
--- a/var/spack/repos/builtin/packages/libxpm/package.py
+++ b/var/spack/repos/builtin/packages/libxpm/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxpm(AutotoolsPackage):
+class Libxpm(AutotoolsPackage, XorgPackage):
"""libXpm - X Pixmap (XPM) image file format library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXpm"
- url = "https://www.x.org/archive//individual/lib/libXpm-3.5.12.tar.gz"
+ xorg_mirror_path = "lib/libXpm-3.5.12.tar.gz"
version('3.5.12', sha256='2523acc780eac01db5163267b36f5b94374bfb0de26fc0b5a7bee76649fd8501')
version('3.5.11', sha256='53ddf924441b7ed2de994d4934358c13d9abf4828b1b16e1255ade5032b31df7')
diff --git a/var/spack/repos/builtin/packages/libxpresent/package.py b/var/spack/repos/builtin/packages/libxpresent/package.py
index 0fddba389a..1db0ccac41 100644
--- a/var/spack/repos/builtin/packages/libxpresent/package.py
+++ b/var/spack/repos/builtin/packages/libxpresent/package.py
@@ -6,19 +6,24 @@
from spack import *
-class Libxpresent(AutotoolsPackage):
+class Libxpresent(AutotoolsPackage, XorgPackage):
"""This package contains header files and documentation for the Present
extension. Library and server implementations are separate."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libXpresent/"
- url = "https://www.x.org/archive/individual/lib/libXpresent-1.0.0.tar.gz"
+ xorg_mirror_path = "lib/libXpresent-1.0.0.tar.gz"
version('1.0.0', sha256='92f1bdfb67ae2ffcdb25ad72c02cac5e4912dc9bc792858240df1d7f105946fa')
- depends_on('libx11')
+ depends_on('libx11', type='link')
+ depends_on('libxext', type='link')
+ depends_on('libxfixes', type='link')
+ depends_on('libxrandr', type='link')
- depends_on('xproto', type='build')
- depends_on('presentproto@1.0:', type='build')
- depends_on('xextproto', type='build')
+ depends_on('xproto', type='link')
+ depends_on('presentproto@1.0:', type='link')
+ depends_on('xextproto', type='link')
+ depends_on('fixesproto', type='link')
+ depends_on('randrproto', type='link')
depends_on('pkgconfig', type='build')
depends_on('util-macros', type='build')
diff --git a/var/spack/repos/builtin/packages/libxprintapputil/package.py b/var/spack/repos/builtin/packages/libxprintapputil/package.py
index 888861bca9..da2e116640 100644
--- a/var/spack/repos/builtin/packages/libxprintapputil/package.py
+++ b/var/spack/repos/builtin/packages/libxprintapputil/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxprintapputil(AutotoolsPackage):
+class Libxprintapputil(AutotoolsPackage, XorgPackage):
"""Xprint application utility routines."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libXprintAppUtil/"
- url = "https://www.x.org/archive/individual/lib/libXprintAppUtil-1.0.1.tar.gz"
+ xorg_mirror_path = "lib/libXprintAppUtil-1.0.1.tar.gz"
version('1.0.1', sha256='5af3939ffe15508b942bc1e325a29a95b1c85e8900a5f65a896101e63048bbf7')
diff --git a/var/spack/repos/builtin/packages/libxprintutil/package.py b/var/spack/repos/builtin/packages/libxprintutil/package.py
index 5e28a23109..bb39a3b8bb 100644
--- a/var/spack/repos/builtin/packages/libxprintutil/package.py
+++ b/var/spack/repos/builtin/packages/libxprintutil/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxprintutil(AutotoolsPackage):
+class Libxprintutil(AutotoolsPackage, XorgPackage):
"""Xprint application utility routines."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libXprintUtil/"
- url = "https://www.x.org/archive/individual/lib/libXprintUtil-1.0.1.tar.gz"
+ xorg_mirror_path = "lib/libXprintUtil-1.0.1.tar.gz"
version('1.0.1', sha256='220924216f98ef8f7aa4cff33629edb1171ad10f8ea302a1eb85055545d4d195')
diff --git a/var/spack/repos/builtin/packages/libxrandr/package.py b/var/spack/repos/builtin/packages/libxrandr/package.py
index bb49275643..405da4bbd0 100644
--- a/var/spack/repos/builtin/packages/libxrandr/package.py
+++ b/var/spack/repos/builtin/packages/libxrandr/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxrandr(AutotoolsPackage):
+class Libxrandr(AutotoolsPackage, XorgPackage):
"""libXrandr - X Resize, Rotate and Reflection extension library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXrandr"
- url = "https://www.x.org/archive/individual/lib/libXrandr-1.5.0.tar.gz"
+ xorg_mirror_path = "lib/libXrandr-1.5.0.tar.gz"
version('1.5.0', sha256='1b594a149e6b124aab7149446f2fd886461e2935eca8dca43fe83a70cf8ec451')
diff --git a/var/spack/repos/builtin/packages/libxrender/package.py b/var/spack/repos/builtin/packages/libxrender/package.py
index d5284fa222..c1dcd0b472 100644
--- a/var/spack/repos/builtin/packages/libxrender/package.py
+++ b/var/spack/repos/builtin/packages/libxrender/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxrender(AutotoolsPackage):
+class Libxrender(AutotoolsPackage, XorgPackage):
"""libXrender - library for the Render Extension to the X11 protocol."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXrender"
- url = "https://www.x.org/archive/individual/lib/libXrender-0.9.10.tar.gz"
+ xorg_mirror_path = "lib/libXrender-0.9.10.tar.gz"
version('0.9.10', sha256='770527cce42500790433df84ec3521e8bf095dfe5079454a92236494ab296adf')
version('0.9.9', sha256='beeac64ff8d225f775019eb7c688782dee9f4cc7b412a65538f8dde7be4e90fe')
diff --git a/var/spack/repos/builtin/packages/libxres/package.py b/var/spack/repos/builtin/packages/libxres/package.py
index 73690b53b3..a1a16b87a4 100644
--- a/var/spack/repos/builtin/packages/libxres/package.py
+++ b/var/spack/repos/builtin/packages/libxres/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxres(AutotoolsPackage):
+class Libxres(AutotoolsPackage, XorgPackage):
"""libXRes - X-Resource extension client library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXRes"
- url = "https://www.x.org/archive/individual/lib/libXres-1.0.7.tar.gz"
+ xorg_mirror_path = "lib/libXres-1.0.7.tar.gz"
version('1.0.7', sha256='488c9fa14b38f794d1f019fe62e6b06514a39f1a7538e55ece8faf22482fefcd')
diff --git a/var/spack/repos/builtin/packages/libxscrnsaver/package.py b/var/spack/repos/builtin/packages/libxscrnsaver/package.py
index c8a659b872..f00dad3f91 100644
--- a/var/spack/repos/builtin/packages/libxscrnsaver/package.py
+++ b/var/spack/repos/builtin/packages/libxscrnsaver/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxscrnsaver(AutotoolsPackage):
+class Libxscrnsaver(AutotoolsPackage, XorgPackage):
"""XScreenSaver - X11 Screen Saver extension client library"""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXScrnSaver"
- url = "https://www.x.org/archive/individual/lib/libXScrnSaver-1.2.2.tar.gz"
+ xorg_mirror_path = "lib/libXScrnSaver-1.2.2.tar.gz"
version('1.2.2', sha256='e12ba814d44f7b58534c0d8521e2d4574f7bf2787da405de4341c3b9f4cc8d96')
diff --git a/var/spack/repos/builtin/packages/libxshmfence/package.py b/var/spack/repos/builtin/packages/libxshmfence/package.py
index df437baf14..f3cd1658b5 100644
--- a/var/spack/repos/builtin/packages/libxshmfence/package.py
+++ b/var/spack/repos/builtin/packages/libxshmfence/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Libxshmfence(AutotoolsPackage):
+class Libxshmfence(AutotoolsPackage, XorgPackage):
"""libxshmfence - Shared memory 'SyncFence' synchronization primitive.
This library offers a CPU-based synchronization primitive compatible
@@ -14,7 +14,7 @@ class Libxshmfence(AutotoolsPackage):
using file descriptor passing."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libxshmfence/"
- url = "https://www.x.org/archive/individual/lib/libxshmfence-1.3.tar.bz2"
+ xorg_mirror_path = "lib/libxshmfence-1.3.tar.bz2"
version('1.3', sha256='b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7')
version('1.2', sha256='d21b2d1fd78c1efbe1f2c16dae1cb23f8fd231dcf891465b8debe636a9054b0c')
diff --git a/var/spack/repos/builtin/packages/libxslt/package.py b/var/spack/repos/builtin/packages/libxslt/package.py
index 7cdb0e41b2..5da6272d83 100644
--- a/var/spack/repos/builtin/packages/libxslt/package.py
+++ b/var/spack/repos/builtin/packages/libxslt/package.py
@@ -26,7 +26,7 @@ class Libxslt(AutotoolsPackage):
variant('python', default=False, description='Build Python bindings')
depends_on('pkgconfig@0.9.0:', type='build')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('libxml2')
depends_on('libxml2+python', when='+python')
depends_on('xz')
diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py
index 070b24396f..12cfc32dfd 100644
--- a/var/spack/repos/builtin/packages/libxsmm/package.py
+++ b/var/spack/repos/builtin/packages/libxsmm/package.py
@@ -14,10 +14,11 @@ class Libxsmm(MakefilePackage):
and deep learning primitives."""
homepage = 'https://github.com/hfp/libxsmm'
- url = 'https://github.com/hfp/libxsmm/archive/1.14.tar.gz'
+ url = 'https://github.com/hfp/libxsmm/archive/1.15.tar.gz'
git = 'https://github.com/hfp/libxsmm.git'
- version('develop', branch='master')
+ version('master', branch='master')
+ version('1.15', sha256='499e5adfbf90cd3673309243c2b56b237d54f86db2437e1ac06c8746b55ab91c')
version('1.14', sha256='9c0af4509ea341d1ee2c6c19fc6f19289318c3bd4b17844efeb9e7f9691abf76')
version('1.13', sha256='47c034e169820a9633770eece0e0fdd8d4a744e09b81da2af8c2608a4625811e')
version('1.12.1', sha256='3687fb98da00ba92cd50b5f0d18b39912c7886dad3856843573aee0cb34e9791')
diff --git a/var/spack/repos/builtin/packages/libxt/package.py b/var/spack/repos/builtin/packages/libxt/package.py
index 2cb198b7f5..7554224e53 100644
--- a/var/spack/repos/builtin/packages/libxt/package.py
+++ b/var/spack/repos/builtin/packages/libxt/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxt(AutotoolsPackage):
+class Libxt(AutotoolsPackage, XorgPackage):
"""libXt - X Toolkit Intrinsics library."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXt"
- url = "https://www.x.org/archive/individual/lib/libXt-1.1.5.tar.gz"
+ xorg_mirror_path = "lib/libXt-1.1.5.tar.gz"
version('1.1.5', sha256='b59bee38a9935565fa49dc1bfe84cb30173e2e07e1dcdf801430d4b54eb0caa3')
diff --git a/var/spack/repos/builtin/packages/libxtrap/package.py b/var/spack/repos/builtin/packages/libxtrap/package.py
index efb44c34eb..d729ab5826 100644
--- a/var/spack/repos/builtin/packages/libxtrap/package.py
+++ b/var/spack/repos/builtin/packages/libxtrap/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Libxtrap(AutotoolsPackage):
+class Libxtrap(AutotoolsPackage, XorgPackage):
"""libXTrap is the Xlib-based client API for the DEC-XTRAP extension.
XTrap was a proposed standard extension for X11R5 which facilitated the
@@ -19,7 +19,7 @@ class Libxtrap(AutotoolsPackage):
15 years, and uses of it should be quite rare."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXTrap"
- url = "https://www.x.org/archive/individual/lib/libXTrap-1.0.1.tar.gz"
+ xorg_mirror_path = "lib/libXTrap-1.0.1.tar.gz"
version('1.0.1', sha256='db748e299dcc9af68428795b898a4a96cf806f79b75786781136503e4fce5e17')
diff --git a/var/spack/repos/builtin/packages/libxtst/package.py b/var/spack/repos/builtin/packages/libxtst/package.py
index e2f82f909a..447c111b54 100644
--- a/var/spack/repos/builtin/packages/libxtst/package.py
+++ b/var/spack/repos/builtin/packages/libxtst/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Libxtst(AutotoolsPackage):
+class Libxtst(AutotoolsPackage, XorgPackage):
"""libXtst provides the Xlib-based client API for the XTEST & RECORD
extensions.
@@ -19,7 +19,7 @@ class Libxtst(AutotoolsPackage):
core X protocol and arbitrary X extension protocol."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXtst"
- url = "https://www.x.org/archive/individual/lib/libXtst-1.2.2.tar.gz"
+ xorg_mirror_path = "lib/libXtst-1.2.2.tar.gz"
version('1.2.2', sha256='221838960c7b9058cd6795c1c3ee8e25bae1c68106be314bc3036a4f26be0e6c')
diff --git a/var/spack/repos/builtin/packages/libxv/package.py b/var/spack/repos/builtin/packages/libxv/package.py
index da2a97713a..fdb3b6cf7f 100644
--- a/var/spack/repos/builtin/packages/libxv/package.py
+++ b/var/spack/repos/builtin/packages/libxv/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Libxv(AutotoolsPackage):
+class Libxv(AutotoolsPackage, XorgPackage):
"""libXv - library for the X Video (Xv) extension to the
X Window System."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXv"
- url = "https://www.x.org/archive/individual/lib/libXv-1.0.10.tar.gz"
+ xorg_mirror_path = "lib/libXv-1.0.10.tar.gz"
version('1.0.10', sha256='89a664928b625558268de81c633e300948b3752b0593453d7815f8775bab5293')
diff --git a/var/spack/repos/builtin/packages/libxvmc/package.py b/var/spack/repos/builtin/packages/libxvmc/package.py
index 7987677f8f..51be35577e 100644
--- a/var/spack/repos/builtin/packages/libxvmc/package.py
+++ b/var/spack/repos/builtin/packages/libxvmc/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxvmc(AutotoolsPackage):
+class Libxvmc(AutotoolsPackage, XorgPackage):
"""X.org libXvMC library."""
homepage = "https://cgit.freedesktop.org/xorg/lib/libXvMC"
- url = "https://www.x.org/archive/individual/lib/libXvMC-1.0.9.tar.gz"
+ xorg_mirror_path = "lib/libXvMC-1.0.9.tar.gz"
version('1.0.9', sha256='090f087fe65b30b3edfb996c79ff6cf299e473fb25e955fff1c4e9cb624da2c2')
diff --git a/var/spack/repos/builtin/packages/libxxf86dga/package.py b/var/spack/repos/builtin/packages/libxxf86dga/package.py
index 8a6645d729..74c1ec3c5c 100644
--- a/var/spack/repos/builtin/packages/libxxf86dga/package.py
+++ b/var/spack/repos/builtin/packages/libxxf86dga/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxxf86dga(AutotoolsPackage):
+class Libxxf86dga(AutotoolsPackage, XorgPackage):
"""libXxf86dga - Client library for the XFree86-DGA extension."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86dga"
- url = "https://www.x.org/archive/individual/lib/libXxf86dga-1.1.4.tar.gz"
+ xorg_mirror_path = "lib/libXxf86dga-1.1.4.tar.gz"
version('1.1.4', sha256='e6361620a15ceba666901ca8423e8be0c6ed0271a7088742009160349173766b')
diff --git a/var/spack/repos/builtin/packages/libxxf86misc/package.py b/var/spack/repos/builtin/packages/libxxf86misc/package.py
index 5c22536c0e..59f263e497 100644
--- a/var/spack/repos/builtin/packages/libxxf86misc/package.py
+++ b/var/spack/repos/builtin/packages/libxxf86misc/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxxf86misc(AutotoolsPackage):
+class Libxxf86misc(AutotoolsPackage, XorgPackage):
"""libXxf86misc - Extension library for the XFree86-Misc X extension."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86misc"
- url = "https://www.x.org/archive/individual/lib/libXxf86misc-1.0.3.tar.gz"
+ xorg_mirror_path = "lib/libXxf86misc-1.0.3.tar.gz"
version('1.0.3', sha256='358f692f793af00f6ef4c7a8566c1bcaeeea37e417337db3f519522cc1df3946')
diff --git a/var/spack/repos/builtin/packages/libxxf86vm/package.py b/var/spack/repos/builtin/packages/libxxf86vm/package.py
index b13234b768..338fb7b0b3 100644
--- a/var/spack/repos/builtin/packages/libxxf86vm/package.py
+++ b/var/spack/repos/builtin/packages/libxxf86vm/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Libxxf86vm(AutotoolsPackage):
+class Libxxf86vm(AutotoolsPackage, XorgPackage):
"""libXxf86vm - Extension library for the XFree86-VidMode X extension."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86vm"
- url = "https://www.x.org/archive/individual/lib/libXxf86vm-1.1.4.tar.gz"
+ xorg_mirror_path = "lib/libXxf86vm-1.1.4.tar.gz"
version('1.1.4', sha256='5108553c378a25688dcb57dca383664c36e293d60b1505815f67980ba9318a99')
diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py
index c24d5e720a..8556fb0d8e 100644
--- a/var/spack/repos/builtin/packages/likwid/package.py
+++ b/var/spack/repos/builtin/packages/likwid/package.py
@@ -19,7 +19,9 @@ class Likwid(Package):
homepage = "https://github.com/RRZE-HPC/likwid"
url = "https://github.com/RRZE-HPC/likwid/archive/v5.0.0.tar.gz"
git = "https://github.com/RRZE-HPC/likwid.git"
+ maintainers = ['TomTheBear']
+ version('5.0.1', sha256='3757b0cb66e8af0116f9288c7f90543acbd8e2af8f72f77aef447ca2b3e76453')
version('5.0.0', sha256='26623f5a1a5fec19d798f0114774a5293d1c93a148538b9591a13e50930fa41e')
version('4.3.4', sha256='5c0d1c66b25dac8292a02232f06454067f031a238f010c62f40ef913c6609a83')
version('4.3.3', sha256='a681378cd66c1679ca840fb5fac3136bfec93c01b3d78cc1d00a641db325a9a3')
@@ -40,8 +42,6 @@ class Likwid(Package):
depends_on('perl', type=('build', 'run'))
- supported_compilers = {'clang': 'CLANG', 'gcc': 'GCC', 'intel': 'ICC'}
-
def patch(self):
files = glob.glob('perl/*.*') + glob.glob('bench/perl/*.*')
@@ -59,13 +59,18 @@ class Likwid(Package):
*files)
def install(self, spec, prefix):
- if self.compiler.name not in self.supported_compilers:
+ supported_compilers = {'clang': 'CLANG', 'gcc': 'GCC', 'intel': 'ICC'}
+ if spec.target.family == 'aarch64':
+ supported_compilers = {'gcc': 'GCCARMv8', 'clang': 'ARMCLANG'}
+ elif spec.target.family == 'ppc64' or spec.target.family == 'ppc64le':
+ supported_compilers = {'gcc': 'GCCPOWER'}
+ if self.compiler.name not in supported_compilers:
raise RuntimeError('{0} is not a supported compiler \
to compile Likwid'.format(self.compiler.name))
filter_file('^COMPILER .*',
'COMPILER = ' +
- self.supported_compilers[self.compiler.name],
+ supported_compilers[self.compiler.name],
'config.mk')
filter_file('^PREFIX .*',
'PREFIX = ' +
diff --git a/var/spack/repos/builtin/packages/listres/package.py b/var/spack/repos/builtin/packages/listres/package.py
index 3adbe696a3..98b2ab4f1b 100644
--- a/var/spack/repos/builtin/packages/listres/package.py
+++ b/var/spack/repos/builtin/packages/listres/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Listres(AutotoolsPackage):
+class Listres(AutotoolsPackage, XorgPackage):
"""The listres program generates a list of X resources for a widget
in an X client written using a toolkit based on libXt."""
homepage = "http://cgit.freedesktop.org/xorg/app/listres"
- url = "https://www.x.org/archive/individual/app/listres-1.0.3.tar.gz"
+ xorg_mirror_path = "app/listres-1.0.3.tar.gz"
version('1.0.3', sha256='87d5698b8aa4d841e45e6556932c9914210cbd8b10003d664b31185b087981be')
diff --git a/var/spack/repos/builtin/packages/lksctp-tools/package.py b/var/spack/repos/builtin/packages/lksctp-tools/package.py
new file mode 100644
index 0000000000..ca168aa320
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lksctp-tools/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 LksctpTools(AutotoolsPackage):
+ """A Linux SCTP helper library"""
+
+ homepage = "https://github.com/sctp/lksctp-tools"
+ url = "https://github.com/sctp/lksctp-tools/archive/v1.0.18.tar.gz"
+
+ version('1.0.18', sha256='3e9ab5b3844a8b65fc8152633aafe85f406e6da463e53921583dfc4a443ff03a')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py
index 1644a8e750..3057184882 100644
--- a/var/spack/repos/builtin/packages/llvm/package.py
+++ b/var/spack/repos/builtin/packages/llvm/package.py
@@ -7,7 +7,7 @@ from spack import *
import sys
-class Llvm(CMakePackage):
+class Llvm(CMakePackage, CudaPackage):
"""The LLVM Project is a collection of modular and reusable compiler and
toolchain technologies. Despite its name, LLVM has little to do
with traditional virtual machines, though it does provide helpful
@@ -15,14 +15,17 @@ class Llvm(CMakePackage):
is not an acronym; it is the full name of the project.
"""
- homepage = 'http://llvm.org/'
- url = "https://github.com/llvm/llvm-project/archive/llvmorg-7.1.0.tar.gz"
- list_url = 'http://releases.llvm.org/download.html'
- git = 'https://github.com/llvm/llvm-project'
+ homepage = "http://llvm.org/"
+ url = "https://github.com/llvm/llvm-project/archive/llvmorg-7.1.0.tar.gz"
+ list_url = "http://releases.llvm.org/download.html"
+ git = "https://github.com/llvm/llvm-project"
+ maintainers = ['trws', 'naromero77']
- family = 'compiler' # Used by lmod
+ family = "compiler" # Used by lmod
+ # fmt: off
version('master', branch='master')
+ version('10.0.0', sha256='b81c96d2f8f40dc61b14a167513d87c0d813aae0251e06e11ae8a4384ca15451')
version('9.0.1', sha256='be7b034641a5fda51ffca7f5d840b1a768737779f75f7c4fd18fe2d37820289a')
version('9.0.0', sha256='7807fac25330e24e9955ca46cd855dd34bbc9cc4fdba8322366206654d1036f2')
version('8.0.0', sha256='d81238b4a69e93e29f74ce56f8107cbfcf0c7d7b40510b7879e98cc031e25167')
@@ -43,123 +46,160 @@ class Llvm(CMakePackage):
version('3.7.0', sha256='dc00bc230be2006fb87b84f6fe4800ca28bc98e6692811a98195da53c9cb28c6')
version('3.6.2', sha256='f75d703a388ba01d607f9cf96180863a5e4a106827ade17b221d43e6db20778a')
version('3.5.1', sha256='5d739684170d5b2b304e4fb521532d5c8281492f71e1a8568187bfa38eb5909d')
+ # fmt: on
# NOTE: The debug version of LLVM is an order of magnitude larger than
# the release version, and may take up 20-30 GB of space. If you want
# to save space, build with `build_type=Release`.
- variant('clang', default=True,
- description="Build the LLVM C/C++/Objective-C compiler frontend")
-
- # TODO: The current version of this package unconditionally disables CUDA.
- # Better would be to add a "cuda" variant that:
- # - Adds dependency on the "cuda" package when enabled
- # - Sets the necessary CMake flags when enabled
- # - Disables CUDA (as this current version does) only when the
- # variant is also disabled.
-
- # variant('cuda', default=False,
- # description="Build the LLVM with CUDA features enabled")
-
- variant('lldb', default=True, description="Build the LLVM debugger")
- variant('lld', default=True, description="Build the LLVM linker")
- variant('internal_unwind', default=True,
- description="Build the libcxxabi libunwind")
- variant('polly', default=True,
- description="Build the LLVM polyhedral optimization plugin, "
- "only builds for 3.7.0+")
- variant('libcxx', default=True,
- description="Build the LLVM C++ standard library")
- variant('compiler-rt', default=True,
- description="Build LLVM compiler runtime, including sanitizers")
- variant('gold', default=(sys.platform != 'darwin'),
- description="Add support for LTO with the gold linker plugin")
- variant('shared_libs', default=False,
- description="Build all components as shared libraries, faster, "
- "less memory to build, less stable")
- variant('link_dylib', default=False,
- description="Build and link the libLLVM shared library rather "
- "than static")
- variant('all_targets', default=False,
- description="Build all supported targets, default targets "
- "<current arch>,NVPTX,AMDGPU,CppBackend")
- variant('build_type', default='Release',
- description='CMake build type',
- values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'))
- variant('omp_tsan', default=False,
- description="Build with OpenMP capable thread sanitizer")
- variant('python', default=False, description="Install python bindings")
-
- extends('python', when='+python')
+ variant(
+ "clang",
+ default=True,
+ description="Build the LLVM C/C++/Objective-C compiler frontend",
+ )
+ variant(
+ "omp_debug",
+ default=False,
+ description="Include debugging code in OpenMP runtime libraries",
+ )
+ variant("lldb", default=True, description="Build the LLVM debugger")
+ variant("lld", default=True, description="Build the LLVM linker")
+ variant("mlir", default=False, description="Build with MLIR support")
+ variant(
+ "internal_unwind",
+ default=True,
+ description="Build the libcxxabi libunwind",
+ )
+ variant(
+ "polly",
+ default=True,
+ description="Build the LLVM polyhedral optimization plugin, "
+ "only builds for 3.7.0+",
+ )
+ variant(
+ "libcxx",
+ default=True,
+ description="Build the LLVM C++ standard library",
+ )
+ variant(
+ "compiler-rt",
+ default=True,
+ description="Build LLVM compiler runtime, including sanitizers",
+ )
+ variant(
+ "gold",
+ default=(sys.platform != "darwin"),
+ description="Add support for LTO with the gold linker plugin",
+ )
+ variant(
+ "split_dwarf",
+ default=False,
+ description="Build with split dwarf information",
+ )
+ variant(
+ "shared_libs",
+ default=False,
+ description="Build all components as shared libraries, faster, "
+ "less memory to build, less stable",
+ )
+ variant(
+ "all_targets",
+ default=False,
+ description="Build all supported targets, default targets "
+ "<current arch>,NVPTX,AMDGPU,CppBackend",
+ )
+ variant(
+ "build_type",
+ default="Release",
+ description="CMake build type",
+ values=("Debug", "Release", "RelWithDebInfo", "MinSizeRel"),
+ )
+ variant(
+ "omp_tsan",
+ default=False,
+ description="Build with OpenMP capable thread sanitizer",
+ )
+ variant("python", default=False, description="Install python bindings")
+
+ extends("python", when="+python")
# Build dependency
- depends_on('cmake@3.4.3:', type='build')
- depends_on('python@2.7:2.8', when='@:4.999 ~python', type='build')
- depends_on('python', when='@5: ~python', type='build')
+ depends_on("cmake@3.4.3:", type="build")
+ depends_on("python@2.7:2.8", when="@:4.999 ~python", type="build")
+ depends_on("python", when="@5: ~python", type="build")
# Universal dependency
- depends_on('python@2.7:2.8', when='@:4.999+python')
- depends_on('python', when='@5:+python')
+ depends_on("python@2.7:2.8", when="@:4.999+python")
+ depends_on("python", when="@5:+python")
+ depends_on("z3", when="@9:")
+
+ # CUDA dependency
+ depends_on("cuda", when="+cuda")
# openmp dependencies
- depends_on('perl-data-dumper', type=('build'))
+ depends_on("perl-data-dumper", type=("build"))
+ depends_on("hwloc")
+ depends_on("libelf", when="+cuda") # libomptarget
+ depends_on("libffi", when="+cuda") # libomptarget
# ncurses dependency
- depends_on('ncurses+termlib')
+ depends_on("ncurses+termlib")
# lldb dependencies
- depends_on('swig', when='+lldb')
- depends_on('libedit', when='+lldb')
- depends_on('py-six', when='@5.0.0: +lldb +python')
+ depends_on("swig", when="+lldb")
+ depends_on("libedit", when="+lldb")
+ depends_on("py-six", when="@5.0.0: +lldb +python")
- # gold support
- depends_on('binutils+gold', when='+gold')
+ # gold support, required for some features
+ depends_on("binutils+gold", when="+gold")
# polly plugin
- depends_on('gmp', when='@:3.6.999 +polly')
- depends_on('isl', when='@:3.6.999 +polly')
+ depends_on("gmp", when="@:3.6.999 +polly")
+ depends_on("isl", when="@:3.6.999 +polly")
- conflicts('+clang_extra', when='~clang')
- conflicts('+lldb', when='~clang')
- conflicts('+libcxx', when='~clang')
- conflicts('+internal_unwind', when='~clang')
- conflicts('+compiler-rt', when='~clang')
+ conflicts("+clang_extra", when="~clang")
+ conflicts("+lldb", when="~clang")
+ conflicts("+libcxx", when="~clang")
+ conflicts("+internal_unwind", when="~clang")
+ conflicts("+compiler-rt", when="~clang")
# LLVM 4 and 5 does not build with GCC 8
- conflicts('%gcc@8:', when='@:5')
- conflicts('%gcc@:5.0.999', when='@8:')
+ conflicts("%gcc@8:", when="@:5")
+ conflicts("%gcc@:5.0.999", when="@8:")
# OMP TSAN exists in > 5.x
- conflicts('+omp_tsan', when='@:5.99')
+ conflicts("+omp_tsan", when="@:5.99")
+
+ # MLIR exists in > 10.x
+ conflicts("+mlir", when="@:9")
# Github issue #4986
- patch('llvm_gcc7.patch', when='@4.0.0:4.0.1+lldb %gcc@7.0:')
+ patch("llvm_gcc7.patch", when="@4.0.0:4.0.1+lldb %gcc@7.0:")
# Backport from llvm master + additional fix
# see https://bugs.llvm.org/show_bug.cgi?id=39696
# for a bug report about this problem in llvm master.
- patch('constexpr_longdouble.patch', when='@6:8+libcxx')
- patch('constexpr_longdouble_9.0.patch', when='@9+libcxx')
+ patch("constexpr_longdouble.patch", when="@6:8+libcxx")
+ patch("constexpr_longdouble_9.0.patch", when="@9:+libcxx")
# Backport from llvm master; see
# https://bugs.llvm.org/show_bug.cgi?id=38233
# for a bug report about this problem in llvm master.
- patch('llvm_py37.patch', when='@4:6 ^python@3.7:')
+ patch("llvm_py37.patch", when="@4:6 ^python@3.7:")
# https://bugs.llvm.org/show_bug.cgi?id=39696
- patch('thread-p9.patch', when='@develop+libcxx')
+ patch("thread-p9.patch", when="@develop+libcxx")
- @run_before('cmake')
+ @run_before("cmake")
def check_darwin_lldb_codesign_requirement(self):
- if not self.spec.satisfies('+lldb platform=darwin'):
+ if not self.spec.satisfies("+lldb platform=darwin"):
return
- codesign = which('codesign')
- mkdir('tmp')
- llvm_check_file = join_path('tmp', 'llvm_check')
- copy('/usr/bin/false', llvm_check_file)
+ codesign = which("codesign")
+ mkdir("tmp")
+ llvm_check_file = join_path("tmp", "llvm_check")
+ copy("/usr/bin/false", llvm_check_file)
try:
- codesign('-f', '-s', 'lldb_codesign', '--dryrun',
- llvm_check_file)
+ codesign("-f", "-s", "lldb_codesign", "--dryrun", llvm_check_file)
except ProcessError:
# Newer LLVM versions have a simple script that sets up
@@ -170,140 +210,202 @@ class Llvm(CMakePackage):
except Exception:
raise RuntimeError(
'The "lldb_codesign" identity must be available to build '
- 'LLVM with LLDB. See https://lldb.llvm.org/resources/'
- 'build.html#code-signing-on-macos for details on how to '
- 'create this identity.'
+ "LLVM with LLDB. See https://lldb.llvm.org/resources/"
+ "build.html#code-signing-on-macos for details on how to "
+ "create this identity."
)
def setup_build_environment(self, env):
- env.append_flags('CXXFLAGS', self.compiler.cxx11_flag)
+ env.append_flags("CXXFLAGS", self.compiler.cxx11_flag)
def setup_run_environment(self, env):
- if '+clang' in self.spec:
- env.set('CC', join_path(self.spec.prefix.bin, 'clang'))
- env.set('CXX', join_path(self.spec.prefix.bin, 'clang++'))
+ if "+clang" in self.spec:
+ env.set("CC", join_path(self.spec.prefix.bin, "clang"))
+ env.set("CXX", join_path(self.spec.prefix.bin, "clang++"))
- root_cmakelists_dir = 'llvm'
+ root_cmakelists_dir = "llvm"
def cmake_args(self):
spec = self.spec
cmake_args = [
- '-DLLVM_REQUIRES_RTTI:BOOL=ON',
- '-DLLVM_ENABLE_RTTI:BOOL=ON',
- '-DLLVM_ENABLE_EH:BOOL=ON',
- '-DCLANG_DEFAULT_OPENMP_RUNTIME:STRING=libomp',
- '-DPYTHON_EXECUTABLE:PATH={0}'.format(spec['python'].command.path),
+ "-DLLVM_REQUIRES_RTTI:BOOL=ON",
+ "-DLLVM_ENABLE_RTTI:BOOL=ON",
+ "-DLLVM_ENABLE_EH:BOOL=ON",
+ "-DCLANG_DEFAULT_OPENMP_RUNTIME:STRING=libomp",
+ "-DPYTHON_EXECUTABLE:PATH={0}".format(spec["python"].command.path),
+ "-DLIBOMP_USE_HWLOC=On",
]
projects = []
- # TODO: Instead of unconditionally disabling CUDA, add a "cuda" variant
- # (see TODO above), and set the paths if enabled.
- cmake_args.extend([
- '-DCUDA_TOOLKIT_ROOT_DIR:PATH=IGNORE',
- '-DCUDA_SDK_ROOT_DIR:PATH=IGNORE',
- '-DCUDA_NVCC_EXECUTABLE:FILEPATH=IGNORE',
- '-DLIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES:STRING=IGNORE'])
-
- if '+python' in spec and '+lldb' in spec and spec.satisfies('@5.0.0:'):
- cmake_args.append('-DLLDB_USE_SYSTEM_SIX:Bool=TRUE')
-
- if '~python' in spec and '+lldb' in spec:
- cmake_args.append('-DLLDB_DISABLE_PYTHON:Bool=TRUE')
-
- if '+gold' in spec:
- cmake_args.append('-DLLVM_BINUTILS_INCDIR=' +
- spec['binutils'].prefix.include)
-
- if '+clang' in spec:
- projects.append('clang')
- projects.append('clang-tools-extra')
- projects.append('openmp')
- if '+lldb' in spec:
- projects.append('lldb')
- if '+lld' in spec:
- projects.append('lld')
- if '+compiler-rt' in spec:
- projects.append('compiler-rt')
- if '+libcxx' in spec:
- projects.append('libcxx')
- projects.append('libcxxabi')
- if spec.satisfies('@3.9.0:'):
- cmake_args.append('-DCLANG_DEFAULT_CXX_STDLIB=libc++')
- if '+internal_unwind' in spec:
- projects.append('libunwind')
- if '+polly' in spec:
- projects.append('polly')
- cmake_args.append('-DLINK_POLLY_INTO_TOOLS:Bool=ON')
-
- if '+shared_libs' in spec:
- cmake_args.append('-DBUILD_SHARED_LIBS:Bool=ON')
-
- if '+link_dylib' in spec:
- cmake_args.append('-DLLVM_LINK_LLVM_DYLIB:Bool=ON')
-
- if '+all_targets' not in spec: # all is default on cmake
-
- targets = ['NVPTX', 'AMDGPU']
- if (spec.version < Version('3.9.0')):
+ if "+cuda" in spec:
+ cmake_args.extend(
+ [
+ "-DCUDA_TOOLKIT_ROOT_DIR:PATH=" + spec["cuda"].prefix,
+ "-DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES={0}".format(
+ ",".join(spec.variants["cuda_arch"].value)
+ ),
+ "-DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_{0}".format(
+ spec.variants["cuda_arch"].value[-1]
+ ),
+ ]
+ )
+ else:
+ # still build libomptarget but disable cuda
+ cmake_args.extend(
+ [
+ "-DCUDA_TOOLKIT_ROOT_DIR:PATH=IGNORE",
+ "-DCUDA_SDK_ROOT_DIR:PATH=IGNORE",
+ "-DCUDA_NVCC_EXECUTABLE:FILEPATH=IGNORE",
+ "-DLIBOMPTARGET_DEP_CUDA_DRIVER_LIBRARIES:STRING=IGNORE",
+ ]
+ )
+
+ if "+omp_debug" in spec:
+ cmake_args.append("-DLIBOMPTARGET_ENABLE_DEBUG:Bool=ON")
+
+ if "+python" in spec and "+lldb" in spec and spec.satisfies("@5.0.0:"):
+ cmake_args.append("-DLLDB_USE_SYSTEM_SIX:Bool=TRUE")
+
+ if "~python" in spec and "+lldb" in spec:
+ cmake_args.append("-DLLDB_DISABLE_PYTHON:Bool=TRUE")
+
+ if "+gold" in spec:
+ cmake_args.append(
+ "-DLLVM_BINUTILS_INCDIR=" + spec["binutils"].prefix.include
+ )
+
+ if "+clang" in spec:
+ projects.append("clang")
+ projects.append("clang-tools-extra")
+ projects.append("openmp")
+ if "+lldb" in spec:
+ projects.append("lldb")
+ if "+lld" in spec:
+ projects.append("lld")
+ if "+compiler-rt" in spec:
+ projects.append("compiler-rt")
+ if "+libcxx" in spec:
+ projects.append("libcxx")
+ projects.append("libcxxabi")
+ if spec.satisfies("@3.9.0:"):
+ cmake_args.append("-DCLANG_DEFAULT_CXX_STDLIB=libc++")
+ if "+mlir" in spec:
+ projects.append("mlir")
+ if "+internal_unwind" in spec:
+ projects.append("libunwind")
+ if "+polly" in spec:
+ projects.append("polly")
+ cmake_args.append("-DLINK_POLLY_INTO_TOOLS:Bool=ON")
+
+ if "+shared_libs" in spec:
+ cmake_args.append("-DBUILD_SHARED_LIBS:Bool=ON")
+ if "+omp_debug" in spec:
+ cmake_args.append("-DLIBOMPTARGET_ENABLE_DEBUG:Bool=ON")
+
+ if "+split_dwarf" in spec:
+ cmake_args.append("-DLLVM_USE_SPLIT_DWARF:Bool=ON")
+
+ if "+all_targets" not in spec: # all is default on cmake
+
+ targets = ["NVPTX", "AMDGPU"]
+ if spec.version < Version("3.9.0"):
# Starting in 3.9.0 CppBackend is no longer a target (see
# LLVM_ALL_TARGETS in llvm's top-level CMakeLists.txt for
# the complete list of targets)
- targets.append('CppBackend')
-
- if spec.target.family == 'x86' or spec.target.family == 'x86_64':
- targets.append('X86')
- elif spec.target.family == 'arm':
- targets.append('ARM')
- elif spec.target.family == 'aarch64':
- targets.append('AArch64')
- elif (spec.target.family == 'sparc' or
- spec.target.family == 'sparc64'):
- targets.append('Sparc')
- elif (spec.target.family == 'ppc64' or
- spec.target.family == 'ppc64le' or
- spec.target.family == 'ppc' or
- spec.target.family == 'ppcle'):
- targets.append('PowerPC')
+ targets.append("CppBackend")
+
+ if spec.target.family == "x86" or spec.target.family == "x86_64":
+ targets.append("X86")
+ elif spec.target.family == "arm":
+ targets.append("ARM")
+ elif spec.target.family == "aarch64":
+ targets.append("AArch64")
+ elif (
+ spec.target.family == "sparc"
+ or spec.target.family == "sparc64"
+ ):
+ targets.append("Sparc")
+ elif (
+ spec.target.family == "ppc64"
+ or spec.target.family == "ppc64le"
+ or spec.target.family == "ppc"
+ or spec.target.family == "ppcle"
+ ):
+ targets.append("PowerPC")
cmake_args.append(
- '-DLLVM_TARGETS_TO_BUILD:STRING=' + ';'.join(targets))
+ "-DLLVM_TARGETS_TO_BUILD:STRING=" + ";".join(targets)
+ )
- if '+omp_tsan' in spec:
- cmake_args.append('-DLIBOMP_TSAN_SUPPORT=ON')
+ if "+omp_tsan" in spec:
+ cmake_args.append("-DLIBOMP_TSAN_SUPPORT=ON")
- if self.compiler.name == 'gcc':
+ if self.compiler.name == "gcc":
gcc_prefix = ancestor(self.compiler.cc, 2)
- cmake_args.append('-DGCC_INSTALL_PREFIX=' + gcc_prefix)
+ cmake_args.append("-DGCC_INSTALL_PREFIX=" + gcc_prefix)
- if spec.satisfies('@4.0.0:'):
- if spec.satisfies('platform=cray') or \
- spec.satisfies('platform=linux'):
- cmake_args.append('-DCMAKE_BUILD_WITH_INSTALL_RPATH=1')
+ if spec.satisfies("@4.0.0:"):
+ if spec.satisfies("platform=cray") or spec.satisfies(
+ "platform=linux"
+ ):
+ cmake_args.append("-DCMAKE_BUILD_WITH_INSTALL_RPATH=1")
# Semicolon seperated list of projects to enable
cmake_args.append(
- '-DLLVM_ENABLE_PROJECTS:STRING={0}'.format(';'.join(projects)))
+ "-DLLVM_ENABLE_PROJECTS:STRING={0}".format(";".join(projects))
+ )
return cmake_args
- @run_before('build')
+ @run_before("build")
def pre_install(self):
with working_dir(self.build_directory):
# When building shared libraries these need to be installed first
- make('install-LLVMTableGen')
- if self.spec.version >= Version('4.0.0'):
+ make("install-LLVMTableGen")
+ if self.spec.version >= Version("4.0.0"):
# LLVMDemangle target was added in 4.0.0
- make('install-LLVMDemangle')
- make('install-LLVMSupport')
+ make("install-LLVMDemangle")
+ make("install-LLVMSupport")
- @run_after('install')
+ @run_after("install")
def post_install(self):
- if '+python' in self.spec:
- install_tree('llvm/bindings/python', site_packages_dir)
+ spec = self.spec
+
+ # unnecessary if we get bootstrap builds in here
+ if "+cuda" in self.spec:
+ ompdir = "build-bootstrapped-omp"
+ # rebuild libomptarget to get bytecode runtime library files
+ with working_dir(ompdir, create=True):
+ cmake_args = [
+ self.stage.source_path + "/openmp",
+ "-DCMAKE_C_COMPILER:PATH={0}".format(
+ spec.prefix.bin + "/clang"
+ ),
+ "-DCMAKE_CXX_COMPILER:PATH={0}".format(
+ spec.prefix.bin + "/clang++"
+ ),
+ "-DCMAKE_INSTALL_PREFIX:PATH={0}".format(spec.prefix),
+ ]
+ cmake_args.extend(self.cmake_args())
+ cmake_args.append('-DLIBOMPTARGET_NVPTX_ENABLE_BCLIB=true')
+
+ # work around bad libelf detection in libomptarget
+ cmake_args.append(
+ "-DCMAKE_CXX_FLAGS:String=-I{0} -I{1}".format(
+ spec["libelf"].prefix.include,
+ spec["hwloc"].prefix.include,
+ )
+ )
+
+ cmake(*cmake_args)
+ make()
+ make("install")
+ if "+python" in self.spec:
+ install_tree("llvm/bindings/python", site_packages_dir)
- if '+clang' in self.spec:
- install_tree('clang/bindings/python', site_packages_dir)
+ if "+clang" in self.spec:
+ install_tree("clang/bindings/python", site_packages_dir)
with working_dir(self.build_directory):
- install_tree('bin', join_path(self.prefix, 'libexec', 'llvm'))
+ install_tree("bin", join_path(self.prefix, "libexec", "llvm"))
diff --git a/var/spack/repos/builtin/packages/lmbench/package.py b/var/spack/repos/builtin/packages/lmbench/package.py
new file mode 100644
index 0000000000..e38ca29e24
--- /dev/null
+++ b/var/spack/repos/builtin/packages/lmbench/package.py
@@ -0,0 +1,30 @@
+# Copyright 2013-2020 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 Lmbench(MakefilePackage):
+ """lmbench is a suite of simple, portable, ANSI/C microbenchmarks for
+ UNIX/POSIX. In general, it measures two key features: latency and
+ bandwidth. lmbench is intended to give system developers insight into
+ basic costs of key operations."""
+
+ homepage = "http://lmbench.sourceforge.net/"
+ git = "https://github.com/intel/lmbench.git"
+
+ version('master', branch='master')
+
+ depends_on('libtirpc')
+
+ def setup_build_environment(self, env):
+ env.prepend_path('CPATH', self.spec['libtirpc'].prefix.include.tirpc)
+ env.append_flags('LDFLAGS', '-ltirpc')
+
+ def build(self, spec, prefix):
+ make('build')
+
+ def install(self, spec, prefix):
+ install_tree('.', prefix)
diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py
index 146ef9e3b4..2f12d47587 100644
--- a/var/spack/repos/builtin/packages/lmod/package.py
+++ b/var/spack/repos/builtin/packages/lmod/package.py
@@ -24,6 +24,7 @@ class Lmod(AutotoolsPackage):
version('8.1.5', sha256='3e5846d3d8e593cbcdfa0aed1474569bf5b5cfd19fd288de22051823d449d344')
version('8.0.9', sha256='9813c22ae4dd21eb3dc480f6ce307156512092b4bca954bf8aacc15944f23673')
version('7.8.15', sha256='00a257f5073d656adc73045997c28f323b7a4f6d901f1c57b7db2b0cd6bee6e6')
+ version('7.8.1', sha256='74244c22cecd72777e75631f357d2e20ff7f2b9c2ef59e4e38b5a171b7b6eeea')
version('7.8', sha256='40388380a36a00c3ce929a9f88c8fffc93deeabf87a7c3f8864a82acad38c3ba')
version('7.7.29', sha256='269235d07d8ea387a2578f90bb64cf8ad16b4f28dcce196b293eb48cf1f71fb4')
version('7.7.13', sha256='6145f075e5d49e12fcf0e75bb38afb27f205d23ba3496c1ff6c8b2cbaa9908be')
@@ -45,6 +46,9 @@ class Lmod(AutotoolsPackage):
depends_on('lua-luafilesystem', type=('build', 'run'))
depends_on('tcl', type=('build', 'link', 'run'))
+ variant('auto_swap', default=False, description='Enable auto swapping conflicting modules')
+ variant('redirect', default=True, description='Enables redirect instead of pager')
+
patch('fix_tclsh_paths.patch', when='@:6.4.3')
patch('0001-fix-problem-with-MODULESHOME-and-issue-271.patch', when='@7.3.28:7.4.10')
@@ -64,3 +68,18 @@ class Lmod(AutotoolsPackage):
if self.spec.version <= Version('6.4.3'):
for tclscript in glob('src/*.tcl'):
filter_file(r'^#!.*tclsh', '#!@path_to_tclsh@', tclscript)
+
+ def configure_args(self):
+ args = []
+
+ if '+auto_swap' in self.spec:
+ args.append('--with-autoSwap=yes')
+ else:
+ args.append('--with-autoSwap=no')
+
+ if '+redirect' in self.spec:
+ args.append('--with-redirect=yes')
+ else:
+ args.append('--with-redirect=no')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/lndir/package.py b/var/spack/repos/builtin/packages/lndir/package.py
index cbef2fc769..1c310c172c 100644
--- a/var/spack/repos/builtin/packages/lndir/package.py
+++ b/var/spack/repos/builtin/packages/lndir/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Lndir(AutotoolsPackage):
+class Lndir(AutotoolsPackage, XorgPackage):
"""lndir - create a shadow directory of symbolic links to another
directory tree."""
homepage = "http://cgit.freedesktop.org/xorg/util/lndir"
- url = "https://www.x.org/archive/individual/util/lndir-1.0.3.tar.gz"
+ xorg_mirror_path = "util/lndir-1.0.3.tar.gz"
version('1.0.3', sha256='95b2d26fb3cbe702f828146c7a4c7c48001d2da52b062580227b7b68180be902')
diff --git a/var/spack/repos/builtin/packages/lua-luaposix/package.py b/var/spack/repos/builtin/packages/lua-luaposix/package.py
index f69c2a3682..f5290eae1c 100644
--- a/var/spack/repos/builtin/packages/lua-luaposix/package.py
+++ b/var/spack/repos/builtin/packages/lua-luaposix/package.py
@@ -13,6 +13,7 @@ class LuaLuaposix(Package):
url = "https://github.com/luaposix/luaposix/archive/release-v33.4.0.tar.gz"
version('33.4.0', sha256='e66262f5b7fe1c32c65f17a5ef5ffb31c4d1877019b4870a5d373e2ab6526a21')
+ version('33.2.1', sha256='4fb34dfea67f4cf3194cdecc6614c9aea67edc3c4093d34137669ea869c358e1')
extends("lua")
diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py
index ea6265e28a..910d8b252f 100644
--- a/var/spack/repos/builtin/packages/lua/package.py
+++ b/var/spack/repos/builtin/packages/lua/package.py
@@ -27,6 +27,9 @@ class Lua(Package):
version('5.1.4', sha256='b038e225eaf2a5b57c9bcc35cd13aa8c6c8288ef493d52970c9545074098af3a')
version('5.1.3', sha256='6b5df2edaa5e02bf1a2d85e1442b2e329493b30b0c0780f77199d24f087d296d')
+ variant('shared', default=True,
+ description='Builds a shared version of the library')
+
extendable = True
depends_on('ncurses')
@@ -58,31 +61,33 @@ class Lua(Package):
make('INSTALL_TOP=%s' % prefix,
'install')
- static_to_shared_library(join_path(prefix.lib, 'liblua.a'),
- arguments=['-lm', '-ldl'],
- version=self.version,
- compat_version=self.version.up_to(2))
+ if '+shared' in spec:
+ static_to_shared_library(join_path(prefix.lib, 'liblua.a'),
+ arguments=['-lm', '-ldl'],
+ version=self.version,
+ compat_version=self.version.up_to(2))
# compatibility with ax_lua.m4 from autoconf-archive
# https://www.gnu.org/software/autoconf-archive/ax_lua.html
- with working_dir(prefix.lib):
- # e.g., liblua.so.5.1.5
- src_path = 'liblua.{0}.{1}'.format(dso_suffix,
- str(self.version.up_to(3)))
-
- # For lua version 5.1.X, the symlinks should be:
- # liblua5.1.so
- # liblua51.so
- # liblua-5.1.so
- # liblua-51.so
- version_formats = [str(self.version.up_to(2)),
- Version(str(self.version.up_to(2))).joined]
- for version_str in version_formats:
- for joiner in ['', '-']:
- dest_path = 'liblua{0}{1}.{2}'.format(joiner,
- version_str,
- dso_suffix)
- os.symlink(src_path, dest_path)
+ if '+shared' in spec:
+ with working_dir(prefix.lib):
+ # e.g., liblua.so.5.1.5
+ src_path = 'liblua.{0}.{1}'.format(dso_suffix,
+ str(self.version.up_to(3)))
+
+ # For lua version 5.1.X, the symlinks should be:
+ # liblua5.1.so
+ # liblua51.so
+ # liblua-5.1.so
+ # liblua-51.so
+ version_formats = [str(self.version.up_to(2)),
+ Version(str(self.version.up_to(2))).joined]
+ for version_str in version_formats:
+ for joiner in ['', '-']:
+ dest_path = 'liblua{0}{1}.{2}'.format(joiner,
+ version_str,
+ dso_suffix)
+ os.symlink(src_path, dest_path)
with working_dir(os.path.join('luarocks', 'luarocks')):
configure('--prefix=' + prefix, '--with-lua=' + prefix)
@@ -92,7 +97,8 @@ class Lua(Package):
def append_paths(self, paths, cpaths, path):
paths.append(os.path.join(path, '?.lua'))
paths.append(os.path.join(path, '?', 'init.lua'))
- cpaths.append(os.path.join(path, '?.so'))
+ if '+shared' in self.spec:
+ cpaths.append(os.path.join(path, '?.so'))
def _setup_dependent_env_helper(self, env, dependent_spec):
lua_paths = []
@@ -122,7 +128,8 @@ class Lua(Package):
env, dependent_spec)
env.set('LUA_PATH', ';'.join(lua_patterns), separator=';')
- env.set('LUA_CPATH', ';'.join(lua_cpatterns), separator=';')
+ if '+shared' in self.spec:
+ env.set('LUA_CPATH', ';'.join(lua_cpatterns), separator=';')
def setup_dependent_run_environment(self, env, dependent_spec):
# For run time environment set only the path for dependent_spec and
@@ -132,8 +139,9 @@ class Lua(Package):
if dependent_spec.package.extends(self.spec):
env.prepend_path('LUA_PATH', ';'.join(lua_patterns), separator=';')
- env.prepend_path('LUA_CPATH', ';'.join(lua_cpatterns),
- separator=';')
+ if '+shared' in self.spec:
+ env.prepend_path('LUA_CPATH', ';'.join(lua_cpatterns),
+ separator=';')
def setup_run_environment(self, env):
env.prepend_path(
@@ -152,10 +160,11 @@ class Lua(Package):
'LUA_PATH',
os.path.join(self.spec.prefix, self.lua_lib_dir, '?', 'init.lua'),
separator=';')
- env.prepend_path(
- 'LUA_CPATH',
- os.path.join(self.spec.prefix, self.lua_lib_dir, '?.so'),
- separator=';')
+ if '+shared' in self.spec:
+ env.prepend_path(
+ 'LUA_CPATH',
+ os.path.join(self.spec.prefix, self.lua_lib_dir, '?.so'),
+ separator=';')
@property
def lua_lib_dir(self):
diff --git a/var/spack/repos/builtin/packages/luit/package.py b/var/spack/repos/builtin/packages/luit/package.py
index 3cafde98ba..232111e4bf 100644
--- a/var/spack/repos/builtin/packages/luit/package.py
+++ b/var/spack/repos/builtin/packages/luit/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Luit(AutotoolsPackage):
+class Luit(AutotoolsPackage, XorgPackage):
"""Luit is a filter that can be run between an arbitrary application and
a UTF-8 terminal emulator such as xterm. It will convert application
output from the locale's encoding into UTF-8, and convert terminal
input from UTF-8 into the locale's encoding."""
homepage = "http://cgit.freedesktop.org/xorg/app/luit"
- url = "https://www.x.org/archive/individual/app/luit-1.1.1.tar.gz"
+ xorg_mirror_path = "app/luit-1.1.1.tar.gz"
version('1.1.1', sha256='87b0be0bd01f3b857a53e6625bdd31cef18418c95394b7f4387f8ecef78e45da')
diff --git a/var/spack/repos/builtin/packages/lvm2/package.py b/var/spack/repos/builtin/packages/lvm2/package.py
index c552fe3ef5..23142fce26 100644
--- a/var/spack/repos/builtin/packages/lvm2/package.py
+++ b/var/spack/repos/builtin/packages/lvm2/package.py
@@ -4,7 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-class Lvm2(AutotoolsPackage):
+class Lvm2(AutotoolsPackage, SourcewarePackage):
"""LVM2 is the userspace toolset that provides logical volume
management facilities on linux.
@@ -18,7 +18,7 @@ class Lvm2(AutotoolsPackage):
"""
homepage = "https://www.sourceware.org/lvm2"
- url = "https://sourceware.org/pub/lvm2/releases/LVM2.2.03.05.tgz"
+ sourceware_mirror_path = "lvm2/LVM2.2.03.05.tgz"
version('2.03.05', sha256='ca52815c999b20c6d25e3192f142f081b93d01f07b9d787e99664b169dba2700')
version('2.03.04', sha256='f151f36fc0039997d2d9369b607b9262568b1a268afe19fd1535807355402142')
diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py
index 27f2f438e9..2e86463018 100644
--- a/var/spack/repos/builtin/packages/magma/package.py
+++ b/var/spack/repos/builtin/packages/magma/package.py
@@ -7,10 +7,10 @@
from spack import *
-class Magma(CMakePackage):
- """The MAGMA project aims to develop a dense linear algebra library similar to
- LAPACK but for heterogeneous/hybrid architectures, starting with current
- "Multicore+GPU" systems.
+class Magma(CMakePackage, CudaPackage):
+ """The MAGMA project aims to develop a dense linear algebra library similar
+ to LAPACK but for heterogeneous/hybrid architectures, starting with
+ current "Multicore+GPU" systems.
"""
homepage = "http://icl.cs.utk.edu/magma/"
@@ -28,13 +28,15 @@ class Magma(CMakePackage):
description='Enable Fortran bindings support')
variant('shared', default=True,
description='Enable shared library')
+ variant('cuda', default=True, description='Build with CUDA')
depends_on('blas')
depends_on('lapack')
- depends_on('cuda')
+ depends_on('cuda@8:', when='@2.5.1:') # See PR #14471
- conflicts('%gcc@6:', when='^cuda@:8')
- conflicts('%gcc@7:', when='^cuda@:9')
+ conflicts('~cuda', msg='Magma requires cuda')
+ conflicts('cuda_arch=none',
+ msg='Please indicate a CUDA arch value or values')
patch('ibm-xl.patch', when='@2.2:2.5.0%xl')
patch('ibm-xl.patch', when='@2.2:2.5.0%xl_r')
@@ -69,11 +71,14 @@ class Magma(CMakePackage):
'-DCMAKE_Fortran_COMPILER=%s' % self.compiler.f77
])
- if spec.satisfies('^cuda@9.0:'):
+ if spec.satisfies('^cuda'):
+ cuda_arch = self.spec.variants['cuda_arch'].value
if '@:2.2.0' in spec:
- options.extend(['-DGPU_TARGET=sm30'])
+ capabilities = ' '.join('sm{0}'.format(i) for i in cuda_arch)
+ options.extend(['-DGPU_TARGET=' + capabilities])
else:
- options.extend(['-DGPU_TARGET=sm_30'])
+ capabilities = ' '.join('sm_{0}'.format(i) for i in cuda_arch)
+ options.extend(['-DGPU_TARGET=' + capabilities])
if '@2.5.0' in spec:
options.extend(['-DMAGMA_SPARSE=OFF'])
diff --git a/var/spack/repos/builtin/packages/makedepend/package.py b/var/spack/repos/builtin/packages/makedepend/package.py
index 43c523e1a4..96cca305d2 100644
--- a/var/spack/repos/builtin/packages/makedepend/package.py
+++ b/var/spack/repos/builtin/packages/makedepend/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Makedepend(AutotoolsPackage):
+class Makedepend(AutotoolsPackage, XorgPackage):
"""makedepend - create dependencies in makefiles."""
homepage = "http://cgit.freedesktop.org/xorg/util/makedepend"
- url = "https://www.x.org/archive/individual/util/makedepend-1.0.5.tar.gz"
+ xorg_mirror_path = "util/makedepend-1.0.5.tar.gz"
version('1.0.5', sha256='503903d41fb5badb73cb70d7b3740c8b30fe1cc68c504d3b6a85e6644c4e5004')
diff --git a/var/spack/repos/builtin/packages/margo/package.py b/var/spack/repos/builtin/packages/margo/package.py
index c6f932e1bb..30e124cac6 100644
--- a/var/spack/repos/builtin/packages/margo/package.py
+++ b/var/spack/repos/builtin/packages/margo/package.py
@@ -13,7 +13,7 @@ class Margo(AutotoolsPackage):
url = "https://xgitlab.cels.anl.gov/sds/margo/-/archive/v0.4.3/margo-v0.4.3.tar.gz"
git = "https://xgitlab.cels.anl.gov/sds/margo.git"
- maintainers = ['fbudin69500', 'chuckatkins']
+ maintainers = ['fbudin69500', 'chuckatkins', 'carns']
version('develop', branch='master')
version('0.4.3', sha256='61a634d6983bee2ffa06e1e2da4c541cb8f56ddd9dd9f8e04e8044fb38657475')
diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py
index c89c4c44e6..9d3f515317 100644
--- a/var/spack/repos/builtin/packages/mariadb/package.py
+++ b/var/spack/repos/builtin/packages/mariadb/package.py
@@ -20,6 +20,7 @@ class Mariadb(CMakePackage):
homepage = "https://mariadb.org/about/"
url = "http://ftp.hosteurope.de/mirror/archive.mariadb.org/mariadb-10.2.8/source/mariadb-10.2.8.tar.gz"
+ version('10.4.12', sha256='fef1e1d38aa253dd8a51006bd15aad184912fce31c446bb69434fcde735aa208')
version('10.4.8', sha256='10cc2c3bdb76733c9c6fd1e3c6c860d8b4282c85926da7d472d2a0e00fffca9b')
version('10.4.7', sha256='c8e6a6d0bb4f22c416ed675d24682a3ecfa383c5283efee70c8edf131374d817')
version('10.2.8', sha256='8dd250fe79f085e26f52ac448fbdb7af2a161f735fae3aed210680b9f2492393')
diff --git a/var/spack/repos/builtin/packages/mathematica/package.py b/var/spack/repos/builtin/packages/mathematica/package.py
index f7171c6081..8ef546200f 100644
--- a/var/spack/repos/builtin/packages/mathematica/package.py
+++ b/var/spack/repos/builtin/packages/mathematica/package.py
@@ -31,6 +31,9 @@ class Mathematica(Package):
license_url = 'https://reference.wolfram.com/language/tutorial/RegistrationAndPasswords.html#857035062'
def install(self, spec, prefix):
+ # Backup .spack because Mathematica moves it but never restores it
+ copy_tree(join_path(prefix, '.spack'), self.stage)
+
sh = which('sh')
sh(self.stage.archive_file, '--', '-auto', '-verbose',
'-targetdir={0}'.format(prefix),
@@ -43,3 +46,6 @@ class Mathematica(Package):
ln = which('ln')
ws_path = os.path.join(prefix, 'Executables', 'wolframscript')
ln('-s', ws_path, ws_link_path)
+
+ # Move back .spack where it belongs
+ copy_tree(join_path(self.stage, '.spack'), prefix)
diff --git a/var/spack/repos/builtin/packages/med/package.py b/var/spack/repos/builtin/packages/med/package.py
index 3b416c0274..c4be8dfbea 100644
--- a/var/spack/repos/builtin/packages/med/package.py
+++ b/var/spack/repos/builtin/packages/med/package.py
@@ -15,15 +15,17 @@ class Med(CMakePackage):
maintainers = ['likask']
+ version('4.0.0', sha256='a474e90b5882ce69c5e9f66f6359c53b8b73eb448c5f631fa96e8cd2c14df004')
version('3.2.0', sha256='d52e9a1bdd10f31aa154c34a5799b48d4266dc6b4a5ee05a9ceda525f2c6c138')
variant('api23', default=True, description='Enable API2.3')
depends_on('mpi')
- depends_on('hdf5@:1.8.19+mpi')
+ depends_on('hdf5@:1.8.19+mpi', when='@3.2.0')
+ depends_on('hdf5@:1.10.2+mpi', when='@4.0.0')
# C++11 requires a space between literal and identifier
- patch('add_space.patch')
+ patch('add_space.patch', when='@3.2.0')
# FIXME This is minimal installation.
diff --git a/var/spack/repos/builtin/packages/mesa-glu/package.py b/var/spack/repos/builtin/packages/mesa-glu/package.py
index 9593c56271..bd3c90b020 100644
--- a/var/spack/repos/builtin/packages/mesa-glu/package.py
+++ b/var/spack/repos/builtin/packages/mesa-glu/package.py
@@ -12,6 +12,7 @@ class MesaGlu(AutotoolsPackage):
homepage = "https://www.mesa3d.org"
url = "https://www.mesa3d.org/archive/glu/glu-9.0.0.tar.gz"
+ version('9.0.1', sha256='f6f484cfcd51e489afe88031afdea1e173aa652697e4c19ddbcb8260579a10f7')
version('9.0.0', sha256='4387476a1933f36fec1531178ea204057bbeb04cc2d8396c9ea32720a1f7e264')
depends_on('gl@3:')
diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py
index d46c75796e..4132ba0ff4 100644
--- a/var/spack/repos/builtin/packages/mesa/package.py
+++ b/var/spack/repos/builtin/packages/mesa/package.py
@@ -174,3 +174,11 @@ class Mesa(AutotoolsPackage):
args.append('--with-dri-drivers=' + ','.join(args_dri_drivers))
return args
+
+ @property
+ def libs(self):
+ for dir in ['lib64', 'lib']:
+ libs = find_libraries('libGL', join_path(self.prefix, dir),
+ shared=True, recursive=False)
+ if libs:
+ return libs
diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py
index 2878c712fc..dbda0f5e78 100644
--- a/var/spack/repos/builtin/packages/meson/package.py
+++ b/var/spack/repos/builtin/packages/meson/package.py
@@ -14,19 +14,20 @@ class Meson(PythonPackage):
homepage = "http://mesonbuild.com/"
url = "https://github.com/mesonbuild/meson/archive/0.49.0.tar.gz"
+ version('0.54.0', sha256='95efdbaa7cb3e915ab9a7b26b1412475398fdc3e834842a780f1646c7764f2d9')
+ version('0.53.2', sha256='eab4f5d5dde12d002b7ddd958a9a0658589b63622b6cea2715e0235b95917888')
version('0.49.1', sha256='a944e7f25a2bc8e4ba3502ab5835d8a8b8f2530415c9d6fcffb53e0abaea2ced')
version('0.49.0', sha256='11bc959e7173e714e4a4e85dd2bd9d0149b0a51c8ba82d5f44cc63735f603c74')
version('0.42.0', sha256='6c318a2da3859326a37f8a380e3c50e97aaabff6990067218dffffea674ed76f')
version('0.41.2', sha256='2daf448d3f2479d60e30617451f09bf02d26304dd1bd12ee1de936a53e42c7a4')
version('0.41.1', sha256='a48901f02ffeb9ff5cf5361d71b1fca202f9cd72998043ad011fc5de0294cf8b')
- variant('ninjabuild', default=True)
-
- depends_on('python@3:', type=('build', 'run'))
- depends_on('py-setuptools', type='build')
- depends_on('ninja', when='+ninjabuild', type=('build', 'run'))
+ depends_on('python@3.5:', type=('build', 'run'))
+ depends_on('py-setuptools', type=('build', 'run'))
+ depends_on('ninja', type='run')
# By default, Meson strips the rpath on installation. This patch disables
# rpath modification completely to make sure that Spack's rpath changes
# are not reverted.
- patch('rpath.patch', when='@0.49:')
+ patch('rpath-0.49.patch', when='@0.49:0.53')
+ patch('rpath-0.54.patch', when='@0.54:')
diff --git a/var/spack/repos/builtin/packages/meson/rpath-0.49.patch b/var/spack/repos/builtin/packages/meson/rpath-0.49.patch
new file mode 100644
index 0000000000..05b4d142f5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/meson/rpath-0.49.patch
@@ -0,0 +1,20 @@
+--- a/mesonbuild/scripts/depfixer.py
++++ b/mesonbuild/scripts/depfixer.py
+@@ -15,6 +15,7 @@
+
+ import sys, struct
+ import shutil, subprocess
++import os
+
+ from ..mesonlib import OrderedSet
+
+@@ -429,6 +430,9 @@ def fix_jar(fname):
+ subprocess.check_call(['jar', 'ufm', fname, 'META-INF/MANIFEST.MF'])
+
+ def fix_rpath(fname, new_rpath, final_path, install_name_mappings, verbose=True):
++ # Do not strip rpath when run from within Spack
++ if 'SPACK_RPATH_DIRS' in os.environ:
++ return
+ # Static libraries never have rpaths
+ if fname.endswith('.a'):
+ return
diff --git a/var/spack/repos/builtin/packages/meson/rpath-0.54.patch b/var/spack/repos/builtin/packages/meson/rpath-0.54.patch
new file mode 100644
index 0000000000..110e9106dd
--- /dev/null
+++ b/var/spack/repos/builtin/packages/meson/rpath-0.54.patch
@@ -0,0 +1,20 @@
+--- a/mesonbuild/scripts/depfixer.py
++++ b/mesonbuild/scripts/depfixer.py
+@@ -15,6 +15,7 @@
+
+ import sys, struct
+ import shutil, subprocess
++import os
+
+ from ..mesonlib import OrderedSet
+
+@@ -432,6 +433,9 @@ def fix_jar(fname):
+
+ def fix_rpath(fname, new_rpath, final_path, install_name_mappings, verbose=True):
+ global INSTALL_NAME_TOOL
++ # Do not strip rpath when run from within Spack
++ if 'SPACK_RPATH_DIRS' in os.environ:
++ return
+ # Static libraries, import libraries, debug information, headers, etc
+ # never have rpaths
+ # DLLs and EXE currently do not need runtime path fixing
diff --git a/var/spack/repos/builtin/packages/meson/rpath.patch b/var/spack/repos/builtin/packages/meson/rpath.patch
deleted file mode 100644
index 3290c7e824..0000000000
--- a/var/spack/repos/builtin/packages/meson/rpath.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ru meson-0.49.1.orig/mesonbuild/scripts/depfixer.py meson-0.49.1/mesonbuild/scripts/depfixer.py
---- meson-0.49.1.orig/mesonbuild/scripts/depfixer.py 2019-01-23 17:46:50.000000000 +0100
-+++ meson-0.49.1/mesonbuild/scripts/depfixer.py 2019-01-29 14:38:45.590583458 +0100
-@@ -429,6 +429,7 @@
- subprocess.check_call(['jar', 'ufm', fname, 'META-INF/MANIFEST.MF'])
-
- def fix_rpath(fname, new_rpath, final_path, install_name_mappings, verbose=True):
-+ return
- # Static libraries never have rpaths
- if fname.endswith('.a'):
- return
diff --git a/var/spack/repos/builtin/packages/minigan/package.py b/var/spack/repos/builtin/packages/minigan/package.py
new file mode 100644
index 0000000000..5d3b553bcf
--- /dev/null
+++ b/var/spack/repos/builtin/packages/minigan/package.py
@@ -0,0 +1,28 @@
+# 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 Minigan(Package):
+ """miniGAN is a generative adversarial network code developed as part of the
+ Exascale Computing Project's (ECP) ExaLearn project at
+ Sandia National Laboratories."""
+
+ homepage = "https://github.com/SandiaMLMiniApps/miniGAN"
+ url = "https://github.com/SandiaMLMiniApps/miniGAN/archive/1.0.0.tar.gz"
+
+ version('1.0.0', sha256='ef6d5def9c7040af520acc64b7a8b6c8ec4b7901721b11b0cb25a583ea0c8ae3')
+
+ depends_on('python', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-torch', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-horovod@master', type=('build', 'run'))
+ depends_on('py-torchvision', type=('build', 'run'))
+ depends_on('py-matplotlib@3.0.0', type=('build', 'run'))
+
+ def install(self, spec, prefix):
+ install_tree('.', prefix)
diff --git a/var/spack/repos/builtin/packages/mkfontdir/package.py b/var/spack/repos/builtin/packages/mkfontdir/package.py
index 2f4d8801b9..ae9885002e 100644
--- a/var/spack/repos/builtin/packages/mkfontdir/package.py
+++ b/var/spack/repos/builtin/packages/mkfontdir/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Mkfontdir(AutotoolsPackage):
+class Mkfontdir(AutotoolsPackage, XorgPackage):
"""mkfontdir creates the fonts.dir files needed by the legacy X server
core font system. The current implementation is a simple wrapper script
around the mkfontscale program, which must be built and installed first."""
homepage = "http://cgit.freedesktop.org/xorg/app/mkfontdir"
- url = "https://www.x.org/archive/individual/app/mkfontdir-1.0.7.tar.gz"
+ xorg_mirror_path = "app/mkfontdir-1.0.7.tar.gz"
version('1.0.7', sha256='bccc5fb7af1b614eabe4a22766758c87bfc36d66191d08c19d2fa97674b7b5b7')
diff --git a/var/spack/repos/builtin/packages/mkfontscale/package.py b/var/spack/repos/builtin/packages/mkfontscale/package.py
index 53613b290a..d3ba5e0861 100644
--- a/var/spack/repos/builtin/packages/mkfontscale/package.py
+++ b/var/spack/repos/builtin/packages/mkfontscale/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Mkfontscale(AutotoolsPackage):
+class Mkfontscale(AutotoolsPackage, XorgPackage):
"""mkfontscale creates the fonts.scale and fonts.dir index files used by the
legacy X11 font system."""
homepage = "http://cgit.freedesktop.org/xorg/app/mkfontscale"
- url = "https://www.x.org/archive/individual/app/mkfontscale-1.1.2.tar.gz"
+ xorg_mirror_path = "app/mkfontscale-1.1.2.tar.gz"
version('1.1.2', sha256='8bba59e60fbc4cb082092cf6b67e810b47b4fe64fbc77dbea1d7e7d55312b2e4')
diff --git a/var/spack/repos/builtin/packages/mofem-cephas/package.py b/var/spack/repos/builtin/packages/mofem-cephas/package.py
index 28e00565d2..24e8815084 100644
--- a/var/spack/repos/builtin/packages/mofem-cephas/package.py
+++ b/var/spack/repos/builtin/packages/mofem-cephas/package.py
@@ -42,7 +42,7 @@ class MofemCephas(CMakePackage):
depends_on("parmetis")
# Fixed version of hdf5, to remove some problems with dependent
# packages, f.e. MED format
- depends_on("hdf5@:1.8.19+hl+mpi")
+ depends_on("hdf5@:1.8.19+hl+mpi+fortran")
depends_on("petsc@:3.9.3+mumps+mpi")
depends_on('slepc', when='+slepc')
depends_on("moab")
diff --git a/var/spack/repos/builtin/packages/mono/package.py b/var/spack/repos/builtin/packages/mono/package.py
index 73464f0fb9..6a7a96300a 100644
--- a/var/spack/repos/builtin/packages/mono/package.py
+++ b/var/spack/repos/builtin/packages/mono/package.py
@@ -25,7 +25,7 @@ class Mono(AutotoolsPackage):
# Spack's openssl interacts badly with mono's vendored
# "boringssl", don't drag it in w/ cmake
depends_on('cmake~openssl', type=('build'))
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('perl', type=('build'))
version('6.8.0.105', sha256='578799c44c3c86a9eb5daf6dec6c60a24341940fd376371956d4a46cf8612178',
@@ -50,6 +50,6 @@ class Mono(AutotoolsPackage):
def configure_args(self):
args = []
- li = self.spec['libiconv'].prefix
+ li = self.spec['iconv'].prefix
args.append('--with-libiconv-prefix={p}'.format(p=li))
return args
diff --git a/var/spack/repos/builtin/packages/mothur/package.py b/var/spack/repos/builtin/packages/mothur/package.py
index 3f2283191a..4e25a4dd3e 100644
--- a/var/spack/repos/builtin/packages/mothur/package.py
+++ b/var/spack/repos/builtin/packages/mothur/package.py
@@ -23,7 +23,7 @@ class Mothur(MakefilePackage):
depends_on('boost')
depends_on('readline')
- depends_on('vsearch', when='+vsearch', type='run')
+ depends_on('vsearch@2.13.3', when='+vsearch', type='run')
def edit(self, spec, prefix):
makefile = FileFilter('Makefile')
diff --git a/var/spack/repos/builtin/packages/motif/package.py b/var/spack/repos/builtin/packages/motif/package.py
index 7a6bc0de8f..c64d35fc43 100644
--- a/var/spack/repos/builtin/packages/motif/package.py
+++ b/var/spack/repos/builtin/packages/motif/package.py
@@ -33,6 +33,7 @@ class Motif(AutotoolsPackage):
depends_on("autoconf", type="build")
depends_on("m4", type="build")
depends_on("libtool", type="build")
+ depends_on("pkgconfig", type="build")
patch('add_xbitmaps_dependency.patch')
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/nag.patch b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_0.patch
index 458c18813e..18d5c2ad65 100644
--- a/var/spack/repos/builtin/packages/netcdf-fortran/nag.patch
+++ b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_0.patch
@@ -1,30 +1,28 @@
-diff --git a/configure b/configure
-index 06ac8b0..d518a1a 100755
--- a/configure
+++ b/configure
-@@ -10657,6 +10657,8 @@ _LT_EOF
+@@ -11563,6 +11563,8 @@ _LT_EOF
lf95*) # Lahey Fortran 8.1
whole_archive_flag_spec=
tmp_sharedflag='--shared' ;;
-+ nagfor*)
++ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
tmp_sharedflag='-qmkshrobj'
tmp_addflag= ;;
-@@ -14252,6 +14254,8 @@ _LT_EOF
+@@ -19036,6 +19038,8 @@ _LT_EOF
lf95*) # Lahey Fortran 8.1
whole_archive_flag_spec_F77=
tmp_sharedflag='--shared' ;;
-+ nagfor*)
++ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
tmp_sharedflag='-qmkshrobj'
tmp_addflag= ;;
-@@ -17142,6 +17146,8 @@ _LT_EOF
+@@ -22116,6 +22120,8 @@ _LT_EOF
lf95*) # Lahey Fortran 8.1
whole_archive_flag_spec_FC=
tmp_sharedflag='--shared' ;;
-+ nagfor*)
++ nagfor*) # NAGFOR 5.3
+ tmp_sharedflag='-Wl,-shared' ;;
xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
tmp_sharedflag='-qmkshrobj'
diff --git a/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_1.patch b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_1.patch
new file mode 100644
index 0000000000..8fb671093b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_1.patch
@@ -0,0 +1,71 @@
+--- a/confdb/ltmain.sh
++++ b/confdb/ltmain.sh
+@@ -180,6 +180,20 @@ func_basename ()
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+ } # func_basename may be replaced by extended shell implementation
+
++# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
++func_cc_basename ()
++{
++ for cc_temp in $*""; do
++ case $cc_temp in
++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
++ \-*) ;;
++ *) break;;
++ esac
++ done
++ func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
++}
++
+
+ # func_dirname_and_basename file append nondir_replacement
+ # perform func_basename and func_dirname in a single function
+@@ -6419,6 +6433,13 @@ func_mode_link ()
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8001,6 +8022,13 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+--- a/configure
++++ b/configure
+@@ -11614,6 +11614,8 @@ _LT_EOF
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
++ compiler_needs_object=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -19246,6 +19248,8 @@ _LT_EOF
+ whole_archive_flag_spec_FC=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
++ compiler_needs_object_FC=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
diff --git a/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_2.patch b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_2.patch
new file mode 100644
index 0000000000..871ffe6dd2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.2_2.patch
@@ -0,0 +1,11 @@
+--- a/configure
++++ b/configure
+@@ -22237,6 +22237,8 @@ _LT_EOF
+ whole_archive_flag_spec_F77=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
++ compiler_needs_object_F77=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
diff --git a/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.6.patch b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.6.patch
new file mode 100644
index 0000000000..50f73f2dde
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mpich/nag_libtool_2.4.6.patch
@@ -0,0 +1,69 @@
+--- a/confdb/ltmain.sh
++++ b/confdb/ltmain.sh
+@@ -7867,6 +7867,13 @@ func_mode_link ()
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8886,7 +8893,8 @@ func_mode_link ()
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+- case $CC in
++ func_cc_basename $CC
++ case $func_cc_basename_result in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+@@ -9498,6 +9506,13 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+--- a/configure
++++ b/configure
+@@ -12583,6 +12583,8 @@ _LT_EOF
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -20684,6 +20686,8 @@ _LT_EOF
+ whole_archive_flag_spec_FC=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object_FC=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -23958,6 +23962,8 @@ _LT_EOF
+ whole_archive_flag_spec_F77=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object_F77=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py
index 0980c66818..8360046ab4 100644
--- a/var/spack/repos/builtin/packages/mpich/package.py
+++ b/var/spack/repos/builtin/packages/mpich/package.py
@@ -63,6 +63,9 @@ spack package at this time.''',
)
variant('pci', default=(sys.platform != 'darwin'),
description="Support analyzing devices on PCI bus")
+ variant('libxml2', default=True,
+ description='Use libxml2 for XML support instead of the custom '
+ 'minimalistic implementation')
provides('mpi')
provides('mpi@:3.0', when='@3:')
@@ -86,6 +89,23 @@ spack package at this time.''',
sha256='c7d4ecf865dccff5b764d9c66b6a470d11b0b1a5b4f7ad1ffa61079ad6b5dede',
when='@3.3:3.3.0')
+ # This patch for Libtool 2.4.2 enables shared libraries for NAG and is
+ # applied by MPICH starting version 3.1.
+ patch('nag_libtool_2.4.2_0.patch', when='@:3.0%nag')
+
+ # This patch for Libtool 2.4.2 fixes the problem with '-pthread' flag and
+ # enables convenience libraries for NAG. Starting version 3.1, the order of
+ # checks for FC and F77 is changed, therefore we need to apply the patch in
+ # two steps (the patch files can be merged once the support for versions
+ # 3.1 and older is dropped).
+ patch('nag_libtool_2.4.2_1.patch', when='@:3.1.3%nag')
+ patch('nag_libtool_2.4.2_2.patch', when='@:3.1.3%nag')
+
+ # This patch for Libtool 2.4.6 does the same as the previous two. The
+ # problem is not fixed upstream yet and the upper version constraint is
+ # given just to avoid application of the patch to the develop version.
+ patch('nag_libtool_2.4.6.patch', when='@3.1.4:3.3%nag')
+
depends_on('findutils', type='build')
depends_on('pkgconfig', type='build')
@@ -96,8 +116,14 @@ spack package at this time.''',
depends_on('ucx', when='netmod=ucx')
- depends_on('libpciaccess', when="+pci")
- depends_on('libxml2')
+ # The dependencies on libpciaccess and libxml2 come from the embedded
+ # hwloc, which, before version 3.3, was used only for Hydra.
+ depends_on('libpciaccess', when="@:3.2+hydra+pci")
+ depends_on('libxml2', when='@:3.2+hydra+libxml2')
+
+ # Starting with version 3.3, MPICH uses hwloc directly.
+ depends_on('libpciaccess', when="@3.3:+pci")
+ depends_on('libxml2', when='@3.3:+libxml2')
# Starting with version 3.3, Hydra can use libslurm for nodelist parsing
depends_on('slurm', when='+slurm')
@@ -119,6 +145,12 @@ spack package at this time.''',
conflicts('pmi=pmi2', when='device=ch3 netmod=ofi')
conflicts('pmi=pmix', when='device=ch3')
+ # MPICH does not require libxml2 and libpciaccess for versions before 3.3
+ # when ~hydra is set: prevent users from setting +libxml2 and +pci in this
+ # case to avoid generating an identical MPICH installation.
+ conflicts('+pci', when='@:3.2~hydra')
+ conflicts('+libxml2', when='@:3.2~hydra')
+
def setup_build_environment(self, env):
env.unset('F90')
env.unset('F90FLAGS')
@@ -181,6 +213,7 @@ spack package at this time.''',
def configure_args(self):
spec = self.spec
config_args = [
+ '--disable-silent-rules',
'--enable-shared',
'--with-pm={0}'.format('hydra' if '+hydra' in spec else 'no'),
'--{0}-romio'.format('enable' if '+romio' in spec else 'disable'),
@@ -234,4 +267,11 @@ spack package at this time.''',
config_args.append('--with-ucx={0}'.format(
spec['ucx'].prefix))
+ # In other cases the argument is redundant.
+ if '@:3.2+hydra' in spec or '@3.3:' in spec:
+ # The root configure script passes the argument to the configure
+ # scripts of all instances of hwloc (there are three copies of it:
+ # for hydra, for hydra2, and for MPICH itself).
+ config_args += self.enable_or_disable('libxml2')
+
return config_args
diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py
index 36fe6e31a7..65c2453c25 100644
--- a/var/spack/repos/builtin/packages/mpip/package.py
+++ b/var/spack/repos/builtin/packages/mpip/package.py
@@ -16,14 +16,38 @@ class Mpip(AutotoolsPackage):
version('master', branch='master')
version("3.4.1", sha256="688bf37d73211e6a915f9fc59c358282a266d166c0a10af07a38a01a473296f0")
+ variant('shared', default=False, description="Build the shared library")
+ variant('demangling', default=False, description="Build with demangling support")
+ variant('setjmp',
+ default=False,
+ description="Replace glic backtrace() with setjmp for stack trace")
+
depends_on("elf")
depends_on("libdwarf")
depends_on('libunwind', when=os.uname()[4] == "x86_64")
depends_on("mpi")
+ @property
+ def build_targets(self):
+ targets = []
+ if '+shared' in self.spec:
+ targets.append('shared')
+
+ return targets
+
def configure_args(self):
config_args = ['--without-f77']
config_args.append("--with-cc=%s" % self.spec['mpi'].mpicc)
config_args.append("--with-cxx=%s" % self.spec['mpi'].mpicxx)
+ if '+demangling' in self.spec:
+ config_args.append('--enable-demangling')
+ else:
+ config_args.append('--disable-demangling')
+
+ if '+setjmp' in self.spec:
+ config_args.append('--enable-setjmp')
+ else:
+ config_args.append('--disable-setjmp')
+
return config_args
diff --git a/var/spack/repos/builtin/packages/mrbench/package.py b/var/spack/repos/builtin/packages/mrbench/package.py
new file mode 100644
index 0000000000..8f1b269b55
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mrbench/package.py
@@ -0,0 +1,23 @@
+# Copyright 2013-2020 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 Mrbench(Package):
+ """A simple Java tool for SMTP server benchmarking."""
+
+ homepage = "https://github.com/marcorosi/mrbench"
+ git = "https://github.com/marcorosi/mrbench.git"
+
+ version('master', branch='master')
+
+ depends_on('maven', type='build')
+ depends_on('java@8', type=('build', 'run'))
+
+ def install(self, spec, prefix):
+ mvn = which('mvn')
+ mvn('package', '-DskipTests')
+ install_tree('.', prefix)
diff --git a/var/spack/repos/builtin/packages/mrcpp/package.py b/var/spack/repos/builtin/packages/mrcpp/package.py
new file mode 100644
index 0000000000..558b145a71
--- /dev/null
+++ b/var/spack/repos/builtin/packages/mrcpp/package.py
@@ -0,0 +1,46 @@
+# Copyright 2013-2020 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 Mrcpp(CMakePackage):
+ """The MultiResolution Computation Program Package (MRCPP) is a general purpose
+ numerical mathematics library based on multiresolution analysis and the
+ multiwavelet basis which provide low-scaling algorithms as well as rigorous
+ error control in numerical computations."""
+
+ homepage = "https://mrcpp.readthedocs.io/en/latest/"
+ url = "https://github.com/MRChemSoft/mrcpp/archive/v1.1.0.tar.gz"
+
+ maintainers = ["robertodr", "stigrj", "ilfreddy"]
+
+ version('1.2.0-alpha2',
+ sha256='8f4df594751a5b7e76b09a62450c6c4956b1974876afa143cc9b5703156ccd40')
+ version('1.1.0',
+ sha256='e9ffb87eccbd45305f822a0b46b875788b70386b3c1d38add6540dc4e0327ab2',
+ preferred=True)
+ version('1.0.2',
+ sha256='d2b26f7d7b16fa67f16788119abc0f6c7562cb37ece9ba075c116463dcf19df3')
+ version('1.0.1',
+ sha256='b4d7120545da3531bc7aa0a4cb4eb579fdbe1f8e5d32b1fd1086976583e3e27c')
+ version('1.0.0',
+ sha256='0858146141d3a60232e8874380390f9e9fa0b1bd6e67099d5833704478213efd')
+
+ variant("openmp", default=True, description="Enable OpenMP support.")
+
+ variant("mpi", default=True, description="Enable MPI support")
+ depends_on("mpi", when="+mpi")
+
+ depends_on("cmake@3.11:", type="build")
+ depends_on("eigen")
+
+ def cmake_args(self):
+ args = [
+ "-DENABLE_OPENMP={0}".format("ON" if "+openmp" in
+ self.spec else "OFF"),
+ "-DENABLE_MPI={0}".format("ON" if "+mpi" in self.spec else "OFF"),
+ ]
+ return args
diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py
index a56bc111e2..de34b6aa19 100644
--- a/var/spack/repos/builtin/packages/mumps/package.py
+++ b/var/spack/repos/builtin/packages/mumps/package.py
@@ -241,7 +241,7 @@ class Mumps(Package):
else:
makefile_conf.extend([
'LIBEXT = .a',
- 'AR = ar vr',
+ 'AR = ar vr ',
'RANLIB = ranlib'
])
diff --git a/var/spack/repos/builtin/packages/munge/package.py b/var/spack/repos/builtin/packages/munge/package.py
index 5c10720e77..66d14ec5d7 100644
--- a/var/spack/repos/builtin/packages/munge/package.py
+++ b/var/spack/repos/builtin/packages/munge/package.py
@@ -10,14 +10,28 @@ import os
class Munge(AutotoolsPackage):
""" MUNGE Uid 'N' Gid Emporium """
homepage = "https://code.google.com/p/munge/"
- url = "https://github.com/dun/munge/releases/download/munge-0.5.13/munge-0.5.13.tar.xz"
+ url = "https://github.com/dun/munge/releases/download/munge-0.5.14/munge-0.5.14.tar.xz"
+ maintainers = ['ChristianTackeGSI']
+
+ version('0.5.14', sha256='6606a218f18090fa1f702e3f6fb608073eb6aafed534cf7dd81b67b2e0d30640')
version('0.5.13', sha256='99753dfd06a4f063c36f3fb0eb1964f394feb649937d94c4734d85b7964144da')
version('0.5.12', sha256='e972e3c3e947995a99e023f5758047db16cfe2f0c2c9ca76399dc1511fa71be8')
version('0.5.11', sha256='8e075614f81cb0a6df21a0aafdc825498611a04429d0876f074fc828739351a5',
url='https://github.com/dun/munge/releases/download/munge-0.5.11/munge-0.5.11.tar.bz2')
+ variant('localstatedir', default='PREFIX/var', values=any,
+ description='Set local state path (possibly to /var)')
+
depends_on('openssl')
depends_on('libgcrypt')
+ depends_on('bzip2')
+
+ def configure_args(self):
+ args = []
+ localstatedir = self.spec.variants['localstatedir'].value
+ if localstatedir != 'PREFIX/var':
+ args.append('--localstatedir={0}'.format(localstatedir))
+ return args
def install(self, spec, prefix):
os.makedirs(os.path.join(prefix, "lib/systemd/system"))
diff --git a/var/spack/repos/builtin/packages/muscle/package.py b/var/spack/repos/builtin/packages/muscle/package.py
index 4e62064362..0f5d5f5097 100644
--- a/var/spack/repos/builtin/packages/muscle/package.py
+++ b/var/spack/repos/builtin/packages/muscle/package.py
@@ -12,15 +12,36 @@ class Muscle(MakefilePackage):
that are consistently better than CLUSTALW."""
homepage = "http://drive5.com/muscle/"
- url = "http://www.drive5.com/muscle/muscle_src_3.8.1551.tar.gz"
+ version('3.8.31', sha256='43c5966a82133bd7da5921e8142f2f592c2b5f53d802f0527a2801783af809ad')
version('3.8.1551', sha256='c70c552231cd3289f1bad51c9bd174804c18bb3adcf47f501afec7a68f9c482e')
+ @property
+ def build_directory(self):
+ if self.spec.satisfies('@3.8.31'):
+ return 'src'
+ else:
+ return '.'
+
+ def url_for_version(self, version):
+ fmt_new = 'https://drive5.com/muscle/downloads{0}/muscle{0}_src.tar.gz'
+ fmt_old = 'https://drive5.com/muscle/muscle_src_{0}.tar.gz'
+
+ if version == Version('3.8.31'):
+ return fmt_new.format(version.dotted)
+ else:
+ return fmt_old.format(version.dotted)
+
def edit(self, spec, prefix):
- makefile = FileFilter('Makefile')
+ mkfile_name = 'Makefile'
+
+ if self.spec.satisfies('@3.8.31'):
+ mkfile_name = 'mk'
+
+ makefile = FileFilter(join_path(self.build_directory, mkfile_name))
makefile.filter('-static', '')
makefile.filter('-funroll-loops', '')
def install(self, spec, prefix):
mkdirp(prefix.bin)
- install('muscle', prefix.bin)
+ install(join_path(self.build_directory, 'muscle'), prefix.bin)
diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py
index 87e9f77848..f6301a564a 100644
--- a/var/spack/repos/builtin/packages/mvapich2/package.py
+++ b/var/spack/repos/builtin/packages/mvapich2/package.py
@@ -10,10 +10,11 @@ import sys
class Mvapich2(AutotoolsPackage):
"""MVAPICH2 is an MPI implementation for Infiniband networks."""
homepage = "http://mvapich.cse.ohio-state.edu/"
- url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.3.2.tar.gz"
+ url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.3.3.tar.gz"
list_url = "http://mvapich.cse.ohio-state.edu/downloads/"
# Prefer the latest stable release
+ version('2.3.3', sha256='41d3261be57e5bc8aabf4e32981543c015c5443ff032a26f18205985e18c2b73')
version('2.3.2', sha256='30cc0d7bcaa075d204692f76bca4d65a539e0f661c7460ffa9f835d6249e1ebf')
version('2.3.1', sha256='314e12829f75f3ed83cd4779a972572d1787aac6543a3d024ea7c6080e0ee3bf')
version('2.3', sha256='01d5fb592454ddd9ecc17e91c8983b6aea0e7559aa38f410b111c8ef385b50dd')
diff --git a/var/spack/repos/builtin/packages/mxnet/package.py b/var/spack/repos/builtin/packages/mxnet/package.py
index f3b7cddb23..492a2573bc 100644
--- a/var/spack/repos/builtin/packages/mxnet/package.py
+++ b/var/spack/repos/builtin/packages/mxnet/package.py
@@ -13,6 +13,8 @@ class Mxnet(MakefilePackage):
homepage = "http://mxnet.io"
url = "https://github.com/apache/incubator-mxnet/releases/download/1.3.0/apache-mxnet-src-1.3.0-incubating.tar.gz"
+ maintainers = ['adamjstewart']
+
version('1.3.0', sha256='c00d6fbb2947144ce36c835308e603f002c1eb90a9f4c5a62f4d398154eed4d2')
variant('cuda', default=False, description='Enable CUDA support')
diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py
index 4e23559913..1c777f3988 100644
--- a/var/spack/repos/builtin/packages/nag/package.py
+++ b/var/spack/repos/builtin/packages/nag/package.py
@@ -12,7 +12,7 @@ class Nag(Package):
homepage = "http://www.nag.com/nagware/np.asp"
maintainers = ['ThemosTsikas']
- version('7.0', sha256='fafd97ebb58753ab5b9f13822d2e3d24c2f488ea25928c4c3a13e4e2e350ab3e')
+ version('7.0', sha256='328f35fc419415dad66ed3bf5c7bc7f3260d3f9977c7cf37b3e56c29abdf41f0')
version('6.2', sha256='9b60f6ffa4f4be631079676963e74eea25e8824512e5c864eb06758b2a3cdd2d')
version('6.1', sha256='32580e0004e6798abf1fa52f0070281b28abeb0da2387530a4cc41218e813c7c')
diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py
index 0901db0a05..9fce06f929 100644
--- a/var/spack/repos/builtin/packages/nano/package.py
+++ b/var/spack/repos/builtin/packages/nano/package.py
@@ -10,11 +10,16 @@ class Nano(AutotoolsPackage):
"""Tiny little text editor"""
homepage = "http://www.nano-editor.org"
- url = "https://www.nano-editor.org/dist/v4/nano-4.4.tar.xz"
+ url = "https://www.nano-editor.org/dist/v4/nano-4.9.tar.xz"
list_url = "https://www.nano-editor.org/dist/"
list_depth = 1
# 4.x
+ version('4.9', sha256='0e399729d105cb1a587b4140db5cf1b23215a0886a42b215efa98137164233a6')
+ version('4.8', sha256='c348f61c68ab1d573b308398212a09cd68c60fbee20f01a5bd4b50071a258e63')
+ version('4.7', sha256='58c0e197de5339ca3cad3ef42b65626d612ddb0b270e730f02e6ab3785c736f5')
+ version('4.6', sha256='9bac3a4153774fd921dd3eb291986d43985466b081165b5ac5262b37b79628e9')
+ version('4.5', sha256='ded5c38f5ecd9de2b624e0db8013a375c169d3fbbd49575967b868847df8f533')
version('4.4', sha256='2af222e0354848ffaa3af31b5cd0a77917e9cb7742cd073d762f3c32f0f582c7')
version('4.3', sha256='00d3ad1a287a85b4bf83e5f06cedd0a9f880413682bebd52b4b1e2af8cfc0d81')
version('4.2', sha256='1143defce62e391b241252ffdb6e5c1ded56cfe26d46ee81b796abe0ccc45df9')
diff --git a/var/spack/repos/builtin/packages/nanomsg/package.py b/var/spack/repos/builtin/packages/nanomsg/package.py
new file mode 100644
index 0000000000..c3c5bb05e6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/nanomsg/package.py
@@ -0,0 +1,17 @@
+# Copyright 2013-2020 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 Nanomsg(CMakePackage):
+ """The nanomsg library is a simple high-performance
+ implementation of several 'scalability protocols'"""
+
+ homepage = "https://nanomsg.org/"
+ url = "https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz"
+
+ version('1.1.5', sha256='218b31ae1534ab897cb5c419973603de9ca1a5f54df2e724ab4a188eb416df5a')
+ version('1.0.0', sha256='24afdeb71b2e362e8a003a7ecc906e1b84fd9f56ce15ec567481d1bb33132cc7')
diff --git a/var/spack/repos/builtin/packages/nccl-tests/package.py b/var/spack/repos/builtin/packages/nccl-tests/package.py
new file mode 100644
index 0000000000..cb5c0cc9f0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/nccl-tests/package.py
@@ -0,0 +1,36 @@
+# Copyright 2013-2020 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)
+
+
+class NcclTests(MakefilePackage, CudaPackage):
+ """These tests check both the performance and
+ the correctness of NCCL operations."""
+
+ homepage = "https://github.com/NVIDIA/nccl-tests"
+ url = "https://github.com/NVIDIA/nccl-tests/archive/v2.0.0.tar.gz"
+
+ version('2.0.0', sha256='731fc3b7c37de59cfe880bf198349ac185639ef23570749ea6aef334c850c49c')
+
+ variant('mpi', default=True, description='with MPI support')
+ variant('cuda', default=True, description='with CUDA support, must be true')
+ conflicts('~cuda', msg='nccl-tests require cuda')
+
+ depends_on('nccl')
+ depends_on('cuda')
+ depends_on('mpi', when='+mpi')
+
+ @property
+ def build_targets(self):
+ targets = []
+ targets.append('CUDA_HOME={0}'.format(self.spec['cuda'].prefix))
+ targets.append('NCCL_HOME={0}'.format(self.spec['nccl'].prefix))
+ if '+mpi' in self.spec:
+ targets.append('MPI_HOME={0}'.format(self.spec['mpi'].prefix))
+ targets.append('MPI=1')
+ return targets
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.bin)
+ install_tree('./build', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py
index e166834675..4dbbbf24ea 100644
--- a/var/spack/repos/builtin/packages/nccl/package.py
+++ b/var/spack/repos/builtin/packages/nccl/package.py
@@ -24,6 +24,7 @@ class Nccl(MakefilePackage):
version('1.3.0-1', sha256='53f36151061907bdcafad1c26c1d9370a0a8400f561a83704a5138213ba51003')
depends_on('cuda')
+ depends_on('rdma-core', when='@2.3.5-5:')
# https://github.com/NVIDIA/nccl/issues/244
patch('so_reuseport.patch', when='@2.3.7-1:2.4.8-1')
diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py
index 0fa063c52c..e6e09faae1 100644
--- a/var/spack/repos/builtin/packages/ncl/package.py
+++ b/var/spack/repos/builtin/packages/ncl/package.py
@@ -48,7 +48,7 @@ class Ncl(Package):
# Extra dependencies that may be missing from build system:
depends_on('bison', type='build')
depends_on('flex+lex')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('tcsh')
# Also, the manual says that ncl requires zlib, but that comes as a
@@ -57,7 +57,7 @@ class Ncl(Package):
# The following dependencies are required, otherwise several components
# fail to compile:
depends_on('curl')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('libx11')
depends_on('libxaw')
depends_on('libxmu')
diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py
index 7b9b67b939..9df2de49b7 100644
--- a/var/spack/repos/builtin/packages/ncurses/package.py
+++ b/var/spack/repos/builtin/packages/ncurses/package.py
@@ -20,13 +20,14 @@ class Ncurses(AutotoolsPackage, GNUMirrorPackage):
# URL must remain http:// so Spack can bootstrap curl
gnu_mirror_path = "ncurses/ncurses-6.1.tar.gz"
+ version('6.2', sha256='30306e0c76e0f9f1f0de987cf1c82a5c21e1ce6568b9227f7da5b71cbea86c9d')
version('6.1', sha256='aa057eeeb4a14d470101eff4597d5833dcef5965331be3528c08d99cebaa0d17')
version('6.0', sha256='f551c24b30ce8bfb6e96d9f59b42fbea30fa3a6123384172f9e7284bcf647260')
version('5.9', sha256='9046298fb440324c9d4135ecea7879ffed8546dd1b58e59430ea07a4633f563b')
variant('symlinks', default=False,
description='Enables symlinks. Needed on AFS filesystem.')
- variant('termlib', default=False,
+ variant('termlib', default=True,
description='Enables termlib needs for gnutls in emacs.')
depends_on('pkgconfig', type='build')
diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py
index 01f2acf425..ac12ab42b4 100644
--- a/var/spack/repos/builtin/packages/netcdf-c/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-c/package.py
@@ -5,16 +5,6 @@
from spack import *
-import numbers
-
-
-def is_integral(x):
- """Any integer value"""
- try:
- return isinstance(int(x), numbers.Integral) and not isinstance(x, bool)
- except ValueError:
- return False
-
class NetcdfC(AutotoolsPackage):
"""NetCDF (network Common Data Form) is a set of software libraries and
@@ -23,16 +13,18 @@ class NetcdfC(AutotoolsPackage):
homepage = "http://www.unidata.ucar.edu/software/netcdf"
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"
+ url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-c-4.7.3.tar.gz"
def url_for_version(self, version):
if version >= Version('4.6.2'):
- url = "https://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-c-{0}.tar.gz"
+ url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-c-{0}.tar.gz"
else:
- url = "https://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-{0}.tar.gz"
+ url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-{0}.tar.gz"
return url.format(version.dotted)
+ maintainers = ['skosukhin', 'WardF']
+
version('master', branch='master')
version('4.7.3', sha256='8e8c9f4ee15531debcf83788594744bd6553b8489c06a43485a15c93b4e0448b')
version('4.7.2', sha256='b751cc1f314ac8357df2e0a1bacf35a624df26fe90981d3ad3fa85a5bbd8989a')
@@ -76,22 +68,6 @@ class NetcdfC(AutotoolsPackage):
# variant('cdmremote', default=False,
# description='Enable CDM Remote support')
- # These variants control the number of dimensions (i.e. coordinates and
- # attributes) and variables (e.g. time, entity ID, number of coordinates)
- # that can be used in any particular NetCDF file.
- variant(
- 'maxdims',
- default=1024,
- description='Defines the maximum dimensions of NetCDF files.',
- values=is_integral
- )
- variant(
- 'maxvars',
- default=8192,
- description='Defines the maximum variables of NetCDF files.',
- values=is_integral
- )
-
# The patch for 4.7.0 touches configure.ac. See force_autoreconf below.
depends_on('autoconf', type='build', when='@4.7.0')
depends_on('automake', type='build', when='@4.7.0')
@@ -157,20 +133,6 @@ class NetcdfC(AutotoolsPackage):
# The patch for 4.7.0 touches configure.ac.
return self.spec.satisfies('@4.7.0')
- def patch(self):
- try:
- max_dims = int(self.spec.variants['maxdims'].value)
- max_vars = int(self.spec.variants['maxvars'].value)
- except (ValueError, TypeError):
- raise TypeError('NetCDF variant values max[dims|vars] must be '
- 'integer values.')
-
- ff = FileFilter(join_path('include', 'netcdf.h'))
- ff.filter(r'^(#define\s+NC_MAX_DIMS\s+)\d+(.*)$',
- r'\1{0}\2'.format(max_dims))
- ff.filter(r'^(#define\s+NC_MAX_VARS\s+)\d+(.*)$',
- r'\1{0}\2'.format(max_vars))
-
def configure_args(self):
cflags = []
cppflags = []
diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
index ce1a851ce3..a31e43c879 100644
--- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
@@ -12,14 +12,24 @@ class NetcdfCxx4(AutotoolsPackage):
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"
+ url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-cxx4-4.3.1.tar.gz"
+
+ maintainers = ['WardF']
version('4.3.1', sha256='6a1189a181eed043b5859e15d5c080c30d0e107406fbb212c8fb9814e90f3445')
- version('4.3.0', sha256='f4766d5a19c91093be80ddd2eaf1fbbd8d203854cc69fc73d2ad293b099ac799')
+ version('4.3.0', sha256='e34fbc6aba243ec82c23e9ee99db2430555ada849c54c1f3ab081b0ddd0f5f30')
# Usually the configure automatically inserts the pic flags, but we can
# force its usage with this variant.
+ variant('static', default=True, description='Enable building static libraries')
+ variant('shared', default=True, description='Enable shared library')
variant('pic', default=True, description='Produce position-independent code (for shared libs)')
+ variant('dap', default=False, description='Enable DAP support')
+ variant('jna', default=False, description='Enable JNA support')
+ variant('doxygen', default=True, description='Enable doxygen docs')
+ variant('ncgen4', default=True, description='Enable generating netcdf-4 data')
+ variant('pnetcdf', default=True, description='Enable parallel-netcdf')
+ variant('netcdf4', default=False, description='Enable netcdf-4 data structure')
depends_on('netcdf-c')
@@ -28,6 +38,8 @@ class NetcdfCxx4(AutotoolsPackage):
depends_on('libtool', type='build')
depends_on('m4', type='build')
+ conflicts('~shared', when='~static')
+
force_autoreconf = True
def flag_handler(self, name, flags):
@@ -44,3 +56,52 @@ class NetcdfCxx4(AutotoolsPackage):
return find_libraries(
'libnetcdf_c++4', root=self.prefix, shared=shared, recursive=True
)
+
+ def configure_args(self):
+
+ if '+static' in self.spec:
+ config_args.append('--enable-static')
+ else:
+ config_args.append('--disable-static')
+
+ if '+shared' in self.spec:
+ config_args.append('--enable-shared')
+ else:
+ config_args.append('--disable-shared')
+
+ if '+pic' in self.spec:
+ config_args.append('--with-pic')
+ else:
+ config_args.append('--without-pic')
+
+ if '+dap' in self.spec:
+ config_args.append('--enable-dap')
+ else:
+ config_args.append('--disable-dap')
+
+ if '+jna' in self.spec:
+ config_args.append('--enable-jna')
+ else:
+ config_args.append('--disable-jna')
+
+ if '+pnetcdf' in self.spec:
+ config_args.append('--enable-pnetcdf')
+ else:
+ config_args.append('--disable-pnetcdf')
+
+ if '+netcdf4' in self.spec:
+ config_args.append('--enable-netcdf-4')
+ else:
+ config_args.append('--disable-netcdf-4')
+
+ if '+ncgen4' in self.spec:
+ config_args.append('--enable-ncgen4')
+ else:
+ config_args.append('--disable-ncgen4')
+
+ if '+doxygen' in self.spec:
+ config_args.append('--enable-doxygen')
+ else:
+ config_args.append('--disable-doxygen')
+
+ return config_args
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/excessive_linking.patch b/var/spack/repos/builtin/packages/netcdf-fortran/excessive_linking.patch
new file mode 100644
index 0000000000..11e149081a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/excessive_linking.patch
@@ -0,0 +1,312 @@
+--- a/config.h.in
++++ b/config.h.in
+@@ -52,9 +52,6 @@
+ /* Define to 1 if you have the <inttypes.h> header file. */
+ #undef HAVE_INTTYPES_H
+
+-/* Define to 1 if you have the `curl' library (-lcurl). */
+-#undef HAVE_LIBCURL
+-
+ /* Define to 1 if you have the `m' library (-lm). */
+ #undef HAVE_LIBM
+
+--- a/configure
++++ b/configure
+@@ -22122,6 +22122,14 @@ $as_echo "$as_me: checking types, headers, and functions" >&6;}
+
+ # We must check for all these, because they may be used by the netCDF
+ # C library.
++# Removing the checks for some of the libraries because of issues
++# observed when they are detected, are not needed, and an attempt to
++# link against is made anyways.
++# See https://github.com/Unidata/netcdf-fortran/issues/164
++#
++# Specifying LDFLAGS="$(nc-config --libs [--static])" should
++# let downstream developers link more reliably against libnetcdf.
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for floor in -lm" >&5
+ $as_echo_n "checking for floor in -lm... " >&6; }
+ if ${ac_cv_lib_m_floor+:} false; then :
+@@ -22167,163 +22175,6 @@ _ACEOF
+
+ fi
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl_easy_setopt in -lcurl" >&5
+-$as_echo_n "checking for curl_easy_setopt in -lcurl... " >&6; }
+-if ${ac_cv_lib_curl_curl_easy_setopt+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lcurl $LIBS"
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char curl_easy_setopt ();
+-int
+-main ()
+-{
+-return curl_easy_setopt ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_lib_curl_curl_easy_setopt=yes
+-else
+- ac_cv_lib_curl_curl_easy_setopt=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curl_curl_easy_setopt" >&5
+-$as_echo "$ac_cv_lib_curl_curl_easy_setopt" >&6; }
+-if test "x$ac_cv_lib_curl_curl_easy_setopt" = xyes; then :
+- cat >>confdefs.h <<_ACEOF
+-#define HAVE_LIBCURL 1
+-_ACEOF
+-
+- LIBS="-lcurl $LIBS"
+-
+-fi
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing deflate" >&5
+-$as_echo_n "checking for library containing deflate... " >&6; }
+-if ${ac_cv_search_deflate+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char deflate ();
+-int
+-main ()
+-{
+-return deflate ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-for ac_lib in '' zlibwapi zlibstat zlib zlib1 z; do
+- if test -z "$ac_lib"; then
+- ac_res="none required"
+- else
+- ac_res=-l$ac_lib
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- fi
+- if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_search_deflate=$ac_res
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext
+- if ${ac_cv_search_deflate+:} false; then :
+- break
+-fi
+-done
+-if ${ac_cv_search_deflate+:} false; then :
+-
+-else
+- ac_cv_search_deflate=no
+-fi
+-rm conftest.$ac_ext
+-LIBS=$ac_func_search_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_deflate" >&5
+-$as_echo "$ac_cv_search_deflate" >&6; }
+-ac_res=$ac_cv_search_deflate
+-if test "$ac_res" != no; then :
+- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+-
+-fi
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SZ_Compress" >&5
+-$as_echo_n "checking for library containing SZ_Compress... " >&6; }
+-if ${ac_cv_search_SZ_Compress+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char SZ_Compress ();
+-int
+-main ()
+-{
+-return SZ_Compress ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-for ac_lib in '' szip sz; do
+- if test -z "$ac_lib"; then
+- ac_res="none required"
+- else
+- ac_res=-l$ac_lib
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- fi
+- if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_search_SZ_Compress=$ac_res
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext
+- if ${ac_cv_search_SZ_Compress+:} false; then :
+- break
+-fi
+-done
+-if ${ac_cv_search_SZ_Compress+:} false; then :
+-
+-else
+- ac_cv_search_SZ_Compress=no
+-fi
+-rm conftest.$ac_ext
+-LIBS=$ac_func_search_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SZ_Compress" >&5
+-$as_echo "$ac_cv_search_SZ_Compress" >&6; }
+-ac_res=$ac_cv_search_SZ_Compress
+-if test "$ac_res" != no; then :
+- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+-
+-fi
+-
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+ $as_echo_n "checking for library containing dlopen... " >&6; }
+ if ${ac_cv_search_dlopen+:} false; then :
+@@ -22380,118 +22231,6 @@ if test "$ac_res" != no; then :
+
+ fi
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing H5Fflush" >&5
+-$as_echo_n "checking for library containing H5Fflush... " >&6; }
+-if ${ac_cv_search_H5Fflush+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char H5Fflush ();
+-int
+-main ()
+-{
+-return H5Fflush ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-for ac_lib in '' hdf5dll hdf5; do
+- if test -z "$ac_lib"; then
+- ac_res="none required"
+- else
+- ac_res=-l$ac_lib
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- fi
+- if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_search_H5Fflush=$ac_res
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext
+- if ${ac_cv_search_H5Fflush+:} false; then :
+- break
+-fi
+-done
+-if ${ac_cv_search_H5Fflush+:} false; then :
+-
+-else
+- ac_cv_search_H5Fflush=no
+-fi
+-rm conftest.$ac_ext
+-LIBS=$ac_func_search_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_H5Fflush" >&5
+-$as_echo "$ac_cv_search_H5Fflush" >&6; }
+-ac_res=$ac_cv_search_H5Fflush
+-if test "$ac_res" != no; then :
+- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+-
+-fi
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing H5DSis_scale" >&5
+-$as_echo_n "checking for library containing H5DSis_scale... " >&6; }
+-if ${ac_cv_search_H5DSis_scale+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char H5DSis_scale ();
+-int
+-main ()
+-{
+-return H5DSis_scale ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-for ac_lib in '' hdf5_hldll hdf5_hl; do
+- if test -z "$ac_lib"; then
+- ac_res="none required"
+- else
+- ac_res=-l$ac_lib
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- fi
+- if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_search_H5DSis_scale=$ac_res
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext
+- if ${ac_cv_search_H5DSis_scale+:} false; then :
+- break
+-fi
+-done
+-if ${ac_cv_search_H5DSis_scale+:} false; then :
+-
+-else
+- ac_cv_search_H5DSis_scale=no
+-fi
+-rm conftest.$ac_ext
+-LIBS=$ac_func_search_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_H5DSis_scale" >&5
+-$as_echo "$ac_cv_search_H5DSis_scale" >&6; }
+-ac_res=$ac_cv_search_H5DSis_scale
+-if test "$ac_res" != no; then :
+- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+-
+-fi
+-
+
+ # Find the netCDF header and library.
+ for ac_header in netcdf.h
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/logging.patch b/var/spack/repos/builtin/packages/netcdf-fortran/logging.patch
new file mode 100644
index 0000000000..fadeb8cfe6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/logging.patch
@@ -0,0 +1,13 @@
+--- a/fortran/nf_logging.F90
++++ b/fortran/nf_logging.F90
+@@ -1,3 +1,10 @@
++! This file is compiled only if logging is enabled. However, the macro LOGGING
++! is never defined. For most of the compilers this simply leads to an empty
++! object: they do not complain when a source file is empty. This is not the
++! case for NAG: the compiler fails the compilation of empty sources. To fix
++! this problem, we define the macro here.
++#define LOGGING
++
+ #ifdef LOGGING
+ ! Function to turn on logging
+ !-------------------------------- nf_set_log_level ----------------------------
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.2.patch b/var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.2.patch
new file mode 100644
index 0000000000..73fbdbd03b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.2.patch
@@ -0,0 +1,124 @@
+--- a/configure
++++ b/configure
+@@ -9584,6 +9584,10 @@ for cc_temp in $compiler""; do
+ esac
+ done
+ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
++case $cc_basename in
++ nagfor*) ;;
++ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && cc_basename='nagfor-wrapper' ;;
++esac
+
+
+ # Only perform the check for file, if the check method requires it
+@@ -10657,6 +10661,10 @@ _LT_EOF
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
++ nagfor*)
++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
++ compiler_needs_object=yes
++ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+@@ -13415,6 +13423,10 @@ $RM -r conftest*
+ esac
+ done
+ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
++case $cc_basename in
++ nagfor*) ;;
++ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && cc_basename='nagfor-wrapper' ;;
++esac
+
+ GCC=$G77
+ if test -n "$compiler"; then
+@@ -14252,6 +14264,10 @@ _LT_EOF
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec_F77=
+ tmp_sharedflag='--shared' ;;
++ nagfor*)
++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
++ compiler_needs_object_F77=yes
++ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+@@ -16142,6 +16158,10 @@ $RM -r conftest*
+ esac
+ done
+ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
++case $cc_basename in
++ nagfor*) ;;
++ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && cc_basename='nagfor-wrapper' ;;
++esac
+
+
+ if test -n "$compiler"; then
+@@ -17142,6 +17162,10 @@ _LT_EOF
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec_FC=
+ tmp_sharedflag='--shared' ;;
++ nagfor*)
++ whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
++ compiler_needs_object_FC=yes
++ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -180,6 +180,24 @@ func_basename ()
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+ } # func_basename may be replaced by extended shell implementation
+
++# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
++func_cc_basename ()
++{
++ for cc_temp in $*""; do
++ case $cc_temp in
++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
++ \-*) ;;
++ *) break;;
++ esac
++ done
++ func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
++ case $func_cc_basename_result in
++ nagfor*) ;;
++ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && func_cc_basename_result='nagfor-wrapper' ;;
++ esac
++}
++
+
+ # func_dirname_and_basename file append nondir_replacement
+ # perform func_basename and func_dirname in a single function
+@@ -6422,6 +6440,13 @@ func_mode_link ()
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8007,6 +8032,14 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.6.patch b/var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.6.patch
new file mode 100644
index 0000000000..dfb47fd5f2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/nag_libtool_2.4.6.patch
@@ -0,0 +1,96 @@
+--- a/configure
++++ b/configure
+@@ -9034,6 +9034,12 @@ func_cc_basename ()
+ esac
+ done
+ func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
++
++ # Set result to 'nagfor-wrapper' when NAG compiler is called via a wrapper (e.g. mpif90).
++ case $func_cc_basename_result in
++ nagfor*) ;;
++ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && func_cc_basename_result='nagfor-wrapper' ;;
++ esac
+ }
+
+ # Check whether --enable-libtool-lock was given.
+@@ -11811,6 +11817,8 @@ _LT_EOF
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -15663,6 +15671,8 @@ _LT_EOF
+ whole_archive_flag_spec_F77=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object_F77=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -18788,6 +18798,8 @@ _LT_EOF
+ whole_archive_flag_spec_FC=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object_FC=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -26086,6 +26098,12 @@ func_cc_basename ()
+ esac
+ done
+ func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
++
++ # Set result to 'nagfor-wrapper' when NAG compiler is called via a wrapper (e.g. mpif90).
++ case $func_cc_basename_result in
++ nagfor*) ;;
++ *) $cc_temp -V 2>&1 | $GREP '^NAG Fortran Compiler Release' >/dev/null 2>&1 && func_cc_basename_result='nagfor-wrapper' ;;
++ esac
+ }
+
+
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -7868,6 +7868,13 @@ func_mode_link ()
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8890,7 +8897,8 @@ func_mode_link ()
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+- case $CC in
++ func_cc_basename $CC
++ case $func_cc_basename_result in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+@@ -9502,6 +9510,14 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/nag_testing.patch b/var/spack/repos/builtin/packages/netcdf-fortran/nag_testing.patch
new file mode 100644
index 0000000000..4c730f94c8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/nag_testing.patch
@@ -0,0 +1,11 @@
+--- a/nf_test/ftst_rengrps.F
++++ b/nf_test/ftst_rengrps.F
+@@ -11,7 +11,7 @@ C use typeSizes
+ C use netcdf
+ C use netcdf4_f03
+ implicit none
+- include "netcdf.inc"
++ include "netcdf.inc"
+
+ C This is the name of the data file we will create.
+ character (len = *), parameter :: FILE_NAME = "ftst_rengrps.nc"
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
index e3703fd609..51ff028276 100644
--- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
@@ -13,7 +13,9 @@ class NetcdfFortran(AutotoolsPackage):
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"
+ url = "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-4.5.2.tar.gz"
+
+ maintainers = ['skosukhin', 'WardF']
version('4.5.2', sha256='b959937d7d9045184e9d2040a915d94a7f4d0185f4a9dceb8f08c94b0c3304aa')
version('4.4.5', sha256='2467536ce29daea348c736476aa8e684c075d2f6cab12f3361885cb6905717b8')
@@ -24,6 +26,7 @@ class NetcdfFortran(AutotoolsPackage):
description='Enable parallel I/O for netcdf-4')
variant('pic', default=True,
description='Produce position-independent code (for shared libs)')
+ variant('shared', default=True, description='Enable shared library')
# We need to build with MPI wrappers if parallel I/O features is enabled:
# https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html
@@ -34,42 +37,79 @@ class NetcdfFortran(AutotoolsPackage):
# The default libtool.m4 is too old to handle NAG compiler properly:
# https://github.com/Unidata/netcdf-fortran/issues/94
- patch('nag.patch', when='@:4.4.4%nag')
+ # Moreover, Libtool can't handle '-pthread' flag coming from libcurl,
+ # doesn't inject convenience libraries into the shared ones, and is unable
+ # to detect NAG when it is called with an MPI wrapper.
+ patch('nag_libtool_2.4.2.patch', when='@:4.4.4%nag')
+ patch('nag_libtool_2.4.6.patch', when='@4.4.5:%nag')
+
+ # Enable 'make check' for NAG, which is too strict.
+ patch('nag_testing.patch', when='@4.4.5%nag')
+
+ # File fortran/nf_logging.F90 is compiled without -DLOGGING, which leads
+ # to missing symbols in the library. Additionally, the patch enables
+ # building with NAG, which refuses to compile empty source files (see also
+ # comments in the patch):
+ patch('logging.patch', when='@:4.4.5')
+
+ # Prevent excessive linking to system libraries. Without this patch the
+ # library might get linked to the system installation of libcurl. See
+ # https://github.com/Unidata/netcdf-fortran/commit/0a11f580faebbc1c4dce68bf5135709d1c7c7cc1#diff-67e997bcfdac55191033d57a16d1408a
+ patch('excessive_linking.patch', when='@4.4.5')
# Parallel builds do not work in the fortran directory. This patch is
# derived from https://github.com/Unidata/netcdf-fortran/pull/211
patch('no_parallel_build.patch', when='@4.5.2')
def flag_handler(self, name, flags):
+ config_flags = None
+
if name in ['cflags', 'fflags'] and '+pic' in self.spec:
- flags.append(self.compiler.pic_flag)
+ # Unlike NetCDF-C, we add PIC flag only when +pic. Adding the
+ # flags also when ~shared would make it impossible to build a
+ # static-only version of the library with NAG.
+ config_flags = [self.compiler.pic_flag]
elif name == 'cppflags':
- flags.append(self.spec['netcdf-c'].headers.cpp_flags)
+ config_flags = [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-c'].libs.search_flags)
+ config_flags = [self.spec['netcdf-c'].libs.search_flags]
- return None, None, flags
+ return flags, None, config_flags
@property
def libs(self):
libraries = ['libnetcdff']
- # This package installs both shared and static libraries. Permit
- # clients to query which one they want.
query_parameters = self.spec.last_query.extra_parameters
- shared = 'shared' in query_parameters
- return find_libraries(
+ if 'shared' in query_parameters:
+ shared = True
+ elif 'static' in query_parameters:
+ shared = False
+ else:
+ shared = '+shared' in self.spec
+
+ libs = find_libraries(
libraries, root=self.prefix, shared=shared, recursive=True
)
+ if libs:
+ return libs
+
+ msg = 'Unable to recursively locate {0} {1} libraries in {2}'
+ raise spack.error.NoLibrariesError(
+ msg.format('shared' if shared else 'static',
+ self.spec.name,
+ self.spec.prefix))
+
def configure_args(self):
- config_args = []
+ config_args = self.enable_or_disable('shared')
+ config_args.append('--enable-static')
if '+mpi' in self.spec:
config_args.append('CC=%s' % self.spec['mpi'].mpicc)
@@ -77,3 +117,8 @@ class NetcdfFortran(AutotoolsPackage):
config_args.append('F77=%s' % self.spec['mpi'].mpif77)
return config_args
+
+ @when('@:4.4.5')
+ def check(self):
+ with working_dir(self.build_directory):
+ make('check', parallel=False)
diff --git a/var/spack/repos/builtin/packages/nfs-ganesha/package.py b/var/spack/repos/builtin/packages/nfs-ganesha/package.py
new file mode 100644
index 0000000000..1ea286270d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/nfs-ganesha/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 NfsGanesha(CMakePackage):
+ """NFS-Ganesha is an NFSv3,v4,v4.1 fileserver that runs in user mode
+ on most UNIX/Linux systems. It also supports the 9p.2000L protocol."""
+
+ homepage = "https://github.com/nfs-ganesha/nfs-ganesha/wiki"
+ url = "https://github.com/nfs-ganesha/nfs-ganesha/archive/V3.2.tar.gz"
+
+ version('3.2', sha256='1e3635f0eb0bc32868ea7d923d061d0f6b1bd03b45da34356c7c53d4c0ebafbd')
+ version('3.1', sha256='c4cf78929f39b8af44b05e813783b2c39e348b485043c6290c4bca705bb5015f')
+ version('3.0.3', sha256='fcc0361b9a2752be7eb4e990230765e17de373452ac24514be22c81a5447a460')
+ version('3.0', sha256='136c5642ff21ec6e8a4e77c037f6218a39b2eeba77798b13556f1abbb0923ccd')
+
+ depends_on('bison', type='build')
+ depends_on('flex', type='build')
+ depends_on('userspace-rcu')
+ depends_on('ntirpc')
+
+ root_cmakelists_dir = 'src'
+
+ def setup_build_environment(self, env):
+ env.prepend_path('CPATH', self.spec['ntirpc'].prefix.include.ntirpc)
diff --git a/var/spack/repos/builtin/packages/nfs-utils/package.py b/var/spack/repos/builtin/packages/nfs-utils/package.py
new file mode 100644
index 0000000000..be46c57030
--- /dev/null
+++ b/var/spack/repos/builtin/packages/nfs-utils/package.py
@@ -0,0 +1,34 @@
+# Copyright 2013-2020 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 NfsUtils(AutotoolsPackage):
+ """The NFS Utilities package contains the userspace server and client tools
+ necessary to use the kernel's NFS abilities. NFS is a protocol that allows
+ sharing file systems over the network."""
+
+ homepage = "http://linux-nfs.org/"
+ url = "https://sourceforge.net/projects/nfs/files/nfs-utils/2.4.2/nfs-utils-2.4.2.tar.gz/download"
+
+ version('2.4.2', sha256='bb08106cd7bd397c6cc34e2461bc7818a664450d2805da08b07e1ced88e5155f')
+ version('2.4.1', sha256='c0dda96318af554881f4eb1590bfe91f1aba2fba59ed2ac3ba099f80fdf838e9')
+ version('2.3.4', sha256='36e70b0a583751ead0034ebe5d8826caf2dcc7ee7c0beefe94d6ee5a3b0b2484')
+
+ depends_on('libtirpc')
+ depends_on('libevent')
+ depends_on('libdmx')
+ depends_on('lvm2')
+ depends_on('keyutils')
+ depends_on('sqlite')
+ depends_on('util-linux')
+
+ def setup_build_environment(self, env):
+ env.append_flags('LDFLAGS', '-lintl')
+
+ def configure_args(self):
+ args = ['--disable-gss', '--with-rpcgen=internal']
+ return args
diff --git a/var/spack/repos/builtin/packages/nlopt/package.py b/var/spack/repos/builtin/packages/nlopt/package.py
index c533bf60e8..509218ea83 100644
--- a/var/spack/repos/builtin/packages/nlopt/package.py
+++ b/var/spack/repos/builtin/packages/nlopt/package.py
@@ -17,6 +17,7 @@ class Nlopt(CMakePackage):
git = "https://github.com/stevengj/nlopt.git"
version('master', branch='master')
+ version('2.6.1', sha256='66d63a505187fb6f98642703bd0ef006fedcae2f9a6d1efa4f362ea919a02650')
version('2.5.0', sha256='c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae')
variant('shared', default=True, description='Enables the build of shared libraries')
diff --git a/var/spack/repos/builtin/packages/ntirpc/package.py b/var/spack/repos/builtin/packages/ntirpc/package.py
new file mode 100644
index 0000000000..fa29056e16
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ntirpc/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2020 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 Ntirpc(CMakePackage):
+ """New development on tirpc"""
+
+ homepage = "https://github.com/nfs-ganesha/ntirpc"
+ url = "https://github.com/nfs-ganesha/ntirpc/archive/v3.2.tar.gz"
+
+ version('3.2', sha256='db1639ca2f15df7e30d8c0a820ed9adf4eb623798db03b56a3659eedff49af76')
+ version('3.1', sha256='280b57db3a37c5b05116a7850460152b1ac53c050fd61ce190f5a5eb55ed3ba1')
+ version('3.0', sha256='9a6b11c1aa3e7f5f1f491bca0275e759de5bed2d73c8a028af7b6aadb68ac795')
+ version('1.8.0', sha256='3bb642dccc8f2506b57a03b5d3358654f59f47b33fddfaa5a7330df4cf336f9f')
+ version('1.7.3', sha256='8713ef095efc44df426bbd2b260ad457e5335bf3008fb97f01b0775c8042e54b')
+
+ depends_on('libnsl')
+ depends_on('userspace-rcu')
diff --git a/var/spack/repos/builtin/packages/numamma/package.py b/var/spack/repos/builtin/packages/numamma/package.py
new file mode 100644
index 0000000000..cc71495449
--- /dev/null
+++ b/var/spack/repos/builtin/packages/numamma/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 Numamma(CMakePackage):
+ """NumaMMa is a lightweight memory profiler that reports the
+ memory access patterns of applications."""
+
+ homepage = "https://numamma.github.io/numamma/"
+ url = "https://github.com/numamma/numamma/archive/numamma-1.1.1.tar.gz"
+ maintainers = ['trahay']
+
+ version('1.1.1', sha256='f79ca22a95df33a1af529ddd653d043f7f0d32a6d196e559aee8bef8fc74771f')
+
+ depends_on('numap')
+ depends_on('libbacktrace')
+ depends_on('numactl')
+ depends_on('libelf')
+
+ def cmake_args(self):
+ spec = self.spec
+ cmake_args = [
+ "-DBACKTRACE_DIR:PATH={0}".format(spec["libbacktrace"].prefix)
+ ]
+ return cmake_args
diff --git a/var/spack/repos/builtin/packages/numap/package.py b/var/spack/repos/builtin/packages/numap/package.py
new file mode 100644
index 0000000000..2df4cfd995
--- /dev/null
+++ b/var/spack/repos/builtin/packages/numap/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 Numap(CMakePackage):
+ """Numap is a Linux library dedicated to memory profiling based on
+ hardware performance monitoring unit (PMU)."""
+
+ homepage = "https://github.com/numap-library/numap"
+ git = "https://github.com/numap-library/numap.git"
+ maintainers = ['trahay']
+
+ version('master', branch='master')
+ version('2019-09-06', commit='ffcdb88c64b59b7a3220eb1077d2b237029ca96a')
+
+ depends_on('libpfm4')
diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py
index 34ff99eb93..f155c55c13 100644
--- a/var/spack/repos/builtin/packages/ocaml/package.py
+++ b/var/spack/repos/builtin/packages/ocaml/package.py
@@ -13,11 +13,22 @@ class Ocaml(Package):
homepage = "http://ocaml.org/"
url = "https://caml.inria.fr/pub/distrib/ocaml-4.06/ocaml-4.06.0.tar.gz"
+ maintainers = ['scemama']
+
+ version('4.10.0', sha256='58d431dde66f5750ebe9b15d5a1c4872f80d283dec23448689b0d1a498b7e4c7')
+ version('4.09.0', sha256='2b728f8a0e90da14f22fdc04660f2ab33819cdbb12bff0ceae3fdbb0133cf7a6')
+ version('4.08.1', sha256='ee50118ee88472fd4b64311fa560f8f8ab66a1899f0117815c69a16070980f78')
+ version('4.08.0', sha256='e6e244f893f2070ebcdeac0637fbe2054fd82deebefefa3e3ed85a405cd4ecd8')
+ version('4.07.1', sha256='2ad43be17ed5c74ea27887ae0cc4793b835408180c0b9175bc9ad53082a59af4')
+ version('4.07.0', sha256='50e10b0c4e28300cb889e56839ec9e07e2847a85e04bfbd5a7ed0290b7239ef8')
+ version('4.06.1', sha256='0c38c6f531103e87fab1c218a7e76287d7cb4d7ee4dea64e7f85952af3b1b50e')
version('4.06.0', sha256='c17578e243c4b889fe53a104d8927eb8749c7be2e6b622db8b3c7b386723bf50')
version('4.03.0', sha256='7fdf280cc6c0a2de4fc9891d0bf4633ea417046ece619f011fd44540fcfc8da2')
depends_on('ncurses')
+ sanity_check_file = ['bin/ocaml']
+
def url_for_version(self, version):
url = "http://caml.inria.fr/pub/distrib/ocaml-{0}/ocaml-{1}.tar.gz"
return url.format(str(version)[:-2], version)
diff --git a/var/spack/repos/builtin/packages/oclock/package.py b/var/spack/repos/builtin/packages/oclock/package.py
index f0410e94d6..bf0345509d 100644
--- a/var/spack/repos/builtin/packages/oclock/package.py
+++ b/var/spack/repos/builtin/packages/oclock/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Oclock(AutotoolsPackage):
+class Oclock(AutotoolsPackage, XorgPackage):
"""oclock is a simple analog clock using the SHAPE extension to make
a round (possibly transparent) window."""
homepage = "http://cgit.freedesktop.org/xorg/app/oclock"
- url = "https://www.x.org/archive/individual/app/oclock-1.0.3.tar.gz"
+ xorg_mirror_path = "app/oclock-1.0.3.tar.gz"
version('1.0.3', sha256='6628d1abe1612b87db9d0170cbe7f1cf4205cd764274f648c3c1bdb745bff877')
diff --git a/var/spack/repos/builtin/packages/onednn/package.py b/var/spack/repos/builtin/packages/onednn/package.py
new file mode 100644
index 0000000000..83397e66e2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/onednn/package.py
@@ -0,0 +1,100 @@
+# Copyright 2013-2020 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)
+
+import sys
+
+
+class Onednn(CMakePackage):
+ """oneAPI Deep Neural Network Library (oneDNN).
+
+ Formerly known as Intel MKL-DNN and DNNL."""
+
+ homepage = "https://01.org/dnnl"
+ url = "https://github.com/oneapi-src/oneDNN/archive/v1.3.tar.gz"
+
+ maintainers = ['adamjstewart']
+
+ version('1.3', sha256='b87c23b40a93ef5e479c81028db71c4847225b1a170f82af5e79f1cda826d3bf')
+ version('1.2.2', sha256='251dd17643cff285f38b020fc4ac9245d8d596f3e2140b98982ffc32eae3943c')
+ version('1.2.1', sha256='e7798b82a4c57a75c8cf48607007ab7d46c428d3837644da8004ea2fb37c9bd0')
+ version('1.2', sha256='101aa3c3bd943de6597ff3230d2d61ecaff70cbe9a18db3ed7605a26d4140874')
+ version('1.1.3', sha256='91e47e9c97bc7765fa4dd65dcca2c9ba8a71d4cfe72ee71ae6f6623a8e476dec')
+ version('1.1.2', sha256='361545c9d03a451ee731e778df6dc42c26528130d16be4472c4a0ce164e8448f')
+ version('1.1.1', sha256='22fd037f8a6316ae23cddec118b571459064a1fdbab054fe6401713db8803d1c')
+ version('1.1', sha256='77533413aa6828aa724a1ef8ac0587c999e41fe36fae4f63cde5c4652ec11fd3')
+ version('1.0.4', sha256='70b079c73120821d274f91a56f3a8b15dc6c514f4ac86a89f0612e5e2ac7ca8d')
+ version('1.0.3', sha256='a3da591ffd7ccc269bbaef4894b409b09e80ea1bbd678f7fa0f3cf96f48e6b3e')
+ version('1.0.2', sha256='9281715436adb7b9eef63fad419a581f397218824bc1271e557c134725c03916')
+ version('1.0.1', sha256='8fee2324267811204c1f877a1dea70b23ab3d5f4c3ea0198d81f0921aa70d76e')
+ version('1.0', sha256='7bfe11cac1d1f5dc1b60c1258e79d8cc84944d459e3758d50c1f7feba05bc6d7')
+ version('0.21.4', sha256='00ace1ce08cab3408bc83e6b9d55ccba661761e044c03175d58caccedddf93b3')
+ version('0.21.3', sha256='a0211aeb5e7dad50b97fa5dffc1a2fe2fe732572d4164e1ee8750a2ede43fbec')
+ version('0.21.2', sha256='5897bfd0e321a761de0c57ba1dfe0ebc753cc0d8a18bda2056af48022706a297')
+ version('0.21.1', sha256='4cabdb02863a874b2fe58b46489eda5cfefcbe6c63cb615f4d86bf00a6ccfffa')
+ version('0.21', sha256='1d97635c8ef40dae3bc46e79769326216d0495a0262ab7cf0ea294ca7924f8e4')
+ version('0.20.6', sha256='f1de676fddeb94132c5ae480fb03a64f03deda10b09b3141373f2b2fe5cd031d')
+ version('0.20.5', sha256='47af2fa2987836794ad2a48cb289ac053f8c4babc274a8d943944576d00a73d0')
+ version('0.20.4', sha256='87947726af741e46314756329ee5a16f18ace17f342ec4489679c09e4ab18bbe')
+ version('0.20.3', sha256='0a0b60c8a4c56f50455241ea1cf9be84b3b7d255d76f9fae0143c1bd089fb1f2')
+ version('0.20.2', sha256='a70f7877481427df04f26d0dcd9c80bc9844b8e4dded4bfd763b6a4697a57f32')
+ version('0.20.1', sha256='a0fe8a9f5358a8e2fb56d0440516c398ed838b2eff2b5bab27606e376c10ca31')
+ version('0.20', sha256='99828ff0157b31c0d45b9fd63cfe3fe02c4dc13633b8a1207fffddac56770baa')
+ version('0.19', sha256='a7e64e07a5db1c42d72a23bea4acd04fd0c162e27af0b8b8f38ca48b6b5d9999')
+ version('0.18.1', sha256='a704e8a2011494a489ec01f42295fea577ea4108ac6159db47ee1ebcca369c26')
+ version('0.11', sha256='2d8c1e39107f3fcfa93a5cc8ac8e94b1bbf0a0715b0c99e0d52ed18646346d58')
+ version('0.10', sha256='e783d6d085e4dd930a990cf02a76401071f606c6f40e47eae4dc638b54146430')
+ version('0.9', sha256='721ab6a14e05f9916645ebb410c3e97fae660d09a1c7df4da7958676504e572b')
+
+ default_cpu_runtime = 'omp'
+ if sys.platform == 'darwin':
+ default_cpu_runtime = 'tbb'
+
+ variant('cpu_runtime', default=default_cpu_runtime,
+ description='CPU threading runtime to use',
+ values=('omp', 'tbb', 'seq'), multi=False)
+ variant('gpu_runtime', default='none',
+ description='Runtime to use for GPU engines',
+ values=('ocl', 'none'), multi=False)
+
+ # https://github.com/oneapi-src/oneDNN#requirements-for-building-from-source
+ depends_on('cmake@2.8.11:', type='build')
+ depends_on('tbb@2017:', when='cpu_runtime=tbb')
+ depends_on('llvm-openmp', when='%clang platform=darwin cpu_runtime=omp')
+ depends_on('opencl@1.2:', when='gpu_runtime=ocl')
+
+ def cmake_args(self):
+ args = [
+ '-DDNNL_CPU_RUNTIME={0}'.format(
+ self.spec.variants['cpu_runtime'].value.upper()),
+ '-DDNNL_GPU_RUNTIME={0}'.format(
+ self.spec.variants['gpu_runtime'].value.upper()),
+ ]
+
+ if self.run_tests:
+ args.append('-DDNNL_BUILD_TESTS=ON')
+ else:
+ args.append('-DDNNL_BUILD_TESTS=OFF')
+
+ # https://github.com/oneapi-src/oneDNN/issues/591
+ if self.spec.satisfies('%clang platform=darwin cpu_runtime=omp'):
+ args.extend([
+ '-DOpenMP_CXX_FLAGS={0}'.format(self.compiler.openmp_flag),
+ '-DOpenMP_C_FLAGS={0}'.format(self.compiler.openmp_flag),
+ '-DOpenMP_CXX_LIB_NAMES=libomp',
+ '-DOpenMP_C_LIB_NAMES=libomp',
+ '-DOpenMP_libomp_LIBRARY={0}'.format(
+ self.spec['llvm-openmp'].libs.libraries[0]
+ ),
+ '-DCMAKE_SHARED_LINKER_FLAGS={0}'.format(
+ self.spec['llvm-openmp'].libs.ld_flags
+ ),
+ ])
+ elif self.spec.satisfies('cpu_runtime=tbb'):
+ args.append('-DTBBROOT=' + self.spec['tbb'].prefix)
+
+ if self.spec.satisfies('gpu_runtime=ocl'):
+ args.append('-DOPENCLROOT=' + self.spec['opencl'].prefix)
+
+ return args
diff --git a/var/spack/repos/builtin/packages/opam/package.py b/var/spack/repos/builtin/packages/opam/package.py
index 179fad0bd9..d25999f89e 100644
--- a/var/spack/repos/builtin/packages/opam/package.py
+++ b/var/spack/repos/builtin/packages/opam/package.py
@@ -16,14 +16,35 @@ class Opam(AutotoolsPackage):
homepage = "https://opam.ocaml.org/"
url = "https://github.com/ocaml/opam/releases/download/1.2.2/opam-full-1.2.2.tar.gz"
+ maintainers = ['scemama']
+
+ version('2.0.6', sha256='7c4bff5e5f3628ad00c53ee1b044ced8128ffdcfbb7582f8773fb433e12e07f4')
+ version('2.0.5', sha256='776c7e64d6e24c2ef1efd1e6a71d36e007645efae94eaf860c05c1929effc76f')
+ version('2.0.4', sha256='debfb828b400fb511ca290f1bfc928db91cad74ec1ccbddcfdbfeff26f7099e5')
+ version('2.0.3', sha256='0589da4da184584a5445d59385009536534f60bc0e27772245b2f49e5fa8f0e2')
+ version('2.0.2', sha256='eeb99fdda4b10ad3467a700fa4d1dfedb30714837d18d2faf1ef9c87d94cf0bc')
+ version('2.0.1', sha256='81f7f1b661a0c1e04642fe02d0bea5524b32aa2cbed0ecf9b18d7145324ed97c')
+ version('2.0.0', sha256='9dad4fcb4f53878c9daa6285d8456ccc671e21bfa71544d1f926fb8a63bfed25')
version('1.2.2', sha256='15e617179251041f4bf3910257bbb8398db987d863dd3cfc288bdd958de58f00')
version('1.2.1', sha256='f210ece7a2def34b486c9ccfb75de8febd64487b2ea4a14a7fa0358f37eacc3b')
- depends_on('ocaml') # Not a strict dependency, but recommended
+ # OCaml 4.10.0 has removed the -safe-string flag, which is necessary
+ # for OPAM 1i (see docstring of setup_build_environment).
+ depends_on('ocaml@:4.09.0', type='build', when='@:1.2.2')
+ depends_on('ocaml', type='build', when='@2.0.0:')
parallel = False
+ sanity_check_is_file = ['bin/opam']
+
+ @when('@:1.2.2')
def setup_build_environment(self, env):
+ ''' In OCaml <4.06.1, the default was -safe-string=0, and this has
+ changed in OCaml >=4.06.1. OPAM version 1 was written before 4.06.1
+ was released, so OPAM <2.0 assumes mutable strings and requires the
+ safe-string=0 flag. This is not true with OPAM >=2.0, so the flag
+ should not be set.'''
+
# Environment variable setting taken from
# https://github.com/Homebrew/homebrew-core/blob/master/Formula/opam.rb
env.set('OCAMLPARAM', 'safe-string=0,_') # OCaml 4.06.0 compat
@@ -31,4 +52,5 @@ class Opam(AutotoolsPackage):
def build(self, spec, prefix):
make('lib-ext')
make()
- make('man')
+ if spec.satisfies('@:1.2.2'):
+ make('man')
diff --git a/var/spack/repos/builtin/packages/open-isns/package.py b/var/spack/repos/builtin/packages/open-isns/package.py
new file mode 100644
index 0000000000..220db25ce0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/open-isns/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 OpenIsns(AutotoolsPackage):
+ """This is the iSNS server, supporting persistent storage
+ of registrations in a file based database."""
+
+ homepage = "https://github.com/open-iscsi/open-isns"
+ url = "https://github.com/open-iscsi/open-isns/archive/v0.100.tar.gz"
+
+ version('0.100', sha256='b011edbb0f31690aaca902a8ecf4e1f17b01d6c9e9afc51909d26b0993b4328f')
+ version('0.99', sha256='a8febecf888d5a38abfa2fcb290194d993b1a7f5bea0cb61f5cf2e9f9e5273c2')
+ version('0.98', sha256='c5cbd161e51fb993728c04e56d3da693b73eb3f4e81d17f66eb5b7653c29e8eb')
+ version('0.97', sha256='c1c9ae740172e55a1ff33bc22151ec3d916562bf5d60c8420cd64496343683a9')
+ version('0.96', sha256='487fd0d87826423ea99dc159826d0b654a5da016ed670d4395a77bfa4f62e2ec')
+
+ def configure_args(self):
+ args = ['--enable-shared']
+ return args
+
+ def install(self, spec, prefix):
+ make('install')
+ make('install_hdrs')
+ make('install_lib')
diff --git a/var/spack/repos/builtin/packages/openblas/lapack-0.3.9-xerbl.patch b/var/spack/repos/builtin/packages/openblas/lapack-0.3.9-xerbl.patch
new file mode 100644
index 0000000000..a61f3b3c00
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openblas/lapack-0.3.9-xerbl.patch
@@ -0,0 +1,14 @@
+diff --git a/lapack-netlib/SRC/sorhr_col.f b/lapack-netlib/SRC/sorhr_col.f
+index 38976245..600c19fb 100644
+--- a/lapack-netlib/SRC/sorhr_col.f
++++ b/lapack-netlib/SRC/sorhr_col.f
+@@ -282,7 +282,8 @@
+ $ NPLUSONE
+ * ..
+ * .. External Subroutines ..
+- EXTERNAL SCOPY, SLAORHR_COL_GETRFNP, SSCAL, STRSM, XERBLA
++ EXTERNAL SCOPY, SLAORHR_COL_GETRFNP, SSCAL, STRSM,
++ $ XERBLA
+ * ..
+ * .. Intrinsic Functions ..
+ INTRINSIC MAX, MIN
diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py
index 0ad58605c4..71d2ec4a6b 100644
--- a/var/spack/repos/builtin/packages/openblas/package.py
+++ b/var/spack/repos/builtin/packages/openblas/package.py
@@ -18,6 +18,7 @@ class Openblas(MakefilePackage):
git = 'https://github.com/xianyi/OpenBLAS.git'
version('develop', branch='develop')
+ version('0.3.9', sha256='17d4677264dfbc4433e97076220adc79b050e4f8a083ea3f853a53af253bc380')
version('0.3.8', sha256='8f86ade36f0dbed9ac90eb62575137388359d97d8f93093b38abe166ad7ef3a8')
version('0.3.7', sha256='bde136122cef3dd6efe2de1c6f65c10955bbb0cc01a520c2342f5287c28f9379')
version('0.3.6', sha256='e64c8fe083832ffbc1459ab6c72f71d53afd3b36e8497c922a15a06b72e9002f')
@@ -37,7 +38,7 @@ class Openblas(MakefilePackage):
variant('ilp64', default=False, description='Force 64-bit Fortran native integers')
variant('pic', default=True, description='Build position independent code')
variant('shared', default=True, description='Build shared libraries')
- variant('consistentFPCSR', default=False, description='Synchronize FP CSR between threads (x86/x86_64 only)')
+ variant('consistent_fpcsr', default=False, description='Synchronize FP CSR between threads (x86/x86_64 only)')
variant(
'threads', default='none',
@@ -59,6 +60,8 @@ class Openblas(MakefilePackage):
patch('openblas_icc_openmp.patch', when='@:0.2.20%intel@16.0:')
patch('openblas_icc_fortran.patch', when='%intel@16.0:')
patch('openblas_icc_fortran2.patch', when='%intel@18.0:')
+ # See https://github.com/spack/spack/issues/15385
+ patch('lapack-0.3.9-xerbl.patch', when='@0.3.8: %intel')
# Fixes compilation error on POWER8 with GCC 7
# https://github.com/xianyi/OpenBLAS/pull/1098
@@ -93,7 +96,10 @@ class Openblas(MakefilePackage):
# Add conditions to f_check to determine the Fujitsu compiler
patch('openblas_fujitsu.patch', when='%fj')
+ # See https://github.com/spack/spack/issues/3036
conflicts('%intel@16', when='@0.2.15:0.2.19')
+ conflicts('+consistent_fpcsr', when='threads=none',
+ msg='FPCSR consistency only applies to multithreading')
@property
def parallel(self):
@@ -136,12 +142,23 @@ class Openblas(MakefilePackage):
return micros
- @staticmethod
- def _microarch_target_args(microarch, available_targets):
+ def _microarch_target_args(self):
"""Given a spack microarchitecture and a list of targets found in
OpenBLAS' TargetList.txt, determine the best command-line arguments.
"""
- args = [] # Return value
+ # Read available openblas targets
+ targetlist_name = join_path(self.stage.source_path, "TargetList.txt")
+ if os.path.exists(targetlist_name):
+ with open(targetlist_name) as f:
+ available_targets = self._read_targets(f)
+ else:
+ available_targets = []
+
+ # Get our build microarchitecture
+ microarch = self.spec.target
+
+ # List of arguments returned by this function
+ args = []
# List of available architectures, and possible aliases
openblas_arch = set(['alpha', 'arm', 'ia64', 'mips', 'mips64',
@@ -165,11 +182,14 @@ class Openblas(MakefilePackage):
if microarch.name in available_targets:
break
- arch_name = microarch.family.name
- if arch_name in openblas_arch:
- # Apply possible spack->openblas arch name mapping
- arch_name = openblas_arch_map.get(arch_name, arch_name)
- args.append('ARCH=' + arch_name)
+ if self.version >= Version("0.3"):
+ # 'ARCH' argument causes build errors in older OpenBLAS
+ # see https://github.com/spack/spack/issues/15385
+ arch_name = microarch.family.name
+ if arch_name in openblas_arch:
+ # Apply possible spack->openblas arch name mapping
+ arch_name = openblas_arch_map.get(arch_name, arch_name)
+ args.append('ARCH=' + arch_name)
if microarch.vendor == 'generic':
# User requested a generic platform, or we couldn't find a good
@@ -189,8 +209,6 @@ class Openblas(MakefilePackage):
@property
def make_defs(self):
- spec = self.spec
-
# Configure fails to pick up fortran from FC=/abs/path/to/fc, but
# works fine with FC=/abs/path/to/gfortran.
# When mixing compilers make sure that
@@ -208,13 +226,7 @@ class Openblas(MakefilePackage):
make_defs.append('MAKE_NB_JOBS=0') # flag provided by OpenBLAS
# Add target and architecture flags
- targetlist_name = join_path(self.stage.source_path, "TargetList.txt")
- if os.path.exists(targetlist_name):
- with open(targetlist_name) as f:
- avail_targets = self._read_targets(f)
- else:
- avail_targets = []
- make_defs += self._microarch_target_args(spec.target, avail_targets)
+ make_defs += self._microarch_target_args()
if '~shared' in self.spec:
if '+pic' in self.spec:
@@ -241,7 +253,7 @@ class Openblas(MakefilePackage):
# Synchronize floating-point control and status register (FPCSR)
# between threads (x86/x86_64 only).
- if '+consistentFPCSR' in self.spec:
+ if '+consistent_fpcsr' in self.spec:
make_defs += ['CONSISTENT_FPCSR=1']
# Prevent errors in `as` assembler from newer instructions
diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py
index 95abf6368a..0e5bca7907 100644
--- a/var/spack/repos/builtin/packages/opencv/package.py
+++ b/var/spack/repos/builtin/packages/opencv/package.py
@@ -100,13 +100,28 @@ class Opencv(CMakePackage, CudaPackage):
variant('vtk', default=True, description='Activates support for VTK')
variant('zlib', default=True, description='Build zlib from source')
+ variant('contrib', default=False, description='Adds in code from opencv_contrib.')
+ contrib_vers = ['4.1.0', '4.1.1', '4.2.0']
+ for cv in contrib_vers:
+ resource(name="contrib",
+ git='https://github.com/opencv/opencv_contrib.git',
+ tag="{0}".format(cv),
+ when='@{0}+contrib'.format(cv))
+ resource(name="contrib",
+ git='https://github.com/opencv/opencv_contrib.git',
+ tag="{0}".format(cv),
+ when='@{0}+cuda'.format(cv))
+
+ depends_on('hdf5', when='+contrib')
+ depends_on('hdf5', when='+cuda')
+ depends_on('blas', when='+lapack')
+
# Patch to fix conflict between CUDA and OpenCV (reproduced with 3.3.0
# and 3.4.1) header file that have the same name.Problem is fixed in
# the current development branch of OpenCV. See #8461 for more information.
patch('dnn_cuda.patch', when='@3.3.0:3.4.1+cuda+dnn')
- depends_on('eigen~mpfr', when='+eigen', type='build')
-
+ depends_on('eigen', when='+eigen')
depends_on('zlib', when='+zlib')
depends_on('libpng', when='+png')
depends_on('jpeg', when='+jpeg')
@@ -118,8 +133,9 @@ class Opencv(CMakePackage, CudaPackage):
depends_on('vtk', when='+vtk')
depends_on('qt', when='+qt')
depends_on('java', when='+java')
+ depends_on('ant', when='+java', type='build')
depends_on('py-numpy', when='+python', type=('build', 'run'))
- depends_on('protobuf@3.5.0', when='@3.4.1: +dnn')
+ depends_on('protobuf@3.5.0:', when='@3.4.1: +dnn')
depends_on('protobuf@3.1.0', when='@3.3.0:3.4.0 +dnn')
depends_on('ffmpeg', when='+videoio')
@@ -129,6 +145,7 @@ class Opencv(CMakePackage, CudaPackage):
# exists, otherwise build will fail
# See https://github.com/opencv/opencv_contrib/issues/1786
conflicts('cuda@10:', when='+cudacodec')
+ conflicts('cuda', when='~contrib', msg='cuda support requires +contrib')
extends('python', when='+python')
@@ -223,8 +240,19 @@ class Opencv(CMakePackage, CudaPackage):
'-DWITH_PROTOBUF:BOOL={0}'.format((
'ON' if '@3.3.0: +dnn' in spec else 'OFF')),
'-DBUILD_PROTOBUF:BOOL=OFF',
+ '-DPROTOBUF_UPDATE_FILES={0}'.format('ON')
])
+ if '+contrib' in spec or '+cuda' in spec:
+ args.append('-DOPENCV_EXTRA_MODULES_PATH={0}'.format(
+ join_path(self.stage.source_path, 'opencv_contrib/modules')))
+
+ if '+cuda' in spec:
+ if spec.variants['cuda_arch'].value[0] != 'none':
+ cuda_arch = [x for x in spec.variants['cuda_arch'].value if x]
+ args.append('-DCUDA_ARCH_BIN={0}'.format(
+ ' '.join(cuda_arch)))
+
# Media I/O
if '+zlib' in spec:
zlib = spec['zlib']
diff --git a/var/spack/repos/builtin/packages/opendx/package.py b/var/spack/repos/builtin/packages/opendx/package.py
new file mode 100644
index 0000000000..2cf5a9e5e3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opendx/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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)
+
+
+class Opendx(AutotoolsPackage):
+ """Open Visualization Data Explorer."""
+
+ homepage = "https://github.com/Mwoolsey/OpenDX"
+ git = "https://github.com/Mwoolsey/OpenDX.git"
+
+ version('master', branch='master')
+
+ depends_on('motif') # lesstif also works, but exhibits odd behaviors
+ depends_on('gl')
+
+ @run_before('autoreconf')
+ def distclean(self):
+ make('distclean')
diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py
index d7ca0f6908..dc9b5673ee 100644
--- a/var/spack/repos/builtin/packages/openfoam-org/package.py
+++ b/var/spack/repos/builtin/packages/openfoam-org/package.py
@@ -45,6 +45,7 @@ from spack.pkg.builtin.openfoam import write_environ
from spack.pkg.builtin.openfoam import rewrite_environ_files
from spack.pkg.builtin.openfoam import mplib_content
from spack.pkg.builtin.openfoam import OpenfoamArch
+from spack.util.environment import EnvironmentModifications
class OpenfoamOrg(Package):
@@ -84,7 +85,7 @@ class OpenfoamOrg(Package):
depends_on('mpi')
depends_on('zlib')
- depends_on('flex', type='build')
+ depends_on('flex')
depends_on('cmake', type='build')
# Require scotch with ptscotch - corresponds to standard OpenFOAM setup
@@ -138,15 +139,14 @@ class OpenfoamOrg(Package):
return settings
def setup_run_environment(self, env):
- # This should be similar to the openfoam package,
- # but sourcing the etc/bashrc here seems to exit with an error.
- # ... this needs to be examined in more detail.
- #
- # Minimal environment only.
- env.set('FOAM_PROJECT_DIR', self.projectdir)
- env.set('WM_PROJECT_DIR', self.projectdir)
- for d in ['wmake', self.archbin]: # bin already added automatically
- env.prepend_path('PATH', join_path(self.projectdir, d))
+ bashrc = self.prefix.etc.bashrc
+ try:
+ env.extend(EnvironmentModifications.from_sourcing_file(
+ bashrc, clean=True
+ ))
+ except Exception as e:
+ msg = 'unexpected error when sourcing OpenFOAM bashrc [{0}]'
+ tty.warn(msg.format(str(e)))
def setup_dependent_build_environment(self, env, dependent_spec):
"""Location of the OpenFOAM project directory.
@@ -386,5 +386,3 @@ class OpenfoamOrg(Package):
if os.path.isfile(f)
]:
os.symlink(f, os.path.basename(f))
-
-# -----------------------------------------------------------------------------
diff --git a/var/spack/repos/builtin/packages/openfoam/common/spack-Allwmake b/var/spack/repos/builtin/packages/openfoam/common/spack-Allwmake
index 91287383d8..83c9e273b5 100755
--- a/var/spack/repos/builtin/packages/openfoam/common/spack-Allwmake
+++ b/var/spack/repos/builtin/packages/openfoam/common/spack-Allwmake
@@ -1,8 +1,15 @@
#!/bin/bash
-# Build wrapper script - FOAM_INST_DIR is only required by foam-extend
+# Build wrapper script
+
+# FOAM_INST_DIR is only required by foam-extend
export FOAM_INST_DIR=$(cd .. && pwd -L)
+
+# Prevent influence of user/site config when building
+export FOAM_CONFIG_MODE="o"
+
. "$PWD/etc/bashrc" '' # No arguments
mkdir -p "$FOAM_APPBIN" "$FOAM_LIBBIN" 2>/dev/null # Allow build interrupt
+
echo "Build openfoam with SPACK ($@)"
echo "WM_PROJECT_DIR = $WM_PROJECT_DIR"
diff --git a/var/spack/repos/builtin/packages/openfoam/package.py b/var/spack/repos/builtin/packages/openfoam/package.py
index f741db61d9..fd915abae2 100644
--- a/var/spack/repos/builtin/packages/openfoam/package.py
+++ b/var/spack/repos/builtin/packages/openfoam/package.py
@@ -265,9 +265,12 @@ class Openfoam(Package):
version('develop', branch='develop', submodules='True')
version('master', branch='master', submodules='True')
+ version('1912_200403', sha256='1de8f4ddd39722b75f6b01ace9f1ba727b53dd999d1cd2b344a8c677ac2db4c0')
version('1912', sha256='437feadf075419290aa8bf461673b723a60dc39525b23322850fb58cb48548f2')
+ version('1906_200312', sha256='f75645151ed5d8c5da592d307480979fe580a25627cc0c9718ef370211577594')
version('1906_191103', sha256='631a7fcd926ccbcdef0ab737a9dc55e58d6bedae2f3acaa041ea679db6c9303b')
version('1906', sha256='bee03c4b1da0d2c9f98eb469eeffbce3a8614728ef8e87f664042a7490976537')
+ version('1812_200312', sha256='925d2877c12740fab177a30fdcaa8899c262c15b90225f9c29d18a2d97532de0')
version('1812_191001', sha256='857a3d476696679313ea9a3f022b33446ddef2bcd417049a9486d504c12038dd')
version('1812_190531', sha256='51f0ef49a199edf3cd94e2ccfc7330e54e93c8e4ddb29ee66fe3e6b443583b34')
version('1812', sha256='d4d23d913419c6a364b1fe91509c1fadb5661bdf2eedb8fe9a8a005924eb2032')
@@ -825,10 +828,12 @@ class OpenfoamArch(object):
self.arch_option = '-march=knl'
# spec.architecture.platform is like `uname -s`, but lower-case
- platform = spec.architecture.platform
+ platform = str(spec.architecture.platform)
# spec.target.family is like `uname -m`
- target = spec.target.family
+ target = str(spec.target.family)
+
+ # No spack platform family for ia64 or armv7l
if platform == 'linux':
if target == 'x86_64':
diff --git a/var/spack/repos/builtin/packages/openjdk/package.py b/var/spack/repos/builtin/packages/openjdk/package.py
index 9d0b3d54e4..1ad068936c 100644
--- a/var/spack/repos/builtin/packages/openjdk/package.py
+++ b/var/spack/repos/builtin/packages/openjdk/package.py
@@ -5,6 +5,32 @@
from spack import *
import os
+import platform
+
+
+# If you need to add a new version, please be aware that:
+# - versions in the following dict are automatically added to the package
+# - version tuple must be in the form (checksum, url)
+# - checksum must be sha256
+# - package key must be in the form '{os}-{arch}' where 'os' is in the
+# format returned by platform.system() and 'arch' by platform.machine()
+
+_versions = {
+ '11.0.0-2020-01-01': {
+ 'Linux-aarch64': ('05c7d9c90edacd853850fbb0f52f8aa482809d0452c599cb9fe0b28b3b4bf329', 'https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk11u-2020-01-01-06-13/OpenJDK11U-jdk_aarch64_linux_hotspot_2020-01-01-06-13.tar.gz')},
+ '11.0.2': {
+ 'Linux-x86_64': ('99be79935354f5c0df1ad293620ea36d13f48ec3ea870c838f20c504c9668b57', 'https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz')},
+ '11.0.1': {
+ 'Linux-x86_64': ('7a6bb980b9c91c478421f865087ad2d69086a0583aeeb9e69204785e8e97dcfd', 'https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz')},
+ '1.8.0_191-b12': {
+ 'Linux-aarch64': ('8eee0aede947b804f9a5f49c8a38b52aace8a30a9ebd9383b7d06042fb5a237c', 'https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz')},
+ '1.8.0_222-b10': {
+ 'Linux-x86_64': ('20cff719c6de43f8bb58c7f59e251da7c1fa2207897c9a4768c8c669716dc819', 'https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10_openj9-0.15.1/OpenJDK8U-jdk_x64_linux_openj9_8u222b10_openj9-0.15.1.tar.gz')},
+ '1.8.0_202-b08': {
+ 'Linux-x86_64': ('533dcd8d9ca15df231a1eb392fa713a66bca85a8e76d9b4ee30975f3823636b7', 'https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_linux_openj9_8u202b08_openj9-0.12.0.tar.gz')},
+ '1.8.0_40-b25': {
+ 'Linux-x86_64': ('79e96dce03a14271040023231a7d0ae374b755d48adf68bbdaec30294e4e2b88', 'https://download.java.net/openjdk/jdk8u40/ri/jdk_ri-8u40-b25-linux-x64-10_feb_2015.tar.gz')},
+}
class Openjdk(Package):
@@ -12,20 +38,17 @@ class Openjdk(Package):
homepage = "https://jdk.java.net"
- version("11.0.2", sha256="99be79935354f5c0df1ad293620ea36d13f48ec3ea870c838f20c504c9668b57",
- url="https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz")
- version("11.0.1", sha256="7a6bb980b9c91c478421f865087ad2d69086a0583aeeb9e69204785e8e97dcfd",
- url="https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz")
- version("1.8.0_202-b08", sha256="533dcd8d9ca15df231a1eb392fa713a66bca85a8e76d9b4ee30975f3823636b7",
- url="https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_linux_openj9_8u202b08_openj9-0.12.0.tar.gz")
- version('1.8.0_40-b25', sha256='79e96dce03a14271040023231a7d0ae374b755d48adf68bbdaec30294e4e2b88',
- url='https://download.java.net/openjdk/jdk8u40/ri/jdk_ri-8u40-b25-linux-x64-10_feb_2015.tar.gz')
+ for ver, packages in _versions.items():
+ key = "{0}-{1}".format(platform.system(), platform.machine())
+ pkg = packages.get(key)
+ if pkg:
+ version(ver, sha256=pkg[0], url=pkg[1])
- provides('java@11', when='@11.0:11.99')
provides('java@8', when='@1.8.0:1.8.999')
+ provides('java@11', when='@11.0:11.99')
- conflicts('target=ppc64:', msg='openjdk is only available for x86_64')
- conflicts('target=ppc64le:', msg='openjdk is only available for x86_64')
+ conflicts('target=ppc64:', msg='openjdk is only available for x86_64 and aarch64')
+ conflicts('target=ppc64le:', msg='openjdk is only available for x86_64 and aarch64')
# FIXME:
# 1. `extends('java')` doesn't work, you need to use `extends('openjdk')`
diff --git a/var/spack/repos/builtin/packages/openmm/package.py b/var/spack/repos/builtin/packages/openmm/package.py
new file mode 100644
index 0000000000..2867af4538
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openmm/package.py
@@ -0,0 +1,48 @@
+# Copyright 2013-2020 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)
+
+import os
+
+
+class Openmm(CMakePackage, CudaPackage):
+ """A high performance toolkit for molecular simulation. Use it as
+ a library, or as an application. We include extensive language
+ bindings for Python, C, C++, and even Fortran. The code is open
+ source and actively maintained on Github, licensed under MIT and
+ LGPL. Part of the Omnia suite of tools for predictive biomolecular
+ simulation. """
+
+ homepage = "http://openmm.org/"
+ url = "https://github.com/openmm/openmm/archive/7.4.1.tar.gz"
+
+ version('7.4.1', sha256='e8102b68133e6dcf7fcf29bc76a11ea54f30af71d8a7705aec0aee957ebe3a6d')
+
+ install_targets = ['install', 'PythonInstall']
+
+ depends_on('python@2.7:', type=('build', 'run'))
+ depends_on('cmake@3.1:', type='build')
+ depends_on('doxygen', type='build')
+ depends_on('swig', type='build')
+ depends_on('fftw')
+ depends_on('py-cython', type='build')
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('cuda', when='+cuda', type=('build', 'link', 'run'))
+ extends('python')
+
+ def patch(self):
+ install_string = "set(PYTHON_SETUP_COMMAND \"install " \
+ "--prefix={0}\")".format(self.prefix)
+
+ filter_file(r'set\(PYTHON_SETUP_COMMAND \"install.*',
+ install_string,
+ 'wrappers/python/CMakeLists.txt')
+
+ def setup_run_environment(self, env):
+ spec = self.spec
+ if '+cuda' in spec:
+ env.set('OPENMM_CUDA_COMPILER',
+ self.spec['cuda'].prefix.bin.nvcc)
+ env.prepend_path('PATH',
+ os.path.dirname(self.compiler.cc))
diff --git a/var/spack/repos/builtin/packages/openmpi/nag_ltmain_1.patch b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_1.patch
new file mode 100644
index 0000000000..3d20169718
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_1.patch
@@ -0,0 +1,49 @@
+--- a/config/ltmain.sh
++++ b/config/ltmain.sh
+@@ -7860,14 +7860,15 @@ func_mode_link ()
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+- # and "-pthread" to "-Wl,-pthread" if NAG compiler
+ if test -n "$inherited_linker_flags"; then
+- case "$CC" in
+- *nagfor*)
+- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g' | $SED 's/-pthread/-Wl,-pthread/g'`;;
+- *)
+- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`;;
+- esac
++ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8887,7 +8888,8 @@ func_mode_link ()
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+- case $CC in
++ func_cc_basename $CC
++ case $func_cc_basename_result in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+@@ -9499,6 +9501,13 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
diff --git a/var/spack/repos/builtin/packages/openmpi/nag_ltmain_2.patch b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_2.patch
new file mode 100644
index 0000000000..af1b600039
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_2.patch
@@ -0,0 +1,49 @@
+--- a/config/ltmain.sh
++++ b/config/ltmain.sh
+@@ -7860,14 +7860,15 @@ func_mode_link ()
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+- # and "-pthread" to "-Wl,-pthread" if NAG compiler
+ if test -n "$inherited_linker_flags"; then
+- case "$CC" in
+- nagfor*)
+- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g' | $SED 's/-pthread/-Wl,-pthread/g'`;;
+- *)
+- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`;;
+- esac
++ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8887,7 +8888,8 @@ func_mode_link ()
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+- case $CC in
++ func_cc_basename $CC
++ case $func_cc_basename_result in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+@@ -9499,6 +9501,13 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
diff --git a/var/spack/repos/builtin/packages/openmpi/nag_ltmain_3.patch b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_3.patch
new file mode 100644
index 0000000000..0d4250001a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_3.patch
@@ -0,0 +1,40 @@
+--- a/config/ltmain.sh
++++ b/config/ltmain.sh
+@@ -7862,6 +7862,13 @@ func_mode_link ()
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8881,7 +8888,8 @@ func_mode_link ()
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+- case $CC in
++ func_cc_basename $CC
++ case $func_cc_basename_result in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+@@ -9493,6 +9501,13 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
diff --git a/var/spack/repos/builtin/packages/openmpi/nag_ltmain_4.patch b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_4.patch
new file mode 100644
index 0000000000..82bdb9f752
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openmpi/nag_ltmain_4.patch
@@ -0,0 +1,49 @@
+--- a/config/ltmain.sh
++++ b/config/ltmain.sh
+@@ -7860,14 +7860,15 @@ func_mode_link ()
+ func_source "$lib"
+
+ # Convert "-framework foo" to "foo.ltframework"
+- # and "-pthread" to "-Wl,-pthread" if NAG compiler
+ if test -n "$inherited_linker_flags"; then
+- case "$CC" in
+- nagfor*)
+- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g' | $SED 's/-pthread/-Wl,-pthread'`;;
+- *)
+- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`;;
+- esac
++ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8887,7 +8888,8 @@ func_mode_link ()
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+- case $CC in
++ func_cc_basename $CC
++ case $func_cc_basename_result in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+@@ -9499,6 +9501,13 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
diff --git a/var/spack/repos/builtin/packages/openmpi/nolegacylaunchers.sh b/var/spack/repos/builtin/packages/openmpi/nolegacylaunchers.sh
index b6defd69f0..61ee50c53d 100755
--- a/var/spack/repos/builtin/packages/openmpi/nolegacylaunchers.sh
+++ b/var/spack/repos/builtin/packages/openmpi/nolegacylaunchers.sh
@@ -3,7 +3,7 @@ echo "This version of Spack (openmpi ~legacylaunchers schedulers=slurm) "
echo "is installed without the mpiexec/mpirun commands to prevent "
echo "unintended performance issues. See https://github.com/spack/spack/pull/10340 "
echo "for more details."
-echo "If you understand the potential consequences of a misconfigured `mpirun`, you can"
-echo "use spack to install `openmpi+legacylaunchers` to restore the executables."
-echo "Otherwise, use `srun` to launch your MPI executables."
+echo "If you understand the potential consequences of a misconfigured mpirun, you can"
+echo "use spack to install 'openmpi+legacylaunchers' to restore the executables."
+echo "Otherwise, use srun to launch your MPI executables."
exit 2
diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py
index aac0c4c60b..a2b75bd67e 100644
--- a/var/spack/repos/builtin/packages/openmpi/package.py
+++ b/var/spack/repos/builtin/packages/openmpi/package.py
@@ -80,9 +80,10 @@ class Openmpi(AutotoolsPackage):
version('develop', branch='master')
# Current
- version('4.0.2', sha256='900bf751be72eccf06de9d186f7b1c4b5c2fa9fa66458e53b77778dffdfe4057') # libmpi.so.40.20.2
+ version('4.0.3', sha256='1402feced8c3847b3ab8252165b90f7d1fa28c23b6b2ca4632b6e4971267fd03') # libmpi.so.40.20.3
# Still supported
+ version('4.0.2', sha256='900bf751be72eccf06de9d186f7b1c4b5c2fa9fa66458e53b77778dffdfe4057') # libmpi.so.40.20.2
version('4.0.1', sha256='cce7b6d20522849301727f81282201d609553103ac0b09162cf28d102efb9709') # libmpi.so.40.20.1
version('4.0.0', sha256='2f0b8a36cfeb7354b45dda3c5425ef8393c9b04115570b615213faaa3f97366b') # libmpi.so.40.20.0
version('3.1.5', preferred=True, sha256='fbf0075b4579685eec8d56d34d4d9c963e6667825548554f5bf308610af72133') # libmpi.so.40.10.4
@@ -193,7 +194,7 @@ class Openmpi(AutotoolsPackage):
patch('llnl-platforms.patch', when="@1.6.5")
patch('configure.patch', when="@1.10.1")
patch('fix_multidef_pmi_class.patch', when="@2.0.0:2.0.1")
- patch('fix-ucx-1.7.0-api-instability.patch', when='@4.0.0:4.0.3')
+ patch('fix-ucx-1.7.0-api-instability.patch', when='@4.0.0:4.0.2')
# Vader Bug: https://github.com/open-mpi/ompi/issues/5375
# Haven't release fix for 2.1.x
@@ -203,6 +204,13 @@ class Openmpi(AutotoolsPackage):
patch('btl_vader.patch', when='@3.0.1:3.0.2')
patch('btl_vader.patch', when='@3.1.0:3.1.2')
+ # Reported upstream: https://github.com/open-mpi/ompi/pull/6378
+ # We support only versions based on Libtool 2.4.6.
+ patch('nag_ltmain_1.patch', when='@2.1.4:2.1.999,3.0.1:4%nag')
+ patch('nag_ltmain_2.patch', when='@2.1.2:2.1.3,3.0.0%nag')
+ patch('nag_ltmain_3.patch', when='@2.0.0:2.1.1%nag')
+ patch('nag_ltmain_4.patch', when='@1.10.4:1.10.999%nag')
+
variant(
'fabrics',
values=disjoint_sets(
@@ -398,6 +406,7 @@ class Openmpi(AutotoolsPackage):
spec = self.spec
config_args = [
'--enable-shared',
+ '--disable-silent-rules'
]
# Add extra_rpaths dirs from compilers.yaml into link wrapper
diff --git a/var/spack/repos/builtin/packages/openpmd-api/hdf5-1.12.0.patch b/var/spack/repos/builtin/packages/openpmd-api/hdf5-1.12.0.patch
new file mode 100644
index 0000000000..f190f12ff1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openpmd-api/hdf5-1.12.0.patch
@@ -0,0 +1,23 @@
+From 61ccc18cdd478c6281466f1f77de416559234dd8 Mon Sep 17 00:00:00 2001
+From: Axel Huebl <axel.huebl@plasma.ninja>
+Date: Tue, 17 Mar 2020 10:51:20 -0700
+Subject: [PATCH] HDF5: H5Oget_info Compatibility
+
+Update to work with HDF5 1.12.0 signature.
+Macro for older releases.
+---
+ src/IO/HDF5/HDF5IOHandler.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/IO/HDF5/HDF5IOHandler.cpp b/src/IO/HDF5/HDF5IOHandler.cpp
+index 7043861b..c125e1f4 100644
+--- a/src/IO/HDF5/HDF5IOHandler.cpp
++++ b/src/IO/HDF5/HDF5IOHandler.cpp
+@@ -1535,3 +1535,7 @@ void HDF5IOHandlerImpl::listAttributes(Writable* writable,
+ H5O_info_t object_info;
+ herr_t status;
++#if H5_VERSION_GE(1,12,0)
++ status = H5Oget_info(node_id, &object_info, H5O_INFO_NUM_ATTRS);
++#else
+ status = H5Oget_info(node_id, &object_info);
++#endif
diff --git a/var/spack/repos/builtin/packages/openpmd-api/package.py b/var/spack/repos/builtin/packages/openpmd-api/package.py
index 46ac2eaecb..644758923e 100644
--- a/var/spack/repos/builtin/packages/openpmd-api/package.py
+++ b/var/spack/repos/builtin/packages/openpmd-api/package.py
@@ -15,6 +15,8 @@ class OpenpmdApi(CMakePackage):
maintainers = ['ax3l']
version('dev', branch='dev')
+ version('0.11.1', tag='0.11.1-alpha')
+ version('0.11.0', tag='0.11.0-alpha')
version('0.10.3', tag='0.10.3-alpha')
version('0.10.2', tag='0.10.2-alpha')
version('0.10.1', tag='0.10.1-alpha')
@@ -54,6 +56,10 @@ class OpenpmdApi(CMakePackage):
extends('python', when='+python')
+ # Fix breaking HDF5 1.12.0 API
+ # https://github.com/openPMD/openPMD-api/pull/696
+ patch('hdf5-1.12.0.patch', when='@:0.11.0 +hdf5')
+
def cmake_args(self):
spec = self.spec
diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py
index 56f9b0c689..a0cf6e46cd 100644
--- a/var/spack/repos/builtin/packages/openspeedshop/package.py
+++ b/var/spack/repos/builtin/packages/openspeedshop/package.py
@@ -96,7 +96,7 @@ class Openspeedshop(CMakePackage):
depends_on("libxml2")
- depends_on("qt@3", when='gui=qt3')
+ depends_on("qt@3:3.9", when='gui=qt3')
# Dependencies for the openspeedshop cbtf packages.
depends_on("cbtf@develop", when='@develop', type=('build', 'link', 'run'))
diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py
index 450990c179..fe650f7133 100644
--- a/var/spack/repos/builtin/packages/openssl/package.py
+++ b/var/spack/repos/builtin/packages/openssl/package.py
@@ -25,6 +25,8 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package
# The latest stable version is the 1.1.1 series. This is also our Long Term
# Support (LTS) version, supported until 11th September 2023.
+ version('1.1.1f', sha256='186c6bfe6ecfba7a5b48c47f8a1673d0f3b0e5ba2e25602dd23b629975da3f35')
+ version('1.1.1e', sha256='694f61ac11cb51c9bf73f54e771ff6022b0327a43bbdfa1b2f19de1662a6dcbe')
version('1.1.1d', sha256='1e3a91bc1f9dfce01af26026f856e064eab4c8ee0a8f457b5ae30b40b8b711f2')
version('1.1.1c', sha256='f6fb3079ad15076154eda9413fed42877d668e7069d9b87396d0804fdb3f4c90')
version('1.1.1b', sha256='5c557b023230413dfb0756f3137a13e6d726838ccd1430888ad15bfb2b43ea4b')
@@ -45,6 +47,7 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package
# Our previous LTS version (1.0.2 series) will continue to be supported
# until 31st December 2019 (security fixes only during the last year of
# support).
+ version('1.0.2u', sha256='ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16')
version('1.0.2t', sha256='14cb464efe7ac6b54799b34456bd69558a749a4931ecfd9cf9f71d7881cac7bc')
version('1.0.2s', sha256='cabd5c9492825ce5bd23f3c3aeed6a97f8142f606d893df216411f07d1abab96')
version('1.0.2r', sha256='ae51d08bba8a83958e894946f15303ff894d75c2b8bbd44a852b64e3fe11d0d6')
diff --git a/var/spack/repos/builtin/packages/opensubdiv/package.py b/var/spack/repos/builtin/packages/opensubdiv/package.py
new file mode 100644
index 0000000000..69f9aeba4c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opensubdiv/package.py
@@ -0,0 +1,85 @@
+# 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 Opensubdiv(CMakePackage, CudaPackage):
+ """OpenSubdiv is a set of open source libraries that
+ implement high performance subdivision surface (subdiv)
+ evaluation on massively parallel CPU and GPU architectures.
+ This code path is optimized for drawing deforming surfaces
+ with static topology at interactive framerates."""
+
+ homepage = "http://graphics.pixar.com/opensubdiv/docs/intro.html"
+ url = "https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v3_4_0.tar.gz"
+ git = "https://github.com/PixarAnimationStudios/OpenSubdiv"
+
+ version('develop', branch='dev')
+ version('3_4_0', sha256='d932b292f83371c7518960b2135c7a5b931efb43cdd8720e0b27268a698973e4')
+
+ variant('tbb', default=False, description='Builds with Intel TBB support')
+ variant('openmp', default=False, description='Builds with OpenMP support')
+ variant('doc', default=False, description='Builds documentation. Requires Python 2')
+
+ depends_on('cmake@2.8.6:', type='build')
+ depends_on('graphviz', type='build', when='+doc')
+ depends_on('doxygen', type='build', when='+doc')
+ depends_on('py-docutils', type='build', when='+doc')
+ depends_on('python@2.6:2.999', type='build', when='+doc')
+ depends_on('gl')
+ depends_on('glew@1.9.0:')
+ depends_on('glfw@3.0.0:')
+ depends_on('intel-tbb@4.0:', when='+tbb')
+ depends_on('libxrandr')
+ depends_on('libxcursor')
+ depends_on('libxinerama')
+ depends_on('llvm-openmp', when='+openmp')
+
+ def cmake_args(self):
+ spec = self.spec
+ args = []
+
+ args.append('-DNO_EXAMPLES=1') # disable examples build
+ args.append('-DNO_TUTORIALS=1') # disable tutorials build
+ args.append('-DNO_REGRESSION=1') # disable regression tests build
+ args.append('-DNO_PTEX=1') # disable PTex support
+ args.append('-DNO_OPENCL=1') # disable OpenCL
+ args.append('-DNO_CLEW=1') # disable CLEW wrapper library
+ args.append('-DNO_METAL=1') # disable Metal
+
+ args.append('-DNO_OPENGL=0') # OpenGL always on
+ args.append('-DGLEW_LOCATION={0}'.format(spec['glew'].prefix))
+
+ if '+cuda' in spec:
+ args.append('-DNO_CUDA=0')
+
+ cuda_arch = [x for x in spec.variants['cuda_arch'].value if x]
+ if cuda_arch:
+ args.append('-DOSD_CUDA_NVCC_FLAGS={0}'.format(
+ ' '.join(self.cuda_flags(cuda_arch))))
+ else:
+ args.append('-DOSD_CUDA_NVCC_FLAGS=')
+
+ else:
+ args.append('-DNO_CUDA=1')
+
+ if '+tbb' in spec:
+ args.append('-DNO_TBB=0')
+ else:
+ args.append('-DNO_TBB=1')
+
+ if '+doc' in spec:
+ args.append('-DNO_DOC=0')
+ else:
+ args.append('-DNO_DOC=1')
+
+ if '+openmp' in spec:
+ args.append('-DNO_OMP=0')
+ else:
+ args.append('-DNO_OMP=1')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py
index a44ebc4451..a123f0e887 100644
--- a/var/spack/repos/builtin/packages/otf2/package.py
+++ b/var/spack/repos/builtin/packages/otf2/package.py
@@ -32,5 +32,6 @@ class Otf2(AutotoolsPackage):
'F77={0}'.format(spack_f77),
'FC={0}'.format(spack_fc),
'CFLAGS={0}'.format(self.compiler.pic_flag),
- 'CXXFLAGS={0}'.format(self.compiler.pic_flag)
+ 'CXXFLAGS={0}'.format(self.compiler.pic_flag),
+ 'PYTHON_FOR_GENERATOR=:'
]
diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py
index c6dc408eb6..35dd4f9ba2 100644
--- a/var/spack/repos/builtin/packages/papi/package.py
+++ b/var/spack/repos/builtin/packages/papi/package.py
@@ -2,15 +2,13 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
-from spack import *
import glob
import os
import sys
-from llnl.util.filesystem import fix_darwin_install_name
+import llnl.util.filesystem as fs
-class Papi(Package):
+class Papi(AutotoolsPackage):
"""PAPI provides the tool designer and application engineer with a
consistent interface and methodology for use of the performance
counter hardware found in most major microprocessors. PAPI
@@ -23,6 +21,8 @@ class Papi(Package):
maintainers = ['G-Ragghianti']
url = "http://icl.cs.utk.edu/projects/papi/downloads/papi-5.4.1.tar.gz"
+ version('6.0.0.1', sha256='3cd7ed50c65b0d21d66e46d0ba34cd171178af4bbf9d94e693915c1aca1e287f')
+ version('6.0.0', sha256='3442709dae3405c2845b304c06a8b15395ecf4f3899a89ceb4d715103cb4055f')
version('5.7.0', sha256='d1a3bb848e292c805bc9f29e09c27870e2ff4cda6c2fba3b7da8b4bba6547589')
version('5.6.0', sha256='49b7293f9ca2d74d6d80bd06b5c4be303663123267b4ac0884cbcae4c914dc47')
version('5.5.1', sha256='49dc2c2323f6164c4a7e81b799ed690ee73158671205e71501f849391dd2c2d4')
@@ -36,47 +36,64 @@ class Papi(Package):
variant('powercap', default=False, description='Enable powercap interface support')
variant('rapl', default=False, description='Enable RAPL support')
variant('lmsensors', default=False, description='Enable lm_sensors support')
+ variant('sde', default=False, description='Enable software defined events')
depends_on('lm-sensors', when='+lmsensors')
+ conflicts('%gcc@8:', when='@5.3.0', msg='Requires GCC version less than 8.0')
+
# Does not build with newer versions of gcc, see
# https://bitbucket.org/icl/papi/issues/46/cannot-compile-on-arch-linux
patch('https://bitbucket.org/icl/papi/commits/53de184a162b8a7edff48fed01a15980664e15b1/raw', sha256='64c57b3ad4026255238cc495df6abfacc41de391a0af497c27d0ac819444a1f8', when='@5.4.0:5.6.99%gcc@8:')
- def install(self, spec, prefix):
- if '+lmsensors' in spec:
- with working_dir("src/components/lmsensors"):
- configure_args = [
- "--with-sensors_incdir=%s/sensors" %
- spec['lm-sensors'].headers.directories[0],
- "--with-sensors_libdir=%s" %
- spec['lm-sensors'].libs.directories[0]]
- configure(*configure_args)
- with working_dir("src"):
+ configure_directory = 'src'
- configure_args = ["--prefix=%s" % prefix]
+ def setup_build_environment(self, env):
+ if '+lmsensors' in self.spec and self.version >= Version('6'):
+ env.set('PAPI_LMSENSORS_ROOT', self.spec['lm-sensors'].prefix)
- # PAPI uses MPI if MPI is present; since we don't require
- # an MPI package, we ensure that all attempts to use MPI
- # fail, so that PAPI does not get confused
- configure_args.append('MPICC=:')
+ setup_run_environment = setup_build_environment
- configure_args.append(
- '--with-components={0}'.format(' '.join(
- filter(lambda x: spec.variants[x].value, spec.variants))))
+ def configure_args(self):
+ # PAPI uses MPI if MPI is present; since we don't require
+ # an MPI package, we ensure that all attempts to use MPI
+ # fail, so that PAPI does not get confused
+ options = ['MPICC=:']
+ # Build a list of activated variants (optional PAPI components)
+ variants = filter(lambda x: self.spec.variants[x].value is True,
+ self.spec.variants)
+ if variants:
+ options.append('--with-components={0}'.format(' '.join(variants)))
+ return options
- configure(*configure_args)
+ @run_before('configure')
+ def fortran_check(self):
+ if not self.compiler.fc:
+ msg = 'PAPI requires a Fortran compiler to build'
+ raise RuntimeError(msg)
- # Don't use <malloc.h>
- for level in [".", "*", "*/*"]:
- files = glob.iglob(join_path(level, "*.[ch]"))
- filter_file(r"\<malloc\.h\>", "<stdlib.h>", *files)
+ @run_before('configure')
+ def component_configure(self):
+ configure_script = Executable('./configure')
+ if '+lmsensors' in self.spec and self.version < Version('6'):
+ with working_dir("src/components/lmsensors"):
+ configure_script(
+ "--with-sensors_incdir=%s/sensors" %
+ self.spec['lm-sensors'].headers.directories[0],
+ "--with-sensors_libdir=%s" %
+ self.spec['lm-sensors'].libs.directories[0])
- make()
- make("install")
+ @run_before('build')
+ def fix_build(self):
+ # Don't use <malloc.h>
+ for level in [".", "*", "*/*"]:
+ files = glob.iglob(join_path(level, "*.[ch]"))
+ filter_file(r"\<malloc\.h\>", "<stdlib.h>", *files)
- # The shared library is not installed correctly on Darwin
- if sys.platform == 'darwin':
- os.rename(join_path(prefix.lib, 'libpapi.so'),
- join_path(prefix.lib, 'libpapi.dylib'))
- fix_darwin_install_name(prefix.lib)
+ @run_after('install')
+ def fix_darwin_install(self):
+ # The shared library is not installed correctly on Darwin
+ if sys.platform == 'darwin':
+ os.rename(join_path(self.prefix.lib, 'libpapi.so'),
+ join_path(self.prefix.lib, 'libpapi.dylib'))
+ fs.fix_darwin_install_name(self.prefix.lib)
diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/nag_libtool.patch b/var/spack/repos/builtin/packages/parallel-netcdf/nag_libtool.patch
new file mode 100644
index 0000000000..f391c1dc5e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/parallel-netcdf/nag_libtool.patch
@@ -0,0 +1,69 @@
+--- a/configure
++++ b/configure
+@@ -11745,6 +11745,8 @@ _LT_EOF
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -21030,6 +21032,8 @@ _LT_EOF
+ whole_archive_flag_spec_F77=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_F77='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object_F77=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+@@ -24765,6 +24769,8 @@ _LT_EOF
+ whole_archive_flag_spec_FC=
+ tmp_sharedflag='--shared' ;;
+ nagfor*) # NAGFOR 5.3
++ whole_archive_flag_spec_FC='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
++ compiler_needs_object_FC=yes
+ tmp_sharedflag='-Wl,-shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+--- a/scripts/ltmain.sh
++++ b/scripts/ltmain.sh
+@@ -7862,6 +7862,13 @@ func_mode_link ()
+ # Convert "-framework foo" to "foo.ltframework"
+ if test -n "$inherited_linker_flags"; then
+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
++
++ # Additionally convert " -pthread" to " -Wl,-pthread" for nagfor
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*) tmp_inherited_linker_flags=`$ECHO "$tmp_inherited_linker_flags" | $SED 's/ -pthread/ -Wl,-pthread/g'` ;;
++ esac
++
+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+ case " $new_inherited_linker_flags " in
+ *" $tmp_inherited_linker_flag "*) ;;
+@@ -8881,7 +8888,8 @@ func_mode_link ()
+ xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ # On Darwin other compilers
+- case $CC in
++ func_cc_basename $CC
++ case $func_cc_basename_result in
+ nagfor*)
+ verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+ ;;
+@@ -9493,6 +9501,13 @@ EOF
+ ;;
+ esac
+
++ # Time to revert the changes made for nagfor.
++ func_cc_basename $CC
++ case $func_cc_basename_result in
++ nagfor*)
++ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% -Wl,-pthread% -pthread%g'` ;;
++ esac
++
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
index 34a1af5984..384717d05e 100644
--- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py
+++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
@@ -25,7 +25,6 @@ class ParallelNetcdf(AutotoolsPackage):
return url.format(version.dotted)
- version('develop', branch='develop')
version('master', branch='master')
version('1.12.1', sha256='56f5afaa0ddc256791c405719b6436a83b92dcd5be37fe860dea103aee8250a2')
version('1.11.2', sha256='d2c18601b364c35b5acb0a0b46cd6e14cae456e0eb854e5c789cf65f3cd6a2a7')
@@ -42,41 +41,74 @@ class ParallelNetcdf(AutotoolsPackage):
variant('fortran', default=True, description='Build the Fortran Interface')
variant('pic', default=True,
description='Produce position-independent code (for shared libs)')
+ variant('shared', default=True, description='Enable shared library')
depends_on('mpi')
depends_on('m4', type='build')
+ depends_on('autoconf', when='@master', type='build')
+ depends_on('automake', when='@master', type='build')
+ depends_on('libtool', when='@master', type='build')
- # See:
- # https://trac.mcs.anl.gov/projects/parallel-netcdf/browser/trunk/INSTALL
- def configure_args(self):
- spec = self.spec
+ conflicts('+shared', when='@:1.9%nag+fortran')
+ conflicts('+shared', when='@:1.8')
+
+ patch('nag_libtool.patch', when='@1.9:1.12.1%nag')
- args = ['--with-mpi={0}'.format(spec['mpi'].prefix)]
- args.append('MPICC={0}'.format(spec['mpi'].mpicc))
- args.append('MPICXX={0}'.format(spec['mpi'].mpicxx))
- args.append('MPIF77={0}'.format(spec['mpi'].mpifc))
- args.append('MPIF90={0}'.format(spec['mpi'].mpifc))
- args.append('SEQ_CC={0}'.format(spack_cc))
+ @property
+ def libs(self):
+ libraries = ['libpnetcdf']
- if '+pic' in spec:
- args.extend([
- 'CFLAGS={0}'.format(self.compiler.pic_flag),
- 'CXXFLAGS={0}'.format(self.compiler.pic_flag),
- 'FFLAGS={0}'.format(self.compiler.pic_flag)
- ])
+ query_parameters = self.spec.last_query.extra_parameters
+
+ if 'shared' in query_parameters:
+ shared = True
+ elif 'static' in query_parameters:
+ shared = False
+ else:
+ shared = '+shared' in self.spec
- if '~cxx' in spec:
- args.append('--disable-cxx')
+ libs = find_libraries(
+ libraries, root=self.prefix, shared=shared, recursive=True
+ )
- if '~fortran' in spec:
- args.append('--disable-fortran')
+ if libs:
+ return libs
- if spec.satisfies('@1.8.0:'):
+ msg = 'Unable to recursively locate {0} {1} libraries in {2}'
+ raise spack.error.NoLibrariesError(
+ msg.format('shared' if shared else 'static',
+ self.spec.name,
+ self.spec.prefix))
+
+ @when('@master')
+ def autoreconf(self, spec, prefix):
+ with working_dir(self.configure_directory):
+ # We do not specify '-f' because we need to use libtool files from
+ # the repository.
+ autoreconf('-iv')
+
+ def configure_args(self):
+ args = ['--with-mpi=%s' % self.spec['mpi'].prefix,
+ 'SEQ_CC=%s' % spack_cc]
+
+ args += self.enable_or_disable('cxx')
+ args += self.enable_or_disable('fortran')
+
+ if '+pic' in self.spec:
+ args.extend(['{0}FLAGS={1}'.format(lang, self.compiler.pic_flag)
+ for lang in ['C', 'CXX', 'F', 'FC']])
+
+ if self.version >= Version('1.8'):
args.append('--enable-relax-coord-bound')
- return args
+ if self.version >= Version('1.9'):
+ args += self.enable_or_disable('shared')
+ args.extend(['--enable-static',
+ '--disable-silent-rules'])
+
+ if self.spec.satisfies('%nag+fortran+shared'):
+ args.extend(['ac_cv_prog_fc_v=-Wl,-v',
+ 'ac_cv_prog_f77_v=-Wl,-v'])
- def install(self, spec, prefix):
- # Installation fails in parallel
- make('install', parallel=False)
+ return args
diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py
index 111c8df7a4..48dff877e0 100644
--- a/var/spack/repos/builtin/packages/paraview/package.py
+++ b/var/spack/repos/builtin/packages/paraview/package.py
@@ -20,6 +20,7 @@ class Paraview(CMakePackage, CudaPackage):
maintainers = ['chuckatkins', 'danlipsa']
version('develop', branch='master', submodules=True)
+ version('5.8.0', sha256='219e4107abf40317ce054408e9c3b22fb935d464238c1c00c0161f1c8697a3f9')
version('5.7.0', sha256='e41e597e1be462974a03031380d9e5ba9a7efcdb22e4ca2f3fec50361f310874')
version('5.6.2', sha256='1f3710b77c58a46891808dbe23dc59a1259d9c6b7bb123aaaeaa6ddf2be882ea')
version('5.6.0', sha256='cb8c4d752ad9805c74b4a08f8ae6e83402c3f11e38b274dba171b99bb6ac2460')
diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py
index b558456dbc..c2adfb831d 100644
--- a/var/spack/repos/builtin/packages/pdt/package.py
+++ b/var/spack/repos/builtin/packages/pdt/package.py
@@ -30,6 +30,8 @@ class Pdt(AutotoolsPackage):
version('3.19', sha256='d57234077e2e999f2acf9860ea84369a4694b50cc17fa6728e5255dc5f4a2160')
version('3.18.1', sha256='d06c2d1793fadebf169752511e5046d7e02cf3fead6135a35c34b1fee6d6d3b2')
+ variant('pic', default=False, description="Builds with pic")
+
def patch(self):
if self.spec.satisfies('%clang'):
filter_file(r'PDT_GXX=g\+\+ ',
@@ -50,6 +52,9 @@ class Pdt(AutotoolsPackage):
else:
raise InstallError('Unknown/unsupported compiler family')
+ if '+pic' in spec:
+ options.append('-useropt=' + self.compiler.pic_flag)
+
configure(*options)
@run_after('install')
diff --git a/var/spack/repos/builtin/packages/perfstubs/package.py b/var/spack/repos/builtin/packages/perfstubs/package.py
new file mode 100644
index 0000000000..9162e749fc
--- /dev/null
+++ b/var/spack/repos/builtin/packages/perfstubs/package.py
@@ -0,0 +1,34 @@
+# Copyright 2013-2020 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 Perfstubs(CMakePackage):
+ """Profiling API for adding tool instrumentation support to any project.
+
+ This was motivated by the need to quickly add instrumentation to the
+ [ADIOS2](https://github.com/ornladios/ADIOS2) library without adding a build
+ dependency, or tying to a specific measurement tool.
+
+ The initial prototype implementation was tied to TAU, but evolved to this more
+ generic version, which was extracted as a separate repository for testing and
+ demonstration purposes.
+ """
+
+ homepage = "https://github.com/khuck/perfstubs"
+ git = "https://github.com/khuck/perfstubs.git"
+
+ version('master', branch='master')
+ variant('static', default=False, description='Build static executable support')
+
+ def cmake_args(self):
+ spec = self.spec
+
+ args = [
+ '-DPERFSTUBS_USE_STATIC:BOOL={0}'.format(
+ 'ON' if '+static' in spec else 'OFF')
+ ]
+ return args
diff --git a/var/spack/repos/builtin/packages/perl-want/package.py b/var/spack/repos/builtin/packages/perl-want/package.py
index 8cf43446ba..82b926234a 100644
--- a/var/spack/repos/builtin/packages/perl-want/package.py
+++ b/var/spack/repos/builtin/packages/perl-want/package.py
@@ -9,7 +9,7 @@ from spack import *
class PerlWant(PerlPackage):
"""A generalisation of wantarray."""
- homepage = "search.cpan.org/~robin/Want/Want.pm"
+ homepage = "http://search.cpan.org/~robin/Want/Want.pm"
url = "http://search.cpan.org/CPAN/authors/id/R/RO/ROBIN/Want-0.29.tar.gz"
version('0.29', sha256='b4e4740b8d4cb783591273c636bd68304892e28d89e88abf9273b1de17f552f7')
diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py
index 88332caec9..8e1770aac8 100644
--- a/var/spack/repos/builtin/packages/petsc/package.py
+++ b/var/spack/repos/builtin/packages/petsc/package.py
@@ -16,14 +16,16 @@ class Petsc(Package):
"""
homepage = "http://www.mcs.anl.gov/petsc/index.html"
- url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.5.3.tar.gz"
- git = "https://gitlab.com/petsc/petsc.git"
-
+ url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.13.0.tar.gz"
+ git = "https://gitlab.com/petsc/petsc.git"
maintainers = ['balay', 'barrysmith', 'jedbrown']
version('develop', branch='master')
version('xsdk-0.2.0', tag='xsdk-0.2.0')
+ version('3.13.0', sha256='f0ea543a54145c5d1387e25b121c3fd1b1ca834032c5a33f6f1d929e95bdf0e5')
+ version('3.12.5', sha256='d676eb67e79314d6cca6422d7c477d2b192c830b89d5edc6b46934f7453bcfc0')
+ version('3.12.4', sha256='56a941130da93bbacb3cfa74dcacea1e3cd8e36a0341f9ced09977b1457084c3')
version('3.12.3', sha256='91f77d7b0f54056f085b9e27938922db3d9bb1734a2e2a6d26f43d3e6c0cf631')
version('3.12.2', sha256='d874b2e198c4cb73551c2eca1d2c5d27da710be4d00517adb8f9eb3d6d0375e8')
version('3.12.1', sha256='b72d895d0f4a79acb13ebc782b47b26d10d4e5706d399f533afcd5b3dba13737')
@@ -99,6 +101,8 @@ class Petsc(Package):
description='Activate X support')
variant('batch', default=False,
description='Enable when mpiexec is not available to run binaries')
+ variant('valgrind', default=False,
+ description='Enable Valgrind Client Request mechanism')
# 3.8.0 has a build issue with MKL - so list this conflict explicitly
conflicts('^intel-mkl', when='@3.8.0')
@@ -143,9 +147,11 @@ class Petsc(Package):
depends_on('metis@5:~int64', when='@3.8:+metis~int64')
depends_on('metis@5:+int64', when='@3.8:+metis+int64')
- depends_on('hdf5+mpi+hl+fortran', when='+hdf5+mpi')
+ depends_on('hdf5@:1.10.99+mpi+hl+fortran', when='@:3.12.99+hdf5+mpi')
+ depends_on('hdf5+mpi+hl+fortran', when='@3.13:+hdf5+mpi')
depends_on('zlib', when='+hdf5')
depends_on('parmetis', when='+metis+mpi')
+ depends_on('valgrind', when='+valgrind')
# Hypre does not support complex numbers.
# Also PETSc prefer to build it without internal superlu, likely due to
# conflict in headers see
@@ -153,21 +159,23 @@ class Petsc(Package):
depends_on('hypre@:2.13.99~internal-superlu~int64', when='@:3.8.99+hypre+mpi~complex~int64')
depends_on('hypre@:2.13.99~internal-superlu+int64', when='@:3.8.99+hypre+mpi~complex+int64')
depends_on('hypre@2.14:~internal-superlu~int64', when='@3.9:+hypre+mpi~complex~int64')
- depends_on('hypre@2.14:~internal-superlu+int64', when='@3.9+hypre+mpi~complex+int64')
+ depends_on('hypre@2.14:~internal-superlu+int64', when='@3.9:+hypre+mpi~complex+int64')
depends_on('hypre@xsdk-0.2.0~internal-superlu+int64', when='@xsdk-0.2.0+hypre+mpi~complex+int64')
depends_on('hypre@xsdk-0.2.0~internal-superlu~int64', when='@xsdk-0.2.0+hypre+mpi~complex~int64')
depends_on('hypre@develop~internal-superlu+int64', when='@develop+hypre+mpi~complex+int64')
depends_on('hypre@develop~internal-superlu~int64', when='@develop+hypre+mpi~complex~int64')
depends_on('superlu-dist@:4.3~int64', when='@3.4.4:3.6.4+superlu-dist+mpi~int64')
depends_on('superlu-dist@:4.3+int64', when='@3.4.4:3.6.4+superlu-dist+mpi+int64')
- depends_on('superlu-dist@5.0.0:~int64', when='@3.7:3.7.99+superlu-dist+mpi~int64')
- depends_on('superlu-dist@5.0.0:+int64', when='@3.7:3.7.99+superlu-dist+mpi+int64')
+ depends_on('superlu-dist@5.0.0:5.1.3~int64', when='@3.7:3.7.99+superlu-dist+mpi~int64')
+ depends_on('superlu-dist@5.0.0:5.1.3+int64', when='@3.7:3.7.99+superlu-dist+mpi+int64')
depends_on('superlu-dist@5.2:5.2.99~int64', when='@3.8:3.9.99+superlu-dist+mpi~int64')
depends_on('superlu-dist@5.2:5.2.99+int64', when='@3.8:3.9.99+superlu-dist+mpi+int64')
depends_on('superlu-dist@5.4:5.4.99~int64', when='@3.10:3.10.2+superlu-dist+mpi~int64')
depends_on('superlu-dist@5.4:5.4.99+int64', when='@3.10:3.10.2+superlu-dist+mpi+int64')
depends_on('superlu-dist@6.1:6.1.99~int64', when='@3.10.3:3.12.99+superlu-dist+mpi~int64')
depends_on('superlu-dist@6.1:6.1.99+int64', when='@3.10.3:3.12.99+superlu-dist+mpi+int64')
+ depends_on('superlu-dist@6.1:6.3.99~int64', when='@3.13.0:3.13.99+superlu-dist+mpi~int64')
+ depends_on('superlu-dist@6.1:6.3.99+int64', when='@3.13.0:3.13.99+superlu-dist+mpi+int64')
depends_on('superlu-dist@xsdk-0.2.0~int64', when='@xsdk-0.2.0+superlu-dist+mpi~int64')
depends_on('superlu-dist@xsdk-0.2.0+int64', when='@xsdk-0.2.0+superlu-dist+mpi+int64')
depends_on('superlu-dist@develop~int64', when='@develop+superlu-dist+mpi~int64')
@@ -181,6 +189,13 @@ class Petsc(Package):
depends_on('suite-sparse', when='+suite-sparse')
depends_on('libx11', when='+X')
+ def url_for_version(self, version):
+ if version >= Version('3.13.0'):
+ # petsc-lite tarballs are smaller by skipping docs
+ return "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-{0}.tar.gz".format(version)
+ else:
+ return "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-{0}.tar.gz".format(version)
+
def mpi_dependent_options(self):
if '~mpi' in self.spec:
compiler_opts = [
@@ -280,7 +295,7 @@ class Petsc(Package):
# Activates library support if needed
for library in ('metis', 'hdf5', 'hypre', 'parmetis',
- 'mumps', 'trilinos', 'fftw'):
+ 'mumps', 'trilinos', 'fftw', 'valgrind'):
options.append(
'--with-{library}={value}'.format(
library=library, value=('1' if library in spec else '0'))
diff --git a/var/spack/repos/builtin/packages/pfft/package.py b/var/spack/repos/builtin/packages/pfft/package.py
index c682ee63ce..0dcbd0bb71 100644
--- a/var/spack/repos/builtin/packages/pfft/package.py
+++ b/var/spack/repos/builtin/packages/pfft/package.py
@@ -27,46 +27,50 @@ class Pfft(AutotoolsPackage):
configure = Executable('../configure')
- if '+double' in spec['fftw']:
+ fftw = spec['fftw']
+ if 'precision=double' in fftw:
with working_dir('double', create=True):
configure(*options)
- if '+float' in spec['fftw']:
+ if 'precision=float' in fftw:
with working_dir('float', create=True):
configure('--enable-float', *options)
- if '+long_double' in spec['fftw']:
+ if 'precision=long_double' in fftw:
with working_dir('long-double', create=True):
configure('--enable-long-double', *options)
def build(self, spec, prefix):
- if '+double' in spec['fftw']:
+ fftw = spec['fftw']
+ if 'precision=double' in fftw:
with working_dir('double'):
make()
- if '+float' in spec['fftw']:
+ if 'precision=float' in fftw:
with working_dir('float'):
make()
- if '+long_double' in spec['fftw']:
+ if 'precision=long_double' in fftw:
with working_dir('long-double'):
make()
def check(self):
spec = self.spec
- if '+double' in spec['fftw']:
+ fftw = spec['fftw']
+ if 'precision=double' in fftw:
with working_dir('double'):
make("check")
- if '+float' in spec['fftw']:
+ if 'precision=float' in fftw:
with working_dir('float'):
make("check")
- if '+long_double' in spec['fftw']:
+ if 'precision=long_double' in fftw:
with working_dir('long-double'):
make("check")
def install(self, spec, prefix):
- if '+double' in spec['fftw']:
+ fftw = spec['fftw']
+ if 'precision=double' in fftw:
with working_dir('double'):
make("install")
- if '+float' in spec['fftw']:
+ if 'precision=float' in fftw:
with working_dir('float'):
make("install")
- if '+long_double' in spec['fftw']:
+ if 'precision=long_double' in fftw:
with working_dir('long-double'):
make("install")
diff --git a/var/spack/repos/builtin/packages/pfunit/package.py b/var/spack/repos/builtin/packages/pfunit/package.py
index 30704ac62e..ab6bc53d2c 100644
--- a/var/spack/repos/builtin/packages/pfunit/package.py
+++ b/var/spack/repos/builtin/packages/pfunit/package.py
@@ -30,10 +30,14 @@ class Pfunit(CMakePackage):
variant('shared', default=True,
description='Build shared library in addition to static')
variant('mpi', default=False, description='Enable MPI')
- variant('use_comm_world', default=False, description='Enable MPI_COMM_WORLD for testing')
+ variant('use_comm_world', default=False,
+ description='Enable MPI_COMM_WORLD for testing')
variant('openmp', default=False, description='Enable OpenMP')
variant('docs', default=False, description='Build docs')
+ variant('max_array_rank', values=int, default=5,
+ description='Max number of Fortran dimensions of array asserts')
+
depends_on('python@2.7:', type=('build', 'run')) # python3 too!
depends_on('mpi', when='+mpi')
@@ -53,7 +57,8 @@ class Pfunit(CMakePackage):
'-DBUILD_SHARED=%s' % ('YES' if '+shared' in spec else 'NO'),
'-DCMAKE_Fortran_MODULE_DIRECTORY=%s' % spec.prefix.include,
'-DBUILD_DOCS=%s' % ('YES' if '+docs' in spec else 'NO'),
- '-DOPENMP=%s' % ('YES' if '+openmp' in spec else 'NO')]
+ '-DOPENMP=%s' % ('YES' if '+openmp' in spec else 'NO'),
+ '-DMAX_RANK=%s' % spec.variants['max_array_rank'].value]
if spec.satisfies('+mpi'):
args.extend(['-DMPI=YES', '-DMPI_USE_MPIEXEC=YES',
diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py
index 783bf75faa..aa6e60ddcc 100644
--- a/var/spack/repos/builtin/packages/pgi/package.py
+++ b/var/spack/repos/builtin/packages/pgi/package.py
@@ -20,6 +20,7 @@ class Pgi(Package):
homepage = "http://www.pgroup.com/"
+ version('19.10', sha256='ac9db73ba80a66fe3bc875f63aaa9e16f54674a4e88b25416432430ba8cf203d')
version('19.4', sha256='23eee0d4da751dd6f247d624b68b03538ebd172e63a053c41bb67013f07cf68e')
version('19.1', sha256='3e05a6db2bf80b5d15f6ff83188f20cb89dc23e233417921e5c0822e7e57d34f')
version('18.10', sha256='4b3ff83d2a13de6001bed599246eff8e63ef711b8952d4a9ee12efd666b3e326')
@@ -90,6 +91,9 @@ class Pgi(Package):
def setup_run_environment(self, env):
prefix = Prefix(join_path(self.prefix, 'linux86-64', self.version))
+ env.prepend_path('PATH', prefix.bin)
+ env.prepend_path('MANPATH', prefix.man)
+ env.prepend_path('LD_LIBRARY_PATH', prefix.lib)
env.set('CC', join_path(prefix.bin, 'pgcc'))
env.set('CXX', join_path(prefix.bin, 'pgc++'))
env.set('F77', join_path(prefix.bin, 'pgfortran'))
diff --git a/var/spack/repos/builtin/packages/php/package.py b/var/spack/repos/builtin/packages/php/package.py
new file mode 100644
index 0000000000..714bfb0e8f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/php/package.py
@@ -0,0 +1,41 @@
+# 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 Php(AutotoolsPackage):
+ """
+ PHP is a popular general-purpose scripting language that is especially
+ suited to web development. Fast, flexible and pragmatic, PHP powers
+ everything from your blog to the most popular websites in the world.
+ """
+
+ homepage = "https://php.net/"
+ url = "https://github.com/php/php-src/archive/php-7.3.13.tar.gz"
+
+ version('7.4.1', sha256='4d9d7c5681bec3af38a935d033657dce09a9913498f8022d7ca163a7f2f493a7')
+ version('7.4.0', sha256='91d34b48025ab9789216df89e247b6904912eeeaeff38c300ef314bdda8920b0')
+ version('7.3.13', sha256='e68b8d9e659f2993eee912f05860e546fdc18e459f31cd2771f404df21285f0b')
+ version('7.3.12', sha256='d0672ea84c0ab184f636acff3230d376d89a2067d59a87a2f1842361ee1f97d6')
+ version('7.3.11', sha256='4d861b2f3bc640ded8b591ce87250161392a6244a3c84042da0c06fd8c500eb2')
+ version('7.2.26', sha256='da132a836cec8021c00f22952e6044d91628ee3d2ef92a95d65cf91bad810600')
+ version('7.2.25', sha256='049b2d291c45cb889d15fcd2bac6da7d15ca5d535d272d2f8879fb834bbf276e')
+ version('7.2.24', sha256='334c9915733f6a29e1462f64038b1b4b1b21cb18f4f5f980add86792b5550ab3')
+ version('7.1.33', sha256='f80a795a09328a9441bae4a8a60fa0d6d43ec5adc98f5aa5f51d06f4522c07fe')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+ depends_on('pkgconfig', type='build')
+ depends_on('bison', type='build')
+ depends_on('re2c', type='build')
+ depends_on('libxml2')
+ depends_on('sqlite')
+
+ def autoreconf(self, spec, prefix):
+ bash = which('bash')
+ bash('./buildconf', '--force')
diff --git a/var/spack/repos/builtin/packages/phylobayesmpi/package.py b/var/spack/repos/builtin/packages/phylobayesmpi/package.py
new file mode 100644
index 0000000000..9a10a82054
--- /dev/null
+++ b/var/spack/repos/builtin/packages/phylobayesmpi/package.py
@@ -0,0 +1,31 @@
+# Copyright 2013-2020 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 Phylobayesmpi(MakefilePackage):
+ """Phylobayes MPI version"""
+
+ homepage = "https://github.com/bayesiancook/pbmp"
+ url = "https://github.com/bayesiancook/pbmpi/archive/v1.8b.tar.gz"
+ git = "https://github.com/bayesiancook/pbmpi.git"
+
+ version('1.8b', sha256='7ff017bf492c1d8b42bfff3ee8e998ba1c50f4e4b3d9d6125647b91738017324')
+
+ depends_on('mpi')
+
+ build_directory = 'sources'
+
+ def edit(self, spec, prefix):
+ with working_dir('sources'):
+ makefile = FileFilter('Makefile')
+ makefile.filter('CC=.*', 'CC = ' + spec['mpi'].mpicxx)
+
+ def install(self, spec, prefix):
+ # no install target provided in Makefile so copy the executables
+ # from the data directory
+
+ install_tree('data', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/pinentry/package.py b/var/spack/repos/builtin/packages/pinentry/package.py
new file mode 100644
index 0000000000..3a9e6e526c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/pinentry/package.py
@@ -0,0 +1,47 @@
+# Copyright 2013-2020 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 Pinentry(AutotoolsPackage):
+ """pinentry is a small collection of dialog programs that allow GnuPG to
+ read passphrases and PIN numbers in a secure manner. There are versions for
+ the common GTK and Qt toolkits as well as for the text terminal (Curses).
+ """
+
+ homepage = "https://gnupg.org/related_software/pinentry/index.html"
+ url = "https://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2"
+
+ version('1.1.0', sha256='68076686fa724a290ea49cdf0d1c0c1500907d1b759a3bcbfbec0293e8f56570')
+
+ depends_on('libgpg-error@1.16:')
+ depends_on('libassuan@2.1.0:')
+
+ def configure_args(self):
+ return [
+ # Autotools automatically enables these if dependencies found
+ # TODO: add variants for these
+ '--disable-pinentry-curses',
+ '--disable-pinentry-emacs',
+ '--disable-pinentry-gtk2',
+ '--disable-pinentry-gnome3',
+ '--disable-pinentry-qt',
+ '--disable-pinentry-qt5',
+ '--disable-pinentry-tqt',
+ '--disable-pinentry-fltk',
+
+ # No dependencies, simplest installation
+ '--enable-pinentry-tty',
+
+ # Disable extra features
+ '--disable-fallback-curses',
+ '--disable-inside-emacs',
+ '--disable-libsecret',
+
+ # Required dependencies
+ '--with-gpg-error-prefix=' + self.spec['libgpg-error'].prefix,
+ '--with-libassuan-prefix=' + self.spec['libassuan'].prefix,
+ ]
diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py
index c8b1f8e9b9..b51d3c12c2 100644
--- a/var/spack/repos/builtin/packages/plumed/package.py
+++ b/var/spack/repos/builtin/packages/plumed/package.py
@@ -25,8 +25,9 @@ class Plumed(AutotoolsPackage):
git = 'https://github.com/plumed/plumed2.git'
version('master', branch='master')
- version('2.6b', sha256='3ecda9d46967c8ddd08e820aed974794d926cffb78b262f9d42cdbece3b15677')
- version('2.5.3', preferred=True, sha256='543288be667dc4201fc461ecd2dd4878ddfbeac682d0c021c99ea8e501c7c9dc')
+ version('2.6.0', sha256='3d57ae460607a49547ef38a52c4ac93493a3966857c352280a9c05f5dcdb1820')
+ version('2.5.4', preferred=True, sha256='a1647e598191f261e75d06351e607475d395af481315052a4c28563ac9989a7f')
+ version('2.5.3', sha256='543288be667dc4201fc461ecd2dd4878ddfbeac682d0c021c99ea8e501c7c9dc')
version('2.5.2', sha256='85d10cc46e2e37c7719cf51c0931278f56c2c8f8a9d86188b2bf97c2535a2ab4')
version('2.5.1', sha256='de309980dcfd6f6e0e70e138856f4bd9eb4d8a513906a5e6389f18a5af7f2eba')
version('2.5.0', sha256='53e08187ec9f8af2326fa84407e34644a7c51d2af93034309fb70675eee5e4f7')
@@ -68,6 +69,7 @@ class Plumed(AutotoolsPackage):
depends_on('autoconf', type='build')
depends_on('automake', type='build')
depends_on('libtool', type='build')
+ depends_on('py-cython', type='build', when='@2.5:')
force_autoreconf = True
diff --git a/var/spack/repos/builtin/packages/pmix/package.py b/var/spack/repos/builtin/packages/pmix/package.py
index 0ebdce7987..2cb5126b53 100644
--- a/var/spack/repos/builtin/packages/pmix/package.py
+++ b/var/spack/repos/builtin/packages/pmix/package.py
@@ -39,6 +39,7 @@ class Pmix(AutotoolsPackage):
version('3.0.2', sha256='df68f35a3ed9517eeade80b13855cebad8fde2772b36a3f6be87559b6d430670')
version('3.0.1', sha256='b81055d2c0d61ef5a451b63debc39c820bcd530490e2e4dcb4cdbacb618c157c')
version('3.0.0', sha256='ee8f68107c24b706237a53333d832445315ae37de6773c5413d7fda415a6e2ee')
+ version('2.2.3', sha256='6fa5d45eb089e29101190c645e986342a24a03a4ea3a936db0b120aafa45b1f0')
version('2.2.2', sha256='cd951dbda623fadc5b32ae149d8cc41f9462eac4d718d089340911b1a7c20714')
version('2.1.4', sha256='eb72d292e76e200f02cf162a477eecea2559ef3ac2edf50ee95b3fe3983d033e')
version('2.1.3', sha256='281283133498e7e5999ed5c6557542c22408bc9eb51ecbcf7696160616782a41')
@@ -49,6 +50,10 @@ class Pmix(AutotoolsPackage):
depends_on('libevent@2.0.20:2.0.22,2.1.8')
depends_on('hwloc@1.11.0:1.11.99,2.0.1:', when='@3.0.0:')
+ variant('pmi_backwards_compatibility',
+ default=True,
+ description="Toggle pmi backwards compatibility")
+
def configure_args(self):
spec = self.spec
@@ -57,6 +62,11 @@ class Pmix(AutotoolsPackage):
'--enable-static'
]
+ if '+pmi_backwards_compatibility' in self.spec:
+ config_args.append('--enable-pmi-backward-compatibility')
+ else:
+ config_args.append('--disable-pmi-backward-compatibility')
+
# libevent support
config_args.append(
'--with-libevent={0}'.format(spec['libevent'].prefix))
diff --git a/var/spack/repos/builtin/packages/pocl/package.py b/var/spack/repos/builtin/packages/pocl/package.py
index f9b343271a..42a862d97b 100644
--- a/var/spack/repos/builtin/packages/pocl/package.py
+++ b/var/spack/repos/builtin/packages/pocl/package.py
@@ -20,6 +20,9 @@ class Pocl(CMakePackage):
git = "https://github.com/pocl/pocl.git"
version("master", branch="master")
+ version('1.4', sha256='ec237faa83bb1c803fbdf7c6e83d8a2ad68b6f0ed1879c3aa16c0e1dcc478742')
+ version('1.3', sha256='6527e3f47fab7c21e96bc757c4ae3303901f35e23f64642d6da5cc4c4fcc915a')
+ version('1.2', sha256='0c43e68f336892f3a64cba19beb99d9212f529bedb77f7879c0331450b982d46')
version('1.1', sha256='1e8dd0693a88c84937754df947b202871a40545b1b0a97ebefa370b0281c3c53')
version('1.0', sha256='94bd86a2f9847c03e6c3bf8dca12af3734f8b272ffeacbc3fa8fcca58844b1d4')
version('0.14', sha256='2127bf925a91fbbe3daf2f1bac0da5c8aceb16e2a9434977a3057eade974106a')
@@ -48,6 +51,9 @@ class Pocl(CMakePackage):
# (see #1616)
# These are the supported LLVM versions
depends_on("llvm +clang @6.0:7.0", when="@master")
+ depends_on("llvm +clang @6.0:9.0", when="@1.4")
+ depends_on("llvm +clang @5.0:8.0", when="@1.3")
+ depends_on("llvm +clang @5.0:7.0", when="@1.2")
depends_on("llvm +clang @5.0:6.0", when="@1.1")
depends_on("llvm +clang @4.0:5.0", when="@1.0")
depends_on("llvm +clang @3.7:4.0", when="@0.14")
diff --git a/var/spack/repos/builtin/packages/podio/package.py b/var/spack/repos/builtin/packages/podio/package.py
new file mode 100644
index 0000000000..bc7a6dab90
--- /dev/null
+++ b/var/spack/repos/builtin/packages/podio/package.py
@@ -0,0 +1,58 @@
+# Copyright 2013-2020 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 Podio(CMakePackage):
+ """PODIO, or plain-old-data I/O, is a C++ library to support the creation
+ and handling of data models in particle physics."""
+
+ homepage = "https://github.com/AIDASoft/podio"
+ url = "https://github.com/AIDASoft/podio/archive/v00-09-02.tar.gz"
+ git = "https://github.com/AIDASoft/podio.git"
+
+ maintainers = ['vvolkl', 'drbenmorgan']
+
+ version('master', branch='master')
+ version('00-10', sha256='b5b42770ec8b96bcd2748abc05669dd3e4d4cc84f81ed57d57d2eda1ade90ef2')
+ version('00-09-02', sha256='8234d1b9636029124235ef81199a1220968dcc7fdaeab81cdc96a47af332d240')
+ version('00-09', sha256='3cde67556b6b76fd2d004adfaa3b3b6173a110c0c209792bfdb5f9353e21076f')
+ version('00-08', sha256='9d035a7f5ebfae5279a17405003206853271af692f762e2bac8e73825f2af327')
+
+ variant('build_type', default='Release',
+ description='The build type to build',
+ values=('Debug', 'Release'))
+
+ variant('cxxstd',
+ default='17',
+ values=('14', '17'),
+ multi=False,
+ description='Use the specified C++ standard when building.')
+
+ _cxxstd_values = ('14', '17')
+ for s in _cxxstd_values:
+ depends_on('root@6.08.06: cxxstd=' + s, when='cxxstd=' + s)
+
+ depends_on('cmake', type='build')
+ depends_on('python', type=('build', 'run'))
+ depends_on('py-pyyaml', type=('build', 'run'))
+
+ def cmake_args(self):
+ args = []
+ # C++ Standard
+ args.append('-DCMAKE_CXX_STANDARD=%s'
+ % self.spec.variants['cxxstd'].value)
+ args.append('-DBUILD_TESTING=OFF')
+ return args
+
+ def setup_build_environment(self, spack_env):
+ spack_env.prepend_path('LD_LIBRARY_PATH', self.spec['root'].prefix.lib)
+
+ def setup_dependent_build_environment(self, env, dependent_spec):
+ env.set('PODIO', self.prefix)
+
+ def setup_dependent_run_environment(self, env, dependent_spec):
+ env.set('PODIO', self.prefix)
diff --git a/var/spack/repos/builtin/packages/poppler/package.py b/var/spack/repos/builtin/packages/poppler/package.py
index 8689f817e5..affb9e5359 100644
--- a/var/spack/repos/builtin/packages/poppler/package.py
+++ b/var/spack/repos/builtin/packages/poppler/package.py
@@ -49,7 +49,7 @@ class Poppler(CMakePackage):
depends_on('qt@4.0:', when='+qt')
depends_on('zlib', when='+zlib')
depends_on('cairo@1.10.0:', when='+glib')
- depends_on('libiconv', when='+iconv')
+ depends_on('iconv', when='+iconv')
depends_on('jpeg', when='+jpeg')
depends_on('libpng', when='+png')
depends_on('libtiff', when='+tiff')
diff --git a/var/spack/repos/builtin/packages/portage/package.py b/var/spack/repos/builtin/packages/portage/package.py
index 097ec9aab1..95c881ae6c 100644
--- a/var/spack/repos/builtin/packages/portage/package.py
+++ b/var/spack/repos/builtin/packages/portage/package.py
@@ -60,6 +60,6 @@ class Portage(CMakePackage):
self.spec['lapack'].libs.joined())
options.append("-DLAPACKE_LIBRARY=" +
- self.spec["lapack"].libs.joined(";"))
+ self.spec["lapack:c"].libs.joined(";"))
return options
diff --git a/var/spack/repos/builtin/packages/ppopen-appl-bem-at/duplicate_defs.patch b/var/spack/repos/builtin/packages/ppopen-appl-bem-at/duplicate_defs.patch
new file mode 100755
index 0000000000..d21d9364e5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-appl-bem-at/duplicate_defs.patch
@@ -0,0 +1,13 @@
+diff --git a/framework_with_templates/OAT_bem-bb-fw-dense-0.1.0.f90 b/framework_with_templates/OAT_bem-bb-fw-dense-0.1.0.f90
+index edabbed..16c6a52 100644
+--- a/framework_with_templates/OAT_bem-bb-fw-dense-0.1.0.f90
++++ b/framework_with_templates/OAT_bem-bb-fw-dense-0.1.0.f90
+@@ -1201,8 +1201,6 @@ contains
+ integer i, j
+
+ include "OAT.h"
+- integer iusw1_ppohBEMresidual_direct
+- integer iusw1_ppohBEMmatvec_direct
+
+ character*100 ctmp
+
diff --git a/var/spack/repos/builtin/packages/ppopen-appl-bem-at/package.py b/var/spack/repos/builtin/packages/ppopen-appl-bem-at/package.py
new file mode 100644
index 0000000000..cba923eeea
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-appl-bem-at/package.py
@@ -0,0 +1,58 @@
+# Copyright 2013-2020 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 PpopenApplBemAt(MakefilePackage):
+ """
+ ppOpen-APPL/BEM-AT is ppOpen-APPL/Bem with auto tuning.
+ If you want to use ppOpen-APPL/BERM-AT, please copy files in
+ src/framework_with_template from ppOpen-APPL/BEM install directory.
+ """
+
+ homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
+ url = "file://{0}/ppohBEM_AT_0.1.0.tar.gz".format(os.getcwd())
+
+ version('0.1.0', sha256='215034fea7d9f64e6361d8e605e04c7f5d302c87ce048dcd6d146b14d22c17f9')
+ # In OAT_bem-bb-fw-dense-0.1.0.f90 the 2 variables are defined.
+ # But ame variables are already defined in include file DAT.h.
+ # This patch is deleted the variables definitions
+ # in OAT_bem-bb-fw-dense-0.1.0.f90.
+ patch('duplicate_defs.patch', when="@0.1.0")
+
+ depends_on('mpi')
+ depends_on('ppopen-appl-bem', type='run')
+
+ parallel = False
+ build_directory = 'framework_with_templates'
+ build_targets = ['SYSTEM=spack']
+
+ def edit(self, spec, prefix):
+ flags = ['-O3', self.compiler.openmp_flag]
+ fflags = flags[:]
+ if spec.satisfies('%gcc'):
+ fflags.append('-ffree-line-length-none')
+ with open(join_path(self.build_directory, 'Makefile'), 'a') as m:
+ m.write('ifeq ($(SYSTEM),spack)\n')
+ m.write(' CC = {0}\n'.format(spec['mpi'].mpicc))
+ m.write(' F90 = {0}\n'.format(spec['mpi'].mpifc))
+ m.write(' CCFLAGS = {0}\n'.format(' '.join(flags)))
+ m.write(' F90FLAGS = {0}\n'.format(' '.join(fflags)))
+ m.write(' FFLAGS = {0}\n'.format(' '.join(fflags)))
+ m.write(' LDFLAGS = {0}\n'.format(' '.join(flags)))
+ m.write('endif\n')
+
+ def install(self, spec, prefix):
+ install_src_dir = join_path(prefix.src, self.build_directory)
+ mkdir(prefix.bin)
+ mkdirp(install_src_dir)
+ for f in find(self.build_directory, '*.out'):
+ copy(f, prefix.bin)
+ install_src = join_path(prefix.src, self.build_directory)
+ install_tree(self.build_directory, install_src_dir)
+ with working_dir(install_src):
+ make('clean')
diff --git a/var/spack/repos/builtin/packages/ppopen-appl-bem/package.py b/var/spack/repos/builtin/packages/ppopen-appl-bem/package.py
new file mode 100644
index 0000000000..7260e1befc
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-appl-bem/package.py
@@ -0,0 +1,79 @@
+# Copyright 2013-2020 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 PpopenApplBem(MakefilePackage):
+ """ppOpen-APPL/BEM is software used to support a boundary element analysis
+ executed on a parallel computer.
+
+ The current version includes a software framework for a parallel BEM
+ analysis and an H-matrix library.
+ If you want to use the framework based on dense matrix computations,
+ please move to the directory 'src/framework' and
+ 'src/framework_with_template'.
+ If you want to use the H-matrix library, please
+ move to the directly 'src/HACApK_with_BEM-BB-framework_1.0.0'.
+ """
+
+ homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
+ url = "file://{0}/ppohBEM_0.5.0.tar.gz".format(os.getcwd())
+
+ version('0.5.0', sha256='bf5e32902c97674c99353ee35de9c89206659e82b9c3d1f6edc9beffbb7c9d5f')
+
+ depends_on('mpi')
+
+ parallel = False
+ hacapk_src_dir = join_path(
+ 'HACApK_1.0.0',
+ 'src',
+ 'HACApK_with_BEM-BB-framework_1.0.0'
+ )
+ src_directories = [
+ join_path('bem-bb-framework_dense', 'src', 'framework_with_templates'),
+ join_path('bem-bb-framework_dense', 'src', 'framework'),
+ hacapk_src_dir
+ ]
+
+ def edit(self, spec, prefix):
+ flags = [self.compiler.openmp_flag]
+ fflags = flags[:]
+ if spec.satisfies('%gcc'):
+ fflags.append('-ffree-line-length-none')
+ filter_file(
+ 'bem-bb-SCM.out',
+ 'HACApK-bem-bb-sSCM.out',
+ join_path(self.hacapk_src_dir, 'Makefile')
+ )
+ for d in self.src_directories:
+ with working_dir(d):
+ with open('Makefile', 'a') as m:
+ m.write('ifeq ($(SYSTEM),spack)\n')
+ m.write(' CC = {0}\n'.format(spec['mpi'].mpicc))
+ m.write(' F90 = {0}\n'.format(spec['mpi'].mpifc))
+ m.write(' CCFLAGS = {0}\n'.format(' '.join(flags)))
+ m.write(' F90FLAGS = {0}\n'.format(' '.join(fflags)))
+ m.write(' FFLAGS = {0}\n'.format(' '.join(fflags)))
+ m.write(' LDFLAGS = {0}\n'.format(' '.join(flags)))
+ m.write('endif\n')
+
+ def build(self, spec, prefix):
+ for d in self.src_directories:
+ with working_dir(d):
+ make('SYSTEM=spack')
+
+ def install(self, spec, prefix):
+ mkdir(prefix.bin)
+ mkdir(prefix.src)
+ for d in self.src_directories:
+ for f in find(d, '*.out'):
+ copy(f, prefix.bin)
+ install_src = join_path(prefix.src, os.path.basename(d))
+ mkdir(install_src)
+ install_tree(d, install_src)
+ with working_dir(install_src):
+ make('clean')
diff --git a/var/spack/repos/builtin/packages/ppopen-appl-fem/gcc_struct_atomic.patch b/var/spack/repos/builtin/packages/ppopen-appl-fem/gcc_struct_atomic.patch
new file mode 100755
index 0000000000..cd4fc87d9d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-appl-fem/gcc_struct_atomic.patch
@@ -0,0 +1,69 @@
+diff --git a/ppohFEM/src/solver/matrix/hecmw_mat_ass.f90 b/ppohFEM/src/solver/matrix/hecmw_mat_ass.f90
+index dda6a62..6010d6d 100644
+--- a/ppohFEM/src/solver/matrix/hecmw_mat_ass.f90
++++ b/ppohFEM/src/solver/matrix/hecmw_mat_ass.f90
+@@ -322,7 +322,7 @@ module hecmw_matrix_ass
+ subroutine hecmw_mat_ass_bc(hecMAT, inode, idof, RHS, conMAT)
+ type (hecmwST_matrix) :: hecMAT
+ integer(kind=kint) :: inode, idof
+- real(kind=kreal) :: RHS
++ real(kind=kreal) :: RHS, tmp
+ type (hecmwST_matrix),optional :: conMAT
+ integer(kind=kint) :: NDOF, in, i, ii, iii, ndof2, k, iS, iE, iiS, iiE, ik
+
+@@ -338,13 +338,13 @@ module hecmw_matrix_ass
+
+ DO i = NDOF-1,0,-1
+ IF( i .NE. NDOF-idof ) THEN
++ tmp = hecMAT%D(ndof2*inode-ii)*RHS
+ !$omp atomic
+- hecMAT%B(NDOF*inode-i) = hecMAT%B(NDOF*inode-i) &
+- - hecMAT%D(ndof2*inode-ii)*RHS
++ hecMAT%B(NDOF*inode-i) = hecMAT%B(NDOF*inode-i) - tmp
+ if(present(conMAT)) then
++ tmp = conMAT%D(ndof2*inode-ii)*RHS
+ !$omp atomic
+- conMAT%B(NDOF*inode-i) = conMAT%B(NDOF*inode-i) &
+- - conMAT%D(ndof2*inode-ii)*RHS
++ conMAT%B(NDOF*inode-i) = conMAT%B(NDOF*inode-i) - tmp
+ endif
+ ENDIF
+ ii = ii - NDOF
+@@ -393,14 +393,14 @@ module hecmw_matrix_ass
+ if (hecMAT%itemU(ik) .eq. inode) then
+ iii = ndof2 - idof
+ DO i = NDOF-1,0,-1
++ tmp = hecMAT%AU(ndof2*ik-iii)*RHS
+ !$omp atomic
+- hecMAT%B(NDOF*in-i) = hecMAT%B(NDOF*in-i) &
+- - hecMAT%AU(ndof2*ik-iii)*RHS
++ hecMAT%B(NDOF*in-i) = hecMAT%B(NDOF*in-i) - tmp
+ hecMAT%AU(ndof2*ik-iii)= 0.d0
+ if(present(conMAT)) then
++ tmp = conMAT%AU(ndof2*ik-iii)*RHS
+ !$omp atomic
+- conMAT%B(NDOF*in-i) = conMAT%B(NDOF*in-i) &
+- - conMAT%AU(ndof2*ik-iii)*RHS
++ conMAT%B(NDOF*in-i) = conMAT%B(NDOF*in-i) - tmp
+ conMAT%AU(ndof2*ik-iii)= 0.d0
+ endif
+ iii = iii - NDOF
+@@ -432,14 +432,14 @@ module hecmw_matrix_ass
+ iii = ndof2 - idof
+
+ DO i = NDOF-1, 0, -1
++ tmp = hecMAT%AL(ndof2*ik-iii)*RHS
+ !$omp atomic
+- hecMAT%B(NDOF*in-i) = hecMAT%B(NDOF*in-i) &
+- - hecMAT%AL(ndof2*ik-iii)*RHS
++ hecMAT%B(NDOF*in-i) = hecMAT%B(NDOF*in-i) - tmp
+ hecMAT%AL(ndof2*ik-iii) = 0.d0
+ if(present(conMAT)) then
++ tmp = conMAT%AL(ndof2*ik-iii)*RHS
+ !$omp atomic
+- conMAT%B(NDOF*in-i) = conMAT%B(NDOF*in-i) &
+- - conMAT%AL(ndof2*ik-iii)*RHS
++ conMAT%B(NDOF*in-i) = conMAT%B(NDOF*in-i) - tmp
+ conMAT%AL(ndof2*ik-iii) = 0.d0
+ endif
+ iii = iii - NDOF
diff --git a/var/spack/repos/builtin/packages/ppopen-appl-fem/package.py b/var/spack/repos/builtin/packages/ppopen-appl-fem/package.py
new file mode 100644
index 0000000000..df15a29523
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-appl-fem/package.py
@@ -0,0 +1,63 @@
+# Copyright 2013-2020 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 PpopenApplFem(MakefilePackage):
+ """
+ ppOpen-APPL/FEM (ppohFEM) is a middleware to allow a Finite Element
+ Method (FEM) analysis code developer to devote himself to development of
+ the application software by offering a function commonly used in FEM.
+ """
+
+ homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
+ url = "file://{0}/ppohFEM_1.0.1.tar.gz".format(os.getcwd())
+
+ version('1.0.1', sha256='eea8837fa3eda284759b7ebf27c27cea8cbf9cf65cf37c62941700e1321aeb07')
+
+ depends_on('mpi')
+ depends_on('metis')
+
+ # gcc does not support OpenMP atomic to same structure reference.
+ # For example a%b = a%b - a%c
+ # To avoid this, the patch is replace as follows:
+ # tmp = a%c
+ # !%omp atomic
+ # a%b = a%b - a%c
+ patch('gcc_struct_atomic.patch', when='%gcc')
+ parallel = False
+
+ def edit(self, spec, prefix):
+ fflags = ['-O3', '-I.', self.compiler.openmp_flag]
+ if spec.satisfies('%gcc'):
+ fflags.extend(['-cpp', '-ffree-line-length-none'])
+ makefile_in = FileFilter('Makefile.in')
+ makefile_in.filter(
+ r'^PREFIX *=.*$',
+ 'PREFIX = {0}'.format(prefix)
+ )
+ makefile_in.filter(
+ r'^F90OPTFLAGS *=.*$',
+ 'F90OPTFLAGS = {0}'.format(' '.join(fflags))
+ )
+ makefile_in.filter(
+ r'^METISDIR *=.*$',
+ 'METISDIR = {0}'.format(spec['metis'].prefix)
+ )
+ makefile_in.filter('mpicc', spec['mpi'].mpicc)
+ makefile_in.filter('mpif90', spec['mpi'].mpifc)
+
+ def install(self, spec, prefix):
+ for d in ['ppohFEM', 'app_flow', 'app_heat', 'app_struct']:
+ with working_dir(d):
+ for install_dir in ['bin', 'lib', 'include']:
+ if os.path.isdir(install_dir):
+ install_tree(
+ install_dir,
+ join_path(prefix, install_dir)
+ )
diff --git a/var/spack/repos/builtin/packages/ppopen-appl-fvm/package.py b/var/spack/repos/builtin/packages/ppopen-appl-fvm/package.py
new file mode 100644
index 0000000000..2dd6872cc2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-appl-fvm/package.py
@@ -0,0 +1,63 @@
+# Copyright 2013-2020 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 PpopenApplFvm(MakefilePackage):
+ """
+ ppOpen-APPL/FVM ia a coupling library that enables weak
+ coupling on various simulation models, such as an
+ atmospheric model and an ocean model, a seismic model
+ and a structure model. For getting very wide
+ applicability, ppohMATHMP is designed so as that it is
+ independent from grid structure. Instead of grid
+ structure, ppOpen-APPL/FVM requires a data set
+ called 'mapping table'. Mapping table is composed of
+ a correspondence table of grid indexes between a send
+ model and a receive model and interpolation coefficients.
+ A subroutine for making a mapping table file is provided
+ by ppohMATHMP API.
+
+ Current version of ppohMATHMP is ver.1.0 which targets
+ scalar data exchange. An exchange code of vector data
+ which requires rotation calculation is under
+ """
+
+ homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
+ url = "file://{0}/ppohFVM_0.3.0.tar.gz".format(os.getcwd())
+
+ version('0.3.0', sha256='4e05dd71f4eeda62c9683b7c3069a2537f3c2c7e86ba50a00d4963f41d9cbe29')
+
+ depends_on('mpi')
+ depends_on('metis@:4')
+
+ def edit(self, spec, prefix):
+ fflags = ['-O3']
+ if spec.satisfies('%gcc'):
+ fflags.append('-ffree-line-length-none')
+ makefile_in = FileFilter('Makefile.in')
+ makefile_in.filter(
+ r'^PREFIX *=.*$',
+ 'PREFIX = {0}'.format(prefix)
+ )
+ makefile_in.filter(
+ r'^METISDIR *=.*$',
+ 'METISDIR = {0}'.format(spec['metis'].prefix.lib)
+ )
+ makefile_in.filter('mpifrtpx', spec['mpi'].mpifc)
+ makefile_in.filter('frtpx', spack_fc)
+ makefile_in.filter('-Kfast', ' '.join(fflags))
+ makefile_in.filter(
+ ',openmp',
+ ' {0}'.format(self.compiler.openmp_flag)
+ )
+
+ def install(self, spec, prefix):
+ make('install')
+ install_tree('examples', prefix.examples)
+ install_tree('doc', prefix.doc)
diff --git a/var/spack/repos/builtin/packages/ppopen-at/package.py b/var/spack/repos/builtin/packages/ppopen-at/package.py
new file mode 100644
index 0000000000..92a8c302de
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-at/package.py
@@ -0,0 +1,28 @@
+# Copyright 2013-2020 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 PpopenAt(MakefilePackage):
+ """ppOpen-AT is a part of the ppOpenHPC"""
+
+ homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
+ url = "file://{0}/ppohAT_1.0.0.tar.gz".format(os.getcwd())
+
+ version('1.0.0', sha256='2b5664839762c941e0b2dd7c15416e2dcfd5d909558cf7e4347a79ce535f3887')
+
+ def edit(self, spec, prefix):
+ makefile_in = FileFilter('Makefile.in')
+ makefile_in.filter('gcc', spack_cxx)
+ makefile_in.filter('~/ppohAT_1.0.0', prefix)
+ makefile_in.filter('mkdir', 'mkdir -p')
+
+ def install(self, spec, prefix):
+ make('install')
+ install_tree('examples', prefix.examples)
+ install_tree('doc', prefix.doc)
diff --git a/var/spack/repos/builtin/packages/ppopen-math-mp/package.py b/var/spack/repos/builtin/packages/ppopen-math-mp/package.py
new file mode 100644
index 0000000000..8f62264485
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-math-mp/package.py
@@ -0,0 +1,51 @@
+# Copyright 2013-2020 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 PpopenMathMp(MakefilePackage):
+ """
+ ppOpen-Math/MP ia a coupling library that enables weak coupling on various
+ simulation models, such as an atmospheric model and an ocean model,
+ a seismic model and a structure model. For getting very wide applicability,
+ ppOpen-Math/MP is designed so as that it is independent from grid
+ structure. Instead of grid structure, PpohMATHMP requires a data set
+ called 'mapping table'. Mapping table is composed of a correspondence
+ table of grid indexes between a send model and a receive model and
+ interpolation coefficients. A subroutine for making a mapping table
+ file is provided by ppOpen-Math/MP API.
+
+ Current version of ppOpen-Math/MP is ver.1.0 which targets scalar
+ data exchange. An exchange code of vector data which requires rotation
+ calculation is under development and will be released the next version.
+ """
+
+ homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
+ url = "file://{0}/ppohMATHMP_1.0.0.tar.gz".format(os.getcwd())
+
+ version('1.0.0', sha256='eb85a181286e4e7d071bd7c106fa547d38cfd16df87753e9d4e38da1a84a8f22')
+
+ depends_on('mpi')
+
+ build_directory = 'src'
+ build_targets = ['FC_XXX=spack']
+ parallel = False
+
+ def edit(self, spec, prefix):
+ flags = ['-I.']
+ if spec.satisfies('%gcc'):
+ flags.append('-ffree-line-length-none')
+ with open('src/Makefile', 'a') as makefile:
+ makefile.write('FC_spack = {0}\n'.format(spec['mpi'].mpifc))
+ makefile.write('FFLAGS_spack = {0}\n'.format(' '.join(flags)))
+ makefile.write('AR_spack = ar cr\n')
+
+ def install(self, spec, prefix):
+ for d in ['include', 'lib', 'doc', 'test']:
+ mkdir(join_path(prefix, d))
+ copy_tree(d, join_path(prefix, d))
diff --git a/var/spack/repos/builtin/packages/ppopen-math-vis/package.py b/var/spack/repos/builtin/packages/ppopen-math-vis/package.py
new file mode 100644
index 0000000000..ad2ff3a7c8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ppopen-math-vis/package.py
@@ -0,0 +1,45 @@
+# Copyright 2013-2020 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 PpopenMathVis(MakefilePackage):
+ """
+ ppOpen-MATH/VIS is a set of libraries for parallel visualization.
+
+ Capabilities of ppOpen-MATH/VIS (ver.0.2.0) are as follows:
+
+ Using background voxels with adaptive mesh refinement (AMR).
+ Single UCD file.
+ Flat MPI parallel programming models.
+ (OpenMP/MPI hybrid will be supported in the future).
+ Can be called from programs written in both of Fortran 90 and C.
+ Only FDM-type structured meshes are supported.
+ """
+
+ homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
+ url = "file://{0}/ppohVIS_0.2.0.tar.gz".format(os.getcwd())
+
+ version('0.2.0', sha256='f816885cb9fab4802f9df55c1f1e7f8505867dc8862562bce26d193d6a0dc29d')
+
+ depends_on('mpi')
+
+ def edit(self, spec, prefix):
+ makefile_in = FileFilter('Makefile.in')
+ makefile_in.filter('mpifccpx', spec['mpi'].mpicc)
+ makefile_in.filter('mpiFCCpx', spec['mpi'].mpicxx)
+ makefile_in.filter('mpifrtpx', spec['mpi'].mpifc)
+ makefile_in.filter('-Kfast', '-O3')
+ makefile_in.filter(r'~/ppOpen-HPC/.*', prefix)
+
+ def install(self, spec, prefix):
+ make('install')
+ mkdir(join_path(prefix, 'examples'))
+ copy_tree('examples', join_path(prefix, 'examples'))
+ mkdir(join_path(prefix, 'doc'))
+ copy_tree('doc', join_path(prefix, 'doc'))
diff --git a/var/spack/repos/builtin/packages/precice/package.py b/var/spack/repos/builtin/packages/precice/package.py
index 22556719e4..986bfa7f14 100644
--- a/var/spack/repos/builtin/packages/precice/package.py
+++ b/var/spack/repos/builtin/packages/precice/package.py
@@ -19,6 +19,8 @@ class Precice(CMakePackage):
maintainers = ['fsimonis', 'MakisH']
version('develop', branch='develop')
+ version('2.0.2', sha256='72864480f32696e7b6da94fd404ef5cd6586e2e1640613e46b75f1afac8569ed')
+ version('2.0.1', sha256='e4fe2d2063042761ab325f8c802f88ae088c90862af288ad1a642967d074bd50')
version('2.0.0', sha256='c8979d366f06e35626a8da08a1c589df77ec13972eb524a1ba99a011e245701f')
version('1.6.1', sha256='7d0c54faa2c69e52304f36608d93c408629868f16f3201f663a0f9b2008f0763')
version('1.6.0', sha256='c3b16376fda9eb3449adb6cc3c1e267c3dc792a5d118e37d93a32a59b5a4bc6f')
diff --git a/var/spack/repos/builtin/packages/presentproto/package.py b/var/spack/repos/builtin/packages/presentproto/package.py
index 0e9652e4be..704552d769 100644
--- a/var/spack/repos/builtin/packages/presentproto/package.py
+++ b/var/spack/repos/builtin/packages/presentproto/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Presentproto(AutotoolsPackage):
+class Presentproto(AutotoolsPackage, XorgPackage):
"""Present protocol specification and Xlib/Xserver headers."""
homepage = "https://cgit.freedesktop.org/xorg/proto/presentproto/"
- url = "https://www.x.org/archive/individual/proto/presentproto-1.0.tar.gz"
+ xorg_mirror_path = "proto/presentproto-1.0.tar.gz"
version('1.0', sha256='02f8042cb351dd5c3699a0dbdb2ab25f86532efe3e1e3e97897e7f44b5c67040')
diff --git a/var/spack/repos/builtin/packages/primer3/package.py b/var/spack/repos/builtin/packages/primer3/package.py
index f54d1d6828..b4f2ad849b 100644
--- a/var/spack/repos/builtin/packages/primer3/package.py
+++ b/var/spack/repos/builtin/packages/primer3/package.py
@@ -12,13 +12,25 @@ class Primer3(MakefilePackage):
ubiquitous tool in genetics and molecular biology. Primer3
can also design hybridization probes and sequencing primers."""
- homepage = "http://primer3.sourceforge.net/"
- url = "https://sourceforge.net/projects/primer3/files/primer3/2.3.7/primer3-2.3.7.tar.gz/download"
+ homepage = "https://primer3.org/"
+ url = "https://github.com/primer3-org/primer3/archive/v2.3.7.tar.gz"
- version('2.3.7', sha256='9e37a301d2ca9e5034c9a9d4afcb3e90041f6cc44c658b63598d0ccfcb176e5e')
+ version('2.5.0', sha256='7581e2fa3228ef0ee1ffa427b2aa0a18fc635d561208327471daf59d1b804da0')
+ version('2.3.7', sha256='f7ac3e64dc89b7c80882bf0f52c2c0a58572f5fdafd178680d4a7ae91b6c465b')
build_directory = 'src'
+ # Prior to May 15, 2018, the code contained invalid pointer/int
+ # comparisons, leading to compilers that default to strict mode
+ # failing to compile thal.c.
+ # This prevents building 2.3.7 w/ gcc@8.4.0. Details here:
+ # https://github.com/primer3-org/primer3/issues/2
+ # https://github.com/primer3-org/primer3/issues/3
+ def patch(self):
+ if self.spec.version == Version('2.3.7'):
+ filter_file(r'^(CC_OPTS.*)', r'\1 -fpermissive',
+ join_path('src', 'Makefile'))
+
def install(self, spec, prefix):
with working_dir(self.build_directory):
mkdirp(prefix.bin)
diff --git a/var/spack/repos/builtin/packages/printproto/package.py b/var/spack/repos/builtin/packages/printproto/package.py
index d2ab937913..028bfda890 100644
--- a/var/spack/repos/builtin/packages/printproto/package.py
+++ b/var/spack/repos/builtin/packages/printproto/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Printproto(AutotoolsPackage):
+class Printproto(AutotoolsPackage, XorgPackage):
"""Xprint extension to the X11 protocol - a portable, network-transparent
printing system."""
homepage = "http://cgit.freedesktop.org/xorg/proto/printproto"
- url = "https://www.x.org/archive/individual/proto/printproto-1.0.5.tar.gz"
+ xorg_mirror_path = "proto/printproto-1.0.5.tar.gz"
version('1.0.5', sha256='e8b6f405fd865f0ea7a3a2908dfbf06622f57f2f91359ec65d13b955e49843fc')
diff --git a/var/spack/repos/builtin/packages/procps/package.py b/var/spack/repos/builtin/packages/procps/package.py
index f8b4ed2633..e18d6206cf 100644
--- a/var/spack/repos/builtin/packages/procps/package.py
+++ b/var/spack/repos/builtin/packages/procps/package.py
@@ -23,7 +23,7 @@ class Procps(AutotoolsPackage):
depends_on('m4', type='build')
depends_on('pkgconfig@0.9.0:', type='build')
depends_on('dejagnu', type='test')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('gettext')
depends_on('ncurses')
@@ -35,7 +35,7 @@ class Procps(AutotoolsPackage):
def configure_args(self):
return [
- '--with-libiconv-prefix={0}'.format(self.spec['libiconv'].prefix),
+ '--with-libiconv-prefix={0}'.format(self.spec['iconv'].prefix),
'--with-libintl-prefix={0}'.format(self.spec['gettext'].prefix),
'--with-ncurses',
# Required to avoid libintl linking errors
diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py
index 0923d3a961..05702d9fc9 100644
--- a/var/spack/repos/builtin/packages/protobuf/package.py
+++ b/var/spack/repos/builtin/packages/protobuf/package.py
@@ -39,6 +39,9 @@ class Protobuf(CMakePackage):
variant('shared', default=True,
description='Enables the build of shared libraries')
+ variant('build_type', default='Release',
+ description='The build type to build',
+ values=('Debug', 'Release'))
depends_on('zlib')
diff --git a/var/spack/repos/builtin/packages/proxymngr/package.py b/var/spack/repos/builtin/packages/proxymngr/package.py
index 7dae3ca36a..7c3b9f0329 100644
--- a/var/spack/repos/builtin/packages/proxymngr/package.py
+++ b/var/spack/repos/builtin/packages/proxymngr/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Proxymngr(AutotoolsPackage):
+class Proxymngr(AutotoolsPackage, XorgPackage):
"""The proxy manager (proxymngr) is responsible for resolving requests from
xfindproxy (and other similar clients), starting new proxies when
appropriate, and keeping track of all of the available proxy services.
The proxy manager strives to reuse existing proxies whenever possible."""
homepage = "http://cgit.freedesktop.org/xorg/app/proxymngr"
- url = "https://www.x.org/archive/individual/app/proxymngr-1.0.4.tar.gz"
+ xorg_mirror_path = "app/proxymngr-1.0.4.tar.gz"
version('1.0.4', sha256='d40f2d15985ee8e8ef5320a85c0b1899a7bc95974a65137ae886e499bced86f4')
diff --git a/var/spack/repos/builtin/packages/py-apptools/package.py b/var/spack/repos/builtin/packages/py-apptools/package.py
new file mode 100644
index 0000000000..4ac8da1c79
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-apptools/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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)
+
+
+class PyApptools(PythonPackage):
+ """The apptools project includes a set of packages that Enthought has found
+ useful in creating a number of applications. They implement functionality
+ that is commonly needed by many applications."""
+
+ homepage = "https://docs.enthought.com/apptools"
+ url = "https://pypi.io/packages/source/a/apptools/apptools-4.5.0.tar.gz"
+
+ version('4.5.0', sha256='260ae0e2a86cb2df2fede631ab6ac8ece694a58a1def78cd015c890c57140582')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-configobj', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'))
+ depends_on('py-traitsui', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-args/package.py b/var/spack/repos/builtin/packages/py-args/package.py
new file mode 100644
index 0000000000..08364481e8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-args/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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 PyArgs(PythonPackage):
+ """Command Arguments for Humans."""
+
+ homepage = "https://github.com/kennethreitz/args"
+ url = "https://pypi.io/packages/source/a/args/args-0.1.0.tar.gz"
+
+ version('0.1.0', sha256='a785b8d837625e9b61c39108532d95b85274acd679693b71ebb5156848fcf814')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-arviz/package.py b/var/spack/repos/builtin/packages/py-arviz/package.py
new file mode 100644
index 0000000000..20e1be3839
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-arviz/package.py
@@ -0,0 +1,26 @@
+# Copyright 2013-2020 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 PyArviz(PythonPackage):
+ """ArviZ (pronounced "AR-vees") is a Python package for exploratory
+ analysis of Bayesian models. Includes functions for posterior analysis,
+ model checking, comparison and diagnostics."""
+
+ homepage = "http://github.com/arviz-devs/arviz"
+ url = "https://pypi.io/packages/source/a/arviz/arviz-0.6.1.tar.gz"
+
+ version('0.6.1', sha256='435edf8db49c41a8fa198f959e7581063006c49a4efdef4755bb778db6fd4f72')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-matplotlib@3.0:', type=('build', 'run'))
+ depends_on('py-numpy@1.12:', type=('build', 'run'))
+ depends_on('py-scipy@0.19:', type=('build', 'run'))
+ depends_on('py-packaging', type=('build', 'run'))
+ depends_on('py-pandas@0.23:', type=('build', 'run'))
+ depends_on('py-xarray@0.11:', type=('build', 'run'))
+ depends_on('py-netcdf4', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-astpretty/package.py b/var/spack/repos/builtin/packages/py-astpretty/package.py
new file mode 100644
index 0000000000..b6b4e9855f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-astpretty/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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 PyAstpretty(PythonPackage):
+ """Pretty print the output of python stdlib `ast.parse`."""
+
+ homepage = "https://github.com/asottile/astpretty"
+ url = "https://pypi.io/packages/source/a/astpretty/astpretty-2.0.0.tar.gz"
+
+ version('2.0.0', sha256='e4724bfd753636ba4a84384702e9796e5356969f40af2596d846ce64addde086')
+
+ variant('typed', default=False, description='Add support for typed comments')
+
+ depends_on('python@3.6.1:', type=('build', 'run'))
+ depends_on('py-setuptools', type=('build', 'run'))
+ depends_on('py-typed-ast', type=('build', 'run'), when='+typed')
diff --git a/var/spack/repos/builtin/packages/py-astropy-helpers/package.py b/var/spack/repos/builtin/packages/py-astropy-helpers/package.py
new file mode 100644
index 0000000000..636fcb8b30
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-astropy-helpers/package.py
@@ -0,0 +1,21 @@
+# 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 PyAstropyHelpers(PythonPackage):
+ """The astropy-helpers package includes many build,
+ installation, and documentation-related tools used by the
+ Astropy project, but packaged separately for use by other
+ projects that wish to leverage this work."""
+
+ homepage = "https://github.com/astropy/astropy-helpers"
+ url = "https://github.com/astropy/astropy-helpers/archive/v4.0.1.tar.gz"
+
+ version('4.0.1', sha256='88602971c3b63d6aaa6074d013f995d1e234acb3d517d70d7fcebd30cdaf5c89')
+
+ depends_on('python@3.6:', type=('build', 'run'))
+ depends_on('py-setuptools@30.3:', type='build')
diff --git a/var/spack/repos/builtin/packages/py-attrs/package.py b/var/spack/repos/builtin/packages/py-attrs/package.py
index cf9950c1ce..64c8aa5426 100644
--- a/var/spack/repos/builtin/packages/py-attrs/package.py
+++ b/var/spack/repos/builtin/packages/py-attrs/package.py
@@ -14,6 +14,7 @@ class PyAttrs(PythonPackage):
import_modules = ['attr']
+ version('19.3.0', sha256='f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72')
version('19.2.0', sha256='f913492e1663d3c36f502e5e9ba6cd13cf19d7fab50aa13239e420fef95e1396')
version('19.1.0', sha256='f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399')
version('18.1.0', sha256='e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b')
@@ -26,5 +27,6 @@ class PyAttrs(PythonPackage):
depends_on('py-hypothesis', type='test')
depends_on('py-pympler', type='test')
depends_on('py-pytest', type='test')
+ depends_on('py-pytest@4.3.0:', type='test', when='@19.3.0:')
depends_on('py-six', type='test')
depends_on('py-zope-interface', type='test')
diff --git a/var/spack/repos/builtin/packages/py-audioread/package.py b/var/spack/repos/builtin/packages/py-audioread/package.py
new file mode 100644
index 0000000000..b69f22b720
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-audioread/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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 PyAudioread(PythonPackage):
+ """cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding for
+ Python."""
+
+ homepage = "https://github.com/beetbox/audioread"
+ url = "https://pypi.io/packages/source/a/audioread/audioread-2.1.8.tar.gz"
+
+ version('2.1.8', sha256='073904fabc842881e07bd3e4a5776623535562f70b1655b635d22886168dd168')
+
+ depends_on('py-setuptools', type='build')
+ # the following does not seem to be used for building but is listed in
+ # setup.py
+ depends_on('py-pytest-runner', type='build')
diff --git a/var/spack/repos/builtin/packages/py-auxlib/package.py b/var/spack/repos/builtin/packages/py-auxlib/package.py
new file mode 100644
index 0000000000..4d18101e5d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-auxlib/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 PyAuxlib(PythonPackage):
+ """Auxlib is an auxiliary library to the python standard library."""
+
+ homepage = "https://github.com/kalefranz/auxlib"
+ url = "https://pypi.io/packages/source/a/auxlib/auxlib-0.0.43.tar.gz"
+
+ version('0.0.43', sha256='0f175637e96a090a785767ce28483cf1aeec316a19afce9b2fbd113e1122786a')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-enum34', type=('build', 'run'), when='^python@:3.3')
+ depends_on('py-ordereddict', type=('build', 'run'), when='^python@:2.6')
+ depends_on('py-wheel', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-awesome-slugify/package.py b/var/spack/repos/builtin/packages/py-awesome-slugify/package.py
new file mode 100644
index 0000000000..2d8ac680e4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-awesome-slugify/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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 PyAwesomeSlugify(PythonPackage):
+ """Python flexible slugify function"""
+
+ homepage = "https://github.com/dimka665/awesome-slugify"
+ url = "https://pypi.io/packages/source/a/awesome-slugify/awesome-slugify-1.6.5.tar.gz"
+
+ version('1.6.5', sha256='bbdec3fa2187917473a2efad092b57f7125a55f841a7cf6a1773178d32ccfd71')
+
+ depends_on('py-setuptools', type='build')
+
+ depends_on('py-regex', type=('build', 'run'))
+ depends_on('py-unidecode@0.04.14:0.04.99', type=('build', 'run'))
+ depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-backports-weakref/package.py b/var/spack/repos/builtin/packages/py-backports-weakref/package.py
index b3e5ad65bc..ef88d79256 100644
--- a/var/spack/repos/builtin/packages/py-backports-weakref/package.py
+++ b/var/spack/repos/builtin/packages/py-backports-weakref/package.py
@@ -10,7 +10,7 @@ class PyBackportsWeakref(PythonPackage):
"""Backports of new features in Python's weakref module"""
homepage = "https://github.com/PiDelport/backports.weakref"
- url = "https://pypi.org/packages/source/b/backports.weakref/backports.weakref-1.0.post1.tar.gz"
+ url = "https://pypi.io/packages/source/b/backports.weakref/backports.weakref-1.0.post1.tar.gz"
version('1.0.post1', sha256='bc4170a29915f8b22c9e7c4939701859650f2eb84184aee80da329ac0b9825c2', preferred=True)
version('1.0rc1', sha256='8813bf712a66b3d8b85dc289e1104ed220f1878cf981e2fe756dfaabe9a82892')
diff --git a/var/spack/repos/builtin/packages/py-basis-set-exchange/package.py b/var/spack/repos/builtin/packages/py-basis-set-exchange/package.py
new file mode 100644
index 0000000000..92cd2b6d72
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-basis-set-exchange/package.py
@@ -0,0 +1,33 @@
+# Copyright 2013-2020 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 PyBasisSetExchange(PythonPackage):
+ """Command-line interface for the Basis Set Exchange Website"""
+
+ homepage = "https://www.basissetexchange.org"
+ url = "https://github.com/MolSSI-BSE/basis_set_exchange/archive/v0.8.12.tar.gz"
+
+ maintainers = ['bennybp', 'scemama']
+
+ version('0.8.12', sha256='41f0242e2c11392c511d3308c0345e14b0eb3344686d865bdfcb48257910fc0d')
+ version('0.8.11', sha256='dbd4cf9382d97b79a3143c6b2086d1d24562bd13e0ab0d18fc0423b9ee877b9b')
+ version('0.8.10', sha256='7f974faf513791d59ef47dd4eba9d8386f75bbd85f253ca5c08732ff56004a57')
+ version('0.8.9', sha256='faf01a00c8ef7cf7331562052fbf1ff861e901545a927310ab09ac03604b400b')
+ version('0.8.8', sha256='4770bc901b93bfbf1aa5e1c4b486804753b3ff19c41794d3200ffe990b12dfa1')
+ version('0.8.7', sha256='5e9e18ca84bd378d1e02b6543cee122d8cc4efeaf05b1801061b500dda4cb2fc')
+ version('0.8.6', sha256='96da4ab45adaab11825917dc4cf0e236f5d2f0af0f2e026578262ce389784912')
+ version('0.8.5', sha256='ff8e6e03474319245e641c9da05715a6ea90dccab0e60ad2b0bc8556f85a9bca')
+ version('0.8.4', sha256='005f95794ce55f1b1e8faa0b6910b814819dd4ee9dba367a3ec29dfe53816684')
+ version('0.8.3', sha256='0721f3cf55f588f62d74a408bccdd44046ebeaab8ec802c02fae7983d8f0359f')
+
+ depends_on('py-argcomplete', type=('build', 'run'))
+ depends_on('py-jsonschema', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('python@3:', type=('build', 'run'))
+ depends_on('py-pytest@4.0:', type='test')
+ depends_on('py-pytest-cov', type='test')
diff --git a/var/spack/repos/builtin/packages/py-bx-python/package.py b/var/spack/repos/builtin/packages/py-bx-python/package.py
index ee4dfff7fc..3d73b21d18 100644
--- a/var/spack/repos/builtin/packages/py-bx-python/package.py
+++ b/var/spack/repos/builtin/packages/py-bx-python/package.py
@@ -11,10 +11,17 @@ class PyBxPython(PythonPackage):
to allow for rapid implementation of genome scale analyses."""
homepage = "https://github.com/bxlab/bx-python"
- url = "https://github.com/bxlab/bx-python/archive/v0.7.4.tar.gz"
+ url = "https://pypi.io/packages/source/b/bx-python/bx-python-0.8.8.tar.gz"
- version('0.7.4', sha256='1066d1e56d062d0661f23c19942eb757bd7ab7cb8bc7d89a72fdc3931c995cb4')
+ version('0.8.8', sha256='ad0808ab19c007e8beebadc31827e0d7560ac0e935f1100fb8cc93607400bb47')
+ version('0.7.4',
+ sha256='1066d1e56d062d0661f23c19942eb757bd7ab7cb8bc7d89a72fdc3931c995cb4',
+ url="https://github.com/bxlab/bx-python/archive/v0.7.4.tar.gz")
+ depends_on('python@2.4:2.7', type=('build', 'run'), when='@:0.7')
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@0.8:')
depends_on('py-setuptools', type='build')
- depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-six', type=('build', 'run'))
+ depends_on('py-python-lzo', type=('build', 'run'), when='@:0.7')
+ depends_on('py-cython', type='build', when='@0.8:')
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'), when='@0.8:')
diff --git a/var/spack/repos/builtin/packages/py-clint/package.py b/var/spack/repos/builtin/packages/py-clint/package.py
new file mode 100644
index 0000000000..e8a82f5ddf
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-clint/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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 PyClint(PythonPackage):
+ """Python Command-line Application Tools"""
+
+ homepage = "https://github.com/kennethreitz-archive/clint"
+ url = "https://pypi.io/packages/source/c/clint/clint-0.5.1.tar.gz"
+
+ version('0.5.1', sha256='05224c32b1075563d0b16d0015faaf9da43aa214e4a2140e51f08789e7a4c5aa')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-args', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-cmake-format/package.py b/var/spack/repos/builtin/packages/py-cmake-format/package.py
new file mode 100644
index 0000000000..a8f6f86229
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-cmake-format/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 PyCmakeFormat(PythonPackage):
+ """cmake-format project provides Quality Assurance (QA) tools for
+ cmake. Tools include cmake-annotate, cmake-format, cmake-lint,
+ and ctest-to."""
+
+ homepage = "https://pypi.python.org/pypi/cmake-format"
+ url = "https://pypi.io/packages/source/c/cmake_format/cmake_format-0.6.9.tar.gz"
+
+ version('0.6.9', sha256='b2f8bf2e9c6651126f2f2954b7803222b0faf6b8649eabc4d965ea97483a4d20')
+
+ depends_on('py-setuptools', type=('build', 'run'))
+ depends_on('py-six@1.13.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-cnvkit/package.py b/var/spack/repos/builtin/packages/py-cnvkit/package.py
new file mode 100644
index 0000000000..17d4508b15
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-cnvkit/package.py
@@ -0,0 +1,28 @@
+# Copyright 2013-2020 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 PyCnvkit(PythonPackage):
+ """Copy number variation toolkit for high-throughput sequencing."""
+
+ homepage = "https://github.com/etal/cnvkit"
+ url = "https://pypi.io/packages/source/C/CNVkit/CNVkit-0.9.6.tar.gz"
+
+ version('0.9.6', sha256='be889c98a5cf0a994330b8c31c0a65151fb0095fe4e75a1e04118da2516248c2')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-futures@3.0:', type=('build', 'run'), when='^python@:2.7')
+ depends_on('py-biopython@1.62:', type=('build', 'run'))
+ depends_on('py-future@0.15.2:', type=('build', 'run'))
+ depends_on('py-pomegranate@0.9.0:', type=('build', 'run'))
+ depends_on('py-matplotlib@1.3.1:', type=('build', 'run'))
+ depends_on('py-numpy@1.9:', type=('build', 'run'))
+ depends_on('py-pandas@0.20.1:0.24.999', type=('build', 'run'))
+ depends_on('py-pyfaidx@0.4.7:', type=('build', 'run'))
+ depends_on('py-pysam@0.10.0:', type=('build', 'run'))
+ depends_on('py-reportlab@3.0:', type=('build', 'run'))
+ depends_on('py-scipy@0.15.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-colorlog/package.py b/var/spack/repos/builtin/packages/py-colorlog/package.py
index 7eb42c2976..05268384f2 100644
--- a/var/spack/repos/builtin/packages/py-colorlog/package.py
+++ b/var/spack/repos/builtin/packages/py-colorlog/package.py
@@ -10,7 +10,7 @@ class PyColorlog(PythonPackage):
"""A colored formatter for the python logging module"""
homepage = "https://github.com/borntyping/python-colorlog"
- url = "https://pypi.org/packages/source/c/colorlog/colorlog-4.0.2.tar.gz"
+ url = "https://pypi.io/packages/source/c/colorlog/colorlog-4.0.2.tar.gz"
version('4.0.2', sha256='3cf31b25cbc8f86ec01fef582ef3b840950dea414084ed19ab922c8b493f9b42')
version('3.1.4', sha256='418db638c9577f37f0fae4914074f395847a728158a011be2a193ac491b9779d')
diff --git a/var/spack/repos/builtin/packages/py-colorpy/package.py b/var/spack/repos/builtin/packages/py-colorpy/package.py
index da11077eaf..909ad673ef 100644
--- a/var/spack/repos/builtin/packages/py-colorpy/package.py
+++ b/var/spack/repos/builtin/packages/py-colorpy/package.py
@@ -15,7 +15,7 @@ class PyColorpy(PythonPackage):
"""
homepage = "http://markkness.net/colorpy/ColorPy.html"
- url = "https://pypi.org/packages/source/c/colorpy/colorpy-0.1.1.tar.gz"
+ url = "https://pypi.io/packages/source/c/colorpy/colorpy-0.1.1.tar.gz"
version('0.1.1', sha256='e400a7e879adc83c6098dde13cdd093723f3936778c245b1caf88f5f1411170d')
diff --git a/var/spack/repos/builtin/packages/py-contextlib2/package.py b/var/spack/repos/builtin/packages/py-contextlib2/package.py
index c4409c8497..7231512b35 100644
--- a/var/spack/repos/builtin/packages/py-contextlib2/package.py
+++ b/var/spack/repos/builtin/packages/py-contextlib2/package.py
@@ -15,6 +15,7 @@ class PyContextlib2(PythonPackage):
url = "https://github.com/jazzband/contextlib2/archive/v0.6.0.tar.gz"
version('0.6.0', sha256='4f18e2f28bb642aae9447aacec93b1319c8ee838711553c0a2bd906753f2ad33')
+ version('0.5.5', sha256='613569263db0271f34c8484792360272a731f2185567c31c8118e9c994412170')
depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-cyvcf2/package.py b/var/spack/repos/builtin/packages/py-cyvcf2/package.py
new file mode 100644
index 0000000000..153d00fe29
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-cyvcf2/package.py
@@ -0,0 +1,25 @@
+# Copyright 2013-2020 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 PyCyvcf2(PythonPackage):
+ """fast vcf parsing with cython + htslib"""
+
+ homepage = "https://github.com/brentp/cyvcf2"
+ url = "https://pypi.io/packages/source/c/cyvcf2/cyvcf2-0.11.7.tar.gz"
+
+ version('0.11.7', sha256='a4b6229b89a0a1043684c65cbdd702c366a8800dc3591fb44c4b5a08640cbeec')
+
+ depends_on('python@2.7:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+
+ depends_on('py-cython@0.23.3:', type='build')
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-coloredlogs', type=('build', 'run'))
+ depends_on('py-click', type=('build', 'run'))
+
+ depends_on('curl')
diff --git a/var/spack/repos/builtin/packages/py-d2to1/package.py b/var/spack/repos/builtin/packages/py-d2to1/package.py
new file mode 100644
index 0000000000..040d0b8d4b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-d2to1/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 PyD2to1(PythonPackage):
+ """d2to1 (the 'd' is for 'distutils') allows
+ using distutils2-like setup.cfg files for a package's
+ metadata with a distribute/setuptools setup.py script."""
+
+ homepage = "https://github.com/embray/d2to1"
+ url = "https://github.com/embray/d2to1/archive/0.2.12.tar.gz"
+
+ version('0.2.12.post1', sha256='80e026ccc604850d8171fd8599b3130d234c0d443e1dc4e2039be0b204cea9b4')
+ version('0.2.12', sha256='04ab9f3ac255d367ecda1eb59379e5031816740c3a3eda95d0dba9f6bb3b7ca4')
+
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-decorator/package.py b/var/spack/repos/builtin/packages/py-decorator/package.py
index 80174932ee..d174fc8a1f 100644
--- a/var/spack/repos/builtin/packages/py-decorator/package.py
+++ b/var/spack/repos/builtin/packages/py-decorator/package.py
@@ -12,8 +12,9 @@ class PyDecorator(PythonPackage):
various non-trivial examples."""
homepage = "https://github.com/micheles/decorator"
- url = "https://pypi.io/packages/source/d/decorator/decorator-4.4.0.tar.gz"
+ url = "https://pypi.io/packages/source/d/decorator/decorator-4.4.2.tar.gz"
+ version('4.4.2', sha256='e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7')
version('4.4.0', sha256='86156361c50488b84a3f148056ea716ca587df2f0de1d34750d35c21312725de')
version('4.3.2', sha256='33cd704aea07b4c28b3eb2c97d288a06918275dac0ecebdaf1bc8a48d98adb9e')
version('4.3.0', sha256='c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c')
diff --git a/var/spack/repos/builtin/packages/py-deprecated/package.py b/var/spack/repos/builtin/packages/py-deprecated/package.py
new file mode 100644
index 0000000000..7d1fe4af93
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-deprecated/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 PyDeprecated(PythonPackage):
+ """Python @deprecated decorator to deprecate old python classes,
+ functions or methods."""
+
+ homepage = "https://github.com/tantale/deprecated"
+ url = "https://github.com/tantale/deprecated/archive/v1.2.7.tar.gz"
+
+ version("1.2.7", sha256="7db3c814ddcac9d79c5bae8a0e82a5bba55cb8e46f3d611d0d8611c34a72a783")
+
+ depends_on("python@2.7:2.8,3.4:", type=("build", "run"))
+ depends_on("py-wrapt@1.10:1.99999", type=("build", "run"))
+ depends_on("py-setuptools", type="build")
diff --git a/var/spack/repos/builtin/packages/py-dgl/package.py b/var/spack/repos/builtin/packages/py-dgl/package.py
new file mode 100644
index 0000000000..b1b1c37586
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-dgl/package.py
@@ -0,0 +1,128 @@
+# Copyright 2013-2020 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)
+
+
+class PyDgl(CMakePackage):
+ """Deep Graph Library (DGL).
+
+ DGL is an easy-to-use, high performance and scalable Python package for
+ deep learning on graphs. DGL is framework agnostic, meaning if a deep graph
+ model is a component of an end-to-end application, the rest of the logics
+ can be implemented in any major frameworks, such as PyTorch, Apache MXNet
+ or TensorFlow."""
+
+ homepage = "https://www.dgl.ai/"
+ git = "https://github.com/dmlc/dgl.git"
+
+ maintainers = ['adamjstewart']
+
+ version('master', branch='master', submodules=True)
+ version('0.4.2', tag='0.4.2', submodules=True)
+
+ variant('cuda', default=True, description='Build with CUDA')
+ variant('openmp', default=True, description='Build with OpenMP')
+ variant('backend', default='pytorch', description='Default backend',
+ values=['pytorch', 'mxnet', 'tensorflow'], multi=False)
+
+ depends_on('cmake@3.5:', type='build')
+ depends_on('cuda', when='+cuda')
+ depends_on('llvm-openmp', when='%clang platform=darwin +openmp')
+
+ # Python dependencies
+ extends('python')
+ depends_on('python@3.5:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-cython', type='build')
+ depends_on('py-numpy@1.14.0:', type=('build', 'run'))
+ depends_on('py-scipy@1.1.0:', type=('build', 'run'))
+ depends_on('py-networkx@2.1:', type=('build', 'run'))
+
+ # Backends
+ depends_on('py-torch@0.4.1:', when='backend=pytorch', type='run')
+ depends_on('mxnet@1.5:', when='backend=mxnet', type='run')
+ depends_on('py-tensorflow@2.0:', when='backend=tensorflow', type='run')
+ depends_on('py-tfdlpack', when='backend=tensorflow', type='run')
+
+ build_directory = 'build'
+
+ # https://docs.dgl.ai/install/index.html#install-from-source
+ def cmake_args(self):
+ args = []
+
+ if '+cuda' in self.spec:
+ args.append('-DUSE_CUDA=ON')
+ else:
+ args.append('-DUSE_CUDA=OFF')
+
+ if '+openmp' in self.spec:
+ args.append('-DUSE_OPENMP=ON')
+
+ if self.spec.satisfies('%clang platform=darwin'):
+ args.extend([
+ '-DOpenMP_CXX_FLAGS=' +
+ self.spec['llvm-openmp'].headers.include_flags,
+ '-DOpenMP_CXX_LIB_NAMES=' +
+ self.spec['llvm-openmp'].libs.names[0],
+ '-DOpenMP_C_FLAGS=' +
+ self.spec['llvm-openmp'].headers.include_flags,
+ '-DOpenMP_C_LIB_NAMES=' +
+ self.spec['llvm-openmp'].libs.names[0],
+ '-DOpenMP_omp_LIBRARY=' +
+ self.spec['llvm-openmp'].libs[0],
+ ])
+ else:
+ args.append('-DUSE_OPENMP=OFF')
+
+ if self.run_tests:
+ args.append('-DBUILD_CPP_TEST=ON')
+ else:
+ args.append('-DBUILD_CPP_TEST=OFF')
+
+ return args
+
+ def install(self, spec, prefix):
+ with working_dir('python'):
+ setup_py('install', '--prefix=' + prefix,
+ '--single-version-externally-managed', '--root=/')
+
+ # Work around installation bug: https://github.com/dmlc/dgl/issues/1379
+ install_tree(prefix.dgl, prefix.lib)
+
+ def setup_run_environment(self, env):
+ # https://docs.dgl.ai/install/backend.html
+ backend = self.spec.variants['backend'].value
+ env.set('DGLBACKEND', backend)
+
+ @property
+ def import_modules(self):
+ modules = [
+ 'dgl', 'dgl.nn', 'dgl.runtime', 'dgl.backend', 'dgl.function',
+ 'dgl.contrib', 'dgl._ffi', 'dgl.data', 'dgl.runtime.ir',
+ 'dgl.backend.numpy', 'dgl.contrib.sampling', 'dgl._ffi._cy2',
+ 'dgl._ffi._cy3', 'dgl._ffi._ctypes',
+ ]
+
+ if 'backend=pytorch' in self.spec:
+ modules.extend([
+ 'dgl.nn.pytorch', 'dgl.nn.pytorch.conv', 'dgl.backend.pytorch'
+ ])
+ elif 'backend=mxnet' in self.spec:
+ modules.extend([
+ 'dgl.nn.mxnet', 'dgl.nn.mxnet.conv', 'dgl.backend.mxnet'
+ ])
+ elif 'backend=tensorflow' in self.spec:
+ modules.extend([
+ 'dgl.nn.tensorflow', 'dgl.nn.tensorflow.conv',
+ 'dgl.backend.tensorflow'
+ ])
+
+ return modules
+
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
+ def import_module_test(self):
+ with working_dir('spack-test', create=True):
+ for module in self.import_modules:
+ python('-c', 'import {0}'.format(module))
diff --git a/var/spack/repos/builtin/packages/py-dill/package.py b/var/spack/repos/builtin/packages/py-dill/package.py
index 485dfd9d66..0afa8d329c 100644
--- a/var/spack/repos/builtin/packages/py-dill/package.py
+++ b/var/spack/repos/builtin/packages/py-dill/package.py
@@ -12,6 +12,7 @@ class PyDill(PythonPackage):
homepage = "https://github.com/uqfoundation/dill"
url = "https://pypi.io/packages/source/d/dill/dill-0.2.7.tar.gz"
+ version('0.3.1', sha256='d3ddddf2806a7bc9858b20c02dc174396795545e9d62f243b34481fd26eb3e2c')
version('0.2.9', sha256='f6d6046f9f9195206063dd0415dff185ad593d6ee8b0e67f12597c0f4df4986f')
version('0.2.7', sha256='ddda0107e68e4eb1772a9f434f62a513c080c7171bd0dd6fb65d992788509812')
version('0.2.6', sha256='6c1ccca68be483fa8c66e85a89ffc850206c26373aa77a97b83d8d0994e7f1fd')
@@ -23,6 +24,7 @@ class PyDill(PythonPackage):
version('0.2', sha256='aba8d4c81c4136310e6ce333bd6f4f3ea2d53bd367e2f69c864428f260c0308c')
depends_on('python@2.5:2.8,3.1:', type=('build', 'run'))
+ depends_on('python@2.6:2.8,3.1:', type=('build', 'run'), when='@0.3.0:')
depends_on('py-setuptools@0.6:', type='build')
diff --git a/var/spack/repos/builtin/packages/py-diskcache/package.py b/var/spack/repos/builtin/packages/py-diskcache/package.py
new file mode 100644
index 0000000000..042183cdf3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-diskcache/package.py
@@ -0,0 +1,16 @@
+# Copyright 2013-2020 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)
+
+
+class PyDiskcache(PythonPackage):
+ """Disk Cache -- Disk and file backed persistent cache."""
+
+ homepage = "http://www.grantjenks.com/docs/diskcache/"
+ url = "https://pypi.io/packages/source/d/diskcache/diskcache-4.1.0.tar.gz"
+
+ version('4.1.0', sha256='bcee5a59f9c264e2809e58d01be6569a3bbb1e36a1e0fb83f7ef9b2075f95ce0')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-tox', type='test')
diff --git a/var/spack/repos/builtin/packages/py-ecdsa/package.py b/var/spack/repos/builtin/packages/py-ecdsa/package.py
index 18d6d7eddb..2401b9bd27 100644
--- a/var/spack/repos/builtin/packages/py-ecdsa/package.py
+++ b/var/spack/repos/builtin/packages/py-ecdsa/package.py
@@ -10,11 +10,12 @@ class PyEcdsa(PythonPackage):
"""ECDSA cryptographic signature library (pure python)"""
homepage = "https://github.com/warner/python-ecdsa"
- url = "https://files.pythonhosted.org/packages/source/e/ecdsa/ecdsa-0.13.2.tar.gz"
+ url = "https://pypi.io/packages/source/e/ecdsa/ecdsa-0.15.tar.gz"
+ version('0.15', sha256='8f12ac317f8a1318efa75757ef0a651abe12e51fc1af8838fb91079445227277')
version('0.13.2', sha256='5c034ffa23413ac923541ceb3ac14ec15a0d2530690413bff58c12b80e56d884')
- depends_on('py-setuptools', type='build')
- depends_on('py-six', type=('build', 'run'))
depends_on('python@2.6:2.8,3.3:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-six@1.9.0:', type=('build', 'run'))
depends_on('openssl', type='test')
diff --git a/var/spack/repos/builtin/packages/py-envisage/package.py b/var/spack/repos/builtin/packages/py-envisage/package.py
new file mode 100644
index 0000000000..06783c8fcb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-envisage/package.py
@@ -0,0 +1,25 @@
+# Copyright 2013-2020 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)
+
+
+class PyEnvisage(PythonPackage):
+ """Envisage is a Python-based framework for building extensible
+ applications, that is, applications whose functionality can be extended by
+ adding "plug-ins". Envisage provides a standard mechanism for features to
+ be added to an application, whether by the original developer or by someone
+ else. In fact, when you build an application using Envisage, the entire
+ application consists primarily of plug-ins. In this respect, it is similar
+ to the Eclipse and Netbeans frameworks for Java applications."""
+
+ homepage = "https://docs.enthought.com/envisage"
+ url = "https://pypi.io/packages/source/e/envisage/envisage-4.9.2.tar.gz"
+
+ version('4.9.2', sha256='ed9580ac6ea17b333f1cce5b94656aed584798d56d8bd364f996a06fe1ac32eb')
+
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
+ depends_on('py-apptools', type=('build', 'run'))
+ depends_on('py-setuptools', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'))
+ depends_on('py-traits', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-ephem/package.py b/var/spack/repos/builtin/packages/py-ephem/package.py
new file mode 100644
index 0000000000..b3f62ae3cf
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-ephem/package.py
@@ -0,0 +1,16 @@
+# Copyright 2013-2020 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 PyEphem(PythonPackage):
+ """PyEphem provides an ephem Python package for
+ performing high-precision astronomy computations."""
+
+ homepage = "https://rhodesmill.org/pyephem/"
+ url = "https://github.com/brandon-rhodes/pyephem/archive/v3.7.7.1.tar.gz"
+
+ version('3.7.7.1', sha256='d9d05d85c0d38a79169acaef25964ac9df2d808f0d833354545b9ef681ff584d')
diff --git a/var/spack/repos/builtin/packages/py-espressopp/package.py b/var/spack/repos/builtin/packages/py-espressopp/package.py
index a4524da78e..f243fcb4d2 100644
--- a/var/spack/repos/builtin/packages/py-espressopp/package.py
+++ b/var/spack/repos/builtin/packages/py-espressopp/package.py
@@ -27,7 +27,7 @@ class PyEspressopp(CMakePackage):
depends_on("cmake@2.8:", type='build')
depends_on("mpi")
- depends_on("boost+serialization+filesystem+system+python+mpi", when='@1.9.4:')
+ depends_on("boost+serialization+filesystem+system+python+mpi cxxstd=11", when='@1.9.4:')
extends("python")
depends_on("python@2:2.8")
depends_on("py-mpi4py@2.0.0:", when='@1.9.4', type=('build', 'run'))
@@ -35,7 +35,7 @@ class PyEspressopp(CMakePackage):
depends_on("fftw")
depends_on("py-sphinx", when="+ug", type='build')
depends_on("py-sphinx", when="+pdf", type='build')
- depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-numpy@:1.16.6', type=('build', 'run'))
depends_on('py-matplotlib', when="+ug", type='build')
depends_on('py-matplotlib', when="+pdf", type='build')
depends_on("texlive", when="+pdf", type='build')
diff --git a/var/spack/repos/builtin/packages/py-exodus-bundler/package.py b/var/spack/repos/builtin/packages/py-exodus-bundler/package.py
index b14570f54b..c13f30eb46 100644
--- a/var/spack/repos/builtin/packages/py-exodus-bundler/package.py
+++ b/var/spack/repos/builtin/packages/py-exodus-bundler/package.py
@@ -11,7 +11,7 @@ class PyExodusBundler(PythonPackage):
ELF binaries from one system to another."""
homepage = "https://github.com/intoli/exodus"
- url = "https://pypi.org/packages/source/e/exodus-bundler/exodus-bundler-2.0.2.tar.gz"
+ url = "https://pypi.io/packages/source/e/exodus-bundler/exodus-bundler-2.0.2.tar.gz"
version('2.0.2', sha256='4e896a2034b94cf7b4fb33d86a68e29a7d3b08e57541e444db34dddc6ac1ef68')
diff --git a/var/spack/repos/builtin/packages/py-flake8-polyfill/package.py b/var/spack/repos/builtin/packages/py-flake8-polyfill/package.py
index 8de1f37505..cc61a2e936 100644
--- a/var/spack/repos/builtin/packages/py-flake8-polyfill/package.py
+++ b/var/spack/repos/builtin/packages/py-flake8-polyfill/package.py
@@ -11,10 +11,10 @@ class PyFlake8Polyfill(PythonPackage):
for Flake8 plugins that intend to support Flake8 2.x and 3.x
simultaneously.
"""
- homepage = "https://pypi.org/project/flake8-polyfill/"
- url = "https://files.pythonhosted.org/packages/e6/67/1c26634a770db5c442e361311bee73cb3a177adb2eb3f7af8953cfd9f553/flake8-polyfill-1.0.2.tar.gz"
+ homepage = "https://gitlab.com/pycqa/flake8-polyfill"
+ url = "https://pypi.io/packages/source/f/flake8-polyfill/flake8-polyfill-1.0.2.tar.gz"
version('1.0.2', sha256='e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda')
- extends('python', ignore='bin/(flake8|pyflakes|pycodestyle)')
- depends_on('py-flake8', type='run')
+ depends_on('py-setuptools', type='build')
+ depends_on('py-flake8', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-gensim/package.py b/var/spack/repos/builtin/packages/py-gensim/package.py
index 06eaacfe94..a08cbbe98d 100644
--- a/var/spack/repos/builtin/packages/py-gensim/package.py
+++ b/var/spack/repos/builtin/packages/py-gensim/package.py
@@ -8,21 +8,20 @@ from spack import *
class PyGensim(PythonPackage):
"""Gensim is a Python library for topic modelling, document indexing and
- similarity retrieval with large corpora. Target audience is the natural
- language processing (NLP) and information retrieval (IR) community."""
+ similarity retrieval with large corpora. Target audience is the natural
+ language processing (NLP) and information retrieval (IR) community."""
- homepage = "https://pypi.org/project/gensim/"
- url = "https://files.pythonhosted.org/packages/3a/bc/1415be59292a23ff123298b4b46ec4be80b3bfe72c8d188b58ab2653dee4/gensim-3.8.0.tar.gz"
+ homepage = "https://radimrehurek.com/gensim"
+ url = "https://pypi.io/packages/source/g/gensim/gensim-3.8.1.tar.gz"
- version('3.8.1', sha256='33277fc0a8d7b0c7ce70fcc74bb82ad39f944c009b334856c6e86bf552b1dfdc',
- url='https://files.pythonhosted.org/packages/73/f2/e9af000df6419bf1a63ffed3e6033a1b1d8fcf2f971fcdac15296619aff8/gensim-3.8.1.tar.gz')
- version('3.8.0', sha256='ec5de7ff2bfa8692fa96a846bb5aae52f267fc322fbbe303c1f042d258af5766')
+ maintainers = ['adamjstewart']
- depends_on('python@3.5:', type=('build', 'run'))
+ version('3.8.1', sha256='33277fc0a8d7b0c7ce70fcc74bb82ad39f944c009b334856c6e86bf552b1dfdc')
+ version('3.8.0', sha256='ec5de7ff2bfa8692fa96a846bb5aae52f267fc322fbbe303c1f042d258af5766')
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
-
- depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-scipy', type=('build', 'run'))
- depends_on('py-smart-open', type=('build', 'run'))
- depends_on('py-six', type=('build', 'run'))
+ depends_on('py-numpy@1.11.3:', type=('build', 'run'))
+ depends_on('py-scipy@0.18.1:', type=('build', 'run'))
+ depends_on('py-six@1.5.0:', type=('build', 'run'))
+ depends_on('py-smart-open@1.8.1:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-git-review/package.py b/var/spack/repos/builtin/packages/py-git-review/package.py
index b68538eaac..5f4caa3b5c 100644
--- a/var/spack/repos/builtin/packages/py-git-review/package.py
+++ b/var/spack/repos/builtin/packages/py-git-review/package.py
@@ -12,6 +12,7 @@ class PyGitReview(PythonPackage):
homepage = "http://docs.openstack.org/infra/git-review"
url = "https://pypi.io/packages/source/g/git-review/git-review-1.25.0.tar.gz"
+ version('1.28.0', sha256='8e3aabb7b9484063e49c2504d137609401e32ad5128ff2a5cf43e98d5d3dc15a')
version('1.26.0', sha256='487c3c1d7cc81d02b303a1245e432579f683695c827ad454685b3953f70f0b94')
version('1.25.0', sha256='087e0a7dc2415796a9f21c484a6f652c5410e6ba4562c36291c5399f9395a11d')
diff --git a/var/spack/repos/builtin/packages/py-gluoncv/no-unicode-readme.patch b/var/spack/repos/builtin/packages/py-gluoncv/no-unicode-readme.patch
new file mode 100644
index 0000000000..43d0a6c5e8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-gluoncv/no-unicode-readme.patch
@@ -0,0 +1,11 @@
+--- a/README.md 2020-04-03 11:56:41.820271316 -0400
++++ b/README.md 2020-04-03 11:56:55.901335611 -0400
+@@ -72,7 +72,7 @@
+
+ There are multiple versions of MXNet pre-built package available. Please refer to [mxnet packages](https://gluon-crash-course.mxnet.io/mxnet_packages.html) if you need more details about MXNet versions.
+
+-# Docs 📖
++# Docs
+ GluonCV documentation is available at [our website](https://gluon-cv.mxnet.io/index.html).
+
+ # Examples
diff --git a/var/spack/repos/builtin/packages/py-gluoncv/package.py b/var/spack/repos/builtin/packages/py-gluoncv/package.py
new file mode 100644
index 0000000000..0596676654
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-gluoncv/package.py
@@ -0,0 +1,36 @@
+# 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 PyGluoncv(PythonPackage):
+ """GluonCV provides implementations of state-of-the-art
+ (SOTA) deep learning algorithms in computer vision. It aims
+ to help engineers, researchers, and students quickly
+ prototype products, validate new ideas and learn computer
+ vision."""
+
+ homepage = "https://gluon-cv.mxnet.io/"
+ url = "https://github.com/dmlc/gluon-cv/archive/v0.6.0.tar.gz"
+
+ version('0.6.0', sha256='5ac89d73f34d02b2e60595a5cc35f46d0a69376567fae3a9518005dd89161305')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-tqdm', type=('build', 'run'))
+ depends_on('py-requests', type=('build', 'run'))
+ depends_on('py-matplotlib', type=('build', 'run'))
+ depends_on('py-portalocker', type=('build', 'run'))
+ depends_on('py-pillow', type=('build', 'run'))
+ depends_on('py-scipy', type=('build', 'run'))
+ depends_on('py-cython', type='build')
+
+ patch('no-unicode-readme.patch')
+
+ def build_args(self, spec, prefix):
+ args = []
+ args.append('--with-cython')
+ return args
diff --git a/var/spack/repos/builtin/packages/py-google-auth-oauthlib/package.py b/var/spack/repos/builtin/packages/py-google-auth-oauthlib/package.py
new file mode 100644
index 0000000000..416c9f7098
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-google-auth-oauthlib/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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)
+
+
+class PyGoogleAuthOauthlib(PythonPackage):
+ """This library provides oauthlib integration with google-auth."""
+
+ homepage = "https://github.com/googleapis/google-auth-library-python-oauthlib"
+ url = "https://pypi.io/packages/source/g/google-auth-oauthlib/google-auth-oauthlib-0.4.1.tar.gz"
+
+ version('0.4.1', sha256='88d2cd115e3391eb85e1243ac6902e76e77c5fe438b7276b297fbe68015458dd')
+
+ depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-google-auth', type=('build', 'run'))
+ depends_on('py-requests-oauthlib@0.7.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-gpaw/package.py b/var/spack/repos/builtin/packages/py-gpaw/package.py
index 5474f1e84d..4bb61361f6 100644
--- a/var/spack/repos/builtin/packages/py-gpaw/package.py
+++ b/var/spack/repos/builtin/packages/py-gpaw/package.py
@@ -21,6 +21,7 @@ class PyGpaw(PythonPackage):
variant('scalapack', default=True,
description='Build with ScaLAPACK support')
variant('fftw', default=True, description='Build with FFTW support')
+ variant('libvdwxc', default=True, description='Build with libvdwxc support')
depends_on('mpi', when='+mpi', type=('build', 'link', 'run'))
depends_on('python@2.6:', type=('build', 'run'), when='@:1.3.0')
@@ -35,6 +36,7 @@ class PyGpaw(PythonPackage):
depends_on('fftw+mpi', when='+fftw +mpi')
depends_on('fftw~mpi', when='+fftw ~mpi')
depends_on('scalapack', when='+scalapack')
+ depends_on('libvdwxc', when='+libvdwxc')
patch('libxc.patch', when='@1.3.0')
@@ -75,6 +77,9 @@ class PyGpaw(PythonPackage):
if '+fftw' in spec:
libs += spec['fftw'].libs
include_dirs.append(spec['fftw'].prefix.include)
+ if '+libvdwxc' in spec:
+ libs += spec['libvdwxc'].libs
+ include_dirs.append(spec['libvdwxc'].prefix.include)
lib_dirs = list(libs.directories)
libs = list(libs.names)
@@ -101,3 +106,5 @@ class PyGpaw(PythonPackage):
f.write("define_macros += {0}\n".format(scalapack_macros))
if '+fftw' in spec:
f.write("fftw = True\n")
+ if '+libvdwxc' in spec:
+ f.write("libvdwxc = True\n")
diff --git a/var/spack/repos/builtin/packages/py-grpcio/package.py b/var/spack/repos/builtin/packages/py-grpcio/package.py
index bdda7c85e3..18981f20e4 100644
--- a/var/spack/repos/builtin/packages/py-grpcio/package.py
+++ b/var/spack/repos/builtin/packages/py-grpcio/package.py
@@ -10,8 +10,9 @@ class PyGrpcio(PythonPackage):
"""HTTP/2-based RPC framework."""
homepage = "https://grpc.io/"
- url = "https://pypi.io/packages/source/g/grpcio/grpcio-1.25.0.tar.gz"
+ url = "https://pypi.io/packages/source/g/grpcio/grpcio-1.27.2.tar.gz"
+ version('1.27.2', sha256='5ae532b93cf9ce5a2a549b74a2c35e3b690b171ece9358519b3039c7b84c887e')
version('1.25.0', sha256='c948c034d8997526011960db54f512756fb0b4be1b81140a15b4ef094c6594a4')
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-h5glance/package.py b/var/spack/repos/builtin/packages/py-h5glance/package.py
index 93a1be4028..9d3c3c9171 100644
--- a/var/spack/repos/builtin/packages/py-h5glance/package.py
+++ b/var/spack/repos/builtin/packages/py-h5glance/package.py
@@ -15,7 +15,9 @@ class PyH5glance(PythonPackage):
homepage = "https://github.com/European-XFEL/h5glance"
url = "https://pypi.io/packages/source/h/h5glance/h5glance-0.4.tar.gz"
- version('0.4', sha256='03babaee0d481991062842796126bc9e6b11e2e6e7daba57c26f2b58bf3bbd32')
+ version('0.6', sha256='203369ab614273aaad3419f151e234609bb8390b201b65f678d7e17c57633e35')
+ version('0.5', sha256='bc34ee42429f0440b329083e3f67fbf3d7016a4aed9e8b30911e5905217bc8d9')
+ version('0.4', sha256='03babaee0d481991062842796126bc9e6b11e2e6e7daba57c26f2b58bf3bbd32')
depends_on('python@3.5:', type=('build', 'run'))
depends_on('py-h5py', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py
index d09fc71505..5f05081de1 100644
--- a/var/spack/repos/builtin/packages/py-h5py/package.py
+++ b/var/spack/repos/builtin/packages/py-h5py/package.py
@@ -11,10 +11,11 @@ class PyH5py(PythonPackage):
HDF5 library from Python."""
homepage = "http://www.h5py.org/"
- url = "https://pypi.io/packages/source/h/h5py/h5py-2.9.0.tar.gz"
+ url = "https://pypi.io/packages/source/h/h5py/h5py-2.10.0.tar.gz"
import_modules = ['h5py', 'h5py._hl']
+ version('2.10.0', sha256='84412798925dc870ffd7107f045d7659e60f5d46d1c70c700375248bf6bf512d')
version('2.9.0', sha256='9d41ca62daf36d6b6515ab8765e4c8c4388ee18e2a665701fef2b41563821002')
version('2.8.0', sha256='e626c65a8587921ebc7fb8d31a49addfdd0b9a9aa96315ea484c09803337b955')
version('2.7.1', sha256='180a688311e826ff6ae6d3bda9b5c292b90b28787525ddfcb10a29d5ddcae2cc')
@@ -31,6 +32,7 @@ class PyH5py(PythonPackage):
depends_on('py-setuptools', type='build')
# Build and runtime dependencies
+ depends_on('py-cached-property@1.5:', type=('build', 'run'))
depends_on('py-numpy@1.7:', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-hatchet/package.py b/var/spack/repos/builtin/packages/py-hatchet/package.py
new file mode 100644
index 0000000000..91df70b61b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-hatchet/package.py
@@ -0,0 +1,27 @@
+# Copyright 2013-2020 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 PyHatchet(PythonPackage):
+ """Hatchet is an analysis tool for structured tree or graph performance data
+ using an indexed Pandas dataframe."""
+
+ homepage = "https://github.com/LLNL/hatchet"
+ url = "https://github.com/LLNL/hatchet/archive/v1.0.0.tar.gz"
+
+ maintainers = ["slabasan", "bhatele", "tgamblin"]
+
+ version('1.0.0', sha256='efd218bc9152abde0a8006489a2c432742f00283a114c1eeb6d25abc10f5862d')
+
+ depends_on('python@2.7,3:', type=('build', 'run'))
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-matplotlib', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-pandas', type=('build', 'run'))
+ depends_on('py-pydot', type=('build', 'run'))
+ depends_on('py-pyyaml', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-hdfs/package.py b/var/spack/repos/builtin/packages/py-hdfs/package.py
index 599a00fad8..c84c3faca9 100644
--- a/var/spack/repos/builtin/packages/py-hdfs/package.py
+++ b/var/spack/repos/builtin/packages/py-hdfs/package.py
@@ -9,7 +9,7 @@ from spack import *
class PyHdfs(PythonPackage):
"""API and command line interface for HDFS"""
homepage = "https://hdfscli.readthedocs.io/en/latest/"
- url = "https://pypi.org/packages/source/h/hdfs/hdfs-2.1.0.tar.gz"
+ url = "https://pypi.io/packages/source/h/hdfs/hdfs-2.1.0.tar.gz"
version('2.1.0', sha256='a40fe99ccb03b5c3247b33a4110eb21b57405dd7c3f1b775e362e66c19b44bc6')
diff --git a/var/spack/repos/builtin/packages/py-horovod/fma.patch b/var/spack/repos/builtin/packages/py-horovod/fma.patch
new file mode 100644
index 0000000000..13ccb8c9c5
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-horovod/fma.patch
@@ -0,0 +1,52 @@
+From 717e72f91f02d1dc3c859719ef1d804b10f88017 Mon Sep 17 00:00:00 2001
+From: Nicolas V Castet <nvcastet@us.ibm.com>
+Date: Mon, 30 Mar 2020 12:47:50 -0500
+Subject: [PATCH] Add extra preprocessor guard for FMA optimization
+
+Fixes #1832
+
+Signed-off-by: Nicolas V Castet <nvcastet@us.ibm.com>
+---
+ horovod/common/ops/adasum/adasum.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/horovod/common/ops/adasum/adasum.h b/horovod/common/ops/adasum/adasum.h
+index 0330f5850..876f7f12b 100644
+--- a/horovod/common/ops/adasum/adasum.h
++++ b/horovod/common/ops/adasum/adasum.h
+@@ -19,7 +19,7 @@
+ #include <cstring>
+ #include <float.h>
+
+-#if __AVX__ && __F16C__
++#if __AVX__ && __F16C__ && __FMA__
+ #include <emmintrin.h>
+ #include <immintrin.h>
+ #endif
+@@ -104,7 +104,7 @@ template <typename Communicator_type> class Adasum {
+ int count, double& dotProduct,
+ double& anormsq, double& bnormsq,
+ int layerid) {
+-#if __AVX__ && __F16C__
++#if __AVX__ && __F16C__ && __FMA__
+ if (horovod_datatype == DataType::HOROVOD_FLOAT16) {
+ ComputeDotAndNormSqrdsfp16((uint16_t*)a, (uint16_t*)b, count, dotProduct,
+ anormsq, bnormsq, layerid);
+@@ -125,7 +125,7 @@ template <typename Communicator_type> class Adasum {
+ double acoeff, void* __restrict__ a,
+ double bcoeff, void* __restrict__ b,
+ int layerid) {
+-#if __AVX__ && __F16C__
++#if __AVX__ && __F16C__ && __FMA__
+ if (horovod_datatype == DataType::HOROVOD_FLOAT16) {
+ ScaledAddfp16(count, acoeff, (uint16_t*)a, bcoeff, (uint16_t*)b, layerid);
+ } else
+@@ -425,7 +425,7 @@ template <typename Communicator_type> class Adasum {
+ }
+
+
+-#if __AVX__ && __F16C__
++#if __AVX__ && __F16C__ && __FMA__
+ inline void ComputeDotAndNormSqrdsfp16(const uint16_t* __restrict__ a,
+ const uint16_t* __restrict__ b,
+ int len, double& dotProduct,
diff --git a/var/spack/repos/builtin/packages/py-horovod/package.py b/var/spack/repos/builtin/packages/py-horovod/package.py
new file mode 100644
index 0000000000..c740486853
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-horovod/package.py
@@ -0,0 +1,130 @@
+# 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)
+
+
+class PyHorovod(PythonPackage):
+ """Horovod is a distributed deep learning training framework for
+ TensorFlow, Keras, PyTorch, and Apache MXNet."""
+
+ homepage = "https://github.com/horovod"
+ git = "https://github.com/horovod/horovod.git"
+
+ maintainers = ['adamjstewart']
+
+ version('master', branch='master', submodules=True)
+ version('0.19.1', tag='v0.19.1', submodules=True)
+ version('0.19.0', tag='v0.19.0', submodules=True)
+ version('0.18.2', tag='v0.18.2', submodules=True)
+ version('0.18.1', tag='v0.18.1', submodules=True)
+ version('0.18.0', tag='v0.18.0', submodules=True)
+ version('0.17.1', tag='v0.17.1', submodules=True)
+ version('0.17.0', tag='v0.17.0', submodules=True)
+ version('0.16.4', tag='v0.16.4', submodules=True)
+ version('0.16.3', tag='v0.16.3', submodules=True)
+ version('0.16.2', tag='v0.16.2', submodules=True)
+
+ # https://github.com/horovod/horovod/blob/master/docs/install.rst
+ variant('frameworks', default='pytorch',
+ description='Deep learning frameworks to build support for',
+ values=('tensorflow', 'pytorch', 'mxnet', 'keras', 'spark'),
+ multi=True)
+ variant('controllers', default='mpi',
+ description='Controllers to coordinate work between processes',
+ values=('mpi', 'gloo'), multi=True)
+ variant('tensor_ops', default='nccl',
+ description='Framework to use for GPU/CPU operations',
+ values=('nccl', 'mpi', 'gloo', 'ccl'), multi=False)
+
+ # Required dependencies
+ depends_on('py-setuptools', type='build')
+ depends_on('py-cloudpickle', type=('build', 'run'))
+ depends_on('py-psutil', type=('build', 'run'))
+ depends_on('py-pyyaml', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'))
+
+ # Framework dependencies
+ depends_on('py-tensorflow@1.1.0:', type=('build', 'link', 'run'), when='frameworks=tensorflow')
+ depends_on('py-torch@0.4.0:', type=('build', 'run'), when='frameworks=pytorch')
+ depends_on('py-torchvision', type=('build', 'run'), when='frameworks=pytorch')
+ depends_on('py-cffi@1.4.0:', type=('build', 'run'), when='frameworks=pytorch')
+ depends_on('mxnet@1.4.1:+python', type=('build', 'link', 'run'), when='frameworks=mxnet')
+ depends_on('py-keras@2.0.8,2.1.2:', type=('build', 'run'), when='frameworks=keras')
+ depends_on('py-h5py@2.9:', type=('build', 'run'), when='frameworks=spark')
+ depends_on('py-numpy', type=('build', 'run'), when='frameworks=spark')
+ depends_on('py-petastorm@0.8.2', type=('build', 'run'), when='frameworks=spark')
+ depends_on('py-pyarrow@0.15.0:', type=('build', 'run'), when='frameworks=spark')
+ depends_on('py-pyspark@2.3.2:', type=('build', 'run'), when='frameworks=spark')
+
+ # Controller dependencies
+ depends_on('mpi', when='controllers=mpi')
+ # There does not appear to be a way to use an external Gloo installation
+ depends_on('cmake', type='build', when='controllers=gloo')
+
+ # Tensor Operations dependencies
+ depends_on('nccl', when='tensor_ops=nccl')
+ depends_on('mpi', when='tensor_ops=mpi')
+ # There does not appear to be a way to use an external Gloo installation
+ depends_on('cmake', type='build', when='tensor_ops=gloo')
+
+ # Test dependencies
+ depends_on('py-mock', type='test')
+ depends_on('py-pytest', type='test')
+ depends_on('py-pytest-forked', type='test')
+
+ conflicts('controllers=gloo', when='platform=darwin', msg='Gloo cannot be compiled on MacOS')
+
+ # https://github.com/horovod/horovod/pull/1835
+ patch('fma.patch', when='@0.19.0:0.19.1')
+
+ def setup_build_environment(self, env):
+ # Frameworks
+ if 'frameworks=tensorflow' in self.spec:
+ env.set('HOROVOD_WITH_TENSORFLOW', 1)
+ else:
+ env.set('HOROVOD_WITHOUT_TENSORFLOW', 1)
+ if 'frameworks=pytorch' in self.spec:
+ env.set('HOROVOD_WITH_PYTORCH', 1)
+ else:
+ env.set('HOROVOD_WITHOUT_PYTORCH', 1)
+ if 'frameworks=mxnet' in self.spec:
+ env.set('HOROVOD_WITH_MXNET', 1)
+ else:
+ env.set('HOROVOD_WITHOUT_MXNET', 1)
+
+ # Controllers
+ if 'controllers=mpi' in self.spec:
+ env.set('HOROVOD_WITH_MPI', 1)
+ else:
+ env.set('HOROVOD_WITHOUT_MPI', 1)
+ if 'controllers=gloo' in self.spec:
+ env.set('HOROVOD_WITH_GLOO', 1)
+ else:
+ env.set('HOROVOD_WITHOUT_GLOO', 1)
+
+ # Tensor Operations
+ if 'tensor_ops=nccl' in self.spec:
+ env.set('HOROVOD_GPU', 'CUDA')
+
+ env.set('HOROVOD_CUDA_HOME', self.spec['cuda'].prefix)
+ env.set('HOROVOD_CUDA_INCLUDE',
+ self.spec['cuda'].headers.directories[0])
+ env.set('HOROVOD_CUDA_LIB', self.spec['cuda'].libs.directories[0])
+
+ env.set('HOROVOD_NCCL_HOME', self.spec['nccl'].prefix)
+ env.set('HOROVOD_NCCL_INCLUDE',
+ self.spec['nccl'].headers.directories[0])
+ env.set('HOROVOD_NCCL_LIB', self.spec['nccl'].libs.directories[0])
+
+ env.set('HOROVOD_GPU_ALLREDUCE', 'NCCL')
+ env.set('HOROVOD_GPU_BROADCAST', 'NCCL')
+ else:
+ env.set('HOROVOD_CPU_OPERATIONS',
+ self.spec.variants['tensor_ops'].value.upper())
+
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
+ def install_test(self):
+ horovodrun = Executable(self.prefix.bin.horovodrun)
+ horovodrun('--check-build')
diff --git a/var/spack/repos/builtin/packages/py-humanfriendly/package.py b/var/spack/repos/builtin/packages/py-humanfriendly/package.py
index a1b63e8233..c023e2e41b 100644
--- a/var/spack/repos/builtin/packages/py-humanfriendly/package.py
+++ b/var/spack/repos/builtin/packages/py-humanfriendly/package.py
@@ -8,9 +8,12 @@ from spack import *
class PyHumanfriendly(PythonPackage):
"""Human friendly output for text interfaces using Python"""
- homepage = "https://pypi.org/project/humanfriendly/"
- url = "https://files.pythonhosted.org/packages/26/71/e7daf57e819a70228568ff5395fdbc4de81b63067b93167e07825fcf0bcf/humanfriendly-4.18.tar.gz"
+ homepage = "https://humanfriendly.readthedocs.io/"
+ url = "https://pypi.io/packages/source/h/humanfriendly/humanfriendly-8.1.tar.gz"
+ version('8.1', sha256='25c2108a45cfd1e8fbe9cdb30b825d34ef5d5675c8e11e4775c9aedbfb0bdee2')
version('4.18', sha256='33ee8ceb63f1db61cce8b5c800c531e1a61023ac5488ccde2ba574a85be00a85')
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
+ depends_on('py-monotonic', when='^python@:2', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-hypothesis/package.py b/var/spack/repos/builtin/packages/py-hypothesis/package.py
index 2bd02545e4..1a77b3cb28 100644
--- a/var/spack/repos/builtin/packages/py-hypothesis/package.py
+++ b/var/spack/repos/builtin/packages/py-hypothesis/package.py
@@ -20,13 +20,16 @@ class PyHypothesis(PythonPackage):
# TODO: Add missing dependency required to import hypothesis.extra.django
+ version('4.57.1', sha256='3c4369a4b0a1348561048bcda5f1db951a1b8e2a514ea8e8c70d36e656bf6fa0')
version('4.41.2', sha256='6847df3ffb4aa52798621dd007e6b61dbcf2d76c30ba37dc2699720e2c734b7a')
version('4.24.3', sha256='fd90a319f409f34a173156ca704d6c0c6c0bb30a2e43dbf26aced2c75569e5d5')
version('4.7.2', sha256='87944c6379f77634474b88abbf1e5ed5fe966637cc926131eda5e2af5b54a608')
version('3.7.0', sha256='0fea49d08f2d5884f014151a5af6fb48d862f6ad567ffc4a2e84abf2f186c423')
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
depends_on('py-attrs@19.2.0:', when='@4.38.2:', type=('build', 'run'))
depends_on('py-attrs@16.0.0:', when='@3.44.22:', type=('build', 'run'))
depends_on('py-attrs', when='@3.28.0:', type=('build', 'run'))
depends_on('py-enum34', type=('build', 'run'), when='^python@:2')
+ depends_on('py-sortedcontainers@2.1.0:2.999.0', type=('build', 'run'), when='@4.57.1:')
diff --git a/var/spack/repos/builtin/packages/py-ics/package.py b/var/spack/repos/builtin/packages/py-ics/package.py
index 7c91e2c5ff..c2c4a71346 100644
--- a/var/spack/repos/builtin/packages/py-ics/package.py
+++ b/var/spack/repos/builtin/packages/py-ics/package.py
@@ -29,6 +29,7 @@ class PyIcs(PythonPackage):
homepage = "https://github.com/C4ptainCrunch/ics.py"
url = "https://github.com/C4ptainCrunch/ics.py/archive/v0.6.tar.gz"
+ version('0.7', sha256='48c637e5eb8dfc817b1f3f6b3f662ba19cfcc25f8f71eb42f5d07e6f2c573994')
version('0.6', sha256='4947263136202d0489d4f5e5c7175dfd2db5d3508b8b003ddeaef96347f68830')
depends_on('python@3.6:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py
index d21d272a4b..5bfad819e7 100644
--- a/var/spack/repos/builtin/packages/py-ipython/package.py
+++ b/var/spack/repos/builtin/packages/py-ipython/package.py
@@ -18,7 +18,8 @@ class PyIpython(PythonPackage):
version('3.1.0', sha256='532092d3f06f82b1d8d1e5c37097eae19fcf025f8f6a4b670dd49c3c338d5624')
version('2.3.1', sha256='3e98466aa2fe54540bcba9aa6e01a39f40110d67668c297340c4b9514b7cc49c')
- depends_on('python@2.7:2.8,3.3:')
+ depends_on('python@2.7:2.8,3.3:', type=('build', 'run'), when='@:6')
+ depends_on('python@3.5:', type=('build', 'run'), when='@7:')
depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run'), when="^python@:3.2")
depends_on('py-pathlib2', type=('build', 'run'), when="^python@:3.3")
@@ -32,5 +33,3 @@ class PyIpython(PythonPackage):
depends_on('py-pexpect', type=('build', 'run'))
depends_on('py-backcall', type=('build', 'run'), when="^python@3.3:")
depends_on('py-appnope', type=('build', 'run'), when='platform=darwin')
-
- conflicts('^python@2.7:2.8', when='@7.0.0:')
diff --git a/var/spack/repos/builtin/packages/py-ipywidgets/package.py b/var/spack/repos/builtin/packages/py-ipywidgets/package.py
index 5f211e977b..11b0989069 100644
--- a/var/spack/repos/builtin/packages/py-ipywidgets/package.py
+++ b/var/spack/repos/builtin/packages/py-ipywidgets/package.py
@@ -12,6 +12,7 @@ class PyIpywidgets(PythonPackage):
homepage = "https://github.com/ipython/ipywidgets"
url = "https://github.com/ipython/ipywidgets/archive/5.2.2.tar.gz"
+ version('7.5.1', sha256='e4253384886aabbaf10966916a2cf9ffa72551bd045d536fa2a379f14b50cec3')
version('7.4.2', sha256='f156165e8a855ed862fdf48e72700bdcd6956d089a2018c5b36d358255d45b2b')
version('5.2.2', sha256='d61ab8bb12b90981a3a6010429816d70eaa041e622043207bcb74239b664d4f3')
@@ -23,6 +24,11 @@ class PyIpywidgets(PythonPackage):
depends_on('py-traitlets@4.2.1:', type=('build', 'run'))
depends_on('py-traitlets@4.3.1:', type=('build', 'run'), when='@6:')
depends_on('py-nbformat@4.2.0:', type=('build', 'run'), when='@6:')
- depends_on('py-widgetsnbextension@3.4.0:3.4.999', type=('build', 'run'), when='@6:')
+ depends_on('py-widgetsnbextension@1.2.6:1.9', type=('build', 'run'),
+ when='@5.2.2')
+ depends_on('py-widgetsnbextension@3.4.0:3.4.999', type=('build', 'run'),
+ when='@7.4.2')
+ depends_on('py-widgetsnbextension@3.5.0:3.5.999', type=('build', 'run'),
+ when='@7.5.1')
depends_on('py-mock', type='test', when='^python@2.7:2.8')
depends_on('py-nose', type='test')
diff --git a/var/spack/repos/builtin/packages/py-jprops/package.py b/var/spack/repos/builtin/packages/py-jprops/package.py
index 16fed619dd..2e6749077f 100644
--- a/var/spack/repos/builtin/packages/py-jprops/package.py
+++ b/var/spack/repos/builtin/packages/py-jprops/package.py
@@ -10,7 +10,7 @@ class PyJprops(PythonPackage):
"""Java properties file parser for Python"""
homepage = "https://github.com/mgood/jprops/"
- url = "https://pypi.org/packages/source/j/jprops/jprops-2.0.2.tar.gz"
+ url = "https://pypi.io/packages/source/j/jprops/jprops-2.0.2.tar.gz"
version('2.0.2', sha256='d297231833b6cd0a3f982a48fe148a7f9817f2895661743d166b267e4d3d5b2c')
diff --git a/var/spack/repos/builtin/packages/py-jupyter-console/package.py b/var/spack/repos/builtin/packages/py-jupyter-console/package.py
index 990c8a4f7b..0f06d1422d 100644
--- a/var/spack/repos/builtin/packages/py-jupyter-console/package.py
+++ b/var/spack/repos/builtin/packages/py-jupyter-console/package.py
@@ -12,6 +12,7 @@ class PyJupyterConsole(PythonPackage):
homepage = "https://github.com/jupyter/jupyter_console"
url = "https://github.com/jupyter/jupyter_console/archive/5.0.0.tar.gz"
+ version('6.1.0', sha256='838c95c99ce52978e1660e7a30dd933dede158e2f4da1bc5fad1a8fad44570b7')
version('5.2.0', sha256='371d03aeefcf48967f2f00af4c1709f52d2a688deee33f395c6330e4e8aa171c')
version('5.0.0', sha256='e966b2b5bf9a1e8c5bd11a6335bb11f68ec585ea39b801721b2ed9dd964468fa')
version('4.1.1', sha256='0bb06a1f878d0c44c2f6f66406a80f949bcd86f3508035500af7dceffb9cc7dc')
@@ -19,8 +20,12 @@ class PyJupyterConsole(PythonPackage):
version('4.0.3', sha256='b1867a89b693f247e9089a8f367fa4f27af6eac27930cad2966054adfa7b9aa1')
version('4.0.2', sha256='116a56763899bbb12c762f865372eb52c08619ef070c237c7f1387e192bfd3df')
- depends_on('python@2.7:2.8,3.3:')
+ depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
+ depends_on('python@3.5:', type=('build', 'run'), when='@6:')
depends_on('py-jupyter-client', type=('build', 'run'))
+ depends_on('py-ipython@:5.8.0', type=('build', 'run'), when='@:5')
depends_on('py-ipython', type=('build', 'run'))
depends_on('py-ipykernel', type=('build', 'run'))
depends_on('py-pygments', type=('build', 'run'))
+ depends_on('py-prompt-toolkit@1.0.0:1.999', type=('build', 'run'), when='@:5')
+ depends_on('py-prompt-toolkit@2.0.0:2.999,3.0.2:3.0.999', type=('build', 'run'), when='@6:')
diff --git a/var/spack/repos/builtin/packages/py-jupyter-core/package.py b/var/spack/repos/builtin/packages/py-jupyter-core/package.py
index fbdc376b2b..9fb84e40cb 100644
--- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py
+++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py
@@ -12,6 +12,7 @@ class PyJupyterCore(PythonPackage):
homepage = "http://jupyter-core.readthedocs.io/"
url = "https://pypi.io/packages/source/j/jupyter-core/jupyter_core-4.6.0.tar.gz"
+ version('4.6.3', sha256='394fd5dd787e7c8861741880bdf8a00ce39f95de5d18e579c74b882522219e7e')
version('4.6.0', sha256='85103cee6548992780912c1a0a9ec2583a4a18f1ef79a248ec0db4446500bce3')
version('4.4.0', sha256='ba70754aa680300306c699790128f6fbd8c306ee5927976cbe48adacf240c0b7')
version('4.2.0', sha256='44ec837a53bebf4e937112d3f9ccf31fee4f8db3e406dd0dd4f0378a354bed9c')
@@ -26,5 +27,7 @@ class PyJupyterCore(PythonPackage):
version('4.0.0', sha256='9025208cdfc40718c7e3ab62b5e17aacf68e3fc66e34ff21fe032d553620122a')
depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'), when='@4.6.2:')
+
depends_on('py-setuptools', when='@4.5.0:', type='build')
depends_on('py-traitlets', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-librosa/package.py b/var/spack/repos/builtin/packages/py-librosa/package.py
new file mode 100644
index 0000000000..c720c12e63
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-librosa/package.py
@@ -0,0 +1,27 @@
+# Copyright 2013-2020 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 PyLibrosa(PythonPackage):
+ """A python package for music and audio analysis."""
+
+ homepage = "http://github.com/librosa/librosa"
+ url = "https://pypi.io/packages/source/l/librosa/librosa-0.7.2.tar.gz"
+
+ version('0.7.2', sha256='656bbda80e98e6330db1ead79cd084b13a762284834d7603fcf7cf7c0dc65f3c')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-audioread@2.0.0:', type=('build', 'run'))
+ depends_on('py-numpy@1.15.0:', type=('build', 'run'))
+ depends_on('py-scipy@1.0.0:', type=('build', 'run'))
+ depends_on('py-scikit-learn@0.14.0:0.18.999,0.19.1:', type=('build', 'run'))
+ depends_on('py-joblib@0.12:', type=('build', 'run'))
+ depends_on('py-decorator@3.0.0:', type=('build', 'run'))
+ depends_on('py-six@1.3:', type=('build', 'run'))
+ depends_on('py-resampy@0.2.2:', type=('build', 'run'))
+ depends_on('py-numba@0.43.0:', type=('build', 'run'))
+ depends_on('py-soundfile@0.9.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-llvmlite/package.py b/var/spack/repos/builtin/packages/py-llvmlite/package.py
index ad5e401963..c225e74354 100644
--- a/var/spack/repos/builtin/packages/py-llvmlite/package.py
+++ b/var/spack/repos/builtin/packages/py-llvmlite/package.py
@@ -12,6 +12,7 @@ class PyLlvmlite(PythonPackage):
homepage = "http://llvmlite.readthedocs.io/en/latest/index.html"
url = "https://pypi.io/packages/source/l/llvmlite/llvmlite-0.23.0.tar.gz"
+ version('0.31.0', sha256='22ab2b9d7ec79fab66ac8b3d2133347de86addc2e2df1b3793e523ac84baa3c8')
version('0.29.0', sha256='3adb0d4c9a17ad3dca82c7e88118babd61eeee0ee985ce31fa43ec27aa98c963')
version('0.27.1', sha256='48a1c3ae69fd8920cba153bfed8a46ac46474bc706a2100226df4abffe0000ab')
version('0.26.0', sha256='13e84fe6ebb0667233074b429fd44955f309dead3161ec89d9169145dbad2ebf')
@@ -25,7 +26,11 @@ class PyLlvmlite(PythonPackage):
# llvmlite compatibility information taken from https://github.com/numba/llvmlite#compatibility
depends_on('llvm@7.0:8.0.99', when='@0.29.0:')
- depends_on('llvm@7.0:7.99', when='@0.27.0:0.28.99')
- depends_on('llvm@6.0:6.99', when='@0.23.0:0.26.99')
- depends_on('llvm@4.0:4.99', when='@0.17.0:0.20.99')
+ depends_on('llvm@7.0:7.0.99', when='@0.27.0:0.28.99')
+ depends_on('llvm@6.0:6.0.99', when='@0.23.0:0.26.99')
+ depends_on('llvm@4.0:4.0.99', when='@0.17.0:0.20.99')
depends_on('binutils', type='build')
+
+ def setup_build_environment(self, env):
+ # Need to set PIC flag since this is linking statically with LLVM
+ env.set('CXX_FLTO_FLAGS', '-flto {0}'.format(self.compiler.pic_flag))
diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py
index eb4f5e3da5..4e5dbf9135 100644
--- a/var/spack/repos/builtin/packages/py-matplotlib/package.py
+++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py
@@ -9,12 +9,11 @@ from spack import *
class PyMatplotlib(PythonPackage):
- """matplotlib is a python 2D plotting library which produces publication
- quality figures in a variety of hardcopy formats and interactive
- environments across platforms."""
+ """Matplotlib is a comprehensive library for creating static, animated,
+ and interactive visualizations in Python."""
- homepage = "https://pypi.python.org/pypi/matplotlib"
- url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-3.1.3.tar.gz"
+ homepage = "https://matplotlib.org/"
+ url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-3.2.1.tar.gz"
maintainers = ['adamjstewart']
@@ -28,6 +27,8 @@ class PyMatplotlib(PythonPackage):
'matplotlib.testing.jpl_units'
]
+ version('3.2.1', sha256='ffe2f9cdcea1086fc414e82f42271ecf1976700b8edd16ca9d376189c6d93aee')
+ version('3.2.0', sha256='651d76daf9168250370d4befb09f79875daa2224a9096d97dfc3ed764c842be4')
version('3.1.3', sha256='db3121f12fb9b99f105d1413aebaeb3d943f269f3d262b45586d12765866f0c6')
version('3.1.2', sha256='8e8e2c2fe3d873108735c6ee9884e6f36f467df4a143136209cff303b183bada')
version('3.1.1', sha256='1febd22afe1489b13c6749ea059d392c03261b2950d1d45c17e3aed812080c93')
@@ -84,7 +85,7 @@ class PyMatplotlib(PythonPackage):
depends_on('py-cycler@0.10:', type=('build', 'run'))
depends_on('py-python-dateutil@2.1:', type=('build', 'run'))
depends_on('py-kiwisolver@1.0.1:', type=('build', 'run'), when='@2.2.0:')
- depends_on('py-pyparsing', type=('build', 'run'))
+ depends_on('py-pyparsing@2.0.3,2.0.5:2.1.1,2.1.3:2.1.5,2.1.7:', type=('build', 'run'))
depends_on('py-pytz', type=('build', 'run'), when='@:2')
depends_on('py-subprocess32', type=('build', 'run'), when='^python@:2.7')
depends_on('py-functools32', type=('build', 'run'), when='@:2.0.999 ^python@2.7')
diff --git a/var/spack/repos/builtin/packages/py-mayavi/package.py b/var/spack/repos/builtin/packages/py-mayavi/package.py
new file mode 100644
index 0000000000..1fe477bbc7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-mayavi/package.py
@@ -0,0 +1,23 @@
+# Copyright 2013-2020 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)
+
+
+class PyMayavi(PythonPackage):
+ """Mayavi: 3D visualization of scientific data in Python."""
+
+ homepage = "https://docs.enthought.com/mayavi/mayavi/index.html"
+ url = "https://pypi.io/packages/source/m/mayavi/mayavi-4.7.1.tar.bz2"
+
+ version('4.7.1', sha256='be51fb6f886f304f7c593c907e6a2e88d7919f8f446cdccfcd184fa35b3db724')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-apptools', type=('build', 'run'))
+ depends_on('py-envisage', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-pyface@6.1.1:', type=('build', 'run'))
+ depends_on('py-pygments', type=('build', 'run'))
+ depends_on('py-traits@4.6.0:', type=('build', 'run'))
+ depends_on('py-traitsui@6.0.0:', type=('build', 'run'))
+ depends_on('vtk+python', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-memory-profiler/package.py b/var/spack/repos/builtin/packages/py-memory-profiler/package.py
index 9d6af1c9bb..ee3f3ec760 100644
--- a/var/spack/repos/builtin/packages/py-memory-profiler/package.py
+++ b/var/spack/repos/builtin/packages/py-memory-profiler/package.py
@@ -10,9 +10,10 @@ class PyMemoryProfiler(PythonPackage):
"""A module for monitoring memory usage of a python program"""
homepage = "https://github.com/fabianp/memory_profiler"
- url = "https://pypi.io/packages/source/m/memory_profiler/memory_profiler-0.47.tar.gz"
+ url = "https://pypi.io/packages/source/m/memory_profiler/memory_profiler-0.57.0.tar.gz"
- version('0.47', sha256='e992f2a341a5332dad1ad4a008eeac7cfe78c7ea4abdf7535a3e7e79093328cb')
+ version('0.57.0', sha256='23b196f91ea9ac9996e30bfab1e82fecc30a4a1d24870e81d1e81625f786a2c3')
+ version('0.47', sha256='e992f2a341a5332dad1ad4a008eeac7cfe78c7ea4abdf7535a3e7e79093328cb')
depends_on('py-setuptools', type='build')
- depends_on('py-psutil', type=('build', 'run'))
+ depends_on('py-psutil', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-merlin/package.py b/var/spack/repos/builtin/packages/py-merlin/package.py
index 7ae05a8014..c4185e9193 100644
--- a/var/spack/repos/builtin/packages/py-merlin/package.py
+++ b/var/spack/repos/builtin/packages/py-merlin/package.py
@@ -7,15 +7,30 @@ from spack import *
class PyMerlin(PythonPackage):
- """A custom version of Phillip J. Eby's setuptools."""
+ """Merlin Workflow for HPC."""
- homepage = "https://pypi.org/project/merlin/"
- url = "https://pypi.io/packages/source/m/merlin/merlin-1.8.tar.gz"
+ homepage = "https://github.com/LLNL/merlin"
+ url = "https://pypi.io/packages/source/m/merlin/merlin-1.4.1.tar.gz"
+ git = "https://github.com/LLNL/merlin.git"
- version('1.8', sha256='a1ba9c13c74daa1724dd3820f1c241d7594d487b11f35347606986028c1881fd')
+ version('1.4.1', sha256='9d515cfdbcde2443892afd92b78dbc5bf2aed2060ed3a336e683188e015bca7c')
+ version('master', branch='master')
+ version('develop', branch='develop')
- depends_on('python@:2', type=('build', 'run'))
+ depends_on('python@3.6:', type=('build', 'run'))
+ depends_on('py-setuptools', type=('build', 'run'))
- def test(self):
- # Unit tests are missing from tarball
- pass
+ depends_on('py-pytest', type='test')
+
+ depends_on('py-cached-property', type=('build', 'run'))
+ depends_on('py-celery@4.3.0:+redis', type=('build', 'run'))
+ depends_on('py-coloredlogs@10.0:', type=('build', 'run'))
+ depends_on('py-cryptography', type=('build', 'run'))
+ depends_on('py-importlib-resources', when="^python@3.0:3.6.99", type=('build', 'run'))
+ depends_on('py-maestrowf@1.1.7dev0:', when="@1.2.0:", type=('build', 'run'))
+ depends_on('py-maestrowf@1.1.6:', when="@:1.1.99", type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-parse', type=('build', 'run'))
+ depends_on('py-psutil@5.1.0:', type=('build', 'run'))
+ depends_on('py-pyyaml@5.1.2:', type=('build', 'run'))
+ depends_on('py-tabulate', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-merlinwf/package.py b/var/spack/repos/builtin/packages/py-merlinwf/package.py
deleted file mode 100644
index 2082e77997..0000000000
--- a/var/spack/repos/builtin/packages/py-merlinwf/package.py
+++ /dev/null
@@ -1,38 +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 PyMerlinwf(PythonPackage):
- """Merlin Workflow for HPC."""
-
- homepage = "https://github.com/LLNL/merlin"
- url = "https://pypi.io/packages/source/m/merlinwf/merlinwf-1.2.3.tar.gz"
- git = "https://github.com/LLNL/merlin.git"
-
- version('1.2.3', sha256='6b13a315f3e8e2894ea05d9cc072639f02eaf71ae0fdbd2bafebd1c20c8470ab')
- version('1.1.1', sha256='306055a987e42a79ce348a3f9d71293ed8a9b7f5909c26b6fd233d6a176fff6d')
- version('1.0.5', sha256='d66f50eac84ff9d7aa484f2d9655dc60f0352196d333284d81b6623a6f0aa180')
- version('master', branch='master')
- version('develop', branch='develop')
-
- depends_on('python@3.6:', type=('build', 'run'))
- depends_on('py-setuptools', type=('build', 'run'))
-
- depends_on('py-pytest', type='test')
-
- depends_on('py-cached-property', type=('build', 'run'))
- depends_on('py-celery@4.3.0:+redis', type=('build', 'run'))
- depends_on('py-coloredlogs@10.0:', type=('build', 'run'))
- depends_on('py-cryptography', type=('build', 'run'))
- depends_on('py-importlib-resources', when="^python@3.0:3.6.99", type=('build', 'run'))
- depends_on('py-maestrowf@1.1.7dev0:', when="@1.2.0:", type=('build', 'run'))
- depends_on('py-maestrowf@1.1.6:', when="@:1.1.99", type=('build', 'run'))
- depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-parse', type=('build', 'run'))
- depends_on('py-psutil@5.1.0:', type=('build', 'run'))
- depends_on('py-pyyaml@5.1.2:', type=('build', 'run'))
- depends_on('py-tabulate', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-multiprocess/package.py b/var/spack/repos/builtin/packages/py-multiprocess/package.py
index 97a58a905d..f382ff050f 100644
--- a/var/spack/repos/builtin/packages/py-multiprocess/package.py
+++ b/var/spack/repos/builtin/packages/py-multiprocess/package.py
@@ -12,15 +12,17 @@ class PyMultiprocess(PythonPackage):
homepage = "https://github.com/uqfoundation/multiprocess"
url = "https://pypi.io/packages/source/m/multiprocess/multiprocess-0.70.5.zip"
+ version('0.70.9', sha256='9fd5bd990132da77e73dec6e9613408602a4612e1d73caf2e2b813d2b61508e5')
version('0.70.7', sha256='3394f1fbd0d87112690a877e49eb7917d851ee8d822294d522dd4deae12febdb')
version('0.70.5', sha256='c4c196f3c4561dc1d78139c3e73709906a222d2fc166ef3eef895d8623df7267')
version('0.70.4', sha256='a692c6dc8392c25b29391abb58a9fbdc1ac38bca73c6f27d787774201e68e12c')
- depends_on('python@2.6:2.8,3.1:')
+ depends_on('python@2.5:2.8,3.1:', type=('build', 'run'))
depends_on('py-setuptools@0.6:', type='build')
depends_on('py-dill@0.2.6:', type=('build', 'run'))
depends_on('py-dill@0.2.9:', type=('build', 'run'), when='@0.70.7:')
+ depends_on('py-dill@0.3.1:', type=('build', 'run'), when='@0.70.9:')
def url_for_version(self, version):
url = self.url.rsplit('/', 1)[0]
diff --git a/var/spack/repos/builtin/packages/py-neobolt/package.py b/var/spack/repos/builtin/packages/py-neobolt/package.py
new file mode 100644
index 0000000000..7e19e529fd
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-neobolt/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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 PyNeobolt(PythonPackage):
+ """Neo4j Bolt connector for Python"""
+
+ homepage = "https://github.com/neo4j-drivers/neobolt"
+ url = "https://pypi.io/packages/source/n/neobolt/neobolt-1.7.16.tar.gz"
+
+ version('1.7.16', sha256='ca4e87679fe3ed39aec23638658e02dbdc6bbc3289a04e826f332e05ab32275d')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-neotime/package.py b/var/spack/repos/builtin/packages/py-neotime/package.py
new file mode 100644
index 0000000000..31769361c1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-neotime/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 PyNeotime(PythonPackage):
+ """Nanosecond resolution temporal types"""
+
+ homepage = "https://neotime.readthedocs.io/"
+ url = "https://pypi.io/packages/source/n/neotime/neotime-1.7.4.tar.gz"
+
+ version('1.7.4', sha256='4e0477ba0f24e004de2fa79a3236de2bd941f20de0b5db8d976c52a86d7363eb')
+
+ depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-pytz', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-networkx/package.py b/var/spack/repos/builtin/packages/py-networkx/package.py
index da616eefd4..04f82dac03 100644
--- a/var/spack/repos/builtin/packages/py-networkx/package.py
+++ b/var/spack/repos/builtin/packages/py-networkx/package.py
@@ -9,16 +9,29 @@ from spack import *
class PyNetworkx(PythonPackage):
"""NetworkX is a Python package for the creation, manipulation, and study
of the structure, dynamics, and functions of complex networks."""
+
homepage = "http://networkx.github.io/"
- url = "https://pypi.io/packages/source/n/networkx/networkx-1.11.tar.gz"
+ url = "https://pypi.io/packages/source/n/networkx/networkx-2.4.tar.gz"
- version('2.2', sha256='45e56f7ab6fe81652fb4bc9f44faddb0e9025f469f602df14e3b2551c2ea5c8b',
- url='https://pypi.io/packages/source/n/networkx/networkx-2.2.zip')
- version('2.1', sha256='64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1',
- url='https://pypi.io/packages/source/n/networkx/networkx-2.1.zip')
+ version('2.4', sha256='f8f4ff0b6f96e4f9b16af6b84622597b5334bf9cae8cf9b2e42e7985d5c95c64')
+ version('2.3', sha256='8311ddef63cf5c5c5e7c1d0212dd141d9a1fe3f474915281b73597ed5f1d4e3d')
+ version('2.2', sha256='45e56f7ab6fe81652fb4bc9f44faddb0e9025f469f602df14e3b2551c2ea5c8b')
+ version('2.1', sha256='64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1')
+ version('2.0', sha256='cd5ff8f75d92c79237f067e2f0876824645d37f017cfffa5b7c9678cae1454aa')
version('1.11', sha256='0d0e70e10dfb47601cbb3425a00e03e2a2e97477be6f80638fef91d54dd1e4b8')
version('1.10', sha256='ced4095ab83b7451cec1172183eff419ed32e21397ea4e1971d92a5808ed6fb8')
- depends_on('py-decorator', type=('build', 'run'))
- depends_on('py-decorator@4.1.0:', type=('build', 'run'), when='@2.1:')
+ depends_on('python@2.7:', type=('build', 'run'))
+ depends_on('python@3.5:', type=('build', 'run'), when='@2.3:')
depends_on('py-setuptools', type='build')
+ depends_on('py-decorator@3.4.0:', type=('build', 'run'))
+ depends_on('py-decorator@4.1.0:', type=('build', 'run'), when='@2.0:')
+ depends_on('py-decorator@4.3.0:', type=('build', 'run'), when='@2.2:')
+
+ def url_for_version(self, version):
+ ext = 'tar.gz'
+ if Version('2.0') <= version <= Version('2.3'):
+ ext = 'zip'
+
+ url = 'https://pypi.io/packages/source/n/networkx/networkx-{0}.{1}'
+ return url.format(version, ext)
diff --git a/var/spack/repos/builtin/packages/py-notebook/package.py b/var/spack/repos/builtin/packages/py-notebook/package.py
index f674638a60..924d15b0dd 100644
--- a/var/spack/repos/builtin/packages/py-notebook/package.py
+++ b/var/spack/repos/builtin/packages/py-notebook/package.py
@@ -12,6 +12,7 @@ class PyNotebook(PythonPackage):
homepage = "https://github.com/jupyter/notebook"
url = "https://pypi.io/packages/source/n/notebook/notebook-4.2.3.tar.gz"
+ version('6.0.3', sha256='47a9092975c9e7965ada00b9a20f0cf637d001db60d241d479f53c0be117ad48')
version('6.0.1', sha256='660976fe4fe45c7aa55e04bf4bccb9f9566749ff637e9020af3422f9921f9a5d')
version('5.7.8', sha256='573e0ae650c5d76b18b6e564ba6d21bf321d00847de1d215b418acb64f056eb8')
version('4.2.3', sha256='39a9603d3fe88b60de2903680c965cf643acf2c16fb2c6bac1d905e1042b5851')
@@ -24,28 +25,41 @@ class PyNotebook(PythonPackage):
version('4.0.2', sha256='8478d7e2ab474855b0ff841f693983388af8662d3af1adcb861acb900274f22a')
depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
- depends_on('python@3.5:', type=('build', 'run'), when='@6:')
- depends_on('py-setuptools', type=('build', 'run'), when='@5:')
- depends_on('py-jinja2', type=('build', 'run'))
- depends_on('py-tornado@4.0:6.999', type=('build', 'run'), when='@:5.7.4')
- depends_on('py-tornado@4.1:6.999', type=('build', 'run'), when='@5.7.5:6.0.1')
+ depends_on('python@3.5:', type=('build', 'run'), when='@6:')
+
+ depends_on('py-setuptools', type=('build', 'run'), when='@5:')
+ depends_on('py-jinja2', type=('build', 'run'))
depends_on('py-ipython-genutils', type=('build', 'run'))
- depends_on('py-traitlets', type=('build', 'run'))
- depends_on('py-traitlets@4.2.1:', type=('build', 'run'), when='@5:')
- depends_on('py-jupyter-core', type=('build', 'run'))
- depends_on('py-jupyter-core@4.4.0:', type=('build', 'run'), when='@5.7.0:')
- depends_on('py-jupyter-client', type=('build', 'run'))
- depends_on('py-jupyter-client@5.2.0:', type=('build', 'run'), when='@5.7.0:')
- depends_on('py-nbformat', type=('build', 'run'))
- depends_on('py-nbconvert', type=('build', 'run'))
- depends_on('py-ipykernel', type=('build', 'run'))
- depends_on('py-ipykernel@5.1.0:', when='@4.2.0: ^python@3.3:', type=('build', 'run'))
- depends_on('py-ipykernel@:5.0.0', when='@4.2.0: ^python@:2.8', type=('build', 'run'))
- depends_on('py-ipywidgets', when="+terminal", type=('build', 'run'))
+ depends_on('py-nbformat', type=('build', 'run'))
+ depends_on('py-nbconvert', type=('build', 'run'))
+ depends_on('py-ipykernel', type=('build', 'run'))
+
+ depends_on('py-ipywidgets', type=('build', 'run'), when="+terminal")
depends_on('py-prometheus-client', type=('build', 'run'), when='@5.7.0:')
+ depends_on('py-send2trash', type=('build', 'run'), when='@6:')
+ depends_on('py-pyzmq@17:', type=('build', 'run'), when='@6:')
+ depends_on('py-traitlets@4.2.1:', type=('build', 'run'), when='@6:')
+ depends_on('py-ipaddress', type=('build', 'run'), when='@5.7.0: ^python@:2.8')
+
depends_on('py-terminado@0.3.3:', type=('build', 'run'), when='@:5.7.0')
depends_on('py-terminado@0.8.1:', type=('build', 'run'), when='@5.7.0:')
- depends_on('py-send2trash', type=('build', 'run'), when='@6:')
- depends_on('py-pyzmq@17:', type=('build', 'run'), when='@6:')
- depends_on('py-traitlets@4.2.1:', type=('build', 'run'), when='@6:')
- depends_on('py-ipaddress', type=('build', 'run'), when='@5.7.0: ^python@:2.8')
+
+ depends_on('py-ipykernel@5.1.0:', type=('build', 'run'), when='@4.2.0: ^python@3.3:')
+ depends_on('py-ipykernel@:5.0.0', type=('build', 'run'), when='@4.2.0: ^python@:2.8')
+
+ depends_on('py-tornado@4.0:6.999', type=('build', 'run'), when='@:5.7.4')
+ depends_on('py-tornado@4.1:6.999', type=('build', 'run'), when='@5.7.5:5.999')
+ depends_on('py-tornado@5.0:', type=('build', 'run'), when='@6.0.0:')
+
+ depends_on('py-jupyter-core', type=('build', 'run'))
+ depends_on('py-jupyter-core@4.4.0:', type=('build', 'run'), when='@5.7.0:6.0.1')
+ depends_on('py-jupyter-core@4.6.0:', type=('build', 'run'), when='@6.0.2')
+ depends_on('py-jupyter-core@4.6.1:', type=('build', 'run'), when='@6.0.3:')
+
+ depends_on('py-jupyter-client', type=('build', 'run'))
+ depends_on('py-jupyter-client@5.2.0:', type=('build', 'run'), when='@5.7.0:5.999')
+ depends_on('py-jupyter-client@5.3.1:', type=('build', 'run'), when='@6.0.0:6.0.1')
+ depends_on('py-jupyter-client@5.3.4:', type=('build', 'run'), when='@6.0.2:')
+
+ depends_on('py-traitlets', type=('build', 'run'))
+ depends_on('py-traitlets@4.2.1:', type=('build', 'run'), when='@5:')
diff --git a/var/spack/repos/builtin/packages/py-numba/package.py b/var/spack/repos/builtin/packages/py-numba/package.py
index a6f4175e07..c3c288a4ae 100644
--- a/var/spack/repos/builtin/packages/py-numba/package.py
+++ b/var/spack/repos/builtin/packages/py-numba/package.py
@@ -12,18 +12,22 @@ class PyNumba(PythonPackage):
homepage = "https://numba.pydata.org/"
url = "https://pypi.io/packages/source/n/numba/numba-0.35.0.tar.gz"
+ version('0.48.0', sha256='9d21bc77e67006b5723052840c88cc59248e079a907cc68f1a1a264e1eaba017')
version('0.40.1', sha256='52d046c13bcf0de79dbfb936874b7228f141b9b8e3447cc35855e9ad3e12aa33')
version('0.35.0', sha256='11564937757605bee590c5758c73cfe9fd6d569726b56d970316a6228971ecc3')
+ depends_on('python@3.6:', type=('build', 'run'), when='@0.48.0:')
depends_on('python@3.3:3.7.9999', type=('build', 'run'), when='@0.40.1:')
depends_on('python@3.3:3.6.9999', type=('build', 'run'), when='@:0.35.0')
+ depends_on('py-numpy@1.15:', type=('build', 'run'), when='@0.48.0:')
depends_on('py-numpy@1.10:1.99', type=('build', 'run'))
- depends_on('py-setuptools', type='build')
+ depends_on('py-setuptools', type=('build', 'run'))
# Note: As of 1 Nov 2018, 0.25 was the latest version of py-llvmlite.
# That's why it was chosen as an upper bound in the following depends_on
# calls. If newer versions maintain backwards compatibility, the calls
# can be updated accordingly.
+ depends_on('py-llvmlite@0.31.0:0.32.0', type=('build', 'run'), when='@0.48.0')
depends_on('py-llvmlite@0.25:', type=('build', 'run'), when='@0.40.1:')
depends_on('py-llvmlite@0.20:0.25', type=('build', 'run'), when='@0.35.1')
diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py
index c685a6fb4c..639ff48d8e 100644
--- a/var/spack/repos/builtin/packages/py-numpy/package.py
+++ b/var/spack/repos/builtin/packages/py-numpy/package.py
@@ -16,7 +16,7 @@ class PyNumpy(PythonPackage):
number capabilities"""
homepage = "https://numpy.org/"
- url = "https://pypi.io/packages/source/n/numpy/numpy-1.18.1.zip"
+ url = "https://pypi.io/packages/source/n/numpy/numpy-1.18.2.zip"
git = "https://github.com/numpy/numpy.git"
maintainers = ['adamjstewart']
@@ -30,6 +30,7 @@ class PyNumpy(PythonPackage):
]
version('master', branch='master')
+ version('1.18.2', sha256='e7894793e6e8540dbeac77c87b489e331947813511108ae097f1715c018b8f3d')
version('1.18.1', sha256='b6ff59cee96b454516e47e7721098e6ceebef435e3e21ac2d6c3b8b02628eb77')
version('1.18.0', sha256='a9d72d9abaf65628f0f31bbb573b7d9304e43b1e6bbae43149c17737a42764c4')
version('1.17.5', sha256='16507ba6617f62ae3c6ab1725ae6f550331025d4d9a369b83f6d5a470446c342')
diff --git a/var/spack/repos/builtin/packages/py-onnx/package.py b/var/spack/repos/builtin/packages/py-onnx/package.py
index fd6d6b0b6d..f0a5838462 100644
--- a/var/spack/repos/builtin/packages/py-onnx/package.py
+++ b/var/spack/repos/builtin/packages/py-onnx/package.py
@@ -17,8 +17,9 @@ class PyOnnx(PythonPackage):
on the capabilities needed for inferencing (scoring)."""
homepage = "https://github.com/onnx/onnx"
- url = "https://pypi.io/packages/source/O/Onnx/onnx-1.5.0.tar.gz"
+ url = "https://pypi.io/packages/source/O/Onnx/onnx-1.6.0.tar.gz"
+ version('1.6.0', sha256='3b88c3fe521151651a0403c4d131cb2e0311bd28b753ef692020a432a81ce345')
version('1.5.0', sha256='1a584a4ef62a6db178c257fffb06a9d8e61b41c0a80bfd8bcd8a253d72c4b0b4')
depends_on('py-setuptools', type='build')
@@ -26,5 +27,9 @@ class PyOnnx(PythonPackage):
depends_on('py-protobuf+cpp', type=('build', 'run'))
depends_on('py-numpy', type=('build', 'run'))
depends_on('py-six', type=('build', 'run'))
- depends_on('py-typing@3.6.4:', type=('build', 'run'))
+ depends_on('py-typing@3.6.4:', when='^python@:3.4.999', type=('build', 'run'))
depends_on('py-typing-extensions@3.6.4:', type=('build', 'run'))
+ depends_on('cmake@3.1:', type='build')
+
+ # 'python_out' does not recognize dllexport_decl.
+ patch('remove_dllexport_decl.patch', when='@:1.6.0')
diff --git a/var/spack/repos/builtin/packages/py-onnx/remove_dllexport_decl.patch b/var/spack/repos/builtin/packages/py-onnx/remove_dllexport_decl.patch
new file mode 100644
index 0000000000..ede1fe66f2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-onnx/remove_dllexport_decl.patch
@@ -0,0 +1,11 @@
+--- spack-src/CMakeLists.txt.org 2020-03-24 14:01:58.856142450 +0900
++++ spack-src/CMakeLists.txt 2020-03-24 14:01:05.715872685 +0900
+@@ -204,7 +204,7 @@
+ ${ONNX_DLLEXPORT_STR}${CMAKE_CURRENT_BINARY_DIR})
+ if(BUILD_ONNX_PYTHON)
+ list(APPEND PROTOC_ARGS --python_out
+- ${ONNX_DLLEXPORT_STR}${CMAKE_CURRENT_BINARY_DIR})
++ ${CMAKE_CURRENT_BINARY_DIR})
+ if(ONNX_GEN_PB_TYPE_STUBS)
+ # Haven't figured out how to generate mypy stubs on Windows yet
+ if(NOT WIN32)
diff --git a/var/spack/repos/builtin/packages/py-pep8-naming/package.py b/var/spack/repos/builtin/packages/py-pep8-naming/package.py
index ed123b773d..fe3e929996 100644
--- a/var/spack/repos/builtin/packages/py-pep8-naming/package.py
+++ b/var/spack/repos/builtin/packages/py-pep8-naming/package.py
@@ -9,10 +9,11 @@ from spack import *
class PyPep8Naming(PythonPackage):
"""Check PEP-8 naming conventions, plugin for flake8."""
- homepage = "https://pypi.org/project/pep8-naming/"
- url = "https://files.pythonhosted.org/packages/3e/4a/125425d6b1e017f48dfc9c961f4bb9510168db7a090618906c750184ed03/pep8-naming-0.7.0.tar.gz"
+ homepage = "https://github.com/PyCQA/pep8-naming"
+ url = "https://pypi.io/packages/source/p/pep8-naming/pep8-naming-0.10.0.tar.gz"
- extends('python', ignore='bin/(flake8|pyflakes|pycodestyle)')
- version('0.7.0', sha256='624258e0dd06ef32a9daf3c36cc925ff7314da7233209c5b01f7e5cdd3c34826')
+ version('0.10.0', sha256='f3b4a5f9dd72b991bf7d8e2a341d2e1aa3a884a769b5aaac4f56825c1763bf3a')
+ version('0.7.0', sha256='624258e0dd06ef32a9daf3c36cc925ff7314da7233209c5b01f7e5cdd3c34826')
- depends_on('py-flake8-polyfill', type='run')
+ depends_on('py-setuptools', type='build')
+ depends_on('py-flake8-polyfill@1.0.2:1.999', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-petastorm/package.py b/var/spack/repos/builtin/packages/py-petastorm/package.py
new file mode 100644
index 0000000000..2c6cc5e34f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-petastorm/package.py
@@ -0,0 +1,30 @@
+# Copyright 2013-2020 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)
+
+
+class PyPetastorm(PythonPackage):
+ """Petastorm is a library enabling the use of Parquet storage from
+ Tensorflow, Pytorch, and other Python-based ML training frameworks."""
+
+ homepage = "https://github.com/uber/petastorm"
+ url = "https://pypi.io/packages/source/p/petastorm/petastorm-0.8.2.tar.gz"
+
+ maintainers = ['adamjstewart']
+
+ version('0.8.2', sha256='7782c315e1ee8d15c7741e3eea41e77b9efce661cf58aa0220a801db64f52f91')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-dill@0.2.1:', type=('build', 'run'))
+ depends_on('py-diskcache@3.0.0:', type=('build', 'run'))
+ depends_on('py-future@0.10.2:', type=('build', 'run'))
+ depends_on('py-futures@2.0:', type=('build', 'run'), when='^python@:2')
+ depends_on('py-numpy@1.13.3:', type=('build', 'run'))
+ depends_on('py-packaging@15.0:', type=('build', 'run'))
+ depends_on('py-pandas@0.19.0:', type=('build', 'run'))
+ depends_on('py-psutil@4.0.0:', type=('build', 'run'))
+ depends_on('py-pyspark@2.1.0:', type=('build', 'run'))
+ depends_on('py-pyzmq@14.0.0:', type=('build', 'run'))
+ depends_on('py-pyarrow@0.12.0:', type=('build', 'run'))
+ depends_on('py-six@1.5.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py
index cd14745f36..54653f9b68 100644
--- a/var/spack/repos/builtin/packages/py-petsc4py/package.py
+++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py
@@ -17,6 +17,7 @@ class PyPetsc4py(PythonPackage):
maintainers = ['dalcinl', 'balay']
version('develop', branch='master')
+ version('3.13.0', sha256='fd41d9c399f8a110f33b62c46ece776755113116bf42d4984053ea3a52a3efae')
version('3.12.0', sha256='1ddffc35163ec81de50ca43b8a82fdbe73baf02d9e24d594685d5f4a6c17a8cb')
version('3.11.0', sha256='50a7bbca76000da287d5b18969ddf4743b360bda1f6ee3b43b5829095569cc46')
version('3.10.1', sha256='4eae5eaf459875b1329cae36fa1e5e185f603e8b01a4e05b59b0983c02b5a174')
@@ -35,6 +36,7 @@ class PyPetsc4py(PythonPackage):
depends_on('petsc+mpi')
depends_on('petsc@develop+mpi', when='@develop')
+ depends_on('petsc@3.13:3.13.99+mpi', when='@3.13:3.13.99')
depends_on('petsc@3.12:3.12.99+mpi', when='@3.12:3.12.99')
depends_on('petsc@3.11:3.11.99+mpi', when='@3.11:3.11.99')
depends_on('petsc@3.10.3:3.10.99+mpi', when='@3.10.1:3.10.99')
diff --git a/var/spack/repos/builtin/packages/py-pomegranate/package.py b/var/spack/repos/builtin/packages/py-pomegranate/package.py
new file mode 100644
index 0000000000..91085ba554
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pomegranate/package.py
@@ -0,0 +1,23 @@
+# Copyright 2013-2020 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 PyPomegranate(PythonPackage):
+ """Fast, flexible and easy to use probabilistic modelling in Python."""
+
+ homepage = "https://github.com/jmschrei/pomegranate"
+ url = "https://pypi.io/packages/source/p/pomegranate/pomegranate-0.12.0.tar.gz"
+
+ version('0.12.0', sha256='8b00c88f7cf9cad8d38ea00ea5274821376fefb217a1128afe6b1fcac54c975a')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-cython@0.22.1:', type='build')
+ depends_on('py-numpy@1.8.0:', type=('build', 'run'))
+ depends_on('py-joblib@0.9.0b4:', type=('build', 'run'))
+ depends_on('py-networkx@2.0:', type=('build', 'run'))
+ depends_on('py-scipy@0.17.0:', type=('build', 'run'))
+ depends_on('py-pyyaml', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-portalocker/package.py b/var/spack/repos/builtin/packages/py-portalocker/package.py
new file mode 100644
index 0000000000..f4aa514550
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-portalocker/package.py
@@ -0,0 +1,18 @@
+# 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 PyPortalocker(PythonPackage):
+ """Portalocker is a library to provide an easy API to file
+ locking."""
+
+ homepage = "https://github.com/WoLpH/portalocker"
+ url = "https://github.com/WoLpH/portalocker/archive/v1.6.0.tar.gz"
+
+ version('1.6.0', sha256='084ff315ccb9fb38a7c06155d409da5df29647da7c6d2bc2b24637f9f79001ff')
+
+ depends_on('py-setuptools@38.3.0:', type='build')
diff --git a/var/spack/repos/builtin/packages/py-progress/package.py b/var/spack/repos/builtin/packages/py-progress/package.py
index 3ae16e5e59..cff57e9f77 100644
--- a/var/spack/repos/builtin/packages/py-progress/package.py
+++ b/var/spack/repos/builtin/packages/py-progress/package.py
@@ -10,7 +10,7 @@ class PyProgress(PythonPackage):
"""Easy progress reporting for Python"""
homepage = "https://github.com/verigak/progress/"
- url = "https://pypi.org/packages/source/p/progress/progress-1.4.tar.gz"
+ url = "https://pypi.io/packages/source/p/progress/progress-1.4.tar.gz"
version('1.4', sha256='5e2f9da88ed8236a76fffbee3ceefd259589cf42dfbc2cec2877102189fae58a')
diff --git a/var/spack/repos/builtin/packages/py-progressbar2/package.py b/var/spack/repos/builtin/packages/py-progressbar2/package.py
index 31f2688a57..196d303591 100644
--- a/var/spack/repos/builtin/packages/py-progressbar2/package.py
+++ b/var/spack/repos/builtin/packages/py-progressbar2/package.py
@@ -11,10 +11,11 @@ class PyProgressbar2(PythonPackage):
"""A progress bar for Python 2 and Python 3"""
homepage = "https://github.com/WoLpH/python-progressbar"
- url = "https://files.pythonhosted.org/packages/source/p/progressbar2/progressbar2-3.39.3.tar.gz"
+ url = "https://pypi.io/packages/source/p/progressbar2/progressbar2-3.50.1.tar.gz"
+ version('3.50.1', sha256='2c21c14482016162852c8265da03886c2b4dea6f84e5a817ad9b39f6bd82a772')
version('3.39.3', sha256='8e5b5419e04193bb7c3fea71579937bbbcd64c26472b929718c2fe7ec420fe39')
depends_on('py-setuptools', type='build')
depends_on('py-six', type=('build', 'run'))
- depends_on('py-python-utils', type=('build', 'run'))
+ depends_on('py-python-utils@2.3.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-py2neo/package.py b/var/spack/repos/builtin/packages/py-py2neo/package.py
index ef4ed46cd5..69e98d7b0b 100644
--- a/var/spack/repos/builtin/packages/py-py2neo/package.py
+++ b/var/spack/repos/builtin/packages/py-py2neo/package.py
@@ -11,12 +11,22 @@ class PyPy2neo(PythonPackage):
within Python applications and from the command line."""
homepage = "http://py2neo.org/"
- url = "https://github.com/nigelsmall/py2neo/archive/py2neo-2.0.8.tar.gz"
+ url = "https://pypi.io/packages/source/p/py2neo/py2neo-2.0.8.tar.gz"
- version('2.0.8', sha256='57b4a1c4aa800e03904b2adfd7c8ec467b072bae2d24baf150fd580916255f2e')
- version('2.0.7', sha256='aa7c86fec70823111d2f932cb20a978889f1c47c2f58461309f644ecb9a22204')
- version('2.0.6', sha256='bcf00ebc82a80c7e2da00288e8f90f81682abfc991e19d92d21726c2deac823f')
- version('2.0.5', sha256='024b42261b06e5e2c92a1f24e62398847f090862005add0b5c69a79a7e1e87b5')
- version('2.0.4', sha256='19074b7b892f2e989f39eae21fc59b26a05e1a820adad8aa58bc470b70d9056d')
+ version('4.3.0', sha256='a218ccb4b636e3850faa6b74ebad80f00600217172a57f745cf223d38a219222')
+ version('2.0.8', sha256='06167f5a91a0d9b9b73431baacd876f2d507650a681fdce1fcf3b383a9b991c1')
+ version('2.0.7', sha256='9b154053eb93c7f5fb3ebd48b6a5b99df450d3f2e9c6682153c6f8d59369378c')
+ version('2.0.6', sha256='6bb828d6d3e48b4d095b3f7d79dbb690a47633f0a9812eb62f141b042bab3186')
+ version('2.0.5', sha256='2c04d4223d2d356c4800c586f30c048757334f9391553c852c29aebf2368d101')
+ version('2.0.4', sha256='727726b87268ca1e929191b960a5473409e5bd81559ee83a304951104bb6b866')
depends_on("py-setuptools", type='build')
+ depends_on("py-certifi", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-click@7.0", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-colorama", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-neobolt@1.7.12:1.7.999", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-neotime@1.7.4:1.7.999", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-prompt-toolkit@2.0.7:2.0.999", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-pygments@2.3.1:2.3.999", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-pytz", type=('build', 'run'), when='@4.3.0:')
+ depends_on("py-urllib3@1.23:1.24", type=('build', 'run'), when='@4.3.0:')
diff --git a/var/spack/repos/builtin/packages/py-pyarrow/package.py b/var/spack/repos/builtin/packages/py-pyarrow/package.py
index ed10482145..4daa0e0061 100644
--- a/var/spack/repos/builtin/packages/py-pyarrow/package.py
+++ b/var/spack/repos/builtin/packages/py-pyarrow/package.py
@@ -13,7 +13,7 @@ class PyPyarrow(PythonPackage):
"""
homepage = "http://arrow.apache.org"
- url = 'https://pypi.org/packages/source/p/pyarrow/pyarrow-0.15.1.tar.gz'
+ url = 'https://pypi.io/packages/source/p/pyarrow/pyarrow-0.15.1.tar.gz'
version('0.15.1', sha256='7ad074690ba38313067bf3bbda1258966d38e2037c035d08b9ffe3cce07747a5')
version('0.12.1', sha256='10db6e486c918c3af999d0114a22d92770687e3a6607ea3f14e6748854824c2a')
diff --git a/var/spack/repos/builtin/packages/py-pybind11/package.py b/var/spack/repos/builtin/packages/py-pybind11/package.py
index cda6cada32..3fe7402a0f 100644
--- a/var/spack/repos/builtin/packages/py-pybind11/package.py
+++ b/var/spack/repos/builtin/packages/py-pybind11/package.py
@@ -4,6 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
+import os
class PyPybind11(CMakePackage):
@@ -23,6 +24,7 @@ class PyPybind11(CMakePackage):
maintainers = ['ax3l']
version('master', branch='master')
+ version('2.5.0', sha256='97504db65640570f32d3fdf701c25a340c8643037c3b69aec469c10c93dc8504')
version('2.4.3', sha256='1eed57bc6863190e35637290f97a20c81cfe4d9090ac0a24f3bbf08f265eb71d')
version('2.3.0', sha256='0f34838f2c8024a6765168227ba587b3687729ebf03dc912f88ff75c7aa9cfe8')
version('2.2.4', sha256='b69e83658513215b8d1443544d0549b7d231b9f201f6fc787a2b2218b408181e')
@@ -56,6 +58,8 @@ class PyPybind11(CMakePackage):
def setup_build_environment(self, env):
env.set('PYBIND11_USE_CMAKE', 1)
+ # https://github.com/pybind/pybind11/pull/1995
+ @when('@:2.4.99')
def patch(self):
""" see https://github.com/spack/spack/issues/13559 """
filter_file('import sys',
@@ -74,9 +78,11 @@ class PyPybind11(CMakePackage):
with working_dir('spack-test', create=True):
# test include helper points to right location
python = self.spec['python'].command
- inc = python(
+ py_inc = python(
'-c',
'import pybind11 as py; ' +
self.spec['python'].package.print_string('py.get_include()'),
- output=str)
- assert inc.strip() == str(self.prefix.include)
+ output=str).strip()
+ for inc in [py_inc, self.prefix.include]:
+ inc_file = join_path(inc, 'pybind11', 'pybind11.h')
+ assert os.path.isfile(inc_file)
diff --git a/var/spack/repos/builtin/packages/py-pycairo/package.py b/var/spack/repos/builtin/packages/py-pycairo/package.py
index 7a373609cd..a8838cfa19 100644
--- a/var/spack/repos/builtin/packages/py-pycairo/package.py
+++ b/var/spack/repos/builtin/packages/py-pycairo/package.py
@@ -11,14 +11,16 @@ class PyPycairo(PythonPackage):
"""Pycairo is a set of Python bindings for the cairo graphics library."""
homepage = "https://www.cairographics.org/pycairo/"
- url = "https://github.com/pygobject/pycairo/releases/download/v1.17.1/pycairo-1.17.1.tar.gz"
- url = "https://files.pythonhosted.org/packages/68/76/340ff847897296b2c8174dfa5a5ec3406e3ed783a2abac918cf326abad86/pycairo-1.17.1.tar.gz"
+ url = "https://pypi.io/packages/source/p/pycairo/pycairo-1.17.1.tar.gz"
+ version('1.18.1', sha256='70172e58b6bad7572a3518c26729b074acdde15e6fee6cbab6d3528ad552b786')
version('1.17.1', sha256='0f0a35ec923d87bc495f6753b1e540fd046d95db56a35250c44089fbce03b698')
- depends_on('cairo@1.2.0:')
+ depends_on('cairo@1.13.1:')
depends_on('pkgconfig', type='build')
depends_on('py-setuptools', type='build')
+ depends_on('python@2.7:2.8,3.3:', when='@:1.17.1', type=('build', 'run'))
+ depends_on('python@2.7:2.8,3.4:', when='@1.18.1:', type=('build', 'run'))
@run_after('install')
def post_install(self):
diff --git a/var/spack/repos/builtin/packages/py-pycifrw/package.py b/var/spack/repos/builtin/packages/py-pycifrw/package.py
new file mode 100644
index 0000000000..c16a3b2894
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pycifrw/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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 PyPycifrw(PythonPackage):
+ """Python library for interacting with Crystallographic Information
+ Framework (CIF) files."""
+
+ homepage = "https://bitbucket.org/jamesrhester/pycifrw/src/development/"
+ url = "https://pypi.io/packages/source/P/PyCifRW/PyCifRW-4.4.1.tar.gz"
+
+ version('4.4.1', sha256='cef7662f475e0eb78a55c2d55774d474e888c96b0539e5f08550afa902cdc4e1')
+
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pycosat/package.py b/var/spack/repos/builtin/packages/py-pycosat/package.py
new file mode 100644
index 0000000000..ac10891cef
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pycosat/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 PyPycosat(PythonPackage):
+ """PicoSAT is a popular SAT solver written by Armin Biere in pure C. This
+ package provides efficient Python bindings to picosat on the C level, i.e.
+ when importing pycosat, the picosat solver becomes part of the Python
+ process itself. For ease of deployment, the picosat source (namely
+ picosat.c and picosat.h) is included in this project. These files have been
+ extracted from the picosat source (picosat-965.tar.gz)."""
+
+ homepage = "https://github.com/ContinuumIO/pycosat"
+ url = "https://pypi.io/packages/source/p/pycosat/pycosat-0.6.3.zip"
+
+ version('0.6.3', sha256='4c99874946a7e939bb941bbb019dd2c20e6068e3107c91366e7779c69d70e0ed')
diff --git a/var/spack/repos/builtin/packages/py-pydeps/package.py b/var/spack/repos/builtin/packages/py-pydeps/package.py
new file mode 100644
index 0000000000..65eafb46cd
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pydeps/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 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)
+
+
+class PyPydeps(PythonPackage):
+ """Python module dependency visualization."""
+
+ homepage = "https://pypi.python.org/project/pydeps"
+ url = "https://pypi.io/packages/source/p/pydeps/pydeps-1.7.1.tar.gz"
+
+ version('1.9.0', sha256='ba9b8c7d72cb4dfd3f4dd6b8a250c240d15824850a415fd428f2660ed371361f')
+ version('1.7.1', sha256='7eeb8d0ec2713befe81dd0d15eac540e843b1daae13613df1c572528552d6340')
+
+ depends_on('py-setuptools', type=('build', 'run'))
+ depends_on('py-enum34', type=('build', 'run'), when='^python@:3.3.99')
+ depends_on('py-stdlib-list', type=('build', 'run'))
+ depends_on('py-pyyaml', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pyelftools/package.py b/var/spack/repos/builtin/packages/py-pyelftools/package.py
index a69d0a2e7e..0607560e0b 100644
--- a/var/spack/repos/builtin/packages/py-pyelftools/package.py
+++ b/var/spack/repos/builtin/packages/py-pyelftools/package.py
@@ -10,6 +10,9 @@ class PyPyelftools(PythonPackage):
"""A pure-Python library for parsing and analyzing ELF files and DWARF
debugging information"""
homepage = "https://pypi.python.org/pypi/pyelftools"
- url = "https://pypi.io/packages/source/p/pyelftools/pyelftools-0.23.tar.gz"
+ url = "https://pypi.io/packages/source/p/pyelftools/pyelftools-0.26.tar.gz"
+ version('0.26', sha256='86ac6cee19f6c945e8dedf78c6ee74f1112bd14da5a658d8c9d4103aed5756a2')
version('0.23', sha256='fc57aadd096e8f9b9b03f1a9578f673ee645e1513a5ff0192ef439e77eab21de')
+
+ depends_on('py-setuptools', when='@0.25:', type='build')
diff --git a/var/spack/repos/builtin/packages/py-pyface/package.py b/var/spack/repos/builtin/packages/py-pyface/package.py
new file mode 100644
index 0000000000..197e3d9ab2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pyface/package.py
@@ -0,0 +1,33 @@
+# Copyright 2013-2020 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)
+
+
+class PyPyface(PythonPackage):
+ """The pyface project contains a toolkit-independent GUI abstraction layer,
+ which is used to support the "visualization" features of the Traits
+ package. Thus, you can write code in terms of the Traits API (views, items,
+ editors, etc.), and let pyface and your selected toolkit and back-end take
+ care of the details of displaying them."""
+
+ homepage = "https://docs.enthought.com/pyface"
+ url = "https://pypi.io/packages/source/p/pyface/pyface-6.1.2.tar.gz"
+
+ version('6.1.2', sha256='7c2ac3d5cbec85e8504b3b0b63e9307be12c6d710b46bae372ce6562d41f4fbc')
+
+ variant('backend', default='pyqt5', description='Default backend',
+ values=('wx', 'pyqt', 'pyqt5', 'pyside'), multi=False)
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-traits', type=('build', 'run'))
+
+ # Backends
+ depends_on('py-wxpython@2.8.10:', when='backend=wx', type=('build', 'run'))
+ depends_on('py-numpy', when='backend=wx', type=('build', 'run'))
+ depends_on('py-pyqt4@4.10:', when='backend=pyqt', type=('build', 'run'))
+ depends_on('py-pygments', when='backend=pyqt', type=('build', 'run'))
+ depends_on('py-pyqt5@5:', when='backend=pyqt5', type=('build', 'run'))
+ depends_on('py-pygments', when='backend=pyqt5', type=('build', 'run'))
+ depends_on('py-pyside@1.2:', when='backend=pyside', type=('build', 'run'))
+ depends_on('py-pygments', when='backend=pyside', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pyfftw/package.py b/var/spack/repos/builtin/packages/py-pyfftw/package.py
index f021516857..41d9db5b74 100644
--- a/var/spack/repos/builtin/packages/py-pyfftw/package.py
+++ b/var/spack/repos/builtin/packages/py-pyfftw/package.py
@@ -13,11 +13,12 @@ class PyPyfftw(PythonPackage):
homepage = "http://hgomersall.github.com/pyFFTW"
url = "https://pypi.io/packages/source/p/pyFFTW/pyFFTW-0.10.4.tar.gz"
+ version('0.12.0', sha256='60988e823ca75808a26fd79d88dbae1de3699e72a293f812aa4534f8a0a58cb0')
version('0.11.1', sha256='05ea28dede4c3aaaf5c66f56eb0f71849d0d50f5bc0f53ca0ffa69534af14926')
version('0.10.4', sha256='739b436b7c0aeddf99a48749380260364d2dc027cf1d5f63dafb5f50068ede1a')
depends_on('fftw')
- depends_on('py-setuptools', type='build')
- depends_on('py-cython', type='build')
- depends_on('py-numpy@1.6:', type=('build', 'run'))
- depends_on('py-scipy@0.12.0:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-cython@0.29:0.999', type='build')
+ depends_on('py-numpy@1.6:', type=('build', 'run'), when='@:0.10.4')
+ depends_on('py-numpy@1.10:1.999', type=('build', 'run'), when='@0.11.0:')
diff --git a/var/spack/repos/builtin/packages/py-pyfits/package.py b/var/spack/repos/builtin/packages/py-pyfits/package.py
new file mode 100644
index 0000000000..f013175d33
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pyfits/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 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 PyPyfits(PythonPackage):
+ """The PyFITS module is a Python library providing access to
+ FITS(Flexible Image Transport System) files."""
+
+ homepage = "https://github.com/spacetelescope/pyfits"
+ url = "https://github.com/spacetelescope/PyFITS/archive/3.5.tar.gz"
+
+ version('3.5', sha256='fd32596ee09170a70ddc87d0dfc5503d860ef6b68abcff486d7aa6993dff6162')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-numpy', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pygdal/package.py b/var/spack/repos/builtin/packages/py-pygdal/package.py
index 2374e9cb19..403e020043 100644
--- a/var/spack/repos/builtin/packages/py-pygdal/package.py
+++ b/var/spack/repos/builtin/packages/py-pygdal/package.py
@@ -20,6 +20,7 @@ class PyPygdal(PythonPackage):
homepage = "https://github.com/nextgis/pygdal"
url = "https://pypi.io/packages/source/p/pygdal/pygdal-3.0.1.5.tar.gz"
+ version('3.0.4.6', sha256='8e39b58cd9465bb5f41786a7cf6a62df93334c104db05a5bfb8181a0be276b86')
version('3.0.1.5', sha256='1222f69fe5e6b632d0d2a42d3acb8fac80fb4577c05e01969d8cd5548192ccaa')
version('2.4.2.5', sha256='73386683c0b10ab43b6d64257fca2ba812f53ec61b268de8811565fd9ae9bacd')
version('2.4.1.6', sha256='5d1af98ad09f59e34e3b332cf20630b532b33c7120295aaaabbccebf58a11aa4')
@@ -29,6 +30,7 @@ class PyPygdal(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-numpy@1.0.0:', type=('build', 'run'))
+ depends_on('gdal@3.0.4', type=('build', 'link', 'run'), when='@3.0.4.6')
depends_on('gdal@3.0.1', type=('build', 'link', 'run'), when='@3.0.1.5')
depends_on('gdal@2.4.2', type=('build', 'link', 'run'), when='@2.4.2.5')
depends_on('gdal@2.4.1', type=('build', 'link', 'run'), when='@2.4.1.6')
diff --git a/var/spack/repos/builtin/packages/py-pymc3/package.py b/var/spack/repos/builtin/packages/py-pymc3/package.py
new file mode 100644
index 0000000000..5f4fbce9a6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pymc3/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 PyPymc3(PythonPackage):
+ """PyMC3 is a Python package for Bayesian statistical modeling and
+ Probabilistic Machine Learning focusing on advanced Markov chain Monte
+ Carlo (MCMC) and variational inference (VI) algorithms. Its flexibility and
+ extensibility make it applicable to a large suite of problems."""
+
+ homepage = "http://github.com/pymc-devs/pymc3"
+ url = "https://pypi.io/packages/source/p/pymc3/pymc3-3.8.tar.gz"
+
+ version('3.8', sha256='1bb2915e4a29877c681ead13932b0b7d276f7f496e9c3f09ba96b977c99caf00')
+
+ depends_on('python@3.5.4:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-arviz@0.4.1:', type=('build', 'run'))
+ depends_on('py-theano@1.0.4:', type=('build', 'run'))
+ depends_on('py-numpy@1.13.0:', type=('build', 'run'))
+ depends_on('py-scipy@0.18.1:', type=('build', 'run'))
+ depends_on('py-pandas@0.18.0:', type=('build', 'run'))
+ depends_on('py-patsy@0.4.0:', type=('build', 'run'))
+ depends_on('py-tqdm@4.8.4:', type=('build', 'run'))
+ depends_on('py-h5py@2.7.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pyqt4/package.py b/var/spack/repos/builtin/packages/py-pyqt4/package.py
index c0e3ae1085..6c5af83cb2 100644
--- a/var/spack/repos/builtin/packages/py-pyqt4/package.py
+++ b/var/spack/repos/builtin/packages/py-pyqt4/package.py
@@ -4,7 +4,6 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
-import os
class PyPyqt4(SIPPackage):
@@ -29,19 +28,12 @@ class PyPyqt4(SIPPackage):
version('4.11.3', sha256='853780dcdbe2e6ba785d703d059b096e1fc49369d3e8d41a060be874b8745686',
url='http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.3/PyQt-x11-gpl-4.11.3.tar.gz')
- variant('qsci', default=False, description='Build with QScintilla python bindings')
+ # API files can be installed regardless if QScintilla is installed or not
+ variant('qsci_api', default=False, description='Install PyQt API file for QScintilla')
# Supposedly can also be built with Qt 5 compatibility layer
depends_on('qt@:4')
- depends_on('qscintilla', when='+qsci')
-
- # For building Qscintilla python bindings
- resource(name='qscintilla',
- url='https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.10.2/QScintilla_gpl-2.10.2.tar.gz',
- sha256='14b31d20717eed95ea9bea4cd16e5e1b72cee7ebac647cba878e0f6db6a65ed0',
- destination='spack-resource-qscintilla',
- when='^qscintilla@2.10.2'
- )
+ depends_on('py-sip module=PyQt4.sip')
# https://www.riverbankcomputing.com/static/Docs/PyQt4/installation.html
def configure_file(self):
@@ -53,49 +45,7 @@ class PyPyqt4(SIPPackage):
'--sipdir', self.prefix.share.sip.PyQt4,
'--stubsdir', join_path(site_packages_dir, 'PyQt4')
]
- if '+qsci' in self.spec:
- args.extend(['--qsci-api-destdir', self.prefix.share.qsci])
+ if '+qsci_api' in self.spec:
+ args.extend(['--qsci-api',
+ '--qsci-api-destdir', self.prefix.share.qsci])
return args
-
- @run_after('install')
- def make_qsci(self):
- if '+qsci' in self.spec:
- rsrc_py_path = os.path.join(
- self.stage.source_path,
- 'spack-resource-qscintilla/QScintilla_gpl-' +
- str(self.spec['qscintilla'].version), 'Python')
- with working_dir(rsrc_py_path):
- pydir = join_path(site_packages_dir, 'PyQt4')
- python = self.spec['python'].command
- python('configure.py',
- '--sip=' + self.prefix.bin.sip,
- '--qsci-incdir=' +
- self.spec['qscintilla'].prefix.include,
- '--qsci-libdir=' + self.spec['qscintilla'].prefix.lib,
- '--qsci-sipdir=' + self.prefix.share.sip.PyQt4,
- '--apidir=' + self.prefix.share.qsci,
- '--destdir=' + pydir,
- '--pyqt-sipdir=' + self.prefix.share.sip.PyQt4,
- '--sip-incdir=' + python_include_dir,
- '--stubsdir=' + pydir)
-
- # Fix build errors
- # "QAbstractScrollArea: No such file or directory"
- # "qprinter.h: No such file or directory"
- # ".../Qsci.so: undefined symbol: _ZTI10Qsci...."
- qscipro = FileFilter('Qsci/Qsci.pro')
- link_qscilibs = 'LIBS += -L' + self.prefix.lib +\
- ' -lqscintilla2_qt4'
- qscipro.filter('TEMPLATE = lib',
- 'TEMPLATE = lib\nQT += widgets' +
- '\nQT += printsupport\n' + link_qscilibs)
-
- make()
-
- # Fix installation prefixes
- makefile = FileFilter('Makefile')
- makefile.filter(r'\$\(INSTALL_ROOT\)', '')
- makefile = FileFilter('Qsci/Makefile')
- makefile.filter(r'\$\(INSTALL_ROOT\)', '')
-
- make('install')
diff --git a/var/spack/repos/builtin/packages/py-pyqt5/package.py b/var/spack/repos/builtin/packages/py-pyqt5/package.py
index f70461a1b7..e26c66a891 100644
--- a/var/spack/repos/builtin/packages/py-pyqt5/package.py
+++ b/var/spack/repos/builtin/packages/py-pyqt5/package.py
@@ -4,7 +4,6 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
-import os
class PyPyqt5(SIPPackage):
@@ -26,77 +25,32 @@ class PyPyqt5(SIPPackage):
'PyQt5.QtXmlPatterns'
]
+ version('5.13.1', sha256='54b7f456341b89eeb3930e786837762ea67f235e886512496c4152ebe106d4af')
version('5.13.0', sha256='0cdbffe5135926527b61cc3692dd301cd0328dd87eeaf1313e610787c46faff9')
version('5.12.3', sha256='0db0fa37debab147450f9e052286f7a530404e2aaddc438e97a7dcdf56292110')
- variant('qsci', default=False, description='Build with QScintilla python bindings')
+ # API files can be installed regardless if Qscintilla is installed or not
+ variant('qsci_api', default=False, description='Install PyQt API file for QScintilla')
# Without opengl support, I got the following error:
# sip: QOpenGLFramebufferObject is undefined
depends_on('qt@5:+opengl')
depends_on('python@2.6:', type=('build', 'run'))
depends_on('py-enum34', type=('build', 'run'), when='^python@:3.3')
-
- depends_on('qscintilla', when='+qsci')
-
- # For building Qscintilla python bindings
- resource(name='qscintilla',
- url='https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.10.2/QScintilla_gpl-2.10.2.tar.gz',
- sha256='14b31d20717eed95ea9bea4cd16e5e1b72cee7ebac647cba878e0f6db6a65ed0',
- destination='spack-resource-qscintilla',
- when='^qscintilla@2.10.2'
- )
+ depends_on('py-sip module=PyQt5.sip', type=('build', 'run'))
+ depends_on('py-sip@:4.19.18 module=PyQt5.sip', type=('build', 'run'), when='@:5.13.0')
# https://www.riverbankcomputing.com/static/Docs/PyQt5/installation.html
def configure_args(self):
args = [
'--pyuic5-interpreter', self.spec['python'].command.path,
'--sipdir', self.prefix.share.sip.PyQt5,
- '--stubsdir', join_path(site_packages_dir, 'PyQt5'),
+ '--stubsdir', join_path(
+ self.prefix,
+ self.spec['python'].package.site_packages_dir,
+ 'PyQt5'),
]
- if '+qsci' in self.spec:
- args.extend(['--qsci-api-destdir', self.prefix.share.qsci])
+ if '+qsci_api' in self.spec:
+ args.extend(['--qsci-api',
+ '--qsci-api-destdir', self.prefix.share.qsci])
return args
-
- @run_after('install')
- def make_qsci(self):
- if '+qsci' in self.spec:
- rsrc_py_path = os.path.join(
- self.stage.source_path,
- 'spack-resource-qscintilla/QScintilla_gpl-' +
- str(self.spec['qscintilla'].version), 'Python')
- with working_dir(rsrc_py_path):
- pydir = join_path(site_packages_dir, 'PyQt5')
- python = self.spec['python'].command
- python('configure.py', '--pyqt=PyQt5',
- '--sip=' + self.prefix.bin.sip,
- '--qsci-incdir=' +
- self.spec['qscintilla'].prefix.include,
- '--qsci-libdir=' + self.spec['qscintilla'].prefix.lib,
- '--qsci-sipdir=' + self.prefix.share.sip.PyQt5,
- '--apidir=' + self.prefix.share.qsci,
- '--destdir=' + pydir,
- '--pyqt-sipdir=' + self.prefix.share.sip.PyQt5,
- '--sip-incdir=' + python_include_dir,
- '--stubsdir=' + pydir)
-
- # Fix build errors
- # "QAbstractScrollArea: No such file or directory"
- # "qprinter.h: No such file or directory"
- # ".../Qsci.so: undefined symbol: _ZTI10Qsci...."
- qscipro = FileFilter('Qsci/Qsci.pro')
- link_qscilibs = 'LIBS += -L' + self.prefix.lib +\
- ' -lqscintilla2_qt5'
- qscipro.filter('TEMPLATE = lib',
- 'TEMPLATE = lib\nQT += widgets' +
- '\nQT += printsupport\n' + link_qscilibs)
-
- make()
-
- # Fix installation prefixes
- makefile = FileFilter('Makefile')
- makefile.filter(r'\$\(INSTALL_ROOT\)', '')
- makefile = FileFilter('Qsci/Makefile')
- makefile.filter(r'\$\(INSTALL_ROOT\)', '')
-
- make('install')
diff --git a/var/spack/repos/builtin/packages/py-pyspark/package.py b/var/spack/repos/builtin/packages/py-pyspark/package.py
index 15285d3c30..7a7cf1d286 100644
--- a/var/spack/repos/builtin/packages/py-pyspark/package.py
+++ b/var/spack/repos/builtin/packages/py-pyspark/package.py
@@ -10,7 +10,7 @@ class PyPyspark(PythonPackage):
"""Python bindings for Apache Spark"""
homepage = "http://spark.apache.org"
- url = "https://pypi.org/packages/source/p/pyspark/pyspark-2.3.0.tar.gz"
+ url = "https://pypi.io/packages/source/p/pyspark/pyspark-2.3.0.tar.gz"
version('2.3.0', sha256='0b3536910e154c36a94239f0ba0a201f476aadc72006409e5787198ffd01986e')
diff --git a/var/spack/repos/builtin/packages/py-pytest/package.py b/var/spack/repos/builtin/packages/py-pytest/package.py
index 6b73737b21..85d01c240c 100644
--- a/var/spack/repos/builtin/packages/py-pytest/package.py
+++ b/var/spack/repos/builtin/packages/py-pytest/package.py
@@ -16,6 +16,7 @@ class PyPytest(PythonPackage):
version('5.2.1', sha256='ca563435f4941d0cb34767301c27bc65c510cb82e90b9ecf9cb52dc2c63caaa0')
version('5.1.1', sha256='c3d5020755f70c82eceda3feaf556af9a341334414a8eca521a18f463bcead88')
+ version('4.6.9', sha256='19e8f75eac01dd3f211edd465b39efbcbdc8fc5f7866d7dd49fedb30d8adf339')
version('4.6.5', sha256='8fc39199bdda3d9d025d3b1f4eb99a192c20828030ea7c9a0d2840721de7d347')
version('4.6.2', sha256='bea27a646a3d74cbbcf8d3d4a06b2dfc336baf3dc2cc85cf70ad0157e73e8322')
version('4.3.0', sha256='067a1d4bf827ffdd56ad21bd46674703fce77c5957f6c1eef731f6146bfcef1c')
@@ -46,7 +47,7 @@ class PyPytest(PythonPackage):
depends_on('py-attrs@17.2.0:', when='@3.3:3.4', type=('build', 'run'))
depends_on('py-attrs@17.4.0:', when='@3.5:', type=('build', 'run'))
depends_on('py-more-itertools@4.0.0:', when='@3.5.1:', type=('build', 'run'))
- depends_on('py-more-itertools@4.0.0:6.0.0', when='@4.2.1:4.6.5 ^python@:2', type=('build', 'run'))
+ depends_on('py-more-itertools@4.0.0:6.0.0', when='@4.2.1:4.6.9 ^python@:2', type=('build', 'run'))
depends_on('py-atomicwrites@1.0:', when='@3.6:', type=('build', 'run'))
depends_on('py-pluggy@0.12:0.999', when='@4.6:', type=('build', 'run'))
depends_on('py-pluggy@0.9.0:0.9.999,0.11:0.999', when='@4.5.0:4.5.999', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-pythia/package.py b/var/spack/repos/builtin/packages/py-pythia/package.py
deleted file mode 100644
index 721d7470fa..0000000000
--- a/var/spack/repos/builtin/packages/py-pythia/package.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2013-2020 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 PyPythia(PythonPackage):
- """Pythia refers to the Pyre framework and a collection of packages that
- interact with it, such as an interface to the ACIS solid modelling package.
- """
-
- homepage = "https://geodynamics.org/cig/software/pythia/"
- url = "https://geodynamics.org/cig/software/github/pythia/v0.8.1.18/pythia-0.8.1.18.tar.gz"
-
- version('0.8.1.18', sha256='f6025e6d70046dc71e375eded3d731506f8dd79e2e53b7e1436754439dcdef1e')
-
- depends_on('python@:2', type=('build', 'run'))
- depends_on('py-merlin', type='build')
diff --git a/var/spack/repos/builtin/packages/py-python-lzo/package.py b/var/spack/repos/builtin/packages/py-python-lzo/package.py
new file mode 100644
index 0000000000..acf60351b7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-python-lzo/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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 PyPythonLzo(PythonPackage):
+ """This module provides Python bindings for the LZO data compression
+ library."""
+
+ homepage = "https://github.com/jd-boyd/python-lzo"
+ url = "https://pypi.io/packages/source/p/python-lzo/python-lzo-1.12.tar.gz"
+
+ version('1.12', sha256='97a8e46825e8f1abd84c2a3372bc09adae9745a5be5d3af2692cd850dac35345')
+
+ depends_on('lzo')
diff --git a/var/spack/repos/builtin/packages/py-python-swiftclient/package.py b/var/spack/repos/builtin/packages/py-python-swiftclient/package.py
new file mode 100644
index 0000000000..bd8f766624
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-python-swiftclient/package.py
@@ -0,0 +1,29 @@
+# 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 PyPythonSwiftclient(PythonPackage):
+ """This is a python client for the Swift API."""
+
+ homepage = "https://docs.openstack.org/python-swiftclient"
+ url = "https://pypi.io/packages/source/p/python-swiftclient/python-swiftclient-3.9.0.tar.gz"
+
+ maintainers = ['ajkotobi']
+
+ import_modules = ['sys', 'setuptools', 'requests']
+
+ version('3.9.0', sha256='4f2097492e4c76e948882fc859bfa033ade09bed72f8e6b328e34a3467d9a377')
+ version('3.8.1', sha256='3a013303643f77a99befa05582dfb93671e1fba1aed9f4a517418129700aedb8')
+ version('3.8.0', sha256='107a9d5356663365a9f7c0b3a2b55da97a0a9ba7f10da2319b3972481510f33d')
+ version('3.7.1', sha256='06bda5a6f81ea132e5cb52d0eb0616a0ab0958b4ec0d1cb7f850f04bf178852f')
+
+ depends_on('py-setuptools', type=('build', 'run'))
+ depends_on('python@2.7:', type=('build', 'run'))
+ depends_on('py-futures@3:', type=('build', 'run'), when='^python@:2')
+ depends_on('py-requests@1.1.0:', type=('build', 'run'))
+ depends_on('py-six@1.9:', type=('build', 'run'))
+ depends_on('py-pbr', type='build')
diff --git a/var/spack/repos/builtin/packages/py-python-utils/package.py b/var/spack/repos/builtin/packages/py-python-utils/package.py
index bc6057a078..6c8e3aa732 100644
--- a/var/spack/repos/builtin/packages/py-python-utils/package.py
+++ b/var/spack/repos/builtin/packages/py-python-utils/package.py
@@ -12,8 +12,12 @@ class PyPythonUtils(PythonPackage):
which make common patterns shorter and easier."""
homepage = "https://github.com/WoLpH/python-utils"
- url = "https://files.pythonhosted.org/packages/source/p/python-utils/python-utils-2.3.0.tar.gz"
+ url = "https://pypi.io/packages/source/p/python-utils/python-utils-2.4.0.tar.gz"
+ version('2.4.0', sha256='f21fc09ff58ea5ebd1fd2e8ef7f63e39d456336900f26bdc9334a03a3f7d8089')
version('2.3.0', sha256='34aaf26b39b0b86628008f2ae0ac001b30e7986a8d303b61e1357dfcdad4f6d3')
depends_on('py-setuptools', type='build')
+ depends_on('py-six', type=('build', 'run'))
+ depends_on('py-pytest', type='test')
+ depends_on('py-pytest-runner', type='test')
diff --git a/var/spack/repos/builtin/packages/py-pywcs/package.py b/var/spack/repos/builtin/packages/py-pywcs/package.py
new file mode 100644
index 0000000000..dea2adb2d9
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-pywcs/package.py
@@ -0,0 +1,24 @@
+# Copyright 2013-2020 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 PyPywcs(PythonPackage):
+ """pywcs is a set of routines for
+ handling the FITS World Coordinate System (WCS) standard."""
+
+ homepage = "https://github.com/spacetelescope/pywcs"
+ url = "https://github.com/spacetelescope/pywcs/archive/1.12.1.tar.gz"
+
+ version('1.12.1', sha256='efd4e0ea190e3a2521ebcde583452e126acdeac85cc8a9c78c8a96f10805b5e1')
+
+ depends_on('python@2.6:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-d2to1@0.2.3:', type='build')
+ depends_on('py-stsci-distutils@0.3.2:', type='build')
+ depends_on('py-numpy@1.5.1:', type=('build', 'run'))
+ depends_on('py-pyfits@1.4:', type=('build', 'run'))
+ depends_on('py-astropy@0.3.1:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-qtconsole/package.py b/var/spack/repos/builtin/packages/py-qtconsole/package.py
index 9fd8475662..046e04c2e5 100644
--- a/var/spack/repos/builtin/packages/py-qtconsole/package.py
+++ b/var/spack/repos/builtin/packages/py-qtconsole/package.py
@@ -17,7 +17,7 @@ class PyQtconsole(PythonPackage):
variant('doc', default=False, description='Build documentation')
- depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
+ depends_on('python@2.7:2.8,3.3:', type=('build', 'run'))
depends_on('py-ipykernel@4.1:', type=('build', 'run'))
depends_on('py-jupyter-client@4.1:', type=('build', 'run'))
depends_on('py-jupyter-core', type=('build', 'run'))
@@ -25,5 +25,6 @@ class PyQtconsole(PythonPackage):
depends_on('py-traitlets', type=('build', 'run'))
depends_on('py-ipython-genutils', type=('build', 'run'), when='@4.5.1:')
depends_on('py-sphinx@1.3:', type=('build', 'run'), when='+docs')
+ depends_on('py-pyqt5', type='run')
depends_on('py-mock', type='test', when='^python@2.7:2.8')
diff --git a/var/spack/repos/builtin/packages/py-requests-futures/package.py b/var/spack/repos/builtin/packages/py-requests-futures/package.py
index 4c79bcf871..a11d577e1c 100644
--- a/var/spack/repos/builtin/packages/py-requests-futures/package.py
+++ b/var/spack/repos/builtin/packages/py-requests-futures/package.py
@@ -10,7 +10,7 @@ class PyRequestsFutures(PythonPackage):
"""Asynchronous Python HTTP Requests for Humans using Futures"""
homepage = "https://github.com/ross/requests-futures"
- url = "https://pypi.org/packages/source/r/requests-futures/requests-futures-1.0.0.tar.gz"
+ url = "https://pypi.io/packages/source/r/requests-futures/requests-futures-1.0.0.tar.gz"
version('1.0.0', sha256='35547502bf1958044716a03a2f47092a89efe8f9789ab0c4c528d9c9c30bc148')
diff --git a/var/spack/repos/builtin/packages/py-resampy/package.py b/var/spack/repos/builtin/packages/py-resampy/package.py
new file mode 100644
index 0000000000..35249c8acc
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-resampy/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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 PyResampy(PythonPackage):
+ """Efficient sample rate conversion in python"""
+
+ homepage = "https://github.com/bmcfee/resampy"
+ url = "https://pypi.io/packages/source/r/resampy/resampy-0.2.2.tar.gz"
+
+ version('0.2.2', sha256='62af020d8a6674d8117f62320ce9470437bb1d738a5d06cd55591b69b463929e')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-numpy@1.10:', type=('build', 'run'))
+ depends_on('py-scipy@0.13:', type=('build', 'run'))
+ depends_on('py-numba@0.32:', type=('build', 'run'))
+ depends_on('py-six@1.3:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-resultsfile/package.py b/var/spack/repos/builtin/packages/py-resultsfile/package.py
new file mode 100644
index 0000000000..6f00a3ab1d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-resultsfile/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2020 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 PyResultsfile(PythonPackage):
+ """Python module to read output files of quantum chemistry programs"""
+
+ homepage = "https://gitlab.com/scemama/resultsFile"
+ url = "https://gitlab.com/scemama/resultsFile/-/archive/v1.0/resultsFile-v1.0.tar.gz"
+ git = "https://gitlab.com/scemama/resultsFile.git"
+
+ maintainers = ['scemama']
+
+ version('2.0', sha256='2a34208254e4bea155695690437f6a59bf5f7b0ddb421d6c1a2d377510f018f7')
+ version('1.0', sha256='e029054b2727131da9684fa2ec9fb8b6a3225dc7f648216a9390267b2d5d60c3')
+
+ depends_on('python@2.7:2.8.999', type=('build', 'run'), when='@1.0:1.999')
+ depends_on('python@3:', type=('build', 'run'), when='@2.0:')
diff --git a/var/spack/repos/builtin/packages/py-rseqc/package.py b/var/spack/repos/builtin/packages/py-rseqc/package.py
index 1b3ac0a88a..fa9fc581b4 100644
--- a/var/spack/repos/builtin/packages/py-rseqc/package.py
+++ b/var/spack/repos/builtin/packages/py-rseqc/package.py
@@ -14,10 +14,16 @@ class PyRseqc(PythonPackage):
homepage = "http://rseqc.sourceforge.net"
url = "https://pypi.io/packages/source/R/RSeQC/RSeQC-2.6.4.tar.gz"
+ version('3.0.1', sha256='d5f4cb2c24a7348929f5c4947d84c5869e8cd2cba5ba5248d991ebb37c4c6b3d')
version('2.6.4', sha256='e11df661bda1c24fc950f0bce06f586a68ab5f4a2c356f43e4a0dfdc1e184315')
+ depends_on('python@2.7:2.8', type=('build', 'run'), when='@:2')
+ depends_on('python@3.5:', type=('build', 'run'), when='@3:')
depends_on('py-setuptools', type='build')
- depends_on('py-bx-python', type=('build', 'run'))
- depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-pysam', type=('build', 'run'))
- depends_on('r', type=('build', 'run'))
+ depends_on('py-nose@0.10.4:', type='build')
+ depends_on('py-cython@0.17:', type=('build', 'run'))
+ depends_on('py-bx-python', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-pysam', type=('build', 'run'))
+ depends_on('py-pybigwig', type=('build', 'run'), when='@3:')
+ depends_on('r', type='run')
diff --git a/var/spack/repos/builtin/packages/py-sacremoses/package.py b/var/spack/repos/builtin/packages/py-sacremoses/package.py
new file mode 100644
index 0000000000..35166e245c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-sacremoses/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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)
+
+
+class PySacremoses(PythonPackage):
+ """LGPL MosesTokenizer in Python."""
+
+ homepage = "https://github.com/alvations/sacremoses"
+ url = "https://pypi.io/packages/source/s/sacremoses/sacremoses-0.0.39.tar.gz"
+
+ version('0.0.39', sha256='53fad38b93dd5bf1657a68d52bcca5d681d4246477a764b7791a2abd5c7d1f4c')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-regex', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'))
+ depends_on('py-click', type=('build', 'run'))
+ depends_on('py-joblib', type=('build', 'run'))
+ depends_on('py-tqdm', 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 2fc309bbd6..e1e25abd01 100644
--- a/var/spack/repos/builtin/packages/py-scoop/package.py
+++ b/var/spack/repos/builtin/packages/py-scoop/package.py
@@ -13,10 +13,11 @@ class PyScoop(PythonPackage):
environments, from heterogeneous grids to supercomputers."""
homepage = "https://github.com/soravux/scoop"
- url = "https://files.pythonhosted.org/packages/source/s/scoop/scoop-0.7.1.1.tar.gz"
+ url = "https://pypi.io/packages/source/s/scoop/scoop-0.7.1.1.tar.gz"
version('0.7.1.1', sha256='d8b6444c7bac901171e3327a97e241dde63f060354e162a65551fd8083ca62b4')
depends_on('py-setuptools', type='build')
depends_on('py-greenlet@0.3.4:', type=('build', 'run'))
depends_on('py-pyzmq@13.1.0:', type=('build', 'run'))
+ depends_on('py-argparse@1.1:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-sentencepiece/package.py b/var/spack/repos/builtin/packages/py-sentencepiece/package.py
new file mode 100644
index 0000000000..9d9552a47b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-sentencepiece/package.py
@@ -0,0 +1,24 @@
+# Copyright 2013-2020 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)
+
+
+class PySentencepiece(PythonPackage):
+ """Unsupervised text tokenizer for Neural Network-based text generation.
+
+ These are the Python bindings."""
+
+ homepage = "https://github.com/google/sentencepiece/blob/master/python/README.md"
+ url = "https://github.com/google/sentencepiece/archive/v0.1.85.tar.gz"
+
+ maintainers = ['adamjstewart']
+
+ version('0.1.85', sha256='dd4956287a1b6af3cbdbbd499b7227a859a4e3f41c9882de5e6bdd929e219ae6')
+
+ depends_on('sentencepiece')
+ depends_on('sentencepiece@0.1.85', when='@0.1.85')
+ depends_on('pkgconfig', type='build')
+ depends_on('py-setuptools', type='build')
+
+ build_directory = 'python'
diff --git a/var/spack/repos/builtin/packages/py-setproctitle/package.py b/var/spack/repos/builtin/packages/py-setproctitle/package.py
new file mode 100644
index 0000000000..972e595cad
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-setproctitle/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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 PySetproctitle(PythonPackage):
+ """The setproctitle module allows a process to change its title (as
+ displayed by system tools such as ps and top)."""
+
+ homepage = "https://github.com/dvarrazzo/py-setproctitle"
+ url = "https://pypi.io/packages/source/s/setproctitle/setproctitle-1.1.10.tar.gz"
+
+ version('1.1.10', sha256='6283b7a58477dd8478fbb9e76defb37968ee4ba47b05ec1c053cb39638bd7398')
+
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-setuptools-rust/package.py b/var/spack/repos/builtin/packages/py-setuptools-rust/package.py
new file mode 100644
index 0000000000..262ea03bbe
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-setuptools-rust/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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)
+
+
+class PySetuptoolsRust(PythonPackage):
+ """Setuptools rust extension plugin."""
+
+ homepage = "https://github.com/PyO3/setuptools-rust"
+ url = "https://github.com/PyO3/setuptools-rust/archive/v0.10.6.tar.gz"
+
+ version('0.10.6', sha256='1446d3985e4aaf4cc679fda8a48a73ac1390b627c8ae1bebe7d9e08bb3b33769')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-semantic-version@2.6.0:', type=('build', 'run'))
+ depends_on('py-toml@0.9.0:', type=('build', 'run'))
+ depends_on('rust', type='run')
diff --git a/var/spack/repos/builtin/packages/py-simplejson/package.py b/var/spack/repos/builtin/packages/py-simplejson/package.py
index ea8799b75a..7206102d2e 100644
--- a/var/spack/repos/builtin/packages/py-simplejson/package.py
+++ b/var/spack/repos/builtin/packages/py-simplejson/package.py
@@ -13,6 +13,7 @@ class PySimplejson(PythonPackage):
homepage = "https://github.com/simplejson/simplejson"
url = "https://pypi.io/packages/source/s/simplejson/simplejson-3.10.0.tar.gz"
+ version('3.16.0', sha256='b1f329139ba647a9548aa05fb95d046b4a677643070dc2afc05fa2e975d09ca5')
version('3.10.0', sha256='953be622e88323c6f43fad61ffd05bebe73b9fd9863a46d68b052d2aa7d71ce2')
version('3.9.0', sha256='e9abeee37424f4bfcd27d001d943582fb8c729ffc0b74b72bd0e9b626ed0d1b6')
version('3.8.2', sha256='d58439c548433adcda98e695be53e526ba940a4b9c44fb9a05d92cd495cdd47f')
diff --git a/var/spack/repos/builtin/packages/py-sip/package.py b/var/spack/repos/builtin/packages/py-sip/package.py
index 09c6b743b1..d454f05740 100644
--- a/var/spack/repos/builtin/packages/py-sip/package.py
+++ b/var/spack/repos/builtin/packages/py-sip/package.py
@@ -4,6 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
+import os
class PySip(Package):
@@ -16,6 +17,9 @@ class PySip(Package):
hg = "https://www.riverbankcomputing.com/hg/sip"
version('develop', hg=hg) # wasn't actually able to clone this
+ version('4.19.21', sha256='6af9979ab41590e8311b8cc94356718429ef96ba0e3592bdd630da01211200ae')
+ version('4.19.20', sha256='04cc2f87ac97e8718d8e1ef036e3ec26050ab44c21f9277618d5b67432fcbfd6')
+ version('4.19.19', sha256='5436b61a78f48c7e8078e93a6b59453ad33780f80c644e5f3af39f94be1ede44')
version('4.19.18', sha256='c0bd863800ed9b15dcad477c4017cdb73fa805c25908b0240564add74d697e1e')
version('4.19.15', sha256='2b5c0b2c0266b467b365c21376d50dde61a3236722ab87ff1e8dacec283eb610')
version('4.19.13', sha256='e353a7056599bf5fbd5d3ff9842a6ab2ea3cf4e0304a0f925ec5862907c0d15e')
@@ -53,3 +57,14 @@ class PySip(Package):
def install(self, spec, prefix):
make('install')
+
+ @run_after('install')
+ def extend_path_setup(self):
+ # See github issue #14121 and PR #15297
+ module = self.spec.variants['module'].value
+ if module != 'sip':
+ module = module.split('.')[0]
+ with working_dir(site_packages_dir):
+ with open(os.path.join(module, '__init__.py'), 'w') as f:
+ f.write('from pkgutil import extend_path\n')
+ f.write('__path__ = extend_path(__path__, __name__)\n')
diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py
index a7a8d32af6..22490eb9a2 100644
--- a/var/spack/repos/builtin/packages/py-six/package.py
+++ b/var/spack/repos/builtin/packages/py-six/package.py
@@ -14,6 +14,7 @@ class PySix(PythonPackage):
import_modules = ['six']
+ version('1.14.0', sha256='236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a')
version('1.12.0', sha256='d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73')
version('1.11.0', sha256='70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9')
version('1.10.0', sha256='105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a')
diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py
index 4e726c8a9b..58b00ce02b 100644
--- a/var/spack/repos/builtin/packages/py-slepc4py/package.py
+++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py
@@ -16,6 +16,7 @@ class PySlepc4py(PythonPackage):
maintainers = ['dalcinl', 'joseeroman', 'balay']
+ version('3.13.0', sha256='780eff0eea1a5217642d23cd563786ef22df27e1d772a1b0bb4ccc5701df5ea5')
version('3.12.0', sha256='d8c06953b7d00f529a9a7fd016dfa8efdf1d05995baeea7688d1d59611f424f7')
version('3.11.0', sha256='1e591056beee209f585cd781e5fe88174cd2a61215716a71d9eaaf9411b6a775')
version('3.10.0', sha256='6494959f44280d3b80e73978d7a6bf656c9bb04bb3aa395c668c7a58948db1c6')
@@ -26,6 +27,7 @@ class PySlepc4py(PythonPackage):
depends_on('py-setuptools', type='build')
depends_on('py-petsc4py', type=('build', 'run'))
+ depends_on('py-petsc4py@3.13:3.13.99', when='@3.13:3.13.99', type=('build', 'run'))
depends_on('py-petsc4py@3.12:3.12.99', when='@3.12:3.12.99', type=('build', 'run'))
depends_on('py-petsc4py@3.11:3.11.99', when='@3.11:3.11.99', type=('build', 'run'))
depends_on('py-petsc4py@3.10:3.10.99', when='@3.10:3.10.99', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-smart-open/package.py b/var/spack/repos/builtin/packages/py-smart-open/package.py
index 5def4a84f3..fd2ed92ef2 100644
--- a/var/spack/repos/builtin/packages/py-smart-open/package.py
+++ b/var/spack/repos/builtin/packages/py-smart-open/package.py
@@ -13,9 +13,13 @@ class PySmartOpen(PythonPackage):
different formats."""
homepage = "https://github.com/piskvorky/smart_open"
- url = "https://github.com/RaRe-Technologies/smart_open/archive/1.8.4.tar.gz"
+ url = "https://pypi.io/packages/source/s/smart_open/smart_open-1.10.0.tar.gz"
- version('1.8.4', sha256='788e07f035defcbb62e3c1e313329a70b0976f4f65406ee767db73ad5d2d04f9')
+ version('1.10.0', sha256='bea5624c0c2e49987c227bdf3596573157eccd96fd1d53198856c8d53948fa2c')
+ version('1.8.4', sha256='788e07f035defcbb62e3c1e313329a70b0976f4f65406ee767db73ad5d2d04f9')
depends_on('py-setuptools', type='build')
+ depends_on('py-requests', type=('build', 'run'))
depends_on('py-boto3', type=('build', 'run'))
+ depends_on('py-google-cloud-storage', type=('build', 'run'))
+ depends_on('py-bz2file', when='^python@:2', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-sonlib/package.py b/var/spack/repos/builtin/packages/py-sonlib/package.py
new file mode 100644
index 0000000000..68710835c7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-sonlib/package.py
@@ -0,0 +1,28 @@
+# Copyright 2013-2020 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 PySonlib(PythonPackage):
+ """Small general purpose library for C and
+ Python with focus on bioinformatics."""
+
+ # Note that there are a few versions of sonLib floating around
+ # the one from the ComparativeGenomicsToolkit seems to be the
+ # actively developed version
+
+ # There are no releases so we have devel and a commit
+ # to fix the code at one point in time (1st April)
+
+ homepage = "https://github.com/ComparativeGenomicsToolkit/sonLib"
+ url = "https://github.com/ComparativeGenomicsToolkit/sonLib"
+ git = "https://github.com/ComparativeGenomicsToolkit/sonLib.git"
+
+ version('devel', branch='master')
+ version('20200401', commit='7ebe2ede05a6ee366d93a7a993db69a99943a68f')
+
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-soundfile/package.py b/var/spack/repos/builtin/packages/py-soundfile/package.py
new file mode 100644
index 0000000000..aa485deca3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-soundfile/package.py
@@ -0,0 +1,23 @@
+# Copyright 2013-2020 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 PySoundfile(PythonPackage):
+ """SoundFile is an audio library based on libsndfile, CFFI and NumPy."""
+
+ homepage = "https://github.com/bastibe/PySoundFile"
+ url = "https://pypi.io/packages/source/S/SoundFile/SoundFile-0.10.3.post1.tar.gz"
+
+ version('0.10.3.post1', sha256='490cff42650733d1832728b937fe99fa1802896f5ef4d61bcf78cf7ebecb107b')
+
+ variant('numpy', default=True,
+ description='Support for processing audio data as numpy arrays')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-cffi@1.0:', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'), when='+numpy')
+ depends_on('libsndfile', type='run')
diff --git a/var/spack/repos/builtin/packages/py-spatialist/package.py b/var/spack/repos/builtin/packages/py-spatialist/package.py
index e1beee57e5..ff7386fd00 100644
--- a/var/spack/repos/builtin/packages/py-spatialist/package.py
+++ b/var/spack/repos/builtin/packages/py-spatialist/package.py
@@ -12,16 +12,24 @@ class PySpatialist(PythonPackage):
processing using GDAL and OGR."""
homepage = "https://github.com/johntruckenbrodt/spatialist"
- url = "https://files.pythonhosted.org/packages/source/s/spatialist/spatialist-0.2.8.tar.gz"
+ url = "https://pypi.io/packages/source/s/spatialist/spatialist-0.4.tar.gz"
+ maintainers = ['adamjstewart']
+
+ version('0.4', sha256='153b118022c06ad2d1d51fb6cd9ecbfc8020bc1995b643ec7fa689a8c5dde7e9')
version('0.2.8', sha256='97de7f9c0fbf28497ef28970bdf8093a152e691a783e7edad22998cb235154c6')
+ depends_on('python@2.7.9:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
+ depends_on('py-setuptools-scm', type='build')
depends_on('py-progressbar2', type=('build', 'run'))
- depends_on('py-pathos@0.2.0:', type=('build', 'run'))
- depends_on('py-numpy', type=('build', 'run'))
- depends_on('py-matplotlib', type=('build', 'run'))
- depends_on('py-jupyter-core', type=('build', 'run'))
+ depends_on('py-jupyter', type=('build', 'run'))
depends_on('py-ipython', type=('build', 'run'))
depends_on('py-ipywidgets', type=('build', 'run'))
+ depends_on('py-matplotlib', type=('build', 'run'))
+ depends_on('py-prompt-toolkit@2.0.10:2.0.999', type=('build', 'run'))
+ depends_on('py-pathos@0.2:', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-scoop', type=('build', 'run'))
depends_on('py-tblib', type=('build', 'run'))
+ depends_on('py-pyyaml', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-spatialite/package.py b/var/spack/repos/builtin/packages/py-spatialite/package.py
new file mode 100644
index 0000000000..e78cff81ad
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-spatialite/package.py
@@ -0,0 +1,20 @@
+# 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 PySpatialite(PythonPackage):
+ """Wrapper for standard Python module "sqlite3" which adds SpatiaLite
+ support.
+ """
+
+ homepage = "https://github.com/malexer/spatialite"
+ url = "https://pypi.io/packages/source/s/spatialite/spatialite-0.0.3.tar.gz"
+
+ version('0.0.3', sha256='a0761f239a52f326b14ce41ba61b6614dfcc808b978a0bec4a37c1de9ad9071e')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('libspatialite')
diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py
index 550b503e6c..5aed1f39eb 100644
--- a/var/spack/repos/builtin/packages/py-sphinx/package.py
+++ b/var/spack/repos/builtin/packages/py-sphinx/package.py
@@ -10,7 +10,7 @@ class PySphinx(PythonPackage):
"""Sphinx Documentation Generator."""
homepage = "http://sphinx-doc.org"
- url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-2.2.0.tar.gz"
+ url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-3.0.0.tar.gz"
import_modules = [
'sphinx', 'sphinx.testing', 'sphinx.ext', 'sphinx.pycode',
@@ -22,6 +22,7 @@ class PySphinx(PythonPackage):
'sphinx.environment.collectors', 'sphinx.environment.adapters'
]
+ version('3.0.0', sha256='6a099e6faffdc3ceba99ca8c2d09982d43022245e409249375edf111caf79ed3')
version('2.2.0', sha256='0d586b0f8c2fc3cc6559c5e8fd6124628110514fda0e5d7c82e682d749d2e845')
version('1.8.4', sha256='c1c00fc4f6e8b101a0d037065043460dffc2d507257f2f11acaed71fd2b0c83c')
version('1.8.2', sha256='120732cbddb1b2364471c3d9f8bfd4b0c5b550862f99a65736c77f970b142aea')
diff --git a/var/spack/repos/builtin/packages/py-statsmodels/package.py b/var/spack/repos/builtin/packages/py-statsmodels/package.py
index eebc206640..26c006bccf 100644
--- a/var/spack/repos/builtin/packages/py-statsmodels/package.py
+++ b/var/spack/repos/builtin/packages/py-statsmodels/package.py
@@ -13,31 +13,32 @@ class PyStatsmodels(PythonPackage):
homepage = "http://www.statsmodels.org"
url = "https://pypi.io/packages/source/s/statsmodels/statsmodels-0.8.0.tar.gz"
+ version('0.10.2', sha256='9cd2194c6642a8754e85f9a6e6912cdf996bebf6ff715d3cc67f65dadfd37cc9')
version('0.10.1', sha256='320659a80f916c2edf9dfbe83512d9004bb562b72eedb7d9374562038697fa10')
version('0.8.0', sha256='26431ab706fbae896db7870a0892743bfbb9f5c83231644692166a31d2d86048')
variant('plotting', default=False, description='With matplotlib')
- depends_on('python@:3.6', when='@:0.8.0', type=('build', 'run'))
+ depends_on('python@:3.6', when='@:0.8.0', type=('build', 'run'))
+ depends_on('python@2.7:2.8,3.4:', when='@0.10.1:', type=('build', 'run'))
# according to http://www.statsmodels.org/dev/install.html earlier versions
# might work.
depends_on('py-setuptools@0.6c5:', type='build')
- depends_on('py-numpy@1.7.0:', type=('build', 'run'), when='@0.8.0')
- depends_on('py-pandas@0.12:', type=('build', 'run'), when='@0.8.0')
- depends_on('py-patsy@0.2.1:', type=('build', 'run'), when='@0.8.0')
- depends_on('py-scipy@0.11:', type=('build', 'run'), when='@0.8.0')
- depends_on('py-matplotlib@1.3:', type=('build', 'run'), when='@0.8.0 +plotting')
-
# patsy@0.5.1 works around a Python change
# https://github.com/statsmodels/statsmodels/issues/5343 and
# https://github.com/pydata/patsy/pull/131
- depends_on('py-numpy', type=('build', 'run'), when='@0.10.1')
- depends_on('py-pandas', type=('build', 'run'), when='@0.10.1')
- depends_on('py-patsy', type=('build', 'run'), when='@0.10.1')
- depends_on('py-scipy@0.5.1:', type=('build', 'run'), when='@0.10.1')
- depends_on('py-matplotlib', type=('build', 'run'), when='@0.10.1 +plotting')
+
+ depends_on('py-numpy@1.7.0:', type=('build', 'run'), when='@0.8.0:')
+ depends_on('py-numpy@1.11.0:', type=('build', 'run'), when='@0.10.1:')
+ depends_on('py-pandas@0.12:', type=('build', 'run'), when='@0.8.0:')
+ depends_on('py-pandas@0.19:', type=('build', 'run'), when='@0.10.1:')
+ depends_on('py-patsy@0.2.1:', type=('build', 'run'), when='@0.8.0:')
+ depends_on('py-patsy@0.4.0:', type=('build', 'run'), when='@0.10.1:')
+ depends_on('py-scipy@0.11:', type=('build', 'run'), when='@0.8.0:')
+ depends_on('py-scipy@0.18:', type=('build', 'run'), when='@0.10.1:')
+ depends_on('py-matplotlib@1.3:', type=('build', 'run'), when='@0.8.0 +plotting')
depends_on('py-pytest', type='test')
diff --git a/var/spack/repos/builtin/packages/py-stdlib-list/package.py b/var/spack/repos/builtin/packages/py-stdlib-list/package.py
new file mode 100644
index 0000000000..3bbe840729
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-stdlib-list/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2020 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)
+
+
+class PyStdlibList(PythonPackage):
+ """This package includes lists of all of the standard libraries
+ for Python, along with the code for scraping the official Python
+ docs to get said lists."""
+
+ homepage = "https://pypi.python.org/project/stdlib-list"
+ url = "https://pypi.io/packages/source/s/stdlib-list/stdlib-list-0.6.0.tar.gz"
+
+ version('0.6.0', sha256='133cc99104f5a4e1604dc88ebb393529bd4c2b99ae7e10d46c0b596f3c67c3f0')
+
+ depends_on('py-functools32', when="^python@:3.1", type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-stsci-distutils/package.py b/var/spack/repos/builtin/packages/py-stsci-distutils/package.py
new file mode 100644
index 0000000000..f14a6ebd46
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-stsci-distutils/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 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 PyStsciDistutils(PythonPackage):
+ """This package contains utilities used to
+ package some of STScI's Python projects."""
+
+ homepage = "https://github.com/spacetelescope/stsci.distutils"
+ url = "https://github.com/spacetelescope/stsci.distutils/archive/0.3.8.tar.gz"
+
+ version('0.3.8', sha256='a52f3ec3b392a9cecd98d143b678c27346cbfa8f34c34698821d7e167907edce')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-d2to1', type='build')
diff --git a/var/spack/repos/builtin/packages/py-tblib/package.py b/var/spack/repos/builtin/packages/py-tblib/package.py
index 5234fde4e0..f32e292c12 100644
--- a/var/spack/repos/builtin/packages/py-tblib/package.py
+++ b/var/spack/repos/builtin/packages/py-tblib/package.py
@@ -11,8 +11,10 @@ class PyTblib(PythonPackage):
"""Traceback fiddling library. Allows you to pickle tracebacks."""
homepage = "https://github.com/ionelmc/python-tblib"
- url = "https://files.pythonhosted.org/packages/source/t/tblib/tblib-1.4.0.tar.gz"
+ url = "https://pypi.io/packages/source/t/tblib/tblib-1.6.0.tar.gz"
+ version('1.6.0', sha256='229bee3754cb5d98b4837dd5c4405e80cfab57cb9f93220410ad367f8b352344')
version('1.4.0', sha256='bd1ad564564a158ff62c290687f3db446038f9ac11a0bf6892712e3601af3bcd')
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-tensorboard-plugin-wit/package.py b/var/spack/repos/builtin/packages/py-tensorboard-plugin-wit/package.py
new file mode 100644
index 0000000000..bb56b8c7d6
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-tensorboard-plugin-wit/package.py
@@ -0,0 +1,63 @@
+# Copyright 2013-2020 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)
+
+
+class PyTensorboardPluginWit(Package):
+ """The What-If Tool makes it easy to efficiently and
+ intuitively explore up to two models' performance
+ on a dataset. Investigate model performances for
+ a range of features in your dataset, optimization
+ strategies and even manipulations to individual
+ datapoint values. All this and more, in a visual way
+ that requires minimal code."""
+
+ homepage = "https://pypi.python.org/project/tensorboard-plugin-wit"
+ git = "https://github.com/pair-code/what-if-tool.git"
+
+ version('master', branch='master')
+ depends_on('bazel@0.26.1:', type='build')
+ depends_on('py-setuptools@36.2.0:', type='build')
+ depends_on('python@2.7:2.8,3.2:', type=('build', 'run'))
+ depends_on('py-wheel', type='build')
+
+ extends('python')
+
+ phases = ['setup', 'build', 'install']
+
+ def setup_build_environment(self, env):
+ tmp_path = '/tmp/spack/tb-plugin'
+ mkdirp(tmp_path)
+ env.set('TEST_TMPDIR', tmp_path)
+
+ def setup(self, spec, prefix):
+ builddir = join_path(self.stage.source_path, 'spack-build')
+ mkdirp(builddir)
+ filter_file(r'dest=.*',
+ 'dest="{0}"'.format(builddir),
+ 'tensorboard_plugin_wit/pip_package/build_pip_package.sh')
+ filter_file(r'pip install .*',
+ ''.format(builddir),
+ 'tensorboard_plugin_wit/pip_package/build_pip_package.sh')
+ filter_file(r'command \-v .*',
+ ''.format(builddir),
+ 'tensorboard_plugin_wit/pip_package/build_pip_package.sh')
+ filter_file(r'virtualenv venv',
+ ''.format(builddir),
+ 'tensorboard_plugin_wit/pip_package/build_pip_package.sh')
+
+ def build(self, spec, prefix):
+ tmp_path = env['TEST_TMPDIR']
+ bazel('--nohome_rc',
+ '--nosystem_rc',
+ '--output_user_root=' + tmp_path,
+ 'run',
+ '--verbose_failures',
+ '--subcommands=pretty_print',
+ 'tensorboard_plugin_wit/pip_package:build_pip_package')
+
+ def install(self, spec, prefix):
+ with working_dir('spack-build/release'):
+ setup_py('install', '--prefix={0}'.format(prefix),
+ '--single-version-externally-managed', '--root=/')
diff --git a/var/spack/repos/builtin/packages/py-tensorboard/package.py b/var/spack/repos/builtin/packages/py-tensorboard/package.py
new file mode 100644
index 0000000000..251f759b5f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-tensorboard/package.py
@@ -0,0 +1,67 @@
+# Copyright 2013-2020 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)
+
+
+class PyTensorboard(Package):
+ """TensorBoard is a suite of web applications for
+ inspecting and understanding your TensorFlow runs and
+ graphs."""
+
+ homepage = "https://pypi.python.org/project/tensorboard"
+ url = "https://github.com/tensorflow/tensorboard/archive/2.2.0.tar.gz"
+
+ version('2.2.0', sha256='d0dfbf0e4b3b5ebbc3fafa6d281d4b9aa5478eac6bac3330652ab6674278ab77')
+
+ depends_on('python@2.7:2.8,3.2:', type=('build', 'run'))
+ depends_on('bazel@0.26.1:', type='build')
+ depends_on('py-setuptools@41.0.0:', type=('build', 'run'))
+ depends_on('py-absl-py@0.4:', type=('build', 'run'))
+ depends_on('py-markdown@2.6.8:', type=('build', 'run'))
+ depends_on('py-requests@2.21.0:2.999', type=('build', 'run'))
+ depends_on('py-futures@3.1.1:', type=('build', 'run'), when='^python@:2')
+ depends_on('py-grpcio@1.23.3:', type=('build', 'run'))
+ depends_on('py-google-auth@1.6.3:1.99.99', type=('build', 'run'))
+ depends_on('py-numpy@1.12.0:', type=('build', 'run'))
+ depends_on('py-protobuf@3.6.0:', type=('build', 'run'))
+ depends_on('py-six@1.10.0:', type=('build', 'run'))
+ depends_on('py-werkzeug@0.11.15:', type=('build', 'run'))
+ depends_on('py-wheel', type='build')
+ depends_on('py-wheel@0.26:', type='build', when='@0.6: ^python@3:')
+ depends_on('py-google-auth-oauthlib@0.4.1:0.4.999', type=('build', 'run'))
+ depends_on('py-tensorboard-plugin-wit@1.6.0:', type=('build', 'run'), when='@2.2.0:')
+ depends_on('py-tensorflow-estimator', type='run')
+
+ extends('python')
+
+ phases = ['configure', 'build', 'install']
+
+ def setup_build_environment(self, env):
+ tmp_path = '/tmp/spack/tb'
+ mkdirp(tmp_path)
+ env.set('TEST_TMPDIR', tmp_path)
+
+ def configure(self, spec, prefix):
+ builddir = join_path(self.stage.source_path, 'spack-build')
+ mkdirp(builddir)
+ filter_file(r'workdir=.*',
+ 'workdir="{0}"'.format(builddir),
+ 'tensorboard/pip_package/build_pip_package.sh')
+ filter_file('trap cleanup EXIT',
+ '',
+ 'tensorboard/pip_package/build_pip_package.sh')
+
+ def build(self, spec, prefix):
+ tmp_path = env['TEST_TMPDIR']
+ bazel('--nohome_rc',
+ '--nosystem_rc',
+ '--output_user_root=' + tmp_path,
+ 'build',
+ '--verbose_failures',
+ '//tensorboard/pip_package')
+
+ def install(self, spec, prefix):
+ with working_dir('spack-build'):
+ setup_py('install', '--prefix={0}'.format(prefix),
+ '--single-version-externally-managed', '--root=/')
diff --git a/var/spack/repos/builtin/packages/py-tensorboardx/package.py b/var/spack/repos/builtin/packages/py-tensorboardx/package.py
new file mode 100644
index 0000000000..7faba61060
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-tensorboardx/package.py
@@ -0,0 +1,24 @@
+# Copyright 2013-2020 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)
+
+
+class PyTensorboardx(PythonPackage):
+ """The purpose of this package is to let researchers use
+ a simple interface to log events within PyTorch (and
+ then show visualization in tensorboard). This package
+ currently supports logging scalar, image, audio,
+ histogram, text, embedding, and the route of back-propagation."""
+
+ homepage = "https://github.com/lanpa/tensorboardX"
+ url = "https://pypi.io/packages/source/t/tensorboardx/tensorboardX-1.8.tar.gz"
+
+ version('2.0', sha256='835d85db0aef2c6768f07c35e69a74e3dcb122d6afceaf2b8504d7d16c7209a5')
+ version('1.9', sha256='2505d0092e6212f04c4522eea7123e8886c4d0a0b2c406e480fa61ca3c1da7ea')
+ version('1.8', sha256='13fe0abba27f407778a7321937190eedaf12bc8c544d9a4e294fcf0ba177fd76')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-six', type=('build', 'run'))
+ depends_on('py-protobuf@3.8.0:', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py b/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py
index 638d011f72..b738f2ebf7 100644
--- a/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py
+++ b/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py
@@ -13,16 +13,17 @@ class PyTensorflowEstimator(Package):
homepage = "https://github.com/tensorflow/estimator"
url = "https://github.com/tensorflow/estimator/archive/v1.13.0.tar.gz"
+ version('2.1', sha256='1d74c8181b981748976fa33ad97d3434c3cf2b7e29a0b00861365fe8329dbc4e')
version('2.0.0', sha256='6f4bdf1ab219e1f1cba25d2af097dc820f56479f12a839853d97422fe4d8b465')
- version('1.13.0', sha256='a787b150ff436636df723e507019c72a5d6486cfe506886279d380166953f12f', preferred=True)
+ version('1.13.0', sha256='a787b150ff436636df723e507019c72a5d6486cfe506886279d380166953f12f')
extends('python')
+ depends_on('py-tensorflow@2.1.0:', when='@2.1')
depends_on('py-tensorflow@2.0.0', when='@2.0.0')
depends_on('py-tensorflow@1.13.1', when='@1.13.0')
- depends_on('bazel@0.19.0', type='build')
- depends_on('py-pip', type='build')
+ depends_on('bazel@0.19.0:', type='build')
depends_on('py-funcsigs@1.0.2:', type=('build', 'run'))
def install(self, spec, prefix):
@@ -33,15 +34,37 @@ class PyTensorflowEstimator(Package):
env['TEST_TMPDIR'] = tmp_path
env['HOME'] = tmp_path
- # bazel uses system PYTHONPATH instead of spack paths
- bazel('--action_env', 'PYTHONPATH={0}'.format(env['PYTHONPATH']),
- '//tensorflow_estimator/tools/pip_package:build_pip_package')
+ args = [
+ # Don't allow user or system .bazelrc to override build settings
+ '--nohome_rc',
+ '--nosystem_rc',
+ # Bazel does not work properly on NFS, switch to /tmp
+ '--output_user_root=' + tmp_path,
+ 'build',
+ # Spack logs don't handle colored output well
+ '--color=no',
+ '--jobs={0}'.format(make_jobs),
+ # Enable verbose output for failures
+ '--verbose_failures',
+ # Show (formatted) subcommands being executed
+ '--subcommands=pretty_print',
+ # Ask bazel to explain what it's up to
+ # Needs a filename as argument
+ '--explain=explainlogfile.txt',
+ # Increase verbosity of explanation,
+ '--verbose_explanations',
+ # bazel uses system PYTHONPATH instead of spack paths
+ '--action_env', 'PYTHONPATH={0}'.format(env['PYTHONPATH']),
+ '//tensorflow_estimator/tools/pip_package:build_pip_package',
+ ]
+
+ bazel(*args)
build_pip_package = Executable(join_path(
'bazel-bin/tensorflow_estimator/tools',
'pip_package/build_pip_package'))
- build_pip_package(tmp_path)
-
- pip = Executable('pip')
- pip('install', '--prefix={0}'.format(prefix),
- '--find-links={0}'.format(tmp_path), 'tensorflow-estimator')
+ buildpath = join_path(self.stage.source_path, 'spack-build')
+ build_pip_package('--src', buildpath)
+ with working_dir(buildpath):
+ setup_py('install', '--prefix={0}'.format(prefix),
+ '--single-version-externally-managed', '--root=/')
diff --git a/var/spack/repos/builtin/packages/py-tensorflow/0001-Remove-contrib-cloud-bigtable-and-storage-ops-kernel.patch b/var/spack/repos/builtin/packages/py-tensorflow/0001-Remove-contrib-cloud-bigtable-and-storage-ops-kernel.patch
new file mode 100644
index 0000000000..bb742ff1b4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-tensorflow/0001-Remove-contrib-cloud-bigtable-and-storage-ops-kernel.patch
@@ -0,0 +1,76 @@
+--- a/tensorflow/core/BUILD.orig 2020-01-22 18:43:57.000000000 -0500
++++ b/tensorflow/core/BUILD 2020-03-26 16:33:17.318229701 -0400
+@@ -107,8 +107,6 @@
+ load(
+ "//tensorflow/core/platform:default/build_config.bzl",
+ "tf_additional_all_protos",
+- "tf_additional_cloud_kernel_deps",
+- "tf_additional_cloud_op_deps",
+ "tf_additional_core_deps",
+ "tf_additional_cupti_wrapper_deps",
+ "tf_additional_device_tracer_cuda_deps",
+@@ -1427,7 +1425,7 @@
+ ]) + if_tensorrt([
+ "//tensorflow/compiler/tf2tensorrt:trt_engine_resource_ops_op_lib",
+ "//tensorflow/compiler/tf2tensorrt:trt_op_libs",
+- ]) + tf_additional_cloud_op_deps(),
++ ]),
+ alwayslink = 1,
+ )
+
+@@ -1590,7 +1588,7 @@
+ "//tensorflow/core/kernels:summary_kernels",
+ "//tensorflow/core/kernels:training_ops",
+ "//tensorflow/core/kernels:word2vec_kernels",
+- ] + tf_additional_cloud_kernel_deps() + if_not_windows([
++ ] + if_not_windows([
+ "//tensorflow/core/kernels:fact_op",
+ "//tensorflow/core/kernels:array_not_windows",
+ "//tensorflow/core/kernels:math_not_windows",
+
+diff --git a/tensorflow/core/platform/default/build_config.bzl b/tensorflow/core/platform/default/build_config.bzl
+index b822effa14e5..61a19bdf128f 100644
+--- a/tensorflow/core/platform/default/build_config.bzl
++++ b/tensorflow/core/platform/default/build_config.bzl
+@@ -682,38 +682,6 @@ def tf_additional_core_deps():
+ ],
+ })
+
+-# TODO(jart, jhseu): Delete when GCP is default on.
+-def tf_additional_cloud_op_deps():
+- return select({
+- "//tensorflow:android": [],
+- "//tensorflow:ios": [],
+- "//tensorflow:linux_s390x": [],
+- "//tensorflow:windows": [],
+- "//tensorflow:api_version_2": [],
+- "//tensorflow:windows_and_api_version_2": [],
+- "//tensorflow:no_gcp_support": [],
+- "//conditions:default": [
+- "//tensorflow/contrib/cloud:bigquery_reader_ops_op_lib",
+- "//tensorflow/contrib/cloud:gcs_config_ops_op_lib",
+- ],
+- })
+-
+-# TODO(jhseu): Delete when GCP is default on.
+-def tf_additional_cloud_kernel_deps():
+- return select({
+- "//tensorflow:android": [],
+- "//tensorflow:ios": [],
+- "//tensorflow:linux_s390x": [],
+- "//tensorflow:windows": [],
+- "//tensorflow:api_version_2": [],
+- "//tensorflow:windows_and_api_version_2": [],
+- "//tensorflow:no_gcp_support": [],
+- "//conditions:default": [
+- "//tensorflow/contrib/cloud/kernels:bigquery_reader_ops",
+- "//tensorflow/contrib/cloud/kernels:gcs_config_ops",
+- ],
+- })
+-
+ def tf_lib_proto_parsing_deps():
+ return [
+ ":protos_all_cc",
+--
+2.19.1
+
diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py
index d493c32283..64b97b05b2 100644
--- a/var/spack/repos/builtin/packages/py-tensorflow/package.py
+++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py
@@ -3,8 +3,6 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-import glob
-import os
import sys
@@ -241,6 +239,11 @@ class PyTensorflow(Package, CudaPackage):
patch('io_bazel_rules_docker2.patch', when='@1.15:2.0')
# Avoide build error: "name 'new_http_archive' is not defined"
patch('http_archive.patch', when='@1.12.3')
+ # Backport of 837c8b6b upstream
+ # "Remove contrib cloud bigtable and storage ops/kernels."
+ # Allows 2.0.* releases to build with '--config=nogcp'
+ patch('0001-Remove-contrib-cloud-bigtable-and-storage-ops-kernel.patch',
+ when='@2.0.0:2.0.1')
phases = ['configure', 'build', 'install']
@@ -581,6 +584,12 @@ class PyTensorflow(Package, CudaPackage):
spec['nccl'].prefix.include + '"',
'.tf_configure.bazelrc')
+ # see tensorflow issue #31187 on github
+ if spec.satisfies('@2.0.0:2.0.1'):
+ filter_file(r'\#define RUY_DONOTUSEDIRECTLY_AVX512 1',
+ '#define RUY_DONOTUSEDIRECTLY_AVX512 0',
+ 'tensorflow/lite/experimental/ruy/platform.h')
+
if spec.satisfies('+cuda'):
libs = spec['cuda'].libs.directories
libs.extend(spec['cudnn'].libs.directories)
@@ -679,26 +688,12 @@ class PyTensorflow(Package, CudaPackage):
build_pip_package = Executable(
'bazel-bin/tensorflow/tools/pip_package/build_pip_package')
- build_pip_package(tmp_path)
+ buildpath = join_path(self.stage.source_path, 'spack-build')
+ build_pip_package('--src', buildpath)
def install(self, spec, prefix):
- with working_dir('spack-build', create=True):
- for fn in glob.iglob(join_path(
- '../bazel-bin/tensorflow/tools/pip_package',
- 'build_pip_package.runfiles/org_tensorflow/*')):
- dst = os.path.basename(fn)
- if not os.path.exists(dst):
- os.symlink(fn, dst)
- for fn in glob.iglob('../tensorflow/tools/pip_package/*'):
- dst = os.path.basename(fn)
- if not os.path.exists(dst):
- os.symlink(fn, dst)
-
- # macOS is case-insensitive, and BUILD file in directory
- # containing setup.py causes the following error message:
- # error: could not create 'build': File exists
- # Delete BUILD file to prevent this.
- os.remove('BUILD')
+ buildpath = join_path(self.stage.source_path, 'spack-build')
+ with working_dir(buildpath):
setup_py('install', '--prefix={0}'.format(prefix),
'--single-version-externally-managed', '--root=/')
diff --git a/var/spack/repos/builtin/packages/py-testinfra/package.py b/var/spack/repos/builtin/packages/py-testinfra/package.py
index bae58db30d..40e7cd440c 100644
--- a/var/spack/repos/builtin/packages/py-testinfra/package.py
+++ b/var/spack/repos/builtin/packages/py-testinfra/package.py
@@ -12,7 +12,7 @@ class PyTestinfra(PythonPackage):
Chef and so on."""
homepage = "https://testinfra.readthedocs.io"
- url = "https://pypi.python.org/packages/source/t/testinfra/testinfra-1.11.1.tar.gz"
+ url = "https://pypi.io/packages/source/t/testinfra/testinfra-1.11.1.tar.gz"
version('1.18.0', sha256='4a0a70355b007729d78446c86bffd80bcea4ffe9adc9571f9c9779476c49153d')
version('1.13.0', sha256='b5afa23d71ee49ad81aed104e4a0f1c02819ef791291cd308fe27aa7f3d3b01f')
diff --git a/var/spack/repos/builtin/packages/py-tfdlpack/package.py b/var/spack/repos/builtin/packages/py-tfdlpack/package.py
new file mode 100644
index 0000000000..678cc2d6db
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-tfdlpack/package.py
@@ -0,0 +1,45 @@
+# Copyright 2013-2020 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)
+
+
+class PyTfdlpack(CMakePackage):
+ """Tensorflow plugin for DLPack."""
+
+ homepage = "https://github.com/VoVAllen/tf-dlpack"
+ git = "https://github.com/VoVAllen/tf-dlpack.git"
+
+ maintainers = ['adamjstewart']
+
+ version('master', branch='master', submodules=True)
+ version('0.1.1', tag='v0.1.1', submodules=True)
+
+ variant('cuda', default=True, description='Build with CUDA support')
+
+ depends_on('cmake@3.5:', type='build')
+ depends_on('cuda', when='+cuda')
+
+ # Python dependencies
+ extends('python')
+ depends_on('py-setuptools', type='build')
+ depends_on('py-tensorflow', type=('build', 'run'))
+
+ def cmake_args(self):
+ args = ['-DPYTHON_EXECUTABLE=' + self.spec['python'].command.path]
+
+ if '+cuda' in self.spec:
+ args.append('-DUSE_CUDA=ON')
+ else:
+ args.append('-DUSE_CUDA=OFF')
+
+ return args
+
+ def install(self, spec, prefix):
+ with working_dir('python'):
+ setup_py('install', '--prefix=' + prefix,
+ '--single-version-externally-managed', '--root=/')
+
+ def setup_run_environment(self, env):
+ # Prevent TensorFlow from taking over the whole GPU
+ env.set('TF_FORCE_GPU_ALLOW_GROWTH', 'true')
diff --git a/var/spack/repos/builtin/packages/py-tokenizers/package.py b/var/spack/repos/builtin/packages/py-tokenizers/package.py
new file mode 100644
index 0000000000..20de8c9141
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-tokenizers/package.py
@@ -0,0 +1,23 @@
+# Copyright 2013-2020 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)
+
+
+class PyTokenizers(PythonPackage):
+ """Fast and Customizable Tokenizers."""
+
+ homepage = "https://github.com/huggingface/tokenizers"
+ url = "https://pypi.io/packages/source/t/tokenizers/tokenizers-0.6.0.tar.gz"
+
+ version('0.6.0', sha256='1da11fbfb4f73be695bed0d655576097d09a137a16dceab2f66399716afaffac')
+ version('0.5.2', sha256='b5a235f9c71d04d4925df6c4fa13b13f1d03f9b7ac302b89f8120790c4f742bc')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-setuptools-rust', type='build')
+ depends_on('rust@nightly', type='build')
+
+ # TODO: This package currently requires internet access to install.
+ # Also, a nightly or dev version of rust is required to build.
+ # https://github.com/huggingface/tokenizers/issues/176
+ # https://github.com/PyO3/pyo3/issues/5
diff --git a/var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py b/var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py
new file mode 100644
index 0000000000..919a6c41ad
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-torch-nvidia-apex/package.py
@@ -0,0 +1,41 @@
+# Copyright 2013-2020 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)
+
+
+class PyTorchNvidiaApex(PythonPackage, CudaPackage):
+ """A PyTorch Extension: Tools for easy mixed precision and
+ distributed training in Pytorch """
+
+ homepage = "https://github.com/nvidia/apex/"
+ git = "https://github.com/nvidia/apex/"
+
+ phases = ['install']
+
+ version('master', branch='master')
+
+ depends_on('python@3:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-torch@0.4:', type=('build', 'run'))
+ depends_on('cuda@9:', when='+cuda')
+
+ variant('cuda', default=True, description='Build with CUDA')
+
+ def setup_build_environment(self, env):
+ if '+cuda' in self.spec:
+ env.set('CUDA_HOME', self.spec['cuda'].prefix)
+ if (self.spec.variants['cuda_arch'].value[0] != 'none'):
+ torch_cuda_arch = ';'.join(
+ '{0:.1f}'.format(float(i) / 10.0) for i
+ in
+ self.spec.variants['cuda_arch'].value)
+ env.set('TORCH_CUDA_ARCH_LIST', torch_cuda_arch)
+
+ def install_args(self, spec, prefix):
+ args = super(PyTorchNvidiaApex, self).install_args(spec, prefix)
+ if spec.satisfies('^py-torch@1.0:'):
+ args.append('--cpp_ext')
+ if '+cuda' in spec:
+ args.append('--cuda_ext')
+ return args
diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py
index e40bc840fe..31bfb71657 100644
--- a/var/spack/repos/builtin/packages/py-torch/package.py
+++ b/var/spack/repos/builtin/packages/py-torch/package.py
@@ -51,7 +51,10 @@ class PyTorch(PythonPackage, CudaPackage):
]
version('master', branch='master', submodules=True)
- version('1.4.0', tag='v1.4.0', submodules=True)
+ version('1.4.1', tag='v1.4.1', submodules=True)
+ # see https://github.com/pytorch/pytorch/issues/35149
+ version('1.4.0', tag='v1.4.0', submodules=True,
+ submodules_delete=['third_party/fbgemm'])
version('1.3.1', tag='v1.3.1', submodules=True)
version('1.3.0', tag='v1.3.0', submodules=True)
version('1.2.0', tag='v1.2.0', submodules=True)
@@ -101,26 +104,28 @@ class PyTorch(PythonPackage, CudaPackage):
conflicts('+redis', when='@:1.0')
conflicts('+zstd', when='@:1.0')
conflicts('+tbb', when='@:1.1')
+ # see https://github.com/pytorch/pytorch/issues/35149
+ conflicts('+fbgemm', when='@1.4.0')
cuda_arch_conflict = ('This version of Torch/Caffe2 only supports compute '
'capabilities ')
- conflicts('cuda_arch=none', when='+cuda+caffe2',
+ conflicts('cuda_arch=none', when='+cuda',
msg='Must specify CUDA compute capabilities of your GPU, see '
'https://developer.nvidia.com/cuda-gpus')
- conflicts('cuda_arch=52', when='@1.3.0:+cuda+caffe2',
+ conflicts('cuda_arch=52', when='@1.3.0:+cuda',
msg=cuda_arch_conflict + '>=5.3')
- conflicts('cuda_arch=50', when='@1.3.0:+cuda+caffe2',
+ conflicts('cuda_arch=50', when='@1.3.0:+cuda',
msg=cuda_arch_conflict + '>=5.3')
- conflicts('cuda_arch=35', when='@1.3.0:+cuda+caffe2',
+ conflicts('cuda_arch=35', when='@1.3.0:+cuda',
msg=cuda_arch_conflict + '>=5.3')
- conflicts('cuda_arch=32', when='@1.3.0:+cuda+caffe2',
+ conflicts('cuda_arch=32', when='@1.3.0:+cuda',
msg=cuda_arch_conflict + '>=5.3')
- conflicts('cuda_arch=30', when='@1.3.0:+cuda+caffe2',
+ conflicts('cuda_arch=30', when='@1.3.0:+cuda',
msg=cuda_arch_conflict + '>=5.3')
- conflicts('cuda_arch=30', when='@1.2.0:+cuda+caffe2',
+ conflicts('cuda_arch=30', when='@1.2.0:+cuda',
msg=cuda_arch_conflict + '>=3.2')
- conflicts('cuda_arch=20', when='@1.0.0:+cuda+caffe2',
+ conflicts('cuda_arch=20', when='@1.0.0:+cuda',
msg=cuda_arch_conflict + '>=3.0')
# Required dependencies
@@ -154,7 +159,7 @@ class PyTorch(PythonPackage, CudaPackage):
# TODO: See if there is a way to use an external mkldnn installation.
# Currently, only older versions of py-torch use an external mkldnn
# library.
- depends_on('intel-mkl-dnn', when='@0.4:0.4.1+mkldnn')
+ depends_on('onednn', when='@0.4:0.4.1+mkldnn')
# TODO: add dependency: https://github.com/Maratyszcza/NNPACK
# depends_on('nnpack', when='+nnpack')
depends_on('qnnpack', when='+qnnpack')
@@ -287,9 +292,11 @@ class PyTorch(PythonPackage, CudaPackage):
enable_or_disable('zstd', newer=True)
enable_or_disable('tbb', newer=True)
- def test(self):
- pass
-
def install_test(self):
with working_dir('test'):
python('run_test.py')
+
+ # Tests need to be re-added since `phases` was overridden
+ run_after('install')(
+ PythonPackage._run_default_install_time_test_callbacks)
+ run_after('install')(PythonPackage.sanity_check_prefix)
diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py
new file mode 100644
index 0000000000..5b17373c66
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py
@@ -0,0 +1,26 @@
+# Copyright 2013-2020 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)
+
+
+class PyTorchaudio(PythonPackage):
+ """The aim of torchaudio is to apply PyTorch to the audio
+ domain. By supporting PyTorch, torchaudio follows the same
+ philosophy of providing strong GPU acceleration, having a focus on
+ trainable features through the autograd system, and having
+ consistent style (tensor names and dimension names). Therefore, it
+ is primarily a machine learning library and not a general signal
+ processing library. The benefits of Pytorch is be seen in
+ torchaudio through having all the computations be through Pytorch
+ operations which makes it easy to use and feel like a natural
+ extension."""
+
+ homepage = "https://github.com/pytorch/audio"
+ url = "https://github.com/pytorch/audio/archive/v0.4.0.tar.gz"
+
+ version('0.4.0', sha256='9361312319b1ab880fc348ea82b024053bca6faf477ef6a9232a5b805742dc66')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('sox@14.3.2:')
+ depends_on('py-torch@1.2.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-torchsummary/package.py b/var/spack/repos/builtin/packages/py-torchsummary/package.py
new file mode 100644
index 0000000000..af1e39bcfb
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-torchsummary/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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)
+
+
+class PyTorchsummary(PythonPackage):
+ """Keras has a neat API to view the visualization of the model
+ which is very helpful while debugging your network. Here is a
+ barebone code to try and mimic the same in PyTorch. The aim is to
+ provide information complementary to, what is not provided by
+ print(your_model) in PyTorch."""
+
+ homepage = "https://github.com/sksq96/pytorch-summary"
+ url = "https://pypi.io/packages/source/t/torchsummary/torchsummary-1.5.1.tar.gz"
+
+ version('1.5.1', sha256='981bf689e22e0cf7f95c746002f20a24ad26aa6b9d861134a14bc6ce92230590')
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-torch', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-torchtext/package.py b/var/spack/repos/builtin/packages/py-torchtext/package.py
new file mode 100644
index 0000000000..6bcae3d1e9
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-torchtext/package.py
@@ -0,0 +1,24 @@
+# Copyright 2013-2020 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)
+
+
+class PyTorchtext(PythonPackage):
+ """Text utilities and datasets for PyTorch."""
+
+ homepage = "https://github.com/pytorch/text"
+ url = "https://pypi.io/packages/source/t/torchtext/torchtext-0.5.0.tar.gz"
+
+ maintainers = ['adamjstewart']
+
+ version('0.5.0', sha256='7f22e24e9b939fff56b9118c78dc07aafec8dcc67164de15b9b5ed339e4179c6')
+
+ depends_on('python@2.7:2.8,3.5:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-tqdm', type=('build', 'run'))
+ depends_on('py-requests', type=('build', 'run'))
+ depends_on('py-torch@0.4.0:', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'))
+ depends_on('py-sentencepiece', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-traits/package.py b/var/spack/repos/builtin/packages/py-traits/package.py
new file mode 100644
index 0000000000..868e1de0a2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-traits/package.py
@@ -0,0 +1,16 @@
+# Copyright 2013-2020 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)
+
+
+class PyTraits(PythonPackage):
+ """Explicitly typed attributes for Python."""
+
+ homepage = "https://docs.enthought.com/traits"
+ url = "https://pypi.io/packages/source/t/traits/traits-6.0.0.tar.gz"
+
+ version('6.0.0', sha256='dbcd70166feca434130a1193284d5819ca72ffbc8dbce8deeecc0cebb41a3bfb')
+
+ depends_on('python@3.5:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-traitsui/package.py b/var/spack/repos/builtin/packages/py-traitsui/package.py
new file mode 100644
index 0000000000..f77e92cc4f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-traitsui/package.py
@@ -0,0 +1,36 @@
+# Copyright 2013-2020 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)
+
+
+class PyTraitsui(PythonPackage):
+ """The TraitsUI project contains a toolkit-independent GUI abstraction
+ layer, which is used to support the "visualization" features of the Traits
+ package. Thus, you can write model in terms of the Traits API and specify a
+ GUI in terms of the primitives supplied by TraitsUI (views, items, editors,
+ etc.), and let TraitsUI and your selected toolkit and back-end take care of
+ the details of displaying them."""
+
+ homepage = "https://docs.enthought.com/traitsui"
+ url = "https://pypi.io/packages/source/t/traitsui/traitsui-6.1.3.tar.gz"
+
+ version('6.1.3', sha256='48381763b181efc58eaf288431d1d92d028d0d97dfdd33eba7809aae8aef814f')
+
+ variant('backend', default='pyqt5', description='Default backend',
+ values=('wx', 'pyqt', 'pyqt5', 'pyside'), multi=False)
+
+ depends_on('py-setuptools', type='build')
+ depends_on('py-traits', type=('build', 'run'))
+ depends_on('py-pyface@6.0.0:', type=('build', 'run'))
+ depends_on('py-six', type=('build', 'run'))
+
+ # Backends
+ depends_on('py-wxpython@2.8.10:', when='backend=wx', type=('build', 'run'))
+ depends_on('py-numpy', when='backend=wx', type=('build', 'run'))
+ depends_on('py-pyqt4@4.10:', when='backend=pyqt', type=('build', 'run'))
+ depends_on('py-pygments', when='backend=pyqt', type=('build', 'run'))
+ depends_on('py-pyqt5@5:', when='backend=pyqt5', type=('build', 'run'))
+ depends_on('py-pygments', when='backend=pyqt5', type=('build', 'run'))
+ depends_on('py-pyside@1.2:', when='backend=pyside', type=('build', 'run'))
+ depends_on('py-pygments', when='backend=pyside', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-transformers/package.py b/var/spack/repos/builtin/packages/py-transformers/package.py
new file mode 100644
index 0000000000..0480ed06c2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-transformers/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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)
+
+
+class PyTransformers(PythonPackage):
+ """State-of-the-art Natural Language Processing for TensorFlow 2.0 and
+ PyTorch"""
+
+ homepage = "https://github.com/huggingface/transformers"
+ url = "https://pypi.io/packages/source/t/transformers/transformers-2.8.0.tar.gz"
+
+ maintainers = ['adamjstewart']
+
+ version('2.8.0', sha256='b9f29cdfd39c28f29e0806c321270dea337d6174a7aa60daf9625bf83dbb12ee')
+
+ depends_on('python@3.6:', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-tokenizers@0.5.2', type=('build', 'run'))
+ depends_on('py-dataclasses', when='^python@:3.6', type=('build', 'run'))
+ depends_on('py-boto3', type=('build', 'run'))
+ depends_on('py-filelock', type=('build', 'run'))
+ depends_on('py-requests', type=('build', 'run'))
+ depends_on('py-tqdm@4.27:', type=('build', 'run'))
+ depends_on('py-regex@:2019.12.16,2019.12.18:', type=('build', 'run'))
+ depends_on('py-sentencepiece', type=('build', 'run'))
+ depends_on('py-sacremoses', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/py-tuiview/package.py b/var/spack/repos/builtin/packages/py-tuiview/package.py
index 95090a2694..9757dd2343 100644
--- a/var/spack/repos/builtin/packages/py-tuiview/package.py
+++ b/var/spack/repos/builtin/packages/py-tuiview/package.py
@@ -11,11 +11,13 @@ class PyTuiview(PythonPackage):
table manipulation abilities.
"""
- homepage = "https://bitbucket.org/chchrsc/tuiview"
- url = "https://bitbucket.org/chchrsc/tuiview/get/tuiview-1.1.7.tar.gz"
+ homepage = "https://github.com/ubarsc/tuiview"
+ url = "https://github.com/ubarsc/tuiview/releases/download/tuiview-1.2.6/tuiview-1.2.6.tar.gz"
+ version('1.2.6', sha256='61b136fa31c949d7a7a4dbf8562e6fc677d5b1845b152ec39e337f4eb2e91662')
version('1.1.7', sha256='fbf0bf29cc775357dad4f8a2f0c2ffa98bbf69d603a96353e75b321adef67573')
- depends_on("py-pyqt4", type=('build', 'run'))
+ depends_on("py-pyqt4", type=('build', 'run'), when='@:1.1.99')
+ depends_on("py-pyqt5", type=('build', 'run'), when='@1.2.0:')
depends_on("py-numpy", type=('build', 'run'))
- depends_on("gdal")
+ depends_on("gdal@1.11.0:+python")
diff --git a/var/spack/repos/builtin/packages/py-unidecode/package.py b/var/spack/repos/builtin/packages/py-unidecode/package.py
new file mode 100644
index 0000000000..c5acb2dc4c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-unidecode/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 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 PyUnidecode(PythonPackage):
+ """ASCII transliterations of Unicode text"""
+
+ homepage = "https://pypi.org/project/Unidecode"
+ url = "https://pypi.io/packages/source/u/unidecode/Unidecode-1.1.1.tar.gz"
+
+ version('1.1.1', sha256='2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8')
+ version('0.04.21', sha256='280a6ab88e1f2eb5af79edff450021a0d3f0448952847cd79677e55e58bad051')
+
+ 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-usgs/package.py b/var/spack/repos/builtin/packages/py-usgs/package.py
index 14d20b62cd..69f2b97056 100644
--- a/var/spack/repos/builtin/packages/py-usgs/package.py
+++ b/var/spack/repos/builtin/packages/py-usgs/package.py
@@ -10,7 +10,9 @@ class PyUsgs(PythonPackage):
"""Client library for interfacing with USGS datasets"""
homepage = "https://github.com/kapadia/usgs"
- url = "https://pypi.org/packages/source/u/usgs/usgs-0.2.7.tar.gz"
+ url = "https://pypi.io/packages/source/u/usgs/usgs-0.2.7.tar.gz"
+
+ maintainers = ['adamjstewart']
version('0.2.7', sha256='484e569ea1baf9574e11ccf15219957364690dcf06ee3d09afef030df944e79b')
diff --git a/var/spack/repos/builtin/packages/py-utils/package.py b/var/spack/repos/builtin/packages/py-utils/package.py
new file mode 100644
index 0000000000..e5a6c46989
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-utils/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 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 PyUtils(PythonPackage):
+ """Useful, oft-repeated things for Python"""
+
+ homepage = "https://github.com/haaksmash/pyutils"
+ url = "https://github.com/haaksmash/pyutils/archive/1.0.1.tar.gz"
+
+ version('1.0.1', sha256='3a6552db1678e86a1b5e31107d20ae90dc5fb858ff7936b95367ee9d1b99e9ae')
+ version('0.8.0', sha256='916672df4cf9647e44f0aa1b3b327eb361c3c0bac1b1e32a6cf723ca766a2d4b')
+
+ depends_on('python@3.6:', type=('build', 'run'), when='@1.0.0:')
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-uwsgi/package.py b/var/spack/repos/builtin/packages/py-uwsgi/package.py
index aed1882b04..fdc990d48d 100644
--- a/var/spack/repos/builtin/packages/py-uwsgi/package.py
+++ b/var/spack/repos/builtin/packages/py-uwsgi/package.py
@@ -11,7 +11,7 @@ class PyUwsgi(PythonPackage):
"""Web Application framework for low overhead web services"""
homepage = "https://github.com/unbit/uwsgi/"
- url = "https://pypi.org/packages/source/u/uwsgi/uwsgi-2.0.18.tar.gz"
+ url = "https://pypi.io/packages/source/u/uwsgi/uwsgi-2.0.18.tar.gz"
version('2.0.18', sha256='4972ac538800fb2d421027f49b4a1869b66048839507ccf0aa2fda792d99f583')
diff --git a/var/spack/repos/builtin/packages/py-vcf-kit/package.py b/var/spack/repos/builtin/packages/py-vcf-kit/package.py
new file mode 100644
index 0000000000..f3f4b0302b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-vcf-kit/package.py
@@ -0,0 +1,42 @@
+# Copyright 2013-2020 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 PyVcfKit(PythonPackage):
+ """VCF-kit is a command-line based collection of utilities for performing
+ analysis on Variant Call Format (VCF) files."""
+
+ homepage = "https://github.com/AndersenLab/VCF-kit"
+ url = "https://github.com/AndersenLab/VCF-kit/archive/0.1.6.tar.gz"
+
+ version('0.1.6', sha256='4865414ac9dc6996c0baeefadf1d528c28e6d0c3cc3dbdc28a2cdc6e06212428')
+
+ depends_on('python@2.7:2.8', type=('build', 'run'))
+ depends_on('py-setuptools', type='build')
+ depends_on('py-awesome-slugify', type=('build', 'run'))
+ depends_on('py-matplotlib', type=('build', 'run'))
+ depends_on('py-scipy', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'))
+ depends_on('py-cython@0.24.1:', type='build')
+ depends_on('py-cyvcf2@0.6.5:', type=('build', 'run'))
+ depends_on('py-docopt', type=('build', 'run'))
+ depends_on('py-biopython', type=('build', 'run'))
+ depends_on('py-yahmm@1.1.2', type=('build', 'run'))
+ depends_on('py-clint', type=('build', 'run'))
+ depends_on('py-requests', type=('build', 'run'))
+ depends_on('py-networkx@1.11', type=('build', 'run'))
+ depends_on('py-intervaltree@2.1.0', type=('build', 'run'))
+ depends_on('py-tabulate', type=('build', 'run'))
+ depends_on('py-jinja2', type=('build', 'run'))
+
+ depends_on('bwa@0.7.12:', type='run')
+ depends_on('samtools@1.3:', type='run')
+ depends_on('bcftools@1.3:', type='run')
+ depends_on('blast-plus@2.2.31:', type='run')
+ depends_on('muscle@3.8.31:', type='run')
+ depends_on('primer3', type='run')
+ depends_on('vcftools', type='run')
diff --git a/var/spack/repos/builtin/packages/py-versioneer/package.py b/var/spack/repos/builtin/packages/py-versioneer/package.py
new file mode 100644
index 0000000000..d98ec6524c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-versioneer/package.py
@@ -0,0 +1,21 @@
+# Copyright 2013-2020 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 PyVersioneer(PythonPackage):
+ """Versioneer is a tool to automatically update version strings by
+ asking your version-control system about the current tree."""
+
+ homepage = "https://github.com/warner/python-versioneer"
+ url = "https://github.com/warner/python-versioneer/archive/0.18.tar.gz"
+ git = "https://github.com/warner/python-versioneer.git"
+
+ maintainers = ['scemama']
+
+ version('0.18', sha256='cf895b67f5bc62d61c4837458069ded8f66b4e5764c19f7253c51ee27e8b3a99')
+
+ depends_on('py-setuptools', type='build')
diff --git a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py
index aa6dbb31c2..347641a8da 100644
--- a/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py
+++ b/var/spack/repos/builtin/packages/py-widgetsnbextension/package.py
@@ -14,6 +14,7 @@ class PyWidgetsnbextension(PythonPackage):
version('3.5.1', sha256='079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7')
version('3.4.2', sha256='fa618be8435447a017fd1bf2c7ae922d0428056cfc7449f7a8641edf76b48265')
+ version('3.4.0', sha256='c9d6e426a1d79d132b57b93b368feba2c66eb7b0fd34bdb901716b4b88e94497')
version('3.3.0', sha256='c5280a62d293735cdadc7b8884e2affcfb0488420ee09963577f042359726392')
version('1.2.6', sha256='c618cfb32978c9517caf0b4ef3aec312f8dd138577745e7b0d4abfcc7315ce51')
diff --git a/var/spack/repos/builtin/packages/py-yahmm/package.py b/var/spack/repos/builtin/packages/py-yahmm/package.py
new file mode 100644
index 0000000000..a612930d49
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-yahmm/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2020 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 PyYahmm(PythonPackage):
+ """YAHMM is a HMM package for Python, implemented in Cython for speed."""
+
+ homepage = "http://pypi.python.org/pypi/yahmm/"
+ url = "https://pypi.io/packages/source/y/yahmm/yahmm-1.1.3.zip"
+
+ version('1.1.3', sha256='fe3614ef96da9410468976756fb93dc8235485242c05df01d8e5ed356a7dfb43')
+
+ depends_on('py-cython@0.20.1:', type=('build', 'run'))
+ depends_on('py-numpy@1.8.0:', type=('build', 'run'))
+ depends_on('py-scipy@0.13.3:', type=('build', 'run'))
+ depends_on('py-matplotlib@1.3.1:', type=('build', 'run'))
+ depends_on('py-networkx@1.8.1:', type=('build', 'run'))
+ depends_on('py-nose@1.3.3:', type='test')
diff --git a/var/spack/repos/builtin/packages/py-youtube-dl/package.py b/var/spack/repos/builtin/packages/py-youtube-dl/package.py
new file mode 100644
index 0000000000..48fdf7dea7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-youtube-dl/package.py
@@ -0,0 +1,19 @@
+# Copyright 2013-2020 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 PyYoutubeDl(PythonPackage):
+ """Command-line program to download videos from YouTube.com and other video
+ sites."""
+
+ homepage = "https://github.com/ytdl-org/youtube-dl"
+ url = "https://pypi.io/packages/source/y/youtube_dl/youtube_dl-2020.3.24.tar.gz"
+
+ version('2020.3.24', sha256='4b03efe439f7cae26eba909821d1df00a9a4eb82741cb2e8b78fe29702bd4633')
+
+ depends_on('py-setuptools', type=('build', 'run'))
+ depends_on('ffmpeg+openssl', type='run')
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py
index 978548163b..3b675a02b6 100644
--- a/var/spack/repos/builtin/packages/python/package.py
+++ b/var/spack/repos/builtin/packages/python/package.py
@@ -31,6 +31,7 @@ class Python(AutotoolsPackage):
maintainers = ['adamjstewart']
+ version('3.8.2', sha256='e634a7a74776c2b89516b2e013dda1728c89c8149b9863b8cea21946daf9d561')
version('3.8.1', sha256='c7cfa39a43b994621b245e029769e9126caa2a93571cee2e743b213cceac35fb')
version('3.8.0', sha256='f1069ad3cae8e7ec467aa98a6565a62a48ef196cb8f1455a245a08db5e1792df')
version('3.7.6', sha256='aeee681c235ad336af116f08ab6563361a0c81c537072c1b309d6e4050aa2114', preferred=True)
@@ -669,6 +670,11 @@ class Python(AutotoolsPackage):
# to ask Python where its LIBDIR is.
libdir = self.get_config_var('LIBDIR')
+ # In Ubuntu 16.04.6 and python 2.7.12 from the system, lib could be
+ # in LBPL
+ # https://mail.python.org/pipermail/python-dev/2013-April/125733.html
+ libpl = self.get_config_var('LIBPL')
+
# The system Python installation on macOS and Homebrew installations
# install libraries into a Frameworks directory
frameworkprefix = self.get_config_var('PYTHONFRAMEWORKPREFIX')
@@ -678,6 +684,8 @@ class Python(AutotoolsPackage):
if os.path.exists(os.path.join(libdir, ldlibrary)):
return LibraryList(os.path.join(libdir, ldlibrary))
+ elif os.path.exists(os.path.join(libpl, ldlibrary)):
+ return LibraryList(os.path.join(libpl, ldlibrary))
elif os.path.exists(os.path.join(frameworkprefix, ldlibrary)):
return LibraryList(os.path.join(frameworkprefix, ldlibrary))
else:
diff --git a/var/spack/repos/builtin/packages/qca/package.py b/var/spack/repos/builtin/packages/qca/package.py
index cbf1da8932..9a040bc667 100644
--- a/var/spack/repos/builtin/packages/qca/package.py
+++ b/var/spack/repos/builtin/packages/qca/package.py
@@ -20,8 +20,10 @@ class Qca(CMakePackage):
homepage = "https://userbase.kde.org/QCA"
url = "https://github.com/KDE/qca/archive/v2.1.3.tar.gz"
- version('2.2.1', sha256='c67fc0fa8ae6cb3d0ba0fbd8fca8ee8e4c5061b99f1fd685fd7d9800cef17f6b')
- version('2.1.3', sha256='a5135ffb0250a40e9c361eb10cd3fe28293f0cf4e5c69d3761481eafd7968067')
+ version('2.3.0', sha256='39aa18f0985d82949f4dccce04af3eb8d4b6b64e0c71785786738d38d8183b0a')
+ version('2.2.90', sha256='074ac753b51a6fa15503be9418f7430effe368fd31dc41567942d832e539b17e')
+ version('2.2.1', sha256='c67fc0fa8ae6cb3d0ba0fbd8fca8ee8e4c5061b99f1fd685fd7d9800cef17f6b')
+ version('2.1.3', sha256='a5135ffb0250a40e9c361eb10cd3fe28293f0cf4e5c69d3761481eafd7968067')
depends_on('qt@4.2:')
diff --git a/var/spack/repos/builtin/packages/qgis/package.py b/var/spack/repos/builtin/packages/qgis/package.py
new file mode 100644
index 0000000000..1edf4c2972
--- /dev/null
+++ b/var/spack/repos/builtin/packages/qgis/package.py
@@ -0,0 +1,219 @@
+# 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 Qgis(CMakePackage):
+ """QGIS is a free and open-source cross-platform desktop geographic
+ information system application that supports viewing, editing, and
+ analysis of geospatial data.
+ """
+
+ homepage = "https://qgis.org"
+ url = "https://qgis.org/downloads/qgis-3.8.1.tar.bz2"
+
+ maintainers = ['adamjstewart', 'Sinan81']
+
+ version('3.12.1', sha256='a7dc7af768b8960c08ce72a06c1f4ca4664f4197ce29c7fe238429e48b2881a8')
+ version('3.12.0', sha256='19e9c185dfe88cad7ee6e0dcf5ab7b0bbfe1672307868a53bf771e0c8f9d5e9c')
+ # Prefer latest long term release
+ version('3.10.4', sha256='a032e2b8144c2fd825bc26766f586cfb1bd8574bc72efd1aa8ce18dfff8b6c9f', preferred=True)
+ version('3.10.3', sha256='0869704df9120dd642996ff1ed50213ac8247650aa0640b62f8c9c581c05d7a7')
+ version('3.10.2', sha256='381cb01a8ac2f5379a915b124e9c830d727d2c67775ec49609c7153fe765a6f7')
+ version('3.10.1', sha256='466ac9fad91f266cf3b9d148f58e2adebd5b9fcfc03e6730eb72251e6c34c8ab')
+ version('3.10.0', sha256='25eb1c41d9fb922ffa337a720dfdceee43cf2d38409923f087c2010c9742f012')
+ version('3.8.3', sha256='3cca3e8483bc158cb8e972eb819a55a5734ba70f2c7da28ebc485864aafb17bd')
+ version('3.8.2', sha256='4d682f7625465a5b3596b3f7e83eddad86a60384fead9c81a6870704baffaddd')
+ version('3.8.1', sha256='d65c8e1c7471bba46f5017f261ebbef81dffb5843a24f0e7713a00f70785ea99')
+ version('3.4.15', sha256='81c93b72adbea41bd765294c0cdb09476a632d8b3f90101abc409ca9ea7fb04d')
+ version('3.4.14', sha256='e138716c7ea84011d3b28fb9c75e6a79322fb66f532246393571906a595d7261')
+
+ variant('3d', default=False, description='Build QGIS 3D library')
+ variant('analysis', default=True, description='Build QGIS analysis library')
+ variant('apidoc', default=False, description='Build QGIS API doxygen documentation')
+ variant('astyle', default=False, description='Contribute QGIS with astyle')
+ variant('bindings', default=True, description='Build Python bindings')
+ variant('clang_tidy', default=False, description='Use Clang tidy')
+ variant('core', default=True, description='Build QGIS Core')
+ variant('custom_widgets', default=False, description='Build QGIS custom widgets for Qt Designer')
+ variant('desktop', default=True, description='Build QGIS desktop')
+ variant('georeferencer', default=True, description='Build GeoReferencer plugin')
+ variant('globe', default=False, description='Build Globe plugin')
+ variant('grass7', default=False, description='Build with GRASS providers and plugin')
+ variant('gui', default=True, description='Build QGIS GUI library and everything built on top of it')
+ variant('internal_mdal', default=True, description='Build with MDAl support')
+ variant('internal_o2', default=True, description='Download and locally include source of o2 library')
+ variant('oauth2_plugin', default=True, description='Build OAuth2 authentication method plugin')
+ variant('oracle', default=False, description='Build with Oracle support')
+ variant('postgresql', default=True, description='Build with PostreSQL support')
+ variant('py_compile', default=False, description='Byte compile Python modules in staged or installed locations')
+ variant('qsciapi', default=True, description='Generate PyQGIS QScintilla2 API')
+ variant('qspatialite', default=False, description='Build QSpatialite sql driver')
+ variant('qt5serialport', default=True, description='Try Qt5SerialPort for GPS positioning')
+ variant('qtmobility', default=False, description='Build QtMobility related code')
+ variant('qtwebkit', default=False, description='Enable QtWebkit Support')
+ variant('quick', default=False, description='Build QGIS Quick library')
+ variant('qwtpolar', default=False, description='Build QwtPolar')
+ variant('server', default=False, description='Build QGIS server')
+ variant('staged_plugins', default=True, description='Stage-install core Python plugins to run from build directory')
+ variant('thread_local', default=True, description='Use std::thread_local')
+ variant('txt2tags', default=False, description='Generate PDF for txt2tags documentation')
+
+ # Ref. for dependencies:
+ # http://htmlpreview.github.io/?https://raw.github.com/qgis/QGIS/master/doc/INSTALL.html
+ # https://github.com/qgis/QGIS/blob/master/INSTALL
+ depends_on('exiv2')
+ depends_on('expat@1.95:')
+ depends_on('gdal@2.1.0: +python', type=('build', 'link', 'run'))
+ depends_on('geos@3.4.0:')
+ depends_on('libspatialindex')
+ depends_on('libspatialite@4.2.0:')
+ depends_on('libzip')
+ depends_on('proj@4.4.0:')
+ depends_on('py-psycopg2', type=('build', 'run')) # TODO: is build dependency necessary?
+ depends_on('py-pyqt4', when='@2')
+ depends_on('py-pyqt5@5.3:', when='@3')
+ depends_on('py-requests', type=('build', 'run')) # TODO: is build dependency necessary?
+ depends_on('python@2.7:2.8', type=('build', 'run'), when='@2')
+ depends_on('python@3.0.0:', type=('build', 'run'), when='@3')
+ depends_on('qca@2.2.1')
+ depends_on('qjson')
+ depends_on('qscintilla +python')
+ depends_on('qt+dbus')
+ depends_on('qtkeychain@0.5:', when='@3:')
+ depends_on('qwt@5:')
+ depends_on('qwtpolar')
+ depends_on('sqlite@3.0.0: +column_metadata')
+
+ # Runtime python dependencies, not mentioned in install instructions
+ depends_on('py-pyyaml', type='run')
+ depends_on('py-owslib', type='run')
+ depends_on('py-jinja2', type='run')
+ depends_on('py-pygments', type='run')
+
+ # optionals
+ depends_on('postgresql@8:', when='+postgresql') # for PostGIS support
+ depends_on('gsl', when='+georeferencer') # for georeferencer
+ depends_on('grass@7.0.0', type=('build', 'link', 'run'), when='+grass7') # for georeferencer
+
+ # the below dependencies are shown in cmake config
+ depends_on('hdf5')
+ depends_on('netcdf-c')
+
+ # build
+ depends_on('cmake@3.0.0:', type='build')
+ depends_on('flex@2.5.6:', type='build')
+ depends_on('bison@2.4:', type='build')
+ depends_on('pkg-config', type='build')
+
+ # Take care of conflicts using depends_on
+ depends_on('proj@5:', when='@3.8.2:')
+ depends_on('qt@5.9.0:5.12.99', when='@3.8')
+ depends_on('qt@5.9.0:', when='@3.10.0:')
+ depends_on('qtkeychain@:1.5.99', when='^qt@4')
+ depends_on('qt@:4', when='@2')
+
+ patch('pyqt5.patch', when='^qt@5')
+
+ def cmake_args(self):
+ spec = self.spec
+ args = []
+ # qtwebkit module was removed from qt as of version 5.6
+ # needs to be compiled as a separate package
+ args.extend([
+ '-DUSE_OPENCL=OFF',
+ # cmake couldn't determine the following paths
+ '-DEXPAT_LIBRARY={0}'.format(self.spec['expat'].libs),
+ '-DPOSTGRESQL_PREFIX={0}'.format(
+ self.spec['postgresql'].prefix),
+ '-DQSCINTILLA_INCLUDE_DIR=' +
+ self.spec['qscintilla'].prefix.include,
+ '-DQSCINTILLA_LIBRARY=' + self.spec['qscintilla'].prefix +
+ '/lib/libqscintilla2_qt5.so',
+ '-DLIBZIP_INCLUDE_DIR=' +
+ self.spec['libzip'].prefix.include,
+ '-DLIBZIP_CONF_INCLUDE_DIR=' +
+ self.spec['libzip'].prefix.lib.libzip.include,
+ '-DGDAL_CONFIG_PREFER_PATH=' +
+ self.spec['gdal'].prefix.bin,
+ '-DGEOS_CONFIG_PREFER_PATH=' +
+ self.spec['geos'].prefix.bin,
+ '-DGSL_CONFIG_PREFER_PATH=' + self.spec['gsl'].prefix.bin,
+ '-DPOSTGRES_CONFIG_PREFER_PATH=' +
+ self.spec['postgresql'].prefix.bin
+ ])
+
+ args.extend([
+ '-DWITH_3D={0}'.format(
+ 'TRUE' if '+3d' in spec else 'FALSE'),
+ '-DWITH_ANALYSIS={0}'.format(
+ 'TRUE' if '+analysis' in spec else 'FALSE'),
+ '-DWITH_APIDOC={0}'.format(
+ 'TRUE' if '+apidoc' in spec else 'FALSE'),
+ '-DWITH_ASTYLE={0}'.format(
+ 'TRUE' if '+astyle' in spec else 'FALSE'),
+ '-DWITH_BINDINGS={0}'.format(
+ 'TRUE' if '+bindings' in spec else 'FALSE'),
+ '-DWITH_CLANG_TIDY={0}'.format(
+ 'TRUE' if '+clang_tidy' in spec else 'FALSE'),
+ '-DWITH_CORE={0}'.format(
+ 'TRUE' if '+core' in spec else 'FALSE'),
+ '-DWITH_CUSTOM_WIDGETS={0}'.format(
+ 'TRUE' if '+custom_widgets' in spec else 'FALSE'),
+ '-DWITH_DESKTOP={0}'.format(
+ 'TRUE' if '+desktop' in spec else 'FALSE'),
+ '-DWITH_GEOREFERENCER={0}'.format(
+ 'TRUE' if '+georeferencer' in spec else 'FALSE'),
+ '-DWITH_GLOBE={0}'.format(
+ 'TRUE' if '+globe' in spec else 'FALSE'),
+ '-DWITH_GUI={0}'.format(
+ 'TRUE' if '+gui' in spec else 'FALSE'),
+ '-DWITH_INTERNAL_MDAL={0}'.format(
+ 'TRUE' if '+internal_mdal' in spec else 'FALSE'),
+ '-DWITH_INTERNAL_O2={0}'.format(
+ 'ON' if '+internal_o2' in spec else 'OFF'),
+ '-DWITH_OAUTH2_PLUGIN={0}'.format(
+ 'TRUE' if '+oauth2_plugin' in spec else 'FALSE'),
+ '-DWITH_ORACLE={0}'.format(
+ 'TRUE' if '+oracle' in spec else 'FALSE'),
+ '-DWITH_POSTGRESQL={0}'.format(
+ 'TRUE' if '+postgresql' in spec else 'FALSE'),
+ '-DWITH_PY_COMPILE={0}'.format(
+ 'TRUE' if '+py_compile' in spec else 'FALSE'),
+ '-DWITH_QSCIAPI={0}'.format(
+ 'TRUE' if '+qsciapi' in spec else 'FALSE'),
+ '-DWITH_QSPATIALITE={0}'.format(
+ 'ON' if '+qspatialite' in spec else 'OFF'),
+ '-DWITH_QT5SERIALPORT={0}'.format(
+ 'TRUE' if '+qt5serialport' in spec else 'FALSE'),
+ '-DWITH_QTMOBILITY={0}'.format(
+ 'TRUE' if '+qtmobility' in spec else 'FALSE'),
+ '-DWITH_QTWEBKIT={0}'.format(
+ 'ON' if '+qtwebkit' in spec else 'OFF'),
+ '-DWITH_QUICK={0}'.format(
+ 'TRUE' if '+quick' in spec else 'FALSE'),
+ '-DWITH_QWTPOLAR={0}'.format(
+ 'TRUE' if '+qwtpolar' in spec else 'FALSE'),
+ '-DWITH_SERVER={0}'.format(
+ 'TRUE' if '+server' in spec else 'FALSE'),
+ '-DWITH_STAGED_PLUGINS={0}'.format(
+ 'TRUE' if '+staged_plugins' in spec else 'FALSE'),
+ '-DWITH_THREAD_LOCAL={0}'.format(
+ 'TRUE' if '+thread_local' in spec else 'FALSE'),
+ '-DWITH_TXT2TAGS_PDF={0}'.format(
+ 'TRUE' if '+txt2tags_pdf' in spec else 'FALSE'),
+ ])
+
+ if '+grass7' in self.spec:
+ args.extend([
+ '-DWITH_GRASS7=ON',
+ '-DGRASS_PREFIX7={0}'.format(self.spec['grass'].prefix),
+ '-DGRASS_INCLUDE_DIR7={0}'.format(
+ self.spec['grass'].prefix.include)
+ ])
+ else:
+ args.append('-DWITH_GRASS7=OFF')
+ return args
diff --git a/var/spack/repos/builtin/packages/qgis/pyqt5.patch b/var/spack/repos/builtin/packages/qgis/pyqt5.patch
new file mode 100644
index 0000000000..1e6b7e6149
--- /dev/null
+++ b/var/spack/repos/builtin/packages/qgis/pyqt5.patch
@@ -0,0 +1,25 @@
+diff --git a/cmake/FindPyQt5.py b/cmake/FindPyQt5.py
+index 6a55a0f801..d6eda1fa1e 100644
+--- a/cmake/FindPyQt5.py
++++ b/cmake/FindPyQt5.py
+@@ -40,6 +40,7 @@ except ImportError:
+ import sys
+ cfg = sipconfig.Configuration()
+ sip_dir = cfg.default_sip_dir
++ pyqt_prefix = os.sep.join(PyQt5.QtCore.__file__.split(os.sep)[0:-5])
+ if sys.platform.startswith('freebsd'):
+ py_version = str(sys.version_info.major) + str(sys.version_info.minor)
+ sip_dir = sip_dir.replace(py_version, '')
+@@ -53,9 +54,9 @@ except ImportError:
+ 'pyqt_version': PyQt5.QtCore.PYQT_VERSION,
+ 'pyqt_version_str': PyQt5.QtCore.PYQT_VERSION_STR,
+ 'pyqt_sip_flags': PyQt5.QtCore.PYQT_CONFIGURATION['sip_flags'],
+- 'pyqt_mod_dir': os.path.join(cfg.default_mod_dir, "PyQt5"),
+- 'pyqt_sip_dir': sip_dir,
+- 'pyqt_bin_dir': cfg.default_bin_dir,
++ 'pyqt_mod_dir': os.path.dirname(PyQt5.QtCore.__file__),
++ 'pyqt_sip_dir': os.path.join(pyqt_prefix,'share','sip','PyQt5'),
++ 'pyqt_bin_dir': os.path.join(pyqt_prefix,'bin'),
+ }
+ pyqtcfg = sipconfig.Configuration([cfg])
+
diff --git a/var/spack/repos/builtin/packages/qmcpack/package.py b/var/spack/repos/builtin/packages/qmcpack/package.py
index 0ad9ac2418..9484e8a169 100644
--- a/var/spack/repos/builtin/packages/qmcpack/package.py
+++ b/var/spack/repos/builtin/packages/qmcpack/package.py
@@ -44,11 +44,10 @@ class Qmcpack(CMakePackage, CudaPackage):
description='Build the complex (general twist/k-point) version')
variant('mixed', default=False,
description='Build the mixed precision (mixture of single and '
- 'double precision) version for gpu and cpu')
+ 'double precision) version')
variant('soa', default=True,
description='Build with Structure-of-Array instead of '
- 'Array-of-Structure code. Only for CPU code'
- 'and only in mixed precision')
+ 'Array-of-Structure code. Only for CPU code')
variant('timers', default=False,
description='Build with support for timers')
variant('da', default=False,
@@ -57,10 +56,22 @@ class Qmcpack(CMakePackage, CudaPackage):
description='Install with Matplotlib (long installation time)')
variant('qe', default=False,
description='Install with patched Quantum Espresso 6.4.1')
-
+ variant('afqmc', default=False,
+ description='Install with AFQMC support. NOTE that if used in '
+ 'combination with CUDA, only AFQMC will have CUDA.')
+ variant('ppconvert', default=False,
+ description='Install with pseudopotential converter.')
+
+ # Notes about CUDA-centric peculiarities:
+ #
# cuda variant implies mixed precision variant by default, but there is
# no way to express this in variant syntax, need something like
# variant('+mixed', default=True, when='+cuda', description="...")
+ #
+ # cuda+afqmc variant will not build the legacy CUDA code in real-space
+ # QMCPACK. This is due to a conflict in the build system. This is not
+ # worth fixing since the legacy CUDA code, will be superseded
+ # by the OpenMP 4.5 code.
# high-level variant conflicts
conflicts(
@@ -83,8 +94,9 @@ class Qmcpack(CMakePackage, CudaPackage):
conflicts('^openblas+ilp64',
msg='QMCPACK does not support OpenBLAS 64-bit integer variant')
- conflicts('^intel-mkl+ilp64',
- msg='QMCPACK does not support MKL 64-bit integer variant')
+ # Omitted for now due to concretizer bug
+ # conflicts('^intel-mkl+ilp64',
+ # msg='QMCPACK does not support MKL 64-bit integer variant')
# QMCPACK 3.6.0 or later requires support for C++14
compiler_warning = 'QMCPACK 3.6.0 or later requires a ' \
@@ -94,6 +106,12 @@ class Qmcpack(CMakePackage, CudaPackage):
conflicts('%pgi@:17', when='@3.6.0:', msg=compiler_warning)
conflicts('%llvm@:3.4', when='@3.6.0:', msg=compiler_warning)
+ conflicts('+afqmc', when='@:3.6.0', msg='AFQMC not recommended before v3.7')
+ conflicts('+afqmc', when='~mpi', msg='AFQMC requires building with +mpi')
+ conflicts('+afqmc', when='%gcc@:6.0', msg='AFQMC code requires gcc@6.1 or greater')
+ conflicts('+afqmc', when='%clang@:4.0', msg='AFQMC code requires clang 4.1 or greater')
+ conflicts('+afqmc', when='%intel@:18', msg='AFQMC code requires intel19 or greater')
+
# Prior to QMCPACK 3.5.0 Intel MKL was not properly detected with
# non-Intel compilers without a Spack-based hack. This hack
# had the potential for negative side effects and led to more
@@ -169,6 +187,8 @@ class Qmcpack(CMakePackage, CudaPackage):
patch_checksum = 'c066c79901a612cf8848135e0d544efb114534cca70b90bfccc8ed989d3d9dde'
patch(patch_url, sha256=patch_checksum, when='@3.1.0:3.3.0')
+ # the default flag_handler for Spack causes problems for QMCPACK
+ # https://spack.readthedocs.io/en/latest/packaging_guide.html#the-build-environment:
flag_handler = CMakePackage.build_system_flags
@when('@:3.7.0')
@@ -179,6 +199,15 @@ class Qmcpack(CMakePackage, CudaPackage):
'${LIBXML2_HOME}/lib $ENV{LIBXML2_HOME}/lib',
'CMake/FindLibxml2QMC.cmake')
+ @property
+ def build_targets(self):
+ spec = self.spec
+ targets = ['all']
+ if '+ppconvert' in spec:
+ targets.append('ppconvert')
+
+ return targets
+
def cmake_args(self):
spec = self.spec
args = []
@@ -231,6 +260,11 @@ class Qmcpack(CMakePackage, CudaPackage):
else:
args.append('-DQMC_COMPLEX=0')
+ if '+afqmc' in spec:
+ args.append('-DBUILD_AFQMC=1')
+ else:
+ args.append('-DBUILD_AFQMC=0')
+
# When '-DQMC_CUDA=1', CMake automatically sets:
# '-DQMC_MIXED_PRECISION=1'
#
@@ -238,7 +272,12 @@ class Qmcpack(CMakePackage, CudaPackage):
# tested.
if '+cuda' in spec:
- args.append('-DQMC_CUDA=1')
+ # Cannot support both CUDA builds at the same time, see
+ # earlier notes in this package.
+ if '+afqmc' in spec:
+ args.append('-DENABLE_CUDA=1')
+ else:
+ args.append('-DQMC_CUDA=1')
cuda_arch_list = spec.variants['cuda_arch'].value
cuda_arch = cuda_arch_list[0]
if len(cuda_arch_list) > 1:
@@ -298,32 +337,29 @@ class Qmcpack(CMakePackage, CudaPackage):
# Next two environment variables were introduced in QMCPACK 3.5.0
# Prior to v3.5.0, these lines should be benign but CMake
# may issue a warning.
- if 'intel-mkl' in spec:
+ if '^mkl' in spec:
args.append('-DENABLE_MKL=1')
args.append('-DMKL_ROOT=%s' % env['MKLROOT'])
else:
args.append('-DENABLE_MKL=0')
+ # ppconvert is not build by default because it may exhibit numerical
+ # issues on some systems
+ if '+ppconvert' in spec:
+ args.append('-DBUILD_PPCONVERT=1')
+ else:
+ args.append('-DBUILD_PPCONVERT=0')
+
return args
- # QMCPACK 3.6.0 release and later has a functional 'make install',
- # the Spack 'def install' is retained for backwards compatiblity.
- # Note that the two install methods differ in their directory
- # structure. Additionally, we follow the recommendation on the Spack
- # website for defining the compilers to be the MPI compiler wrappers.
+ # QMCPACK needs custom install method for a couple of reasons:
+ # Firstly, wee follow the recommendation on the Spack website
+ # for defining the compilers variables to be the MPI compiler wrappers.
# https://spack.readthedocs.io/en/latest/packaging_guide.html#compiler-wrappers
- @when('@3.6.0:')
- def install(self, spec, prefix):
- if '+mpi' in spec:
- env['CC'] = spec['mpi'].mpicc
- env['CXX'] = spec['mpi'].mpicxx
- env['F77'] = spec['mpi'].mpif77
- env['FC'] = spec['mpi'].mpifc
-
- with working_dir(self.build_directory):
- make('install')
-
- @when('@:3.5.0')
+ #
+ # Note that 3.6.0 release and later has a functioning 'make install',
+ # but still does not install nexus, manual, etc. So, there is no compelling
+ # reason to use QMCPACK's built-in version at this time.
def install(self, spec, prefix):
if '+mpi' in spec:
env['CC'] = spec['mpi'].mpicc
@@ -331,46 +367,25 @@ class Qmcpack(CMakePackage, CudaPackage):
env['F77'] = spec['mpi'].mpif77
env['FC'] = spec['mpi'].mpifc
- # QMCPACK 'make install' does nothing, which causes
- # Spack to throw an error.
- #
- # This install method creates the top level directory
- # and copies the bin subdirectory into the appropriate
- # location. We do not copy include or lib at this time due
- # to technical difficulties in qmcpack itself.
-
+ # create top-level directory
mkdirp(prefix)
- # We assume cwd is self.stage.source_path
-
- # install manual
+ # We assume cwd is self.stage.source_path, then
+ # install manual, labs, and nexus
install_tree('manual', prefix.manual)
-
- # install nexus
+ install_tree('labs', prefix.labs)
install_tree('nexus', prefix.nexus)
+ # install binaries
with working_dir(self.build_directory):
- mkdirp(prefix)
-
- # install binaries
install_tree('bin', prefix.bin)
- # QMCPACK 3.6.0 install directory structure changed, thus there
- # thus are two version of the setup_run_environment method
- @when('@:3.5.0')
def setup_run_environment(self, env):
"""Set-up runtime environment for QMCPACK.
- Set PYTHONPATH for basic analysis scripts and for Nexus."""
- env.prepend_path('PYTHONPATH', self.prefix.nexus)
+ Set PATH and PYTHONPATH for basic analysis scripts for Nexus."""
- @when('@3.6.0:')
- def setup_run_environment(self, env):
- """Set-up runtime environment for QMCPACK.
- Set PYTHONPATH for basic analysis scripts and for Nexus. Binaries
- are in the 'prefix' directory instead of 'prefix.bin' which is
- not set by the default module environment"""
- env.prepend_path('PATH', self.prefix)
- env.prepend_path('PYTHONPATH', self.prefix)
+ env.prepend_path('PATH', self.prefix.nexus.bin)
+ env.prepend_path('PYTHONPATH', self.prefix.nexus.lib)
@run_after('build')
@on_package_attributes(run_tests=True)
diff --git a/var/spack/repos/builtin/packages/qrupdate/package.py b/var/spack/repos/builtin/packages/qrupdate/package.py
index 185bd1f421..3f21501711 100644
--- a/var/spack/repos/builtin/packages/qrupdate/package.py
+++ b/var/spack/repos/builtin/packages/qrupdate/package.py
@@ -29,17 +29,31 @@ class Qrupdate(MakefilePackage):
return
def install(self, spec, prefix):
+
lapack_blas = spec['lapack'].libs + spec['blas'].libs
- # Build static and dynamic libraries
- make('lib', 'solib',
- 'BLAS={0}'.format(lapack_blas.ld_flags),
- 'LAPACK={0}'.format(lapack_blas.ld_flags))
- # "INSTALL" confuses "make install" on case-insensitive filesystems
+
+ make_args = [
+ 'BLAS={0}'.format(lapack_blas.ld_flags),
+ 'LAPACK={0}'.format(lapack_blas.ld_flags)
+ ]
+
+ # If 64-bit BLAS is used:
+ if (spec.satisfies('^openblas+ilp64') or
+ spec.satisfies('^intel-mkl+ilp64') or
+ spec.satisfies('^intel-parallel-studio+mkl+ilp64')):
+ make_args.append('FFLAGS=-fdefault-integer-8')
+
+ # Build static and dynamic libraries:
+ make('lib', 'solib', *make_args)
+
+ # "INSTALL" confuses "make install" on case-insensitive filesystems:
if os.path.isfile("INSTALL"):
os.remove("INSTALL")
- # create lib folder:
+
+ # Create lib folder:
if (sys.platform == 'darwin'):
mkdirp(prefix.lib)
+
make("install", "PREFIX=%s" % prefix)
@run_after('install')
diff --git a/var/spack/repos/builtin/packages/qscintilla/package.py b/var/spack/repos/builtin/packages/qscintilla/package.py
index 9bee719c13..ec20257676 100644
--- a/var/spack/repos/builtin/packages/qscintilla/package.py
+++ b/var/spack/repos/builtin/packages/qscintilla/package.py
@@ -20,10 +20,14 @@ class Qscintilla(QMakePackage):
version('2.10.2', sha256='14b31d20717eed95ea9bea4cd16e5e1b72cee7ebac647cba878e0f6db6a65ed0', preferred=True)
variant('designer', default=False, description="Enable pluging for Qt-Designer")
- # No 'python' variant, since Python bindings will be
- # built by PyQt5+qsci instead
+ variant('python', default=False, description="Build python bindings")
depends_on('qt')
+ depends_on('py-pyqt5 +qsci_api', type=('build', 'run'), when='+python ^qt@5')
+ depends_on('py-pyqt4 +qsci_api', type=('build', 'run'), when='+python ^qt@4')
+ depends_on('python', type=('build', 'run'), when='+python')
+
+ extends('python', when='+python')
@run_before('qmake')
def chdir(self):
@@ -66,3 +70,73 @@ class Qscintilla(QMakePackage):
makefile.filter(r'\$\(INSTALL_ROOT\)' +
self.spec['qt'].prefix, '$(INSTALL_ROOT)')
make('install')
+
+ @run_after('install')
+ def make_qsci(self):
+ if '+python' in self.spec:
+ if '^py-pyqt4' in self.spec:
+ py_pyqtx = 'py-pyqt4'
+ pyqtx = 'PyQt4'
+ elif '^py-pyqt5' in self.spec:
+ py_pyqtx = 'py-pyqt5'
+ pyqtx = 'PyQt5'
+
+ with working_dir(join_path(self.stage.source_path, 'Python')):
+ pydir = join_path(
+ self.prefix,
+ self.spec['python'].package.site_packages_dir,
+ pyqtx)
+ mkdirp(os.path.join(self.prefix.share.sip, pyqtx))
+ python = self.spec['python'].command
+ python('configure.py', '--pyqt=' + pyqtx,
+ '--sip=' + self.spec['py-sip'].prefix.bin.sip,
+ '--qsci-incdir=' + self.spec.prefix.include,
+ '--qsci-libdir=' + self.spec.prefix.lib,
+ '--qsci-sipdir=' +
+ os.path.join(self.prefix.share.sip, pyqtx),
+ '--apidir=' + self.prefix.share.qsci,
+ '--destdir=' + pydir,
+ '--pyqt-sipdir=' + os.path.join(
+ self.spec[py_pyqtx].prefix.share.sip, pyqtx),
+ '--sip-incdir=' +
+ join_path(self.spec['py-sip'].prefix.include,
+ 'python' +
+ str(self.spec['python'].version.up_to(2))),
+ '--stubsdir=' + pydir)
+
+ # Fix build errors
+ # "QAbstractScrollArea: No such file or directory"
+ # "qprinter.h: No such file or directory"
+ # ".../Qsci.so: undefined symbol: _ZTI10Qsci...."
+ qscipro = FileFilter('Qsci/Qsci.pro')
+ if '^qt@4' in self.spec:
+ qtx = 'qt4'
+ elif '^qt@5' in self.spec:
+ qtx = 'qt5'
+
+ link_qscilibs = 'LIBS += -L' + self.prefix.lib +\
+ ' -lqscintilla2_' + qtx
+ qscipro.filter('TEMPLATE = lib',
+ 'TEMPLATE = lib\nQT += widgets' +
+ '\nQT += printsupport\n' + link_qscilibs)
+
+ make()
+
+ # Fix installation prefixes
+ makefile = FileFilter('Makefile')
+ makefile.filter(r'\$\(INSTALL_ROOT\)', '')
+ makefile = FileFilter('Qsci/Makefile')
+ makefile.filter(r'\$\(INSTALL_ROOT\)', '')
+
+ make('install')
+
+ @run_after('install')
+ def extend_path_setup(self):
+ # See github issue #14121 and PR #15297
+ module = self.spec['py-sip'].variants['module'].value
+ if module != 'sip':
+ module = module.split('.')[0]
+ with working_dir(site_packages_dir):
+ with open(os.path.join(module, '__init__.py'), 'w') as f:
+ f.write('from pkgutil import extend_path\n')
+ f.write('__path__ = extend_path(__path__, __name__)\n')
diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py
index c07aa5c86e..408ebc9f59 100644
--- a/var/spack/repos/builtin/packages/qt/package.py
+++ b/var/spack/repos/builtin/packages/qt/package.py
@@ -24,6 +24,7 @@ class Qt(Package):
phases = ['configure', 'build', 'install']
+ version('5.14.2', sha256='c6fcd53c744df89e7d3223c02838a33309bd1c291fcb6f9341505fe99f7f19fa')
version('5.14.1', sha256='6f17f488f512b39c2feb57d83a5e0a13dcef32999bea2e2a8f832f54a29badb8')
version('5.14.0', sha256='be9a77cd4e1f9d70b58621d0753be19ea498e6b0da0398753e5038426f76a8ba')
version('5.13.1', sha256='adf00266dc38352a166a9739f1a24a1e36f1be9c04bf72e16e142a256436974e')
@@ -128,13 +129,13 @@ class Qt(Package):
depends_on("gperf", when='+webkit')
depends_on("gtkplus", when='+gtk')
depends_on("openssl", when='+ssl')
- depends_on("sqlite", when='+sql', type=('build', 'run'))
- depends_on("sqlite+column_metadata", when='+sql%intel', type=('build', 'run'))
+ depends_on("sqlite+column_metadata", when='+sql', type=('build', 'run'))
depends_on("libpng@1.2.57", when='@3')
+ depends_on("libsm", when='@3')
depends_on("pcre+multibyte", when='@5.0:5.8')
depends_on("inputproto", when='@:5.8')
- depends_on("openssl@:1.0.999", when='@:5.9+ssl')
+ depends_on("openssl@:1.0.999", when='@4:5.9+ssl')
depends_on("glib", when='@4:')
depends_on("libpng", when='@4:')
diff --git a/var/spack/repos/builtin/packages/quantum-espresso/package.py b/var/spack/repos/builtin/packages/quantum-espresso/package.py
index 49352192f7..52fb46c784 100644
--- a/var/spack/repos/builtin/packages/quantum-espresso/package.py
+++ b/var/spack/repos/builtin/packages/quantum-espresso/package.py
@@ -76,11 +76,12 @@ class QuantumEspresso(Package):
patch('dspev_drv_elpa.patch', when='@6.1.0:+patch+elpa ^elpa@2016.05.003')
# Conflicts
+ # Omitted for now due to concretizer bug
# MKL with 64-bit integers not supported.
- conflicts(
- '^intel-mkl+ilp64',
- msg='Quantum ESPRESSO does not support MKL 64-bit integer variant'
- )
+ # conflicts(
+ # '^mkl+ilp64',
+ # msg='Quantum ESPRESSO does not support MKL 64-bit integer variant'
+ # )
# We can't ask for scalapack or elpa if we don't want MPI
conflicts(
@@ -211,7 +212,7 @@ class QuantumEspresso(Package):
# you need to pass it in the FFTW_INCLUDE and FFT_LIBS directory.
# QE supports an internal FFTW2, but only an external FFTW3 interface.
- if '^intel-mkl' in spec:
+ if '^mkl' in spec:
# A seperate FFT library is not needed when linking against MKL
options.append(
'FFTW_INCLUDE={0}'.format(join_path(env['MKLROOT'],
@@ -230,10 +231,21 @@ class QuantumEspresso(Package):
# appear twice in in link line but this is harmless
lapack_blas = spec['lapack'].libs + spec['blas'].libs
- options.append('BLAS_LIBS={0}'.format(lapack_blas.ld_flags))
+ # qe-6.5 fails to detect MKL for FFT if BLAS_LIBS is set due to
+ # an unfortunate upsteam change in their autoconf/configure:
+ # - qe-6.5/install/m4/x_ac_qe_blas.m4 only sets 'have_blas'
+ # but no 'have_mkl' if BLAS_LIBS is set (which seems to be o.k.)
+ # - however, qe-6.5/install/m4/x_ac_qe_fft.m4 in 6.5 unfortunately
+ # relies on x_ac_qe_blas.m4 to detect MKL and set 'have_mkl'
+ # - qe-5.4 up to 6.4.1 had a different logic and worked fine with
+ # BLAS_LIBS being set
+ # However, MKL is correctly picked up by qe-6.5 for BLAS and FFT if
+ # MKLROOT is set (which SPACK does automatically for ^mkl)
+ if not ('quantum-espresso@6.5' in spec and '^mkl' in spec):
+ options.append('BLAS_LIBS={0}'.format(lapack_blas.ld_flags))
if '+scalapack' in spec:
- scalapack_option = 'intel' if '^intel-mkl' in spec else 'yes'
+ scalapack_option = 'intel' if '^mkl' in spec else 'yes'
options.append('--with-scalapack={0}'.format(scalapack_option))
if '+elpa' in spec:
diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py
index 36ddd5ed7d..71f648b480 100644
--- a/var/spack/repos/builtin/packages/r-openssl/package.py
+++ b/var/spack/repos/builtin/packages/r-openssl/package.py
@@ -30,3 +30,8 @@ class ROpenssl(RPackage):
depends_on('r-askpass', when='@1.2:', type=('build', 'run'))
depends_on('openssl@1.0.1:')
+
+ def flag_handler(self, name, flags):
+ if name == 'cflags':
+ flags.append(self.compiler.c99_flag)
+ return (flags, None, None)
diff --git a/var/spack/repos/builtin/packages/r-remotes/package.py b/var/spack/repos/builtin/packages/r-remotes/package.py
index ca51212143..1c2c1fba38 100644
--- a/var/spack/repos/builtin/packages/r-remotes/package.py
+++ b/var/spack/repos/builtin/packages/r-remotes/package.py
@@ -10,12 +10,13 @@ class RRemotes(RPackage):
"""Download and install R packages stored in 'GitHub', 'BitBucket', or
plain 'subversion' or 'git' repositories. This package provides the
'install_*' functions in 'devtools'. Indeed most of the code was copied
- over from 'devtools'."""
+ over from 'devtools'. """
homepage = "https://github.com/r-lib/remotes#readme"
url = "https://cloud.r-project.org/src/contrib/remotes_2.1.0.tar.gz"
list_url = "https://cloud.r-project.org/src/contrib/Archive/remotes"
+ version('2.1.1', sha256='4e590746fce618094089372b185e1ea234b3337b23c44c44118e942d0fb5118b')
version('2.1.0', sha256='8944c8f6fc9f0cd0ca04d6cf1221b716eee08facef9f4b4c4d91d0346d6d68a7')
depends_on('r@3.0.0:', type=('build', 'run'))
diff --git a/var/spack/repos/builtin/packages/r-sys/package.py b/var/spack/repos/builtin/packages/r-sys/package.py
index bd9aff9519..1901e54354 100644
--- a/var/spack/repos/builtin/packages/r-sys/package.py
+++ b/var/spack/repos/builtin/packages/r-sys/package.py
@@ -18,3 +18,8 @@ class RSys(RPackage):
list_url = "https://cloud.r-project.org/src/contrib/Archive/sys"
version('3.2', sha256='2819498461fe2ce83d319d1a47844e86bcea6d01d10861818dba289e7099bbcc')
+
+ def flag_handler(self, name, flags):
+ if name == 'cflags':
+ flags.append(self.compiler.c99_flag)
+ return (flags, None, None)
diff --git a/var/spack/repos/builtin/packages/r/change_optflags_tmp.patch b/var/spack/repos/builtin/packages/r/change_optflags_tmp.patch
new file mode 100644
index 0000000000..4e39b02be7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/r/change_optflags_tmp.patch
@@ -0,0 +1,67 @@
+diff -ur R-3.6.3.org/configure R-3.6.3/configure
+--- R-3.6.3.org/configure 2020-03-09 11:09:16.060825352 +0900
++++ R-3.6.3/configure 2020-03-09 11:10:47.011280195 +0900
+@@ -6470,13 +6470,13 @@
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+- CFLAGS="-g -O2"
++ CFLAGS="-g -O1"
+ else
+ CFLAGS="-g"
+ fi
+ else
+ if test "$GCC" = yes; then
+- CFLAGS="-O2"
++ CFLAGS="-O1"
+ else
+ CFLAGS=
+ fi
+@@ -7445,13 +7445,13 @@
+ FCFLAGS=$ac_save_FCFLAGS
+ elif test $ac_cv_prog_fc_g = yes; then
+ if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+- FCFLAGS="-g -O2"
++ FCFLAGS="-g -O1"
+ else
+ FCFLAGS="-g"
+ fi
+ else
+ if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+- FCFLAGS="-O2"
++ FCFLAGS="-O1"
+ else
+ FCFLAGS=
+ fi
+@@ -7717,13 +7717,13 @@
+ CXXFLAGS=$ac_save_CXXFLAGS
+ elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+- CXXFLAGS="-g -O2"
++ CXXFLAGS="-g -O1"
+ else
+ CXXFLAGS="-g"
+ fi
+ else
+ if test "$GXX" = yes; then
+- CXXFLAGS="-O2"
++ CXXFLAGS="-O1"
+ else
+ CXXFLAGS=
+ fi
+@@ -8336,13 +8336,13 @@
+ OBJCFLAGS=$ac_save_OBJCFLAGS
+ elif test $ac_cv_prog_objc_g = yes; then
+ if test "$GOBJC" = yes; then
+- OBJCFLAGS="-g -O2"
++ OBJCFLAGS="-g -O1"
+ else
+ OBJCFLAGS="-g"
+ fi
+ else
+ if test "$GOBJC" = yes; then
+- OBJCFLAGS="-O2"
++ OBJCFLAGS="-O1"
+ else
+ OBJCFLAGS=
+ fi
diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py
index 6489a8585c..1893aca9ac 100644
--- a/var/spack/repos/builtin/packages/r/package.py
+++ b/var/spack/repos/builtin/packages/r/package.py
@@ -21,6 +21,7 @@ class R(AutotoolsPackage):
extendable = True
+ version('3.6.3', sha256='89302990d8e8add536e12125ec591d6951022cf8475861b3690bc8bf1cefaa8f')
version('3.6.2', sha256='bd65a45cddfb88f37370fbcee4ac8dd3f1aebeebe47c2f968fd9770ba2bbc954')
version('3.6.1', sha256='5baa9ebd3e71acecdcc3da31d9042fb174d55a42829f8315f2457080978b1389')
version('3.6.0', sha256='36fcac3e452666158e62459c6fc810adc247c7109ed71c5b6c3ad5fc2bf57509')
@@ -85,6 +86,12 @@ class R(AutotoolsPackage):
patch('zlib.patch', when='@:3.3.2')
+ # R cannot be built with '-O2' optimization
+ # with Fujitsu Compiler @4.1.0 now.
+ # Until the Fujitsu compiler resolves this problem,
+ # temporary fix to lower the optimization level.
+ patch('change_optflags_tmp.patch', when='%fj@4.1.0')
+
filter_compiler_wrappers(
'Makeconf', relative_root=os.path.join('rlib', 'R', 'etc')
)
diff --git a/var/spack/repos/builtin/packages/randrproto/package.py b/var/spack/repos/builtin/packages/randrproto/package.py
index c3315568f1..a2dfed152f 100644
--- a/var/spack/repos/builtin/packages/randrproto/package.py
+++ b/var/spack/repos/builtin/packages/randrproto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Randrproto(AutotoolsPackage):
+class Randrproto(AutotoolsPackage, XorgPackage):
"""X Resize and Rotate Extension (RandR).
This extension defines a protocol for clients to dynamically change X
@@ -14,7 +14,7 @@ class Randrproto(AutotoolsPackage):
"""
homepage = "http://cgit.freedesktop.org/xorg/proto/randrproto"
- url = "https://www.x.org/archive/individual/proto/randrproto-1.5.0.tar.gz"
+ xorg_mirror_path = "proto/randrproto-1.5.0.tar.gz"
version('1.5.0', sha256='8f8a716d6daa6ba05df97d513960d35a39e040600bf04b313633f11679006fab')
diff --git a/var/spack/repos/builtin/packages/range-v3/package.py b/var/spack/repos/builtin/packages/range-v3/package.py
index 261922ceb7..9c7a9cd6a3 100644
--- a/var/spack/repos/builtin/packages/range-v3/package.py
+++ b/var/spack/repos/builtin/packages/range-v3/package.py
@@ -22,6 +22,7 @@ class RangeV3(CMakePackage):
maintainers = ['chissg']
version('develop', branch='master')
+ version('0.10.0', sha256='5a1cd44e7315d0e8dcb1eee4df6802221456a9d1dbeac53da02ac7bd4ea150cd')
version('0.5.0', sha256='32e30b3be042246030f31d40394115b751431d9d2b4e0f6d58834b2fd5594280')
version('0.4.0', sha256='5dbc878b7dfc500fb04b6b9f99d63993a2731ea34b0a4b8d5f670a5a71a18e39')
version('0.3.7', sha256='e6b0fb33bfd07ec32d54bcddd3e8d62e995a3cf0b64b34788ec264da62581207')
diff --git a/var/spack/repos/builtin/packages/rankstr/package.py b/var/spack/repos/builtin/packages/rankstr/package.py
index 6cf2dc42f9..98d7aea87f 100644
--- a/var/spack/repos/builtin/packages/rankstr/package.py
+++ b/var/spack/repos/builtin/packages/rankstr/package.py
@@ -9,8 +9,8 @@ from spack import *
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.2.zip"
+ homepage = "https://github.com/ecp-veloc/rankstr"
+ 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/recordproto/package.py b/var/spack/repos/builtin/packages/recordproto/package.py
index c70d539abc..4067ddaacb 100644
--- a/var/spack/repos/builtin/packages/recordproto/package.py
+++ b/var/spack/repos/builtin/packages/recordproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Recordproto(AutotoolsPackage):
+class Recordproto(AutotoolsPackage, XorgPackage):
"""X Record Extension.
This extension defines a protocol for the recording and playback of user
actions in the X Window System."""
homepage = "http://cgit.freedesktop.org/xorg/proto/recordproto"
- url = "https://www.x.org/archive/individual/proto/recordproto-1.14.2.tar.gz"
+ xorg_mirror_path = "proto/recordproto-1.14.2.tar.gz"
version('1.14.2', sha256='485f792570dd7afe49144227f325bf2827bc7d87aae6a8ab6c1de2b06b1c68c5')
diff --git a/var/spack/repos/builtin/packages/redset/package.py b/var/spack/repos/builtin/packages/redset/package.py
index d06eaca108..88ea8b92d4 100644
--- a/var/spack/repos/builtin/packages/redset/package.py
+++ b/var/spack/repos/builtin/packages/redset/package.py
@@ -9,8 +9,8 @@ from spack import *
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.3.zip"
+ homepage = "https://github.com/ecp-veloc/redset"
+ 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/rendercheck/package.py b/var/spack/repos/builtin/packages/rendercheck/package.py
index 03961b1dba..b6f4d90438 100644
--- a/var/spack/repos/builtin/packages/rendercheck/package.py
+++ b/var/spack/repos/builtin/packages/rendercheck/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Rendercheck(AutotoolsPackage):
+class Rendercheck(AutotoolsPackage, XorgPackage):
"""rendercheck is a program to test a Render extension implementation
against separate calculations of expected output."""
homepage = "http://cgit.freedesktop.org/xorg/app/rendercheck"
- url = "https://www.x.org/archive/individual/app/rendercheck-1.5.tar.gz"
+ xorg_mirror_path = "app/rendercheck-1.5.tar.gz"
version('1.5', sha256='1553fef61c30f2524b597c3758cc8d3f8dc1f52eb8137417fa0667b0adc8a604')
diff --git a/var/spack/repos/builtin/packages/renderproto/package.py b/var/spack/repos/builtin/packages/renderproto/package.py
index 2bd9fa30ea..87f1a6708a 100644
--- a/var/spack/repos/builtin/packages/renderproto/package.py
+++ b/var/spack/repos/builtin/packages/renderproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Renderproto(AutotoolsPackage):
+class Renderproto(AutotoolsPackage, XorgPackage):
"""X Rendering Extension.
This extension defines the protcol for a digital image composition as
the foundation of a new rendering model within the X Window System."""
homepage = "http://cgit.freedesktop.org/xorg/proto/renderproto"
- url = "https://www.x.org/archive/individual/proto/renderproto-0.11.1.tar.gz"
+ xorg_mirror_path = "proto/renderproto-0.11.1.tar.gz"
version('0.11.1', sha256='a0a4be3cad9381ae28279ba5582e679491fc2bec9aab8a65993108bf8dbce5fe')
diff --git a/var/spack/repos/builtin/packages/resourceproto/package.py b/var/spack/repos/builtin/packages/resourceproto/package.py
index 103ebc3927..3c5f74eddc 100644
--- a/var/spack/repos/builtin/packages/resourceproto/package.py
+++ b/var/spack/repos/builtin/packages/resourceproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Resourceproto(AutotoolsPackage):
+class Resourceproto(AutotoolsPackage, XorgPackage):
"""X Resource Extension.
This extension defines a protocol that allows a client to query the
X server about its usage of various resources."""
homepage = "http://cgit.freedesktop.org/xorg/proto/resourceproto"
- url = "https://www.x.org/archive/individual/proto/resourceproto-1.2.0.tar.gz"
+ xorg_mirror_path = "proto/resourceproto-1.2.0.tar.gz"
version('1.2.0', sha256='469029d14fdeeaa7eed1be585998ff4cb92cf664f872d1d69c04140815b78734')
diff --git a/var/spack/repos/builtin/packages/revbayes/package.py b/var/spack/repos/builtin/packages/revbayes/package.py
index 7cf707a72e..5e02dc974d 100644
--- a/var/spack/repos/builtin/packages/revbayes/package.py
+++ b/var/spack/repos/builtin/packages/revbayes/package.py
@@ -15,10 +15,10 @@ class Revbayes(CMakePackage):
git = "https://github.com/revbayes/revbayes.git"
version('develop', branch='development')
- version('1.0.13', sha256='472b4ccc44d813c1ff1b8d27e8ccf3d96388de79aa1688b3714f683ba65038fa')
- version('1.0.12', sha256='d79f3a9bc72305cab35009d11e1f027fcaacde7329a4c49b5b8285588a8d3588')
- version('1.0.11', sha256='7e81b1952e3a63cb84617fa632f4ccdf246b4d79e7d537a423540de047dadf50')
- version('1.0.10', sha256='95e9affe8ca8d62880cf46778b6ec9dd8726e62a185670ebcbadf2eb2bb79f93')
+ version('1.0.13', sha256='e85e2e1fe182fe9f504900150d936a06d252a362c591b9d3d8272dd085aa85d9')
+ version('1.0.12', sha256='80c926bb6b37288d02e36e07b44e4663841cd1fe541e2cc0b0e44c89ca929759')
+ version('1.0.11', sha256='03052194baa220dde7e622a739f09f34393f67ea00a0b163b409d313d7fc7c02')
+ version('1.0.10', sha256='6a3cf303e7224b0b32637bd8e2c3c2cf2621f5dbe599cd74ce4b0c215d0fcd2d')
variant('mpi', default=True, description='Enable MPI parallel support')
@@ -27,6 +27,12 @@ class Revbayes(CMakePackage):
conflicts('%gcc@7.1.0:', when='@:1.0.12')
+ def url_for_version(self, version):
+ if version > Version('1.0.13'):
+ return 'https://github.com/revbayes/revbayes/archive/v{0}.tar.gz'.format(version)
+ else:
+ return 'https://github.com/revbayes/revbayes.archive/archive/v{0}.tar.gz'.format(version)
+
@property
def root_cmakelists_dir(self):
if self.spec.version > Version('1.0.13') and '+mpi' in self.spec:
@@ -38,6 +44,11 @@ class Revbayes(CMakePackage):
def regenerate(self):
with working_dir(join_path('projects', 'cmake')):
mkdirp('build')
+ if self.spec.version > Version('1.0.13'):
+ generate_version = Executable('./generate_version_number.sh')
+ generate_version()
+ dest = join_path('..', '..', 'src', 'revlanguage', 'utils')
+ install('GitVersion.cpp', dest)
edit = FileFilter('regenerate.sh')
edit.filter('boost="true"', 'boost="false"')
if '+mpi' in self.spec:
diff --git a/var/spack/repos/builtin/packages/rgb/package.py b/var/spack/repos/builtin/packages/rgb/package.py
index 2e4f56342b..416aef769c 100644
--- a/var/spack/repos/builtin/packages/rgb/package.py
+++ b/var/spack/repos/builtin/packages/rgb/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Rgb(AutotoolsPackage):
+class Rgb(AutotoolsPackage, XorgPackage):
"""X color name database.
This package includes both the list mapping X color names to RGB values
@@ -16,7 +16,7 @@ class Rgb(AutotoolsPackage):
The "others" subdirectory contains some alternate color databases."""
homepage = "http://cgit.freedesktop.org/xorg/app/rgb"
- url = "https://www.x.org/archive/individual/app/rgb-1.0.6.tar.gz"
+ xorg_mirror_path = "app/rgb-1.0.6.tar.gz"
version('1.0.6', sha256='cb998035e08b9f58ad3150cab60461c3225bdd075238cffc665e24da40718933')
diff --git a/var/spack/repos/builtin/packages/ripgrep/package.py b/var/spack/repos/builtin/packages/ripgrep/package.py
new file mode 100644
index 0000000000..eadaa6df79
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ripgrep/package.py
@@ -0,0 +1,31 @@
+# Copyright 2013-2020 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 Ripgrep(Package):
+ """ripgrep is a line-oriented search tool that recursively searches
+ your current directory for a regex pattern. ripgrep is similar to
+ other popular search tools like The Silver Searcher, ack and grep.
+ """
+
+ homepage = "https://github.com/BurntSushi/ripgrep"
+ url = "https://github.com/BurntSushi/ripgrep/archive/11.0.2.tar.gz"
+
+ version('11.0.2', sha256='0983861279936ada8bc7a6d5d663d590ad34eb44a44c75c2d6ccd0ab33490055')
+
+ depends_on('rust')
+
+ def install(self, spec, prefix):
+ cargo = which('cargo')
+ cargo('install', '--root', prefix, '--path', '.')
+
+ # needed for onig_sys
+ def setup_build_environment(self, env):
+ env.append_flags('LLVM_CONFIG_PATH',
+ join_path(self.spec['llvm'].prefix.libexec.llvm,
+ 'llvm-config'))
+ env.append_flags('LIBCLANG_PATH', self.spec['llvm'].prefix.lib)
diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py
index 4def4129da..9db1a70254 100644
--- a/var/spack/repos/builtin/packages/root/package.py
+++ b/var/spack/repos/builtin/packages/root/package.py
@@ -15,7 +15,7 @@ class Root(CMakePackage):
homepage = "https://root.cern.ch"
url = "https://root.cern/download/root_v6.16.00.source.tar.gz"
- maintainers = ['chissg', 'HadrienG2']
+ maintainers = ['chissg', 'HadrienG2', 'drbenmorgan']
# ###################### Versions ##########################
@@ -26,6 +26,8 @@ class Root(CMakePackage):
# Development version (when more recent than production).
# Production version
+ version('6.20.02', sha256='0997586bf097c0afbc6f08edbffcebf5eb6a4237262216114ba3f5c8087dcba6')
+ version('6.20.00', sha256='68421eb0434b38b66346fa8ea6053a0fdc9a6d254e4a72019f4e3633ae118bf0')
version('6.18.04', sha256='315a85fc8363f8eb1bffa0decbf126121258f79bd273513ed64795675485cfa4',
preferred=True)
@@ -110,6 +112,9 @@ class Root(CMakePackage):
# otherwise it crashes with the internal minuit library
variant('minuit', default=True,
description='Automatically search for support libraries')
+ variant('mlp', default=False,
+ description="Enable support for TMultilayerPerceptron "
+ "classes' federation")
variant('mysql', default=False)
variant('opengl', default=True,
description='Enable OpenGL support')
@@ -143,7 +148,7 @@ class Root(CMakePackage):
description='TBB multi-threading support')
variant('threads', default=True,
description='Enable using thread library')
- variant('tmva', default=True,
+ variant('tmva', default=False,
description='Build TMVA multi variate analysis library')
variant('unuran', default=True,
description='Use UNURAN for random number generation')
@@ -185,6 +190,7 @@ class Root(CMakePackage):
depends_on('xxhash', when='@6.13.02:') # See cmake_args, below.
depends_on('xz')
depends_on('zlib')
+ depends_on('zstd', when='@6.20:')
# X-Graphics
depends_on('libx11', when="+x")
@@ -203,8 +209,14 @@ class Root(CMakePackage):
# Qt4
depends_on('qt@:4.999', when='+qt4')
- # TMVA
- depends_on('py-numpy', when='+tmva')
+ # Python
+ depends_on('python@2.7:', when='+python', type=('build', 'run'))
+ depends_on('py-numpy', type=('build', 'run'), when='+tmva')
+ # This numpy dependency was not intended and will hopefully
+ # be fixed in 6.20.04.
+ # See: https://sft.its.cern.ch/jira/browse/ROOT-10626
+ depends_on('py-numpy', type=('build', 'run'),
+ when='@6.20.00:6.20.03 +python')
# Optional dependencies
depends_on('davix @0.7.1:', when='+davix')
@@ -219,7 +231,6 @@ class Root(CMakePackage):
depends_on('postgresql', when='+postgres')
depends_on('pythia6+root', when='+pythia6')
depends_on('pythia8', when='+pythia8')
- depends_on('python@2.7:', when='+python', type=('build', 'run'))
depends_on('r', when='+r', type=('build', 'run'))
depends_on('r-rcpp', when='+r', type=('build', 'run'))
depends_on('r-rinside', when='+r', type=('build', 'run'))
@@ -255,6 +266,7 @@ class Root(CMakePackage):
# Incompatible variants
conflicts('+opengl', when='~x', msg='OpenGL requires X')
conflicts('+tmva', when='~gsl', msg='TVMA requires GSL')
+ conflicts('+tmva', when='~mlp', msg='TVMA requires MLP')
conflicts('cxxstd=11', when='+root7', msg='root7 requires at least C++14')
# Feature removed in 6.18:
@@ -357,6 +369,7 @@ class Root(CMakePackage):
['minimal'],
['minuit'],
['minuit2', 'minuit'],
+ ['mlp'],
['monalisa', False],
['mysql'],
['odbc'],
diff --git a/var/spack/repos/builtin/packages/rstart/package.py b/var/spack/repos/builtin/packages/rstart/package.py
index 777706c67b..aa49ddbfe9 100644
--- a/var/spack/repos/builtin/packages/rstart/package.py
+++ b/var/spack/repos/builtin/packages/rstart/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Rstart(AutotoolsPackage):
+class Rstart(AutotoolsPackage, XorgPackage):
"""This package includes both the client and server sides implementing
the protocol described in the "A Flexible Remote Execution Protocol
Based on rsh" paper found in the specs/ subdirectory.
@@ -15,7 +15,7 @@ class Rstart(AutotoolsPackage):
provided in common ssh implementations."""
homepage = "http://cgit.freedesktop.org/xorg/app/rstart"
- url = "https://www.x.org/archive/individual/app/rstart-1.0.5.tar.gz"
+ xorg_mirror_path = "app/rstart-1.0.5.tar.gz"
version('1.0.5', sha256='5271c0c2675b4ad09aace7edddfdd137af10fc754afa6260d8eb5d0bba7098c7')
diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py
index 2ae30b5c03..4434c5efbd 100644
--- a/var/spack/repos/builtin/packages/rust/package.py
+++ b/var/spack/repos/builtin/packages/rust/package.py
@@ -4,59 +4,529 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
+from six import iteritems
class Rust(Package):
- """The rust programming language toolchain"""
+ """The Rust programming language toolchain
- homepage = "http://www.rust-lang.org"
- git = "https://github.com/rust-lang/rust.git"
+ This package can bootstrap any version of the Rust compiler since Rust
+ 1.23. It does this by downloading the platform-appropriate binary
+ distribution of the desired version of the rust compiler, and then building
+ that compiler from source.
+ """
- version('develop', branch='master')
- version('1.41.0', tag='1.41.0')
- version('1.34.0', tag='1.34.0')
- version('1.32.0', tag='1.32.0')
- version('1.31.1', tag='1.31.1')
- version('1.31.0', tag='1.31.0') # "Rust 2018" edition
- version('1.30.1', tag='1.30.1')
+ homepage = "https://www.rust-lang.org"
+ url = "https://static.rust-lang.org/dist/rustc-1.42.0-src.tar.gz"
+ git = "https://github.com/rust-lang/rust.git"
+
+ maintainers = ["AndrewGaspar"]
+
+ phases = ['configure', 'build', 'install']
extendable = True
- # Rust
- depends_on("llvm")
- depends_on("curl")
- depends_on("git")
- depends_on("cmake")
- depends_on("binutils")
- depends_on("python@:2.8")
+ variant(
+ 'rustfmt',
+ default=True,
+ description='Formatting tool for Rust code'
+ )
+
+ variant(
+ 'analysis',
+ default=True,
+ description='Outputs code analysis that can be consumed by other tools'
+ )
+
+ variant(
+ 'clippy',
+ default=True,
+ description='Linting tool for Rust'
+ )
+
+ variant(
+ 'rls',
+ default=False,
+ description='The Rust Language Server can be used for IDE integration'
+ )
+
+ variant(
+ 'src',
+ default=True,
+ description='Install Rust source files'
+ )
+
+ depends_on('python@2.7:', type='build')
+ depends_on('python@2.7:2.8', when='@:1.43', type='build')
+ depends_on('gmake@3.81:', type='build')
+ depends_on('cmake@3.4.3:', type='build')
+ depends_on('pkgconfig', type='build')
+ depends_on('openssl')
+ depends_on('libssh2')
+ depends_on('libgit2')
+
+ # Pre-release Versions
+ version('master', branch='master', submodules=True)
+
+ # These version strings are officially supported, but aren't explicitly
+ # listed because there's no stable checksum for them.
+ # version('nightly')
+ # version('beta')
+
+ # Version Notes:
+ # Here's some information on why your favorite Rust version may be missing.
+ #
+ # < 1.23:
+ # Rust seems to eagerly search for ar next to cc. Spack makes wrappers for
+ # cc and c++, but not for ar, so no ar is found. In future versions, ar
+ # can be specified in the config.
+ #
+ # < 1.17:
+ # The `x.py` bootstrapping script did not exist prior to Rust 1.17. It
+ # would be possible to support both, but for simplicitly, we only support
+ # Rust 1.17 and newer
+ version('1.42.0', sha256='d2e8f931d16a0539faaaacd801e0d92c58df190269014b2360c6ab2a90ee3475')
+ version('1.41.1', sha256='38c93d016e6d3e083aa15e8f65511d3b4983072c0218a529f5ee94dd1de84573')
+ version('1.41.0', sha256='5546822c09944c4d847968e9b7b3d0e299f143f307c00fa40e84a99fabf8d74b')
+ version('1.40.0', sha256='dd97005578defc10a482bff3e4e728350d2099c60ffcf1f5e189540c39a549ad')
+ version('1.39.0', sha256='b4a1f6b6a93931f270691aba4fc85eee032fecda973e6b9c774cd06857609357')
+ version('1.38.0', sha256='644263ca7c7106f8ee8fcde6bb16910d246b30668a74be20b8c7e0e9f4a52d80')
+ version('1.37.0', sha256='120e7020d065499cc6b28759ff04153bfdc2ac9b5adeb252331a4eb87cbe38c3')
+ version('1.36.0', sha256='04c4e4d7213d036d6aaed392841496d272146312c0290f728b7400fccd15bb1b')
+ version('1.35.0', sha256='5a4d637a716bac18d085f44dd87ef48b32195f71b967d872d80280b38cff712d')
+ version('1.34.2', sha256='c69a4a85a1c464368597df8878cb9e1121aae93e215616d45ad7d23af3052f56')
+ version('1.34.1', sha256='b0c785264d17e1dac4598627c248a2d5e07dd39b6666d1881fcfc8e2cf4c40a7')
+ version('1.34.0', sha256='7ac85acffd79dd3a7c44305d9eaabd1f1e7116e2e6e11e770e4bf5f92c0f1f59')
+ version('1.33.0', sha256='5a01a8d7e65126f6079042831385e77485fa5c014bf217e9f3e4aff36a485d94')
+ version('1.32.0', sha256='4c594c7712a0e7e8eae6526c464bf6ea1d82f77b4f61717c3fc28fb27ba2224a')
+ version('1.31.1', sha256='91d2fc22f08d986adab7a54eb3a6a9b99e490f677d2d092e5b9e4e069c23686a')
+ version('1.30.1', sha256='36a38902dbd9a3e1240d46ab0f2ca40d2fd07c2ab6508ed7970c6c4c036b5b29')
+ version('1.30.0', sha256='cd0ba83fcca55b64c0c9f23130fe731dfc1882b73ae21bef96be8f2362c108ee')
+ version('1.29.2', sha256='5088e796aa2e47478cdf41e7243fc5443fafab0a7c70a11423e57c80c04167c9')
+ version('1.29.1', sha256='f1b0728b66ce6bce6d72bbe5ea9e3a24ea22a045665da2ed8fcdfad14f61a349')
+ version('1.29.0', sha256='a4eb34ffd47f76afe2abd813f398512d5a19ef00989d37306217c9c9ec2f61e9')
+ version('1.28.0', sha256='1d5a81729c6f23a0a23b584dd249e35abe9c6f7569cee967cc42b1758ecd6486')
+ version('1.27.2', sha256='9a818c50cdb7880abeaa68b3d97792711e6c64c1cdfb6efdc23f75b8ced0e15d')
+ version('1.27.1', sha256='2133beb01ddc3aa09eebc769dd884533c6cfb08ce684f042497e097068d733d1')
+ version('1.27.0', sha256='2cb9803f690349c9fd429564d909ddd4676c68dc48b670b8ddf797c2613e2d21')
+ version('1.26.2', sha256='fb9ecf304488c9b56600ab20cfd1937482057f7e5db7899fddb86e0774548700')
+ version('1.26.1', sha256='70a7961bd8ec43b2c01e9896e90b0a06804a7fbe0a5c05acc7fd6fed19500df0')
+ version('1.26.0', sha256='4fb09bc4e233b71dcbe08a37a3f38cabc32219745ec6a628b18a55a1232281dd')
+ version('1.25.0', sha256='eef63a0aeea5147930a366aee78cbde248bb6e5c6868801bdf34849152965d2d')
+ version('1.24.1', sha256='3ea53d45e8d2e9a41afb3340cf54b9745f845b552d802d607707cf04450761ef')
+ version('1.24.0', sha256='bb8276f6044e877e447f29f566e4bbf820fa51fea2f912d59b73233ffd95639f')
+ version('1.23.0', sha256='7464953871dcfdfa8afcc536916a686dd156a83339d8ec4d5cb4eb2fe146cb91')
+
+ # The Rust bootstrapping process requires a bootstrapping compiler. The
+ # easiest way to do this is to download the binary distribution of the
+ # same version of the compiler and build with that.
+ #
+ # This dictionary contains a version: hash dictionary for each supported
+ # Rust target.
+ rust_releases = {
+ '1.42.0': {
+ 'x86_64-unknown-linux-gnu': '7d1e07ad9c8a33d8d039def7c0a131c5917aa3ea0af3d0cc399c6faf7b789052',
+ 'powerpc64le-unknown-linux-gnu': '805b08fa1e0aad4d706301ca1f13e2d80810d385cece2c15070360b3c4bd6e4a',
+ 'aarch64-unknown-linux-gnu': 'fdd39f856a062af265012861949ff6654e2b7103be034d046bec84ebe46e8d2d',
+ 'x86_64-apple-darwin': 'db1055c46e0d54b99da05e88c71fea21b3897e74a4f5ff9390e934f3f050c0a8'
+ },
+ '1.41.1': {
+ 'x86_64-unknown-linux-gnu': 'a6d5a3b3f574aafc8f787fea37aad9fb8a7946b383ae5348146927192ff0bef0',
+ 'powerpc64le-unknown-linux-gnu': 'f9b53ca636625b3a2dd87600b6274223c11f866c9b5a34b638ea0013186659d3',
+ 'aarch64-unknown-linux-gnu': 'd54c0f9165b86216b6f1b499f451141407939c5dc6b36c89a3772895a1370242',
+ 'x86_64-apple-darwin': '16615288cf74239783de1b435d329f3d56ed13803c7c10cd4b207d7c8ffa8f67'
+ },
+ '1.41.0': {
+ 'x86_64-unknown-linux-gnu': '343ba8ef7397eab7b3bb2382e5e4cb08835a87bff5c8074382c0b6930a41948b',
+ 'powerpc64le-unknown-linux-gnu': 'ba231b0d8273d6928f61e2be3456e816a1de8050135e20c0623dc7a6ea03ba68',
+ 'aarch64-unknown-linux-gnu': '79ddfb5e2563d0ee09a567fbbe121a2aed3c3bc61255b2787f2dd42183a10f27',
+ 'x86_64-apple-darwin': 'b6504003ab70b11f278e0243a43ba9d6bf75e8ad6819b4058a2b6e3991cc8d7a'
+ },
+ '1.40.0': {
+ 'x86_64-unknown-linux-gnu': 'fc91f8b4bd18314e83a617f2389189fc7959146b7177b773370d62592d4b07d0',
+ 'powerpc64le-unknown-linux-gnu': 'b1a23e35c383f99e647df6a9239b1dc9313e293deb70a76ba58e8ebe55ef623b',
+ 'aarch64-unknown-linux-gnu': '639271f59766d291ebdade6050e7d05d61cb5c822a3ef9a1e2ab185fed68d729',
+ 'x86_64-apple-darwin': '749ca5e0b94550369cc998416b8854c13157f5d11d35e9b3276064b6766bcb83'
+ },
+ '1.39.0': {
+ 'x86_64-unknown-linux-gnu': 'b10a73e5ba90034fe51f0f02cb78f297ed3880deb7d3738aa09dc5a4d9704a25',
+ 'powerpc64le-unknown-linux-gnu': '53b3fd942c52709f7e6fe11ea572d086e315a57a40b84b9b3290ac0ec8c7c84a',
+ 'aarch64-unknown-linux-gnu': 'e27dc8112fe577012bd88f30e7c92dffd8c796478ce386c49465c03b6db8209f',
+ 'x86_64-apple-darwin': '3736d49c5e9592844e1a5d5452883aeaf8f1e25d671c1bc8f01e81c1766603b5'
+ },
+ '1.38.0': {
+ 'x86_64-unknown-linux-gnu': 'adda26b3f0609dbfbdc2019da4a20101879b9db2134fae322a4e863a069ec221',
+ 'powerpc64le-unknown-linux-gnu': 'f9ed1bb6525abdd4dd6ef10782ad45d2f71496e0c3c88e806b510c81a91c4ff7',
+ 'aarch64-unknown-linux-gnu': '06afd6d525326cea95c3aa658aaa8542eab26f44235565bb16913ac9d12b7bda',
+ 'x86_64-apple-darwin': 'bd301b78ddcd5d4553962b115e1dca5436dd3755ed323f86f4485769286a8a5a'
+ },
+ '1.37.0': {
+ 'x86_64-unknown-linux-gnu': 'cb573229bfd32928177c3835fdeb62d52da64806b844bc1095c6225b0665a1cb',
+ 'powerpc64le-unknown-linux-gnu': '27c59ec40e9e9f71490dc00bf165156ae3ea77c20ffa4b5e5fd712e67527b477',
+ 'aarch64-unknown-linux-gnu': '263ef98fa3a6b2911b56f89c06615cdebf6ef676eb9b2493ad1539602f79b6ba',
+ 'x86_64-apple-darwin': 'b2310c97ffb964f253c4088c8d29865f876a49da2a45305493af5b5c7a3ca73d'
+ },
+ '1.36.0': {
+ 'x86_64-unknown-linux-gnu': '15e592ec52f14a0586dcebc87a957e472c4544e07359314f6354e2b8bd284c55',
+ 'powerpc64le-unknown-linux-gnu': '654a7a18d881811c09f630b0c917825b586e94a6142eceaede6b8046718e4054',
+ 'aarch64-unknown-linux-gnu': 'db78c24d93756f9fe232f081dbc4a46d38f8eec98353a9e78b9b164f9628042d',
+ 'x86_64-apple-darwin': '91f151ec7e24f5b0645948d439fc25172ec4012f0584dd16c3fb1acb709aa325'
+ },
+ '1.35.0': {
+ 'x86_64-unknown-linux-gnu': 'cf600e2273644d8629ed57559c70ca8db4023fd0156346facca9ab3ad3e8f86c',
+ 'powerpc64le-unknown-linux-gnu': 'a933955adec386d75d126e78df5b9941936e156acb3353fc44b85995a81c7bb2',
+ 'aarch64-unknown-linux-gnu': '31e6da56e67838fd2874211ae896a433badf67c13a7b68481f1d5f7dedcc5952',
+ 'x86_64-apple-darwin': 'ac14b1c7dc330dcb53d8641d74ebf9b32aa8b03b9d650bcb9258030d8b10dbd6'
+ },
+ '1.34.2': {
+ 'x86_64-unknown-linux-gnu': '2bf6622d980a52832bae141304e96f317c8a1ccd2dfd69a134a14033e6e43c0f',
+ 'powerpc64le-unknown-linux-gnu': '4ddd55014bbd954b3499859bfa3146bff471de21c1d73fc6e7cccde290fc1918',
+ 'aarch64-unknown-linux-gnu': '15fc6b7ec121df9d4e42483dd12c677203680bec8c69b6f4f62e5a35a07341a8',
+ 'x86_64-apple-darwin': '6fdd4bf7fe26dded0cd57b41ab5f0500a5a99b7bc770523a425e9e34f63d0fd8'
+ },
+ '1.34.1': {
+ 'x86_64-unknown-linux-gnu': '8e2eead11bd5bf61409e29018d007c6fc874bcda2ff54db3d04d1691e779c14e',
+ 'powerpc64le-unknown-linux-gnu': '94ac92d08afcfa2d77ae207e91b57c00cb48ff7ba08a27ed3deb2493f33e8fb1',
+ 'aarch64-unknown-linux-gnu': '0565e50dae58759a3a5287abd61b1a49dfc086c4d6acf2ce604fe1053f704e53',
+ 'x86_64-apple-darwin': 'f4e46b9994ccfab4a84059298d1dc8fd446b1bbb7449462e0459948f7debea0e'
+ },
+ '1.34.0': {
+ 'x86_64-unknown-linux-gnu': '170647ed41b497dc937a6b2556700210bc4be187b1735029ef9ccf52e2cb5ab8',
+ 'powerpc64le-unknown-linux-gnu': '3027e87802e161cce6f3a23d961f6d73b9ed6e829b2cd7af5dfccf6e1207e552',
+ 'aarch64-unknown-linux-gnu': '370c3a8fb9a69df36d645a95e622fb59ac5b513baecddde706cedaf20defa269',
+ 'x86_64-apple-darwin': 'e6bea8d865cc7341c17fa3b8f25f7989e6b04f53e9da24878addc524f3a32664'
+ },
+ '1.33.0': {
+ 'x86_64-unknown-linux-gnu': '6623168b9ee9de79deb0d9274c577d741ea92003768660aca184e04fe774393f',
+ 'powerpc64le-unknown-linux-gnu': 'db885aa4c2c6896c85257be2ade5c9edea660ca6878970683e8d5796618329b5',
+ 'aarch64-unknown-linux-gnu': 'a308044e4076b62f637313ea803fa0a8f340b0f1b53136856f2c43afcabe5387',
+ 'x86_64-apple-darwin': '864e7c074a0b88e38883c87c169513d072300bb52e1d320a067bd34cf14f66bd'
+ },
+ '1.32.0': {
+ 'x86_64-unknown-linux-gnu': 'e024698320d76b74daf0e6e71be3681a1e7923122e3ebd03673fcac3ecc23810',
+ 'powerpc64le-unknown-linux-gnu': 'd6d5c9154f4459465d68ebd4fa1e17bad4b6cfe219667dddd9123c3bfb5dd839',
+ 'aarch64-unknown-linux-gnu': '60def40961728212da4b3a9767d5a2ddb748400e150a5f8a6d5aa0e1b8ba1cee',
+ 'x86_64-apple-darwin': 'f0dfba507192f9b5c330b5984ba71d57d434475f3d62bd44a39201e36fa76304'
+ },
+ '1.31.1': {
+ 'x86_64-unknown-linux-gnu': 'a64685535d0c457f49a8712a096a5c21564cd66fd2f7da739487f028192ebe3c',
+ 'powerpc64le-unknown-linux-gnu': 'a6f61b7a8a06a2b0a785391cc3e6bb8004aa72095eea80db1561039f5bb3e975',
+ 'aarch64-unknown-linux-gnu': '29a7c6eb536fefd0ca459e48dfaea006aa8bff8a87aa82a9b7d483487033632a',
+ 'x86_64-apple-darwin': '8398b1b303bdf0e7605d08b87070a514a4f588797c6fb3593718cb9cec233ad6'
+ },
+ '1.30.1': {
+ 'x86_64-unknown-linux-gnu': 'a01a493ed8946fc1c15f63e74fc53299b26ebf705938b4d04a388a746dfdbf9e',
+ 'powerpc64le-unknown-linux-gnu': 'a7d4806e6702bdbad5017eeddc62f7ff7eb2438b1b9c39cbc90c2b1207f8e65f',
+ 'aarch64-unknown-linux-gnu': '6d87d81561285abd6c1987e07b60b2d723936f037c4b46eedcc12e8566fd3874',
+ 'x86_64-apple-darwin': '3ba1704a7defe3d9a6f0c1f68792c084da83bcba85e936d597bac0c019914b94'
+ },
+ '1.30.0': {
+ 'x86_64-unknown-linux-gnu': 'f620e3125cc505c842150bd873c0603432b6cee984cdae8b226cf92c8aa1a80f',
+ 'powerpc64le-unknown-linux-gnu': '0b53e257dc3d9f3d75cd97be569d3bf456d2c0af57ed0bd5e7a437227d8f465a',
+ 'aarch64-unknown-linux-gnu': '9690c7c50eba5a8461184ee4138b4c284bad31ccc4aa1f2ddeec58b253e6363e',
+ 'x86_64-apple-darwin': '07008d90932712282bc599f1e9a226e97879c758dc1f935e6e2675e45694cc1b'
+ },
+ '1.29.2': {
+ 'x86_64-unknown-linux-gnu': 'e9809825c546969a9609ff94b2793c9107d7d9bed67d557ed9969e673137e8d8',
+ 'powerpc64le-unknown-linux-gnu': '344003b808c20424c4699c9452bd37cdee23857dd4aa125e67d1d6e4bc992091',
+ 'aarch64-unknown-linux-gnu': 'e11461015ca7106ef8ebf00859842bf4be518ee170226cb8eedaaa666946509f',
+ 'x86_64-apple-darwin': '63f54e3013406b39fcb5b84bcf5e8ce85860d0b97a1e156700e467bf5fb5d5f2'
+ },
+ '1.29.1': {
+ 'x86_64-unknown-linux-gnu': 'b36998aea6d58525f25d89f1813b6bfd4cad6ff467e27bd11e761a20dde43745',
+ 'powerpc64le-unknown-linux-gnu': '26a6d652ade6b6a96e6af18e846701ee28f912233372dfe15432139252f88958',
+ 'aarch64-unknown-linux-gnu': '2685224f67b2ef951e0e8b48829f786cbfed95e19448ba292ac33af719843dbe',
+ 'x86_64-apple-darwin': '07b07fbd6fab2390e19550beb8008745a8626cc5e97b72dc659061c1c3b3d008'
+ },
+ '1.29.0': {
+ 'x86_64-unknown-linux-gnu': '09f99986c17b1b6b1bfbc9dd8785e0e4693007c5feb67915395d115c1a3aea9d',
+ 'powerpc64le-unknown-linux-gnu': 'd6954f1da53f7b3618fba3284330d99b6142bb25d9febba6dbfedad59ca53329',
+ 'aarch64-unknown-linux-gnu': '0ed3be0fd9f847afeb4e587fff61f6769ea61b53719d3ea999326284e8975b36',
+ 'x86_64-apple-darwin': '28a0473637585742f6d80ccd8afd88b6b400e65d623c33cb892412759444da93'
+ },
+ '1.28.0': {
+ 'x86_64-unknown-linux-gnu': '2a1390340db1d24a9498036884e6b2748e9b4b057fc5219694e298bdaa37b810',
+ 'powerpc64le-unknown-linux-gnu': '255818156ec1f795ed808a44b4fdb8019187d5ebb7f837ae8f55a1ca40862bb6',
+ 'aarch64-unknown-linux-gnu': '9b6fbcee73070332c811c0ddff399fa31965bec62ef258656c0c90354f6231c1',
+ 'x86_64-apple-darwin': '5d7a70ed4701fe9410041c1eea025c95cad97e5b3d8acc46426f9ac4f9f02393'
+ },
+ '1.27.2': {
+ 'x86_64-unknown-linux-gnu': '5028a18e913ef3eb53e8d8119d2cc0594442725e055a9361012f8e26f754f2bf',
+ 'powerpc64le-unknown-linux-gnu': '11034d150e811d4903b09fd42f0cb76d467a6365a158101493405fff1054572f',
+ 'aarch64-unknown-linux-gnu': 'cf84da70269c0e50bb3cc3d248bae1ffcd70ee69dc5a4e3513b54fefc6685fb4',
+ 'x86_64-apple-darwin': '30c5cc58759caa4efdf2ea7d8438633139c98bee3408beb29ceb26985f3f5f70'
+ },
+ '1.27.1': {
+ 'x86_64-unknown-linux-gnu': '435778a837af764da2a7a7fb4d386b7b78516c7dfc732d892858e9a8a539989b',
+ 'powerpc64le-unknown-linux-gnu': 'a08e6b6fed3329fcd1220b2ee4cd7a311d99121cf780fb6e1c6353bfeddfb176',
+ 'aarch64-unknown-linux-gnu': 'd1146b240e6f628224c3a67e3aae2a57e6c25d544115e5ece9ce91861ec92b3a',
+ 'x86_64-apple-darwin': '475be237962d6aef1038a2faada26fda1e0eaea5d71d6950229a027a9c2bfe08'
+ },
+ '1.27.0': {
+ 'x86_64-unknown-linux-gnu': '235ad78e220b10a2d0267aea1e2c0f19ef5eaaff53ad6ff8b12c1d4370dec9a3',
+ 'powerpc64le-unknown-linux-gnu': '847774a751e848568215739d384e3baf4d6ec37d27fb3add7a8789208c213aff',
+ 'aarch64-unknown-linux-gnu': 'e74ebc33dc3fc19e501a677a87b619746efdba2901949a0319176352f556673a',
+ 'x86_64-apple-darwin': 'a1d48190992e01aac1a181bce490c80cb2c1421724b4ff0e2fb7e224a958ce0f'
+ },
+ '1.26.2': {
+ 'x86_64-unknown-linux-gnu': 'd2b4fb0c544874a73c463993bde122f031c34897bb1eeb653d2ba2b336db83e6',
+ 'powerpc64le-unknown-linux-gnu': 'ea045869074ae3617eeb51207ce183e6915784b9ed615ecb92ce082ddb86ec1f',
+ 'aarch64-unknown-linux-gnu': '3dfad0dc9c795f7ee54c2099c9b7edf06b942adbbf02e9ed9e5d4b5e3f1f3759',
+ 'x86_64-apple-darwin': 'f193705d4c0572a358670dbacbf0ffadcd04b3989728b442f4680fa1e065fa72'
+ },
+ '1.26.1': {
+ 'x86_64-unknown-linux-gnu': 'b7e964bace1286696d511c287b945f3ece476ba77a231f0c31f1867dfa5080e0',
+ 'powerpc64le-unknown-linux-gnu': 'ad8b2f6dd8c5cca1251d65b75ed2120aae3c5375d2c8ed690259cf4a652d7d3c',
+ 'aarch64-unknown-linux-gnu': 'd4a369053c2dfd5f457de6853557dab563944579fa4bb55bc919bacf259bff6d',
+ 'x86_64-apple-darwin': 'ebf898b9fa7e2aafc53682a41f18af5ca6660ebe82dd78f28cd9799fe4dc189a'
+ },
+ '1.26.0': {
+ 'x86_64-unknown-linux-gnu': '13691d7782577fc9f110924b26603ade1990de0b691a3ce2dc324b4a72a64a68',
+ 'powerpc64le-unknown-linux-gnu': '3ba3a4905730ec01007ca1096d9fc3780f4e81f71139a619e1f526244301b7f4',
+ 'aarch64-unknown-linux-gnu': 'e12dc84bdb569cdb382268a5fe6ae6a8e2e53810cb890ec3a7133c20ba8451ac',
+ 'x86_64-apple-darwin': '38708803c3096b8f101d1919ee2d7e723b0adf1bc1bb986b060973b57d8c7c28'
+ },
+ '1.25.0': {
+ 'x86_64-unknown-linux-gnu': '06fb45fb871330a2d1b32a27badfe9085847fe824c189ddc5204acbe27664f5e',
+ 'powerpc64le-unknown-linux-gnu': '79eeb2a7fafa2e0f65f29a1dc360df69daa725347e4b6a533684f1c07308cc6e',
+ 'aarch64-unknown-linux-gnu': '19a43451439e515a216d0a885d14203f9a92502ee958abf86bf7000a7d73d73d',
+ 'x86_64-apple-darwin': 'fcd0302b15e857ba4a80873360cf5453275973c64fa82e33bfbed02d88d0ad17'
+ },
+ '1.24.1': {
+ 'x86_64-unknown-linux-gnu': '4567e7f6e5e0be96e9a5a7f5149b5452828ab6a386099caca7931544f45d5327',
+ 'powerpc64le-unknown-linux-gnu': '6f6c4bebbd7d6dc9989bf372c512dea55af8f56a1a0cfe97784667f0ac5430ee',
+ 'aarch64-unknown-linux-gnu': '64bb25a9689b18ddadf025b90d9bdb150b809ebfb74432dc69cc2e46120adbb2',
+ 'x86_64-apple-darwin': '9d4aacdb5849977ea619d399903c9378163bd9c76ea11dac5ef6eca27849f501'
+ },
+ '1.24.0': {
+ 'x86_64-unknown-linux-gnu': '336cf7af6c857cdaa110e1425719fa3a1652351098dc73f156e5bf02ed86443c',
+ 'powerpc64le-unknown-linux-gnu': '25d9b965a63ad2f345897028094d4c7eafa432237b478754ccbcc299f80629c8',
+ 'aarch64-unknown-linux-gnu': 'a981de306164b47f3d433c1d53936185260642849c79963af7e07d36b063a557',
+ 'x86_64-apple-darwin': '1aecba7cab4bc1a9e0e931c04aa00849e930b567d243da7b676ede8f527a2992'
+ },
+ '1.23.0': {
+ 'x86_64-unknown-linux-gnu': '9a34b23a82d7f3c91637e10ceefb424539dcfa327c2dcd292ff10c047b1fdc7e',
+ 'powerpc64le-unknown-linux-gnu': '60f1a1cc182c516de08c1f42ada01604a3d94383e9dded6b237ae2233999437b',
+ 'aarch64-unknown-linux-gnu': '38379fbd976d2286cb73f21466db40a636a583b9f8a80af5eea73617c7912bc7',
+ 'x86_64-apple-darwin': '9274e977322bb4b153f092255ac9bd85041142c73eaabf900cb2ef3d3abb2eba'
+ }
+ }
+
+ # This dictionary maps Rust target architectures to Spack constraints that
+ # match that target.
+ rust_archs = {
+ 'x86_64-unknown-linux-gnu': [
+ {'platform': 'linux', 'target': 'x86_64:'},
+ {'platform': 'cray', 'target': 'x86_64:'}
+ ],
+ 'powerpc64le-unknown-linux-gnu': [
+ {'platform': 'linux', 'target': 'ppc64le:'},
+ {'platform': 'cray', 'target': 'ppc64le:'}
+ ],
+ 'aarch64-unknown-linux-gnu': [
+ {'platform': 'linux', 'target': 'aarch64:'},
+ {'platform': 'cray', 'target': 'aarch64:'}
+ ],
+ 'x86_64-apple-darwin': [
+ {'platform': 'darwin', 'target': 'x86_64:'}
+ ]
+ }
+
+ # Specifies the strings which represent a pre-release Rust version. These
+ # always bootstrap with the latest beta release.
+ #
+ # NOTE: These are moving targets, and therefore have no stable checksum. Be
+ # sure to specify "-n" or "--no-checksum" when installing these versions.
+ rust_prerelease_versions = ["beta", "nightly", "master"]
+
+ for prerelease_version in rust_prerelease_versions:
+ for rust_target, rust_arch_list in iteritems(rust_archs):
+ for rust_arch in rust_arch_list:
+ # All pre-release builds are built with the latest beta
+ # compiler.
+ resource(
+ name='rust-beta-{target}'.format(
+ target=rust_target
+ ),
+ url='https://static.rust-lang.org/dist/rust-beta-{target}.tar.gz'.format(
+ target=rust_target
+ ),
+ # Fake SHA - checksums should never be checked for
+ # pre-release builds, anyway
+ sha256='0000000000000000000000000000000000000000000000000000000000000000',
+ destination='spack_bootstrap_stage',
+ when='@{version} platform={platform} target={target}'\
+ .format(
+ version=prerelease_version,
+ platform=rust_arch['platform'],
+ target=rust_arch['target']
+ )
+ )
- # Cargo
- depends_on("openssl")
+ # This loop generates resources for each binary distribution, and maps
+ # them to the version of the compiler they bootstrap. This is in place
+ # of listing each resource explicitly, which would be potentially even
+ # more verbose.
+ #
+ # NOTE: This loop should technically specify the architecture to be the
+ # _host_ architecture, not the target architecture, in order to support
+ # cross compiling. I'm not sure Spack provides a way to specify a
+ # distinction in the when clause, though.
+ for rust_version, rust_targets in iteritems(rust_releases):
+ for rust_target, rust_sha256 in iteritems(rust_targets):
+ for rust_arch in rust_archs[rust_target]:
+ resource(
+ name='rust-{version}-{target}'.format(
+ version=rust_version,
+ target=rust_target
+ ),
+ url='https://static.rust-lang.org/dist/rust-{version}-{target}.tar.gz'.format(
+ version=rust_version,
+ target=rust_target
+ ),
+ sha256=rust_sha256,
+ destination='spack_bootstrap_stage',
+ when='@{version} platform={platform} target={target}'\
+ .format(
+ version=rust_version,
+ platform=rust_arch['platform'],
+ target=rust_arch['target']
+ )
+ )
- phases = ['configure', 'install']
+ # This routine returns the target architecture we intend to build for.
+ def get_rust_target(self):
+ if 'platform=linux' in self.spec or 'platform=cray' in self.spec:
+ if 'target=x86_64:' in self.spec:
+ return 'x86_64-unknown-linux-gnu'
+ elif 'target=ppc64le:' in self.spec:
+ return 'powerpc64le-unknown-linux-gnu'
+ elif 'target=aarch64:' in self.spec:
+ return 'aarch64-unknown-linux-gnu'
+ elif 'platform=darwin target=x86_64:' in self.spec:
+ return 'x86_64-apple-darwin'
+
+ raise InstallError(
+ "rust is not supported for '{0}'".format(
+ self.spec.architecture
+ ))
+
+ def check_newer(self, version):
+ if '@master' in self.spec or '@beta' in self.spec or \
+ '@nightly' in self.spec:
+ return True
+
+ return '@{0}:'.format(version) in self.spec
def configure(self, spec, prefix):
- configure_args = [
- '--prefix=%s' % prefix,
- '--llvm-root=' + spec['llvm'].prefix,
- # Workaround for "FileCheck does not exist" error
- '--disable-codegen-tests',
- # Includes Cargo in the build
- # https://github.com/rust-lang/cargo/issues/3772#issuecomment-283109482
- '--enable-extended',
- # Prevent build from writing bash completion into system path
- '--sysconfdir=%s' % join_path(prefix, 'etc/')
- ]
-
- configure(*configure_args)
-
- # Build system defaults to searching in the same path as Spack's
- # compiler wrappers which causes the build to fail
- filter_file(
- '#ar = "ar"',
- 'ar = "%s"' % join_path(spec['binutils'].prefix.bin, 'ar'),
- 'config.toml')
+ target = self.get_rust_target()
+
+ # Bootstrapping compiler selection:
+ # Pre-release compilers use the latest beta release for the
+ # bootstrapping compiler.
+ # Versioned releases bootstrap themselves.
+ if '@beta' in spec or '@nightly' in spec or '@master' in spec:
+ bootstrap_version = 'beta'
+ else:
+ bootstrap_version = spec.version
+ # See the NOTE above the resource loop - should be host architecture,
+ # not target aarchitecture if we're to support cross-compiling.
+ bootstrapping_install = Executable(
+ './spack_bootstrap_stage/rust-{version}-{target}/install.sh'
+ .format(
+ version=bootstrap_version,
+ target=target
+ )
+ )
+ # install into the staging area
+ bootstrapping_install('--prefix={0}'.format(
+ join_path(self.stage.source_path, 'spack_bootstrap')
+ ))
+
+ boot_bin = join_path(self.stage.source_path, 'spack_bootstrap/bin')
+
+ # Always build rustc and cargo
+ tools = ['rustc', 'cargo']
+ # Only make additional components available in 'rust-bootstrap'
+ if '+rustfmt' in self.spec:
+ tools.append('rustfmt')
+ if '+analysis' in self.spec:
+ tools.append('analysis')
+ if '@1.33: +clippy' in self.spec:
+ tools.append('clippy')
+ if '+rls' in self.spec:
+ tools.append('rls')
+ if '+src' in self.spec:
+ tools.append('src')
+
+ ar = which('ar', required=True)
+
+ # build.tools was introduced in Rust 1.25
+ tools_spec = \
+ 'tools={0}'.format(tools) if self.check_newer('1.25') else ''
+ # This is a temporary fix due to rust 1.42 breaking self bootstrapping
+ # See: https://github.com/rust-lang/rust/issues/69953
+ #
+ # In general, this should be safe because bootstrapping typically
+ # ensures everything but the bootstrapping script is warning free for
+ # the latest set of warning.
+ deny_warnings_spec = \
+ 'deny-warnings = false' if '@1.42.0' in self.spec else ''
+
+ # "Nightly" and master builds want a path to rustfmt - otherwise, it
+ # will try to download rustfmt from the Internet. We'll give it rustfmt
+ # for the bootstrapping compiler, but it ultimately shouldn't matter
+ # because this package never invokes it. To be clear, rustfmt from the
+ # bootstrapping compiler is probably incorrect. See: src/stage0.txt in
+ # Rust to see what the current "official" rustfmt version for Rust is.
+ if '@master' in spec or '@nightly' in spec:
+ rustfmt_spec = \
+ 'rustfmt="{0}"'.format(join_path(boot_bin, 'rustfmt'))
+ else:
+ rustfmt_spec = ''
+
+ with open('config.toml', 'w') as out_file:
+ out_file.write("""\
+[build]
+cargo = "{cargo}"
+rustc = "{rustc}"
+docs = false
+vendor = true
+extended = true
+verbose = 2
+{tools_spec}
+{rustfmt_spec}
+
+[rust]
+channel = "stable"
+rpath = true
+{deny_warnings_spec}
+
+[target.{target}]
+ar = "{ar}"
+
+[install]
+prefix = "{prefix}"
+sysconfdir = "etc"
+""".format(
+ cargo=join_path(boot_bin, 'cargo'),
+ rustc=join_path(boot_bin, 'rustc'),
+ prefix=prefix,
+ target=target,
+ deny_warnings_spec=deny_warnings_spec,
+ ar=ar.path,
+ tools_spec=tools_spec,
+ rustfmt_spec=rustfmt_spec
+ )
+ )
+
+ def build(self, spec, prefix):
+ python('./x.py', 'build', extra_env={
+ # vendored libgit2 wasn't correctly building (couldn't find the
+ # vendored libssh2), so let's just have spack build it
+ 'LIBSSH2_SYS_USE_PKG_CONFIG': '1',
+ 'LIBGIT2_SYS_USE_PKG_CONFIG': '1'
+ })
def install(self, spec, prefix):
- make()
- make("install")
+ python('./x.py', 'install')
diff --git a/var/spack/repos/builtin/packages/samtools/package.py b/var/spack/repos/builtin/packages/samtools/package.py
index ad1eb5e38d..bce5fe7b52 100644
--- a/var/spack/repos/builtin/packages/samtools/package.py
+++ b/var/spack/repos/builtin/packages/samtools/package.py
@@ -11,8 +11,8 @@ class Samtools(Package):
the SAM format, including sorting, merging, indexing and generating
alignments in a per-position format"""
- homepage = "www.htslib.org"
- url = "https://github.com/samtools/samtools/releases/download/1.3.1/samtools-1.3.1.tar.bz2"
+ homepage = "http://www.htslib.org"
+ url = "https://github.com/samtools/samtools/releases/download/1.3.1/samtools-1.3.1.tar.bz2"
version('1.10', sha256='7b9ec5f05d61ec17bd9a82927e45d8ef37f813f79eb03fe06c88377f1bd03585')
version('1.9', sha256='083f688d7070082411c72c27372104ed472ed7a620591d06f928e653ebc23482')
diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py
index 63d0af34eb..3e0e1456cd 100644
--- a/var/spack/repos/builtin/packages/scr/package.py
+++ b/var/spack/repos/builtin/packages/scr/package.py
@@ -17,7 +17,10 @@ class Scr(CMakePackage):
url = "https://github.com/LLNL/scr/archive/v1.2.0.tar.gz"
git = "https://github.com/llnl/scr.git"
- version('master', branch='master')
+ version('develop', branch='develop')
+ version('legacy', branch='legacy')
+
+ version('2.0.0', sha256='471978ae0afb56a20847d3989b994fbd680d1dea21e77a5a46a964b6e3deed6b')
version('1.2.2', sha256='764a85638a9e8762667ec1f39fa5f7da7496fca78de379a22198607b3e027847')
version('1.2.1', sha256='23acab2dc7203e9514455a5168f2fd57bc590affb7a1876912b58201513628fe')
version('1.2.0', sha256='e3338ab2fa6e9332d2326c59092b584949a083a876adf5a19d4d5c7a1bbae047')
@@ -26,6 +29,14 @@ class Scr(CMakePackage):
depends_on('zlib')
depends_on('mpi')
+ # SCR legacy is anything 2.x.x or earlier
+ # SCR components is anything 3.x.x or later
+ depends_on('er', when="@3:")
+ depends_on('kvtree', when="@3:")
+ depends_on('rankstr', when="@3:")
+ depends_on('filo', when="@3:")
+ depends_on('spath', when="@3:")
+
variant('dtcmp', default=True,
description="Build with DTCMP. "
"Necessary to enable user directory naming at runtime")
diff --git a/var/spack/repos/builtin/packages/scripts/package.py b/var/spack/repos/builtin/packages/scripts/package.py
index b31da8db92..6ecfe9fae1 100644
--- a/var/spack/repos/builtin/packages/scripts/package.py
+++ b/var/spack/repos/builtin/packages/scripts/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Scripts(AutotoolsPackage):
+class Scripts(AutotoolsPackage, XorgPackage):
"""Various X related scripts."""
homepage = "http://cgit.freedesktop.org/xorg/app/scripts"
- url = "https://www.x.org/archive/individual/app/scripts-1.0.1.tar.gz"
+ xorg_mirror_path = "app/scripts-1.0.1.tar.gz"
version('1.0.1', sha256='0ed6dabdbe821944d61830489ad5f21bd934550456b9157a1cd8a32f76e08279')
diff --git a/var/spack/repos/builtin/packages/scrnsaverproto/package.py b/var/spack/repos/builtin/packages/scrnsaverproto/package.py
index 8ddb8377e9..f4239e2cd7 100644
--- a/var/spack/repos/builtin/packages/scrnsaverproto/package.py
+++ b/var/spack/repos/builtin/packages/scrnsaverproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Scrnsaverproto(AutotoolsPackage):
+class Scrnsaverproto(AutotoolsPackage, XorgPackage):
"""MIT Screen Saver Extension.
This extension defines a protocol to control screensaver features
and also to query screensaver info on specific windows."""
homepage = "http://cgit.freedesktop.org/xorg/proto/scrnsaverproto"
- url = "https://www.x.org/archive/individual/proto/scrnsaverproto-1.2.2.tar.gz"
+ xorg_mirror_path = "proto/scrnsaverproto-1.2.2.tar.gz"
version('1.2.2', sha256='d8dee19c52977f65af08fad6aa237bacee11bc5a33e1b9b064e8ac1fd99d6e79')
diff --git a/var/spack/repos/builtin/packages/seacas/package.py b/var/spack/repos/builtin/packages/seacas/package.py
index 0e5ac9b72a..f9790370a0 100644
--- a/var/spack/repos/builtin/packages/seacas/package.py
+++ b/var/spack/repos/builtin/packages/seacas/package.py
@@ -26,6 +26,8 @@ class Seacas(CMakePackage):
# ###################### Versions ##########################
version('master', branch='master')
+ version('2020-03-16', sha256='2eb404f3dcb17c3e7eacf66978372830d40ef3722788207741fcd48417807af6')
+ version('2020-01-16', sha256='5ae84f61e410a4f3f19153737e0ac0493b144f20feb1bbfe2024f76613d8bff5')
version('2019-12-18', sha256='f82cfa276ebc5fe6054852383da16eba7a51c81e6640c73b5f01fc3109487c6f')
version('2019-10-14', sha256='ca4cf585cdbc15c25f302140fe1f61ee1a30d72921e032b9a854492b6c61fb91')
version('2019-08-20', sha256='a82c1910c2b37427616dc3716ca0b3c1c77410db6723aefb5bea9f47429666e5')
diff --git a/var/spack/repos/builtin/packages/sentencepiece/package.py b/var/spack/repos/builtin/packages/sentencepiece/package.py
new file mode 100644
index 0000000000..f3b168db66
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sentencepiece/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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)
+
+
+class Sentencepiece(CMakePackage):
+ """Unsupervised text tokenizer for Neural Network-based text generation.
+
+ This is the C++ package."""
+
+ homepage = "https://github.com/google/sentencepiece"
+ url = "https://github.com/google/sentencepiece/archive/v0.1.85.tar.gz"
+
+ maintainers = ['adamjstewart']
+
+ version('0.1.85', sha256='dd4956287a1b6af3cbdbbd499b7227a859a4e3f41c9882de5e6bdd929e219ae6')
+
+ depends_on('cmake@3.1:', type='build')
+ depends_on('gperftools') # optional, 10-40% performance improvement
diff --git a/var/spack/repos/builtin/packages/sessreg/package.py b/var/spack/repos/builtin/packages/sessreg/package.py
index 8b0d762b05..dbed54afcd 100644
--- a/var/spack/repos/builtin/packages/sessreg/package.py
+++ b/var/spack/repos/builtin/packages/sessreg/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Sessreg(AutotoolsPackage):
+class Sessreg(AutotoolsPackage, XorgPackage):
"""Sessreg is a simple program for managing utmp/wtmp entries for X
sessions. It was originally written for use with xdm, but may also be
used with other display managers such as gdm or kdm."""
homepage = "http://cgit.freedesktop.org/xorg/app/sessreg"
- url = "https://www.x.org/archive/individual/app/sessreg-1.1.0.tar.gz"
+ xorg_mirror_path = "app/sessreg-1.1.0.tar.gz"
version('1.1.0', sha256='e561edb48dfc3b0624554169c15f9dd2c3139e83084cb323b0c712724f2b6043')
diff --git a/var/spack/repos/builtin/packages/setxkbmap/package.py b/var/spack/repos/builtin/packages/setxkbmap/package.py
index 8f5093cbcf..2c3ebba00b 100644
--- a/var/spack/repos/builtin/packages/setxkbmap/package.py
+++ b/var/spack/repos/builtin/packages/setxkbmap/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Setxkbmap(AutotoolsPackage):
+class Setxkbmap(AutotoolsPackage, XorgPackage):
"""setxkbmap is an X11 client to change the keymaps in the X server for a
specified keyboard to use the layout determined by the options listed
on the command line."""
homepage = "http://cgit.freedesktop.org/xorg/app/setxkbmap"
- url = "https://www.x.org/archive/individual/app/setxkbmap-1.3.1.tar.gz"
+ xorg_mirror_path = "app/setxkbmap-1.3.1.tar.gz"
version('1.3.1', sha256='e24a73669007fa3b280eba4bdc7f75715aeb2e394bf2d63f5cc872502ddde264')
diff --git a/var/spack/repos/builtin/packages/sfcgal/package.py b/var/spack/repos/builtin/packages/sfcgal/package.py
index 021ba1bb97..c1e80174e0 100644
--- a/var/spack/repos/builtin/packages/sfcgal/package.py
+++ b/var/spack/repos/builtin/packages/sfcgal/package.py
@@ -20,8 +20,8 @@ class Sfcgal(CMakePackage):
version('1.3.7', sha256='30ea1af26cb2f572c628aae08dd1953d80a69d15e1cac225390904d91fce031b')
# Ref: http://oslandia.github.io/SFCGAL/installation.html
- depends_on('cgal@4.3 +core')
- depends_on('boost@1.54.0:1.69.0')
+ depends_on('cgal@4.3: +core')
+ depends_on('boost@1.54.0:')
depends_on('mpfr@2.2.1:')
depends_on('gmp@4.2:')
diff --git a/var/spack/repos/builtin/packages/shark/package.py b/var/spack/repos/builtin/packages/shark/package.py
new file mode 100644
index 0000000000..6c6fa433a4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/shark/package.py
@@ -0,0 +1,25 @@
+# Copyright 2013-2020 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 Shark(CMakePackage):
+ """Shark is a fast, modular, general open-source C++ machine
+ learning library. """
+
+ homepage = "http://www.shark-ml.org/"
+ url = "https://github.com/Shark-ML/Shark/archive/v4.0.1.tar.gz"
+
+ version('4.0.1', sha256='1caf9c73c5ebf54f9543a090e2b05ac646f95559aa1de483cd7662c378c1ec21')
+ version('4.0.0', sha256='19d4099776327d5f8a2e2be286818c6081c61eb13ca279c1e438c86e70d90210')
+ version('3.1.4', sha256='160c35ddeae3f6aeac3ce132ea4ba2611ece39eee347de2faa3ca52639dc6311')
+
+ depends_on('boost')
+
+ def cmake_args(self):
+ args = ["-DBoost_USE_STATIC_LIBS=ON", "-DBOOST_ROOT={0}".format(
+ self.spec['boost'].prefix)]
+ return args
diff --git a/var/spack/repos/builtin/packages/showfont/package.py b/var/spack/repos/builtin/packages/showfont/package.py
index fa7bad6765..ae06e94365 100644
--- a/var/spack/repos/builtin/packages/showfont/package.py
+++ b/var/spack/repos/builtin/packages/showfont/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Showfont(AutotoolsPackage):
+class Showfont(AutotoolsPackage, XorgPackage):
"""showfont displays data about a font from an X font server.
The information shown includes font information, font properties,
character metrics, and character bitmaps."""
homepage = "http://cgit.freedesktop.org/xorg/app/showfont"
- url = "https://www.x.org/archive/individual/app/showfont-1.0.5.tar.gz"
+ xorg_mirror_path = "app/showfont-1.0.5.tar.gz"
version('1.0.5', sha256='566e34a145ea73397724d46e84f6a9b3691cf55d0fcb96ec7f917b2b39265ebb')
diff --git a/var/spack/repos/builtin/packages/shuffile/package.py b/var/spack/repos/builtin/packages/shuffile/package.py
index 1dc23f1a2c..e7a8da2c0e 100644
--- a/var/spack/repos/builtin/packages/shuffile/package.py
+++ b/var/spack/repos/builtin/packages/shuffile/package.py
@@ -9,8 +9,8 @@ from spack import *
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.3.zip"
+ homepage = "https://github.com/ecp-veloc/shuffile"
+ 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/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py
index ef39dfdaaf..98e8b4be15 100644
--- a/var/spack/repos/builtin/packages/silo/package.py
+++ b/var/spack/repos/builtin/packages/silo/package.py
@@ -28,17 +28,26 @@ class Silo(AutotoolsPackage):
variant('mpi', default=True,
description='Compile with MPI Compatibility')
+ depends_on('hdf5@:1.10.999', when='@:4.10.2')
depends_on('hdf5~mpi', when='~mpi')
depends_on('mpi', when='+mpi')
depends_on('hdf5+mpi', when='+mpi')
- depends_on('qt', when='+silex')
+ depends_on('qt~framework@4.8:4.9', when='+silex')
+ depends_on('libx11', when='+silex')
+ depends_on('readline')
depends_on('zlib')
patch('remove-mpiposix.patch', when='@4.8:4.10.2')
def flag_handler(self, name, flags):
- if name == 'ldflags' and self.spec['hdf5'].satisfies('~shared'):
- flags.append('-ldl')
+ spec = self.spec
+ if name == 'ldflags':
+ if spec['hdf5'].satisfies('~shared'):
+ flags.append('-ldl')
+ flags.append(spec['readline'].libs.search_flags)
+ elif name in ('cflags', 'cxxflags', 'fcflags'):
+ if '+pic' in spec:
+ flags.append(self.compiler.pic_flag)
return (flags, None, None)
@when('%clang@9:')
@@ -81,13 +90,13 @@ class Silo(AutotoolsPackage):
]
if '+silex' in spec:
- config_args.append('--with-Qt-dir=%s' % spec['qt'].prefix)
-
- if '+pic' in spec:
- config_args += [
- 'CFLAGS={0}'.format(self.compiler.pic_flag),
- 'CXXFLAGS={0}'.format(self.compiler.pic_flag),
- 'FCFLAGS={0}'.format(self.compiler.pic_flag)]
+ x = spec['libx11']
+ config_args.extend([
+ '--with-Qt-dir=' + spec['qt'].prefix,
+ '--with-Qt-lib=QtGui -lQtCore',
+ '--x-includes=' + x.prefix.include,
+ '--x-libraries=' + x.prefix.lib,
+ ])
if '+mpi' in spec:
config_args.append('CC=%s' % spec['mpi'].mpicc)
diff --git a/var/spack/repos/builtin/packages/singularity/package.py b/var/spack/repos/builtin/packages/singularity/package.py
index e97f18ce83..7e808880cf 100644
--- a/var/spack/repos/builtin/packages/singularity/package.py
+++ b/var/spack/repos/builtin/packages/singularity/package.py
@@ -27,6 +27,7 @@ class Singularity(MakefilePackage):
maintainers = ['ArangoGutierrez', 'alalazo']
version('master', branch='master')
+ version('3.5.3', sha256='0c76f1e3808bf4c10e92b17150314b2b816be79f8101be448a6e9d7a96c9e486')
version('3.5.2', sha256='f9c21e289377a4c40ed7a78a0c95e1ff416dec202ed49a6c616dd2c37700eab8')
version('3.4.1', sha256='638fd7cc5ab2a20e779b8768f73baf21909148339d6c4edf6ff61349c53a70c2')
version('3.4.0', sha256='eafb27f1ffbed427922ebe2b5b95d1c9c09bfeb897518867444fe230e3e35e41')
diff --git a/var/spack/repos/builtin/packages/sirius/package.py b/var/spack/repos/builtin/packages/sirius/package.py
index 5ac903e263..ff81b120d4 100644
--- a/var/spack/repos/builtin/packages/sirius/package.py
+++ b/var/spack/repos/builtin/packages/sirius/package.py
@@ -19,6 +19,10 @@ class Sirius(CMakePackage, CudaPackage):
version('develop', branch='develop')
version('master', branch='master')
+ version('6.5.2', sha256='c18adc45b069ebae03f94eeeeed031ee99b3d8171fa6ee73c7c6fb1e42397fe7')
+ version('6.5.1', sha256='599dd0fa25a4e83db2a359257a125e855d4259188cf5b0065b8e7e66378eacf3')
+ version('6.5.0', sha256='5544f3abbb71dcd6aa08d18aceaf53c38373de4cbd0c3af44fbb39c20cfeb7cc')
+ version('6.4.4', sha256='1c5de9565781847658c3cc11edcb404e6e6d1c5a9dfc81e977de7a9a7a162c8a')
version('6.4.3', sha256='4d1effeadb84b3e1efd7d9ac88018ef567aa2e0aa72e1112f0abf2e493e2a189')
version('6.4.2', sha256='40b9b66deebb6538fc0f4cd802554d0d763ea6426b9b2f0e8db8dc617e494479')
version('6.4.1', sha256='86f25c71517952a63e92e0a9bcf66d27e4afb2b0d67cf84af480f116b8e7f53c')
@@ -59,7 +63,7 @@ class Sirius(CMakePackage, CudaPackage):
depends_on('py-pybind11', when='+python', type=('build', 'run'))
depends_on('magma', when='+magma')
- depends_on('spfft', when='@6.4.0:~cuda')
+ depends_on('spfft', when='@6.4.0:')
depends_on('spfft+cuda', when='@6.4.0:+cuda')
depends_on('elpa+openmp', when='+elpa+openmp')
depends_on('elpa~openmp', when='+elpa~openmp')
diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py
index 2c72af0342..042a8ecd15 100644
--- a/var/spack/repos/builtin/packages/slepc/package.py
+++ b/var/spack/repos/builtin/packages/slepc/package.py
@@ -11,13 +11,17 @@ from spack import *
class Slepc(Package):
"""Scalable Library for Eigenvalue Problem Computations."""
- homepage = "http://slepc.upv.es"
- url = "http://slepc.upv.es/download/distrib/slepc-3.6.2.tar.gz"
+ homepage = "https://slepc.upv.es"
+ url = "https://slepc.upv.es/download/distrib/slepc-3.6.2.tar.gz"
git = "https://gitlab.com/slepc/slepc.git"
maintainers = ['joseeroman', 'balay']
- version('develop', branch='master')
+ version('master', branch='master')
+ version('3.13.1', sha256='f4a5ede4ebdee5e15153ce31c1421209c7b794bd94be1430018615fb0838b879')
+ version('3.13.0', sha256='f1f3c2d13a1a6914e7bf4746d38761e107ea866f50927b639e4ad5918dd1e53b')
+ version('3.12.2', sha256='a586ce572a928ed87f04961850992a9b8e741677397cbaa3fb028323eddf4598')
+ version('3.12.1', sha256='a1cc2e93a81c9f6b86abd81022c9d64b0dc2161e77fb54b987f963bc292e286d')
version('3.12.0', sha256='872831d961cf76389fafb7553231ae1a6676555850c98ea0e893c06f596b2e9e')
version('3.11.2', sha256='cd6a73ac0c9f689c12f2987000a7a28fa7df53fdc069fb59a2bb148699e741dd')
version('3.11.1', sha256='4816070d4ecfeea6212c6944cee22dc7b4763df1eaf6ab7847cc5ac5132608fb')
@@ -45,6 +49,7 @@ class Slepc(Package):
# Cannot mix release and development versions of SLEPc and PETSc:
depends_on('petsc@develop', when='@develop')
+ depends_on('petsc@3.13:3.13.99', when='@3.13:3.13.99')
depends_on('petsc@3.12:3.12.99', when='@3.12:3.12.99')
depends_on('petsc@3.11:3.11.99', when='@3.11:3.11.99')
depends_on('petsc@3.10:3.10.99', when='@3.10:3.10.99')
@@ -58,14 +63,22 @@ class Slepc(Package):
patch('install_name_371.patch', when='@3.7.1')
# Arpack can not be used with 64bit integers.
- conflicts('+arpack', when='^petsc+int64')
+ conflicts('+arpack', when='@:3.12.99 ^petsc+int64')
+ conflicts('+blopex', when='^petsc+int64')
resource(name='blopex',
url='http://slepc.upv.es/download/external/blopex-1.1.2.tar.gz',
sha256='0081ee4c4242e635a8113b32f655910ada057c59043f29af4b613508a762f3ac',
destination=join_path('installed-arch-' + sys.platform + '-c-opt',
'externalpackages'),
- when='+blopex')
+ when='@:3.12.99+blopex')
+
+ resource(name='blopex',
+ git='https://github.com/lobpcg/blopex',
+ commit='6eba31f0e071f134a6e4be8eccfb8d9d7bdd5ac7',
+ destination=join_path('installed-arch-' + sys.platform + '-c-opt',
+ 'externalpackages'),
+ when='@3.13.0:+blopex')
def install(self, spec, prefix):
# set SLEPC_DIR for installation
@@ -79,13 +92,18 @@ class Slepc(Package):
options.extend([
'--with-arpack-dir=%s' % spec['arpack-ng'].prefix.lib,
])
+ if spec.satisfies('@:3.12.99'):
+ arpackopt = '--with-arpack-flags'
+ else:
+ arpackopt = '--with-arpack-lib'
+
if 'arpack-ng~mpi' in spec:
options.extend([
- '--with-arpack-flags=-larpack'
+ arpackopt + '=-larpack'
])
else:
options.extend([
- '--with-arpack-flags=-lparpack,-larpack'
+ arpackopt + '=-lparpack,-larpack'
])
# It isn't possible to install BLOPEX separately and link to it;
diff --git a/var/spack/repos/builtin/packages/slurm/package.py b/var/spack/repos/builtin/packages/slurm/package.py
index bfa6621f07..c0d4cc01a9 100644
--- a/var/spack/repos/builtin/packages/slurm/package.py
+++ b/var/spack/repos/builtin/packages/slurm/package.py
@@ -22,8 +22,11 @@ class Slurm(AutotoolsPackage):
"""
homepage = 'https://slurm.schedmd.com'
- url = 'https://github.com/SchedMD/slurm/archive/slurm-17-02-6-1.tar.gz'
+ url = 'https://github.com/SchedMD/slurm/archive/slurm-19-05-6-1.tar.gz'
+ version('19-05-6-1', sha256='1b83bce4260af06d644253b1f2ec2979b80b4418c631e9c9f48c2729ae2c95ba')
+ version('19-05-5-1', sha256='e53e67bd0bb4c37a9c481998764a746467a96bc41d6527569080514f36452c07')
+ version('18-08-9-1', sha256='32eb0b612ca18ade1e35c3c9d3b4d71aba2b857446841606a9e54d0a417c3b03')
version('18-08-0-1', sha256='62129d0f2949bc8a68ef86fe6f12e0715cbbf42f05b8da6ef7c3e7e7240b50d9')
version('17-11-9-2', sha256='6e34328ed68262e776f524f59cca79ac75bcd18030951d45ea545a7ba4c45906')
version('17-02-6-1', sha256='97b3a3639106bd6d44988ed018e2657f3d640a3d5c105413d05b4721bc8ee25e')
@@ -35,6 +38,8 @@ class Slurm(AutotoolsPackage):
variant('hdf5', default=False, description='Enable hdf5 support')
variant('readline', default=True, description='Enable readline support')
variant('pmix', default=False, description='Enable PMIx support')
+ variant('sysconfdir', default='PREFIX/etc', values=any,
+ description='Set system configuration path (possibly /etc/slurm)')
# TODO: add variant for BG/Q and Cray support
@@ -94,6 +99,10 @@ class Slurm(AutotoolsPackage):
else:
args.append('--without-pmix')
+ sysconfdir = spec.variants['sysconfdir'].value
+ if sysconfdir != 'PREFIX/etc':
+ args.append('--sysconfdir={0}'.format(sysconfdir))
+
return args
def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/smproxy/package.py b/var/spack/repos/builtin/packages/smproxy/package.py
index e76e32e6c9..5e05f134e5 100644
--- a/var/spack/repos/builtin/packages/smproxy/package.py
+++ b/var/spack/repos/builtin/packages/smproxy/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Smproxy(AutotoolsPackage):
+class Smproxy(AutotoolsPackage, XorgPackage):
"""smproxy allows X applications that do not support X11R6 session
management to participate in an X11R6 session."""
homepage = "http://cgit.freedesktop.org/xorg/app/smproxy"
- url = "https://www.x.org/archive/individual/app/smproxy-1.0.6.tar.gz"
+ xorg_mirror_path = "app/smproxy-1.0.6.tar.gz"
version('1.0.6', sha256='a01374763426a5fdcbc7a65edc54e2070cdbca4df41dddd3051c7586e4c814c9')
diff --git a/var/spack/repos/builtin/packages/sonlib/package.py b/var/spack/repos/builtin/packages/sonlib/package.py
new file mode 100644
index 0000000000..c071e8a7b0
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sonlib/package.py
@@ -0,0 +1,47 @@
+# Copyright 2013-2020 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 Sonlib(MakefilePackage):
+ """sonLib is a compact C/Python library for
+ sequence analysis in bioinformatics."""
+
+ # This is sonlib as needed by the hal package which expects
+ # a side by side compilation
+ #
+ # If you need to use sonlib then you want py-sonlib
+
+ homepage = "https://github.com/ComparativeGenomicsToolkit"
+ url = "https://github.com/ComparativeGenomicsToolkit/sonLib"
+ git = "https://github.com/ComparativeGenomicsToolkit/sonLib.git"
+
+ version('master', branch='master')
+ version('2020-04-01', commit='7ebe2ede05a6ee366d93a7a993db69a99943a68f')
+
+ def setup_build_environment(self, env):
+
+ binpath = os.path.join(self.stage.source_path, 'bin')
+ libpath = os.path.join(self.stage.source_path, 'lib')
+
+ env.set('BINDIR', binpath)
+ env.set('LIBDIR', libpath)
+
+ def build(self, spec, prefix):
+
+ binpath = os.path.join(self.stage.source_path, 'bin')
+ libpath = os.path.join(self.stage.source_path, 'lib')
+
+ mkdir(binpath)
+ mkdir(libpath)
+
+ make()
+
+ def install(self, spec, prefix):
+
+ install_tree('bin', prefix.bin)
+ install_tree('lib', prefix.lib)
diff --git a/var/spack/repos/builtin/packages/source-highlight/package.py b/var/spack/repos/builtin/packages/source-highlight/package.py
new file mode 100644
index 0000000000..eee706518a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/source-highlight/package.py
@@ -0,0 +1,21 @@
+# 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 SourceHighlight(AutotoolsPackage, GNUMirrorPackage):
+ """This program, given a source file, produces a document with syntax
+ highlighting. It also provides a C++ highlight library
+ (since version 3.0). """
+
+ homepage = "https://www.gnu.org/software/src-highlite/"
+ gnu_mirror_path = "src-highlite/source-highlight-3.1.8.tar.gz"
+
+ version('3.1.9', sha256='3a7fd28378cb5416f8de2c9e77196ec915145d44e30ff4e0ee8beb3fe6211c91')
+ version('3.1.8', sha256='01336a7ea1d1ccc374201f7b81ffa94d0aecb33afc7d6903ebf9fbf33a55ada3')
+
+ depends_on('boost')
diff --git a/var/spack/repos/builtin/packages/spath/package.py b/var/spack/repos/builtin/packages/spath/package.py
new file mode 100644
index 0000000000..5ccd259f48
--- /dev/null
+++ b/var/spack/repos/builtin/packages/spath/package.py
@@ -0,0 +1,34 @@
+# Copyright 2013-2020 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 Spath(CMakePackage):
+ """Represent and manipulate file system paths"""
+
+ homepage = "https://github.com/ecp-veloc/spath"
+ git = "https://github.com/ecp-veloc/spath.git"
+
+ tags = ['ecp']
+
+ version('master', branch='master')
+
+ variant('mpi', default=True, description="Build with MPI support.")
+ depends_on('mpi', when='+mpi')
+
+ def cmake_args(self):
+ args = []
+
+ if self.spec.satisfies('platform=cray'):
+ args.append("-DSPATH_LINK_STATIC=ON")
+
+ if "+mpi" in self.spec:
+ args.append('-DMPI=ON')
+ args.append("-DMPI_C_COMPILER=%s" % self.spec['mpi'].mpicc)
+ else:
+ args.append('-DMPI=OFF')
+
+ return args
diff --git a/var/spack/repos/builtin/packages/spdlog/package.py b/var/spack/repos/builtin/packages/spdlog/package.py
index e4aad3bf42..15a0cc1d9d 100644
--- a/var/spack/repos/builtin/packages/spdlog/package.py
+++ b/var/spack/repos/builtin/packages/spdlog/package.py
@@ -12,6 +12,8 @@ class Spdlog(CMakePackage):
homepage = "https://github.com/gabime/spdlog"
url = "https://github.com/gabime/spdlog/archive/v0.9.0.tar.gz"
+ version('1.5.0', sha256='b38e0bbef7faac2b82fed550a0c19b0d4e7f6737d5321d4fd8f216b80f8aee8a')
+ version('1.4.2', sha256='821c85b120ad15d87ca2bc44185fa9091409777c756029125a02f81354072157')
version('1.4.1', sha256='3291958eb54ed942d1bd3aef1b4f8ccf70566cbc04d34296ec61eb96ceb73cff')
version('1.2.1', sha256='867a4b7cedf9805e6f76d3ca41889679054f7e5a3b67722fe6d0eae41852a767')
version('1.2.0', sha256='0ba31b9e7f8e43a7be328ab0236d57810e5d4fc8a1a7842df665ae22d5cbd128')
diff --git a/var/spack/repos/builtin/packages/spiral/package.py b/var/spack/repos/builtin/packages/spiral/package.py
new file mode 100644
index 0000000000..5011875e13
--- /dev/null
+++ b/var/spack/repos/builtin/packages/spiral/package.py
@@ -0,0 +1,65 @@
+# 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 Spiral(CMakePackage):
+ """SPIRAL is a program generation system for linear transforms and other
+ mathematical functions that produces very high performance code for a wide
+ spectrum of hardware platforms."""
+
+ homepage = "https://spiral.net"
+ url = "https://github.com/spiral-software/spiral-software/archive/8.1.2.tar.gz"
+
+ maintainers = ['spiralgen']
+
+ version('8.1.2', sha256='506f1dbf923aa1c9f19f05444fa947085715eef37c9d2494d133fcaaa1dd50bc')
+
+ extendable = True
+
+ # No dependencies.
+
+ def build(self, spec, prefix):
+ with working_dir(self.build_directory):
+ make('all')
+ make('install/local')
+
+ # For some reason the make install/local doesn't seem to install
+ # the gap exe...though it does work if run manually
+ gapfil = join_path(self.build_directory, 'gap/src/gap')
+ dest = join_path(self.stage.source_path, 'gap/bin')
+ install(gapfil, dest)
+
+ def install(self, spec, prefix):
+ mkdirp(prefix.gap.bin)
+ gapfil = join_path(self.build_directory, 'gap/src/gap')
+ install(gapfil, prefix.gap.bin)
+ with working_dir(join_path(self.build_directory, 'gap')):
+ files = ('spiral', 'spirald', '_spiral.g')
+ for fil in files:
+ install(fil, prefix)
+ set_executable(join_path(prefix, fil))
+
+ with working_dir(self.stage.source_path):
+ files = ('LICENSE', 'README.md', 'ReleaseNotes.md')
+ for fil in files:
+ install(fil, prefix)
+
+ mkdirp(prefix.gap.lib)
+ mkdirp(prefix.gap.grp)
+ mkdirp(prefix.namespaces)
+ mkdirp(prefix.profiler)
+ mkdirp(prefix.tests)
+
+ print("self.stage.source_path = " + self.stage.source_path)
+ with working_dir(self.stage.source_path):
+ install_tree('namespaces', prefix.namespaces)
+ install_tree('profiler', prefix.profiler)
+ install_tree('tests', prefix.tests)
+
+ with working_dir(join_path(self.stage.source_path, 'gap')):
+ install_tree('lib', prefix.gap.lib)
+ install_tree('grp', prefix.gap.grp)
diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py
index f8dd0e4948..4e79463f36 100644
--- a/var/spack/repos/builtin/packages/sqlite/package.py
+++ b/var/spack/repos/builtin/packages/sqlite/package.py
@@ -38,7 +38,7 @@ class Sqlite(AutotoolsPackage):
'(unsafe for <3.26.0.0 due to Magellan).')
variant('rtree', default=False, description='Build with Rtree module')
- variant('column_metadata', default=False, description="Build with COLUMN_METADATA")
+ variant('column_metadata', default=True, description="Build with COLUMN_METADATA")
# See https://blade.tencent.com/magellan/index_en.html
conflicts('+fts', when='@:3.25.99.99')
diff --git a/var/spack/repos/builtin/packages/sshpass/package.py b/var/spack/repos/builtin/packages/sshpass/package.py
new file mode 100644
index 0000000000..499761a867
--- /dev/null
+++ b/var/spack/repos/builtin/packages/sshpass/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 Sshpass(AutotoolsPackage):
+ """Sshpass is a tool for non-interactivly performing password
+ authentication with SSH's so called "interactive keyboard
+ password authentication". Most user should use SSH's more
+ secure public key authentiaction instead."""
+
+ homepage = "https://sourceforge.net/projects/sshpass/"
+ url = "https://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz"
+
+ version('1.06', sha256='c6324fcee608b99a58f9870157dfa754837f8c48be3df0f5e2f3accf145dee60')
+ version('1.05', sha256='c3f78752a68a0c3f62efb3332cceea0c8a1f04f7cf6b46e00ec0c3000bc8483e')
+ version('1.04', sha256='e8abb9a409f25928722251a5855a74854f6d64af3eb136b804a04fd630d70c80')
+ version('1.03', sha256='5e8082343f5eae43598bb5723fa11bf49d3c9864dc58c7513fe1a90658e52b2f')
+ version('1.02', sha256='e580d999eefbd847c5cd0b36315cb6cd187315c4e7d1cb182b9f94c12c7c6a86')
+ version('1.01', sha256='e2adc378d61b72e63b4381fe123de3c63bd4093c9553d3219e83878f379754f4')
+ version('1.00', sha256='71d4be85a464a8ce2ae308bc04dcb342918f3989b6a81c74217b5df7f11471f8')
+
+ depends_on('m4', type='build')
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
diff --git a/var/spack/repos/builtin/packages/ssht/float_conversion.patch b/var/spack/repos/builtin/packages/ssht/float_conversion.patch
new file mode 100644
index 0000000000..af81bcafd8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/ssht/float_conversion.patch
@@ -0,0 +1,11 @@
+--- spack-src/src/c/ssht_sampling.h
++++ spack-src/src/c/ssht_sampling.h
+@@ -89,7 +89,7 @@
+ */
+ static inline void ssht_sampling_ind2elm(int *el, int *m, int ind) {
+
+- *el = sqrt(ind);
++ *el = lrint(floor(sqrt(ind)));
+ *m = ind - (*el)*(*el) - (*el);
+
+ }
diff --git a/var/spack/repos/builtin/packages/ssht/package.py b/var/spack/repos/builtin/packages/ssht/package.py
index 293ab0eedd..7a4cd4857b 100644
--- a/var/spack/repos/builtin/packages/ssht/package.py
+++ b/var/spack/repos/builtin/packages/ssht/package.py
@@ -7,18 +7,41 @@ from spack import *
class Ssht(Package):
- """The SSHT code provides functionality to perform fast and exact
- spin spherical harmonic transforms."""
+ """ssht: Spin spherical harmonic transforms
+
+ The SSHT code provides functionality to perform fast and exact
+ spin spherical harmonic transforms based on the sampling theorem
+ on the sphere derived in our paper: A novel sampling theorem on
+ the sphere <http://dx.doi.org/10.1109/TSP.2011.2166394>.
+ """
homepage = "https://astro-informatics.github.io/ssht/"
git = "https://github.com/astro-informatics/ssht.git"
+ maintainers = ['eschnett']
+
version('1.2b1', commit='7378ce8853897cbd1b08adebf7ec088c1e40f860')
depends_on('fftw')
+ patch('float_conversion.patch')
+
def install(self, spec, prefix):
- make('default')
- install_tree('include/c', join_path(prefix, 'include'))
+ make('default', 'SSHTDIR=.')
+ mkdirp(join_path(prefix, 'include'))
+ install('src/c/ssht.h',
+ join_path(prefix, 'include', 'ssht.h'))
+ install('src/c/ssht_adjoint.h',
+ join_path(prefix, 'include', 'ssht_adjoint.h'))
+ install('src/c/ssht_core.h',
+ join_path(prefix, 'include', 'ssht_core.h'))
+ install('src/c/ssht_dl.h',
+ join_path(prefix, 'include', 'ssht_dl.h'))
+ install('src/c/ssht_error.h',
+ join_path(prefix, 'include', 'ssht_error.h'))
+ install('src/c/ssht_sampling.h',
+ join_path(prefix, 'include', 'ssht_sampling.h'))
+ install('src/c/ssht_types.h',
+ join_path(prefix, 'include', 'ssht_types.h'))
install_tree('doc/c', join_path(prefix, 'doc'))
install_tree('lib/c', join_path(prefix, 'lib'))
diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py
index 86338a2b9d..2db8a33ab8 100644
--- a/var/spack/repos/builtin/packages/stat/package.py
+++ b/var/spack/repos/builtin/packages/stat/package.py
@@ -14,6 +14,8 @@ class Stat(AutotoolsPackage):
git = "https://github.com/llnl/stat.git"
version('develop', branch='develop')
+ version('4.0.2', sha256='9ece10dde8e1579c9db469ac8d2391b26e59498c0947dbb271c2d01d7ef0a65d',
+ url='https://github.com/LLNL/STAT/releases/download/v4.0.2/stat-4.0.2.tar.gz')
version('4.0.1', sha256='ae3fbd6946003fb16233d82d40285780a9a802da5fe30d09adb8a8b2a2cc4ad6',
url='https://github.com/LLNL/STAT/files/2489327/stat-4.0.1.tar.gz')
version('4.0.0', sha256='1c4f62686645f6dc1d9ef890acc9c2839c150789dc220718775878feb41bdabf',
diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py
index 0e6a27f1dd..88f5aa839c 100644
--- a/var/spack/repos/builtin/packages/suite-sparse/package.py
+++ b/var/spack/repos/builtin/packages/suite-sparse/package.py
@@ -14,6 +14,8 @@ class SuiteSparse(Package):
url = 'https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/v4.5.3.tar.gz'
git = 'https://github.com/DrTimothyAldenDavis/SuiteSparse.git'
+ version('5.7.2', sha256='fe3bc7c3bd1efdfa5cffffb5cebf021ff024c83b5daf0ab445429d3d741bd3ad')
+ version('5.7.1', sha256='5ba5add1663d51a1b6fb128b50fe869b497f3096765ff7f8212f0ede044b9557')
version('5.6.0', sha256='76d34d9f6dafc592b69af14f58c1dc59e24853dcd7c2e8f4c98ffa223f6a1adb')
version('5.5.0', sha256='63c73451734e2bab19d1915796c6776565ea6aea5da4063a9797ecec60da2e3d')
version('5.4.0', sha256='d9d62d539410d66550d0b795503a556830831f50087723cb191a030525eda770')
@@ -130,8 +132,7 @@ class SuiteSparse(Package):
# In those SuiteSparse versions calling "make install" in one go is
# not possible, mainly because of GraphBLAS. Thus compile first and
# install in a second run.
- if (self.spec.version >= Version('5.4.0') and
- self.spec.version <= Version('5.6.0')):
+ if '@5.4.0:' in self.spec:
make('default', *make_args)
make_args.append('INSTALL=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py
index 989158356d..799b413f7d 100644
--- a/var/spack/repos/builtin/packages/superlu-dist/package.py
+++ b/var/spack/repos/builtin/packages/superlu-dist/package.py
@@ -18,6 +18,7 @@ class SuperluDist(CMakePackage):
version('develop', branch='master')
version('xsdk-0.2.0', tag='xsdk-0.2.0')
+ version('6.3.0', sha256='daf3264706caccae2b8fd5a572e40275f1e128fa235cb7c21ee2f8051c11af95')
version('6.1.1', sha256='35d25cff592c724439870444ed45e1d1d15ca2c65f02ccd4b83a6d3c9d220bd1')
version('6.1.0', sha256='92c6d1424dd830ee2d1e7396a418a5f6645160aea8472e558c4e4bfe006593c4')
version('6.0.0', sha256='ff6cdfa0263d595708bbb6d11fb780915d8cfddab438db651e246ea292f37ee4')
diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py
index ac48fb1246..ebc04dd077 100644
--- a/var/spack/repos/builtin/packages/swig/package.py
+++ b/var/spack/repos/builtin/packages/swig/package.py
@@ -23,6 +23,7 @@ class Swig(AutotoolsPackage):
url = "http://prdownloads.sourceforge.net/swig/swig-3.0.12.tar.gz"
version('master', git='https://github.com/swig/swig.git')
+ version('4.0.1', sha256='7a00b4d0d53ad97a14316135e2d702091cd5f193bb58bcfcd8bc59d41e7887a9')
version('4.0.0', sha256='e8a39cd6437e342cdcbd5af27a9bf11b62dc9efec9248065debcb8276fcbb925')
version('3.0.12', sha256='7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d')
version('3.0.11', sha256='d9031d531d7418829a54d0d51c4ed9007016b213657ec70be44031951810566e')
diff --git a/var/spack/repos/builtin/packages/symengine/package.py b/var/spack/repos/builtin/packages/symengine/package.py
index ceb1b9a5ed..a9c866edb7 100644
--- a/var/spack/repos/builtin/packages/symengine/package.py
+++ b/var/spack/repos/builtin/packages/symengine/package.py
@@ -14,7 +14,8 @@ class Symengine(CMakePackage):
url = "https://github.com/symengine/symengine/archive/v0.2.0.tar.gz"
git = "https://github.com/symengine/symengine.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('0.6.0', sha256='4d2caa86c03eaaa8ed004084d02f87b5c51b6229f8ba70d161227e22d6302f0a')
version('0.5.0', sha256='5d02002f00d16a0928d1056e6ecb8f34fd59f3bfd8ed0009a55700334dbae29b')
version('0.4.0', sha256='dd755901a9e2a49e53ba3bbe3f565f94265af05299e57a7b592186dd35916a1b')
version('0.3.0', sha256='591463cb9e741d59f6dfd39a7943e3865d3afe9eac47d1a9cbf5ca74b9c49476')
diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py
index 3453a5675e..0982883e29 100644
--- a/var/spack/repos/builtin/packages/sz/package.py
+++ b/var/spack/repos/builtin/packages/sz/package.py
@@ -3,21 +3,20 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
from spack import *
-class Sz(AutotoolsPackage):
- """Error-bounded Lossy Compressor for HPC Data."""
+class Sz(CMakePackage):
+ """Error-bounded Lossy Compressor for HPC Data"""
homepage = "https://collab.cels.anl.gov/display/ESR/SZ"
url = "https://github.com/disheng222/SZ/archive/v2.1.8.0.tar.gz"
+ git = "https://github.com/disheng222/sz"
maintainers = ['disheng222']
- parallel = False
-
- git = "https://github.com/disheng222/SZ.git"
version('develop', branch='master')
+ version('2.1.8.3', sha256='be94f3c8ab03d6849c59a98e0ebf80816a6b8d07a1d762a4b285498acb2f3871')
+ version('2.1.8.1', sha256='a27c9c9da16c9c4232c54813ba79178945f47609043f11501d49a171e47d3f46')
version('2.1.8.0', sha256='8d6bceb59a03d52e601e29d9b35c21b146c248abae352f9a4828e91d8d26aa24')
version('2.0.2.0', sha256='176c65b421bdec8e91010ffbc9c7bf7852c799972101d6b66d2a30d9702e59b0')
version('1.4.13.5', sha256='b5e37bf3c377833eed0a7ca0471333c96cd2a82863abfc73893561aaba5f18b9')
@@ -32,17 +31,88 @@ class Sz(AutotoolsPackage):
version('1.4.10.0', sha256='cf23cf1ffd7c69c3d3128ae9c356b6acdc03a38f92c02db5d9bfc04f3fabc506')
version('1.4.9.2', sha256='9dc785274d068d04c2836955fc93518a9797bfd409b46fea5733294b7c7c18f8')
- variant('fortran', default=False,
- description='Enable fortran compilation')
+ variant('python', default=False, description="builds the python wrapper")
+ variant('netcdf', default=False, description="build the netcdf reader")
+ variant('hdf5', default=False, description="build the hdf5 filter")
+ variant('pastri', default=False, description="build the pastri mode")
+ variant('time_compression', default=False, description="build the time based compression mode")
+ variant('random_access', default=False, description="build the random access compression mode")
+ variant('fortran', default=False, description='Enable fortran compilation')
+ variant('shared', default=True, description="build shared versions of the libraries")
# Part of latest sources don't support -O3 optimization
# with Fujitsu compiler.
patch('fix_optimization.patch', when='@2.0.2.0:%fj')
- def configure_args(self):
+ depends_on('zlib')
+ depends_on('zstd')
+
+ extends('python', when="+python")
+ depends_on('python@3:', when="+python", type=('build', 'link', 'run'))
+ depends_on('swig@3.12:', when="+python", type='build')
+ depends_on('py-numpy', when="+python", type=('build', 'link', 'run'))
+ depends_on('hdf5', when="+hdf5")
+ depends_on('netcdf-c', when="+netcdf")
+
+ @property
+ def build_directory(self):
+ """autotools needs a different build directory to work"""
+ if self.version >= Version("2.1.8.1"):
+ return "spack-build"
+ else:
+ return "."
+
+ @when("@:2.1.8.0")
+ def cmake(self, spec, prefix):
+ """use autotools before 2.1.8.1"""
+ configure_args = ["--prefix=" + prefix]
+ if "+fortran" in spec:
+ configure_args.append("--enable-fortran")
+ else:
+ configure_args.append("--disable-fortran")
+ configure(*configure_args)
+
+ def cmake_args(self):
+ """configure the package with CMake for version 2.1.8.1 and later"""
args = []
- if '+fortran' in self.spec:
- args += ['--enable-fortran']
+
+ if "+python" in self.spec:
+ args.append("-DBUILD_PYTHON_WRAPPER=ON")
+ else:
+ args.append("-DBUILD_PYTHON_WRAPPER=OFF")
+
+ if "+netcdf" in self.spec:
+ args.append("-DBUILD_NETCDF_READER=ON")
+ else:
+ args.append("-DBUILD_NETCDF_READER=OFF")
+
+ if "+hdf5" in self.spec:
+ args.append("-DBUILD_HDF5_FILTER=ON")
+ else:
+ args.append("-DBUILD_HDF5_FILTER=OFF")
+
+ if "+pastri" in self.spec:
+ args.append("-DBUILD_PASTRI=ON")
+ else:
+ args.append("-DBUILD_PASTRI=OFF")
+
+ if "+time_compression" in self.spec:
+ args.append("-DBUILD_TIMECMPR=ON")
+ else:
+ args.append("-DBUILD_TIMECMPR=OFF")
+
+ if "+random_access" in self.spec:
+ args.append("-DBUILD_RANDOMACCESS=ON")
+ else:
+ args.append("-DBUILD_RANDOMACCESS=OFF")
+
+ if "+fortran" in self.spec:
+ args.append("-DBUILD_FORTRAN=ON")
+ else:
+ args.append("-DBUILD_FORTRAN=OFF")
+
+ if "+shared" in self.spec:
+ args.append("-DBUILD_SHARED_LIBS=ON")
else:
- args += ['--disable-fortran']
+ args.append("-DBUILD_SHARED_LIBS=OFF")
return args
diff --git a/var/spack/repos/builtin/packages/tar/package.py b/var/spack/repos/builtin/packages/tar/package.py
index de12fd2344..15c2e4bc0e 100644
--- a/var/spack/repos/builtin/packages/tar/package.py
+++ b/var/spack/repos/builtin/packages/tar/package.py
@@ -19,7 +19,7 @@ class Tar(AutotoolsPackage, GNUMirrorPackage):
version('1.29', sha256='cae466e6e58c7292355e7080248f244db3a4cf755f33f4fa25ca7f9a7ed09af0')
version('1.28', sha256='6a6b65bac00a127a508533c604d5bf1a3d40f82707d56f20cefd38a05e8237de')
- depends_on('libiconv')
+ depends_on('iconv')
patch('tar-pgi.patch', when='@1.29')
patch('config-pgi.patch', when='@:1.29')
@@ -29,5 +29,5 @@ class Tar(AutotoolsPackage, GNUMirrorPackage):
def configure_args(self):
return [
- '--with-libiconv-prefix={0}'.format(self.spec['libiconv'].prefix),
+ '--with-libiconv-prefix={0}'.format(self.spec['iconv'].prefix),
]
diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py
index c5ac0a43e8..132bcb7e3d 100644
--- a/var/spack/repos/builtin/packages/tau/package.py
+++ b/var/spack/repos/builtin/packages/tau/package.py
@@ -18,6 +18,7 @@ class Tau(Package):
Java, Python.
"""
+ maintainers = ['wspear', 'eugeneswalker', 'khuck', 'sameershende']
homepage = "http://www.cs.uoregon.edu/research/tau"
url = "https://www.cs.uoregon.edu/research/tau/tau_releases/tau-2.28.1.tar.gz"
git = "https://github.com/UO-OACISS/tau2"
@@ -67,6 +68,9 @@ class Tau(Package):
variant('cuda', default=False, description='Activates CUDA support')
variant('fortran', default=darwin_default, description='Activates Fortran support')
variant('io', default=True, description='Activates POSIX I/O support')
+ variant('adios2', default=False, description='Activates ADIOS2 output support')
+ variant('sqlite', default=False, description='Activates SQLite3 output support')
+ variant('profileparam', default=False, description='Generate profiles with parameter mapped event data')
# Support cross compiling.
# This is a _reasonable_ subset of the full set of TAU
@@ -85,18 +89,23 @@ class Tau(Package):
depends_on('libdwarf', when='+libdwarf')
depends_on('libelf', when='+libdwarf')
# TAU requires the ELF header support, libiberty and demangle.
- depends_on('binutils+libiberty+headers~nls', when='+binutils')
+ depends_on('binutils@:2.33.1+libiberty+headers~nls', when='+binutils')
depends_on('python@2.7:', when='+python')
depends_on('libunwind', when='+libunwind')
- depends_on('mpi', when='+mpi')
+ depends_on('mpi', when='+mpi', type=('build', 'run', 'link'))
depends_on('cuda', when='+cuda')
depends_on('gasnet', when='+gasnet')
+ depends_on('adios2', when='+adios2')
+ depends_on('sqlite', when='+sqlite')
+ depends_on('hwloc')
# Elf only required from 2.28.1 on
conflicts('+libelf', when='@:2.28.0')
conflicts('+libdwarf', when='@:2.28.0')
- filter_compiler_wrappers('tau_cc.sh', 'Makefile.tau', relative_root='bin')
+ # ADIOS2, SQLite only available from 2.29.1 on
+ conflicts('+adios2', when='@:2.29.1')
+ conflicts('+sqlite', when='@:2.29.1')
def set_compiler_options(self, spec):
@@ -145,8 +154,7 @@ class Tau(Package):
# TAU configure, despite the name , seems to be a manually
# written script (nothing related to autotools). As such it has
# a few #peculiarities# that make this build quite hackish.
- options = ["-prefix=%s" % prefix,
- "-iowrapper"]
+ options = ["-prefix=%s" % prefix]
if '+craycnl' in spec:
options.append('-arch=craycnl')
@@ -206,10 +214,18 @@ class Tau(Package):
options.append("-otf=%s" % spec['otf2'].prefix)
if '+mpi' in spec:
+ env['CC'] = spec['mpi'].mpicc
+ env['CXX'] = spec['mpi'].mpicxx
+ env['F77'] = spec['mpi'].mpif77
+ env['FC'] = spec['mpi'].mpifc
+
options.append('-mpi')
if '+comm' in spec:
options.append('-PROFILECOMMUNICATORS')
+ if '+profileparam' in spec:
+ options.append('-PROFILEPARAM')
+
if '+shmem' in spec:
options.append('-shmem')
@@ -219,6 +235,12 @@ class Tau(Package):
if '+cuda' in spec:
options.append("-cuda=%s" % spec['cuda'].prefix)
+ if '+adios2' in spec:
+ options.append("-adios=%s" % spec['adios2'].prefix)
+
+ if '+sqlite' in spec:
+ options.append("-sqlite3=%s" % spec['sqlite'].prefix)
+
if '+phase' in spec:
options.append('-PROFILEPHASE')
@@ -253,11 +275,15 @@ class Tau(Package):
compiler_specific_options = self.set_compiler_options(spec)
options.extend(compiler_specific_options)
configure(*options)
+
make("install")
# Link arch-specific directories into prefix since there is
# only one arch per prefix the way spack installs.
self.link_tau_arch_dirs()
+ # TAU may capture Spack's internal compiler wrapper. Replace
+ # it with the correct compiler.
+ self.fix_tau_compilers()
def link_tau_arch_dirs(self):
for subdir in os.listdir(self.prefix):
@@ -267,6 +293,22 @@ class Tau(Package):
if os.path.isdir(src) and not os.path.exists(dest):
os.symlink(join_path(subdir, d), dest)
+ def fix_tau_compilers(self):
+ filter_file('FULL_CC=' + spack_cc, 'FULL_CC=' + self.compiler.cc,
+ self.prefix + '/include/Makefile', backup=False,
+ string=True)
+ filter_file('FULL_CXX=' + spack_cxx, 'FULL_CXX=' +
+ self.compiler.cxx, self.prefix + '/include/Makefile',
+ backup=False, string=True)
+ for makefile in os.listdir(self.prefix.lib):
+ if makefile.startswith('Makefile.tau'):
+ filter_file('FULL_CC=' + spack_cc, 'FULL_CC=' +
+ self.compiler.cc, self.prefix.lib + "/" +
+ makefile, backup=False, string=True)
+ filter_file('FULL_CXX=' + spack_cxx, 'FULL_CXX=' +
+ self.compiler.cxx, self.prefix.lib +
+ "/" + makefile, backup=False, string=True)
+
def setup_run_environment(self, env):
pattern = join_path(self.prefix.lib, 'Makefile.*')
files = glob.glob(pattern)
diff --git a/var/spack/repos/builtin/packages/tcsh/package.py b/var/spack/repos/builtin/packages/tcsh/package.py
index 19bdde1503..90625e352d 100644
--- a/var/spack/repos/builtin/packages/tcsh/package.py
+++ b/var/spack/repos/builtin/packages/tcsh/package.py
@@ -15,10 +15,11 @@ class Tcsh(AutotoolsPackage):
syntax."""
homepage = "http://www.tcsh.org/"
- url = "http://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/old/tcsh-6.20.00.tar.gz"
+ url = "http://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/tcsh-6.20.00.tar.gz"
+ list_url = "http://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/old/"
- version('6.21.00', sha256='c438325448371f59b12a4c93bfd3f6982e6f79f8c5aef4bc83aac8f62766e972',
- url='http://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/tcsh-6.21.00.tar.gz')
+ version('6.22.02', sha256='ed287158ca1b00ba477e8ea57bac53609838ebcfd05fcb05ca95021b7ebe885b')
+ version('6.21.00', sha256='c438325448371f59b12a4c93bfd3f6982e6f79f8c5aef4bc83aac8f62766e972')
version('6.20.00', sha256='b89de7064ab54dac454a266cfe5d8bf66940cb5ed048d0c30674ea62e7ecef9d')
def fedora_patch(commit, file, **kwargs): # noqa
@@ -40,7 +41,7 @@ class Tcsh(AutotoolsPackage):
# Downstream patches
fedora_patch('8a6066c901fb4fc75013dd488ba958387f00c74d', 'tcsh-6.20.00-manpage-memoryuse.patch', sha256='3a4e60fe56a450632140c48acbf14d22850c1d72835bf441e3f8514d6c617a9f') # noqa: E501
- depends_on('ncurses')
+ depends_on('ncurses+termlib')
@run_after('install')
def link_csh(self):
diff --git a/var/spack/repos/builtin/packages/the-silver-searcher/package.py b/var/spack/repos/builtin/packages/the-silver-searcher/package.py
index 905fdabba2..516e744247 100644
--- a/var/spack/repos/builtin/packages/the-silver-searcher/package.py
+++ b/var/spack/repos/builtin/packages/the-silver-searcher/package.py
@@ -12,6 +12,7 @@ class TheSilverSearcher(AutotoolsPackage):
homepage = "http://geoff.greer.fm/ag/"
url = "http://geoff.greer.fm/ag/releases/the_silver_searcher-0.32.0.tar.gz"
+ version('2.2.0', sha256='d9621a878542f3733b5c6e71c849b9d1a830ed77cb1a1f6c2ea441d4b0643170')
version('2.1.0', sha256='d4652bd91c3a05e87a15809c5f3f14ad2e5e1f80185af510e3fa4ad2038c15d4')
version('0.32.0', sha256='944ca77e498f344b2bfbd8df6d5d8df7bbc1c7e080b50c0bab3d1a9a55151b60')
version('0.30.0', sha256='b4bf9e50bf48bc5fde27fc386f7bcad8644ef15a174c862a10813e81bd127e69')
diff --git a/var/spack/repos/builtin/packages/tixi/package.py b/var/spack/repos/builtin/packages/tixi/package.py
new file mode 100644
index 0000000000..74a7ed7c65
--- /dev/null
+++ b/var/spack/repos/builtin/packages/tixi/package.py
@@ -0,0 +1,24 @@
+# Copyright 2013-2020 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 Tixi(CMakePackage):
+ """TiXI is a fast and simple XML interface library and could be used
+ from applications written in C, C++, Fortran, JAVA and Python. """
+
+ homepage = "https://github.com/DLR-SC/tixi"
+ url = "https://github.com/DLR-SC/tixi/archive/v3.0.3.tar.gz"
+ git = "https://github.com/DLR-SC/tixi.git"
+
+ version('3.0.3', sha256='3584e0cec6ab811d74fb311a9af0663736b1d7f11b81015fcb378efaf5ad3589')
+ version('2.2.4', sha256='9080d2a617b7c411b9b4086de23998ce86e261b88075f38c73d3ce25da94b21c')
+
+ depends_on('python', type='build')
+ depends_on('expat')
+ depends_on('curl')
+ depends_on('libxml2')
+ depends_on('libxslt')
diff --git a/var/spack/repos/builtin/packages/tmux/package.py b/var/spack/repos/builtin/packages/tmux/package.py
index 6ee165a7b1..e6677668fd 100644
--- a/var/spack/repos/builtin/packages/tmux/package.py
+++ b/var/spack/repos/builtin/packages/tmux/package.py
@@ -29,13 +29,7 @@ class Tmux(AutotoolsPackage):
version('2.1', sha256='31564e7bf4bcef2defb3cb34b9e596bd43a3937cad9e5438701a81a5a9af6176')
version('1.9a', sha256='c5e3b22b901cf109b20dab54a4a651f0471abd1f79f6039d79b250d21c2733f5')
+ # used by configure to e.g. find libtinfo
+ depends_on('pkgconfig', type='build')
depends_on('libevent')
depends_on('ncurses')
-
- def flag_handler(self, name, flags):
- if name == 'cppflags':
- flags.append(self.spec['ncurses'].headers.include_flags)
- return (None, flags, None)
-
- def configure_args(self):
- return ['LIBTINFO_LIBS=-lncurses']
diff --git a/var/spack/repos/builtin/packages/transset/package.py b/var/spack/repos/builtin/packages/transset/package.py
index 9b79b092ef..089ab2aecf 100644
--- a/var/spack/repos/builtin/packages/transset/package.py
+++ b/var/spack/repos/builtin/packages/transset/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Transset(AutotoolsPackage):
+class Transset(AutotoolsPackage, XorgPackage):
"""transset is an utility for setting opacity property."""
homepage = "http://cgit.freedesktop.org/xorg/app/transset"
- url = "https://www.x.org/archive/individual/app/transset-1.0.1.tar.gz"
+ xorg_mirror_path = "app/transset-1.0.1.tar.gz"
version('1.0.1', sha256='87c560e69e05ae8a5bad17ff62ac31cda43a5065508205b109c756c0ab857d55')
diff --git a/var/spack/repos/builtin/packages/trapproto/package.py b/var/spack/repos/builtin/packages/trapproto/package.py
index a2c6f20d32..4945caa50a 100644
--- a/var/spack/repos/builtin/packages/trapproto/package.py
+++ b/var/spack/repos/builtin/packages/trapproto/package.py
@@ -6,10 +6,10 @@
from spack import *
-class Trapproto(AutotoolsPackage):
+class Trapproto(AutotoolsPackage, XorgPackage):
"""X.org TrapProto protocol headers."""
homepage = "https://cgit.freedesktop.org/xorg/proto/trapproto"
- url = "https://www.x.org/archive/individual/proto/trapproto-3.4.3.tar.gz"
+ xorg_mirror_path = "proto/trapproto-3.4.3.tar.gz"
version('3.4.3', sha256='abfb930b5703b5a6ebafe84d0246bd8c6b099ca4a4eab06d1dc0776a8a9b87c1')
diff --git a/var/spack/repos/builtin/packages/tree/package.py b/var/spack/repos/builtin/packages/tree/package.py
index c3823d313c..3f3e480969 100644
--- a/var/spack/repos/builtin/packages/tree/package.py
+++ b/var/spack/repos/builtin/packages/tree/package.py
@@ -18,6 +18,7 @@ class Tree(Package):
homepage = "http://mama.indstate.edu/users/ice/tree/"
url = "http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz"
+ version('1.8.0', sha256='715d5d4b434321ce74706d0dd067505bb60c5ea83b5f0b3655dae40aa6f9b7c2')
version('1.7.0', sha256='6957c20e82561ac4231638996e74f4cfa4e6faabc5a2f511f0b4e3940e8f7b12')
def install(self, spec, prefix):
@@ -30,6 +31,10 @@ class Tree(Package):
'hash.o',
'color.o'
]
+ # version 1.8.0 added file.c
+ if spec.version >= Version('1.8.0'):
+ objs.append('file.o')
+
if (sys.platform == 'darwin'):
objs.append('strverscmp.o')
diff --git a/var/spack/repos/builtin/packages/triangle/package.py b/var/spack/repos/builtin/packages/triangle/package.py
index 882b8b472b..f8703f33b3 100644
--- a/var/spack/repos/builtin/packages/triangle/package.py
+++ b/var/spack/repos/builtin/packages/triangle/package.py
@@ -18,6 +18,8 @@ class Triangle(Package):
version('1.6', sha256='1766327add038495fa3499e9b7cc642179229750f7201b94f8e1b7bee76f8480')
+ depends_on('libx11', type='link')
+
def install(self, spec, prefix):
make()
mkdirp(prefix.bin)
diff --git a/var/spack/repos/builtin/packages/trilinos/fix_clang_errors_12_18_1.patch b/var/spack/repos/builtin/packages/trilinos/fix_clang_errors_12_18_1.patch
new file mode 100644
index 0000000000..6da3f4314d
--- /dev/null
+++ b/var/spack/repos/builtin/packages/trilinos/fix_clang_errors_12_18_1.patch
@@ -0,0 +1,39 @@
+From 01b88601a85691da73042089778db6db5bf6cf01 Mon Sep 17 00:00:00 2001
+From: Jean-Paul Pelteret <jppelteret@gmail.com>
+Date: Sat, 1 Feb 2020 05:48:48 +0100
+Subject: [PATCH] Fix Clang 8.0.0 compiler errors 12.18.1
+
+---
+ packages/belos/tpetra/src/solvers/Belos_Tpetra_Krylov.hpp | 2 +-
+ packages/muelu/src/Interface/MueLu_ParameterListUtils.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/packages/belos/tpetra/src/solvers/Belos_Tpetra_Krylov.hpp b/packages/belos/tpetra/src/solvers/Belos_Tpetra_Krylov.hpp
+index d4f72bc..302dfc2 100644
+--- a/packages/belos/tpetra/src/solvers/Belos_Tpetra_Krylov.hpp
++++ b/packages/belos/tpetra/src/solvers/Belos_Tpetra_Krylov.hpp
+@@ -126,7 +126,7 @@ public:
+ virtual void
+ getDefaultParameters (Teuchos::ParameterList& params) const
+ {
+- const SolverInput<SC> input;
++ const SolverInput<SC> input{};
+ const int verbosity = 0;
+ const std::string implResScal = input.needToScale ?
+ "Norm of Preconditioned Initial Residual" : "None"; // ???
+diff --git a/packages/muelu/src/Interface/MueLu_ParameterListUtils.cpp b/packages/muelu/src/Interface/MueLu_ParameterListUtils.cpp
+index 051a2df..a703aff 100644
+--- a/packages/muelu/src/Interface/MueLu_ParameterListUtils.cpp
++++ b/packages/muelu/src/Interface/MueLu_ParameterListUtils.cpp
+@@ -143,7 +143,7 @@ namespace MueLu {
+
+ // Usage: GetMLSubList(paramList, "smoother", 2);
+ const Teuchos::ParameterList & GetMLSubList(const Teuchos::ParameterList & paramList, const std::string & type, int levelID) {
+- static const Teuchos::ParameterList emptyParamList;
++ static const Teuchos::ParameterList emptyParamList{};
+
+ char levelChar[11];
+ sprintf(levelChar, "(level %d)", levelID);
+--
+2.10.1 (Apple Git-78)
+
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 74e6b7f85e..fd623fe8db 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -66,6 +66,10 @@ class Trilinos(CMakePackage):
description='Enable explicit template instantiation (ETI)')
variant('float', default=False,
description='Enable single precision (float) numbers in Trilinos')
+ variant('gotype', default='long',
+ values=('int', 'long', 'long_long'),
+ multi=False,
+ description='global ordinal type for Tpetra')
variant('fortran', default=True,
description='Compile with Fortran support')
variant('openmp', default=False,
@@ -82,18 +86,24 @@ class Trilinos(CMakePackage):
description='Compile with Boost')
variant('cgns', default=False,
description='Enable CGNS')
- variant('adios2', default=False,
+ variant('adios2', default=False,
description='Enable ADIOS2')
+ variant('glm', default=True,
+ description='Compile with GLM')
variant('gtest', default=True,
description='Compile with Gtest')
variant('hdf5', default=True,
description='Compile with HDF5')
variant('hypre', default=True,
description='Compile with Hypre preconditioner')
+ variant('matio', default=True,
+ description='Compile with Matio')
variant('metis', default=True,
description='Compile with METIS and ParMETIS')
variant('mumps', default=True,
description='Compile with support for MUMPS solvers')
+ variant('netcdf', default=True,
+ description='Compile with netcdf')
variant('pnetcdf', default=False,
description='Compile with parallel-netcdf')
variant('suite-sparse', default=True,
@@ -185,6 +195,8 @@ class Trilinos(CMakePackage):
description='Enable DataTransferKit')
variant('fortrilinos', default=False,
description='Enable ForTrilinos')
+ variant('mesquite', default=False,
+ description='Enable Mesquite')
resource(name='dtk',
git='https://github.com/ornl-cees/DataTransferKit.git',
@@ -208,6 +220,21 @@ class Trilinos(CMakePackage):
tag='develop',
placement='packages/ForTrilinos',
when='+fortrilinos')
+ resource(name='mesquite',
+ url='https://github.com/trilinos/mesquite/archive/trilinos-release-12-12-1.tar.gz',
+ sha256='e0d09b0939dbd461822477449dca611417316e8e8d8268fd795debb068edcbb5',
+ placement='packages/mesquite',
+ when='+mesquite @12.12.1:12.16.99')
+ resource(name='mesquite',
+ git='https://github.com/trilinos/mesquite.git',
+ commit='20a679679b5cdf15bf573d66c5dc2b016e8b9ca1', # branch trilinos-release-12-12-1
+ placement='packages/mesquite',
+ when='+mesquite @12.18.1:12.18.99')
+ resource(name='mesquite',
+ git='https://github.com/trilinos/mesquite.git',
+ tag='develop',
+ placement='packages/mesquite',
+ when='+mesquite @develop')
conflicts('+amesos2', when='~teuchos')
conflicts('+amesos2', when='~tpetra')
@@ -266,6 +293,8 @@ class Trilinos(CMakePackage):
conflicts('+fortrilinos', when='~fortran')
conflicts('+fortrilinos', when='@:99')
conflicts('+fortrilinos', when='@master')
+ # Only allow Mesquite with Trilinos 12.12 and up, and develop
+ conflicts('+mesquite', when='@0:12.10.99,master')
# Can only use one type of SuperLU
conflicts('+superlu-dist', when='+superlu')
# For Trilinos v11 we need to force SuperLUDist=OFF, since only the
@@ -289,6 +318,8 @@ class Trilinos(CMakePackage):
# ADIOS2 was only added after v12.14.1
conflicts('+adios2', when='@:12.14.1')
conflicts('+adios2', when='@xsdk-0.2.0')
+ conflicts('+pnetcdf', when='~netcdf')
+
# ###################### Dependencies ##########################
# Everything should be compiled position independent (-fpic)
@@ -296,17 +327,17 @@ class Trilinos(CMakePackage):
depends_on('lapack')
depends_on('boost', when='+boost')
depends_on('boost', when='+dtk')
- depends_on('matio')
- depends_on('glm')
+ depends_on('matio', when='+matio')
+ depends_on('glm', when='+glm')
depends_on('metis@5:', when='+metis')
depends_on('suite-sparse', when='+suite-sparse')
depends_on('zlib', when="+zlib")
# MPI related dependencies
depends_on('mpi')
- 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('netcdf-c+mpi', when="+netcdf~pnetcdf")
+ depends_on('netcdf-c+mpi+parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:")
+ depends_on('parallel-netcdf', when="+netcdf+pnetcdf@master,12.12.1:")
depends_on('parmetis', when='+metis')
depends_on('cgns', when='+cgns')
depends_on('adios2', when='+adios2')
@@ -342,6 +373,7 @@ class Trilinos(CMakePackage):
patch('xlf_tpetra.patch', when='@12.12.1%xl')
patch('xlf_tpetra.patch', when='@12.12.1%xl_r')
patch('xlf_tpetra.patch', when='@12.12.1%clang')
+ patch('fix_clang_errors_12_18_1.patch', when='@12.18.1%clang')
def url_for_version(self, version):
url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz"
@@ -417,6 +449,8 @@ class Trilinos(CMakePackage):
'ON' if '+kokkos' in spec else 'OFF'),
'-DTrilinos_ENABLE_MiniTensor=%s' % (
'ON' if '+minitensor' in spec else 'OFF'),
+ '-DTrilinos_ENABLE_Mesquite:BOOL=%s' % (
+ 'ON' if '+mesquite' in spec else 'OFF'),
'-DTrilinos_ENABLE_ML:BOOL=%s' % (
'ON' if '+ml' in spec else 'OFF'),
'-DTrilinos_ENABLE_MueLu:BOOL=%s' % (
@@ -511,14 +545,23 @@ class Trilinos(CMakePackage):
'-DTPL_ENABLE_LAPACK=ON',
'-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-c'].prefix,
+ '-DTPL_ENABLE_GLM:BOOL=%s' % ('ON' if '+glm' in spec else 'OFF'),
+ '-DTPL_ENABLE_Matio:BOOL=%s' % (
+ 'ON' if '+matio' in spec else 'OFF'),
'-DTPL_ENABLE_X11:BOOL=%s' % (
'ON' if '+x11' in spec else 'OFF'),
'-DTrilinos_ENABLE_Gtest:BOOL=%s' % (
'ON' if '+gtest' in spec else 'OFF'),
])
+ if '+netcdf' in spec:
+ options.extend([
+ '-DTPL_ENABLE_Netcdf:BOOL=ON',
+ '-DNetCDF_ROOT:PATH=%s' % spec['netcdf-c'].prefix
+ ])
+ else:
+ options.extend(['-DTPL_ENABLE_Netcdf:BOOL=OFF'])
+
if '+hypre' in spec:
options.extend([
'-DTPL_ENABLE_HYPRE:BOOL=ON',
@@ -722,10 +765,15 @@ class Trilinos(CMakePackage):
)
if '+explicit_template_instantiation' in spec and '+tpetra' in spec:
+ gotype = spec.variants['gotype'].value
options.extend([
'-DTpetra_INST_DOUBLE:BOOL=ON',
- '-DTpetra_INST_INT_LONG:BOOL=ON',
- '-DTpetra_INST_INT_LONG_LONG:BOOL=ON',
+ '-DTpetra_INST_INT_INT:BOOL=%s' % (
+ 'ON' if gotype == 'int' else 'OFF'),
+ '-DTpetra_INST_INT_LONG:BOOL=%s' % (
+ 'ON' if gotype == 'long' else 'OFF'),
+ '-DTpetra_INST_INT_LONG_LONG:BOOL=%s' % (
+ 'ON' if gotype == 'long_long' else 'OFF'),
'-DTpetra_INST_COMPLEX_DOUBLE=%s' % complex_s,
'-DTpetra_INST_COMPLEX_FLOAT=%s' % complex_float_s,
'-DTpetra_INST_FLOAT=%s' % float_s,
diff --git a/var/spack/repos/builtin/packages/twm/package.py b/var/spack/repos/builtin/packages/twm/package.py
index 3f86cb06cf..45dae87541 100644
--- a/var/spack/repos/builtin/packages/twm/package.py
+++ b/var/spack/repos/builtin/packages/twm/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Twm(AutotoolsPackage):
+class Twm(AutotoolsPackage, XorgPackage):
"""twm is a window manager for the X Window System. It provides
titlebars, shaped windows, several forms of icon management,
user-defined macro functions, click-to-type and pointer-driven
keyboard focus, and user-specified key and pointer button bindings."""
homepage = "http://cgit.freedesktop.org/xorg/app/twm"
- url = "https://www.x.org/archive/individual/app/twm-1.0.9.tar.gz"
+ xorg_mirror_path = "app/twm-1.0.9.tar.gz"
version('1.0.9', sha256='1c325e8456a200693c816baa27ceca9c5e5e0f36af63d98f70a335853a0039e8')
diff --git a/var/spack/repos/builtin/packages/uchardet/package.py b/var/spack/repos/builtin/packages/uchardet/package.py
new file mode 100644
index 0000000000..1e09e08e62
--- /dev/null
+++ b/var/spack/repos/builtin/packages/uchardet/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2020 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 Uchardet(CMakePackage):
+ """uchardet is an encoding detector library, which takes a sequence of
+ bytes in an unknown character encoding without any additional information,
+ and attempts to determine the encoding of the text. Returned encoding names
+ are iconv-compatible."""
+
+ homepage = "https://www.freedesktop.org/wiki/Software/uchardet/"
+ url = "https://www.freedesktop.org/software/uchardet/releases/uchardet-0.0.6.tar.xz"
+
+ version('0.0.6', sha256='8351328cdfbcb2432e63938721dd781eb8c11ebc56e3a89d0f84576b96002c61')
+ version('0.0.5', sha256='7c5569c8ee1a129959347f5340655897e6a8f81ec3344de0012a243f868eabd1')
+ version('0.0.4', sha256='9dbe41fc73ba6a70676c04b1f0dd812914c0bbb65940283f2d54c5a2338a2acd')
+ version('0.0.3', sha256='8caba57524b6e306e764b4dabf5bfec48b6f9d89b73543ed7c95263890e2006f')
+ version('0.0.2', sha256='eb59b5b36269212a0d5f44d654cdbeb02e4e43ff59e3ce0205d6a64670991e83')
+
+ def url_for_version(self, version):
+ if version >= Version('0.0.6'):
+ url = "https://www.freedesktop.org/software/uchardet/releases/uchardet-0.0.6.tar.xz"
+ else:
+ url = "https://github.com/BYVoid/uchardet/archive/v0.0.5.tar.gz"
+ return url
diff --git a/var/spack/repos/builtin/packages/ucx/package.py b/var/spack/repos/builtin/packages/ucx/package.py
index 681fa5b6bf..7def88bd88 100644
--- a/var/spack/repos/builtin/packages/ucx/package.py
+++ b/var/spack/repos/builtin/packages/ucx/package.py
@@ -13,7 +13,10 @@ class Ucx(AutotoolsPackage):
homepage = "http://www.openucx.org"
url = "https://github.com/openucx/ucx/releases/download/v1.3.1/ucx-1.3.1.tar.gz"
+ maintainers = ['hppritcha']
+
# Current
+ version('1.7.0', sha256='6ab81ee187bfd554fe7e549da93a11bfac420df87d99ee61ffab7bb19bdd3371')
version('1.6.1', sha256='1425648aa03f5fa40e4bc5c4a5a83fe0292e2fe44f6054352fbebbf6d8f342a1')
version('1.6.0', sha256='360e885dd7f706a19b673035a3477397d100a02eb618371697c7f3ee4e143e2c')
version('1.5.2', sha256='1a333853069860e86ba69b8d071ccc9871209603790e2b673ec61f8086913fad')
@@ -30,6 +33,18 @@ class Ucx(AutotoolsPackage):
variant('thread_multiple', default=False,
description='Enable thread support in UCP and UCT')
+ variant('optimizations', default=False,
+ description='Enable optimizations')
+ variant('logging', default=False,
+ description='Enable logging')
+ variant('debug', default=False,
+ description='Enable debugging')
+ variant('assertions', default=False,
+ description='Enable assertions')
+ variant('parameter_checking', default=False,
+ description='Enable paramter checking')
+ variant('pic', default=False,
+ description='Builds with PIC support')
depends_on('numactl')
depends_on('rdma-core')
@@ -41,4 +56,30 @@ class Ucx(AutotoolsPackage):
config_args.append('--enable-mt')
else:
config_args.append('--disable-mt')
+
+ if '+optimizations' in spec:
+ config_args.append('--enable-optimizations')
+ else:
+ config_args.append('--disable-optimizations')
+
+ if '+logging' in spec:
+ config_args.append('--enable-logging')
+ else:
+ config_args.append('--disable-logging')
+
+ if '+assertions' in spec:
+ config_args.append('--enable-assertions')
+ else:
+ config_args.append('--disable-assertions')
+
+ if '+paramter_checking' in spec:
+ config_args.append('--enable-params-check')
+ else:
+ config_args.append('--disable-params-check')
+
+ if '+pic' in spec:
+ config_args.append('--with-pic')
+ else:
+ config_args.append('--without-pic')
+
return config_args
diff --git a/var/spack/repos/builtin/packages/umpire/package.py b/var/spack/repos/builtin/packages/umpire/package.py
index fc33ca7feb..90ea23dde3 100644
--- a/var/spack/repos/builtin/packages/umpire/package.py
+++ b/var/spack/repos/builtin/packages/umpire/package.py
@@ -16,6 +16,13 @@ class Umpire(CMakePackage):
version('develop', branch='develop', submodules='True')
version('master', branch='master', submodules='True')
+ version('2.1.0', tag='v2.1.0', submodules='True')
+ version('2.0.0', tag='v2.0.0', submodules='True')
+ version('1.1.0', tag='v1.1.0', submodules='True')
+ version('1.0.1', tag='v1.0.1', submodules='True')
+ version('1.0.0', tag='v1.0.0', submodules='True')
+ version('0.3.5', tag='v0.3.5', submodules='True')
+ version('0.3.4', tag='v0.3.4', submodules='True')
version('0.3.3', tag='v0.3.3', submodules='True')
version('0.3.2', tag='v0.3.2', submodules='True')
version('0.3.1', tag='v0.3.1', submodules='True')
@@ -29,7 +36,8 @@ class Umpire(CMakePackage):
version('0.1.3', tag='v0.1.3', submodules='True')
variant('cuda', default=False, description='Build with CUDA support')
- variant('fortran', default=False, description='Build C/Fortran API')
+ variant('fortran', default=False, description='Build Fortran API')
+ variant('c', default=True, description='Build C API')
variant('numa', default=False, description='Enable NUMA support')
depends_on('cuda', when='+cuda')
@@ -37,6 +45,7 @@ class Umpire(CMakePackage):
depends_on('cmake@3.9:', when='+cuda', type='build')
conflicts('+numa', when='@:0.3.2')
+ conflicts('~c', when='+fortran', msg='Fortran API requires C API')
def cmake_args(self):
spec = self.spec
@@ -50,6 +59,9 @@ class Umpire(CMakePackage):
else:
options.append('-DENABLE_CUDA=Off')
+ if '+c' in spec:
+ options.append('-DENABLE_C=On')
+
if '+fortran' in spec:
options.append('-DENABLE_FORTRAN=On')
diff --git a/var/spack/repos/builtin/packages/unifyfs/auto-mount.patch b/var/spack/repos/builtin/packages/unifyfs/auto-mount.patch
new file mode 100644
index 0000000000..a621f7dd11
--- /dev/null
+++ b/var/spack/repos/builtin/packages/unifyfs/auto-mount.patch
@@ -0,0 +1,25 @@
+diff --git a/client/src/pmpi_wrappers.c b/client/src/pmpi_wrappers.c
+index ac86d39..38755f5 100644
+--- a/client/src/pmpi_wrappers.c
++++ b/client/src/pmpi_wrappers.c
+@@ -14,7 +14,6 @@
+
+ #include "pmpi_wrappers.h"
+ #include "unifyfs.h"
+-#include <mpi.h>
+ #include <stdio.h>
+
+ int unifyfs_mpi_init(int* argc, char*** argv)
+diff --git a/client/src/pmpi_wrappers.h b/client/src/pmpi_wrappers.h
+index b90057c..995e44b 100644
+--- a/client/src/pmpi_wrappers.h
++++ b/client/src/pmpi_wrappers.h
+@@ -15,6 +15,8 @@
+ #ifndef UNIFYFS_PMPI_WRAPPERS_H
+ #define UNIFYFS_PMPI_WRAPPERS_H
+
++#include <mpi.h>
++
+ /* MPI_Init PMPI wrapper */
+ int unifyfs_mpi_init(int* argc, char*** argv);
+ int MPI_Init(int* argc, char*** argv);
diff --git a/var/spack/repos/builtin/packages/unifyfs/package.py b/var/spack/repos/builtin/packages/unifyfs/package.py
index cf4a8e0c4f..77b4014741 100644
--- a/var/spack/repos/builtin/packages/unifyfs/package.py
+++ b/var/spack/repos/builtin/packages/unifyfs/package.py
@@ -43,6 +43,7 @@ class Unifyfs(AutotoolsPackage):
depends_on('margo')
depends_on('mercury+bmi+sm')
depends_on('mpi')
+ depends_on('openssl')
# Optional dependencies
depends_on('hdf5', when='+hdf5')
@@ -53,6 +54,10 @@ class Unifyfs(AutotoolsPackage):
conflicts('%intel', when='+fortran')
conflicts('%xl', when='+fortran')
+ # Fix broken --enable-mpi-mount config option for version 0.9.0
+ # See https://github.com/LLNL/UnifyFS/issues/467
+ patch('auto-mount.patch', when='@0.9.0')
+
# Parallel disabled to prevent tests from being run out-of-order when
# installed with the --test={root, all} option.
parallel = False
diff --git a/var/spack/repos/builtin/packages/unixodbc/package.py b/var/spack/repos/builtin/packages/unixodbc/package.py
index 2802f87aa5..b93e7eb166 100644
--- a/var/spack/repos/builtin/packages/unixodbc/package.py
+++ b/var/spack/repos/builtin/packages/unixodbc/package.py
@@ -16,5 +16,5 @@ class Unixodbc(AutotoolsPackage):
version('2.3.4', sha256='2e1509a96bb18d248bf08ead0d74804957304ff7c6f8b2e5965309c632421e39')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('libtool')
diff --git a/var/spack/repos/builtin/packages/unqlite/0001-Removed-the-STATIC-key-word-to-enable-building-a-sha.patch b/var/spack/repos/builtin/packages/unqlite/0001-Removed-the-STATIC-key-word-to-enable-building-a-sha.patch
new file mode 100644
index 0000000000..70602845e2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/unqlite/0001-Removed-the-STATIC-key-word-to-enable-building-a-sha.patch
@@ -0,0 +1,26 @@
+From 7c14b18c4967c04344ceba2da90467cd27ee5678 Mon Sep 17 00:00:00 2001
+From: Matthieu Dorier <mdorier@anl.gov>
+Date: Thu, 2 Apr 2020 12:43:19 +0100
+Subject: [PATCH] Removed the STATIC key word to enable building a shared
+ library
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f2bb3cd..efb63a7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -18,7 +18,7 @@ SET(SOURCES_UNQLITE
+ )
+
+ SET(UNQLITE_STATIC_LIB unqlite)
+-ADD_LIBRARY(${UNQLITE_STATIC_LIB} STATIC ${HEADERS_UNQLITE} ${SOURCES_UNQLITE})
++ADD_LIBRARY(${UNQLITE_STATIC_LIB} ${HEADERS_UNQLITE} ${SOURCES_UNQLITE})
+
+ INSTALL(TARGETS ${UNQLITE_STATIC_LIB} COMPONENT devel ARCHIVE DESTINATION lib)
+ INSTALL(FILES ${HEADERS_UNQLITE} COMPONENT devel DESTINATION include)
+--
+2.20.1
+
diff --git a/var/spack/repos/builtin/packages/unqlite/package.py b/var/spack/repos/builtin/packages/unqlite/package.py
new file mode 100644
index 0000000000..ff746cc75a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/unqlite/package.py
@@ -0,0 +1,25 @@
+# Copyright 2013-2020 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 Unqlite(CMakePackage):
+ """UnQLite is a in-process software library which implements a self-contained,
+ serverless, zero-configuration, transactional NoSQL database engine."""
+
+ homepage = "https://unqlite.org/"
+ url = "https://github.com/symisc/unqlite/archive/v1.1.9.tar.gz"
+ git = 'https://github.com/symisc/unqlite.git'
+
+ version('master', branch='master')
+ version('1.1.9', sha256='33d5b5e7b2ca223942e77d31112d2e20512bc507808414451c8a98a7be5e15c0')
+
+ # This patch corresponds to https://github.com/symisc/unqlite/pull/99
+ patch('0001-Removed-the-STATIC-key-word-to-enable-building-a-sha.patch', when='@1.1.9')
+
+ def cmake_args(self):
+ args = ["-DBUILD_SHARED_LIBS:BOOL=ON"]
+ return args
diff --git a/var/spack/repos/builtin/packages/upcxx/package.py b/var/spack/repos/builtin/packages/upcxx/package.py
index e4806c4c9c..d5c74bebb9 100644
--- a/var/spack/repos/builtin/packages/upcxx/package.py
+++ b/var/spack/repos/builtin/packages/upcxx/package.py
@@ -10,7 +10,7 @@ def cross_detect():
if spack.architecture.platform().name == 'cray':
if which('srun'):
return 'cray-aries-slurm'
- if which('alps'):
+ if which('aprun'):
return 'cray-aries-alps'
return 'none'
@@ -25,9 +25,17 @@ class Upcxx(Package):
homepage = "https://upcxx.lbl.gov"
maintainers = ['bonachea']
+ git = 'https://bonachea@bitbucket.org/berkeleylab/upcxx.git'
+ version('develop', branch='develop')
+ version('master', branch='master')
+
+ version('2020.3.0', sha256='01be35bef4c0cfd24e9b3d50c88866521b9cac3ad4cbb5b1fc97aea55078810f')
version('2019.9.0', sha256='7d67ccbeeefb59de9f403acc719f52127a30801a2c2b9774a1df03f850f8f1d4')
version('2019.3.2', sha256='dcb0b337c05a0feb2ed5386f5da6c60342412b49cab10f282f461e74411018ad')
+ variant('mpi', default=False,
+ description='Enables MPI-based spawners and mpi-conduit')
+
variant('cuda', default=False,
description='Builds a CUDA-enabled version of UPC++')
@@ -35,10 +43,19 @@ class Upcxx(Package):
description="UPC++ cross-compile target (autodetect by default)")
conflicts('cross=none', when='platform=cray',
- msg='None is unacceptable on Cray.')
+ msg='cross=none is unacceptable on Cray.' +
+ 'Please specify an appropriate "cross" value')
+ depends_on('mpi', when='+mpi')
depends_on('cuda', when='+cuda')
- depends_on('python@2.7.5:2.999', type=("build", "run"))
+ # Require Python2 2.7.5+ up to v2019.9.0
+ depends_on('python@2.7.5:2.999',
+ type=("build", "run"), when='@:2019.9.0')
+ # v2020.3.0 and later also permit Python3
+ depends_on('python@2.7.5:', type=("build", "run"), when='@2020.3.0:')
+
+ # All flags should be passed to the build-env in autoconf-like vars
+ flag_handler = env_flags
def url_for_version(self, version):
if version > Version('2019.3.2'):
@@ -48,8 +65,14 @@ class Upcxx(Package):
return url.format(version)
def setup_build_environment(self, env):
- if 'platform=cray' in self.spec:
- env.set('GASNET_CONFIGURE_ARGS', '--enable-mpi=probe')
+ # ensure we use the correct python
+ env.set('UPCXX_PYTHON', self.spec['python'].command.path)
+
+ if '+mpi' in self.spec:
+ env.set('GASNET_CONFIGURE_ARGS',
+ '--enable-mpi --enable-mpi-compat')
+ else:
+ env.set('GASNET_CONFIGURE_ARGS', '--without-mpicc')
if 'cross=none' not in self.spec:
env.set('CROSS', self.spec.variants['cross'].value)
@@ -59,6 +82,9 @@ class Upcxx(Package):
env.set('UPCXX_CUDA_NVCC', self.spec['cuda'].prefix.bin.nvcc)
def setup_run_environment(self, env):
+ # ensure we use the correct python
+ env.set('UPCXX_PYTHON', self.spec['python'].command.path)
+
env.set('UPCXX_INSTALL', self.prefix)
env.set('UPCXX', self.prefix.bin.upcxx)
if 'platform=cray' in self.spec:
@@ -76,7 +102,72 @@ class Upcxx(Package):
env.set('UPCXX_NETWORK', 'aries')
def install(self, spec, prefix):
- env['CC'] = self.compiler.cc
- env['CXX'] = self.compiler.cxx
- installsh = Executable("./install")
- installsh(prefix)
+ # UPC++ follows autoconf naming convention for LDLIBS, which is 'LIBS'
+ if (env.get('LDLIBS')):
+ env['LIBS'] = env['LDLIBS']
+
+ if spec.version <= Version('2019.9.0'):
+ env['CC'] = self.compiler.cc
+ if '+mpi' in self.spec:
+ if 'platform=cray' in self.spec:
+ env['GASNET_CONFIGURE_ARGS'] += \
+ " --with-mpicc=" + self.compiler.cc
+ else:
+ env['CXX'] = spec['mpi'].mpicxx
+ else:
+ env['CXX'] = self.compiler.cxx
+ installsh = Executable("./install")
+ installsh(prefix)
+ else:
+ if 'platform=cray' in self.spec:
+ # Spack loads the cray-libsci module incorrectly on ALCF theta,
+ # breaking the Cray compiler wrappers
+ # cray-libsci is irrelevant to our build, so disable it
+ for var in ['PE_PKGCONFIG_PRODUCTS', 'PE_PKGCONFIG_LIBS']:
+ env[var] = ":".join(
+ filter(lambda x: "libsci" not in x.lower(),
+ env[var].split(":")))
+ # Undo spack compiler wrappers:
+ # the C/C++ compilers must work post-install
+ # hack above no longer works after the fix to UPC++ issue #287
+ real_cc = join_path(env['CRAYPE_DIR'], 'bin', 'cc')
+ real_cxx = join_path(env['CRAYPE_DIR'], 'bin', 'CC')
+ # workaround a bug in the UPC++ installer: (issue #346)
+ env['GASNET_CONFIGURE_ARGS'] += \
+ " --with-cc=" + real_cc + " --with-cxx=" + real_cxx
+ if '+mpi' in self.spec:
+ env['GASNET_CONFIGURE_ARGS'] += " --with-mpicc=" + real_cc
+ else:
+ real_cc = self.compiler.cc
+ real_cxx = self.compiler.cxx
+ if '+mpi' in self.spec:
+ real_cxx = spec['mpi'].mpicxx
+
+ env['CC'] = real_cc
+ env['CXX'] = real_cxx
+
+ installsh = Executable("./configure")
+ installsh('--prefix=' + prefix)
+
+ make()
+
+ make('install')
+
+ @run_after('install')
+ @on_package_attributes(run_tests=True)
+ def test_install(self):
+ if self.spec.version <= Version('2019.9.0'):
+ spack.main.send_warning_to_tty(
+ "run_tests not supported in UPC++ version " +
+ self.spec.version.string + " -- SKIPPED")
+ else:
+ # enable testing of unofficial conduits (mpi)
+ test_networks = 'NETWORKS=$(CONDUITS)'
+ # build hello world against installed tree in all configurations
+ make('test_install', test_networks)
+ make('tests-clean') # cleanup
+ # build all tests for all networks in debug mode
+ make('tests', test_networks)
+ if 'cross=none' in self.spec:
+ make('run-tests', 'NETWORKS=smp') # runs tests for smp backend
+ make('tests-clean') # cleanup
diff --git a/var/spack/repos/builtin/packages/uqtk/package.py b/var/spack/repos/builtin/packages/uqtk/package.py
new file mode 100644
index 0000000000..c6af83e759
--- /dev/null
+++ b/var/spack/repos/builtin/packages/uqtk/package.py
@@ -0,0 +1,20 @@
+# Copyright 2013-2020 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 Uqtk(CMakePackage):
+ """Sandia Uncertainty Quantification Toolkit. The UQ Toolkit (UQTk) is a
+ collection of libraries and tools for the quantification of uncertainty
+ in numerical model predictions"""
+
+ homepage = "https://www.sandia.gov/UQToolkit/"
+ url = "https://github.com/sandialabs/UQTk/archive/v3.0.4.tar.gz"
+ git = "https://github.com/sandialabs/UQTk.git"
+
+ version('master', branch='master')
+ version('3.0.4', sha256='0a72856438134bb571fd328d1d30ce3d0d7aead32eda9b7fb6e436a27d546d2e')
+
+ depends_on('expat')
diff --git a/var/spack/repos/builtin/packages/userspace-rcu/examples.patch b/var/spack/repos/builtin/packages/userspace-rcu/examples.patch
new file mode 100644
index 0000000000..ef65ab4b79
--- /dev/null
+++ b/var/spack/repos/builtin/packages/userspace-rcu/examples.patch
@@ -0,0 +1,13 @@
+diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
+index edf00eb..cd491df 100644
+--- a/doc/examples/Makefile.am
++++ b/doc/examples/Makefile.am
+@@ -141,7 +141,7 @@ all-local:
+ else \
+ rel_build_subdir="../"; \
+ fi; \
+- $(MAKE) -f dist-files/Makefile CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" AM_CPPFLAGS="$(AM_CPPFLAGS) -I"$${rel_src_subdir}/$(top_srcdir)/include/" -I"$${rel_src_subdir}/$(top_srcdir)/src/" -I"$${rel_build_subdir}$(top_builddir)/include/" -I"$${rel_build_subdir}$(top_builddir)/include/src/"" CFLAGS="$(CFLAGS)" AM_CFLAGS="$(AM_CFLAGS)" LDFLAGS="$(LDFLAGS)" AM_LDFLAGS="$(AM_LDFLAGS) -L../../../src/.libs/ -Wl,-rpath "$(PWD)/../../src/.libs/"" AM_V_P="$(AM_V_P)" AM_V_at="$(AM_V_at)" $(AM_MAKEFLAGS) all;
++ $(MAKE) -f dist-files/Makefile CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" AM_CPPFLAGS="$(AM_CPPFLAGS) -I"$${rel_src_subdir}/$(top_srcdir)/include/" -I"$${rel_src_subdir}/$(top_srcdir)/src/" -I"$${rel_build_subdir}$(top_builddir)/include/" -I"$${rel_build_subdir}$(top_builddir)/include/src/"" CFLAGS="$(CFLAGS)" AM_CFLAGS="$(AM_CFLAGS)" LDFLAGS="$(LDFLAGS)" AM_LDFLAGS="$(AM_LDFLAGS) -L../../../src/.libs/ -Wl,-rpath="$(PWD)/../../src/.libs/"" AM_V_P="$(AM_V_P)" AM_V_at="$(AM_V_at)" $(AM_MAKEFLAGS) all;
+
+ clean-local:
+ $(AM_V_at)$(MAKE) -f dist-files/Makefile $(AM_MAKEFLAGS) clean; \
diff --git a/var/spack/repos/builtin/packages/userspace-rcu/package.py b/var/spack/repos/builtin/packages/userspace-rcu/package.py
new file mode 100644
index 0000000000..be03459d34
--- /dev/null
+++ b/var/spack/repos/builtin/packages/userspace-rcu/package.py
@@ -0,0 +1,31 @@
+# Copyright 2013-2020 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 UserspaceRcu(AutotoolsPackage):
+ """liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. This
+ data synchronization library provides read-side access which scales
+ linearly with the number of cores."""
+
+ homepage = "http://liburcu.org/"
+ url = "https://github.com/urcu/userspace-rcu/archive/v0.11.1.tar.gz"
+
+ version('0.11.1', sha256='a0ed8995edfbeac5f5eb2f152a8f3654040ecfc99a746bfe3da3bccf435b7d5d')
+ version('0.11.0', sha256='7834e4692565b491b9d2d258095d6c05089c9bae8a1bef280c338d15ba02e9ac')
+ version('0.10.2', sha256='e117c416fced894e24720cc1b38247074a13020f19d6704b38e554cbcb993d06')
+ version('0.9.6', sha256='4d9e4ca40c079e0b0e9f912a9092589b97fbaf80eb6537e9ae70d48c09472efa')
+
+ depends_on('m4', type='build')
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+
+ patch('examples.patch', sha256='49aa8fa99d3a1315c639d2a90014079c34a7d0a6dde110b6cbb7b02f87324742')
+
+ def autoreconf(self, spec, prefix):
+ bash = which('bash')
+ bash('./bootstrap')
diff --git a/var/spack/repos/builtin/packages/util-linux/package.py b/var/spack/repos/builtin/packages/util-linux/package.py
index 49afb16f54..ccd6bba9aa 100644
--- a/var/spack/repos/builtin/packages/util-linux/package.py
+++ b/var/spack/repos/builtin/packages/util-linux/package.py
@@ -9,29 +9,41 @@ from spack import *
class UtilLinux(AutotoolsPackage):
"""Util-linux is a suite of essential utilities for any Linux system."""
- homepage = "http://freecode.com/projects/util-linux"
+ homepage = "https://github.com/karelzak/util-linux"
url = "https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.2.tar.gz"
list_url = "https://www.kernel.org/pub/linux/utils/util-linux"
list_depth = 1
+ version('2.35.1', sha256='37ac05d82c6410d89bc05d43cee101fefc8fe6cf6090b3ce7a1409a6f35db606')
+ version('2.35', sha256='98acab129a8490265052e6c1e033ca96d68758a13bb7fcd232c06bf16cc96238')
+ version('2.34', sha256='b62c92e5e1629642113cd41cec1ee86d1ee7e36b8ffe8ec3ac89c11797e9ac25')
+ version('2.33', sha256='952fb0d3498e81bd67b3c48e283c80cb12c719bc2357ec5801e7d420991ad319')
version('2.29.2', sha256='29ccdf91d2c3245dc705f0ad3bf729ac41d8adcdbeff914e797c552ecb04a4c7')
version('2.29.1', sha256='a6a7adba65a368e6dad9582d9fbedee43126d990df51266eaee089a73c893653')
version('2.25', sha256='7e43273a9e2ab99b5a54ac914fddf5d08ba7ab9b114c550e9f03474672bd23a1')
depends_on('python@2.7:')
depends_on('pkgconfig')
+ depends_on('gettext', when='+libmount')
# Make it possible to disable util-linux's libuuid so that you may
# reliably depend_on(`libuuid`).
variant('libuuid', default=True, description='Build libuuid')
+ variant('libmount', default=False, description='Build libmount.so with gettext')
def url_for_version(self, version):
url = "https://www.kernel.org/pub/linux/utils/util-linux/v{0}/util-linux-{1}.tar.gz"
return url.format(version.up_to(2), version)
+ def setup_build_environment(self, env):
+ if '+libmount' in self.spec:
+ env.append_flags('LDFLAGS', '-L{0} -lintl'.format(
+ self.spec['gettext'].prefix.lib))
+
def configure_args(self):
config_args = [
'--disable-use-tty-group',
+ '--disable-makeinstall-chown',
]
config_args.extend(self.enable_or_disable('libuuid'))
return config_args
diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py
index c30107033f..aed09613bf 100644
--- a/var/spack/repos/builtin/packages/util-macros/package.py
+++ b/var/spack/repos/builtin/packages/util-macros/package.py
@@ -6,13 +6,13 @@
from spack import *
-class UtilMacros(AutotoolsPackage):
+class UtilMacros(AutotoolsPackage, XorgPackage):
"""This is a set of autoconf macros used by the configure.ac scripts in
other Xorg modular packages, and is needed to generate new versions
of their configure scripts with autoconf."""
homepage = "http://cgit.freedesktop.org/xorg/util/macros/"
- url = "https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2"
+ xorg_mirror_path = "util/util-macros-1.19.1.tar.bz2"
version('1.19.1', sha256='18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6')
version('1.19.0', sha256='2835b11829ee634e19fa56517b4cfc52ef39acea0cd82e15f68096e27cbed0ba')
diff --git a/var/spack/repos/builtin/packages/valgrind/package.py b/var/spack/repos/builtin/packages/valgrind/package.py
index 684a5bdfa8..9bf0589450 100644
--- a/var/spack/repos/builtin/packages/valgrind/package.py
+++ b/var/spack/repos/builtin/packages/valgrind/package.py
@@ -8,7 +8,7 @@ import glob
import sys
-class Valgrind(AutotoolsPackage):
+class Valgrind(AutotoolsPackage, SourcewarePackage):
"""An instrumentation framework for building dynamic analysis.
There are Valgrind tools that can automatically detect many memory
@@ -19,7 +19,7 @@ class Valgrind(AutotoolsPackage):
under the GNU General Public License, version 2.
"""
homepage = "http://valgrind.org/"
- url = "https://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2"
+ sourceware_mirror_path = "valgrind/valgrind-3.13.0.tar.bz2"
git = "git://sourceware.org/git/valgrind.git"
version('develop', branch='master')
diff --git a/var/spack/repos/builtin/packages/veccore/package.py b/var/spack/repos/builtin/packages/veccore/package.py
new file mode 100644
index 0000000000..a339358a08
--- /dev/null
+++ b/var/spack/repos/builtin/packages/veccore/package.py
@@ -0,0 +1,40 @@
+# Copyright 2013-2020 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 Veccore(CMakePackage, CudaPackage):
+ """SIMD Vectorization Library for VecGeom and GeantV"""
+
+ homepage = "https://gitlab.cern.ch/VecGeom/VecCore"
+ url = "https://gitlab.cern.ch/VecGeom/VecCore/-/archive/v0.6.0/VecCore-v0.6.0.tar.gz"
+ git = "https://gitlab.cern.ch/VecGeom/VecCore.git"
+
+ maintainers = ['drbenmorgan', 'sethrj']
+
+ version('master', branch='master')
+ version('0.6.0', sha256='e7ff874ba2a8201624795cbe11c84634863e4ac7da691a936772d4202ef54413')
+ version('0.5.2', sha256='0cfaa830b9d10fb9df4ced5208a742623da08520fea5949461fe81637a27db15')
+ version('0.5.1', sha256='5ef3a8d8692d8f82641aae76b58405b8b3a1539a8f21b23d66a5df8327eeafc4')
+ version('0.5.0', sha256='aba3e0217c0cd829290c9fe63f1db865838aa25312ae0a09effdcb186f7771be')
+ version('0.4.2', sha256='4a3bb944bce63dc1dc9757ba53624b822e1aff5ed088d542039a20227ed2b715')
+
+ variant('cxxstd',
+ default='11',
+ values=('11', '14', '17'),
+ multi=False,
+ description='Use the specified C++ standard when building.')
+ conflicts('cxxstd=14', when='@:0.5')
+ conflicts('cxxstd=17', when='@:0.5')
+
+ def cmake_args(self):
+ define = CMakePackage.define
+ return [
+ define('VC', False),
+ define('UMESIMD', False),
+ self.define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'),
+ self.define_from_variant('CUDA'),
+ ]
diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py
index ed6e516c8a..20352f7712 100644
--- a/var/spack/repos/builtin/packages/vecgeom/package.py
+++ b/var/spack/repos/builtin/packages/vecgeom/package.py
@@ -5,49 +5,97 @@
from spack import *
-import platform
-class Vecgeom(CMakePackage):
+class Vecgeom(CMakePackage, CudaPackage):
"""The vectorized geometry library for particle-detector simulation
(toolkits)."""
homepage = "https://gitlab.cern.ch/VecGeom/VecGeom"
- url = "https://gitlab.cern.ch/api/v4/projects/VecGeom%2FVecGeom/repository/archive.tar.gz?sha=v0.3.rc"
+ url = "https://gitlab.cern.ch/VecGeom/VecGeom/-/archive/v1.1.6/VecGeom-v1.1.6.tar.gz"
+ git = "https://gitlab.cern.ch/VecGeom/VecGeom.git"
- version('01.01.03', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v01.01.03', preferred=True)
- version('01.00.00', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v01.00.00')
- version('00.05.00', git='https://gitlab.cern.ch/VecGeom/VecGeom.git', tag='v00.05.00')
+ maintainers = ['drbenmorgan', 'sethrj']
+
+ version('master', branch='master')
+ version('1.1.6', sha256='c4806a6b67d01b40074b8cc6865d78574a6a1c573be51696f2ecdf98b9cb954a')
+ version('1.1.5', sha256='da674f3bbc75c30f56c1a2d251fa8930c899f27fa64b03a36569924030d87b95')
+ version('1.1.3', sha256='ada09e8b6b2fa6c058290302b2cb5a6c2e644192aab1623c31d18c6a2f4c01c8')
+ version('1.1.0', sha256='e9d1ef83ff591fe4f9ef744a4d3155a3dc7e90ddb6735b24f3afe4c2dc3f7064')
+ version('1.0.1', sha256='1eae7ac9014c608e8d8db5568058b8c0fea1a1dc7a8f54157a3a1c997b6fd9eb')
+ version('0.5.2', tag='v00.05.02',
+ commit='a7e0828c915ff936a79e672d1dd84b087a323b51')
version('0.3.rc', sha256='a87a9ea4ab126b59ff9c79182bc0911ead3d76dd197194742e2a35ccd341299d')
- variant('cxxstd',
- default='17',
- values=('11', '14', '17'),
- multi=False,
- description='Use the specified C++ standard when building.')
- variant('vector',
- default='native',
- values=('sse3', 'sse4.2', 'native'),
- multi=False,
- description='Specify the instruction set for vectorization.')
+ _cxxstd_values = ('11', '14', '17')
+ variant('cxxstd', default='11', values=_cxxstd_values, multi=False,
+ description='Use the specified C++ standard when building')
+ variant('gdml', default=True,
+ description='Support native GDML geometry descriptions')
+ variant('geant4', default=False,
+ description='Support Geant4 geometry construction')
+ variant('root', default=False,
+ description='Support ROOT geometry construction')
+ variant('shared', default=True,
+ description='Build shared libraries')
+
+ depends_on('veccore@0.5.2:', type=('build', 'link'), when='@1.1.0:')
+ depends_on('veccore@0.4.2', type=('build', 'link'), when='@:1.0')
+ depends_on('veccore+cuda', type=('build', 'link'), when='+cuda')
+
+ conflicts('+cuda', when='@:1.1.5')
- depends_on('cmake@3.5:', type='build')
+ for std in _cxxstd_values:
+ depends_on('geant4 cxxstd=' + std, when='+geant4 cxxstd=' + std)
+ depends_on('root cxxstd=' + std, when='+root cxxstd=' + std)
+ depends_on('veccore cxxstd=' + std, when='cxxstd=' + std)
+ depends_on('xerces-c cxxstd=' + std, when='+gdml cxxstd=' + std)
def cmake_args(self):
- options = [
- '-DBACKEND=Scalar',
- '-DGEANT4=OFF',
- '-DUSOLIDS=ON',
- '-DUSOLIDS_VECGEOM=ON',
- '-DROOT=OFF',
- '-DNO_SPECIALIZATION=ON',
- '-DCMAKE_VERBOSE_MAKEFILE=TRUE']
- options.append('-DCMAKE_CXX_STANDARD={0}'.
- format(self.spec.variants['cxxstd'].value))
- arch = platform.machine()
- if arch == 'x86_64':
- options.append('-DVECGEOM_VECTOR={0}'.
- format(self.spec.variants['vector'].value))
+ # Possible target options are from the main CMakeLists.txt, assuming
+ # "best" is last
+ target = self.spec.target
+ vecgeom_arch = "sse2 sse3 ssse3 sse4.1 sse4.2 avx avx2".split()
+ for feature in reversed(vecgeom_arch):
+ if feature.replace('.', '_') in target:
+ target_instructions = feature
+ break
else:
- options.append('-DVECGEOM_VECTOR=' + arch)
+ # No features available (could be 'generic' arch)
+ target_instructions = 'empty'
+
+ define = CMakePackage.define
+ options = [
+ define('BACKEND', 'Scalar'),
+ define('BUILTIN_VECCORE', False),
+ define('NO_SPECIALIZATION', True),
+ define('VECGEOM_VECTOR', target_instructions),
+ self.define_from_variant('BUILD_SHARED_LIBS', 'shared'),
+ self.define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'),
+ self.define_from_variant('CUDA'),
+ self.define_from_variant('GDML'),
+ self.define_from_variant('GEANT4'),
+ self.define_from_variant('ROOT'),
+ ]
+
+ # Set testing flags
+ build_tests = self.run_tests
+ options.extend([
+ define('BUILD_TESTING', build_tests),
+ define('CTEST', build_tests),
+ define('GDMLTESTING', build_tests and '+gdml' in self.spec),
+ ])
+
+ if '+cuda' in self.spec:
+ arch = self.spec.variants['cuda_arch'].value
+ if len(arch) != 1 or arch[0] == 'none':
+ raise InstallError("Exactly one cuda_arch must be specified")
+ options.append(define('CUDA_ARCH', arch[0]))
+
+ if self.spec.satisfies("@:0.5.2"):
+ options.extend([
+ define('USOLIDS', True),
+ define('USOLIDS_VECGEOM', True),
+ ])
+
return options
diff --git a/var/spack/repos/builtin/packages/verrou/package.py b/var/spack/repos/builtin/packages/verrou/package.py
index 265ee2b096..f92443d144 100644
--- a/var/spack/repos/builtin/packages/verrou/package.py
+++ b/var/spack/repos/builtin/packages/verrou/package.py
@@ -32,18 +32,24 @@ class Verrou(AutotoolsPackage):
version('2.0.0', sha256='798df6e426ec57646a2a626d756b72f0171647ae5b07c982952dae2d71e26045')
version('1.1.0', sha256='b5105f61c65680f31551199cd143b2e15f412c34c821537998a7165e315dde2d')
+ # The server is sometimes a bit slow to respond
+ timeout = {'timeout': 60}
+
resource(name='valgrind-3.15.0',
url='https://sourceware.org/pub/valgrind/valgrind-3.15.0.tar.bz2',
sha256='417c7a9da8f60dd05698b3a7bc6002e4ef996f14c13f0ff96679a16873e78ab1',
- when='@2.2.0:')
+ when='@2.2.0:',
+ fetch_options=timeout)
resource(name='valgrind-3.14.0',
url='https://sourceware.org/pub/valgrind/valgrind-3.14.0.tar.bz2',
sha256='037c11bfefd477cc6e9ebe8f193bb237fe397f7ce791b4a4ce3fa1c6a520baa5',
- when='@2.1.0:2.1.99')
+ when='@2.1.0:2.1.99',
+ fetch_options=timeout)
resource(name='valgrind-3.13.0',
url='https://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2',
sha256='d76680ef03f00cd5e970bbdcd4e57fb1f6df7d2e2c071635ef2be74790190c3b',
- when='@1.1.0:2.0.99')
+ when='@1.1.0:2.0.99',
+ fetch_options=timeout)
variant('fma', default=True,
description='Activates fused multiply-add support for Verrou')
diff --git a/var/spack/repos/builtin/packages/videoproto/package.py b/var/spack/repos/builtin/packages/videoproto/package.py
index 76d04dfc6f..8aa1fea213 100644
--- a/var/spack/repos/builtin/packages/videoproto/package.py
+++ b/var/spack/repos/builtin/packages/videoproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Videoproto(AutotoolsPackage):
+class Videoproto(AutotoolsPackage, XorgPackage):
"""X Video Extension.
This extension provides a protocol for a video output mechanism,
mainly to rescale video playback in the video controller hardware."""
homepage = "http://cgit.freedesktop.org/xorg/proto/videoproto"
- url = "https://www.x.org/archive/individual/proto/videoproto-2.3.3.tar.gz"
+ xorg_mirror_path = "proto/videoproto-2.3.3.tar.gz"
version('2.3.3', sha256='df8dfeb158767f843054248d020e291a2c40f7f5e0ac6d8706966686fee7c5c0')
diff --git a/var/spack/repos/builtin/packages/viewres/package.py b/var/spack/repos/builtin/packages/viewres/package.py
index c1e1ccd41e..7294e2ab0c 100644
--- a/var/spack/repos/builtin/packages/viewres/package.py
+++ b/var/spack/repos/builtin/packages/viewres/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Viewres(AutotoolsPackage):
+class Viewres(AutotoolsPackage, XorgPackage):
"""viewres displays a tree showing the widget class hierarchy of the
Athena Widget Set (libXaw)."""
homepage = "http://cgit.freedesktop.org/xorg/app/viewres"
- url = "https://www.x.org/archive/individual/app/viewres-1.0.4.tar.gz"
+ xorg_mirror_path = "app/viewres-1.0.4.tar.gz"
version('1.0.4', sha256='fd2aaec85c952fd6984fe14d0fcbda4d2ab9849a9183e4787b0ef552a10a87a1')
diff --git a/var/spack/repos/builtin/packages/vmd/package.py b/var/spack/repos/builtin/packages/vmd/package.py
new file mode 100644
index 0000000000..18dc9a9e43
--- /dev/null
+++ b/var/spack/repos/builtin/packages/vmd/package.py
@@ -0,0 +1,42 @@
+# Copyright 2013-2020 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 Vmd(Package):
+ """VMD provides user-editable materials which can be applied
+ to molecular geometry.
+
+ These material properties control the details of how VMD shades
+ the molecular geometry, and how transparent or opaque the displayed
+ molecular geometry is. With this feature, one can easily create nice
+ looking transparent surfaces which allow inner structural details to
+ be seen within a large molecular structure. The material controls can
+ be particularly helpful when rendering molecular scenes using external
+ ray tracers, each of which typically differ slightly.
+ """
+
+ homepage = "https://www.ks.uiuc.edu/Research/vmd/"
+ version('1.9.3', sha256='145b4d0cc10b56cadeb71e16c54ab8be713e268f11491714cd617422758ec643',
+ url='file://{0}/vmd-1.9.3.bin.LINUXAMD64-CUDA8-OptiX4-OSPRay111p1.opengl.tar.gz'.format(os.getcwd()))
+
+ phases = ['configure', 'install']
+
+ def setup_build_environment(self, env):
+ env.set('VMDINSTALLBINDIR', self.prefix.bin)
+ env.set('VMDINSTALLLIBRARYDIR', self.prefix.lib64)
+
+ def configure(self, spec, prefix):
+ configure = Executable('./configure')
+ configure('LINUXAMD64')
+
+ def install(self, spec, prefix):
+ with working_dir(join_path(self.stage.source_path, 'src')):
+ make('install')
+
+ def setup_run_environment(self, env):
+ env.set('PLUGINDIR', self.spec.prefix.lib64.plugins)
diff --git a/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py b/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py
index 6f8636e52a..a89e698819 100644
--- a/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py
+++ b/var/spack/repos/builtin/packages/votca-csg-tutorials/package.py
@@ -19,13 +19,14 @@ class VotcaCsgTutorials(CMakePackage):
url = "https://github.com/votca/csg-tutorials/tarball/v1.4"
git = "https://github.com/votca/csg-tutorials.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('1.6_rc2', sha256='3c82e6fe03c7d5226f37b787eee23eb629901734d19b93ef9eb519660ff5223c')
version('1.6_rc1', sha256='87c4d945d2bdcb247e985cd407b0767c441f7810f1237ae65a63617f136e2ac9')
version('1.5.1', sha256='e35cea92df0e7d05ca7b449c1b5d84d887a3a23c7796abe3b84e4d6feec7faca', preferred=True)
version('1.5', sha256='03b841fb94129cf59781a7a5e3b71936c414aa9dfa17a50d7bc856d46274580c')
version('1.4.1', sha256='623724192c3a7d76b603a74a3326f181045f10f38b9f56dce754a90f1a74556e')
version('1.4', sha256='27d50acd68a9d8557fef18ec2b0c62841ae91c22275ab9afbd65c35e4dd5f719')
- for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6_rc1", "develop"]:
+ for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6_rc1", "1.6_rc2", "master"]:
depends_on('votca-csg@%s' % v, when="@%s:%s.0" % (v, v))
depends_on("boost")
diff --git a/var/spack/repos/builtin/packages/votca-csg/package.py b/var/spack/repos/builtin/packages/votca-csg/package.py
index f4f38e7aa2..a9b5ae6183 100644
--- a/var/spack/repos/builtin/packages/votca-csg/package.py
+++ b/var/spack/repos/builtin/packages/votca-csg/package.py
@@ -19,7 +19,8 @@ class VotcaCsg(CMakePackage):
url = "https://github.com/votca/csg/tarball/v1.4"
git = "https://github.com/votca/csg.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('1.6_rc2', sha256='32d19c7f8e30baece35462b6f8ae06bf0d7be038f875be38dc49da5798209236')
version('1.6_rc1', sha256='163701a65a34f90e8a850370167a82cbebf2b5c0774b7a8ad07884451fe9e332')
version('1.5.1', sha256='7fca1261bd267bf38d2edd26259730fed3126c0c3fd91fb81940dbe17bb568fd', preferred=True)
version('1.5', sha256='160387cdc51f87dd20ff2e2eed97086beee415d48f3c92f4199f6109068c8ff4')
@@ -27,7 +28,7 @@ class VotcaCsg(CMakePackage):
version('1.4', sha256='c13e7febd792de8c3d426203f089bd4d33b8067f9db5e8840e4579c88b61146e')
depends_on("cmake@2.8:", type='build')
- for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6_rc1", "develop"]:
+ for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6_rc1", "1.6_rc2", "master"]:
depends_on('votca-tools@%s' % v, when="@%s:%s.0" % (v, v))
depends_on("boost")
depends_on("gromacs~mpi@5.1:")
diff --git a/var/spack/repos/builtin/packages/votca-csgapps/package.py b/var/spack/repos/builtin/packages/votca-csgapps/package.py
index 40ba51a96f..65093442af 100644
--- a/var/spack/repos/builtin/packages/votca-csgapps/package.py
+++ b/var/spack/repos/builtin/packages/votca-csgapps/package.py
@@ -19,13 +19,14 @@ class VotcaCsgapps(CMakePackage):
url = "https://github.com/votca/csgapps/tarball/v1.4"
git = "https://github.com/votca/csgapps.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('1.6_rc2', sha256='4d829b10ada32ca9e589f894ca3f69fc14329af4b6f5fee32d5e07d2457a615a')
version('1.6_rc1', sha256='069002f93f891e4aeb24920c1b2458bf8ee4842d273481aea5fa32247f815f02')
version('1.5.1', sha256='b4946711e88a1745688b6cce5aad872e6e2ea200fededf38d77a864883e3750e', preferred=True)
version('1.5', sha256='18b40ce6222509bc70aa9d56b8c538cd5903edf7294d6f95530668e555206d5b')
version('1.4.1', sha256='095d9ee4cd49d2fd79c10e0e84e6890b755e54dec6a5cd580a2b4241ba230a2b')
version('1.4', sha256='4ea8348c2f7de3cc488f48fbd8652e69b52515441952766c06ff67ed1aaf69a0')
- for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6_rc1", "develop"]:
+ for v in ["1.4", "1.4.1", "1.5", "1.5.1", "1.6_rc1", "1.6_rc2", "master"]:
depends_on('votca-csg@%s' % v, when="@%s:%s.0" % (v, v))
depends_on("boost")
diff --git a/var/spack/repos/builtin/packages/votca-ctp/package.py b/var/spack/repos/builtin/packages/votca-ctp/package.py
index 00dccfd4c8..15648f5d50 100644
--- a/var/spack/repos/builtin/packages/votca-ctp/package.py
+++ b/var/spack/repos/builtin/packages/votca-ctp/package.py
@@ -19,7 +19,7 @@ class VotcaCtp(CMakePackage):
url = "https://github.com/votca/ctp/tarball/v1.5"
git = "https://github.com/votca/ctp.git"
- version('develop', branch='master')
+ version('master', branch='master')
version('1.5.1', sha256='ef957c2f6b09335d0d27ecb7e1b80b55e76a100247bc0d0b3cfef7718d2a1126')
version('1.5', sha256='31eb6bcc9339e575116f0c91fe7a4ce7d4189f31f0640329c993fea911401d65')
diff --git a/var/spack/repos/builtin/packages/votca-tools/package.py b/var/spack/repos/builtin/packages/votca-tools/package.py
index fc276e0a44..a26faeba97 100644
--- a/var/spack/repos/builtin/packages/votca-tools/package.py
+++ b/var/spack/repos/builtin/packages/votca-tools/package.py
@@ -19,7 +19,8 @@ class VotcaTools(CMakePackage):
url = "https://github.com/votca/tools/tarball/v1.4"
git = "https://github.com/votca/tools.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('1.6_rc2', sha256='1998148dc5bbdb63d05c24d19b4a803d9b2c800891a813fd846e53616d49abcd')
version('1.6_rc1', sha256='59b4bb64a93786a693e0cbc743a27c0bc451b9db2b0f63e4d2866f7aba10c268')
version('1.5.1', sha256='4be4fe25a2910e24e1720cd9022d214001d38196033ade8f9d6e618b4f47d5c4', preferred=True)
version('1.5', sha256='a82a6596c24ff06e79eab17ca02f4405745ceeeb66369693a59023ad0b62cf22')
@@ -29,6 +30,9 @@ class VotcaTools(CMakePackage):
# https://github.com/votca/tools/pull/197, fix cmake module
patch("https://github.com/votca/tools/pull/197.patch", sha256="a06cce2a9cee63c8d01e4d1833f9cd2ba817b846c86fdb51ea5c9cd843135e68", when="@1.6_rc1")
+ variant('mkl', default=False, description='Build with MKL support')
+ conflicts('+mkl', when='@:1.5.9999')
+
depends_on("cmake@2.8:", type='build')
depends_on("expat")
depends_on("fftw")
@@ -36,9 +40,14 @@ class VotcaTools(CMakePackage):
depends_on("eigen@3.3:", when="@1.5:")
depends_on("boost")
depends_on("sqlite", when="@:1.5.9999")
+ depends_on('mkl', when='+mkl')
def cmake_args(self):
args = [
'-DWITH_RC_FILES=OFF'
]
+
+ if '~mkl' in self.spec:
+ args.append('-DCMAKE_DISABLE_FIND_PACKAGE_MKL=ON')
+
return args
diff --git a/var/spack/repos/builtin/packages/votca-xtp/package.py b/var/spack/repos/builtin/packages/votca-xtp/package.py
index d18611f48b..7b7b7d928b 100644
--- a/var/spack/repos/builtin/packages/votca-xtp/package.py
+++ b/var/spack/repos/builtin/packages/votca-xtp/package.py
@@ -19,14 +19,15 @@ class VotcaXtp(CMakePackage):
url = "https://github.com/votca/xtp/tarball/v1.4.1"
git = "https://github.com/votca/xtp.git"
- version('develop', branch='master')
+ version('master', branch='master')
+ version('1.6_rc2', sha256='adc155e741a05e2bbfe9d928cdc4b2ec2ded34bc06aff59eaacf56c13a680be5')
version('1.6_rc1', sha256='144e74a6c4d31e490ca2bfaf4a30df12ccdc303efa5a7d1177c9b80035365ad5')
version('1.5.1', sha256='17a7722e5a32d236e4f1f6f88b680da4ba5f52bcf65bca3687c6a1c731d10881', preferred=True)
version('1.5', sha256='b40b6d19e13f0650e84b8beebe86ce5c09071624f18d66df826f9d8584b4d3c8')
version('1.4.1', sha256='4b53d371d6cf648c9e9e9bd1f104d349cafeaf10a02866e3f1d05c574b595a21')
depends_on("cmake@2.8:", type='build')
- for v in ["1.4.1", "1.5", "1.5.1", "1.6_rc1", "develop"]:
+ for v in ["1.4.1", "1.5", "1.5.1", "1.6_rc1", "1.6_rc2", "master"]:
depends_on('votca-tools@%s' % v, when="@%s:%s.0" % (v, v))
depends_on('votca-csg@%s' % v, when="@%s:%s.0" % (v, v))
depends_on("libxc", when='@1.5:')
diff --git a/var/spack/repos/builtin/packages/warpx/package.py b/var/spack/repos/builtin/packages/warpx/package.py
index 7755beba9c..55cdf3cb13 100644
--- a/var/spack/repos/builtin/packages/warpx/package.py
+++ b/var/spack/repos/builtin/packages/warpx/package.py
@@ -22,21 +22,34 @@ class Warpx(MakefilePackage):
version('master', tag='master')
- depends_on('mpi')
-
variant('dims',
default='3',
- values=('1', '2', '3'),
+ values=('2', '3', 'rz'),
multi=False,
description='Number of spatial dimensions')
-
+ variant('backend',
+ default='openmp',
+ values=('openmp', 'cuda', 'hip'),
+ multi=True,
+ description='Programming model for compute kernels')
+ variant('mpi', default=True, description='Enable MPI support')
variant('psatd', default=False, description='Enable PSATD solver')
- variant('do_electrostatic', default=False, description='Include electrostatic solver')
variant('debug', default=False, description='Enable debugging features')
- variant('tprof', default=False, description='Enable tiny profiling features')
- variant('openmp', default=True, description='Enable OpenMP features')
+ variant('tprof', default=True, description='Enable tiny profiling features')
+ variant('openpmd', default=True, description='Enable openPMD I/O')
+ variant('ascent', default=False, description='Enable Ascent in situ vis')
+ depends_on('cuda', when='backend=cuda')
+ depends_on('mpi', when='+mpi')
depends_on('fftw@3:', when='+psatd')
+ depends_on('fftw +mpi', when='+psatd +mpi')
+ depends_on('pkgconfig', type='build', when='+openpmd')
+ depends_on('python', type='build') # AMReX' build system info
+ depends_on('openpmd-api@0.11.0:,dev', when='+openpmd')
+ depends_on('openpmd-api +mpi', when='+openpmd +mpi')
+ depends_on('ascent', when='+ascent')
+ depends_on('ascent +cuda', when='+ascent backend=cuda')
+ depends_on('ascent +mpi ^conduit~hdf5', when='+ascent +mpi')
resource(name='amrex',
git='https://github.com/AMReX-Codes/amrex.git',
@@ -47,43 +60,50 @@ class Warpx(MakefilePackage):
git='https://bitbucket.org/berkeleylab/picsar.git',
tag='master')
- @property
- def build_targets(self):
- if self.spec.satisfies('%clang'):
- return ['CXXFLAGS={0}'.format(self.compiler.cxx11_flag)]
- else:
- return []
+ conflicts('backend=cuda', when='backend=hip',
+ msg='WarpX can be compiled with either CUDA or HIP backend')
+ conflicts('backend=hip', msg='WarpX\' HIP backend is not yet implemented')
def edit(self, spec, prefix):
-
comp = 'gcc'
- vendors = {'%gcc': 'gcc', '%intel': 'intel'}
+ vendors = {'%gcc': 'gcc', '%intel': 'intel', '%clang': 'llvm'}
for key, value in vendors.items():
if self.spec.satisfies(key):
comp = value
- def torf(s):
- "Returns the string TRUE or FALSE"
- return repr(s in spec).upper()
+ # Returns the string TRUE or FALSE
+ torf = lambda s: repr(s in spec).upper()
+
+ try:
+ self.compiler.openmp_flag
+ except UnsupportedCompilerFlag:
+ use_omp = 'FALSE'
+ else:
+ use_omp = torf('backend=openmp')
makefile = FileFilter('GNUmakefile')
makefile.filter('AMREX_HOME .*', 'AMREX_HOME = amrex')
makefile.filter('PICSAR_HOME .*', 'PICSAR_HOME = picsar')
makefile.filter('COMP .*', 'COMP = {0}'.format(comp))
- makefile.filter('DIM .*',
- 'DIM = {0}'.format(int(spec.variants['dims'].value)))
+ makefile.filter('USE_MPI .*',
+ 'USE_MPI = {0}'.format(torf('+mpi')))
+ if 'dims=rz' in spec:
+ makefile.filter('USE_RZ .*', 'USE_RZ = TRUE')
+ else:
+ makefile.filter('DIM .*', 'DIM = {0}'.format(
+ int(spec.variants['dims'].value)))
makefile.filter('USE_PSATD .*',
'USE_PSATD = {0}'.format(torf('+psatd')))
- makefile.filter('DO_ELECTROSTATIC .*',
- 'DO_ELECTROSTATIC = %s' % torf('+do_electrostatic'))
- try:
- self.compiler.openmp_flag
- except UnsupportedCompilerFlag:
- use_omp = 'FALSE'
- else:
- use_omp = torf('+openmp')
makefile.filter('USE_OMP .*',
'USE_OMP = {0}'.format(use_omp))
+ makefile.filter('USE_GPU .*',
+ 'USE_GPU = {0}'.format(torf('backend=cuda')))
+ makefile.filter('USE_HIP .*',
+ 'USE_HIP = {0}'.format(torf('backend=hip')))
+ makefile.filter('USE_OPENPMD .*',
+ 'USE_OPENPMD = {0}'.format(torf('+openpmd')))
+ makefile.filter('USE_ASCENT_INSITU .*',
+ 'USE_ASCENT_INSITU = {0}'.format(torf('+ascent')))
makefile.filter('DEBUG .*',
'DEBUG = {0}'.format(torf('+debug')))
makefile.filter('TINY_PROFILE .*',
diff --git a/var/spack/repos/builtin/packages/wget/package.py b/var/spack/repos/builtin/packages/wget/package.py
index 122b138d10..c9ef5e9dd8 100644
--- a/var/spack/repos/builtin/packages/wget/package.py
+++ b/var/spack/repos/builtin/packages/wget/package.py
@@ -43,7 +43,7 @@ class Wget(AutotoolsPackage, GNUMirrorPackage):
depends_on('perl@5.12.0:', type='build')
depends_on('pkgconfig', type='build')
- depends_on('libiconv')
+ depends_on('iconv')
depends_on('valgrind', type='test')
diff --git a/var/spack/repos/builtin/packages/windowswmproto/package.py b/var/spack/repos/builtin/packages/windowswmproto/package.py
index abdf56436a..12f8e783d2 100644
--- a/var/spack/repos/builtin/packages/windowswmproto/package.py
+++ b/var/spack/repos/builtin/packages/windowswmproto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Windowswmproto(AutotoolsPackage):
+class Windowswmproto(AutotoolsPackage, XorgPackage):
"""This module provides the definition of the WindowsWM extension to the
X11 protocol, used for coordination between an X11 server and the
Microsoft Windows native window manager.
@@ -15,6 +15,6 @@ class Windowswmproto(AutotoolsPackage):
rootless XWin server."""
homepage = "http://cgit.freedesktop.org/xorg/proto/windowswmproto"
- url = "https://www.x.org/archive/individual/proto/windowswmproto-1.0.4.tar.gz"
+ xorg_mirror_path = "proto/windowswmproto-1.0.4.tar.gz"
version('1.0.4', sha256='2dccf510cf18a1b5cfd3a277c678d88303efc85478b479fec46228a861956eb7')
diff --git a/var/spack/repos/builtin/packages/x11perf/package.py b/var/spack/repos/builtin/packages/x11perf/package.py
index d0cfe0cd92..bdd58e64c9 100644
--- a/var/spack/repos/builtin/packages/x11perf/package.py
+++ b/var/spack/repos/builtin/packages/x11perf/package.py
@@ -6,11 +6,11 @@
from spack import *
-class X11perf(AutotoolsPackage):
+class X11perf(AutotoolsPackage, XorgPackage):
"""Simple X server performance benchmarker."""
homepage = "http://cgit.freedesktop.org/xorg/app/x11perf"
- url = "https://www.x.org/archive/individual/app/x11perf-1.6.0.tar.gz"
+ xorg_mirror_path = "app/x11perf-1.6.0.tar.gz"
version('1.6.0', sha256='d33051c4e93100ab60609aee14ff889bb2460f28945063d793e21eda19381abb')
diff --git a/var/spack/repos/builtin/packages/xauth/package.py b/var/spack/repos/builtin/packages/xauth/package.py
index f3e44bb079..aefbf692c7 100644
--- a/var/spack/repos/builtin/packages/xauth/package.py
+++ b/var/spack/repos/builtin/packages/xauth/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xauth(AutotoolsPackage):
+class Xauth(AutotoolsPackage, XorgPackage):
"""The xauth program is used to edit and display the authorization
information used in connecting to the X server."""
homepage = "http://cgit.freedesktop.org/xorg/app/xauth"
- url = "https://www.x.org/archive/individual/app/xauth-1.0.9.tar.gz"
+ xorg_mirror_path = "app/xauth-1.0.9.tar.gz"
version('1.0.9', sha256='0709070caf23ba2fb99536907b75be1fe31853999c62d3e87a6a8d26ba8a8cdb')
diff --git a/var/spack/repos/builtin/packages/xbacklight/package.py b/var/spack/repos/builtin/packages/xbacklight/package.py
index 3b8e127c51..5fd7d6b4e3 100644
--- a/var/spack/repos/builtin/packages/xbacklight/package.py
+++ b/var/spack/repos/builtin/packages/xbacklight/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xbacklight(AutotoolsPackage):
+class Xbacklight(AutotoolsPackage, XorgPackage):
"""Xbacklight is used to adjust the backlight brightness where supported.
It uses the RandR extension to find all outputs on the X server
supporting backlight brightness control and changes them all in the
same way."""
homepage = "http://cgit.freedesktop.org/xorg/app/xbacklight"
- url = "https://www.x.org/archive/individual/app/xbacklight-1.2.1.tar.gz"
+ xorg_mirror_path = "app/xbacklight-1.2.1.tar.gz"
version('1.2.1', sha256='82c80cd851e3eb6d7a216d92465fcf6d5e456c2d5ac12c63cd2757b39fb65b10')
diff --git a/var/spack/repos/builtin/packages/xbiff/package.py b/var/spack/repos/builtin/packages/xbiff/package.py
index a21b2b3a27..3305eebd83 100644
--- a/var/spack/repos/builtin/packages/xbiff/package.py
+++ b/var/spack/repos/builtin/packages/xbiff/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xbiff(AutotoolsPackage):
+class Xbiff(AutotoolsPackage, XorgPackage):
"""xbiff provides graphical notification of new e-mail.
It only handles mail stored in a filesystem accessible file,
not via IMAP, POP or other remote access protocols."""
homepage = "http://cgit.freedesktop.org/xorg/app/xbiff"
- url = "https://www.x.org/archive/individual/app/xbiff-1.0.3.tar.gz"
+ xorg_mirror_path = "app/xbiff-1.0.3.tar.gz"
version('1.0.3', sha256='b4b702348674985741685e3ec7fcb5640ffb7bf20e753fc2d708f70f2e4c304d')
diff --git a/var/spack/repos/builtin/packages/xbitmaps/package.py b/var/spack/repos/builtin/packages/xbitmaps/package.py
index b3bdb90bc1..0b61b98e2c 100644
--- a/var/spack/repos/builtin/packages/xbitmaps/package.py
+++ b/var/spack/repos/builtin/packages/xbitmaps/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xbitmaps(AutotoolsPackage):
+class Xbitmaps(AutotoolsPackage, XorgPackage):
"""The xbitmaps package contains bitmap images used by multiple
applications built in Xorg."""
homepage = "https://cgit.freedesktop.org/xorg/data/bitmaps/"
- url = "https://www.x.org/archive/individual/data/xbitmaps-1.1.1.tar.gz"
+ xorg_mirror_path = "data/xbitmaps-1.1.1.tar.gz"
version('1.1.1', sha256='3bc89e05be4179ce4d3dbba1ae554da4591d41f7a489d9e2735a18cfd8378188')
diff --git a/var/spack/repos/builtin/packages/xcalc/package.py b/var/spack/repos/builtin/packages/xcalc/package.py
index ba2cdf997a..85078d3860 100644
--- a/var/spack/repos/builtin/packages/xcalc/package.py
+++ b/var/spack/repos/builtin/packages/xcalc/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xcalc(AutotoolsPackage):
+class Xcalc(AutotoolsPackage, XorgPackage):
"""xcalc is a scientific calculator X11 client that can emulate a TI-30
or an HP-10C."""
homepage = "http://cgit.freedesktop.org/xorg/app/xcalc"
- url = "https://www.x.org/archive/individual/app/xcalc-1.0.6.tar.gz"
+ xorg_mirror_path = "app/xcalc-1.0.6.tar.gz"
version('1.0.6', sha256='7fd5cd9a35160925c41cbadfb1ea23599fa20fd26cd873dab20a650b24efe8d1')
diff --git a/var/spack/repos/builtin/packages/xcfun/package.py b/var/spack/repos/builtin/packages/xcfun/package.py
new file mode 100644
index 0000000000..a40234c643
--- /dev/null
+++ b/var/spack/repos/builtin/packages/xcfun/package.py
@@ -0,0 +1,37 @@
+# Copyright 2013-2020 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 Xcfun(CMakePackage):
+ """Exchange-Correlation functionals with arbitrary order derivatives."""
+
+ homepage = "https://github.com/dftlibs/xcfun"
+ url = "https://github.com/dftlibs/xcfun/archive/v2.0.0a4.tar.gz"
+
+ maintainers = ['robertodr', 'bast']
+
+ version('2.0.0a6',
+ sha256='a51086490890393439f98c5e3e4e1622908fe934bbc5063b1d4363cc4c15496d')
+
+ extends('python')
+ depends_on('cmake@3.11:', type='build')
+ depends_on('python@3:')
+ depends_on('py-pybind11')
+ depends_on('py-numpy')
+
+ def cmake_args(self):
+ spec = self.spec
+
+ args = [
+ "-DCMAKE_INSTALL_LIBDIR=lib",
+ "-DPYMOD_INSTALL_LIBDIR=/python{0}/site-packages".format(
+ spec["python"].version[:-1]),
+ "-DXCFUN_MAX_ORDER=8",
+ "-DXCFUN_PYTHON_INTERFACE=ON",
+ "-DPYTHON_EXECUTABLE={0}".format(spec['python'].command),
+ ]
+ return args
diff --git a/var/spack/repos/builtin/packages/xclipboard/package.py b/var/spack/repos/builtin/packages/xclipboard/package.py
index e35d291ec6..7caf75a319 100644
--- a/var/spack/repos/builtin/packages/xclipboard/package.py
+++ b/var/spack/repos/builtin/packages/xclipboard/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xclipboard(AutotoolsPackage):
+class Xclipboard(AutotoolsPackage, XorgPackage):
"""xclipboard is used to collect and display text selections that are
sent to the CLIPBOARD by other clients. It is typically used to save
CLIPBOARD selections for later use. It stores each CLIPBOARD
selection as a separate string, each of which can be selected."""
homepage = "http://cgit.freedesktop.org/xorg/app/xclipboard"
- url = "https://www.x.org/archive/individual/app/xclipboard-1.1.3.tar.gz"
+ xorg_mirror_path = "app/xclipboard-1.1.3.tar.gz"
version('1.1.3', sha256='a8c335cf166cbb27ff86569503db7e639f85741ad199bfb3ba45dd0cfda3da7f')
diff --git a/var/spack/repos/builtin/packages/xclock/package.py b/var/spack/repos/builtin/packages/xclock/package.py
index 3c7afeebe5..2e79e2f874 100644
--- a/var/spack/repos/builtin/packages/xclock/package.py
+++ b/var/spack/repos/builtin/packages/xclock/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xclock(AutotoolsPackage):
+class Xclock(AutotoolsPackage, XorgPackage):
"""xclock is the classic X Window System clock utility. It displays
the time in analog or digital form, continuously updated at a
frequency which may be specified by the user."""
homepage = "http://cgit.freedesktop.org/xorg/app/xclock"
- url = "https://www.x.org/archive/individual/app/xclock-1.0.7.tar.gz"
+ xorg_mirror_path = "app/xclock-1.0.7.tar.gz"
version('1.0.7', sha256='e730bd575938d5628ef47003a9d4d41b882621798227f5d0c12f4a26365ed1b5')
diff --git a/var/spack/repos/builtin/packages/xcmiscproto/package.py b/var/spack/repos/builtin/packages/xcmiscproto/package.py
index ec7f589dd0..312b144e9b 100644
--- a/var/spack/repos/builtin/packages/xcmiscproto/package.py
+++ b/var/spack/repos/builtin/packages/xcmiscproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xcmiscproto(AutotoolsPackage):
+class Xcmiscproto(AutotoolsPackage, XorgPackage):
"""XC-MISC Extension.
This extension defines a protocol that provides Xlib two ways to query
the server for available resource IDs."""
homepage = "http://cgit.freedesktop.org/xorg/proto/xcmiscproto"
- url = "https://www.x.org/archive/individual/proto/xcmiscproto-1.2.2.tar.gz"
+ xorg_mirror_path = "proto/xcmiscproto-1.2.2.tar.gz"
version('1.2.2', sha256='48013cfbe4bd5580925a854a43e2bccbb4c7a5a31128070644617b6dc7f8ef85')
diff --git a/var/spack/repos/builtin/packages/xcmsdb/package.py b/var/spack/repos/builtin/packages/xcmsdb/package.py
index f1b94450b5..98c8711766 100644
--- a/var/spack/repos/builtin/packages/xcmsdb/package.py
+++ b/var/spack/repos/builtin/packages/xcmsdb/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xcmsdb(AutotoolsPackage):
+class Xcmsdb(AutotoolsPackage, XorgPackage):
"""xcmsdb is used to load, query, or remove Device Color Characterization
data stored in properties on the root window of the screen as
specified in section 7, Device Color Characterization, of the
X11 Inter-Client Communication Conventions Manual (ICCCM)."""
homepage = "http://cgit.freedesktop.org/xorg/app/xcmsdb"
- url = "https://www.x.org/archive/individual/app/xcmsdb-1.0.5.tar.gz"
+ xorg_mirror_path = "app/xcmsdb-1.0.5.tar.gz"
version('1.0.5', sha256='8442352ee5eb3ea0d3a489c26d734e784ef6964150c2a173401d0dc6638ca236')
diff --git a/var/spack/repos/builtin/packages/xcompmgr/package.py b/var/spack/repos/builtin/packages/xcompmgr/package.py
index 769d161dd0..c2574230fa 100644
--- a/var/spack/repos/builtin/packages/xcompmgr/package.py
+++ b/var/spack/repos/builtin/packages/xcompmgr/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xcompmgr(AutotoolsPackage):
+class Xcompmgr(AutotoolsPackage, XorgPackage):
"""xcompmgr is a sample compositing manager for X servers supporting the
XFIXES, DAMAGE, RENDER, and COMPOSITE extensions. It enables basic
eye-candy effects."""
homepage = "http://cgit.freedesktop.org/xorg/app/xcompmgr"
- url = "https://www.x.org/archive/individual/app/xcompmgr-1.1.7.tar.gz"
+ xorg_mirror_path = "app/xcompmgr-1.1.7.tar.gz"
version('1.1.7', sha256='ef4b23c370f99403bbd9b6227f8aa4edc3bc83fc6d57ee71f6f442397cef505a')
diff --git a/var/spack/repos/builtin/packages/xconsole/package.py b/var/spack/repos/builtin/packages/xconsole/package.py
index 6902995981..1e20f7d5f4 100644
--- a/var/spack/repos/builtin/packages/xconsole/package.py
+++ b/var/spack/repos/builtin/packages/xconsole/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xconsole(AutotoolsPackage):
+class Xconsole(AutotoolsPackage, XorgPackage):
"""xconsole displays in a X11 window the messages which are usually sent
to /dev/console."""
homepage = "http://cgit.freedesktop.org/xorg/app/xconsole"
- url = "https://www.x.org/archive/individual/app/xconsole-1.0.6.tar.gz"
+ xorg_mirror_path = "app/xconsole-1.0.6.tar.gz"
version('1.0.6', sha256='28151453a0a687462516de133bac0287b488a2ff56da78331fee34bc1bf3e7d5')
diff --git a/var/spack/repos/builtin/packages/xcursor-themes/package.py b/var/spack/repos/builtin/packages/xcursor-themes/package.py
index f25c3934ad..f5767be36c 100644
--- a/var/spack/repos/builtin/packages/xcursor-themes/package.py
+++ b/var/spack/repos/builtin/packages/xcursor-themes/package.py
@@ -6,13 +6,13 @@
from spack import *
-class XcursorThemes(Package):
+class XcursorThemes(Package, XorgPackage):
"""This is a default set of cursor themes for use with libXcursor,
originally created for the XFree86 Project, and now shipped as part
of the X.Org software distribution."""
homepage = "http://cgit.freedesktop.org/xorg/data/cursors"
- url = "https://www.x.org/archive/individual/data/xcursor-themes-1.0.4.tar.gz"
+ xorg_mirror_path = "data/xcursor-themes-1.0.4.tar.gz"
version('1.0.4', sha256='8ed23bab13a4010fe4e95b37eefb634e31ac7cb8240b8b3b7d919c3a2db09503')
diff --git a/var/spack/repos/builtin/packages/xcursorgen/package.py b/var/spack/repos/builtin/packages/xcursorgen/package.py
index 3300e7f05d..e9c1d9a499 100644
--- a/var/spack/repos/builtin/packages/xcursorgen/package.py
+++ b/var/spack/repos/builtin/packages/xcursorgen/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xcursorgen(AutotoolsPackage):
+class Xcursorgen(AutotoolsPackage, XorgPackage):
"""xcursorgen prepares X11 cursor sets for use with libXcursor."""
homepage = "http://cgit.freedesktop.org/xorg/app/xcursorgen"
- url = "https://www.x.org/archive/individual/app/xcursorgen-1.0.6.tar.gz"
+ xorg_mirror_path = "app/xcursorgen-1.0.6.tar.gz"
version('1.0.6', sha256='4559f2b6eaa93de4cb6968679cf40e39bcbe969b62ebf3ff84f6780f8048ef8c')
diff --git a/var/spack/repos/builtin/packages/xdbedizzy/package.py b/var/spack/repos/builtin/packages/xdbedizzy/package.py
index 109c723eda..3928dbb781 100644
--- a/var/spack/repos/builtin/packages/xdbedizzy/package.py
+++ b/var/spack/repos/builtin/packages/xdbedizzy/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xdbedizzy(AutotoolsPackage):
+class Xdbedizzy(AutotoolsPackage, XorgPackage):
"""xdbedizzy is a demo of the X11 Double Buffer Extension (DBE)
creating a double buffered spinning scene."""
homepage = "http://cgit.freedesktop.org/xorg/app/xdbedizzy"
- url = "https://www.x.org/archive/individual/app/xdbedizzy-1.1.0.tar.gz"
+ xorg_mirror_path = "app/xdbedizzy-1.1.0.tar.gz"
version('1.1.0', sha256='810e88b087b76f8b5993db4fc5165de3e5d29b0d4bf0e893750ee408fc7a5c0a')
diff --git a/var/spack/repos/builtin/packages/xditview/package.py b/var/spack/repos/builtin/packages/xditview/package.py
index 0fcd01df59..2d45fe2a24 100644
--- a/var/spack/repos/builtin/packages/xditview/package.py
+++ b/var/spack/repos/builtin/packages/xditview/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xditview(AutotoolsPackage):
+class Xditview(AutotoolsPackage, XorgPackage):
"""xditview displays ditroff output on an X display."""
homepage = "http://cgit.freedesktop.org/xorg/app/xditview"
- url = "https://www.x.org/archive/individual/app/xditview-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xditview-1.0.4.tar.gz"
version('1.0.4', sha256='73ad88cfc879edcc6ede65999c11d670da27575388126795d71f3ad60286d379')
diff --git a/var/spack/repos/builtin/packages/xdm/package.py b/var/spack/repos/builtin/packages/xdm/package.py
index ce2c89917c..d68445c02d 100644
--- a/var/spack/repos/builtin/packages/xdm/package.py
+++ b/var/spack/repos/builtin/packages/xdm/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xdm(AutotoolsPackage):
+class Xdm(AutotoolsPackage, XorgPackage):
"""X Display Manager / XDMCP server."""
homepage = "http://cgit.freedesktop.org/xorg/app/xdm"
- url = "https://www.x.org/archive/individual/app/xdm-1.1.11.tar.gz"
+ xorg_mirror_path = "app/xdm-1.1.11.tar.gz"
version('1.1.11', sha256='38c544a986143b1f24566c1a0111486b339b92224b927be78714eeeedca12a14')
diff --git a/var/spack/repos/builtin/packages/xdpyinfo/package.py b/var/spack/repos/builtin/packages/xdpyinfo/package.py
index ddf8298d6b..6b16fed4e2 100644
--- a/var/spack/repos/builtin/packages/xdpyinfo/package.py
+++ b/var/spack/repos/builtin/packages/xdpyinfo/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xdpyinfo(AutotoolsPackage):
+class Xdpyinfo(AutotoolsPackage, XorgPackage):
"""xdpyinfo is a utility for displaying information about an X server.
It is used to examine the capabilities of a server, the predefined
@@ -15,7 +15,7 @@ class Xdpyinfo(AutotoolsPackage):
protocol extensions that are available."""
homepage = "http://cgit.freedesktop.org/xorg/app/xdpyinfo"
- url = "https://www.x.org/archive/individual/app/xdpyinfo-1.3.2.tar.gz"
+ xorg_mirror_path = "app/xdpyinfo-1.3.2.tar.gz"
version('1.3.2', sha256='ef39935e8e9b328e54a85d6218d410d6939482da6058db1ee1b39749d98cbcf2')
diff --git a/var/spack/repos/builtin/packages/xdriinfo/package.py b/var/spack/repos/builtin/packages/xdriinfo/package.py
index d7a6ca67ec..ce44860d61 100644
--- a/var/spack/repos/builtin/packages/xdriinfo/package.py
+++ b/var/spack/repos/builtin/packages/xdriinfo/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xdriinfo(AutotoolsPackage):
+class Xdriinfo(AutotoolsPackage, XorgPackage):
"""xdriinfo - query configuration information of X11 DRI drivers."""
homepage = "http://cgit.freedesktop.org/xorg/app/xdriinfo"
- url = "https://www.x.org/archive/individual/app/xdriinfo-1.0.5.tar.gz"
+ xorg_mirror_path = "app/xdriinfo-1.0.5.tar.gz"
version('1.0.5', sha256='e4e6abaa4591c540ab63133927a6cebf0a5f4d27dcd978878ab4a422d62a838e')
diff --git a/var/spack/repos/builtin/packages/xedit/package.py b/var/spack/repos/builtin/packages/xedit/package.py
index 83978175ed..be32863f04 100644
--- a/var/spack/repos/builtin/packages/xedit/package.py
+++ b/var/spack/repos/builtin/packages/xedit/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xedit(AutotoolsPackage):
+class Xedit(AutotoolsPackage, XorgPackage):
"""Xedit is a simple text editor for X."""
homepage = "https://cgit.freedesktop.org/xorg/app/xedit"
- url = "https://www.x.org/archive/individual/app/xedit-1.2.2.tar.gz"
+ xorg_mirror_path = "app/xedit-1.2.2.tar.gz"
version('1.2.2', sha256='7e2dacbc2caed81d462ee028e108866893217d55e35e4b860b09be2b409ee18f')
diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py
index 05af3d1a5c..21caf00e83 100644
--- a/var/spack/repos/builtin/packages/xerces-c/package.py
+++ b/var/spack/repos/builtin/packages/xerces-c/package.py
@@ -45,7 +45,7 @@ class XercesC(AutotoolsPackage):
multi=False,
description='Use the specified transcoder')
- depends_on('libiconv', type='link', when='transcoder=gnuiconv')
+ depends_on('iconv', type='link', when='transcoder=gnuiconv')
depends_on('icu4c', type='link', when='transcoder=icu')
# Pass flags to configure. This is necessary for CXXFLAGS or else
@@ -61,7 +61,7 @@ class XercesC(AutotoolsPackage):
# There is no --with-pkg for gnuiconv.
if name == 'ldflags' and 'transcoder=gnuiconv' in spec:
- flags.append(spec['libiconv'].libs.ld_flags)
+ flags.append(spec['iconv'].libs.ld_flags)
return (None, None, flags)
diff --git a/var/spack/repos/builtin/packages/xev/package.py b/var/spack/repos/builtin/packages/xev/package.py
index 58049e456e..462efcf883 100644
--- a/var/spack/repos/builtin/packages/xev/package.py
+++ b/var/spack/repos/builtin/packages/xev/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xev(AutotoolsPackage):
+class Xev(AutotoolsPackage, XorgPackage):
"""xev creates a window and then asks the X server to send it X11 events
whenever anything happens to the window (such as it being moved,
resized, typed in, clicked in, etc.). You can also attach it to an
@@ -16,7 +16,7 @@ class Xev(AutotoolsPackage):
usage."""
homepage = "http://cgit.freedesktop.org/xorg/app/xev"
- url = "https://www.x.org/archive/individual/app/xev-1.2.2.tar.gz"
+ xorg_mirror_path = "app/xev-1.2.2.tar.gz"
version('1.2.2', sha256='e4c0c7b6f411e8b9731f2bb10d729d167bd00480d172c28b62607a6ea9e45c57')
diff --git a/var/spack/repos/builtin/packages/xextproto/package.py b/var/spack/repos/builtin/packages/xextproto/package.py
index 7837574479..e0a187d2d2 100644
--- a/var/spack/repos/builtin/packages/xextproto/package.py
+++ b/var/spack/repos/builtin/packages/xextproto/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xextproto(AutotoolsPackage):
+class Xextproto(AutotoolsPackage, XorgPackage):
"""X Protocol Extensions."""
homepage = "http://cgit.freedesktop.org/xorg/proto/xextproto"
- url = "https://www.x.org/archive/individual/proto/xextproto-7.3.0.tar.gz"
+ xorg_mirror_path = "proto/xextproto-7.3.0.tar.gz"
version('7.3.0', sha256='1b1bcdf91221e78c6c33738667a57bd9aaa63d5953174ad8ed9929296741c9f5')
diff --git a/var/spack/repos/builtin/packages/xeyes/package.py b/var/spack/repos/builtin/packages/xeyes/package.py
index e9f3c364db..0d7e94fb28 100644
--- a/var/spack/repos/builtin/packages/xeyes/package.py
+++ b/var/spack/repos/builtin/packages/xeyes/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xeyes(AutotoolsPackage):
+class Xeyes(AutotoolsPackage, XorgPackage):
"""xeyes - a follow the mouse X demo, using the X SHAPE extension"""
homepage = "http://cgit.freedesktop.org/xorg/app/xeyes"
- url = "https://www.x.org/archive/individual/app/xeyes-1.1.1.tar.gz"
+ xorg_mirror_path = "app/xeyes-1.1.1.tar.gz"
version('1.1.1', sha256='3a1871a560ab87c72a2e2ecb7fd582474448faec3e254c9bd8bead428ab1bca3')
diff --git a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py
index 93e4bfd780..c1dff58458 100644
--- a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py
@@ -6,10 +6,10 @@
from spack import *
-class Xf86bigfontproto(AutotoolsPackage):
+class Xf86bigfontproto(AutotoolsPackage, XorgPackage):
"""X.org XF86BigFontProto protocol headers."""
homepage = "https://cgit.freedesktop.org/xorg/proto/xf86bigfontproto"
- url = "https://www.x.org/archive/individual/proto/xf86bigfontproto-1.2.0.tar.gz"
+ xorg_mirror_path = "proto/xf86bigfontproto-1.2.0.tar.gz"
version('1.2.0', sha256='d190e6462b2bbbac6ee9a007fb8eccb9ad9f5f70544154f388266f031d4bbb23')
diff --git a/var/spack/repos/builtin/packages/xf86dga/package.py b/var/spack/repos/builtin/packages/xf86dga/package.py
index 9b7921040e..1d2ba4f5c0 100644
--- a/var/spack/repos/builtin/packages/xf86dga/package.py
+++ b/var/spack/repos/builtin/packages/xf86dga/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xf86dga(AutotoolsPackage):
+class Xf86dga(AutotoolsPackage, XorgPackage):
"""dga is a simple test client for the XFree86-DGA extension."""
homepage = "http://cgit.freedesktop.org/xorg/app/xf86dga"
- url = "https://www.x.org/archive/individual/app/xf86dga-1.0.3.tar.gz"
+ xorg_mirror_path = "app/xf86dga-1.0.3.tar.gz"
version('1.0.3', sha256='acbf89f60a99b18c161d2beb0e4145a0fdf6c516f7f45fa52e547d88491f75c9')
diff --git a/var/spack/repos/builtin/packages/xf86dgaproto/package.py b/var/spack/repos/builtin/packages/xf86dgaproto/package.py
index d51f501f1d..18c1b7d205 100644
--- a/var/spack/repos/builtin/packages/xf86dgaproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86dgaproto/package.py
@@ -6,10 +6,10 @@
from spack import *
-class Xf86dgaproto(AutotoolsPackage):
+class Xf86dgaproto(AutotoolsPackage, XorgPackage):
"""X.org XF86DGAProto protocol headers."""
homepage = "https://cgit.freedesktop.org/xorg/proto/xf86dgaproto"
- url = "https://www.x.org/archive/individual/proto/xf86dgaproto-2.1.tar.gz"
+ xorg_mirror_path = "proto/xf86dgaproto-2.1.tar.gz"
version('2.1', sha256='73bc6fc830cce5a0ec9c750d4702601fc0fca12d6353ede8b4c0092c9c4ca2af')
diff --git a/var/spack/repos/builtin/packages/xf86driproto/package.py b/var/spack/repos/builtin/packages/xf86driproto/package.py
index 5b6a401353..45124af03a 100644
--- a/var/spack/repos/builtin/packages/xf86driproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86driproto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xf86driproto(AutotoolsPackage):
+class Xf86driproto(AutotoolsPackage, XorgPackage):
"""XFree86 Direct Rendering Infrastructure Extension.
This extension defines a protocol to allow user applications to access
@@ -14,7 +14,7 @@ class Xf86driproto(AutotoolsPackage):
server."""
homepage = "http://cgit.freedesktop.org/xorg/proto/xf86driproto"
- url = "https://www.x.org/archive/individual/proto/xf86driproto-2.1.1.tar.gz"
+ xorg_mirror_path = "proto/xf86driproto-2.1.1.tar.gz"
version('2.1.1', sha256='18ff8de129b89fa24a412a1ec1799f8687f96c186c655b44b1a714a3a5d15d6c')
diff --git a/var/spack/repos/builtin/packages/xf86miscproto/package.py b/var/spack/repos/builtin/packages/xf86miscproto/package.py
index 6257aeb452..da62b39064 100644
--- a/var/spack/repos/builtin/packages/xf86miscproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86miscproto/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xf86miscproto(AutotoolsPackage):
+class Xf86miscproto(AutotoolsPackage, XorgPackage):
"""This package includes the protocol definitions of the "XFree86-Misc"
extension to the X11 protocol. The "XFree86-Misc" extension is
supported by the XFree86 X server and versions of the Xorg X server
prior to Xorg 1.6."""
homepage = "http://cgit.freedesktop.org/xorg/proto/xf86miscproto"
- url = "https://www.x.org/archive/individual/proto/xf86miscproto-0.9.3.tar.gz"
+ xorg_mirror_path = "proto/xf86miscproto-0.9.3.tar.gz"
version('0.9.3', sha256='1b05cb76ac165c703b82bdd270b86ebbc4d42a7d04d299050b07ba2099c31352')
diff --git a/var/spack/repos/builtin/packages/xf86rushproto/package.py b/var/spack/repos/builtin/packages/xf86rushproto/package.py
index 8e49fb82fc..5ace6998b1 100644
--- a/var/spack/repos/builtin/packages/xf86rushproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86rushproto/package.py
@@ -6,10 +6,10 @@
from spack import *
-class Xf86rushproto(AutotoolsPackage):
+class Xf86rushproto(AutotoolsPackage, XorgPackage):
"""X.org XF86RushProto protocol headers."""
homepage = "https://cgit.freedesktop.org/xorg/proto/xf86rushproto"
- url = "https://www.x.org/archive/individual/proto/xf86rushproto-1.1.2.tar.gz"
+ xorg_mirror_path = "proto/xf86rushproto-1.1.2.tar.gz"
version('1.1.2', sha256='7d420ae7e5f0dd94c6010c764c66acc93eed7df7f81bcf93d2a57739970ec841')
diff --git a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py
index a242e58e2b..74c0fc06bd 100644
--- a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xf86vidmodeproto(AutotoolsPackage):
+class Xf86vidmodeproto(AutotoolsPackage, XorgPackage):
"""XFree86 Video Mode Extension.
This extension defines a protocol for dynamically configuring modelines
and gamma."""
homepage = "http://cgit.freedesktop.org/xorg/proto/xf86vidmodeproto"
- url = "https://www.x.org/archive/individual/proto/xf86vidmodeproto-2.3.1.tar.gz"
+ xorg_mirror_path = "proto/xf86vidmodeproto-2.3.1.tar.gz"
version('2.3.1', sha256='c3512b11cefa7558576551f8582c6e7071c8a24d78176059d94b84b48b262979')
diff --git a/var/spack/repos/builtin/packages/xfd/package.py b/var/spack/repos/builtin/packages/xfd/package.py
index a6483c1d1c..3760f44ae9 100644
--- a/var/spack/repos/builtin/packages/xfd/package.py
+++ b/var/spack/repos/builtin/packages/xfd/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xfd(AutotoolsPackage):
+class Xfd(AutotoolsPackage, XorgPackage):
"""xfd - display all the characters in a font using either the
X11 core protocol or libXft2."""
homepage = "http://cgit.freedesktop.org/xorg/app/xfd"
- url = "https://www.x.org/archive/individual/app/xfd-1.1.2.tar.gz"
+ xorg_mirror_path = "app/xfd-1.1.2.tar.gz"
version('1.1.3', sha256='4a1bd18f324c239b1a807ed4ccaeb172ba771d65a7307fb492d8dd8d27f01527')
version('1.1.2', sha256='4eff3e15b2526ceb48d0236d7ca126face399289eabc0ef67e6ed3b3fdcb60ad')
diff --git a/var/spack/repos/builtin/packages/xfindproxy/package.py b/var/spack/repos/builtin/packages/xfindproxy/package.py
index 9af7f57462..68b4847a39 100644
--- a/var/spack/repos/builtin/packages/xfindproxy/package.py
+++ b/var/spack/repos/builtin/packages/xfindproxy/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xfindproxy(AutotoolsPackage):
+class Xfindproxy(AutotoolsPackage, XorgPackage):
"""xfindproxy is used to locate available X11 proxy services.
It utilizes the Proxy Management Protocol to communicate with a proxy
@@ -15,7 +15,7 @@ class Xfindproxy(AutotoolsPackage):
proxies are shared whenever possible."""
homepage = "http://cgit.freedesktop.org/xorg/app/xfindproxy"
- url = "https://www.x.org/archive/individual/app/xfindproxy-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xfindproxy-1.0.4.tar.gz"
version('1.0.4', sha256='fa6152fcf9c16fbb2ef52259731df5df899a39a86894b0508456613f26ff924a')
diff --git a/var/spack/repos/builtin/packages/xfontsel/package.py b/var/spack/repos/builtin/packages/xfontsel/package.py
index 77d363f866..758631f82b 100644
--- a/var/spack/repos/builtin/packages/xfontsel/package.py
+++ b/var/spack/repos/builtin/packages/xfontsel/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xfontsel(AutotoolsPackage):
+class Xfontsel(AutotoolsPackage, XorgPackage):
"""xfontsel application provides a simple way to display the X11 core
protocol fonts known to your X server, examine samples of each, and
retrieve the X Logical Font Description ("XLFD") full name for a font."""
homepage = "http://cgit.freedesktop.org/xorg/app/xfontsel"
- url = "https://www.x.org/archive/individual/app/xfontsel-1.0.5.tar.gz"
+ xorg_mirror_path = "app/xfontsel-1.0.5.tar.gz"
version('1.0.5', sha256='9b3ad0cc274398d22be9fa7efe930f4e3749fd4b1b61d9c31a7fb6c1f1ff766e')
diff --git a/var/spack/repos/builtin/packages/xfs/package.py b/var/spack/repos/builtin/packages/xfs/package.py
index b51c94b6c5..ead61d320b 100644
--- a/var/spack/repos/builtin/packages/xfs/package.py
+++ b/var/spack/repos/builtin/packages/xfs/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xfs(AutotoolsPackage):
+class Xfs(AutotoolsPackage, XorgPackage):
"""X Font Server."""
homepage = "http://cgit.freedesktop.org/xorg/app/xfs"
- url = "https://www.x.org/archive/individual/app/xfs-1.1.4.tar.gz"
+ xorg_mirror_path = "app/xfs-1.1.4.tar.gz"
version('1.1.4', sha256='28f89b854d1ff14fa1efa5b408e5e1c4f6a145420310073c4e44705feeb6d23b')
diff --git a/var/spack/repos/builtin/packages/xfsinfo/package.py b/var/spack/repos/builtin/packages/xfsinfo/package.py
index 28c94fb167..72235c2c98 100644
--- a/var/spack/repos/builtin/packages/xfsinfo/package.py
+++ b/var/spack/repos/builtin/packages/xfsinfo/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xfsinfo(AutotoolsPackage):
+class Xfsinfo(AutotoolsPackage, XorgPackage):
"""xfsinfo is a utility for displaying information about an X font
server. It is used to examine the capabilities of a server, the
predefined values for various parameters used in communicating between
@@ -14,7 +14,7 @@ class Xfsinfo(AutotoolsPackage):
that are available."""
homepage = "http://cgit.freedesktop.org/xorg/app/xfsinfo"
- url = "https://www.x.org/archive/individual/app/xfsinfo-1.0.5.tar.gz"
+ xorg_mirror_path = "app/xfsinfo-1.0.5.tar.gz"
version('1.0.5', sha256='56a0492ed2cde272dc8f4cff4ba0970ccb900e51c10bb8ec62747483d095fd69')
diff --git a/var/spack/repos/builtin/packages/xfwp/package.py b/var/spack/repos/builtin/packages/xfwp/package.py
index 1cc94e4567..7f57aa91c4 100644
--- a/var/spack/repos/builtin/packages/xfwp/package.py
+++ b/var/spack/repos/builtin/packages/xfwp/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xfwp(AutotoolsPackage):
+class Xfwp(AutotoolsPackage, XorgPackage):
"""xfwp proxies X11 protocol connections, such as through a firewall."""
homepage = "http://cgit.freedesktop.org/xorg/app/xfwp"
- url = "https://www.x.org/archive/individual/app/xfwp-1.0.3.tar.gz"
+ xorg_mirror_path = "app/xfwp-1.0.3.tar.gz"
version('1.0.3', sha256='6fe243bde0374637e271a3f038b5d6d79a04621fc18162727782392069c5c04d')
diff --git a/var/spack/repos/builtin/packages/xgamma/package.py b/var/spack/repos/builtin/packages/xgamma/package.py
index 2f33d45602..c5971fccfd 100644
--- a/var/spack/repos/builtin/packages/xgamma/package.py
+++ b/var/spack/repos/builtin/packages/xgamma/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xgamma(AutotoolsPackage):
+class Xgamma(AutotoolsPackage, XorgPackage):
"""xgamma allows X users to query and alter the gamma correction of a
monitor via the X video mode extension (XFree86-VidModeExtension)."""
homepage = "http://cgit.freedesktop.org/xorg/app/xgamma"
- url = "https://www.x.org/archive/individual/app/xgamma-1.0.6.tar.gz"
+ xorg_mirror_path = "app/xgamma-1.0.6.tar.gz"
version('1.0.6', sha256='66da1d67e84146518b69481c6283c5d8f1027ace9ff7e214d3f81954842e796a')
diff --git a/var/spack/repos/builtin/packages/xgboost/package.py b/var/spack/repos/builtin/packages/xgboost/package.py
index f65ea1621b..15cdbb763e 100644
--- a/var/spack/repos/builtin/packages/xgboost/package.py
+++ b/var/spack/repos/builtin/packages/xgboost/package.py
@@ -13,7 +13,9 @@ class Xgboost(CMakePackage, CudaPackage):
homepage = "https://xgboost.ai/"
url = "https://github.com/dmlc/xgboost/releases/download/v0.81/xgboost-0.81.tar.bz2"
+ git = "https://github.com/dmlc/xgboost.git"
+ version('0.90', tag='v0.90', submodules=True)
version('0.81', sha256='9d8ff161699111d45c96bd15229aa6d80eb1cab7cbbef7e8eaa60ccfb5a4f806')
def cmake_args(self):
diff --git a/var/spack/repos/builtin/packages/xgc/package.py b/var/spack/repos/builtin/packages/xgc/package.py
index 4e5e67bc6a..9516216a38 100644
--- a/var/spack/repos/builtin/packages/xgc/package.py
+++ b/var/spack/repos/builtin/packages/xgc/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xgc(AutotoolsPackage):
+class Xgc(AutotoolsPackage, XorgPackage):
"""xgc is an X11 graphics demo that shows various features of the X11
core protocol graphics primitives."""
homepage = "http://cgit.freedesktop.org/xorg/app/xgc"
- url = "https://www.x.org/archive/individual/app/xgc-1.0.5.tar.gz"
+ xorg_mirror_path = "app/xgc-1.0.5.tar.gz"
version('1.0.5', sha256='16645fb437699bad2360f36f54f42320e33fce5a0ab9a086f6e0965963205b02')
diff --git a/var/spack/repos/builtin/packages/xhost/package.py b/var/spack/repos/builtin/packages/xhost/package.py
index 0a001203c2..20fd613407 100644
--- a/var/spack/repos/builtin/packages/xhost/package.py
+++ b/var/spack/repos/builtin/packages/xhost/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xhost(AutotoolsPackage):
+class Xhost(AutotoolsPackage, XorgPackage):
"""xhost is used to manage the list of host names or user names
allowed to make connections to the X server."""
homepage = "http://cgit.freedesktop.org/xorg/app/xhost"
- url = "https://www.x.org/archive/individual/app/xhost-1.0.7.tar.gz"
+ xorg_mirror_path = "app/xhost-1.0.7.tar.gz"
version('1.0.7', sha256='8dd1b6245dfbdef45a64a18ea618f233f77432c2f30881b1db9dc40d510d9490')
diff --git a/var/spack/repos/builtin/packages/xineramaproto/package.py b/var/spack/repos/builtin/packages/xineramaproto/package.py
index 7ba45673a9..85e73cadbc 100644
--- a/var/spack/repos/builtin/packages/xineramaproto/package.py
+++ b/var/spack/repos/builtin/packages/xineramaproto/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xineramaproto(AutotoolsPackage):
+class Xineramaproto(AutotoolsPackage, XorgPackage):
"""X Xinerama Extension.
This is an X extension that allows multiple physical screens controlled
by a single X server to appear as a single screen."""
homepage = "http://cgit.freedesktop.org/xorg/proto/xineramaproto"
- url = "https://www.x.org/archive/individual/proto/xineramaproto-1.2.1.tar.gz"
+ xorg_mirror_path = "proto/xineramaproto-1.2.1.tar.gz"
version('1.2.1', sha256='d99e121edf7b310008d7371ac5dbe3aa2810996d476b754dc78477cc26e5e7c1')
diff --git a/var/spack/repos/builtin/packages/xinit/package.py b/var/spack/repos/builtin/packages/xinit/package.py
index 10b7ff7cb1..92536ee22a 100644
--- a/var/spack/repos/builtin/packages/xinit/package.py
+++ b/var/spack/repos/builtin/packages/xinit/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xinit(AutotoolsPackage):
+class Xinit(AutotoolsPackage, XorgPackage):
"""The xinit program is used to start the X Window System server and a
first client program on systems that are not using a display manager
such as xdm."""
homepage = "http://cgit.freedesktop.org/xorg/app/xinit"
- url = "https://www.x.org/archive/individual/app/xinit-1.3.4.tar.gz"
+ xorg_mirror_path = "app/xinit-1.3.4.tar.gz"
version('1.3.4', sha256='754c284875defa588951c1d3d2b20897d3b84918d0a97cb5a4724b00c0da0746')
diff --git a/var/spack/repos/builtin/packages/xinput/package.py b/var/spack/repos/builtin/packages/xinput/package.py
index e8c9151716..09c1263377 100644
--- a/var/spack/repos/builtin/packages/xinput/package.py
+++ b/var/spack/repos/builtin/packages/xinput/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xinput(AutotoolsPackage):
+class Xinput(AutotoolsPackage, XorgPackage):
"""xinput is a utility to configure and test XInput devices."""
homepage = "http://cgit.freedesktop.org/xorg/app/xinput"
- url = "https://www.x.org/archive/individual/app/xinput-1.6.2.tar.gz"
+ xorg_mirror_path = "app/xinput-1.6.2.tar.gz"
version('1.6.2', sha256='2c8ca5ff2a8703cb7d898629a4311db720dbd30d0c162bfe37f18849a727bd42')
diff --git a/var/spack/repos/builtin/packages/xios/bld_extern_1.x.patch b/var/spack/repos/builtin/packages/xios/bld_extern_1.x.patch
deleted file mode 100644
index fe52da1192..0000000000
--- a/var/spack/repos/builtin/packages/xios/bld_extern_1.x.patch
+++ /dev/null
@@ -1,27 +0,0 @@
---- a/bld.cfg 2017-12-23 15:21:01.458603785 +1100
-+++ b/bld.cfg 2017-12-23 15:36:36.667684136 +1100
-@@ -24,9 +24,6 @@
-
- search_src true
- src::zzz .
--src::date $PWD/extern/boost/src/date_time
--src::blitz $PWD/extern/blitz/src
--src::netcdf $PWD/extern/netcdf4
- src::remap $PWD/extern/remap/src
- bld::lib xios
- bld::target libxios.a
-@@ -46,11 +43,11 @@
- bld::tool::fc %FCOMPILER
- bld::tool::fpp %FPP
- bld::tool::cpp %CPP
--bld::tool::cppflags %CBASE_INC -I${PWD}/extern/src_netcdf -I${PWD}/extern/boost/include -I${PWD}/extern/rapidxml/include -I${PWD}/extern/blitz/include
--bld::tool::fppflags %BASE_INC -I${PWD}/extern/boost/include -I${PWD}/extern/rapidxml/include
-+bld::tool::cppflags %CBASE_INC -I${PWD}/extern/rapidxml/include
-+bld::tool::fppflags %BASE_INC -I${PWD}/extern/rapidxml/include
- bld::tool::ld %LINKER
- bld::tool::ldflags %LD_FLAGS
--bld::tool::cflags %CFLAGS %CBASE_INC -I${PWD}/extern/src_netcdf -I${PWD}/extern/boost/include -I${PWD}/extern/rapidxml/include -I${PWD}/extern/blitz/include
-+bld::tool::cflags %CFLAGS %CBASE_INC -I${PWD}/extern/rapidxml/include
- bld::tool::fflags %FFLAGS %FBASE_INC
- bld::tool::cppkeys %CPP_KEY
- bld::tool::fppkeys %CPP_KEY
diff --git a/var/spack/repos/builtin/packages/xios/package.py b/var/spack/repos/builtin/packages/xios/package.py
index 55769026cf..54eca9fead 100644
--- a/var/spack/repos/builtin/packages/xios/package.py
+++ b/var/spack/repos/builtin/packages/xios/package.py
@@ -13,9 +13,13 @@ class Xios(Package):
homepage = "https://forge.ipsl.jussieu.fr/ioserver/wiki"
+ version('develop', svn='http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk')
+ version('2.5', revision=1860,
+ svn='http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-2.5')
+ version('2.0', revision=1627,
+ svn='http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-2.0')
version('1.0', revision=910,
svn='http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-1.0')
- version('develop', svn='http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk')
variant('mode', values=('debug', 'dev', 'prod'), default='dev',
description='Build for debugging, development or production')
@@ -24,7 +28,6 @@ class Xios(Package):
# 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:')
# Workaround bug #17782 in llvm, where reading a double
# followed by a character is broken (e.g. duration '1d'):
diff --git a/var/spack/repos/builtin/packages/xkbcomp/package.py b/var/spack/repos/builtin/packages/xkbcomp/package.py
index 6cc49d96f9..ef994a8cac 100644
--- a/var/spack/repos/builtin/packages/xkbcomp/package.py
+++ b/var/spack/repos/builtin/packages/xkbcomp/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xkbcomp(AutotoolsPackage):
+class Xkbcomp(AutotoolsPackage, XorgPackage):
"""The X Keyboard (XKB) Extension essentially replaces the core protocol
definition of a keyboard. The extension makes it possible to specify
clearly and explicitly most aspects of keyboard behaviour on a per-key
@@ -15,7 +15,7 @@ class Xkbcomp(AutotoolsPackage):
make keyboards more accessible to people with physical impairments."""
homepage = "https://www.x.org/wiki/XKB/"
- url = "https://www.x.org/archive/individual/app/xkbcomp-1.3.1.tar.gz"
+ xorg_mirror_path = "app/xkbcomp-1.3.1.tar.gz"
version('1.3.1', sha256='018e83a922430652d4bc3f3db610d2296e618c76c9b3fbcdccde975aeb655749')
diff --git a/var/spack/repos/builtin/packages/xkbdata/package.py b/var/spack/repos/builtin/packages/xkbdata/package.py
index 54925e455a..980e65a6b5 100644
--- a/var/spack/repos/builtin/packages/xkbdata/package.py
+++ b/var/spack/repos/builtin/packages/xkbdata/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xkbdata(AutotoolsPackage):
+class Xkbdata(AutotoolsPackage, XorgPackage):
"""The XKB data files for the various keyboard models, layouts,
and locales."""
homepage = "https://www.x.org/wiki/XKB/"
- url = "https://www.x.org/archive/individual/data/xkbdata-1.0.1.tar.gz"
+ xorg_mirror_path = "data/xkbdata-1.0.1.tar.gz"
version('1.0.1', sha256='5b43ca5219cd4022a158a8d4bfa30308ea5e16c9b5270a64589ebfe7f875f430')
diff --git a/var/spack/repos/builtin/packages/xkbevd/package.py b/var/spack/repos/builtin/packages/xkbevd/package.py
index 87a9ba0de4..16cc0a7f60 100644
--- a/var/spack/repos/builtin/packages/xkbevd/package.py
+++ b/var/spack/repos/builtin/packages/xkbevd/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xkbevd(AutotoolsPackage):
+class Xkbevd(AutotoolsPackage, XorgPackage):
"""XKB event daemon demo."""
homepage = "http://cgit.freedesktop.org/xorg/app/xkbevd"
- url = "https://www.x.org/archive/individual/app/xkbevd-1.1.4.tar.gz"
+ xorg_mirror_path = "app/xkbevd-1.1.4.tar.gz"
version('1.1.4', sha256='97dc2c19617da115c3d1183807338fa78c3fd074d8355d10a484f7b1c5b18459')
diff --git a/var/spack/repos/builtin/packages/xkbprint/package.py b/var/spack/repos/builtin/packages/xkbprint/package.py
index c86b966b77..207f56cea4 100644
--- a/var/spack/repos/builtin/packages/xkbprint/package.py
+++ b/var/spack/repos/builtin/packages/xkbprint/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xkbprint(AutotoolsPackage):
+class Xkbprint(AutotoolsPackage, XorgPackage):
"""xkbprint generates a printable or encapsulated PostScript description
of an XKB keyboard description."""
homepage = "http://cgit.freedesktop.org/xorg/app/xkbprint"
- url = "https://www.x.org/archive/individual/app/xkbprint-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xkbprint-1.0.4.tar.gz"
version('1.0.4', sha256='169ebbf57fc8b7685c577c73a435998a38c27e0d135ce0a55fccc64cbebec768')
diff --git a/var/spack/repos/builtin/packages/xkbutils/package.py b/var/spack/repos/builtin/packages/xkbutils/package.py
index 1006d875f5..dad36cbdc1 100644
--- a/var/spack/repos/builtin/packages/xkbutils/package.py
+++ b/var/spack/repos/builtin/packages/xkbutils/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xkbutils(AutotoolsPackage):
+class Xkbutils(AutotoolsPackage, XorgPackage):
"""xkbutils is a collection of small utilities utilizing the XKeyboard
(XKB) extension to the X11 protocol."""
homepage = "http://cgit.freedesktop.org/xorg/app/xkbutils"
- url = "https://www.x.org/archive/individual/app/xkbutils-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xkbutils-1.0.4.tar.gz"
version('1.0.4', sha256='cf31303cbdd6a86c34cab46f4b6e0c7acd2e84578593b334a146142894529bca')
diff --git a/var/spack/repos/builtin/packages/xkeyboard-config/package.py b/var/spack/repos/builtin/packages/xkeyboard-config/package.py
index 8621af0c46..4db99a63b4 100644
--- a/var/spack/repos/builtin/packages/xkeyboard-config/package.py
+++ b/var/spack/repos/builtin/packages/xkeyboard-config/package.py
@@ -6,13 +6,13 @@
from spack import *
-class XkeyboardConfig(AutotoolsPackage):
+class XkeyboardConfig(AutotoolsPackage, XorgPackage):
"""This project provides a consistent, well-structured, frequently
released, open source database of keyboard configuration data. The
project is targeted to XKB-based systems."""
homepage = "https://www.freedesktop.org/wiki/Software/XKeyboardConfig/"
- url = "https://www.x.org/archive/individual/data/xkeyboard-config/xkeyboard-config-2.18.tar.gz"
+ xorg_mirror_path = "data/xkeyboard-config/xkeyboard-config-2.18.tar.gz"
version('2.18', sha256='d5c511319a3bd89dc40622a33b51ba41a2c2caad33ee2bfe502363fcc4c3817d')
diff --git a/var/spack/repos/builtin/packages/xkill/package.py b/var/spack/repos/builtin/packages/xkill/package.py
index 9a9895c13d..4a80023038 100644
--- a/var/spack/repos/builtin/packages/xkill/package.py
+++ b/var/spack/repos/builtin/packages/xkill/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xkill(AutotoolsPackage):
+class Xkill(AutotoolsPackage, XorgPackage):
"""xkill is a utility for forcing the X server to close connections to
clients. This program is very dangerous, but is useful for aborting
programs that have displayed undesired windows on a user's screen."""
homepage = "http://cgit.freedesktop.org/xorg/app/xkill"
- url = "https://www.x.org/archive/individual/app/xkill-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xkill-1.0.4.tar.gz"
version('1.0.4', sha256='f80115f2dcca3d4b61f3c28188752c21ca7b2718b54b6e0274c0497a7f827da0')
diff --git a/var/spack/repos/builtin/packages/xload/package.py b/var/spack/repos/builtin/packages/xload/package.py
index 77554202e6..a898bb2dd7 100644
--- a/var/spack/repos/builtin/packages/xload/package.py
+++ b/var/spack/repos/builtin/packages/xload/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xload(AutotoolsPackage):
+class Xload(AutotoolsPackage, XorgPackage):
"""xload displays a periodically updating histogram of the
system load average."""
homepage = "http://cgit.freedesktop.org/xorg/app/xload"
- url = "https://www.x.org/archive/individual/app/xload-1.1.2.tar.gz"
+ xorg_mirror_path = "app/xload-1.1.2.tar.gz"
version('1.1.2', sha256='4863ad339d22c41a0ca030dc5886404f5ae8b8c47cd5e09f0e36407edbdbe769')
diff --git a/var/spack/repos/builtin/packages/xlogo/package.py b/var/spack/repos/builtin/packages/xlogo/package.py
index d367ab76b0..1f0b7528e4 100644
--- a/var/spack/repos/builtin/packages/xlogo/package.py
+++ b/var/spack/repos/builtin/packages/xlogo/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xlogo(AutotoolsPackage):
+class Xlogo(AutotoolsPackage, XorgPackage):
"""The xlogo program simply displays the X Window System logo."""
homepage = "http://cgit.freedesktop.org/xorg/app/xlogo"
- url = "https://www.x.org/archive/individual/app/xlogo-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xlogo-1.0.4.tar.gz"
version('1.0.4', sha256='0072eb3b41af77d5edfafb12998c7dd875f2795dc94735a998fd2ed8fc246e57')
diff --git a/var/spack/repos/builtin/packages/xlsatoms/package.py b/var/spack/repos/builtin/packages/xlsatoms/package.py
index d7e94097e3..08439aae3d 100644
--- a/var/spack/repos/builtin/packages/xlsatoms/package.py
+++ b/var/spack/repos/builtin/packages/xlsatoms/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xlsatoms(AutotoolsPackage):
+class Xlsatoms(AutotoolsPackage, XorgPackage):
"""xlsatoms lists the interned atoms defined on an X11 server."""
homepage = "http://cgit.freedesktop.org/xorg/app/xlsatoms"
- url = "https://www.x.org/archive/individual/app/xlsatoms-1.1.2.tar.gz"
+ xorg_mirror_path = "app/xlsatoms-1.1.2.tar.gz"
version('1.1.2', sha256='5400e22211795e40c4c4d28a048250f92bfb8c373004f0e654a2ad3138c2b36d')
diff --git a/var/spack/repos/builtin/packages/xlsclients/package.py b/var/spack/repos/builtin/packages/xlsclients/package.py
index cd00374204..930c628275 100644
--- a/var/spack/repos/builtin/packages/xlsclients/package.py
+++ b/var/spack/repos/builtin/packages/xlsclients/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xlsclients(AutotoolsPackage):
+class Xlsclients(AutotoolsPackage, XorgPackage):
"""xlsclients is a utility for listing information about the client
applications running on a X11 server."""
homepage = "http://cgit.freedesktop.org/xorg/app/xlsclients"
- url = "https://www.x.org/archive/individual/app/xlsclients-1.1.3.tar.gz"
+ xorg_mirror_path = "app/xlsclients-1.1.3.tar.gz"
version('1.1.3', sha256='4670a4003aae01e9172efb969246c3d8f33481f290aa8726ff50398c838e6994')
diff --git a/var/spack/repos/builtin/packages/xlsfonts/package.py b/var/spack/repos/builtin/packages/xlsfonts/package.py
index 0cfda1979f..5d01efe003 100644
--- a/var/spack/repos/builtin/packages/xlsfonts/package.py
+++ b/var/spack/repos/builtin/packages/xlsfonts/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xlsfonts(AutotoolsPackage):
+class Xlsfonts(AutotoolsPackage, XorgPackage):
"""xlsfonts lists fonts available from an X server via the X11
core protocol."""
homepage = "http://cgit.freedesktop.org/xorg/app/xlsfonts"
- url = "https://www.x.org/archive/individual/app/xlsfonts-1.0.5.tar.gz"
+ xorg_mirror_path = "app/xlsfonts-1.0.5.tar.gz"
version('1.0.5', sha256='2a7aeca1023a3918ad2a1af2258ed63d8f8b6c48e53841b3a3f15fb9a0c008ce')
diff --git a/var/spack/repos/builtin/packages/xmag/package.py b/var/spack/repos/builtin/packages/xmag/package.py
index 62abefd68c..fcda514cbb 100644
--- a/var/spack/repos/builtin/packages/xmag/package.py
+++ b/var/spack/repos/builtin/packages/xmag/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xmag(AutotoolsPackage):
+class Xmag(AutotoolsPackage, XorgPackage):
"""xmag displays a magnified snapshot of a portion of an X11 screen."""
homepage = "http://cgit.freedesktop.org/xorg/app/xmag"
- url = "https://www.x.org/archive/individual/app/xmag-1.0.6.tar.gz"
+ xorg_mirror_path = "app/xmag-1.0.6.tar.gz"
version('1.0.6', sha256='07c5ec9114376dcd9a3303a38779e79b949d486f3b832d4a438550357d797aa5')
diff --git a/var/spack/repos/builtin/packages/xman/package.py b/var/spack/repos/builtin/packages/xman/package.py
index 433a8ee71f..4c963ec69c 100644
--- a/var/spack/repos/builtin/packages/xman/package.py
+++ b/var/spack/repos/builtin/packages/xman/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xman(AutotoolsPackage):
+class Xman(AutotoolsPackage, XorgPackage):
"""xman is a graphical manual page browser using the Athena Widgets (Xaw)
toolkit."""
homepage = "http://cgit.freedesktop.org/xorg/app/xman"
- url = "https://www.x.org/archive/individual/app/xman-1.1.4.tar.gz"
+ xorg_mirror_path = "app/xman-1.1.4.tar.gz"
version('1.1.4', sha256='72fd0d479624a31d9a7330e5fdd220b7aa144744781f8e78aa12deece86e05c7')
diff --git a/var/spack/repos/builtin/packages/xmessage/package.py b/var/spack/repos/builtin/packages/xmessage/package.py
index d1aaee2053..f810f03c25 100644
--- a/var/spack/repos/builtin/packages/xmessage/package.py
+++ b/var/spack/repos/builtin/packages/xmessage/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xmessage(AutotoolsPackage):
+class Xmessage(AutotoolsPackage, XorgPackage):
"""xmessage displays a message or query in a window. The user can click
on an "okay" button to dismiss it or can select one of several buttons
to answer a question. xmessage can also exit after a specified time."""
homepage = "http://cgit.freedesktop.org/xorg/app/xmessage"
- url = "https://www.x.org/archive/individual/app/xmessage-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xmessage-1.0.4.tar.gz"
version('1.0.4', sha256='883099c3952c8cace5bd11d3df2e9ca143fc07375997435d5ff4f2d50353acca')
diff --git a/var/spack/repos/builtin/packages/xmh/package.py b/var/spack/repos/builtin/packages/xmh/package.py
index 68ee0eb8a9..c88e29d193 100644
--- a/var/spack/repos/builtin/packages/xmh/package.py
+++ b/var/spack/repos/builtin/packages/xmh/package.py
@@ -6,13 +6,13 @@
from spack import *
-class Xmh(AutotoolsPackage):
+class Xmh(AutotoolsPackage, XorgPackage):
"""The xmh program provides a graphical user interface to the
MH Message Handling System. To actually do things with your
mail, it makes calls to the MH package."""
homepage = "http://cgit.freedesktop.org/xorg/app/xmh"
- url = "https://www.x.org/archive/individual/app/xmh-1.0.3.tar.gz"
+ xorg_mirror_path = "app/xmh-1.0.3.tar.gz"
version('1.0.3', sha256='f90baf2615a4e1e01232c50cfd36ee4d50ad2fb2f76b8b5831fb796661f194d2')
diff --git a/var/spack/repos/builtin/packages/xmodmap/package.py b/var/spack/repos/builtin/packages/xmodmap/package.py
index 8ab2eedc99..bfffca335a 100644
--- a/var/spack/repos/builtin/packages/xmodmap/package.py
+++ b/var/spack/repos/builtin/packages/xmodmap/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xmodmap(AutotoolsPackage):
+class Xmodmap(AutotoolsPackage, XorgPackage):
"""The xmodmap program is used to edit and display the keyboard modifier
map and keymap table that are used by client applications to convert
event keycodes into keysyms. It is usually run from the user's
@@ -14,7 +14,7 @@ class Xmodmap(AutotoolsPackage):
tastes."""
homepage = "http://cgit.freedesktop.org/xorg/app/xmodmap"
- url = "https://www.x.org/archive/individual/app/xmodmap-1.0.9.tar.gz"
+ xorg_mirror_path = "app/xmodmap-1.0.9.tar.gz"
version('1.0.9', sha256='73427a996f0fcda2a2c7ac96cfc4edd5985aeb13b48053f55ae7f63a668fadef')
diff --git a/var/spack/repos/builtin/packages/xmore/package.py b/var/spack/repos/builtin/packages/xmore/package.py
index 822dde7848..b6b4d6c360 100644
--- a/var/spack/repos/builtin/packages/xmore/package.py
+++ b/var/spack/repos/builtin/packages/xmore/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xmore(AutotoolsPackage):
+class Xmore(AutotoolsPackage, XorgPackage):
"""xmore - plain text display program for the X Window System."""
homepage = "http://cgit.freedesktop.org/xorg/app/xmore"
- url = "https://www.x.org/archive/individual/app/xmore-1.0.2.tar.gz"
+ xorg_mirror_path = "app/xmore-1.0.2.tar.gz"
version('1.0.2', sha256='7371631d05986f1111f2026a77e43e048519738cfcc493c6222b66e7b0f309c0')
diff --git a/var/spack/repos/builtin/packages/xorg-cf-files/package.py b/var/spack/repos/builtin/packages/xorg-cf-files/package.py
index 0ed5abeb9f..1ac58c5b09 100644
--- a/var/spack/repos/builtin/packages/xorg-cf-files/package.py
+++ b/var/spack/repos/builtin/packages/xorg-cf-files/package.py
@@ -6,14 +6,14 @@
from spack import *
-class XorgCfFiles(AutotoolsPackage):
+class XorgCfFiles(AutotoolsPackage, XorgPackage):
"""The xorg-cf-files package contains the data files for the imake utility,
defining the known settings for a wide variety of platforms (many of which
have not been verified or tested in over a decade), and for many of the
libraries formerly delivered in the X.Org monolithic releases."""
homepage = "http://cgit.freedesktop.org/xorg/util/cf"
- url = "https://www.x.org/archive/individual/util/xorg-cf-files-1.0.6.tar.gz"
+ xorg_mirror_path = "util/xorg-cf-files-1.0.6.tar.gz"
version('1.0.6', sha256='6d56094e5d1a6c7d7a9576ac3a0fc2c042344509ea900d59f4b23df668b96c7a')
diff --git a/var/spack/repos/builtin/packages/xorg-docs/package.py b/var/spack/repos/builtin/packages/xorg-docs/package.py
index 8c653eae30..cdded0a96f 100644
--- a/var/spack/repos/builtin/packages/xorg-docs/package.py
+++ b/var/spack/repos/builtin/packages/xorg-docs/package.py
@@ -6,14 +6,14 @@
from spack import *
-class XorgDocs(AutotoolsPackage):
+class XorgDocs(AutotoolsPackage, XorgPackage):
"""This package provides miscellaneous documentation for the X Window
System that doesn't better fit into other packages.
The preferred documentation format for these documents is DocBook XML."""
homepage = "http://cgit.freedesktop.org/xorg/doc/xorg-docs"
- url = "https://www.x.org/archive/individual/doc/xorg-docs-1.7.1.tar.gz"
+ xorg_mirror_path = "doc/xorg-docs-1.7.1.tar.gz"
version('1.7.1', sha256='360707db2ba48f6deeb53d570deca9fa98218af48ead4a726a67f63e3ef63816')
diff --git a/var/spack/repos/builtin/packages/xorg-gtest/package.py b/var/spack/repos/builtin/packages/xorg-gtest/package.py
index 87df7ca58d..1d7bb7bcbe 100644
--- a/var/spack/repos/builtin/packages/xorg-gtest/package.py
+++ b/var/spack/repos/builtin/packages/xorg-gtest/package.py
@@ -6,12 +6,12 @@
from spack import *
-class XorgGtest(AutotoolsPackage):
+class XorgGtest(AutotoolsPackage, XorgPackage):
"""Provides a Google Test environment for starting and stopping
a X server for testing purposes."""
homepage = "https://people.freedesktop.org/~cndougla/xorg-gtest/"
- url = "https://www.x.org/archive/individual/test/xorg-gtest-0.7.1.tar.bz2"
+ xorg_mirror_path = "test/xorg-gtest-0.7.1.tar.bz2"
version('0.7.1', sha256='6cedc7904c698472783203bd686e777db120b808bb4052e451a822e437b72682')
diff --git a/var/spack/repos/builtin/packages/xorg-server/package.py b/var/spack/repos/builtin/packages/xorg-server/package.py
index f46795ffbf..079b9cd129 100644
--- a/var/spack/repos/builtin/packages/xorg-server/package.py
+++ b/var/spack/repos/builtin/packages/xorg-server/package.py
@@ -6,12 +6,12 @@
from spack import *
-class XorgServer(AutotoolsPackage):
+class XorgServer(AutotoolsPackage, XorgPackage):
"""X.Org Server is the free and open source implementation of the display
server for the X Window System stewarded by the X.Org Foundation."""
homepage = "http://cgit.freedesktop.org/xorg/xserver"
- url = "https://www.x.org/archive/individual/xserver/xorg-server-1.18.99.901.tar.gz"
+ xorg_mirror_path = "xserver/xorg-server-1.18.99.901.tar.gz"
version('1.18.99.901', sha256='c8425163b588de2ee7e5c8e65b0749f2710f55a7e02a8d1dc83b3630868ceb21')
diff --git a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py
index 3eb8acb129..9b57524b47 100644
--- a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py
+++ b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py
@@ -6,13 +6,13 @@
from spack import *
-class XorgSgmlDoctools(AutotoolsPackage):
+class XorgSgmlDoctools(AutotoolsPackage, XorgPackage):
"""This package provides a common set of SGML entities and XML/CSS style
sheets used in building/formatting the documentation provided in other
X.Org packages."""
homepage = "http://cgit.freedesktop.org/xorg/doc/xorg-sgml-doctools"
- url = "https://www.x.org/archive/individual/doc/xorg-sgml-doctools-1.11.tar.gz"
+ xorg_mirror_path = "doc/xorg-sgml-doctools-1.11.tar.gz"
version('1.11', sha256='986326d7b4dd2ad298f61d8d41fe3929ac6191c6000d6d7e47a8ffc0c34e7426')
diff --git a/var/spack/repos/builtin/packages/xphelloworld/package.py b/var/spack/repos/builtin/packages/xphelloworld/package.py
index b0bcd86858..f3e6e47be9 100644
--- a/var/spack/repos/builtin/packages/xphelloworld/package.py
+++ b/var/spack/repos/builtin/packages/xphelloworld/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xphelloworld(AutotoolsPackage):
+class Xphelloworld(AutotoolsPackage, XorgPackage):
"""Xprint sample applications."""
homepage = "http://cgit.freedesktop.org/xorg/app/xphelloworld"
- url = "https://www.x.org/archive/individual/app/xphelloworld-1.0.1.tar.gz"
+ xorg_mirror_path = "app/xphelloworld-1.0.1.tar.gz"
version('1.0.1', sha256='ead6437c4dc9540698a41e174c9d1ac792de07baeead81935d72cb123196f866')
diff --git a/var/spack/repos/builtin/packages/xplsprinters/package.py b/var/spack/repos/builtin/packages/xplsprinters/package.py
index 2a7daa8a40..729ee62893 100644
--- a/var/spack/repos/builtin/packages/xplsprinters/package.py
+++ b/var/spack/repos/builtin/packages/xplsprinters/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xplsprinters(AutotoolsPackage):
+class Xplsprinters(AutotoolsPackage, XorgPackage):
"""List Xprint printers."""
homepage = "http://cgit.freedesktop.org/xorg/app/xplsprinters"
- url = "https://www.x.org/archive/individual/app/xplsprinters-1.0.1.tar.gz"
+ xorg_mirror_path = "app/xplsprinters-1.0.1.tar.gz"
version('1.0.1', sha256='33377e499429ce3e100fbd7b59153c87ad79bf55872561db08419f69cac4fbfd')
diff --git a/var/spack/repos/builtin/packages/xpr/package.py b/var/spack/repos/builtin/packages/xpr/package.py
index 56023a0088..ca57b0c95b 100644
--- a/var/spack/repos/builtin/packages/xpr/package.py
+++ b/var/spack/repos/builtin/packages/xpr/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xpr(AutotoolsPackage):
+class Xpr(AutotoolsPackage, XorgPackage):
"""xpr takes as input a window dump file produced by xwd
and formats it for output on various types of printers."""
homepage = "http://cgit.freedesktop.org/xorg/app/xpr"
- url = "https://www.x.org/archive/individual/app/xpr-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xpr-1.0.4.tar.gz"
version('1.0.4', sha256='9ec355388ae363fd40239a3fa56908bb2f3e53b5bfc872cf0182d14d730c6207')
diff --git a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py
index 4cd0383461..2f03d06f40 100644
--- a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py
+++ b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xprehashprinterlist(AutotoolsPackage):
+class Xprehashprinterlist(AutotoolsPackage, XorgPackage):
"""Rehash list of Xprint printers."""
homepage = "http://cgit.freedesktop.org/xorg/app/xprehashprinterlist"
- url = "https://www.x.org/archive/individual/app/xprehashprinterlist-1.0.1.tar.gz"
+ xorg_mirror_path = "app/xprehashprinterlist-1.0.1.tar.gz"
version('1.0.1', sha256='396986da064b584138cfcff79a8aed12590a9dab24f1cd2d80b08bc1cb896a43')
diff --git a/var/spack/repos/builtin/packages/xprop/package.py b/var/spack/repos/builtin/packages/xprop/package.py
index d5f2c2ea37..a0d11ae17f 100644
--- a/var/spack/repos/builtin/packages/xprop/package.py
+++ b/var/spack/repos/builtin/packages/xprop/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xprop(AutotoolsPackage):
+class Xprop(AutotoolsPackage, XorgPackage):
"""xprop is a command line tool to display and/or set window and font
properties of an X server."""
homepage = "http://cgit.freedesktop.org/xorg/app/xprop"
- url = "https://www.x.org/archive/individual/app/xprop-1.2.2.tar.gz"
+ xorg_mirror_path = "app/xprop-1.2.2.tar.gz"
version('1.2.2', sha256='3db78771ce8fb8954fb242ed9d4030372523649c5e9c1a9420340020dd0afbc2')
diff --git a/var/spack/repos/builtin/packages/xproto/package.py b/var/spack/repos/builtin/packages/xproto/package.py
index ebadd4b2eb..7414ba1f5e 100644
--- a/var/spack/repos/builtin/packages/xproto/package.py
+++ b/var/spack/repos/builtin/packages/xproto/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xproto(AutotoolsPackage):
+class Xproto(AutotoolsPackage, XorgPackage):
"""X Window System Core Protocol.
This package provides the headers and specification documents defining
@@ -17,7 +17,7 @@ class Xproto(AutotoolsPackage):
common definitions and porting layer."""
homepage = "http://cgit.freedesktop.org/xorg/proto/x11proto"
- url = "https://www.x.org/archive/individual/proto/xproto-7.0.31.tar.gz"
+ xorg_mirror_path = "proto/xproto-7.0.31.tar.gz"
version('7.0.31', sha256='6d755eaae27b45c5cc75529a12855fed5de5969b367ed05003944cf901ed43c7')
version('7.0.29', sha256='628243b3a0fa9b65eda804810ab7238cb88af92fe89efdbc858f25ee5e93a324')
diff --git a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py
index f0c082e282..cc9b421887 100644
--- a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py
+++ b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xproxymanagementprotocol(AutotoolsPackage):
+class Xproxymanagementprotocol(AutotoolsPackage, XorgPackage):
"""The Proxy Management Protocol is an ICE based protocol that provides a
way for application servers to easily locate proxy services available to
them."""
homepage = "http://cgit.freedesktop.org/xorg/proto/pmproto"
- url = "https://www.x.org/archive/individual/proto/xproxymanagementprotocol-1.0.3.tar.gz"
+ xorg_mirror_path = "proto/xproxymanagementprotocol-1.0.3.tar.gz"
version('1.0.3', sha256='c1501045ec781f36b6f867611ab2b4e81be542f5c669b2fd0cc4ec1340c42bcf')
diff --git a/var/spack/repos/builtin/packages/xrandr/package.py b/var/spack/repos/builtin/packages/xrandr/package.py
index 6f716043b8..544e05d173 100644
--- a/var/spack/repos/builtin/packages/xrandr/package.py
+++ b/var/spack/repos/builtin/packages/xrandr/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xrandr(AutotoolsPackage):
+class Xrandr(AutotoolsPackage, XorgPackage):
"""xrandr - primitive command line interface to X11 Resize, Rotate, and
Reflect (RandR) extension."""
homepage = "http://cgit.freedesktop.org/xorg/app/xrandr"
- url = "https://www.x.org/archive/individual/app/xrandr-1.5.0.tar.gz"
+ xorg_mirror_path = "app/xrandr-1.5.0.tar.gz"
version('1.5.0', sha256='ddfe8e7866149c24ccce8e6aaa0623218ae19130c2859cadcaa4228d8bb4a46d')
diff --git a/var/spack/repos/builtin/packages/xrdb/package.py b/var/spack/repos/builtin/packages/xrdb/package.py
index d32b966d1a..3455f33740 100644
--- a/var/spack/repos/builtin/packages/xrdb/package.py
+++ b/var/spack/repos/builtin/packages/xrdb/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xrdb(AutotoolsPackage):
+class Xrdb(AutotoolsPackage, XorgPackage):
"""xrdb - X server resource database utility."""
homepage = "http://cgit.freedesktop.org/xorg/app/xrdb"
- url = "https://www.x.org/archive/individual/app/xrdb-1.1.0.tar.gz"
+ xorg_mirror_path = "app/xrdb-1.1.0.tar.gz"
version('1.1.0', sha256='44b0b6b7b7eb80b83486dfea67c880f6b0059052386c7ddec4d58fd2ad9ae8e9')
diff --git a/var/spack/repos/builtin/packages/xrefresh/package.py b/var/spack/repos/builtin/packages/xrefresh/package.py
index fbfbf30886..fa6e4ec074 100644
--- a/var/spack/repos/builtin/packages/xrefresh/package.py
+++ b/var/spack/repos/builtin/packages/xrefresh/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xrefresh(AutotoolsPackage):
+class Xrefresh(AutotoolsPackage, XorgPackage):
"""xrefresh - refresh all or part of an X screen."""
homepage = "http://cgit.freedesktop.org/xorg/app/xrefresh"
- url = "https://www.x.org/archive/individual/app/xrefresh-1.0.5.tar.gz"
+ xorg_mirror_path = "app/xrefresh-1.0.5.tar.gz"
version('1.0.5', sha256='b373cc1ecd37c3d787e7074ce89a8a06ea173d7ba9e73fa48de973c759fbcf38')
diff --git a/var/spack/repos/builtin/packages/xrootd/package.py b/var/spack/repos/builtin/packages/xrootd/package.py
index 6f0f9268c1..438e5d385b 100644
--- a/var/spack/repos/builtin/packages/xrootd/package.py
+++ b/var/spack/repos/builtin/packages/xrootd/package.py
@@ -13,6 +13,7 @@ class Xrootd(CMakePackage):
homepage = "http://xrootd.org"
url = "http://xrootd.org/download/v4.6.0/xrootd-4.6.0.tar.gz"
+ version('4.11.2', sha256='4620824db97fcc37dc3dd26110da8e5c3aab1d8302e4921d4f32e83207060603')
version('4.10.0', sha256='f07f85e27d72e9e8ff124173c7b53619aed8fcd36f9d6234c33f8f7fd511995b')
version('4.8.5', sha256='42e4d2cc6f8b442135f09bcc12c7be38b1a0c623a005cb5e69ff3d27997bdf73')
version('4.8.4', sha256='f148d55b16525567c0f893edf9bb2975f7c09f87f0599463e19e1b456a9d95ba')
diff --git a/var/spack/repos/builtin/packages/xrx/package.py b/var/spack/repos/builtin/packages/xrx/package.py
index 580df464dd..5abc2911eb 100644
--- a/var/spack/repos/builtin/packages/xrx/package.py
+++ b/var/spack/repos/builtin/packages/xrx/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Xrx(AutotoolsPackage):
+class Xrx(AutotoolsPackage, XorgPackage):
"""The remote execution (RX) service specifies a MIME format for invoking
applications remotely, for example via a World Wide Web browser. This
RX format specifies a syntax for listing network services required by
@@ -15,7 +15,7 @@ class Xrx(AutotoolsPackage):
to invoke the application."""
homepage = "http://cgit.freedesktop.org/xorg/app/xrx"
- url = "https://www.x.org/archive/individual/app/xrx-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xrx-1.0.4.tar.gz"
version('1.0.4', sha256='1ffa1c2af28587c6ed7ded3af2e62e93bad8f9900423d09c45b1d59449d15134')
diff --git a/var/spack/repos/builtin/packages/xsbench/package.py b/var/spack/repos/builtin/packages/xsbench/package.py
index 3648edc298..b6040714d4 100644
--- a/var/spack/repos/builtin/packages/xsbench/package.py
+++ b/var/spack/repos/builtin/packages/xsbench/package.py
@@ -28,7 +28,12 @@ class Xsbench(MakefilePackage):
depends_on('mpi', when='+mpi')
- build_directory = 'src'
+ @property
+ def build_directory(self):
+ if self.spec.satisfies('@:18'):
+ return 'src'
+ else:
+ return 'openmp-threading'
@property
def build_targets(self):
@@ -50,4 +55,5 @@ class Xsbench(MakefilePackage):
def install(self, spec, prefix):
mkdir(prefix.bin)
- install('src/XSBench', prefix.bin)
+ with working_dir(self.build_directory):
+ install('XSBench', prefix.bin)
diff --git a/var/spack/repos/builtin/packages/xscope/package.py b/var/spack/repos/builtin/packages/xscope/package.py
index 3b322267e1..27d108ab6e 100644
--- a/var/spack/repos/builtin/packages/xscope/package.py
+++ b/var/spack/repos/builtin/packages/xscope/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xscope(AutotoolsPackage):
+class Xscope(AutotoolsPackage, XorgPackage):
"""XSCOPE -- a program to monitor X11/Client conversations."""
homepage = "http://cgit.freedesktop.org/xorg/app/xscope"
- url = "https://www.x.org/archive/individual/app/xscope-1.4.1.tar.gz"
+ xorg_mirror_path = "app/xscope-1.4.1.tar.gz"
version('1.4.1', sha256='f99558a64e828cd2c352091ed362ad2ef42b1c55ef5c01cbf782be9735bb6de3')
diff --git a/var/spack/repos/builtin/packages/xsdk-examples/package.py b/var/spack/repos/builtin/packages/xsdk-examples/package.py
new file mode 100644
index 0000000000..418651ec72
--- /dev/null
+++ b/var/spack/repos/builtin/packages/xsdk-examples/package.py
@@ -0,0 +1,39 @@
+# Copyright 2013-2020 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 XsdkExamples(CMakePackage):
+ """xSDK Examples show usage of libraries in the xSDK package."""
+
+ homepage = 'http://xsdk.info'
+ url = 'https://github.com/xsdk-project/xsdk-examples/archive/v0.1.0.tar.gz'
+
+ maintainers = ['acfisher', 'balay', 'balos1', 'luszczek']
+
+ version('0.1.0', sha256='d24cab1db7c0872b6474d69e598df9c8e25d254d09c425fb0a6a8d6469b8018f')
+
+ depends_on('xsdk@0.5.0', when='@0.1.0')
+
+ def cmake_args(self):
+ spec = self.spec
+ args = [
+ '-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc,
+ '-DMPI_DIR=%s' % spec['mpi'].prefix,
+ '-DSUNDIALS_DIR=%s' % spec['sundials'].prefix,
+ '-DPETSC_DIR=%s' % spec['petsc'].prefix,
+ '-DPETSC_INCLUDE_DIR=%s' % spec['petsc'].prefix.include,
+ '-DPETSC_LIBRARY_DIR=%s' % spec['petsc'].prefix.lib,
+ '-DSUPERLUDIST_INCLUDE_DIR=%s' %
+ spec['superlu-dist'].prefix.include,
+ '-DSUPERLUDIST_LIBRARY_DIR=%s' % spec['superlu-dist'].prefix.lib,
+ ]
+ if 'trilinos' in spec:
+ args.extend([
+ '-DTRILINOS_DIR:PATH=%s' % spec['trilinos'].prefix,
+ ])
+ return args
diff --git a/var/spack/repos/builtin/packages/xset/package.py b/var/spack/repos/builtin/packages/xset/package.py
index 2cea9420c8..b113bb7cef 100644
--- a/var/spack/repos/builtin/packages/xset/package.py
+++ b/var/spack/repos/builtin/packages/xset/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xset(AutotoolsPackage):
+class Xset(AutotoolsPackage, XorgPackage):
"""User preference utility for X."""
homepage = "http://cgit.freedesktop.org/xorg/app/xset"
- url = "https://www.x.org/archive/individual/app/xset-1.2.3.tar.gz"
+ xorg_mirror_path = "app/xset-1.2.3.tar.gz"
version('1.2.3', sha256='5ecb2bb2cbf3c9349b735080b155a08c97b314dacedfc558c7f5a611ee1297f7')
diff --git a/var/spack/repos/builtin/packages/xsetmode/package.py b/var/spack/repos/builtin/packages/xsetmode/package.py
index 547999fb06..d2da4f613b 100644
--- a/var/spack/repos/builtin/packages/xsetmode/package.py
+++ b/var/spack/repos/builtin/packages/xsetmode/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xsetmode(AutotoolsPackage):
+class Xsetmode(AutotoolsPackage, XorgPackage):
"""Set the mode for an X Input device."""
homepage = "http://cgit.freedesktop.org/xorg/app/xsetmode"
- url = "https://www.x.org/archive/individual/app/xsetmode-1.0.0.tar.gz"
+ xorg_mirror_path = "app/xsetmode-1.0.0.tar.gz"
version('1.0.0', sha256='9ee0d6cf72dfaacb997f9570779dcbc42f5395ae102180cb19382860b4b02ef3')
diff --git a/var/spack/repos/builtin/packages/xsetpointer/package.py b/var/spack/repos/builtin/packages/xsetpointer/package.py
index 57775a6a19..ba400c0dc6 100644
--- a/var/spack/repos/builtin/packages/xsetpointer/package.py
+++ b/var/spack/repos/builtin/packages/xsetpointer/package.py
@@ -6,17 +6,17 @@
from spack import *
-class Xsetpointer(AutotoolsPackage):
+class Xsetpointer(AutotoolsPackage, XorgPackage):
"""Set an X Input device as the main pointer."""
homepage = "http://cgit.freedesktop.org/xorg/app/xsetpointer"
- url = "https://www.x.org/archive/individual/app/xsetpointer-1.0.1.tar.gz"
+ xorg_mirror_path = "app/xsetpointer-1.0.1.tar.gz"
version('1.0.1', sha256='54be93b20fd6f1deac67246d6e214a60b02dcfbf05295e43751f7a04edb986ac')
- depends_on('libxi')
- depends_on('libx11')
+ depends_on('libxi', type='link')
+ depends_on('libx11', type='link')
+ depends_on('inputproto@1.4:', type='link')
- depends_on('inputproto@1.4:', type='build')
depends_on('pkgconfig', type='build')
depends_on('util-macros', type='build')
diff --git a/var/spack/repos/builtin/packages/xsetroot/package.py b/var/spack/repos/builtin/packages/xsetroot/package.py
index 4f0a49bd40..60fc05f912 100644
--- a/var/spack/repos/builtin/packages/xsetroot/package.py
+++ b/var/spack/repos/builtin/packages/xsetroot/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xsetroot(AutotoolsPackage):
+class Xsetroot(AutotoolsPackage, XorgPackage):
"""xsetroot - root window parameter setting utility for X."""
homepage = "http://cgit.freedesktop.org/xorg/app/xsetroot"
- url = "https://www.x.org/archive/individual/app/xsetroot-1.1.1.tar.gz"
+ xorg_mirror_path = "app/xsetroot-1.1.1.tar.gz"
version('1.1.1', sha256='6cdd48757d18835251124138b4a8e4008c3bbc51cf92533aa39c6ed03277168b')
diff --git a/var/spack/repos/builtin/packages/xsm/package.py b/var/spack/repos/builtin/packages/xsm/package.py
index f3c80c0124..312223216f 100644
--- a/var/spack/repos/builtin/packages/xsm/package.py
+++ b/var/spack/repos/builtin/packages/xsm/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xsm(AutotoolsPackage):
+class Xsm(AutotoolsPackage, XorgPackage):
"""X Session Manager."""
homepage = "http://cgit.freedesktop.org/xorg/app/xsm"
- url = "https://www.x.org/archive/individual/app/xsm-1.0.3.tar.gz"
+ xorg_mirror_path = "app/xsm-1.0.3.tar.gz"
version('1.0.3', sha256='f70815139d62416dbec5915ec37db66f325932a69f6350bb1a74c0940cdc796a')
diff --git a/var/spack/repos/builtin/packages/xstdcmap/package.py b/var/spack/repos/builtin/packages/xstdcmap/package.py
index 5d203ff479..23cab1c4ec 100644
--- a/var/spack/repos/builtin/packages/xstdcmap/package.py
+++ b/var/spack/repos/builtin/packages/xstdcmap/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xstdcmap(AutotoolsPackage):
+class Xstdcmap(AutotoolsPackage, XorgPackage):
"""The xstdcmap utility can be used to selectively define standard colormap
properties. It is intended to be run from a user's X startup script to
create standard colormap definitions in order to facilitate sharing of
scarce colormap resources among clients using PseudoColor visuals."""
homepage = "http://cgit.freedesktop.org/xorg/app/xstdcmap"
- url = "https://www.x.org/archive/individual/app/xstdcmap-1.0.3.tar.gz"
+ xorg_mirror_path = "app/xstdcmap-1.0.3.tar.gz"
version('1.0.3', sha256='b97aaa883a9eedf9c3056ea1a7e818e3d93b63aa1f54193ef481d392bdef5711')
diff --git a/var/spack/repos/builtin/packages/xtrans/package.py b/var/spack/repos/builtin/packages/xtrans/package.py
index aaffcb447e..ff7f902661 100644
--- a/var/spack/repos/builtin/packages/xtrans/package.py
+++ b/var/spack/repos/builtin/packages/xtrans/package.py
@@ -6,14 +6,14 @@
from spack import *
-class Xtrans(AutotoolsPackage):
+class Xtrans(AutotoolsPackage, XorgPackage):
"""xtrans is a library of code that is shared among various X packages to
handle network protocol transport in a modular fashion, allowing a
single place to add new transport types. It is used by the X server,
libX11, libICE, the X font server, and related components."""
homepage = "http://cgit.freedesktop.org/xorg/lib/libxtrans"
- url = "https://www.x.org/archive//individual/lib/xtrans-1.3.5.tar.gz"
+ xorg_mirror_path = "lib/xtrans-1.3.5.tar.gz"
version('1.3.5', sha256='b7a577c1b6c75030145e53b4793db9c88f9359ac49e7d771d4385d21b3e5945d')
diff --git a/var/spack/repos/builtin/packages/xtrap/package.py b/var/spack/repos/builtin/packages/xtrap/package.py
index deca1170a7..ff6a074b52 100644
--- a/var/spack/repos/builtin/packages/xtrap/package.py
+++ b/var/spack/repos/builtin/packages/xtrap/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xtrap(AutotoolsPackage):
+class Xtrap(AutotoolsPackage, XorgPackage):
"""XTrap sample clients."""
homepage = "http://cgit.freedesktop.org/xorg/app/xtrap"
- url = "https://www.x.org/archive/individual/app/xtrap-1.0.2.tar.gz"
+ xorg_mirror_path = "app/xtrap-1.0.2.tar.gz"
version('1.0.2', sha256='e8916e05bfb0d72a088aaaac0feaf4ad7671d0f509d1037fb3c0c9ea131b93d2')
diff --git a/var/spack/repos/builtin/packages/xts/package.py b/var/spack/repos/builtin/packages/xts/package.py
index 19149f9ec9..8c44ffbedf 100644
--- a/var/spack/repos/builtin/packages/xts/package.py
+++ b/var/spack/repos/builtin/packages/xts/package.py
@@ -6,23 +6,26 @@
from spack import *
-class Xts(AutotoolsPackage):
+class Xts(AutotoolsPackage, XorgPackage):
"""This is a revamped version of X Test Suite (XTS) which removes some of
the ugliness of building and running the tests."""
homepage = "https://www.x.org/wiki/XorgTesting/"
- url = "https://www.x.org/archive/individual/test/xts-0.99.1.tar.gz"
+ xorg_mirror_path = "test/xts-0.99.1.tar.gz"
version('0.99.1', sha256='d04d987b9a9f8b3921dfe8de8577d0c2a0f21d2c4c3196948fc9805838a352e6')
- depends_on('libx11')
- depends_on('libxext')
- depends_on('libxi')
- depends_on('libxtst')
- depends_on('libxau')
- depends_on('libxt')
- depends_on('libxmu')
- depends_on('libxaw')
+ depends_on('libx11', type='link')
+ depends_on('libxext', type='link')
+ depends_on('libxi', type='link')
+ depends_on('libxtst', type='link')
+ depends_on('libxau', type='link')
+ depends_on('libxt', type='link')
+ depends_on('libxmu', type='link')
+ depends_on('libxaw', type='link')
+ depends_on('inputproto', type='link')
+ depends_on('recordproto', type='link')
+ depends_on('fixesproto', type='link')
depends_on('xtrans', type='build')
depends_on('bdftopcf', type='build')
diff --git a/var/spack/repos/builtin/packages/xvidtune/package.py b/var/spack/repos/builtin/packages/xvidtune/package.py
index b2e41b6f60..3d3daa996d 100644
--- a/var/spack/repos/builtin/packages/xvidtune/package.py
+++ b/var/spack/repos/builtin/packages/xvidtune/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xvidtune(AutotoolsPackage):
+class Xvidtune(AutotoolsPackage, XorgPackage):
"""xvidtune is a client interface to the X server video mode
extension (XFree86-VidModeExtension)."""
homepage = "http://cgit.freedesktop.org/xorg/app/xvidtune"
- url = "https://www.x.org/archive/individual/app/xvidtune-1.0.3.tar.gz"
+ xorg_mirror_path = "app/xvidtune-1.0.3.tar.gz"
version('1.0.3', sha256='c0e158388d60e1ce054ce462958a46894604bd95e13093f3476ec6d9bbd786d4')
diff --git a/var/spack/repos/builtin/packages/xvinfo/package.py b/var/spack/repos/builtin/packages/xvinfo/package.py
index 4c6bf77a5f..4be8a63fb0 100644
--- a/var/spack/repos/builtin/packages/xvinfo/package.py
+++ b/var/spack/repos/builtin/packages/xvinfo/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xvinfo(AutotoolsPackage):
+class Xvinfo(AutotoolsPackage, XorgPackage):
"""xvinfo prints out the capabilities of any video adaptors associated
with the display that are accessible through the X-Video extension."""
homepage = "http://cgit.freedesktop.org/xorg/app/xvinfo"
- url = "https://www.x.org/archive/individual/app/xvinfo-1.1.3.tar.gz"
+ xorg_mirror_path = "app/xvinfo-1.1.3.tar.gz"
version('1.1.3', sha256='1c1c2f97abfe114389e94399cc7bf3dfd802ed30ad41ba23921d005bd8a6c39f')
diff --git a/var/spack/repos/builtin/packages/xwd/package.py b/var/spack/repos/builtin/packages/xwd/package.py
index b874acbe73..de2c43c852 100644
--- a/var/spack/repos/builtin/packages/xwd/package.py
+++ b/var/spack/repos/builtin/packages/xwd/package.py
@@ -6,11 +6,11 @@
from spack import *
-class Xwd(AutotoolsPackage):
+class Xwd(AutotoolsPackage, XorgPackage):
"""xwd - dump an image of an X window."""
homepage = "http://cgit.freedesktop.org/xorg/app/xwd"
- url = "https://www.x.org/archive/individual/app/xwd-1.0.6.tar.gz"
+ xorg_mirror_path = "app/xwd-1.0.6.tar.gz"
version('1.0.6', sha256='ff01f0a4b736f955aaf7c8c3942211bc52f9fb75d96f2b19777f33fff5dc5b83')
diff --git a/var/spack/repos/builtin/packages/xwininfo/package.py b/var/spack/repos/builtin/packages/xwininfo/package.py
index dce4cf8665..58c25cf4be 100644
--- a/var/spack/repos/builtin/packages/xwininfo/package.py
+++ b/var/spack/repos/builtin/packages/xwininfo/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xwininfo(AutotoolsPackage):
+class Xwininfo(AutotoolsPackage, XorgPackage):
"""xwininfo prints information about windows on an X server. Various
information is displayed depending on which options are selected."""
homepage = "http://cgit.freedesktop.org/xorg/app/xwininfo"
- url = "https://www.x.org/archive/individual/app/xwininfo-1.1.3.tar.gz"
+ xorg_mirror_path = "app/xwininfo-1.1.3.tar.gz"
version('1.1.3', sha256='784f8b9c9ddab24ce4faa65fde6430a8d7cf3c0564573582452cc99c599bd941')
diff --git a/var/spack/repos/builtin/packages/xwud/package.py b/var/spack/repos/builtin/packages/xwud/package.py
index 4feff30d1d..15dc45a848 100644
--- a/var/spack/repos/builtin/packages/xwud/package.py
+++ b/var/spack/repos/builtin/packages/xwud/package.py
@@ -6,12 +6,12 @@
from spack import *
-class Xwud(AutotoolsPackage):
+class Xwud(AutotoolsPackage, XorgPackage):
"""xwud allows X users to display in a window an image saved in a
specially formatted dump file, such as produced by xwd."""
homepage = "http://cgit.freedesktop.org/xorg/app/xwud"
- url = "https://www.x.org/archive/individual/app/xwud-1.0.4.tar.gz"
+ xorg_mirror_path = "app/xwud-1.0.4.tar.gz"
version('1.0.4', sha256='b7c124ccd87f529daedb7ef01c670ce6049fe141fd9ba7f444361de34510cd6c')
diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py
index 428993a816..cbaaaa3ec6 100644
--- a/var/spack/repos/builtin/packages/xz/package.py
+++ b/var/spack/repos/builtin/packages/xz/package.py
@@ -13,9 +13,10 @@ class Xz(AutotoolsPackage):
to LZMA Utils."""
homepage = "http://tukaani.org/xz/"
- url = "http://tukaani.org/xz/xz-5.2.4.tar.bz2"
+ url = "http://tukaani.org/xz/xz-5.2.5.tar.bz2"
list_url = "http://tukaani.org/xz/old.html"
+ version('5.2.5', sha256='5117f930900b341493827d63aa910ff5e011e0b994197c3b71c08a20228a42df')
version('5.2.4', sha256='3313fd2a95f43d88e44264e6b015e7d03053e681860b0d5d3f9baca79c57b7bf')
version('5.2.3', sha256='fd9ca16de1052aac899ad3495ad20dfa906c27b4a5070102a2ec35ca3a4740c1')
version('5.2.2', sha256='6ff5f57a4b9167155e35e6da8b529de69270efb2b4cf3fbabf41a4ee793840b5')
diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py
index 321792bd2e..11f1f9fbef 100644
--- a/var/spack/repos/builtin/packages/yaml-cpp/package.py
+++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py
@@ -20,15 +20,18 @@ class YamlCpp(CMakePackage):
version('0.6.3', sha256='77ea1b90b3718aa0c324207cb29418f5bced2354c2e483a9523d98c3460af1ed')
version('0.6.2', sha256='e4d8560e163c3d875fd5d9e5542b5fd5bec810febdcba61481fe5fc4e6b1fd05')
version('0.5.3', sha256='decc5beabb86e8ed9ebeb04358d5363a5c4f72d458b2c788cb2f3ac9c19467b2')
+ version('0.3.0', sha256='ab8d0e07aa14f10224ed6682065569761f363ec44bc36fcdb2946f6d38fe5a89')
variant('shared', default=True,
description='Enable build of shared libraries')
+ variant('static', default=False,
+ description='Build with static libraries')
variant('pic', default=True,
description='Build with position independent code')
variant('tests', default=False,
description='Build yaml-cpp tests using internal gtest')
- depends_on('boost@:1.66.99', when='@:0.5.3')
+ depends_on('boost@:1.66.99', when='@0.5.0:0.5.3')
conflicts('%gcc@:4.7', when='@0.6.0:', msg="versions 0.6.0: require c++11 support")
conflicts('%clang@:3.3.0', when='@0.6.0:', msg="versions 0.6.0: require c++11 support")
@@ -65,6 +68,8 @@ class YamlCpp(CMakePackage):
options.extend([
'-DBUILD_SHARED_LIBS:BOOL=%s' % (
'ON' if '+shared' in spec else 'OFF'),
+ '-DBUILD_STATIC_LIBS=%s' % (
+ 'ON' if '+static' in spec else 'OFF'),
'-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % (
'ON' if '+pic' in spec else 'OFF'),
'-DYAML_CPP_BUILD_TESTS:BOOL=%s' % (
@@ -72,3 +77,10 @@ class YamlCpp(CMakePackage):
])
return options
+
+ def url_for_version(self, version):
+ url = "https://github.com/jbeder/yaml-cpp/archive/{0}-{1}.tar.gz"
+ if version < Version('0.5.3'):
+ return url.format('release', version)
+ else:
+ return url.format('yaml-cpp', version)
diff --git a/var/spack/repos/builtin/packages/yarn/package.py b/var/spack/repos/builtin/packages/yarn/package.py
new file mode 100644
index 0000000000..c9a5299a10
--- /dev/null
+++ b/var/spack/repos/builtin/packages/yarn/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2020 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 Yarn(Package):
+ """Fast, reliable, and secure dependency management."""
+
+ homepage = "https://yarnpkg.com"
+ url = "https://github.com/yarnpkg/yarn/releases/download/v1.22.4/yarn-v1.22.4.tar.gz"
+
+ version('1.22.4', sha256='bc5316aa110b2f564a71a3d6e235be55b98714660870c5b6b2d2d3f12587fb58')
+ version('1.22.2', sha256='de4cff575ae7151f8189bf1d747f026695d768d0563e2860df407ab79c70693d')
+ version('1.22.1', sha256='3af905904932078faa8f485d97c928416b30a86dd09dcd76e746a55c7f533b72')
+ version('1.22.0', sha256='de8871c4e2822cba80d58c2e72366fb78567ec56e873493c9ca0cca76c60f9a5')
+ version('1.21.1', sha256='d1d9f4a0f16f5ed484e814afeb98f39b82d4728c6c8beaafb5abc99c02db6674')
+
+ def install(self, spec, prefix):
+ install_tree('.', prefix)
diff --git a/var/spack/repos/builtin/packages/z3/package.py b/var/spack/repos/builtin/packages/z3/package.py
index bd02c0c0db..71eafb0a3b 100644
--- a/var/spack/repos/builtin/packages/z3/package.py
+++ b/var/spack/repos/builtin/packages/z3/package.py
@@ -14,6 +14,7 @@ class Z3(MakefilePackage):
homepage = "https://github.com/Z3Prover/z3/wiki"
url = "https://github.com/Z3Prover/z3/archive/z3-4.5.0.tar.gz"
+ version('4.8.7', sha256='8c1c49a1eccf5d8b952dadadba3552b0eac67482b8a29eaad62aa7343a0732c3')
version('4.5.0', sha256='aeae1d239c5e06ac183be7dd853775b84698db1265cb2258e5918a28372d4a0c')
version('4.4.1', sha256='50967cca12c5c6e1612d0ccf8b6ebf5f99840a783d6cf5216336a2b59c37c0ce')
version('4.4.0', sha256='65b72f9eb0af50949e504b47080fb3fc95f11c435633041d9a534473f3142cba')
diff --git a/var/spack/repos/builtin/packages/zfs/package.py b/var/spack/repos/builtin/packages/zfs/package.py
new file mode 100644
index 0000000000..819dc2d755
--- /dev/null
+++ b/var/spack/repos/builtin/packages/zfs/package.py
@@ -0,0 +1,28 @@
+# Copyright 2013-2020 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 Zfs(AutotoolsPackage):
+ """OpenZFS is an advanced file system and volume manager which was
+ originally developed for Solaris and is now maintained by the OpenZFS
+ community. This repository contains the code for running OpenZFS on
+ Linux and FreeBSD."""
+
+ homepage = "https://zfsonlinux.org/"
+ url = "https://github.com/openzfs/zfs/releases/download/zfs-0.8.3/zfs-0.8.3.tar.gz"
+
+ version('0.8.3', sha256='545a4897ce30c2d2dd9010a0fdb600a0d3d45805e2387093c473efc03aa9d7fd')
+ version('0.8.2', sha256='47608e257c8ecebb918014ef1da6172c3a45d990885891af18e80f5cc28beab8')
+ version('0.8.1', sha256='0af79fde44b7b8ecb94d5166ce2e4fff7409c20ed874c2d759db92909e6c2799')
+ version('0.8.0', sha256='0fd92e87f4b9df9686f18e2ac707c16b2eeaf00f682d41c20ea519f3a0fe4705')
+
+ depends_on('libuuid')
+ depends_on('libtirpc')
+ depends_on('util-linux')
+
+ def setup_build_environment(self, env):
+ env.prepend_path('CPATH', self.spec['util-linux'].prefix.include)