diff options
726 files changed, 17180 insertions, 1797 deletions
diff --git a/.github/workflows/install_spack.sh b/.github/workflows/install_spack.sh index 5efae461a5..bc1c5f43ec 100755 --- a/.github/workflows/install_spack.sh +++ b/.github/workflows/install_spack.sh @@ -1,5 +1,20 @@ #!/usr/bin/env sh -git clone https://github.com/spack/spack.git -echo -e "config:\n build_jobs: 2" > spack/etc/spack/config.yaml -. spack/share/spack/setup-env.sh -spack compilers +. share/spack/setup-env.sh +echo -e "config:\n build_jobs: 2" > etc/spack/config.yaml +spack config add "packages:all:target:[x86_64]" +# TODO: remove this explicit setting once apple-clang detection is fixed +cat <<EOF > etc/spack/compilers.yaml +compilers: +- compiler: + spec: apple-clang@11.0.3 + paths: + cc: /usr/bin/clang + cxx: /usr/bin/clang++ + f77: /usr/local/bin/gfortran-9 + fc: /usr/local/bin/gfortran-9 + modules: [] + operating_system: catalina + target: x86_64 +EOF +spack compiler info apple-clang +spack debug report diff --git a/.github/workflows/macos_python.yml b/.github/workflows/macos_python.yml index e136102a46..feb9dcef04 100644 --- a/.github/workflows/macos_python.yml +++ b/.github/workflows/macos_python.yml @@ -8,6 +8,13 @@ on: schedule: # nightly at 1 AM - cron: '0 1 * * *' + pull_request: + branches: + - develop + paths: + # Run if we modify this yaml file + - '.github/workflows/macos_python.yml' + # TODO: run if we touch any of the recipes involved in this # GitHub Action Limits # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions @@ -18,10 +25,14 @@ jobs: runs-on: macos-latest steps: - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.7 - name: spack install run: | . .github/workflows/install_spack.sh - spack install -v gcc + # 9.2.0 is the latest version on which we apply homebrew patch + spack install -v --fail-fast gcc@9.2.0 %apple-clang install_jupyter_clang: name: jupyter @@ -29,30 +40,40 @@ jobs: timeout-minutes: 700 steps: - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.7 - name: spack install run: | . .github/workflows/install_spack.sh - spack install -v py-jupyter %clang + spack config add packages:opengl:paths:opengl@4.1:/usr/X11R6 + spack install -v --fail-fast py-jupyter %apple-clang install_scipy_clang: name: scipy, mpl, pd runs-on: macos-latest steps: - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.7 - name: spack install run: | . .github/workflows/install_spack.sh - spack install -v py-scipy %clang - spack install -v py-matplotlib %clang - spack install -v py-pandas %clang + spack install -v --fail-fast py-scipy %apple-clang + spack install -v --fail-fast py-matplotlib %apple-clang + spack install -v --fail-fast py-pandas %apple-clang install_mpi4py_clang: name: mpi4py, petsc4py runs-on: macos-latest steps: - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.7 - name: spack install run: | . .github/workflows/install_spack.sh - spack install -v py-mpi4py %clang - spack install -v py-petsc4py %clang + spack install -v --fail-fast py-mpi4py %apple-clang + spack install -v --fail-fast py-petsc4py %apple-clang diff --git a/.github/workflows/macos_unit_tests.yaml b/.github/workflows/macos_unit_tests.yaml index f4b55bab86..1e60f76918 100644 --- a/.github/workflows/macos_unit_tests.yaml +++ b/.github/workflows/macos_unit_tests.yaml @@ -26,8 +26,6 @@ jobs: pip install --upgrade flake8 pep8-naming - name: Setup Homebrew packages run: | - brew update - brew upgrade brew install gcc gnupg2 dash kcov - name: Run unit tests run: | diff --git a/LICENSE-MIT b/LICENSE-MIT index 4f8ce2fc44..ed8328f13b 100644 --- a/LICENSE-MIT +++ b/LICENSE-MIT @@ -1,20 +1,21 @@ -Copyright 2013-2020 Lawrence Livermore National Security, LLC and other -Spack Project Developers. See the top-level COPYRIGHT file for details. +MIT License -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: +Copyright (c) 2013-2020 LLNS, LLC and other Spack Project Developers. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. @@ -96,6 +96,8 @@ change the way Spack concretizes dependencies within a release branch. So, you can base your Spack deployment on a release branch and `git pull` to get fixes, without the package churn that comes with `develop`. +The latest release is always available with the `releases/latest` tag. + See the [docs on releases](https://spack.readthedocs.io/en/latest/developer_guide.html#releases) for more details. diff --git a/etc/spack/defaults/darwin/packages.yaml b/etc/spack/defaults/darwin/packages.yaml index b2bcd560c6..948e90ea5a 100644 --- a/etc/spack/defaults/darwin/packages.yaml +++ b/etc/spack/defaults/darwin/packages.yaml @@ -21,11 +21,14 @@ packages: - gcc - intel providers: - elf: [libelf] - unwind: [apple-libunwind] + elf: + - libelf + unwind: + - apple-libunwind apple-libunwind: - paths: + buildable: false + externals: # Apple bundles libunwind version 35.3 with macOS 10.9 and later, # although the version number used here isn't critical - apple-libunwind@35.3: /usr - buildable: False + - spec: apple-libunwind@35.3 + prefix: /usr diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 93c5858d93..6642b2adbd 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -695,11 +695,11 @@ Here is an example of a much longer spec than we've seen thus far: .. code-block:: none - mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt arch=bgq_os ^callpath @1.1 %gcc@4.7.2 + mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt target=x86_64 ^callpath @1.1 %gcc@4.7.2 If provided to ``spack install``, this will install the ``mpileaks`` library at some version between ``1.2`` and ``1.4`` (inclusive), -built using ``gcc`` at version 4.7.5 for the Blue Gene/Q architecture, +built using ``gcc`` at version 4.7.5 for a generic ``x86_64`` architecture, with debug options enabled, and without Qt support. Additionally, it says to link it with the ``callpath`` library (which it depends on), and to build callpath with ``gcc`` 4.7.2. Most specs will not be as diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index 9f67d8c14f..3e7a21c3e8 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -57,10 +57,13 @@ directory. Here's an example of an external configuration: packages: 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 + externals: + - spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64" + prefix: /opt/openmpi-1.4.3 + - spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug" + prefix: /opt/openmpi-1.4.3-debug + - spec: "openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64" + prefix: /opt/openmpi-1.6.5-intel This example lists three installations of OpenMPI, one built with GCC, one built with GCC and debug information, and another built with Intel. @@ -76,13 +79,15 @@ of the installation prefixes. The following example says that module .. code-block:: yaml cmake: - modules: - cmake@3.7.2: CMake/3.7.2 - -Each ``packages.yaml`` begins with a ``packages:`` token, followed -by a list of package names. To specify externals, add a ``paths`` or ``modules`` -token under the package name, which lists externals in a -``spec: /path`` or ``spec: module-name`` format. Each spec should be as + externals: + - spec: cmake@3.7.2 + modules: + - CMake/3.7.2 + +Each ``packages.yaml`` begins with a ``packages:`` attribute, followed +by a list of package names. To specify externals, add an ``externals:`` +attribute under the package name, which lists externals. +Each external should specify a ``spec:`` string that should be as well-defined as reasonably possible. If a package lacks a spec component, such as missing a compiler or package version, then Spack will guess the missing component based @@ -106,10 +111,13 @@ be: packages: 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 + externals: + - spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64" + prefix: /opt/openmpi-1.4.3 + - spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug" + prefix: /opt/openmpi-1.4.3-debug + - spec: "openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64" + prefix: /opt/openmpi-1.6.5-intel buildable: False The addition of the ``buildable`` flag tells Spack that it should never build @@ -137,10 +145,13 @@ but more conveniently: 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 + externals: + - spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64" + prefix: /opt/openmpi-1.4.3 + - spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug" + prefix: /opt/openmpi-1.4.3-debug + - spec: "openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64" + prefix: /opt/openmpi-1.6.5-intel Implementations can also be listed immediately under the virtual they provide: @@ -172,8 +183,9 @@ After running this command your ``packages.yaml`` may include new entries: packages: cmake: - paths: - cmake@3.17.2: /usr + externals: + - spec: cmake@3.17.2 + prefix: /usr Generally this is useful for detecting a small set of commonly-used packages; for now this is generally limited to finding build-only dependencies. diff --git a/lib/spack/docs/build_systems/intelpackage.rst b/lib/spack/docs/build_systems/intelpackage.rst index 66f473cbf8..8594c8d425 100644 --- a/lib/spack/docs/build_systems/intelpackage.rst +++ b/lib/spack/docs/build_systems/intelpackage.rst @@ -418,9 +418,13 @@ Adapt the following example. Be sure to maintain the indentation: # other content ... intel-mkl: - modules: - intel-mkl@2018.2.199 arch=linux-centos6-x86_64: intel-mkl/18/18.0.2 - intel-mkl@2018.3.222 arch=linux-centos6-x86_64: intel-mkl/18/18.0.3 + externals: + - spec: "intel-mkl@2018.2.199 arch=linux-centos6-x86_64" + modules: + - intel-mkl/18/18.0.2 + - spec: "intel-mkl@2018.3.222 arch=linux-centos6-x86_64" + modules: + - intel-mkl/18/18.0.3 The version numbers for the ``intel-mkl`` specs defined here correspond to file and directory names that Intel uses for its products because they were adopted @@ -451,12 +455,16 @@ mechanism. packages: intel-parallel-studio: - modules: - intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64: intel/18/18.0.2 - intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64: intel/18/18.0.3 + externals: + - spec: "intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64" + modules: + - intel/18/18.0.2 + - spec: "intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64" + modules: + - intel/18/18.0.3 buildable: False -One additional example illustrates the use of ``paths:`` instead of +One additional example illustrates the use of ``prefix:`` instead of ``modules:``, useful when external modulefiles are not available or not suitable: @@ -464,13 +472,15 @@ suitable: packages: intel-parallel-studio: - paths: - intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal: /opt/intel - intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal: /opt/intel + externals: + - spec: "intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal" + prefix: /opt/intel + - spec: "intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal" + prefix: /opt/intel buildable: False Note that for the Intel packages discussed here, the directory values in the -``paths:`` entries must be the high-level and typically version-less +``prefix:`` entries must be the high-level and typically version-less "installation directory" that has been used by Intel's product installer. Such a directory will typically accumulate various product versions. Amongst them, Spack will select the correct version-specific product directory based on diff --git a/lib/spack/docs/containers.rst b/lib/spack/docs/containers.rst index fe678fd76d..b215507701 100644 --- a/lib/spack/docs/containers.rst +++ b/lib/spack/docs/containers.rst @@ -45,7 +45,7 @@ Environments: && echo " view: /opt/view") > /opt/spack-environment/spack.yaml # Install the software, remove unnecessary deps - RUN cd /opt/spack-environment && spack install && spack gc -y + RUN cd /opt/spack-environment && spack env activate . && spack install && spack gc -y # Strip all the binaries RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \ @@ -267,7 +267,7 @@ following ``Dockerfile``: && echo " view: /opt/view") > /opt/spack-environment/spack.yaml # Install the software, remove unnecessary deps - RUN cd /opt/spack-environment && spack install && spack gc -y + RUN cd /opt/spack-environment && spack env activate . && spack install && spack gc -y # Strip all the binaries RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \ diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index 5c57f28226..284690bd6f 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -557,8 +557,10 @@ packages. They should generally only contain fixes to the Spack core. Both major and minor releases are tagged. After each release, we merge the release branch back into ``develop`` so that the version bump and any -other release-specific changes are visible in the mainline (see -:ref:`merging-releases-to-develop`). +other release-specific changes are visible in the mainline. As a +convenience, we also tag the latest release as ``releases/latest``, +so that users can easily check it out to get the latest +stable version. See :ref:`merging-releases` for more details. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -641,7 +643,7 @@ for a major release, the steps to make the release are as follows: #. Follow the steps in :ref:`publishing-releases`. -#. Follow the steps in :ref:`merging-releases-to-develop`. +#. Follow the steps in :ref:`merging-releases`. #. Follow the steps in :ref:`announcing-releases`. @@ -744,7 +746,7 @@ release: #. Follow the steps in :ref:`publishing-releases`. -#. Follow the steps in :ref:`merging-releases-to-develop`. +#. Follow the steps in :ref:`merging-releases`. #. Follow the steps in :ref:`announcing-releases`. @@ -794,19 +796,41 @@ Publishing a release on GitHub for ``download_count`` to see this. -.. _merging-releases-to-develop: +.. _merging-releases: -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Merging back into ``develop`` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Updating `releases/latest` and `develop` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Once each release is complete, make sure that it is merged back into -``develop`` with a merge commit: +If the new release is the **highest** Spack release yet, you should +also tag it as ``releases/latest``. For example, suppose the highest +release is currently ``0.15.3``: + + * If you are releasing ``0.15.4`` or ``0.16.0``, then you should tag + it with ``releases/latest``, as these are higher than ``0.15.3``. + + * If you are making a new release of an **older** major version of + Spack, e.g. ``0.14.4``, then you should not tag it as + ``releases/latest`` (as there are newer major versions). + + To tag ``releases/latest``, do this: + + .. code-block:: console + + $ git checkout releases/vX.Y # vX.Y is the new release's branch + $ git tag --force releases/latest + $ git push --tags + + The ``--force`` argument makes ``git`` overwrite the existing + ``releases/latest`` tag with the new one. + +We also merge each release that we tag as ``releases/latest`` into ``develop``. +Make sure to do this with a merge commit: .. code-block:: console $ git checkout develop - $ git merge --no-ff releases/v0.15 + $ git merge --no-ff vX.Y.Z # vX.Y.Z is the new release's tag $ git push We merge back to ``develop`` because it: @@ -834,7 +858,6 @@ the release is complete and tagged. If you do it before you've tagged the release and later decide you want to tag some later commit, you'll need to merge again. - .. _announcing-releases: ^^^^^^^^^^^^^^^^^^^^ diff --git a/lib/spack/docs/features.rst b/lib/spack/docs/features.rst index cd7d3a083f..df212c11fc 100644 --- a/lib/spack/docs/features.rst +++ b/lib/spack/docs/features.rst @@ -48,8 +48,8 @@ platform, all on the command line. # Add compiler flags using the conventional names $ spack install mpileaks@1.1.2 %gcc@4.7.3 cppflags="-O3 -floop-block" - # Cross-compile for a different architecture with arch= - $ spack install mpileaks@1.1.2 arch=bgqos_0 + # Cross-compile for a different micro-architecture with target= + $ spack install mpileaks@1.1.2 target=icelake Users can specify as many or few options as they care about. Spack will fill in the unspecified values with sensible defaults. The two listed diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index 7b908465f5..26deb1cef5 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -712,8 +712,9 @@ an OpenMPI installed in /opt/local, one would use: packages: openmpi: - paths: - openmpi@1.10.1: /opt/local + externals: + - spec: openmpi@1.10.1 + prefix: /opt/local buildable: False In general, Spack is easier to use and more reliable if it builds all of @@ -775,8 +776,9 @@ Then add the following to ``~/.spack/packages.yaml``: packages: openssl: - paths: - openssl@1.0.2g: /usr + externals: + - spec: openssl@1.0.2g + prefix: /usr buildable: False @@ -791,8 +793,9 @@ to add the following to ``packages.yaml``: packages: netlib-lapack: - paths: - netlib-lapack@3.6.1: /usr + externals: + - spec: netlib-lapack@3.6.1 + prefix: /usr buildable: False all: providers: @@ -1181,9 +1184,13 @@ Here's an example of an external configuration for cray modules: packages: mpich: - modules: - mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10: cray-mpich - mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10: cray-mpich + externals: + - spec: "mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10" + modules: + - cray-mpich + - spec: "mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10" + modules: + - cray-mpich all: providers: mpi: [mpich] @@ -1195,7 +1202,7 @@ via module load. .. note:: - For Cray-provided packages, it is best to use ``modules:`` instead of ``paths:`` + For Cray-provided packages, it is best to use ``modules:`` instead of ``prefix:`` in ``packages.yaml``, because the Cray Programming Environment heavily relies on modules (e.g., loading the ``cray-mpich`` module adds MPI libraries to the compiler wrapper link line). @@ -1211,19 +1218,31 @@ Here is an example of a full packages.yaml used at NERSC packages: mpich: - modules: - mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-mpich - mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge: cray-mpich + externals: + - spec: "mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge" + modules: + - cray-mpich + - spec: "mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge" + modules: + - cray-mpich buildable: False netcdf: - modules: - netcdf@4.3.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-netcdf - netcdf@4.3.3.1%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-netcdf + externals: + - spec: "netcdf@4.3.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge" + modules: + - cray-netcdf + - spec: "netcdf@4.3.3.1%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge" + modules: + - cray-netcdf buildable: False hdf5: - modules: - hdf5@1.8.14%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-hdf5 - hdf5@1.8.14%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-hdf5 + externals: + - spec: "hdf5@1.8.14%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge" + modules: + - cray-hdf5 + - spec: "hdf5@1.8.14%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge" + modules: + - cray-hdf5 buildable: False all: compiler: [gcc@5.2.0, intel@16.0.0.109] @@ -1247,6 +1266,6 @@ environment variables may be propagated into containers that are not using the Cray programming environment. To ensure that Spack does not autodetect the Cray programming -environment, unset the environment variable ``CRAYPE_VERSION``. This +environment, unset the environment variable ``MODULEPATH``. This will cause Spack to treat a linux container on a Cray system as a base linux distro. diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index d3a888b1fc..b1c55de22c 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -4054,21 +4054,223 @@ File functions Making a package discoverable with ``spack external find`` ---------------------------------------------------------- -To make a package discoverable with -:ref:`spack external find <cmd-spack-external-find>` you must -define one or more executables associated with the package and must -implement a method to generate a Spec when given an executable. +The simplest way to make a package discoverable with +:ref:`spack external find <cmd-spack-external-find>` is to: -The executables are specified as a package level ``executables`` -attribute which is a list of strings (see example below); each string -is treated as a regular expression (e.g. 'gcc' would match 'gcc', 'gcc-8.3', -'my-weird-gcc', etc.). +1. Define the executables associated with the package +2. Implement a method to determine the versions of these executables -The method ``determine_spec_details`` has the following signature: +^^^^^^^^^^^^^^^^^ +Minimal detection +^^^^^^^^^^^^^^^^^ + +The first step is fairly simple, as it requires only to +specify a package level ``executables`` attribute: + +.. code-block:: python + + class Foo(Package): + # Each string provided here is treated as a regular expression, and + # would match for example 'foo', 'foobar', and 'bazfoo'. + executables = ['foo'] + +This attribute must be a list of strings. Each string is a regular +expression (e.g. 'gcc' would match 'gcc', 'gcc-8.3', 'my-weird-gcc', etc.) to +determine a set of system executables that might be part or this package. Note +that to match only executables named 'gcc' the regular expression ``'^gcc$'`` +must be used. + +Finally to determine the version of each executable the ``determine_version`` +method must be implemented: + +.. code-block:: python + + @classmethod + def determine_version(cls, exe): + """Return either the version of the executable passed as argument + or ``None`` if the version cannot be determined. + + Args: + exe (str): absolute path to the executable being examined + """ + +This method receives as input the path to a single executable and must return +as output its version as a string; if the user cannot determine the version +or determines that the executable is not an instance of the package, they can +return None and the exe will be discarded as a candidate. +Implementing the two steps above is mandatory, and gives the package the +basic ability to detect if a spec is present on the system at a given version. + +.. note:: + Any executable for which the ``determine_version`` method returns ``None`` + will be discarded and won't appear in later stages of the workflow described below. + +^^^^^^^^^^^^^^^^^^^^^^^^ +Additional functionality +^^^^^^^^^^^^^^^^^^^^^^^^ + +Besides the two mandatory steps described above, there are also optional +methods that can be implemented to either increase the amount of details +being detected or improve the robustness of the detection logic in a package. + +"""""""""""""""""""""""""""""" +Variants and custom attributes +"""""""""""""""""""""""""""""" + +The ``determine_variants`` method can be optionally implemented in a package +to detect additional details of the spec: + +.. code-block:: python + + @classmethod + def determine_variants(cls, exes, version_str): + """Return either a variant string, a tuple of a variant string + and a dictionary of extra attributes that will be recorded in + packages.yaml or a list of those items. + + Args: + exes (list of str): list of executables (absolute paths) that + live in the same prefix and share the same version + version_str (str): version associated with the list of + executables, as detected by ``determine_version`` + """ + +This method takes as input a list of executables that live in the same prefix and +share the same version string, and returns either: + +1. A variant string +2. A tuple of a variant string and a dictionary of extra attributes +3. A list of items matching either 1 or 2 (if multiple specs are detected + from the set of executables) + +If extra attributes are returned, they will be recorded in ``packages.yaml`` +and be available for later reuse. As an example, the ``gcc`` package will record +by default the different compilers found and an entry in ``packages.yaml`` +would look like: + +.. code-block:: yaml + + packages: + gcc: + externals: + - spec: 'gcc@9.0.1 languages=c,c++,fortran' + prefix: /usr + extra_attributes: + compilers: + c: /usr/bin/x86_64-linux-gnu-gcc-9 + c++: /usr/bin/x86_64-linux-gnu-g++-9 + fortran: /usr/bin/x86_64-linux-gnu-gfortran-9 + +This allows us, for instance, to keep track of executables that would be named +differently if built by Spack (e.g. ``x86_64-linux-gnu-gcc-9`` +instead of just ``gcc``). + +.. TODO: we need to gather some more experience on overriding 'prefix' + and other special keywords in extra attributes, but as soon as we are + confident that this is the way to go we should document the process. + See https://github.com/spack/spack/pull/16526#issuecomment-653783204 + +""""""""""""""""""""""""""" +Filter matching executables +""""""""""""""""""""""""""" + +Sometimes defining the appropriate regex for the ``executables`` +attribute might prove to be difficult, especially if one has to +deal with corner cases or exclude "red herrings". To help keeping +the regular expressions as simple as possible, each package can +optionally implement a ``filter_executables`` method: + +.. code-block:: python + + @classmethod + def filter_detected_exes(cls, prefix, exes_in_prefix): + """Return a filtered list of the executables in prefix""" + +which takes as input a prefix and a list of matching executables and +returns a filtered list of said executables. + +Using this method has the advantage of allowing custom logic for +filtering, and does not restrict the user to regular expressions +only. Consider the case of detecting the GNU C++ compiler. If we +try to search for executables that match ``g++``, that would have +the unwanted side effect of selecting also ``clang++`` - which is +a C++ compiler provided by another package - if present on the system. +Trying to select executables that contain ``g++`` but not ``clang`` +would be quite complicated to do using regex only. Employing the +``filter_detected_exes`` method it becomes: + +.. code-block:: python + + class Gcc(Package): + executables = ['g++'] + + def filter_detected_exes(cls, prefix, exes_in_prefix): + return [x for x in exes_in_prefix if 'clang' not in x] + +Another possibility that this method opens is to apply certain +filtering logic when specific conditions are met (e.g. take some +decisions on an OS and not on another). + +^^^^^^^^^^^^^^^^^^ +Validate detection +^^^^^^^^^^^^^^^^^^ + +To increase detection robustness, packagers may also implement a method +to validate the detected Spec objects: + +.. code-block:: python + + @classmethod + def validate_detected_spec(cls, spec, extra_attributes): + """Validate a detected spec. Raise an exception if validation fails.""" + +This method receives a detected spec along with its extra attributes and can be +used to check that certain conditions are met by the spec. Packagers can either +use assertions or raise an ``InvalidSpecDetected`` exception when the check fails. +In case the conditions are not honored the spec will be discarded and any message +associated with the assertion or the exception will be logged as the reason for +discarding it. + +As an example, a package that wants to check that the ``compilers`` attribute is +in the extra attributes can implement this method like this: + +.. code-block:: python + + @classmethod + def validate_detected_spec(cls, spec, extra_attributes): + """Check that 'compilers' is in the extra attributes.""" + msg = ('the extra attribute "compilers" must be set for ' + 'the detected spec "{0}"'.format(spec)) + assert 'compilers' in extra_attributes, msg + +or like this: + +.. code-block:: python + + @classmethod + def validate_detected_spec(cls, spec, extra_attributes): + """Check that 'compilers' is in the extra attributes.""" + if 'compilers' not in extra_attributes: + msg = ('the extra attribute "compilers" must be set for ' + 'the detected spec "{0}"'.format(spec)) + raise InvalidSpecDetected(msg) + +.. _determine_spec_details: + +^^^^^^^^^^^^^^^^^^^^^^^^^ +Custom detection workflow +^^^^^^^^^^^^^^^^^^^^^^^^^ + +In the rare case when the mechanisms described so far don't fit the +detection of a package, the implementation of all the methods above +can be disregarded and instead a custom ``determine_spec_details`` +method can be implemented directly in the package class (note that +the definition of the ``executables`` attribute is still required): .. code-block:: python - def determine_spec_details(prefix, exes_in_prefix): + @classmethod + def determine_spec_details(cls, prefix, exes_in_prefix): # exes_in_prefix = a set of paths, each path is an executable # prefix = a prefix that is common to each path in exes_in_prefix @@ -4076,14 +4278,13 @@ The method ``determine_spec_details`` has the following signature: # the package. Return one or more Specs for each instance of the # package which is thought to be installed in the provided prefix -``determine_spec_details`` takes as parameters a set of discovered -executables (which match those specified by the user) as well as a -common prefix shared by all of those executables. The function must -return one or more Specs associated with the executables (it can also -return ``None`` to indicate that no provided executables are associated -with the package). +This method takes as input a set of discovered executables (which match +those specified by the user) as well as a common prefix shared by all +of those executables. The function must return one or more :py:class:`spack.spec.Spec` associated +with the executables (it can also return ``None`` to indicate that no +provided executables are associated with the package). -Say for example we have a package called ``foo-package`` which +As an example, consider a made-up package called ``foo-package`` which builds an executable called ``foo``. ``FooPackage`` would appear as follows: @@ -4107,10 +4308,12 @@ follows: return # This implementation is lazy and only checks the first candidate exe_path = candidates[0] - exe = spack.util.executable.Executable(exe_path) - output = exe('--version') + exe = Executable(exe_path) + output = exe('--version', output=str, error=str) version_str = ... # parse output for version string - return Spec('foo-package@{0}'.format(version_str)) + return Spec.from_detection( + 'foo-package@{0}'.format(version_str) + ) .. _package-lifecycle: diff --git a/lib/spack/docs/pipelines.rst b/lib/spack/docs/pipelines.rst index 34ff9cfc6d..342024d94c 100644 --- a/lib/spack/docs/pipelines.rst +++ b/lib/spack/docs/pipelines.rst @@ -82,9 +82,9 @@ or Amazon Elastic Kubernetes Service (`EKS <https://aws.amazon.com/eks>`_), thou topics are outside the scope of this document. Spack's pipelines are now making use of the -`trigger <https://docs.gitlab.com/12.9/ee/ci/yaml/README.html#trigger>` syntax to run +`trigger <https://docs.gitlab.com/12.9/ee/ci/yaml/README.html#trigger>`_ syntax to run dynamically generated -`child pipelines <https://docs.gitlab.com/12.9/ee/ci/parent_child_pipelines.html>`. +`child pipelines <https://docs.gitlab.com/12.9/ee/ci/parent_child_pipelines.html>`_. Note that the use of dynamic child pipelines requires running Gitlab version ``>= 12.9``. diff --git a/lib/spack/docs/workflows.rst b/lib/spack/docs/workflows.rst index 17ca695082..7deb5eff54 100644 --- a/lib/spack/docs/workflows.rst +++ b/lib/spack/docs/workflows.rst @@ -1405,11 +1405,12 @@ The main points that are implemented below: - export CXXFLAGS="-std=c++11" install: - - if ! which spack >/dev/null; then + - | + if ! which spack >/dev/null; then mkdir -p $SPACK_ROOT && git clone --depth 50 https://github.com/spack/spack.git $SPACK_ROOT && - echo -e "config:""\n build_jobs:"" 2" > $SPACK_ROOT/etc/spack/config.yaml ** - echo -e "packages:""\n all:""\n target:"" ['x86_64']" + printf "config:\n build_jobs: 2\n" > $SPACK_ROOT/etc/spack/config.yaml && + printf "packages:\n all:\n target: ['x86_64']\n" \ > $SPACK_ROOT/etc/spack/packages.yaml; fi - travis_wait spack install cmake@3.7.2~openssl~ncurses @@ -1544,8 +1545,9 @@ Avoid double-installing CUDA by adding, e.g. packages: cuda: - paths: - cuda@9.0.176%gcc@5.4.0 arch=linux-ubuntu16-x86_64: /usr/local/cuda + externals: + - spec: "cuda@9.0.176%gcc@5.4.0 arch=linux-ubuntu16-x86_64" + prefix: /usr/local/cuda buildable: False to your ``packages.yaml``. diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index bee6e1e43c..5e08273677 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -2,7 +2,6 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - import collections import errno import hashlib @@ -377,17 +376,17 @@ def install(src, dest): copy(src, dest, _permissions=True) -def resolve_link_target_relative_to_the_link(l): +def resolve_link_target_relative_to_the_link(link): """ os.path.isdir uses os.path.exists, which for links will check the existence of the link target. If the link target is relative to the link, we need to construct a pathname that is valid from our cwd (which may not be the same as the link's directory) """ - target = os.readlink(l) + target = os.readlink(link) if os.path.isabs(target): return target - link_dir = os.path.dirname(os.path.abspath(l)) + link_dir = os.path.dirname(os.path.abspath(link)) return os.path.join(link_dir, target) @@ -1571,6 +1570,19 @@ def can_access_dir(path): @memoized +def can_write_to_dir(path): + """Return True if the argument is a directory in which we can write. + + Args: + path: path to be tested + + Returns: + True if ``path`` is an writeable directory, else False + """ + return os.path.isdir(path) and os.access(path, os.R_OK | os.X_OK | os.W_OK) + + +@memoized def files_in(*search_paths): """Returns all the files in paths passed as arguments. @@ -1683,3 +1695,18 @@ def prefixes(path): pass return paths + + +def md5sum(file): + """Compute the MD5 sum of a file. + + Args: + file (str): file to be checksummed + + Returns: + MD5 sum of the file's content + """ + md5 = hashlib.md5() + with open(file, "rb") as f: + md5.update(f.read()) + return md5.digest() diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index aacef6d3db..e746ce096c 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -21,47 +21,48 @@ ignore_modules = [r'^\.#', '~$'] def index_by(objects, *funcs): """Create a hierarchy of dictionaries by splitting the supplied - set of objects on unique values of the supplied functions. - Values are used as keys. For example, suppose you have four - objects with attributes that look like this:: + set of objects on unique values of the supplied functions. - a = Spec(name="boost", compiler="gcc", arch="bgqos_0") - b = Spec(name="mrnet", compiler="intel", arch="chaos_5_x86_64_ib") - c = Spec(name="libelf", compiler="xlc", arch="bgqos_0") - d = Spec(name="libdwarf", compiler="intel", arch="chaos_5_x86_64_ib") + Values are used as keys. For example, suppose you have four + objects with attributes that look like this:: - list_of_specs = [a,b,c,d] - index1 = index_by(list_of_specs, lambda s: s.arch, - lambda s: s.compiler) - index2 = index_by(list_of_specs, lambda s: s.compiler) + a = Spec("boost %gcc target=skylake") + b = Spec("mrnet %intel target=zen2") + c = Spec("libelf %xlc target=skylake") + d = Spec("libdwarf %intel target=zen2") - ``index1`` now has two levels of dicts, with lists at the - leaves, like this:: + list_of_specs = [a,b,c,d] + index1 = index_by(list_of_specs, lambda s: str(s.target), + lambda s: s.compiler) + index2 = index_by(list_of_specs, lambda s: s.compiler) - { 'bgqos_0' : { 'gcc' : [a], 'xlc' : [c] }, - 'chaos_5_x86_64_ib' : { 'intel' : [b, d] } - } + ``index1`` now has two levels of dicts, with lists at the + leaves, like this:: - And ``index2`` is a single level dictionary of lists that looks - like this:: + { 'zen2' : { 'gcc' : [a], 'xlc' : [c] }, + 'skylake' : { 'intel' : [b, d] } + } - { 'gcc' : [a], - 'intel' : [b,d], - 'xlc' : [c] - } + And ``index2`` is a single level dictionary of lists that looks + like this:: - If any elemnts in funcs is a string, it is treated as the name - of an attribute, and acts like getattr(object, name). So - shorthand for the above two indexes would be:: + { 'gcc' : [a], + 'intel' : [b,d], + 'xlc' : [c] + } - index1 = index_by(list_of_specs, 'arch', 'compiler') - index2 = index_by(list_of_specs, 'compiler') + If any elements in funcs is a string, it is treated as the name + of an attribute, and acts like getattr(object, name). So + shorthand for the above two indexes would be:: - You can also index by tuples by passing tuples:: + index1 = index_by(list_of_specs, 'arch', 'compiler') + index2 = index_by(list_of_specs, 'compiler') - index1 = index_by(list_of_specs, ('arch', 'compiler')) + You can also index by tuples by passing tuples:: - Keys in the resulting dict will look like ('gcc', 'bgqos_0'). + index1 = index_by(list_of_specs, ('target', 'compiler')) + + Keys in the resulting dict will look like ('gcc', 'skylake'). """ if not funcs: return objects diff --git a/lib/spack/llnl/util/tty/pty.py b/lib/spack/llnl/util/tty/pty.py index ef5d40ea57..84c272a6e2 100644 --- a/lib/spack/llnl/util/tty/pty.py +++ b/lib/spack/llnl/util/tty/pty.py @@ -31,17 +31,17 @@ from spack.util.executable import which class ProcessController(object): """Wrapper around some fundamental process control operations. - This allows one process to drive another similar to the way a shell - would, by sending signals and I/O. + This allows one process (the controller) to drive another (the + minion) similar to the way a shell would, by sending signals and I/O. """ - def __init__(self, pid, master_fd, + def __init__(self, pid, controller_fd, timeout=1, sleep_time=1e-1, debug=False): """Create a controller to manipulate the process with id ``pid`` Args: pid (int): id of process to control - master_fd (int): master file descriptor attached to pid's stdin + controller_fd (int): controller fd attached to pid's stdin timeout (int): time in seconds for wait operations to time out (default 1 second) sleep_time (int): time to sleep after signals, to control the @@ -58,7 +58,7 @@ class ProcessController(object): """ self.pid = pid self.pgid = os.getpgid(pid) - self.master_fd = master_fd + self.controller_fd = controller_fd self.timeout = timeout self.sleep_time = sleep_time self.debug = debug @@ -67,8 +67,8 @@ class ProcessController(object): self.ps = which("ps", required=True) def get_canon_echo_attrs(self): - """Get echo and canon attributes of the terminal of master_fd.""" - cfg = termios.tcgetattr(self.master_fd) + """Get echo and canon attributes of the terminal of controller_fd.""" + cfg = termios.tcgetattr(self.controller_fd) return ( bool(cfg[3] & termios.ICANON), bool(cfg[3] & termios.ECHO), @@ -82,7 +82,7 @@ class ProcessController(object): ) def status(self): - """Print debug message with status info for the child.""" + """Print debug message with status info for the minion.""" if self.debug: canon, echo = self.get_canon_echo_attrs() sys.stderr.write("canon: %s, echo: %s\n" % ( @@ -94,12 +94,12 @@ class ProcessController(object): sys.stderr.write("\n") def input_on(self): - """True if keyboard input is enabled on the master_fd pty.""" + """True if keyboard input is enabled on the controller_fd pty.""" return self.get_canon_echo_attrs() == (False, False) def background(self): - """True if pgid is in a background pgroup of master_fd's terminal.""" - return self.pgid != os.tcgetpgrp(self.master_fd) + """True if pgid is in a background pgroup of controller_fd's tty.""" + return self.pgid != os.tcgetpgrp(self.controller_fd) def tstp(self): """Send SIGTSTP to the controlled process.""" @@ -115,18 +115,18 @@ class ProcessController(object): def fg(self): self.horizontal_line("fg") with log.ignore_signal(signal.SIGTTOU): - os.tcsetpgrp(self.master_fd, os.getpgid(self.pid)) + os.tcsetpgrp(self.controller_fd, os.getpgid(self.pid)) time.sleep(self.sleep_time) def bg(self): self.horizontal_line("bg") with log.ignore_signal(signal.SIGTTOU): - os.tcsetpgrp(self.master_fd, os.getpgrp()) + os.tcsetpgrp(self.controller_fd, os.getpgrp()) time.sleep(self.sleep_time) def write(self, byte_string): self.horizontal_line("write '%s'" % byte_string.decode("utf-8")) - os.write(self.master_fd, byte_string) + os.write(self.controller_fd, byte_string) def wait(self, condition): start = time.time() @@ -156,50 +156,51 @@ class ProcessController(object): class PseudoShell(object): - """Sets up master and child processes with a PTY. + """Sets up controller and minion processes with a PTY. You can create a ``PseudoShell`` if you want to test how some function responds to terminal input. This is a pseudo-shell from a - job control perspective; ``master_function`` and ``child_function`` - are set up with a pseudoterminal (pty) so that the master can drive - the child through process control signals and I/O. + job control perspective; ``controller_function`` and ``minion_function`` + are set up with a pseudoterminal (pty) so that the controller can drive + the minion through process control signals and I/O. The two functions should have signatures like this:: - def master_function(proc, ctl, **kwargs) - def child_function(**kwargs) + def controller_function(proc, ctl, **kwargs) + def minion_function(**kwargs) - ``master_function`` is spawned in its own process and passed three + ``controller_function`` is spawned in its own process and passed three arguments: proc - the ``multiprocessing.Process`` object representing the child + the ``multiprocessing.Process`` object representing the minion ctl - a ``ProcessController`` object tied to the child + a ``ProcessController`` object tied to the minion kwargs keyword arguments passed from ``PseudoShell.start()``. - ``child_function`` is only passed ``kwargs`` delegated from + ``minion_function`` is only passed ``kwargs`` delegated from ``PseudoShell.start()``. - The ``ctl.master_fd`` will have its ``master_fd`` connected to - ``sys.stdin`` in the child process. Both processes will share the + The ``ctl.controller_fd`` will have its ``controller_fd`` connected to + ``sys.stdin`` in the minion process. Both processes will share the same ``sys.stdout`` and ``sys.stderr`` as the process instantiating ``PseudoShell``. Here are the relationships between processes created:: ._________________________________________________________. - | Child Process | pid 2 - | - runs child_function | pgroup 2 + | Minion Process | pid 2 + | - runs minion_function | pgroup 2 |_________________________________________________________| session 1 ^ - | create process with master_fd connected to stdin + | create process with controller_fd connected to stdin | stdout, stderr are the same as caller ._________________________________________________________. - | Master Process | pid 1 - | - runs master_function | pgroup 1 - | - uses ProcessController and master_fd to control child | session 1 + | Controller Process | pid 1 + | - runs controller_function | pgroup 1 + | - uses ProcessController and controller_fd to | session 1 + | control minion | |_________________________________________________________| ^ | create process @@ -207,51 +208,51 @@ class PseudoShell(object): ._________________________________________________________. | Caller | pid 0 | - Constructs, starts, joins PseudoShell | pgroup 0 - | - provides master_function, child_function | session 0 + | - provides controller_function, minion_function | session 0 |_________________________________________________________| """ - def __init__(self, master_function, child_function): + def __init__(self, controller_function, minion_function): self.proc = None - self.master_function = master_function - self.child_function = child_function + self.controller_function = controller_function + self.minion_function = minion_function # these can be optionally set to change defaults self.controller_timeout = 1 self.sleep_time = 0 def start(self, **kwargs): - """Start the master and child processes. + """Start the controller and minion processes. Arguments: kwargs (dict): arbitrary keyword arguments that will be - passed to master and child functions + passed to controller and minion functions - The master process will create the child, then call - ``master_function``. The child process will call - ``child_function``. + The controller process will create the minion, then call + ``controller_function``. The minion process will call + ``minion_function``. """ self.proc = multiprocessing.Process( - target=PseudoShell._set_up_and_run_master_function, - args=(self.master_function, self.child_function, + target=PseudoShell._set_up_and_run_controller_function, + args=(self.controller_function, self.minion_function, self.controller_timeout, self.sleep_time), kwargs=kwargs, ) self.proc.start() def join(self): - """Wait for the child process to finish, and return its exit code.""" + """Wait for the minion process to finish, and return its exit code.""" self.proc.join() return self.proc.exitcode @staticmethod - def _set_up_and_run_child_function( - tty_name, stdout_fd, stderr_fd, ready, child_function, **kwargs): - """Child process wrapper for PseudoShell. + def _set_up_and_run_minion_function( + tty_name, stdout_fd, stderr_fd, ready, minion_function, **kwargs): + """Minion process wrapper for PseudoShell. Handles the mechanics of setting up a PTY, then calls - ``child_function``. + ``minion_function``. """ # new process group, like a command or pipeline launched by a shell @@ -266,45 +267,45 @@ class PseudoShell(object): if kwargs.get("debug"): sys.stderr.write( - "child: stdin.isatty(): %s\n" % sys.stdin.isatty()) + "minion: stdin.isatty(): %s\n" % sys.stdin.isatty()) # tell the parent that we're really running if kwargs.get("debug"): - sys.stderr.write("child: ready!\n") + sys.stderr.write("minion: ready!\n") ready.value = True try: - child_function(**kwargs) + minion_function(**kwargs) except BaseException: traceback.print_exc() @staticmethod - def _set_up_and_run_master_function( - master_function, child_function, controller_timeout, sleep_time, - **kwargs): - """Set up a pty, spawn a child process, and execute master_function. + def _set_up_and_run_controller_function( + controller_function, minion_function, controller_timeout, + sleep_time, **kwargs): + """Set up a pty, spawn a minion process, execute controller_function. Handles the mechanics of setting up a PTY, then calls - ``master_function``. + ``controller_function``. """ os.setsid() # new session; this process is the controller - master_fd, child_fd = os.openpty() - pty_name = os.ttyname(child_fd) + controller_fd, minion_fd = os.openpty() + pty_name = os.ttyname(minion_fd) # take controlling terminal pty_fd = os.open(pty_name, os.O_RDWR) os.close(pty_fd) ready = multiprocessing.Value('i', False) - child_process = multiprocessing.Process( - target=PseudoShell._set_up_and_run_child_function, + minion_process = multiprocessing.Process( + target=PseudoShell._set_up_and_run_minion_function, args=(pty_name, sys.stdout.fileno(), sys.stderr.fileno(), - ready, child_function), + ready, minion_function), kwargs=kwargs, ) - child_process.start() + minion_process.start() # wait for subprocess to be running and connected. while not ready.value: @@ -315,30 +316,31 @@ class PseudoShell(object): sys.stderr.write("pid: %d\n" % os.getpid()) sys.stderr.write("pgid: %d\n" % os.getpgrp()) sys.stderr.write("sid: %d\n" % os.getsid(0)) - sys.stderr.write("tcgetpgrp: %d\n" % os.tcgetpgrp(master_fd)) + sys.stderr.write("tcgetpgrp: %d\n" % os.tcgetpgrp(controller_fd)) sys.stderr.write("\n") - child_pgid = os.getpgid(child_process.pid) - sys.stderr.write("child pid: %d\n" % child_process.pid) - sys.stderr.write("child pgid: %d\n" % child_pgid) - sys.stderr.write("child sid: %d\n" % os.getsid(child_process.pid)) + minion_pgid = os.getpgid(minion_process.pid) + sys.stderr.write("minion pid: %d\n" % minion_process.pid) + sys.stderr.write("minion pgid: %d\n" % minion_pgid) + sys.stderr.write( + "minion sid: %d\n" % os.getsid(minion_process.pid)) sys.stderr.write("\n") sys.stderr.flush() - # set up master to ignore SIGTSTP, like a shell + # set up controller to ignore SIGTSTP, like a shell signal.signal(signal.SIGTSTP, signal.SIG_IGN) - # call the master function once the child is ready + # call the controller function once the minion is ready try: controller = ProcessController( - child_process.pid, master_fd, debug=kwargs.get("debug")) + minion_process.pid, controller_fd, debug=kwargs.get("debug")) controller.timeout = controller_timeout controller.sleep_time = sleep_time - error = master_function(child_process, controller, **kwargs) + error = controller_function(minion_process, controller, **kwargs) except BaseException: error = 1 traceback.print_exc() - child_process.join() + minion_process.join() - # return whether either the parent or child failed - return error or child_process.exitcode + # return whether either the parent or minion failed + return error or minion_process.exitcode diff --git a/lib/spack/spack/abi.py b/lib/spack/spack/abi.py index 9e1ef14551..a29a9eef3b 100644 --- a/lib/spack/spack/abi.py +++ b/lib/spack/spack/abi.py @@ -18,10 +18,13 @@ class ABI(object): """This class provides methods to test ABI compatibility between specs. The current implementation is rather rough and could be improved.""" - def architecture_compatible(self, parent, child): - """Return true if parent and child have ABI compatible targets.""" - return not parent.architecture or not child.architecture or \ - parent.architecture == child.architecture + def architecture_compatible(self, target, constraint): + """Return true if architecture of target spec is ABI compatible + to the architecture of constraint spec. If either the target + or constraint specs have no architecture, target is also defined + as architecture ABI compatible to constraint.""" + return not target.architecture or not constraint.architecture or \ + target.architecture.satisfies(constraint.architecture) @memoized def _gcc_get_libstdcxx_version(self, version): @@ -107,8 +110,8 @@ class ABI(object): return True return False - def compatible(self, parent, child, **kwargs): - """Returns true iff a parent and child spec are ABI compatible""" + def compatible(self, target, constraint, **kwargs): + """Returns true if target spec is ABI compatible to constraint spec""" loosematch = kwargs.get('loose', False) - return self.architecture_compatible(parent, child) and \ - self.compiler_compatible(parent, child, loose=loosematch) + return self.architecture_compatible(target, constraint) and \ + self.compiler_compatible(target, constraint, loose=loosematch) diff --git a/lib/spack/spack/architecture.py b/lib/spack/spack/architecture.py index a7c8062fad..975cb9e56d 100644 --- a/lib/spack/spack/architecture.py +++ b/lib/spack/spack/architecture.py @@ -6,7 +6,7 @@ """ This module contains all the elements that are required to create an architecture object. These include, the target processor, the operating system, -and the architecture platform (i.e. cray, darwin, linux, bgq, etc) classes. +and the architecture platform (i.e. cray, darwin, linux, etc) classes. On a multiple architecture machine, the architecture spec field can be set to build a package against any target and operating system that is present on the diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 7ef2126766..4a57dde77b 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -62,7 +62,7 @@ from spack.util.environment import ( from spack.util.environment import system_dirs from spack.error import NoLibrariesError, NoHeadersError from spack.util.executable import Executable -from spack.util.module_cmd import load_module, get_path_from_module, module +from spack.util.module_cmd import load_module, path_from_modules, module from spack.util.log_parse import parse_log_events, make_log_context @@ -642,7 +642,7 @@ def get_rpaths(pkg): # Second module is our compiler mod name. We use that to get rpaths from # module show output. if pkg.compiler.modules and len(pkg.compiler.modules) > 1: - rpaths.append(get_path_from_module(pkg.compiler.modules[1])) + rpaths.append(path_from_modules([pkg.compiler.modules[1]])) return list(dedupe(filter_system_paths(rpaths))) @@ -706,8 +706,9 @@ def load_external_modules(pkg): pkg (PackageBase): package to load deps for """ for dep in list(pkg.spec.traverse()): - if dep.external_module: - load_module(dep.external_module) + external_modules = dep.external_modules or [] + for external_module in external_modules: + load_module(external_module) def setup_package(pkg, dirty): diff --git a/lib/spack/spack/build_systems/cuda.py b/lib/spack/spack/build_systems/cuda.py index cbee710049..ef1b0266f8 100644 --- a/lib/spack/spack/build_systems/cuda.py +++ b/lib/spack/spack/build_systems/cuda.py @@ -12,8 +12,9 @@ import spack.variant class CudaPackage(PackageBase): """Auxiliary class which contains CUDA variant, dependencies and conflicts and is meant to unify and facilitate its usage. + + Maintainers: ax3l, svenevs """ - maintainers = ['ax3l', 'svenevs'] # https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list # https://developer.nvidia.com/cuda-gpus @@ -25,6 +26,7 @@ class CudaPackage(PackageBase): '50', '52', '53', '60', '61', '62', '70', '72', '75', + '80', ] # FIXME: keep cuda and cuda_arch separate to make usage easier until @@ -48,6 +50,7 @@ class CudaPackage(PackageBase): # CUDA version vs Architecture # https://en.wikipedia.org/wiki/CUDA#GPUs_supported + # https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#deprecated-features 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') @@ -58,8 +61,8 @@ class CudaPackage(PackageBase): 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@5.0:', when='cuda_arch=35') + depends_on('cuda@6.5:', when='cuda_arch=37') depends_on('cuda@6.0:', when='cuda_arch=50') depends_on('cuda@6.5:', when='cuda_arch=52') @@ -73,6 +76,8 @@ class CudaPackage(PackageBase): depends_on('cuda@9.0:', when='cuda_arch=72') depends_on('cuda@10.0:', when='cuda_arch=75') + depends_on('cuda@11.0:', when='cuda_arch=80') + # There are at least three cases to be aware of for compiler conflicts # 1. Linux x86_64 # 2. Linux ppc64le @@ -88,12 +93,15 @@ class CudaPackage(PackageBase): conflicts('%gcc@7:', when='+cuda ^cuda@:9.1' + arch_platform) conflicts('%gcc@8:', when='+cuda ^cuda@:10.0.130' + arch_platform) conflicts('%gcc@9:', when='+cuda ^cuda@:10.2.89' + arch_platform) + conflicts('%gcc@:4,10:', when='+cuda ^cuda@:11.0.2' + arch_platform) conflicts('%pgi@:14.8', when='+cuda ^cuda@:7.0.27' + arch_platform) conflicts('%pgi@:15.3,15.5:', when='+cuda ^cuda@7.5' + arch_platform) conflicts('%pgi@:16.2,16.0:16.3', when='+cuda ^cuda@8' + arch_platform) conflicts('%pgi@:15,18:', when='+cuda ^cuda@9.0:9.1' + arch_platform) - conflicts('%pgi@:16', when='+cuda ^cuda@9.2.88:10' + arch_platform) - conflicts('%pgi@:17', when='+cuda ^cuda@10.2.89' + arch_platform) + conflicts('%pgi@:16,19:', when='+cuda ^cuda@9.2.88:10' + arch_platform) + conflicts('%pgi@:17,20:', + when='+cuda ^cuda@10.1.105:10.2.89' + arch_platform) + conflicts('%pgi@:17,20.2:', when='+cuda ^cuda@11.0.2' + arch_platform) conflicts('%clang@:3.4', when='+cuda ^cuda@:7.5' + arch_platform) conflicts('%clang@:3.7,4:', when='+cuda ^cuda@8.0:9.0' + arch_platform) @@ -104,7 +112,8 @@ class CudaPackage(PackageBase): conflicts('%clang@:3.7,7.1:', when='+cuda ^cuda@10.1.105' + arch_platform) conflicts('%clang@:3.7,8.1:', when='+cuda ^cuda@10.1.105:10.1.243' + arch_platform) - conflicts('%clang@:3.2,9.0:', when='+cuda ^cuda@10.2.89' + arch_platform) + conflicts('%clang@:3.2,9:', when='+cuda ^cuda@10.2.89' + arch_platform) + conflicts('%clang@:5,10:', when='+cuda ^cuda@11.0.2' + arch_platform) # x86_64 vs. ppc64le differ according to NVidia docs # Linux ppc64le compiler conflicts from Table from the docs below: @@ -119,6 +128,8 @@ class CudaPackage(PackageBase): conflicts('%gcc@6:', when='+cuda ^cuda@:9' + arch_platform) conflicts('%gcc@8:', when='+cuda ^cuda@:10.0.130' + arch_platform) conflicts('%gcc@9:', when='+cuda ^cuda@:10.1.243' + arch_platform) + # officially, CUDA 11.0.2 only supports the system GCC 8.3 on ppc64le + conflicts('%gcc@:4,10:', when='+cuda ^cuda@:11.0.2' + arch_platform) conflicts('%pgi', when='+cuda ^cuda@:8' + arch_platform) conflicts('%pgi@:16', when='+cuda ^cuda@:9.1.185' + arch_platform) conflicts('%pgi@:17', when='+cuda ^cuda@:10' + arch_platform) @@ -128,6 +139,7 @@ class CudaPackage(PackageBase): conflicts('%clang@7:', when='+cuda ^cuda@10.0.130' + arch_platform) conflicts('%clang@7.1:', when='+cuda ^cuda@:10.1.105' + arch_platform) conflicts('%clang@8.1:', when='+cuda ^cuda@:10.2.89' + arch_platform) + conflicts('%clang@:5,10.0:', when='+cuda ^cuda@11.0.2' + arch_platform) # Intel is mostly relevant for x86_64 Linux, even though it also # exists for Mac OS X. No information prior to CUDA 3.2 or Intel 11.1 @@ -141,11 +153,13 @@ class CudaPackage(PackageBase): 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.0') + conflicts('%intel@19.1:', when='+cuda ^cuda@:10.1') + conflicts('%intel@19.2:', when='+cuda ^cuda@:11.0.2') # 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.2.89') + conflicts('%xl@:12,17:', when='+cuda ^cuda@:11.0.2') # Mac OS X # platform = ' platform=darwin' @@ -156,7 +170,7 @@ 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:') + conflicts('platform=darwin', when='+cuda ^cuda@11.0.2:') # Make sure cuda_arch can not be used without +cuda for value in cuda_arch_values: diff --git a/lib/spack/spack/cmd/checksum.py b/lib/spack/spack/cmd/checksum.py index 97e7833af0..188deb1149 100644 --- a/lib/spack/spack/cmd/checksum.py +++ b/lib/spack/spack/cmd/checksum.py @@ -65,7 +65,7 @@ def checksum(parser, args): version_lines = spack.stage.get_checksums_for_versions( url_dict, pkg.name, keep_stage=args.keep_stage, - batch=(args.batch or len(args.versions) > 0), + batch=(args.batch or len(args.versions) > 0 or len(url_dict) == 1), fetch_options=pkg.fetch_options) print() diff --git a/lib/spack/spack/cmd/config.py b/lib/spack/spack/cmd/config.py index 954d4e4585..e684364d8a 100644 --- a/lib/spack/spack/cmd/config.py +++ b/lib/spack/spack/cmd/config.py @@ -2,16 +2,20 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - from __future__ import print_function + +import collections import os import re +import shutil +import llnl.util.filesystem as fs import llnl.util.tty as tty - import spack.config +import spack.cmd.common.arguments import spack.schema.env import spack.environment as ev +import spack.schema.packages import spack.util.spack_yaml as syaml from spack.util.editor import editor @@ -80,6 +84,19 @@ def setup_parser(subparser): # Make the add parser available later setup_parser.add_parser = add_parser + update = sp.add_parser( + 'update', help='update configuration files to the latest format' + ) + spack.cmd.common.arguments.add_common_arguments(update, ['yes_to_all']) + update.add_argument('section', help='section to update') + + revert = sp.add_parser( + 'revert', + help='revert configuration files to their state before update' + ) + spack.cmd.common.arguments.add_common_arguments(revert, ['yes_to_all']) + revert.add_argument('section', help='section to update') + def _get_scope_and_section(args): """Extract config scope and section from arguments.""" @@ -275,12 +292,164 @@ def config_remove(args): set_config(args, path, existing, scope) +def _can_update_config_file(scope_dir, cfg_file): + dir_ok = fs.can_write_to_dir(scope_dir) + cfg_ok = fs.can_access(cfg_file) + return dir_ok and cfg_ok + + +def config_update(args): + # Read the configuration files + spack.config.config.get_config(args.section, scope=args.scope) + updates = spack.config.config.format_updates[args.section] + + cannot_overwrite, skip_system_scope = [], False + for scope in updates: + cfg_file = spack.config.config.get_config_filename( + scope.name, args.section + ) + scope_dir = scope.path + can_be_updated = _can_update_config_file(scope_dir, cfg_file) + if not can_be_updated: + if scope.name == 'system': + skip_system_scope = True + msg = ('Not enough permissions to write to "system" scope. ' + 'Skipping update at that location [cfg={0}]') + tty.warn(msg.format(cfg_file)) + continue + cannot_overwrite.append((scope, cfg_file)) + + if cannot_overwrite: + msg = 'Detected permission issues with the following scopes:\n\n' + for scope, cfg_file in cannot_overwrite: + msg += '\t[scope={0}, cfg={1}]\n'.format(scope.name, cfg_file) + msg += ('\nEither ensure that you have sufficient permissions to ' + 'modify these files or do not include these scopes in the ' + 'update.') + tty.die(msg) + + if skip_system_scope: + updates = [x for x in updates if x.name != 'system'] + + # Report if there are no updates to be done + if not updates: + msg = 'No updates needed for "{0}" section.' + tty.msg(msg.format(args.section)) + return + + proceed = True + if not args.yes_to_all: + msg = ('The following configuration files are going to be updated to' + ' the latest schema format:\n\n') + for scope in updates: + cfg_file = spack.config.config.get_config_filename( + scope.name, args.section + ) + msg += '\t[scope={0}, file={1}]\n'.format(scope.name, cfg_file) + msg += ('\nIf the configuration files are updated, versions of Spack ' + 'that are older than this version may not be able to read ' + 'them. Spack stores backups of the updated files which can ' + 'be retrieved with "spack config revert"') + tty.msg(msg) + proceed = tty.get_yes_or_no('Do you want to proceed?', default=False) + + if not proceed: + tty.die('Operation aborted.') + + # Get a function to update the format + update_fn = spack.config.ensure_latest_format_fn(args.section) + for scope in updates: + cfg_file = spack.config.config.get_config_filename( + scope.name, args.section + ) + with open(cfg_file) as f: + data = syaml.load(f) or {} + data = data.pop(args.section, {}) + update_fn(data) + + # Make a backup copy and rewrite the file + bkp_file = cfg_file + '.bkp' + shutil.copy(cfg_file, bkp_file) + spack.config.config.update_config( + args.section, data, scope=scope.name, force=True + ) + msg = 'File "{0}" updated [backup={1}]' + tty.msg(msg.format(cfg_file, bkp_file)) + + +def _can_revert_update(scope_dir, cfg_file, bkp_file): + dir_ok = fs.can_write_to_dir(scope_dir) + cfg_ok = not os.path.exists(cfg_file) or fs.can_access(cfg_file) + bkp_ok = fs.can_access(bkp_file) + return dir_ok and cfg_ok and bkp_ok + + +def config_revert(args): + scopes = [args.scope] if args.scope else [ + x.name for x in spack.config.config.file_scopes + ] + + # Search for backup files in the configuration scopes + Entry = collections.namedtuple('Entry', ['scope', 'cfg', 'bkp']) + to_be_restored, cannot_overwrite = [], [] + for scope in scopes: + cfg_file = spack.config.config.get_config_filename(scope, args.section) + bkp_file = cfg_file + '.bkp' + + # If the backup files doesn't exist move to the next scope + if not os.path.exists(bkp_file): + continue + + # If it exists and we don't have write access in this scope + # keep track of it and report a comprehensive error later + entry = Entry(scope, cfg_file, bkp_file) + scope_dir = os.path.dirname(bkp_file) + can_be_reverted = _can_revert_update(scope_dir, cfg_file, bkp_file) + if not can_be_reverted: + cannot_overwrite.append(entry) + continue + + to_be_restored.append(entry) + + # Report errors if we can't revert a configuration + if cannot_overwrite: + msg = 'Detected permission issues with the following scopes:\n\n' + for e in cannot_overwrite: + msg += '\t[scope={0.scope}, cfg={0.cfg}, bkp={0.bkp}]\n'.format(e) + msg += ('\nEither ensure to have the right permissions before retrying' + ' or be more specific on the scope to revert.') + tty.die(msg) + + proceed = True + if not args.yes_to_all: + msg = ('The following scopes will be restored from the corresponding' + ' backup files:\n') + for entry in to_be_restored: + msg += '\t[scope={0.scope}, bkp={0.bkp}]\n'.format(entry) + msg += 'This operation cannot be undone.' + tty.msg(msg) + proceed = tty.get_yes_or_no('Do you want to proceed?', default=False) + + if not proceed: + tty.die('Operation aborted.') + + for _, cfg_file, bkp_file in to_be_restored: + shutil.copy(bkp_file, cfg_file) + os.unlink(bkp_file) + msg = 'File "{0}" reverted to old state' + tty.msg(msg.format(cfg_file)) + + def config(parser, args): - action = {'get': config_get, - 'blame': config_blame, - 'edit': config_edit, - 'list': config_list, - 'add': config_add, - 'rm': config_remove, - 'remove': config_remove} + action = { + 'get': config_get, + 'blame': config_blame, + 'edit': config_edit, + 'list': config_list, + 'add': config_add, + 'rm': config_remove, + 'remove': config_remove, + 'update': config_update, + 'revert': config_revert + } action[args.config_command](args) diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py index 7d12dc98a7..48326868ae 100644 --- a/lib/spack/spack/cmd/create.py +++ b/lib/spack/spack/cmd/create.py @@ -445,6 +445,9 @@ def setup_parser(subparser): subparser.add_argument( '--skip-editor', action='store_true', help="skip the edit session for the package (e.g., automation)") + subparser.add_argument( + '-b', '--batch', action='store_true', + help="don't ask which versions to checksum") class BuildSystemGuesser: @@ -511,7 +514,7 @@ class BuildSystemGuesser: # Determine the build system based on the files contained # in the archive. for pattern, bs in clues: - if any(re.search(pattern, l) for l in lines): + if any(re.search(pattern, line) for line in lines): self.build_system = bs break @@ -629,7 +632,8 @@ def get_versions(args, name): versions = spack.stage.get_checksums_for_versions( url_dict, name, first_stage_function=guesser, - keep_stage=args.keep_stage, batch=True) + keep_stage=args.keep_stage, + batch=(args.batch or len(url_dict) == 1)) else: versions = unhashed_versions diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index e3c45cc27b..7bd8052528 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import shutil import sys from collections import namedtuple @@ -14,6 +15,7 @@ from llnl.util.tty.color import colorize import spack.config import spack.schema.env +import spack.cmd.common.arguments import spack.cmd.install import spack.cmd.uninstall import spack.cmd.modules @@ -37,6 +39,8 @@ subcommands = [ ['status', 'st'], 'loads', 'view', + 'update', + 'revert' ] @@ -394,6 +398,80 @@ def env_loads(args): print(' source %s' % loads_file) +def env_update_setup_parser(subparser): + """update environments to the latest format""" + subparser.add_argument( + metavar='env', dest='env', + help='name or directory of the environment to activate' + ) + spack.cmd.common.arguments.add_common_arguments(subparser, ['yes_to_all']) + + +def env_update(args): + manifest_file = ev.manifest_file(args.env) + backup_file = manifest_file + ".bkp" + needs_update = not ev.is_latest_format(manifest_file) + + if not needs_update: + tty.msg('No update needed for the environment "{0}"'.format(args.env)) + return + + proceed = True + if not args.yes_to_all: + msg = ('The environment "{0}" is going to be updated to the latest ' + 'schema format.\nIf the environment is updated, versions of ' + 'Spack that are older than this version may not be able to ' + 'read it. Spack stores backups of the updated environment ' + 'which can be retrieved with "spack env revert"') + tty.msg(msg.format(args.env)) + proceed = tty.get_yes_or_no('Do you want to proceed?', default=False) + + if not proceed: + tty.die('Operation aborted.') + + ev.update_yaml(manifest_file, backup_file=backup_file) + msg = 'Environment "{0}" has been updated [backup={1}]' + tty.msg(msg.format(args.env, backup_file)) + + +def env_revert_setup_parser(subparser): + """restore environments to their state before update""" + subparser.add_argument( + metavar='env', dest='env', + help='name or directory of the environment to activate' + ) + spack.cmd.common.arguments.add_common_arguments(subparser, ['yes_to_all']) + + +def env_revert(args): + manifest_file = ev.manifest_file(args.env) + backup_file = manifest_file + ".bkp" + + # Check that both the spack.yaml and the backup exist, the inform user + # on what is going to happen and ask for confirmation + if not os.path.exists(manifest_file): + msg = 'cannot fine the manifest file of the environment [file={0}]' + tty.die(msg.format(manifest_file)) + if not os.path.exists(backup_file): + msg = 'cannot find the old manifest file to be restored [file={0}]' + tty.die(msg.format(backup_file)) + + proceed = True + if not args.yes_to_all: + msg = ('Spack is going to overwrite the current manifest file' + ' with a backup copy [manifest={0}, backup={1}]') + tty.msg(msg.format(manifest_file, backup_file)) + proceed = tty.get_yes_or_no('Do you want to proceed?', default=False) + + if not proceed: + tty.die('Operation aborted.') + + shutil.copy(backup_file, manifest_file) + os.remove(backup_file) + msg = 'Environment "{0}" reverted to old state' + tty.msg(msg.format(manifest_file)) + + #: Dictionary mapping subcommand names and aliases to functions subcommand_functions = {} diff --git a/lib/spack/spack/cmd/external.py b/lib/spack/spack/cmd/external.py index afdd40e2a0..5dcd6ebbd1 100644 --- a/lib/spack/spack/cmd/external.py +++ b/lib/spack/spack/cmd/external.py @@ -2,22 +2,24 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - from __future__ import print_function -from collections import defaultdict, namedtuple + import argparse import os import re -import six +import sys +from collections import defaultdict, namedtuple +import llnl.util.filesystem +import llnl.util.tty as tty +import llnl.util.tty.colify as colify +import six import spack import spack.error -import llnl.util.tty as tty -import spack.util.spack_yaml as syaml import spack.util.environment -import llnl.util.filesystem +import spack.util.spack_yaml as syaml -description = "add external packages to Spack configuration" +description = "manage external packages in Spack configuration" section = "config" level = "short" @@ -26,12 +28,18 @@ def setup_parser(subparser): sp = subparser.add_subparsers( metavar='SUBCOMMAND', dest='external_command') - find_parser = sp.add_parser('find', help=external_find.__doc__) + find_parser = sp.add_parser( + 'find', help='add external packages to packages.yaml' + ) find_parser.add_argument( '--not-buildable', action='store_true', default=False, help="packages with detected externals won't be built with Spack") find_parser.add_argument('packages', nargs=argparse.REMAINDER) + sp.add_parser( + 'list', help='list detectable packages, by repository and name' + ) + def is_executable(path): return os.path.isfile(path) and os.access(path, os.X_OK) @@ -74,19 +82,37 @@ def _generate_pkg_config(external_pkg_entries): This does not generate the entire packages.yaml. For example, given some external entries for the CMake package, this could return:: - { 'paths': { - 'cmake@3.17.1': '/opt/cmake-3.17.1/', - 'cmake@3.16.5': '/opt/cmake-3.16.5/' - } + { + 'externals': [{ + 'spec': 'cmake@3.17.1', + 'prefix': '/opt/cmake-3.17.1/' + }, { + 'spec': 'cmake@3.16.5', + 'prefix': '/opt/cmake-3.16.5/' + }] } """ - paths_dict = syaml.syaml_dict() + + pkg_dict = syaml.syaml_dict() + pkg_dict['externals'] = [] for e in external_pkg_entries: if not _spec_is_valid(e.spec): continue - paths_dict[str(e.spec)] = e.base_dir - pkg_dict = syaml.syaml_dict() - pkg_dict['paths'] = paths_dict + + external_items = [('spec', str(e.spec)), ('prefix', e.base_dir)] + if e.spec.external_modules: + external_items.append(('modules', e.spec.external_modules)) + + if e.spec.extra_attributes: + external_items.append( + ('extra_attributes', + syaml.syaml_dict(e.spec.extra_attributes.items())) + ) + + # external_items.extend(e.spec.extra_attributes.items()) + pkg_dict['externals'].append( + syaml.syaml_dict(external_items) + ) return pkg_dict @@ -234,7 +260,7 @@ def _get_external_packages(packages_to_check, system_path_to_exe=None): if not specs: tty.debug( - 'The following executables in {0} were decidedly not' + 'The following executables in {0} were decidedly not ' 'part of the package {1}: {2}' .format(prefix, pkg.name, ', '.join(exes_in_prefix)) ) @@ -259,13 +285,33 @@ def _get_external_packages(packages_to_check, system_path_to_exe=None): else: resolved_specs[spec] = prefix + try: + spec.validate_detection() + except Exception as e: + msg = ('"{0}" has been detected on the system but will ' + 'not be added to packages.yaml [reason={1}]') + tty.warn(msg.format(spec, str(e))) + continue + + if spec.external_path: + pkg_prefix = spec.external_path + pkg_to_entries[pkg.name].append( ExternalPackageEntry(spec=spec, base_dir=pkg_prefix)) return pkg_to_entries -def external(parser, args): - action = {'find': external_find} +def external_list(args): + # Trigger a read of all packages, might take a long time. + list(spack.repo.path.all_packages()) + # Print all the detectable packages + tty.msg("Detectable packages per repository") + for namespace, pkgs in sorted(spack.package.detectable_packages.items()): + print("Repository:", namespace) + colify.colify(pkgs, indent=4, output=sys.stdout) + +def external(parser, args): + action = {'find': external_find, 'list': external_list} action[args.external_command](args) diff --git a/lib/spack/spack/cmd/help.py b/lib/spack/spack/cmd/help.py index 3af82312df..d730d4f0fe 100644 --- a/lib/spack/spack/cmd/help.py +++ b/lib/spack/spack/cmd/help.py @@ -35,6 +35,10 @@ spec expression syntax: @g{%compiler@version} build with specific compiler version @g{%compiler@min:max} specific version range (see above) + compiler flags: + @g{cflags="flags"} cppflags, cflags, cxxflags, + fflags, ldflags, ldlibs + variants: @B{+variant} enable <variant> @r{-variant} or @r{~variant} disable <variant> @@ -42,7 +46,7 @@ spec expression syntax: @B{variant=value1,value2,value3} set multi-value <variant> values architecture variants: - @m{platform=platform} linux, darwin, cray, bgq, etc. + @m{platform=platform} linux, darwin, cray, etc. @m{os=operating_system} specific <operating_system> @m{target=target} specific <target> processor @m{arch=platform-os-target} shortcut for all three above diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index fd03f09e57..316ec1c35a 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -34,7 +34,7 @@ for further documentation regarding the spec syntax, see: const='yaml', help='print concrete spec as YAML') subparser.add_argument( '-j', '--json', action='store_const', dest='format', default=None, - const='json', help='print concrete spec as YAML') + const='json', help='print concrete spec as JSON') subparser.add_argument( '-c', '--cover', action='store', default='nodes', choices=['nodes', 'edges', 'paths'], diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index c59c654803..f1a9263c76 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -201,7 +201,7 @@ class Compiler(object): fc_names = [] # Optional prefix regexes for searching for this type of compiler. - # Prefixes are sometimes used for toolchains, e.g. 'powerpc-bgq-linux-' + # Prefixes are sometimes used for toolchains prefixes = [] # Optional suffix regexes for searching for this type of compiler. diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py index 36291a8f63..c11bafe47d 100644 --- a/lib/spack/spack/compilers/__init__.py +++ b/lib/spack/spack/compilers/__init__.py @@ -576,9 +576,7 @@ def arguments_to_detect_version_fn(operating_system, paths): ) command_arguments.append(detect_version_args) - # Reverse it here so that the dict creation (last insert wins) - # does not spoil the intended precedence. - return reversed(command_arguments) + return command_arguments fn = getattr( operating_system, 'arguments_to_detect_version_fn', _default diff --git a/lib/spack/spack/compilers/fj.py b/lib/spack/spack/compilers/fj.py index 3747d49d9b..c2cc66e110 100644 --- a/lib/spack/spack/compilers/fj.py +++ b/lib/spack/spack/compilers/fj.py @@ -26,7 +26,7 @@ class Fj(spack.compiler.Compiler): 'fc': 'fj/frt'} version_argument = '--version' - version_regex = r'\((?:FCC|FRT)\) ([\d.]+)' + version_regex = r'\((?:FCC|FRT)\) ([a-z\d.]+)' required_libs = ['libfj90i', 'libfj90f', 'libfjsrcinfo'] diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index a3d8101cad..425fcec8ee 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -30,6 +30,7 @@ schemas are in submodules of :py:mod:`spack.schema`. """ +import collections import copy import os import re @@ -352,6 +353,7 @@ class Configuration(object): self.scopes = OrderedDict() for scope in scopes: self.push_scope(scope) + self.format_updates = collections.defaultdict(list) def push_scope(self, scope): """Add a higher precedence scope to the Configuration.""" @@ -440,7 +442,7 @@ class Configuration(object): for scope in self.scopes.values(): scope.clear() - def update_config(self, section, update_data, scope=None): + def update_config(self, section, update_data, scope=None, force=False): """Update the configuration file for a particular scope. Overwrites contents of a section in a scope with update_data, @@ -449,7 +451,26 @@ class Configuration(object): update_data should have the top-level section name stripped off (it will be re-added). Data itself can be a list, dict, or any other yaml-ish structure. + + Configuration scopes that are still written in an old schema + format will fail to update unless ``force`` is True. + + Args: + section (str): section of the configuration to be updated + update_data (dict): data to be used for the update + scope (str): scope to be updated + force (str): force the update """ + if self.format_updates.get(section) and not force: + msg = ('The "{0}" section of the configuration needs to be written' + ' to disk, but is currently using a deprecated format. ' + 'Please update it using:\n\n' + '\tspack config [--scope=<scope] update {0}\n\n' + 'Note that previous versions of Spack will not be able to ' + 'use the updated configuration.') + msg = msg.format(section) + raise RuntimeError(msg) + _validate_section_name(section) # validate section name scope = self._validate_scope(scope) # get ConfigScope object @@ -514,6 +535,15 @@ class Configuration(object): if section not in data: continue + # We might be reading configuration files in an old format, + # thus read data and update it in memory if need be. + changed = _update_in_memory(data, section) + if changed: + self.format_updates[section].append(scope) + msg = ('OUTDATED CONFIGURATION FILE ' + '[section={0}, scope={1}, dir={2}]') + tty.debug(msg.format(section, scope.name, scope.path)) + merged_section = merge_yaml(merged_section, data) # no config files -- empty config. @@ -723,7 +753,7 @@ def get(path, default=None, scope=None): def set(path, value, scope=None): - """Convenience function for getting single values in config files. + """Convenience function for setting single values in config files. Accepts the path syntax described in ``get()``. """ @@ -999,6 +1029,41 @@ def default_list_scope(): return None +def _update_in_memory(data, section): + """Update the format of the configuration data in memory. + + This function assumes the section is valid (i.e. validation + is responsibility of the caller) + + Args: + data (dict): configuration data + section (str): section of the configuration to update + + Returns: + True if the data was changed, False otherwise + """ + update_fn = ensure_latest_format_fn(section) + changed = update_fn(data[section]) + return changed + + +def ensure_latest_format_fn(section): + """Return a function that takes as input a dictionary read from + a configuration file and update it to the latest format. + + The function returns True if there was any update, False otherwise. + + Args: + section (str): section of the configuration e.g. "packages", + "config", etc. + """ + # The line below is based on the fact that every module we need + # is already imported at the top level + section_module = getattr(spack.schema, section) + update_fn = getattr(section_module, 'update', lambda x: False) + return update_fn + + class ConfigError(SpackError): """Superclass for all Spack config related errors.""" diff --git a/lib/spack/spack/dependency.py b/lib/spack/spack/dependency.py index e6b6c9cedc..fe7d6b5983 100644 --- a/lib/spack/spack/dependency.py +++ b/lib/spack/spack/dependency.py @@ -17,6 +17,26 @@ all_deptypes = ('build', 'link', 'run', 'test') default_deptype = ('build', 'link') +def deptype_chars(*type_tuples): + """Create a string representing deptypes for many dependencies. + + The string will be some subset of 'blrt', like 'bl ', 'b t', or + ' lr ' where each letter in 'blrt' stands for 'build', 'link', + 'run', and 'test' (the dependency types). + + For a single dependency, this just indicates that the dependency has + the indicated deptypes. For a list of dependnecies, this shows + whether ANY dpeendency in the list has the deptypes (so the deptypes + are merged). + """ + types = set() + for t in type_tuples: + if t: + types.update(t) + + return ''.join(t[0] if t in types else ' ' for t in all_deptypes) + + def canonical_deptype(deptype): """Convert deptype to a canonical sorted tuple, or raise ValueError. @@ -108,3 +128,8 @@ class Dependency(object): self.patches[cond].extend(other.patches[cond]) else: self.patches[cond] = other.patches[cond] + + def __repr__(self): + types = deptype_chars(self.type) + return '<Dependency: %s -> %s [%s]>' % ( + self.pkg.name, self.spec, types) diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py index 99aa3963d5..1423acbddb 100644 --- a/lib/spack/spack/environment.py +++ b/lib/spack/spack/environment.py @@ -946,6 +946,7 @@ class Environment(object): "Not found: {0}".format(query_spec)) old_specs = set(self.user_specs) + new_specs = set() for spec in matches: if spec in list_to_change: try: @@ -1472,6 +1473,18 @@ class Environment(object): writing if True. """ + # Intercept environment not using the latest schema format and prevent + # them from being modified + manifest_exists = os.path.exists(self.manifest_path) + if manifest_exists and not is_latest_format(self.manifest_path): + msg = ('The environment "{0}" needs to be written to disk, but ' + 'is currently using a deprecated format. Please update it ' + 'using:\n\n' + '\tspack env update {0}\n\n' + 'Note that previous versions of Spack will not be able to ' + 'use the updated configuration.') + raise RuntimeError(msg.format(self.name)) + # ensure path in var/spack/environments fs.mkdirp(self.path) @@ -1722,5 +1735,92 @@ def deactivate_config_scope(env): spack.config.config.remove_scope(scope.name) +def manifest_file(env_name_or_dir): + """Return the absolute path to a manifest file given the environment + name or directory. + + Args: + env_name_or_dir (str): either the name of a valid environment + or a directory where a manifest file resides + + Raises: + AssertionError: if the environment is not found + """ + env_dir = None + if is_env_dir(env_name_or_dir): + env_dir = os.path.abspath(env_name_or_dir) + elif exists(env_name_or_dir): + env_dir = os.path.abspath(root(env_name_or_dir)) + + assert env_dir, "environment not found [env={0}]".format(env_name_or_dir) + return os.path.join(env_dir, manifest_name) + + +def update_yaml(manifest, backup_file): + """Update a manifest file from an old format to the current one. + + Args: + manifest (str): path to a manifest file + backup_file (str): file where to copy the original manifest + + Returns: + True if the manifest was updated, False otherwise. + + Raises: + AssertionError: in case anything goes wrong during the update + """ + # Check if the environment needs update + with open(manifest) as f: + data = syaml.load(f) + + top_level_key = _top_level_key(data) + needs_update = spack.schema.env.update(data[top_level_key]) + if not needs_update: + msg = "No update needed [manifest={0}]".format(manifest) + tty.debug(msg) + return False + + # Copy environment to a backup file and update it + msg = ('backup file "{0}" already exists on disk. Check its content ' + 'and remove it before trying to update again.') + assert not os.path.exists(backup_file), msg.format(backup_file) + + shutil.copy(manifest, backup_file) + with open(manifest, 'w') as f: + _write_yaml(data, f) + return True + + +def _top_level_key(data): + """Return the top level key used in this environment + + Args: + data (dict): raw yaml data of the environment + + Returns: + Either 'spack' or 'env' + """ + msg = ('cannot find top level attribute "spack" or "env"' + 'in the environment') + assert any(x in data for x in ('spack', 'env')), msg + if 'spack' in data: + return 'spack' + return 'env' + + +def is_latest_format(manifest): + """Return True if the manifest file is at the latest schema format, + False otherwise. + + Args: + manifest (str): manifest file to be analyzed + """ + with open(manifest) as f: + data = syaml.load(f) + top_level_key = _top_level_key(data) + changed = spack.schema.env.update(data[top_level_key]) + return not changed + + class SpackEnvironmentError(spack.error.SpackError): """Superclass for all errors to do with Spack environments.""" diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index 2d4b488ac3..b8bbe7ce3f 100644 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -272,9 +272,9 @@ def _process_external_package(pkg, explicit): pre = '{s.name}@{s.version} :'.format(s=pkg.spec) spec = pkg.spec - if spec.external_module: + if spec.external_modules: tty.msg('{0} has external module in {1}' - .format(pre, spec.external_module)) + .format(pre, spec.external_modules)) tty.debug('{0} is actually installed in {1}' .format(pre, spec.external_path)) else: diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index 33c8d1f4c6..d19578007b 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -702,16 +702,16 @@ def main(argv=None): if stored_var_name in os.environ: os.environ[var] = os.environ[stored_var_name] + # make spack.config aware of any command line configuration scopes + if args.config_scopes: + spack.config.command_line_scopes = args.config_scopes + # activate an environment if one was specified on the command line if not args.no_env: env = ev.find_environment(args) if env: ev.activate(env, args.use_env_repo, add_view=False) - # make spack.config aware of any command line configuration scopes - if args.config_scopes: - spack.config.command_line_scopes = args.config_scopes - if args.print_shell_vars: print_setup_info(*args.print_shell_vars.split(',')) return 0 diff --git a/lib/spack/spack/operating_systems/cnk.py b/lib/spack/spack/operating_systems/cnk.py deleted file mode 100644 index 53a12785da..0000000000 --- a/lib/spack/spack/operating_systems/cnk.py +++ /dev/null @@ -1,22 +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.architecture import OperatingSystem - - -class Cnk(OperatingSystem): - """ Compute Node Kernel (CNK) is the node level operating system for - the IBM Blue Gene series of supercomputers. The compute nodes of the - Blue Gene family of supercomputers run CNK, a lightweight kernel that - runs on each node and supports one application running for one user - on that node.""" - - def __init__(self): - name = 'cnk' - version = '1' - super(Cnk, self).__init__(name, version) - - def __str__(self): - return self.name diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index 4febfb1b47..d5cb3065a8 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -11,6 +11,7 @@ packages. """ import base64 +import collections import contextlib import copy import functools @@ -22,19 +23,15 @@ import shutil import sys import textwrap import time -from six import StringIO -from six import string_types -from six import with_metaclass -from ordereddict_backport import OrderedDict +import traceback -import llnl.util.tty as tty +import six -import spack.config -import spack.paths -import spack.store +import llnl.util.tty as tty import spack.compilers -import spack.directives +import spack.config import spack.dependency +import spack.directives import spack.directory_layout import spack.error import spack.fetch_strategy as fs @@ -42,15 +39,19 @@ import spack.hooks import spack.mirror import spack.mixins import spack.multimethod +import spack.paths import spack.repo +import spack.store import spack.url import spack.util.environment import spack.util.web -import spack.multimethod - from llnl.util.filesystem import mkdirp, touch, working_dir from llnl.util.lang import memoized from llnl.util.link_tree import LinkTree +from ordereddict_backport import OrderedDict +from six import StringIO +from six import string_types +from six import with_metaclass from spack.filesystem_view import YamlFilesystemView from spack.installer import \ install_args_docstring, PackageInstaller, InstallError @@ -140,7 +141,104 @@ class InstallPhase(object): return other +#: Registers which are the detectable packages, by repo and package name +#: Need a pass of package repositories to be filled. +detectable_packages = collections.defaultdict(list) + + +class DetectablePackageMeta(object): + """Check if a package is detectable and add default implementations + for the detection function. + """ + def __init__(cls, name, bases, attr_dict): + # If a package has the executables attribute then it's + # assumed to be detectable + if hasattr(cls, 'executables'): + @classmethod + def determine_spec_details(cls, prefix, exes_in_prefix): + """Allow ``spack external find ...`` to locate installations. + + Args: + prefix (str): the directory containing the executables + exes_in_prefix (set): the executables that match the regex + + Returns: + The list of detected specs for this package + """ + exes_by_version = collections.defaultdict(list) + # The default filter function is the identity function for the + # list of executables + filter_fn = getattr(cls, 'filter_detected_exes', + lambda x, exes: exes) + exes_in_prefix = filter_fn(prefix, exes_in_prefix) + for exe in exes_in_prefix: + try: + version_str = cls.determine_version(exe) + if version_str: + exes_by_version[version_str].append(exe) + except Exception as e: + msg = ('An error occurred when trying to detect ' + 'the version of "{0}" [{1}]') + tty.debug(msg.format(exe, str(e))) + + specs = [] + for version_str, exes in exes_by_version.items(): + variants = cls.determine_variants(exes, version_str) + # Normalize output to list + if not isinstance(variants, list): + variants = [variants] + + for variant in variants: + if isinstance(variant, six.string_types): + variant = (variant, {}) + variant_str, extra_attributes = variant + spec_str = '{0}@{1} {2}'.format( + cls.name, version_str, variant_str + ) + + # Pop a few reserved keys from extra attributes, since + # they have a different semantics + external_path = extra_attributes.pop('prefix', None) + external_modules = extra_attributes.pop( + 'modules', None + ) + spec = spack.spec.Spec( + spec_str, + external_path=external_path, + external_modules=external_modules + ) + specs.append(spack.spec.Spec.from_detection( + spec, extra_attributes=extra_attributes + )) + + return sorted(specs) + + @classmethod + def determine_variants(cls, exes, version_str): + return '' + + # Register the class as a detectable package + detectable_packages[cls.namespace].append(cls.name) + + # Attach function implementations to the detectable class + default = False + if not hasattr(cls, 'determine_spec_details'): + default = True + cls.determine_spec_details = determine_spec_details + + if default and not hasattr(cls, 'determine_version'): + msg = ('the package "{0}" in the "{1}" repo needs to define' + ' the "determine_version" method to be detectable') + NotImplementedError(msg.format(cls.name, cls.namespace)) + + if default and not hasattr(cls, 'determine_variants'): + cls.determine_variants = determine_variants + + super(DetectablePackageMeta, cls).__init__(name, bases, attr_dict) + + class PackageMeta( + DetectablePackageMeta, spack.directives.DirectiveMeta, spack.mixins.PackageMixinsMeta, spack.multimethod.MultiMethodMeta @@ -1747,7 +1845,23 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)): with spack.store.db.prefix_write_lock(spec): if pkg is not None: - spack.hooks.pre_uninstall(spec) + try: + spack.hooks.pre_uninstall(spec) + except Exception as error: + if force: + error_msg = ( + "One or more pre_uninstall hooks have failed" + " for {0}, but Spack is continuing with the" + " uninstall".format(str(spec))) + if isinstance(error, spack.error.SpackError): + error_msg += ( + "\n\nError message: {0}".format(str(error))) + tty.warn(error_msg) + # Note that if the uninstall succeeds then we won't be + # seeing this error again and won't have another chance + # to run the hook. + else: + raise # Uninstalling in Spack only requires removing the prefix. if not spec.external: @@ -1768,7 +1882,20 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)): spack.store.db.remove(spec) if pkg is not None: - spack.hooks.post_uninstall(spec) + try: + spack.hooks.post_uninstall(spec) + except Exception: + # If there is a failure here, this is our only chance to do + # something about it: at this point the Spec has been removed + # from the DB and prefix, so the post-uninstallation hooks + # will not have another chance to run. + error_msg = ( + "One or more post-uninstallation hooks failed for" + " {0}, but the prefix has been removed (if it is not" + " external).".format(str(spec))) + tb_msg = traceback.format_exc() + error_msg += "\n\nThe error:\n\n{0}".format(tb_msg) + tty.warn(error_msg) tty.msg('Successfully uninstalled {0}'.format(spec.short_spec)) diff --git a/lib/spack/spack/package_prefs.py b/lib/spack/spack/package_prefs.py index 67325fc7ae..bdedfcfb3d 100644 --- a/lib/spack/spack/package_prefs.py +++ b/lib/spack/spack/package_prefs.py @@ -2,7 +2,6 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - import stat from six import string_types @@ -158,7 +157,7 @@ def spec_externals(spec): """Return a list of external specs (w/external directory path filled in), one for each known external installation.""" # break circular import. - from spack.util.module_cmd import get_path_from_module # NOQA: ignore=F401 + from spack.util.module_cmd import path_from_modules # NOQA: ignore=F401 allpkgs = spack.config.get('packages') names = set([spec.name]) @@ -167,24 +166,24 @@ def spec_externals(spec): external_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 - - 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) - - for external_spec, module in pkg_modules.items(): - external_spec = spack.spec.Spec( - external_spec, external_module=module) + pkg_externals = pkg_config.get('externals', []) + for entry in pkg_externals: + spec_str = entry['spec'] + external_path = entry.get('prefix', None) + if external_path: + external_path = canonicalize_path(external_path) + external_modules = entry.get('modules', None) + external_spec = spack.spec.Spec.from_detection( + spack.spec.Spec( + spec_str, + external_path=external_path, + external_modules=external_modules + ), extra_attributes=entry.get('extra_attributes', {}) + ) if external_spec.satisfies(spec): external_specs.append(external_spec) - # defensively copy returned specs + # Defensively copy returned specs return [s.copy() for s in external_specs] diff --git a/lib/spack/spack/pkgkit.py b/lib/spack/spack/pkgkit.py index e657144bb4..e2a29894f7 100644 --- a/lib/spack/spack/pkgkit.py +++ b/lib/spack/spack/pkgkit.py @@ -39,7 +39,7 @@ from spack.mixins import filter_compiler_wrappers from spack.version import Version, ver -from spack.spec import Spec +from spack.spec import Spec, InvalidSpecDetected from spack.dependency import all_deptypes diff --git a/lib/spack/spack/platforms/bgq.py b/lib/spack/spack/platforms/bgq.py deleted file mode 100644 index 64d71743c4..0000000000 --- a/lib/spack/spack/platforms/bgq.py +++ /dev/null @@ -1,38 +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) - -import os -from spack.architecture import Platform, Target -from spack.operating_systems.linux_distro import LinuxDistro -from spack.operating_systems.cnk import Cnk - - -class Bgq(Platform): - priority = 30 - front_end = 'power7' - back_end = 'ppc64' - default = 'ppc64' - - def __init__(self): - ''' IBM Blue Gene/Q system platform.''' - - super(Bgq, self).__init__('bgq') - - self.add_target(self.front_end, Target(self.front_end)) - self.add_target(self.back_end, Target(self.back_end)) - - front_distro = LinuxDistro() - back_distro = Cnk() - - self.front_os = str(front_distro) - self.back_os = str(back_distro) - self.default_os = self.back_os - - self.add_operating_system(str(front_distro), front_distro) - self.add_operating_system(str(back_distro), back_distro) - - @classmethod - def detect(cls): - return os.path.exists('/bgsys') diff --git a/lib/spack/spack/platforms/cray.py b/lib/spack/spack/platforms/cray.py index c6d367e9a6..684109f3e0 100644 --- a/lib/spack/spack/platforms/cray.py +++ b/lib/spack/spack/platforms/cray.py @@ -111,14 +111,14 @@ class Cray(Platform): @classmethod def detect(cls): """ - Detect whether this system is a cray machine. + Detect whether this system is a Cray machine. - We detect the cray platform based on the availability through `module` - of the cray programming environment. If this environment is available, - we can use it to find compilers, target modules, etc. If the cray + We detect the Cray platform based on the availability through `module` + of the Cray programming environment. If this environment is available, + we can use it to find compilers, target modules, etc. If the Cray programming environment is not available via modules, then we will - treat it as a standard linux system, as the cray compiler wrappers - and other componenets of the cray programming environment are + treat it as a standard linux system, as the Cray compiler wrappers + and other components of the Cray programming environment are irrelevant without module support. """ return 'opt/cray' in os.environ.get('MODULEPATH', '') diff --git a/lib/spack/spack/schema/__init__.py b/lib/spack/spack/schema/__init__.py index 755e3d9086..38cc36caef 100644 --- a/lib/spack/spack/schema/__init__.py +++ b/lib/spack/spack/schema/__init__.py @@ -90,11 +90,15 @@ def _make_validator(): is_error = deprecated['error'] if not is_error: for entry in deprecated_properties: - llnl.util.tty.warn(msg.format(property=entry)) + llnl.util.tty.warn( + msg.format(property=entry, entry=instance[entry]) + ) else: import jsonschema for entry in deprecated_properties: - yield jsonschema.ValidationError(msg.format(property=entry)) + yield jsonschema.ValidationError( + msg.format(property=entry, entry=instance[entry]) + ) return jsonschema.validators.extend( jsonschema.Draft4Validator, { diff --git a/lib/spack/spack/schema/env.py b/lib/spack/spack/schema/env.py index 6ead76416b..18a2048557 100644 --- a/lib/spack/spack/schema/env.py +++ b/lib/spack/spack/schema/env.py @@ -8,9 +8,12 @@ .. literalinclude:: _spack_root/lib/spack/spack/schema/env.py :lines: 36- """ +import warnings + from llnl.util.lang import union_dicts import spack.schema.merged +import spack.schema.packages import spack.schema.projections #: legal first keys in the schema @@ -133,3 +136,22 @@ schema = { } } } + + +def update(data): + """Update the data in place to remove deprecated properties. + + Args: + data (dict): dictionary to be updated + + Returns: + True if data was changed, False otherwise + """ + if 'include' in data: + msg = ("included configuration files should be updated manually" + " [files={0}]") + warnings.warn(msg.format(', '.join(data['include']))) + + if 'packages' in data: + return spack.schema.packages.update(data['packages']) + return False diff --git a/lib/spack/spack/schema/packages.py b/lib/spack/spack/schema/packages.py index 4984471c73..16a8a223ef 100644 --- a/lib/spack/spack/schema/packages.py +++ b/lib/spack/spack/schema/packages.py @@ -2,7 +2,6 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - """Schema for packages.yaml configuration files. .. literalinclude:: _spack_root/lib/spack/spack/schema/packages.py @@ -59,10 +58,6 @@ properties = { }, }, }, - 'modules': { - 'type': 'object', - 'default': {}, - }, 'providers': { 'type': 'object', 'default': {}, @@ -72,17 +67,39 @@ properties = { 'type': 'array', 'default': [], 'items': {'type': 'string'}, }, }, }, - 'paths': { - 'type': 'object', - 'default': {}, - }, 'variants': { 'oneOf': [ {'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], }, + 'externals': { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'spec': {'type': 'string'}, + 'prefix': {'type': 'string'}, + 'modules': {'type': 'array', + 'items': {'type': 'string'}}, + 'extra_attributes': {'type': 'object'} + }, + 'additionalProperties': True, + 'required': ['spec'] + } + }, + # Deprecated properties, will trigger an error with a + # message telling how to update. + 'paths': {'type': 'object'}, + 'modules': {'type': 'object'}, }, + 'deprecatedProperties': { + 'properties': ['modules', 'paths'], + 'message': 'the attribute "{property}" in the "packages" ' + 'section of the configuration has been ' + 'deprecated [entry={entry}]', + 'error': False + } }, }, }, @@ -97,3 +114,33 @@ schema = { 'additionalProperties': False, 'properties': properties, } + + +def update(data): + """Update the data in place to remove deprecated properties. + + Args: + data (dict): dictionary to be updated + + Returns: + True if data was changed, False otherwise + """ + changed = False + for cfg_object in data.values(): + externals = [] + paths = cfg_object.pop('paths', {}) + for spec, prefix in paths.items(): + externals.append({ + 'spec': str(spec), + 'prefix': str(prefix) + }) + modules = cfg_object.pop('modules', {}) + for spec, module in modules.items(): + externals.append({ + 'spec': str(spec), + 'modules': [str(module)] + }) + if externals: + changed = True + cfg_object['externals'] = externals + return changed diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 175d160855..047764c8ae 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -13,7 +13,7 @@ The syntax looks like this: .. code-block:: sh - $ spack install mpileaks ^openmpi @1.2:1.4 +debug %intel @12.1 =bgqos_0 + $ spack install mpileaks ^openmpi @1.2:1.4 +debug %intel @12.1 target=zen 0 1 2 3 4 5 6 The first part of this is the command, 'spack install'. The rest of the @@ -959,7 +959,7 @@ class Spec(object): def __init__(self, spec_like=None, normal=False, concrete=False, external_path=None, - external_module=None, full_hash=None): + external_modules=None, full_hash=None): """Create a new Spec. Arguments: @@ -988,8 +988,6 @@ class Spec(object): self.variants = vt.VariantMap(self) self.architecture = None self.compiler = None - self.external_path = None - self.external_module = None self.compiler_flags = FlagMap(self) self._dependents = DependencyMap() self._dependencies = DependencyMap() @@ -1010,9 +1008,13 @@ class Spec(object): self._normal = normal self._concrete = concrete self.external_path = external_path - self.external_module = external_module + self.external_modules = external_modules self._full_hash = full_hash + # This attribute is used to store custom information for + # external specs. None signal that it was not set yet. + self.extra_attributes = None + if isinstance(spec_like, six.string_types): spec_list = SpecParser(self).parse(spec_like) if len(spec_list) > 1: @@ -1025,7 +1027,7 @@ class Spec(object): @property def external(self): - return bool(self.external_path) or bool(self.external_module) + return bool(self.external_path) or bool(self.external_modules) def get_dependency(self, name): dep = self._dependencies.get(name) @@ -1526,7 +1528,8 @@ class Spec(object): if self.external: d['external'] = syaml.syaml_dict([ ('path', self.external_path), - ('module', self.external_module), + ('module', self.external_modules), + ('extra_attributes', self.extra_attributes) ]) if not self._concrete: @@ -1695,21 +1698,21 @@ class Spec(object): for name in FlagMap.valid_compiler_flags(): spec.compiler_flags[name] = [] + spec.external_path = None + spec.external_modules = None if 'external' in node: - spec.external_path = None - spec.external_module = None # This conditional is needed because sometimes this function is # called with a node already constructed that contains a 'versions' # and 'external' field. Related to virtual packages provider # indexes. if node['external']: spec.external_path = node['external']['path'] - spec.external_module = node['external']['module'] - if spec.external_module is False: - spec.external_module = None - else: - spec.external_path = None - spec.external_module = None + spec.external_modules = node['external']['module'] + if spec.external_modules is False: + spec.external_modules = None + spec.extra_attributes = node['external'].get( + 'extra_attributes', syaml.syaml_dict() + ) # specs read in are concrete unless marked abstract spec._concrete = node.get('concrete', True) @@ -1970,6 +1973,44 @@ class Spec(object): tty.debug(e) raise sjson.SpackJSONError("error parsing JSON spec:", str(e)) + @staticmethod + def from_detection(spec_str, extra_attributes=None): + """Construct a spec from a spec string determined during external + detection and attach extra attributes to it. + + Args: + spec_str (str): spec string + extra_attributes (dict): dictionary containing extra attributes + + Returns: + spack.spec.Spec: external spec + """ + s = Spec(spec_str) + extra_attributes = syaml.sorted_dict(extra_attributes or {}) + # This is needed to be able to validate multi-valued variants, + # otherwise they'll still be abstract in the context of detection. + vt.substitute_abstract_variants(s) + s.extra_attributes = extra_attributes + return s + + def validate_detection(self): + """Validate the detection of an external spec. + + This method is used as part of Spack's detection protocol, and is + not meant for client code use. + """ + # Assert that _extra_attributes is a Mapping and not None, + # which likely means the spec was created with Spec.from_detection + msg = ('cannot validate "{0}" since it was not created ' + 'using Spec.from_detection'.format(self)) + assert isinstance(self.extra_attributes, collections.Mapping), msg + + # Validate the spec calling a package specific method + validate_fn = getattr( + self.package, 'validate_detected_spec', lambda x, y: None + ) + validate_fn(self, self.extra_attributes) + def _concretize_helper(self, concretizer, presets=None, visited=None): """Recursive helper function for concretize(). This concretizes everything bottom-up. As things are @@ -2115,8 +2156,8 @@ class Spec(object): feq(replacement.variants, spec.variants) and feq(replacement.external_path, spec.external_path) and - feq(replacement.external_module, - spec.external_module)): + feq(replacement.external_modules, + spec.external_modules)): continue # Refine this spec to the candidate. This uses # replace_with AND dup so that it can work in @@ -2250,7 +2291,7 @@ class Spec(object): t[-1] for t in ordered_hashes) for s in self.traverse(): - if s.external_module and not s.external_path: + if s.external_modules and not s.external_path: compiler = spack.compilers.compiler_for_spec( s.compiler, s.architecture) for mod in compiler.modules: @@ -2259,8 +2300,8 @@ class Spec(object): # get the path from the module # the package can override the default s.external_path = getattr(s.package, 'external_prefix', - md.get_path_from_module( - s.external_module)) + md.path_from_modules( + s.external_modules)) # Mark everything in the spec as concrete, as well. self._mark_concrete() @@ -3046,7 +3087,7 @@ class Spec(object): self._normal != other._normal and self.concrete != other.concrete and self.external_path != other.external_path and - self.external_module != other.external_module and + self.external_modules != other.external_modules and self.compiler_flags != other.compiler_flags) self._package = None @@ -3074,7 +3115,8 @@ class Spec(object): self.variants.spec = self self.external_path = other.external_path - self.external_module = other.external_module + self.external_modules = other.external_modules + self.extra_attributes = other.extra_attributes self.namespace = other.namespace # Cached fields are results of expensive operations. @@ -3877,22 +3919,18 @@ class Spec(object): '@K{%s} ', color=color) % node.dag_hash(hlen) if show_types: - types = set() if cover == 'nodes': # when only covering nodes, we merge dependency types # from all dependents before showing them. - for name, ds in node.dependents_dict().items(): - if ds.deptypes: - types.update(set(ds.deptypes)) - elif dep_spec.deptypes: + types = [ + ds.deptypes for ds in node.dependents_dict().values()] + else: # when covering edges or paths, we show dependency # types only for the edge through which we visited - types = set(dep_spec.deptypes) + types = [dep_spec.deptypes] - out += '[' - for t in dp.all_deptypes: - out += ''.join(t[0] if t in types else ' ') - out += '] ' + type_chars = dp.deptype_chars(*types) + out += '[%s] ' % type_chars out += (" " * d) if d > 0: @@ -4533,3 +4571,7 @@ class SpecDependencyNotFoundError(spack.error.SpecError): class SpecDeprecatedError(spack.error.SpecError): """Raised when a spec concretizes to a deprecated spec or dependency.""" + + +class InvalidSpecDetected(spack.error.SpecError): + """Raised when a detected spec doesn't pass validation checks.""" diff --git a/lib/spack/spack/test/abi.py b/lib/spack/spack/test/abi.py new file mode 100644 index 0000000000..dd41228941 --- /dev/null +++ b/lib/spack/spack/test/abi.py @@ -0,0 +1,66 @@ +# 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) +""" Test ABI compatibility helpers""" + +import pytest + +from spack.abi import ABI +from spack.spec import Spec + + +@pytest.mark.parametrize( + 'target,constraint,expected', + [ + ('foo', 'bar', True), + ('platform=linux', 'foo', True), + ('foo', 'arch=linux-fedora31-x86_64', True), + ('arch=linux-fedora31-skylake', 'arch=linux-fedora31-skylake', True), + ('arch=linux-fedora31-skylake', 'arch=linux-fedora31-x86_64', False), + ('platform=linux os=fedora31', 'arch=linux-fedora31-x86_64', True), + ('platform=linux', 'arch=linux-fedora31-x86_64', True), + ('platform=linux os=fedora31', 'platform=linux', True), + ('platform=darwin', 'arch=linux-fedora31-x86_64', False), + ('os=fedora31', 'platform=linux', False), # TODO should be true ? + ]) +def test_architecture_compatibility(target, constraint, expected): + assert ABI().architecture_compatible(Spec(target), + Spec(constraint)) == expected + + +@pytest.mark.parametrize( + 'target,constraint,loose,expected', + [ + ('foo', 'bar', False, True), + ('%gcc', 'foo', False, True), + ('foo', '%gcc', False, True), + ('%gcc', '%gcc', False, True), + ('%gcc', '%intel', False, False), + ('%gcc', '%clang', False, False), + ('%gcc@9.1', '%gcc@9.2', False, False), # TODO should be true ? + ('%gcc@9.2.1', '%gcc@9.2.2', False, False), # TODO should be true ? + ('%gcc@4.9', '%gcc@9.2', False, False), + ('%clang@5', '%clang@6', False, False), + ('%gcc@9.1', '%gcc@9.2', True, True), + ('%gcc@9.2.1', '%gcc@9.2.2', True, True), + ('%gcc@4.9', '%gcc@9.2', True, True), + ('%clang@5', '%clang@6', True, True), + ]) +def test_compiler_compatibility(target, constraint, loose, expected): + assert ABI().compiler_compatible(Spec(target), + Spec(constraint), + loose=loose) == expected + + +@pytest.mark.parametrize('target,constraint,loose,expected', [ + ('foo', 'bar', False, True), + ('%gcc', 'platform=linux', False, True), + ('%gcc@9.2.1', '%gcc@8.3.1 platform=linux', False, False), + ('%gcc@9.2.1', '%gcc@8.3.1 platform=linux', True, True), + ('%gcc@9.2.1 arch=linux-fedora31-skylake', '%gcc@9.2.1 platform=linux', + False, True), +]) +def test_compatibility(target, constraint, loose, expected): + assert ABI().compatible(Spec(target), Spec(constraint), + loose=loose) == expected diff --git a/lib/spack/spack/test/architecture.py b/lib/spack/spack/test/architecture.py index 80d3fc72c0..7af5a8d150 100644 --- a/lib/spack/spack/test/architecture.py +++ b/lib/spack/spack/test/architecture.py @@ -15,7 +15,6 @@ import spack.architecture from spack.spec import Spec from spack.platforms.cray import Cray from spack.platforms.linux import Linux -from spack.platforms.bgq import Bgq from spack.platforms.darwin import Darwin @@ -42,8 +41,6 @@ def test_platform(): output_platform_class = spack.architecture.real_platform() if os.path.exists('/opt/cray/pe'): my_platform_class = Cray() - elif os.path.exists('/bgsys'): - my_platform_class = Bgq() elif 'Linux' in py_platform.system(): my_platform_class = Linux() elif 'Darwin' in py_platform.system(): diff --git a/lib/spack/spack/test/bindist.py b/lib/spack/spack/test/bindist.py index f561077edd..a7995ca43b 100644 --- a/lib/spack/spack/test/bindist.py +++ b/lib/spack/spack/test/bindist.py @@ -7,6 +7,7 @@ This test checks creating and install buildcaches """ import os +import sys import py import pytest import argparse @@ -158,8 +159,14 @@ def install_dir_non_default_layout(tmpdir): spack.store.layout = real_layout -@pytest.mark.requires_executables( - '/usr/bin/gcc', 'patchelf', 'strings', 'file') +args = ['strings', 'file'] +if sys.platform == 'darwin': + args.extend(['/usr/bin/clang++', 'install_name_tool']) +else: + args.extend(['/usr/bin/g++', 'patchelf']) + + +@pytest.mark.requires_executables(*args) @pytest.mark.disable_clean_stage_check @pytest.mark.maybeslow @pytest.mark.usefixtures('default_config', 'cache_directory', @@ -177,7 +184,6 @@ def test_default_rpaths_create_install_default_layout(tmpdir, cspec = Spec('corge') cspec.concretize() - # Install patchelf needed for relocate in linux test environment iparser = argparse.ArgumentParser() install.setup_parser(iparser) # Install some packages with dependent packages @@ -253,8 +259,7 @@ def test_default_rpaths_create_install_default_layout(tmpdir, mirror.mirror(mparser, margs) -@pytest.mark.requires_executables( - '/usr/bin/gcc', 'patchelf', 'strings', 'file') +@pytest.mark.requires_executables(*args) @pytest.mark.disable_clean_stage_check @pytest.mark.maybeslow @pytest.mark.nomockstage @@ -302,8 +307,7 @@ def test_default_rpaths_install_nondefault_layout(tmpdir, mirror.mirror(mparser, margs) -@pytest.mark.requires_executables( - '/usr/bin/gcc', 'patchelf', 'strings', 'file') +@pytest.mark.requires_executables(*args) @pytest.mark.disable_clean_stage_check @pytest.mark.maybeslow @pytest.mark.nomockstage @@ -356,8 +360,7 @@ def test_relative_rpaths_create_default_layout(tmpdir, spack.stage.purge() -@pytest.mark.requires_executables( - '/usr/bin/gcc', 'patchelf', 'strings', 'file') +@pytest.mark.requires_executables(*args) @pytest.mark.disable_clean_stage_check @pytest.mark.maybeslow @pytest.mark.nomockstage @@ -382,7 +385,6 @@ def test_relative_rpaths_install_default_layout(tmpdir, ['add', '--scope', 'site', 'test-mirror-rel', 'file://%s' % mirror_path_rel]) mirror.mirror(mparser, margs) - # Install patchelf needed for relocate in linux test environment iparser = argparse.ArgumentParser() install.setup_parser(iparser) @@ -422,8 +424,7 @@ def test_relative_rpaths_install_default_layout(tmpdir, mirror.mirror(mparser, margs) -@pytest.mark.requires_executables( - '/usr/bin/gcc', 'patchelf', 'strings', 'file') +@pytest.mark.requires_executables(*args) @pytest.mark.disable_clean_stage_check @pytest.mark.maybeslow @pytest.mark.nomockstage @@ -449,7 +450,6 @@ def test_relative_rpaths_install_nondefault(tmpdir, ['add', '--scope', 'site', 'test-mirror-rel', 'file://%s' % mirror_path_rel]) mirror.mirror(mparser, margs) - # Install patchelf needed for relocate in linux test environment iparser = argparse.ArgumentParser() install.setup_parser(iparser) diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index afa7c7fc07..7e61a885ff 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -527,14 +527,10 @@ spack: ci_cmd('generate', '--output-file', outputfile) with open(outputfile) as f: - contents = f.read() - print('generated contents: ') - print(contents) - yaml_contents = syaml.load(contents) - for ci_key in yaml_contents.keys(): - if 'externaltool' in ci_key: - print('Erroneously staged "externaltool" pkg') - assert(False) + yaml_contents = syaml.load(f) + + # Check that the "externaltool" package was not erroneously staged + assert not any('externaltool' in key for key in yaml_contents) def test_ci_generate_debug_with_custom_spack(tmpdir, mutable_mock_env_path, diff --git a/lib/spack/spack/test/cmd/compiler.py b/lib/spack/spack/test/cmd/compiler.py index 61c67ccecd..c5c354221e 100644 --- a/lib/spack/spack/test/cmd/compiler.py +++ b/lib/spack/spack/test/cmd/compiler.py @@ -250,3 +250,35 @@ def test_compiler_find_prefer_no_suffix( assert clang['paths']['cc'] == str(clangdir.join('clang')) assert clang['paths']['cxx'] == str(clangdir.join('clang++')) + + +def test_compiler_find_path_order( + no_compilers_yaml, working_env, clangdir): + """Ensure that we find compilers that come first in the PATH first + """ + + with clangdir.as_cwd(): + os.mkdir('first_in_path') + shutil.copy('gcc-8', 'first_in_path/gcc-8') + shutil.copy('g++-8', 'first_in_path/g++-8') + shutil.copy('gfortran-8', 'first_in_path/gfortran-8') + + # the first_in_path folder should be searched first + os.environ['PATH'] = '{0}:{1}'.format( + str(clangdir.join("first_in_path")), + str(clangdir), + ) + + compiler('find', '--scope=site') + + config = spack.compilers.get_compiler_config('site', False) + + gcc = next(c['compiler'] for c in config + if c['compiler']['spec'] == 'gcc@8.4.0') + + assert gcc['paths'] == { + 'cc': str(clangdir.join('first_in_path', 'gcc-8')), + 'cxx': str(clangdir.join('first_in_path', 'g++-8')), + 'f77': str(clangdir.join('first_in_path', 'gfortran-8')), + 'fc': str(clangdir.join('first_in_path', 'gfortran-8')), + } diff --git a/lib/spack/spack/test/cmd/config.py b/lib/spack/spack/test/cmd/config.py index 6dbf50676d..524636fed6 100644 --- a/lib/spack/spack/test/cmd/config.py +++ b/lib/spack/spack/test/cmd/config.py @@ -2,17 +2,40 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import pytest import os -from llnl.util.filesystem import mkdirp +import pytest +import llnl.util.filesystem as fs import spack.config import spack.environment as ev -from spack.main import SpackCommand - -config = SpackCommand('config') -env = SpackCommand('env') +import spack.main +import spack.util.spack_yaml as syaml + +config = spack.main.SpackCommand('config') +env = spack.main.SpackCommand('env') + + +@pytest.fixture() +def packages_yaml_v015(mutable_config): + """Create a packages.yaml in the old format""" + def _create(scope=None): + old_data = { + 'packages': { + 'cmake': { + 'paths': {'cmake@3.14.0': '/usr'} + }, + 'gcc': { + 'modules': {'gcc@8.3.0': 'gcc-8'} + } + } + } + scope = scope or spack.config.default_modify_scope() + cfg_file = spack.config.config.get_config_filename(scope, 'packages') + with open(cfg_file, 'w') as f: + syaml.dump(old_data, stream=f) + return cfg_file + return _create def test_get_config_scope(mock_low_high_config): @@ -23,8 +46,8 @@ def test_get_config_scope_merged(mock_low_high_config): low_path = mock_low_high_config.scopes['low'].path high_path = mock_low_high_config.scopes['high'].path - mkdirp(low_path) - mkdirp(high_path) + fs.mkdirp(low_path) + fs.mkdirp(high_path) with open(os.path.join(low_path, 'repos.yaml'), 'w') as f: f.write('''\ @@ -403,3 +426,104 @@ def test_config_remove_from_env(mutable_empty_config, mutable_mock_env_path): """ assert output == expected + + +def test_config_update_packages(packages_yaml_v015): + """Test Spack updating old packages.yaml format for externals + to new format. Ensure that data is preserved and converted + properly. + """ + packages_yaml_v015() + config('update', '-y', 'packages') + + # Check the entries have been transformed + data = spack.config.get('packages') + check_update(data) + + +def test_config_update_not_needed(mutable_config): + data_before = spack.config.get('repos') + config('update', '-y', 'repos') + data_after = spack.config.get('repos') + assert data_before == data_after + + +def test_config_update_fail_on_permission_issue( + packages_yaml_v015, monkeypatch +): + # The first time it will update and create the backup file + packages_yaml_v015() + # Mock a global scope where we cannot write + monkeypatch.setattr( + spack.cmd.config, '_can_update_config_file', lambda x, y: False + ) + with pytest.raises(spack.main.SpackCommandError): + config('update', '-y', 'packages') + + +def test_config_revert(packages_yaml_v015): + cfg_file = packages_yaml_v015() + bkp_file = cfg_file + '.bkp' + + config('update', '-y', 'packages') + + # Check that the backup file exists, compute its md5 sum + assert os.path.exists(bkp_file) + md5bkp = fs.md5sum(bkp_file) + + config('revert', '-y', 'packages') + + # Check that the backup file does not exist anymore and + # that the md5 sum of the configuration file is the same + # as that of the old backup file + assert not os.path.exists(bkp_file) + assert md5bkp == fs.md5sum(cfg_file) + + +def test_config_revert_raise_if_cant_write(packages_yaml_v015, monkeypatch): + packages_yaml_v015() + config('update', '-y', 'packages') + + # Mock a global scope where we cannot write + monkeypatch.setattr( + spack.cmd.config, '_can_revert_update', lambda x, y, z: False + ) + # The command raises with an helpful error if a configuration + # file is to be deleted and we don't have sufficient permissions + with pytest.raises(spack.main.SpackCommandError): + config('revert', '-y', 'packages') + + +def test_updating_config_implicitly_raises(packages_yaml_v015): + # Trying to write implicitly to a scope with a configuration file + # in the old format raises an exception + packages_yaml_v015() + with pytest.raises(RuntimeError): + config('add', 'packages:cmake:buildable:false') + + +def test_updating_multiple_scopes_at_once(packages_yaml_v015): + # Create 2 config files in the old format + packages_yaml_v015(scope='user') + packages_yaml_v015(scope='site') + + # Update both of them at once + config('update', '-y', 'packages') + + for scope in ('user', 'site'): + data = spack.config.get('packages', scope=scope) + check_update(data) + + +def check_update(data): + """Check that the data from the packages_yaml_v015 + has been updated. + """ + assert 'externals' in data['cmake'] + externals = data['cmake']['externals'] + assert {'spec': 'cmake@3.14.0', 'prefix': '/usr'} in externals + assert 'paths' not in data['cmake'] + assert 'externals' in data['gcc'] + externals = data['gcc']['externals'] + assert {'spec': 'gcc@8.3.0', 'modules': ['gcc-8']} in externals + assert 'modules' not in data['gcc'] diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index 87f7a58667..955693ca0f 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -448,8 +448,9 @@ env: external_config = StringIO("""\ packages: a: - paths: - a: {a_prefix} + externals: + - spec: a + prefix: {a_prefix} buildable: false """.format(a_prefix=str(fake_prefix))) external_config_dict = spack.util.spack_yaml.load_config(external_config) @@ -2041,3 +2042,73 @@ def test_env_write_only_non_default(): yaml = f.read() assert yaml == ev.default_manifest_yaml + + +@pytest.fixture +def packages_yaml_v015(tmpdir): + """Return the path to an existing manifest in the v0.15.x format + and the path to a non yet existing backup file. + """ + raw_yaml = """ +spack: + specs: + - mpich + packages: + cmake: + paths: + cmake@3.17.3: /usr +""" + manifest = tmpdir.ensure('spack.yaml') + backup_file = tmpdir.join('spack.yaml.bkp') + manifest.write(raw_yaml) + return manifest, backup_file + + +def test_update_anonymous_env(packages_yaml_v015): + manifest, backup_file = packages_yaml_v015 + env('update', '-y', str(manifest.dirname)) + + # The environment is now at the latest format + assert ev.is_latest_format(str(manifest)) + # A backup file has been created and it's not at the latest format + assert os.path.exists(str(backup_file)) + assert not ev.is_latest_format(str(backup_file)) + + +def test_double_update(packages_yaml_v015): + manifest, backup_file = packages_yaml_v015 + + # Update the environment + env('update', '-y', str(manifest.dirname)) + # Try to read the environment (it should not error) + ev.create('test', str(manifest)) + # Updating again does nothing since the manifest is up-to-date + env('update', '-y', str(manifest.dirname)) + + # The environment is at the latest format + assert ev.is_latest_format(str(manifest)) + # A backup file has been created and it's not at the latest format + assert os.path.exists(str(backup_file)) + assert not ev.is_latest_format(str(backup_file)) + + +def test_update_and_revert(packages_yaml_v015): + manifest, backup_file = packages_yaml_v015 + + # Update the environment + env('update', '-y', str(manifest.dirname)) + assert os.path.exists(str(backup_file)) + assert not ev.is_latest_format(str(backup_file)) + assert ev.is_latest_format(str(manifest)) + + # Revert to previous state + env('revert', '-y', str(manifest.dirname)) + assert not os.path.exists(str(backup_file)) + assert not ev.is_latest_format(str(manifest)) + + +def test_old_format_cant_be_updated_implicitly(packages_yaml_v015): + manifest, backup_file = packages_yaml_v015 + env('activate', str(manifest.dirname)) + with pytest.raises(spack.main.SpackCommandError): + add('hdf5') diff --git a/lib/spack/spack/test/cmd/external.py b/lib/spack/spack/test/cmd/external.py index 0bdf67fe3e..547d20de24 100644 --- a/lib/spack/spack/test/cmd/external.py +++ b/lib/spack/spack/test/cmd/external.py @@ -2,10 +2,8 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -import pytest import os -import stat +import os.path import spack from spack.spec import Spec @@ -13,30 +11,10 @@ from spack.cmd.external import ExternalPackageEntry from spack.main import SpackCommand -@pytest.fixture() -def create_exe(tmpdir_factory): - def _create_exe(exe_name, content): - base_prefix = tmpdir_factory.mktemp('base-prefix') - base_prefix.ensure('bin', dir=True) - exe_path = str(base_prefix.join('bin', exe_name)) - with open(exe_path, 'w') as f: - f.write("""\ -#!/bin/bash - -echo "{0}" -""".format(content)) - - st = os.stat(exe_path) - os.chmod(exe_path, st.st_mode | stat.S_IEXEC) - return exe_path - - yield _create_exe - - -def test_find_external_single_package(create_exe): +def test_find_external_single_package(mock_executable): pkgs_to_check = [spack.repo.get('cmake')] - cmake_path = create_exe("cmake", "cmake version 1.foo") + cmake_path = mock_executable("cmake", output='echo "cmake version 1.foo"') system_path_to_exe = {cmake_path: 'cmake'} pkg_to_entries = spack.cmd.external._get_external_packages( @@ -48,12 +26,16 @@ def test_find_external_single_package(create_exe): assert single_entry.spec == Spec('cmake@1.foo') -def test_find_external_two_instances_same_package(create_exe): +def test_find_external_two_instances_same_package(mock_executable): pkgs_to_check = [spack.repo.get('cmake')] # Each of these cmake instances is created in a different prefix - cmake_path1 = create_exe("cmake", "cmake version 1.foo") - cmake_path2 = create_exe("cmake", "cmake version 3.17.2") + cmake_path1 = mock_executable( + "cmake", output='echo "cmake version 1.foo"', subdir=('base1', 'bin') + ) + cmake_path2 = mock_executable( + "cmake", output='echo "cmake version 3.17.2"', subdir=('base2', 'bin') + ) system_path_to_exe = { cmake_path1: 'cmake', cmake_path2: 'cmake'} @@ -70,25 +52,24 @@ def test_find_external_two_instances_same_package(create_exe): def test_find_external_update_config(mutable_config): - pkg_to_entries = { - 'cmake': [ - ExternalPackageEntry(Spec('cmake@1.foo'), '/x/y1/'), - ExternalPackageEntry(Spec('cmake@3.17.2'), '/x/y2/'), - ] - } + entries = [ + ExternalPackageEntry(Spec.from_detection('cmake@1.foo'), '/x/y1/'), + ExternalPackageEntry(Spec.from_detection('cmake@3.17.2'), '/x/y2/'), + ] + pkg_to_entries = {'cmake': entries} spack.cmd.external._update_pkg_config(pkg_to_entries, False) pkgs_cfg = spack.config.get('packages') cmake_cfg = pkgs_cfg['cmake'] - cmake_paths_cfg = cmake_cfg['paths'] + cmake_externals = cmake_cfg['externals'] - assert cmake_paths_cfg['cmake@1.foo'] == '/x/y1/' - assert cmake_paths_cfg['cmake@3.17.2'] == '/x/y2/' + assert {'spec': 'cmake@1.foo', 'prefix': '/x/y1/'} in cmake_externals + assert {'spec': 'cmake@3.17.2', 'prefix': '/x/y2/'} in cmake_externals -def test_get_executables(working_env, create_exe): - cmake_path1 = create_exe("cmake", "cmake version 1.foo") +def test_get_executables(working_env, mock_executable): + cmake_path1 = mock_executable("cmake", output="echo cmake version 1.foo") os.environ['PATH'] = ':'.join([os.path.dirname(cmake_path1)]) path_to_exe = spack.cmd.external._get_system_executables() @@ -98,29 +79,30 @@ def test_get_executables(working_env, create_exe): external = SpackCommand('external') -def test_find_external_cmd(mutable_config, working_env, create_exe): +def test_find_external_cmd(mutable_config, working_env, mock_executable): """Test invoking 'spack external find' with additional package arguments, which restricts the set of packages that Spack looks for. """ - cmake_path1 = create_exe("cmake", "cmake version 1.foo") + cmake_path1 = mock_executable("cmake", output="echo cmake version 1.foo") + prefix = os.path.dirname(os.path.dirname(cmake_path1)) os.environ['PATH'] = ':'.join([os.path.dirname(cmake_path1)]) external('find', 'cmake') pkgs_cfg = spack.config.get('packages') cmake_cfg = pkgs_cfg['cmake'] - cmake_paths_cfg = cmake_cfg['paths'] + cmake_externals = cmake_cfg['externals'] - assert 'cmake@1.foo' in cmake_paths_cfg + assert {'spec': 'cmake@1.foo', 'prefix': prefix} in cmake_externals def test_find_external_cmd_not_buildable( - mutable_config, working_env, create_exe): + mutable_config, working_env, mock_executable): """When the user invokes 'spack external find --not-buildable', the config for any package where Spack finds an external version should be marked as not buildable. """ - cmake_path1 = create_exe("cmake", "cmake version 1.foo") + cmake_path1 = mock_executable("cmake", output="echo cmake version 1.foo") os.environ['PATH'] = ':'.join([os.path.dirname(cmake_path1)]) external('find', '--not-buildable', 'cmake') pkgs_cfg = spack.config.get('packages') @@ -128,22 +110,24 @@ def test_find_external_cmd_not_buildable( def test_find_external_cmd_full_repo( - mutable_config, working_env, create_exe, mutable_mock_repo): + mutable_config, working_env, mock_executable, mutable_mock_repo): """Test invoking 'spack external find' with no additional arguments, which iterates through each package in the repository. """ - exe_path1 = create_exe( - "find-externals1-exe", "find-externals1 version 1.foo") + exe_path1 = mock_executable( + "find-externals1-exe", output="echo find-externals1 version 1.foo" + ) + prefix = os.path.dirname(os.path.dirname(exe_path1)) os.environ['PATH'] = ':'.join([os.path.dirname(exe_path1)]) external('find') pkgs_cfg = spack.config.get('packages') pkg_cfg = pkgs_cfg['find-externals1'] - pkg_paths_cfg = pkg_cfg['paths'] + pkg_externals = pkg_cfg['externals'] - assert 'find-externals1@1.foo' in pkg_paths_cfg + assert {'spec': 'find-externals1@1.foo', 'prefix': prefix} in pkg_externals def test_find_external_merge(mutable_config, mutable_mock_repo): @@ -152,26 +136,89 @@ def test_find_external_merge(mutable_config, mutable_mock_repo): """ pkgs_cfg_init = { 'find-externals1': { - 'paths': { - 'find-externals1@1.1': '/preexisting-prefix/' - }, + 'externals': [{ + 'spec': 'find-externals1@1.1', + 'prefix': '/preexisting-prefix/' + }], 'buildable': False } } mutable_config.update_config('packages', pkgs_cfg_init) - - pkg_to_entries = { - 'find-externals1': [ - ExternalPackageEntry(Spec('find-externals1@1.1'), '/x/y1/'), - ExternalPackageEntry(Spec('find-externals1@1.2'), '/x/y2/'), - ] - } + entries = [ + ExternalPackageEntry( + Spec.from_detection('find-externals1@1.1'), '/x/y1/' + ), + ExternalPackageEntry( + Spec.from_detection('find-externals1@1.2'), '/x/y2/' + ) + ] + pkg_to_entries = {'find-externals1': entries} spack.cmd.external._update_pkg_config(pkg_to_entries, False) pkgs_cfg = spack.config.get('packages') pkg_cfg = pkgs_cfg['find-externals1'] - pkg_paths_cfg = pkg_cfg['paths'] + pkg_externals = pkg_cfg['externals'] + + assert {'spec': 'find-externals1@1.1', + 'prefix': '/preexisting-prefix/'} in pkg_externals + assert {'spec': 'find-externals1@1.2', + 'prefix': '/x/y2/'} in pkg_externals + + +def test_list_detectable_packages(mutable_config, mutable_mock_repo): + external("list") + assert external.returncode == 0 + + +def test_packages_yaml_format(mock_executable, mutable_config, monkeypatch): + # Prepare an environment to detect a fake gcc + gcc_exe = mock_executable('gcc', output="echo 4.2.1") + prefix = os.path.dirname(gcc_exe) + monkeypatch.setenv('PATH', prefix) + + # Find the external spec + external('find', 'gcc') + + # Check entries in 'packages.yaml' + packages_yaml = spack.config.get('packages') + assert 'gcc' in packages_yaml + assert 'externals' in packages_yaml['gcc'] + externals = packages_yaml['gcc']['externals'] + assert len(externals) == 1 + external_gcc = externals[0] + assert external_gcc['spec'] == 'gcc@4.2.1 languages=c' + assert external_gcc['prefix'] == os.path.dirname(prefix) + assert 'extra_attributes' in external_gcc + extra_attributes = external_gcc['extra_attributes'] + assert 'prefix' not in extra_attributes + assert extra_attributes['compilers']['c'] == gcc_exe + + +def test_overriding_prefix(mock_executable, mutable_config, monkeypatch): + # Prepare an environment to detect a fake gcc that + # override its external prefix + gcc_exe = mock_executable('gcc', output="echo 4.2.1") + prefix = os.path.dirname(gcc_exe) + monkeypatch.setenv('PATH', prefix) + + @classmethod + def _determine_variants(cls, exes, version_str): + return 'languages=c', { + 'prefix': '/opt/gcc/bin', + 'compilers': {'c': exes[0]} + } + + gcc_cls = spack.repo.path.get_pkg_class('gcc') + monkeypatch.setattr(gcc_cls, 'determine_variants', _determine_variants) + + # Find the external spec + external('find', 'gcc') - assert pkg_paths_cfg['find-externals1@1.1'] == '/preexisting-prefix/' - assert pkg_paths_cfg['find-externals1@1.2'] == '/x/y2/' + # Check entries in 'packages.yaml' + packages_yaml = spack.config.get('packages') + assert 'gcc' in packages_yaml + assert 'externals' in packages_yaml['gcc'] + externals = packages_yaml['gcc']['externals'] + assert len(externals) == 1 + assert externals[0]['prefix'] == '/opt/gcc/bin' diff --git a/lib/spack/spack/test/compilers/detection.py b/lib/spack/spack/test/compilers/detection.py index f36e15804d..634189d02a 100644 --- a/lib/spack/spack/test/compilers/detection.py +++ b/lib/spack/spack/test/compilers/detection.py @@ -104,19 +104,19 @@ def test_clang_version_detection(version_str, expected_version): @pytest.mark.parametrize('version_str,expected_version', [ # C compiler - ('fcc (FCC) 4.0.0 20190314\n' + ('fcc (FCC) 4.0.0a 20190314\n' 'simulating gcc version 6.1\n' 'Copyright FUJITSU LIMITED 2019', - '4.0.0'), + '4.0.0a'), # C++ compiler - ('FCC (FCC) 4.0.0 20190314\n' + ('FCC (FCC) 4.0.0a 20190314\n' 'simulating gcc version 6.1\n' 'Copyright FUJITSU LIMITED 2019', - '4.0.0'), + '4.0.0a'), # Fortran compiler - ('frt (FRT) 4.0.0 20190314\n' + ('frt (FRT) 4.0.0a 20190314\n' 'Copyright FUJITSU LIMITED 2019', - '4.0.0') + '4.0.0a') ]) def test_fj_version_detection(version_str, expected_version): version = spack.compilers.fj.Fj.extract_version_from_output(version_str) diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py index cfe0748c4b..a7a89cc78d 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretize.py @@ -373,7 +373,7 @@ class TestConcretize(object): spec = Spec('externalmodule') spec.concretize() - assert spec['externalmodule'].external_module == 'external-module' + assert spec['externalmodule'].external_modules == ['external-module'] assert 'externalprereq' not in spec assert spec['externalmodule'].compiler.satisfies('gcc') diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretize_preferences.py index df46ed9fe8..c941ccad94 100644 --- a/lib/spack/spack/test/concretize_preferences.py +++ b/lib/spack/spack/test/concretize_preferences.py @@ -198,8 +198,9 @@ all: mpi: [mpich] mpich: buildable: false - paths: - mpich@3.0.4: /dummy/path + externals: + - spec: mpich@3.0.4 + prefix: /dummy/path """) spack.config.set('packages', conf, scope='concretize') @@ -229,8 +230,9 @@ all: mpi: [mpich] mpi: buildable: false - modules: - mpich@3.0.4: dummy + externals: + - spec: mpich@3.0.4 + modules: [dummy] """) spack.config.set('packages', conf, scope='concretize') diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 0c5689ee53..0e97b51cde 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -287,6 +287,10 @@ def _skip_if_missing_executables(request): # FIXME: there's some weird interaction with compilers during concretization. spack.architecture.real_platform = spack.architecture.platform spack.architecture.platform = lambda: spack.platforms.test.Test() +# FIXME: Since we change the architecture above, we have to (re)initialize +# FIXME: the config singleton. If it gets initialized too early with the +# FIXME: actual architecture, tests will fail. +spack.config.config = spack.config._config() # diff --git a/lib/spack/spack/test/data/config/packages.yaml b/lib/spack/spack/test/data/config/packages.yaml index 63e63e525d..c2e8d558b3 100644 --- a/lib/spack/spack/test/data/config/packages.yaml +++ b/lib/spack/spack/test/data/config/packages.yaml @@ -4,15 +4,21 @@ packages: mpi: [openmpi, mpich] externaltool: buildable: False - paths: - externaltool@1.0%gcc@4.5.0: /path/to/external_tool - externaltool@0.9%gcc@4.5.0: /usr + externals: + - spec: externaltool@1.0%gcc@4.5.0 + prefix: /path/to/external_tool + - spec: externaltool@0.9%gcc@4.5.0 + prefix: /usr externalvirtual: buildable: False - paths: - externalvirtual@2.0%clang@3.3: /path/to/external_virtual_clang - externalvirtual@1.0%gcc@4.5.0: /path/to/external_virtual_gcc + externals: + - spec: externalvirtual@2.0%clang@3.3 + prefix: /path/to/external_virtual_clang + - spec: externalvirtual@1.0%gcc@4.5.0 + prefix: /path/to/external_virtual_gcc externalmodule: buildable: False - modules: - externalmodule@1.0%gcc@4.5.0: external-module + externals: + - spec: externalmodule@1.0%gcc@4.5.0 + modules: + - external-module diff --git a/lib/spack/spack/test/data/targets/bgq-rhel6-power7 b/lib/spack/spack/test/data/targets/bgq-rhel6-power7 deleted file mode 100644 index 39da8a49fe..0000000000 --- a/lib/spack/spack/test/data/targets/bgq-rhel6-power7 +++ /dev/null @@ -1,4 +0,0 @@ -processor : 0 -cpu : POWER7 (architected), altivec supported -clock : 3720.000000MHz -revision : 2.1 (pvr 003f 0201) diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 63276c0e7b..a161a22908 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -689,17 +689,17 @@ def test_115_reindex_with_packages_not_in_repo(mutable_database): def test_external_entries_in_db(mutable_database): rec = mutable_database.get_record('mpileaks ^zmpi') assert rec.spec.external_path is None - assert rec.spec.external_module is None + assert not rec.spec.external_modules rec = mutable_database.get_record('externaltool') assert rec.spec.external_path == '/path/to/external_tool' - assert rec.spec.external_module is None + assert not rec.spec.external_modules assert rec.explicit is False rec.spec.package.do_install(fake=True, explicit=True) rec = mutable_database.get_record('externaltool') assert rec.spec.external_path == '/path/to/external_tool' - assert rec.spec.external_module is None + assert not rec.spec.external_modules assert rec.explicit is True diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py index 68b70e0840..0b3f409641 100644 --- a/lib/spack/spack/test/installer.py +++ b/lib/spack/spack/test/installer.py @@ -157,11 +157,11 @@ def test_process_external_package_module(install_mockery, monkeypatch, capfd): monkeypatch.setattr(spack.database.Database, 'get_record', _none) spec.external_path = '/actual/external/path/not/checked' - spec.external_module = 'unchecked_module' + spec.external_modules = ['unchecked_module'] inst._process_external_package(spec.package, False) out = capfd.readouterr()[0] - assert 'has external module in {0}'.format(spec.external_module) in out + assert 'has external module in {0}'.format(spec.external_modules) in out def test_process_binary_cache_tarball_none(install_mockery, monkeypatch, @@ -257,15 +257,15 @@ def test_installer_ensure_ready_errors(install_mockery): fmt = r'cannot be installed locally.*{0}' # Force an external package error - path, module = spec.external_path, spec.external_module + path, modules = spec.external_path, spec.external_modules spec.external_path = '/actual/external/path/not/checked' - spec.external_module = 'unchecked_module' + spec.external_modules = ['unchecked_module'] msg = fmt.format('is external') with pytest.raises(inst.ExternalPackageError, match=msg): installer._ensure_install_ready(spec.package) # Force an upstream package error - spec.external_path, spec.external_module = path, module + spec.external_path, spec.external_modules = path, modules spec.package._installed_upstream = True msg = fmt.format('is upstream') with pytest.raises(inst.UpstreamPackageError, match=msg): diff --git a/lib/spack/spack/test/llnl/util/cpu.py b/lib/spack/spack/test/llnl/util/cpu.py index 319d9e684e..db2beadaf1 100644 --- a/lib/spack/spack/test/llnl/util/cpu.py +++ b/lib/spack/spack/test/llnl/util/cpu.py @@ -37,7 +37,6 @@ from llnl.util.cpu import Microarchitecture # noqa 'darwin-mojave-ivybridge', 'darwin-mojave-haswell', 'darwin-mojave-skylake', - 'bgq-rhel6-power7' ]) def expected_target(request, monkeypatch): cpu = llnl.util.cpu @@ -49,7 +48,7 @@ def expected_target(request, monkeypatch): ) # Monkeypatch for linux - if platform in ('linux', 'bgq'): + if platform == 'linux': monkeypatch.setattr(cpu.detect.platform, 'system', lambda: 'Linux') @contextlib.contextmanager diff --git a/lib/spack/spack/test/llnl/util/tty/log.py b/lib/spack/spack/test/llnl/util/tty/log.py index fdf77e6987..39e65f0388 100644 --- a/lib/spack/spack/test/llnl/util/tty/log.py +++ b/lib/spack/spack/test/llnl/util/tty/log.py @@ -111,7 +111,7 @@ def test_log_subproc_and_echo_output_capfd(capfd, tmpdir): # Tests below use a pseudoterminal to test llnl.util.tty.log # def simple_logger(**kwargs): - """Mock logger (child) process for testing log.keyboard_input.""" + """Mock logger (minion) process for testing log.keyboard_input.""" def handler(signum, frame): running[0] = False signal.signal(signal.SIGUSR1, handler) @@ -125,7 +125,7 @@ def simple_logger(**kwargs): def mock_shell_fg(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.fg() ctl.status() ctl.wait_enabled() @@ -134,7 +134,7 @@ def mock_shell_fg(proc, ctl, **kwargs): def mock_shell_fg_no_termios(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.fg() ctl.status() ctl.wait_disabled_fg() @@ -143,7 +143,7 @@ def mock_shell_fg_no_termios(proc, ctl, **kwargs): def mock_shell_bg(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.bg() ctl.status() ctl.wait_disabled() @@ -152,7 +152,7 @@ def mock_shell_bg(proc, ctl, **kwargs): def mock_shell_tstp_cont(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.tstp() ctl.wait_stopped() @@ -163,7 +163,7 @@ def mock_shell_tstp_cont(proc, ctl, **kwargs): def mock_shell_tstp_tstp_cont(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.tstp() ctl.wait_stopped() @@ -177,7 +177,7 @@ def mock_shell_tstp_tstp_cont(proc, ctl, **kwargs): def mock_shell_tstp_tstp_cont_cont(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.tstp() ctl.wait_stopped() @@ -194,7 +194,7 @@ def mock_shell_tstp_tstp_cont_cont(proc, ctl, **kwargs): def mock_shell_bg_fg(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.bg() ctl.status() ctl.wait_disabled() @@ -207,7 +207,7 @@ def mock_shell_bg_fg(proc, ctl, **kwargs): def mock_shell_bg_fg_no_termios(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.bg() ctl.status() ctl.wait_disabled() @@ -220,7 +220,7 @@ def mock_shell_bg_fg_no_termios(proc, ctl, **kwargs): def mock_shell_fg_bg(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.fg() ctl.status() ctl.wait_enabled() @@ -233,7 +233,7 @@ def mock_shell_fg_bg(proc, ctl, **kwargs): def mock_shell_fg_bg_no_termios(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background.""" + """PseudoShell controller function for test_foreground_background.""" ctl.fg() ctl.status() ctl.wait_disabled_fg() @@ -299,7 +299,7 @@ def test_foreground_background(test_fn, termios_on_or_off, tmpdir): def synchronized_logger(**kwargs): - """Mock logger (child) process for testing log.keyboard_input. + """Mock logger (minion) process for testing log.keyboard_input. This logger synchronizes with the parent process to test that 'v' can toggle output. It is used in ``test_foreground_background_output`` below. @@ -330,7 +330,7 @@ def synchronized_logger(**kwargs): def mock_shell_v_v(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background_output.""" + """Controller function for test_foreground_background_output.""" write_lock = kwargs["write_lock"] v_lock = kwargs["v_lock"] @@ -357,7 +357,7 @@ def mock_shell_v_v(proc, ctl, **kwargs): def mock_shell_v_v_no_termios(proc, ctl, **kwargs): - """PseudoShell master function for test_foreground_background_output.""" + """Controller function for test_foreground_background_output.""" write_lock = kwargs["write_lock"] v_lock = kwargs["v_lock"] @@ -399,9 +399,9 @@ def test_foreground_background_output( shell = PseudoShell(test_fn, synchronized_logger) log_path = str(tmpdir.join("log.txt")) - # Locks for synchronizing with child - write_lock = multiprocessing.Lock() # must be held by child to write - v_lock = multiprocessing.Lock() # held while master is in v mode + # Locks for synchronizing with minion + write_lock = multiprocessing.Lock() # must be held by minion to write + v_lock = multiprocessing.Lock() # held while controller is in v mode with termios_on_or_off(): shell.start( @@ -427,16 +427,16 @@ def test_foreground_background_output( with open(log_path) as log: log = log.read().strip().split("\n") - # Master and child process coordinate with locks such that the child + # Controller and minion process coordinate with locks such that the minion # writes "off" when echo is off, and "on" when echo is on. The # output should contain mostly "on" lines, but may contain an "off" - # or two. This is because the master toggles echo by sending "v" on - # stdin to the child, but this is not synchronized with our locks. + # or two. This is because the controller toggles echo by sending "v" on + # stdin to the minion, but this is not synchronized with our locks. # It's good enough for a test, though. We allow at most 2 "off"'s in # the output to account for the race. assert ( ['forced output', 'on'] == uniq(output) or - output.count("off") <= 2 # if master_fd is a bit slow + output.count("off") <= 2 # if controller_fd is a bit slow ) # log should be off for a while, then on, then off diff --git a/lib/spack/spack/test/module_parsing.py b/lib/spack/spack/test/module_parsing.py index 0bf485913f..8dc06b058b 100644 --- a/lib/spack/spack/test/module_parsing.py +++ b/lib/spack/spack/test/module_parsing.py @@ -9,7 +9,7 @@ import spack from spack.util.module_cmd import ( module, - get_path_from_module, + path_from_modules, get_path_args_from_module_line, get_path_from_module_contents ) @@ -55,7 +55,7 @@ def test_get_path_from_module_faked(monkeypatch): return line monkeypatch.setattr(spack.util.module_cmd, 'module', fake_module) - path = get_path_from_module('mod') + path = path_from_modules(['mod']) assert path == '/path/to' @@ -116,10 +116,10 @@ def test_get_argument_from_module_line(): bad_lines = ['prepend_path(PATH,/lib/path)', 'prepend-path (LD_LIBRARY_PATH) /lib/path'] - assert all(get_path_args_from_module_line(l) == ['/lib/path'] - for l in simple_lines) - assert all(get_path_args_from_module_line(l) == ['/lib/path', '/pkg/path'] - for l in complex_lines) + assert all(get_path_args_from_module_line(x) == ['/lib/path'] + for x in simple_lines) + assert all(get_path_args_from_module_line(x) == ['/lib/path', '/pkg/path'] + for x in complex_lines) for bl in bad_lines: with pytest.raises(ValueError): get_path_args_from_module_line(bl) diff --git a/lib/spack/spack/test/util/executable.py b/lib/spack/spack/test/util/executable.py index 5e8795f4bf..ae2859ea4b 100644 --- a/lib/spack/spack/test/util/executable.py +++ b/lib/spack/spack/test/util/executable.py @@ -40,6 +40,36 @@ print(u'\\xc3') assert u'\xc3' == script(output=str).strip() +def test_which_relative_path_with_slash(tmpdir, working_env): + tmpdir.ensure('exe') + path = str(tmpdir.join('exe')) + os.environ['PATH'] = '' + + with tmpdir.as_cwd(): + no_exe = ex.which('./exe') + assert no_exe is None + + fs.set_executable(path) + exe = ex.which('./exe') + assert exe.path == path + + +def test_which_with_slash_ignores_path(tmpdir, working_env): + tmpdir.ensure('exe') + tmpdir.ensure('bin{0}exe'.format(os.path.sep)) + + path = str(tmpdir.join('exe')) + wrong_path = str(tmpdir.join('bin', 'exe')) + os.environ['PATH'] = os.path.dirname(wrong_path) + + fs.set_executable(path) + fs.set_executable(wrong_path) + + with tmpdir.as_cwd(): + exe = ex.which('./exe') + assert exe.path == path + + def test_which(tmpdir): os.environ["PATH"] = str(tmpdir) assert ex.which("spack-test-exe") is None diff --git a/lib/spack/spack/util/compression.py b/lib/spack/spack/util/compression.py index 1688b49f1b..ebbe0519d0 100644 --- a/lib/spack/spack/util/compression.py +++ b/lib/spack/spack/util/compression.py @@ -14,7 +14,7 @@ EXTS = ["gz", "bz2", "xz", "Z"] NOTAR_EXTS = ["zip", "tgz", "tbz2", "txz"] # Add PRE_EXTS and EXTS last so that .tar.gz is matched *before* .tar or .gz -ALLOWED_ARCHIVE_TYPES = [".".join(l) for l in product( +ALLOWED_ARCHIVE_TYPES = [".".join(ext) for ext in product( PRE_EXTS, EXTS)] + PRE_EXTS + EXTS + NOTAR_EXTS @@ -36,7 +36,7 @@ def decompressor_for(path, extension=None): bunzip2 = which('bunzip2', required=True) return bunzip2 tar = which('tar', required=True) - tar.add_default_arg('-xf') + tar.add_default_arg('-oxf') return tar diff --git a/lib/spack/spack/util/crypto.py b/lib/spack/spack/util/crypto.py index 566e99da21..74a6ee06bd 100644 --- a/lib/spack/spack/util/crypto.py +++ b/lib/spack/spack/util/crypto.py @@ -133,7 +133,7 @@ class Checker(object): @property def hash_name(self): """Get the name of the hash function this Checker is using.""" - return self.hash_fun().name + return self.hash_fun().name.lower() def check(self, filename): """Read the file with the specified name and check its checksum diff --git a/lib/spack/spack/util/executable.py b/lib/spack/spack/util/executable.py index 28656b0a32..097da3337e 100644 --- a/lib/spack/spack/util/executable.py +++ b/lib/spack/spack/util/executable.py @@ -233,10 +233,15 @@ def which_string(*args, **kwargs): path = path.split(os.pathsep) for name in args: - for directory in path: - exe = os.path.join(directory, name) + if os.path.sep in name: + exe = os.path.abspath(name) if os.path.isfile(exe) and os.access(exe, os.X_OK): return exe + else: + for directory in path: + exe = os.path.join(directory, name) + if os.path.isfile(exe) and os.access(exe, os.X_OK): + return exe if required: raise CommandNotFoundError( diff --git a/lib/spack/spack/util/module_cmd.py b/lib/spack/spack/util/module_cmd.py index 7017b2ecb6..bc994fd4b4 100644 --- a/lib/spack/spack/util/module_cmd.py +++ b/lib/spack/spack/util/module_cmd.py @@ -135,18 +135,34 @@ def get_path_args_from_module_line(line): return paths -def get_path_from_module(mod): - """Inspects a TCL module for entries that indicate the absolute path - at which the library supported by said module can be found. +def path_from_modules(modules): + """Inspect a list of TCL modules for entries that indicate the absolute + path at which the library supported by said module can be found. + + Args: + modules (list): module files to be loaded to get an external package + + Returns: + Guess of the prefix path where the package """ - # Read the module - text = module('show', mod).split('\n') - - p = get_path_from_module_contents(text, mod) - if p and not os.path.exists(p): - tty.warn("Extracted path from module does not exist:" - "\n\tExtracted path: " + p) - return p + assert isinstance(modules, list), 'the "modules" argument must be a list' + + best_choice = None + for module_name in modules: + # Read the current module and return a candidate path + text = module('show', module_name).split('\n') + candidate_path = get_path_from_module_contents(text, module_name) + + if candidate_path and not os.path.exists(candidate_path): + msg = ("Extracted path from module does not exist " + "[module={0}, path={0}]") + tty.warn(msg.format(module_name, candidate_path)) + + # If anything is found, then it's the best choice. This means + # that we give preference to the last module to be loaded + # for packages requiring to load multiple modules in sequence + best_choice = candidate_path or best_choice + return best_choice def get_path_from_module_contents(text, module_name): diff --git a/lib/spack/spack/util/spack_yaml.py b/lib/spack/spack/util/spack_yaml.py index 46e8e35543..565a9be4ea 100644 --- a/lib/spack/spack/util/spack_yaml.py +++ b/lib/spack/spack/util/spack_yaml.py @@ -13,7 +13,7 @@ """ import ctypes - +import collections from ordereddict_backport import OrderedDict from six import string_types, StringIO @@ -332,6 +332,22 @@ def dump_annotated(data, stream=None, *args, **kwargs): return getvalue() +def sorted_dict(dict_like): + """Return an ordered dict with all the fields sorted recursively. + + Args: + dict_like (dict): dictionary to be sorted + + Returns: + dictionary sorted recursively + """ + result = syaml_dict(sorted(dict_like.items())) + for key, value in result.items(): + if isinstance(value, collections.Mapping): + result[key] = sorted_dict(value) + return result + + class SpackYAMLError(spack.error.SpackError): """Raised when there are issues with YAML parsing.""" def __init__(self, msg, yaml_error): diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 0c7399c3fb..44e03edb5c 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -40,7 +40,7 @@ __all__ = ['Version', 'VersionRange', 'VersionList', 'ver'] VALID_VERSION = r'[A-Za-z0-9_.-]' # Infinity-like versions. The order in the list implies the comparison rules -infinity_versions = ['develop', 'master', 'head', 'trunk'] +infinity_versions = ['develop', 'main', 'master', 'head', 'trunk'] def int_if_int(string): diff --git a/share/spack/docker/centos-6.dockerfile b/share/spack/docker/centos-6.dockerfile index 8c971124a5..1ba58d66af 100644 --- a/share/spack/docker/centos-6.dockerfile +++ b/share/spack/docker/centos-6.dockerfile @@ -9,20 +9,6 @@ ENV DOCKERFILE_BASE=centos \ CURRENTLY_BUILDING_DOCKER_IMAGE=1 \ container=docker -COPY bin $SPACK_ROOT/bin -COPY etc $SPACK_ROOT/etc -COPY lib $SPACK_ROOT/lib -COPY share $SPACK_ROOT/share -COPY var $SPACK_ROOT/var -RUN mkdir -p $SPACK_ROOT/opt/spack - -RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/docker-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/interactive-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/spack-env - RUN yum update -y \ && yum install -y epel-release \ && yum update -y \ @@ -50,6 +36,20 @@ RUN yum update -y \ && rm -rf /var/cache/yum \ && yum clean all +COPY bin $SPACK_ROOT/bin +COPY etc $SPACK_ROOT/etc +COPY lib $SPACK_ROOT/lib +COPY share $SPACK_ROOT/share +COPY var $SPACK_ROOT/var +RUN mkdir -p $SPACK_ROOT/opt/spack + +RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/docker-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/interactive-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/spack-env + RUN mkdir -p /root/.spack \ && cp $SPACK_ROOT/share/spack/docker/modules.yaml \ /root/.spack/modules.yaml \ diff --git a/share/spack/docker/centos-7.dockerfile b/share/spack/docker/centos-7.dockerfile index 292663d922..c8dc75a0f3 100644 --- a/share/spack/docker/centos-7.dockerfile +++ b/share/spack/docker/centos-7.dockerfile @@ -9,20 +9,6 @@ ENV DOCKERFILE_BASE=centos \ CURRENTLY_BUILDING_DOCKER_IMAGE=1 \ container=docker -COPY bin $SPACK_ROOT/bin -COPY etc $SPACK_ROOT/etc -COPY lib $SPACK_ROOT/lib -COPY share $SPACK_ROOT/share -COPY var $SPACK_ROOT/var -RUN mkdir -p $SPACK_ROOT/opt/spack - -RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/docker-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/interactive-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/spack-env - RUN yum update -y \ && yum install -y epel-release \ && yum update -y \ @@ -50,6 +36,20 @@ RUN yum update -y \ && rm -rf /var/cache/yum \ && yum clean all +COPY bin $SPACK_ROOT/bin +COPY etc $SPACK_ROOT/etc +COPY lib $SPACK_ROOT/lib +COPY share $SPACK_ROOT/share +COPY var $SPACK_ROOT/var +RUN mkdir -p $SPACK_ROOT/opt/spack + +RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/docker-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/interactive-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/spack-env + RUN mkdir -p /root/.spack \ && cp $SPACK_ROOT/share/spack/docker/modules.yaml \ /root/.spack/modules.yaml \ diff --git a/share/spack/docker/ubuntu-1604.dockerfile b/share/spack/docker/ubuntu-1604.dockerfile index 1f7db8bea9..c07cde5918 100644 --- a/share/spack/docker/ubuntu-1604.dockerfile +++ b/share/spack/docker/ubuntu-1604.dockerfile @@ -9,20 +9,6 @@ ENV DOCKERFILE_BASE=ubuntu:16.04 \ CURRENTLY_BUILDING_DOCKER_IMAGE=1 \ container=docker -COPY bin $SPACK_ROOT/bin -COPY etc $SPACK_ROOT/etc -COPY lib $SPACK_ROOT/lib -COPY share $SPACK_ROOT/share -COPY var $SPACK_ROOT/var -RUN mkdir -p $SPACK_ROOT/opt/spack - -RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/docker-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/interactive-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/spack-env - RUN apt-get -yqq update \ && apt-get -yqq install --no-install-recommends \ build-essential \ @@ -48,6 +34,20 @@ RUN apt-get -yqq update \ && pip3 install boto3 \ && rm -rf /var/lib/apt/lists/* +COPY bin $SPACK_ROOT/bin +COPY etc $SPACK_ROOT/etc +COPY lib $SPACK_ROOT/lib +COPY share $SPACK_ROOT/share +COPY var $SPACK_ROOT/var +RUN mkdir -p $SPACK_ROOT/opt/spack + +RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/docker-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/interactive-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/spack-env + # Add LANG default to en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 ENV LANG en_US.UTF-8 diff --git a/share/spack/docker/ubuntu-1804.dockerfile b/share/spack/docker/ubuntu-1804.dockerfile index a8d9577b66..1ecef10652 100644 --- a/share/spack/docker/ubuntu-1804.dockerfile +++ b/share/spack/docker/ubuntu-1804.dockerfile @@ -9,20 +9,6 @@ ENV DOCKERFILE_BASE=ubuntu \ CURRENTLY_BUILDING_DOCKER_IMAGE=1 \ container=docker -COPY bin $SPACK_ROOT/bin -COPY etc $SPACK_ROOT/etc -COPY lib $SPACK_ROOT/lib -COPY share $SPACK_ROOT/share -COPY var $SPACK_ROOT/var -RUN mkdir -p $SPACK_ROOT/opt/spack - -RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/docker-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/interactive-shell \ - && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ - /usr/local/bin/spack-env - RUN apt-get -yqq update \ && apt-get -yqq install --no-install-recommends \ build-essential \ @@ -48,6 +34,20 @@ RUN apt-get -yqq update \ && pip3 install boto3 \ && rm -rf /var/lib/apt/lists/* +COPY bin $SPACK_ROOT/bin +COPY etc $SPACK_ROOT/etc +COPY lib $SPACK_ROOT/lib +COPY share $SPACK_ROOT/share +COPY var $SPACK_ROOT/var +RUN mkdir -p $SPACK_ROOT/opt/spack + +RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/docker-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/interactive-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/spack-env + # Add LANG default to en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 ENV LANG en_US.UTF-8 diff --git a/share/spack/qa/configuration/packages.yaml b/share/spack/qa/configuration/packages.yaml index 076095a7ca..bd853c2386 100644 --- a/share/spack/qa/configuration/packages.yaml +++ b/share/spack/qa/configuration/packages.yaml @@ -1,26 +1,32 @@ packages: cmake: buildable: False - paths: - cmake@3.12.4: /usr + externals: + - spec: cmake@3.12.4 + prefix: /usr r: buildable: False - paths: - r@3.4.4: /usr + externals: + - spec: r@3.4.4 + prefix: /usr perl: buildable: False - paths: - perl@5.26.1: /usr + externals: + - spec: perl@5.26.1 + prefix: /usr findutils: buildable: False - paths: - findutils@4.6.0: /usr + externals: + - spec: findutils@4.6.0 + prefix: /usr openssl: buildable: False - paths: - openssl@1.1.1: /usr + externals: + - spec: openssl@1.1.1 + prefix: /usr libpciaccess: buildable: False - paths: - libpciaccess@0.13.5: /usr + externals: + - spec: libpciaccess@0.13.5 + prefix: /usr diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 11bd906ad0..876ed0c647 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -570,7 +570,7 @@ _spack_config() { then SPACK_COMPREPLY="-h --help --scope" else - SPACK_COMPREPLY="get blame edit list add remove rm" + SPACK_COMPREPLY="get blame edit list add remove rm update revert" fi } @@ -632,6 +632,24 @@ _spack_config_rm() { fi } +_spack_config_update() { + if $list_options + then + SPACK_COMPREPLY="-h --help -y --yes-to-all" + else + _config_sections + fi +} + +_spack_config_revert() { + if $list_options + then + SPACK_COMPREPLY="-h --help -y --yes-to-all" + else + _config_sections + fi +} + _spack_containerize() { SPACK_COMPREPLY="-h --help" } @@ -639,7 +657,7 @@ _spack_containerize() { _spack_create() { if $list_options then - SPACK_COMPREPLY="-h --help --keep-stage -n --name -t --template -r --repo -N --namespace -f --force --skip-editor" + SPACK_COMPREPLY="-h --help --keep-stage -n --name -t --template -r --repo -N --namespace -f --force --skip-editor -b --batch" else SPACK_COMPREPLY="" fi @@ -725,7 +743,7 @@ _spack_env() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="activate deactivate create remove rm list ls status st loads view" + SPACK_COMPREPLY="activate deactivate create remove rm list ls status st loads view update revert" fi } @@ -803,6 +821,24 @@ _spack_env_view() { fi } +_spack_env_update() { + if $list_options + then + SPACK_COMPREPLY="-h --help -y --yes-to-all" + else + _environments + fi +} + +_spack_env_revert() { + if $list_options + then + SPACK_COMPREPLY="-h --help -y --yes-to-all" + else + _environments + fi +} + _spack_extensions() { if $list_options then @@ -817,7 +853,7 @@ _spack_external() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="find" + SPACK_COMPREPLY="find list" fi } @@ -830,6 +866,10 @@ _spack_external_find() { fi } +_spack_external_list() { + SPACK_COMPREPLY="-h --help" +} + _spack_fetch() { if $list_options then diff --git a/share/spack/templates/container/Dockerfile b/share/spack/templates/container/Dockerfile index 2f1370fdb3..c65fce5627 100644 --- a/share/spack/templates/container/Dockerfile +++ b/share/spack/templates/container/Dockerfile @@ -7,7 +7,7 @@ RUN mkdir {{ paths.environment }} \ {{ manifest }} > {{ paths.environment }}/spack.yaml # Install the software, remove unecessary deps -RUN cd {{ paths.environment }} && spack env activate . && spack install && spack gc -y +RUN cd {{ paths.environment }} && spack env activate . && spack install --fail-fast && spack gc -y {% if strip %} # Strip all the binaries diff --git a/share/spack/templates/container/singularity.def b/share/spack/templates/container/singularity.def index 7ba0a3ff1b..44b22aeae6 100644 --- a/share/spack/templates/container/singularity.def +++ b/share/spack/templates/container/singularity.def @@ -12,7 +12,7 @@ EOF # Install all the required software . /opt/spack/share/spack/setup-env.sh spack env activate . - spack install + spack install --fail-fast spack gc -y spack env deactivate spack env activate --sh -d . >> {{ paths.environment }}/environment_modifications.sh diff --git a/var/spack/repos/builtin.mock/packages/corge/package.py b/var/spack/repos/builtin.mock/packages/corge/package.py index 48f9ac8e6e..3bd8b34e47 100644 --- a/var/spack/repos/builtin.mock/packages/corge/package.py +++ b/var/spack/repos/builtin.mock/packages/corge/package.py @@ -6,6 +6,7 @@ from spack import * import os +import sys class Corge(Package): @@ -101,7 +102,6 @@ main(int argc, char* argv[]) return 0; } ''' - mkdirp(prefix.lib64) mkdirp('%s/corge' % prefix.include) mkdirp('%s/corge' % self.stage.source_path) with open('%s/corge_version.h' % self.stage.source_path, 'w') as f: @@ -113,6 +113,8 @@ main(int argc, char* argv[]) with open('%s/corge/corgegator.cc' % self.stage.source_path, 'w') as f: f.write(corgegator_cc) gpp = which('/usr/bin/g++') + if sys.platform == 'darwin': + gpp = which('/usr/bin/clang++') gpp('-Dcorge_EXPORTS', '-I%s' % self.stage.source_path, '-I%s' % spec['quux'].prefix.include, @@ -127,22 +129,42 @@ main(int argc, char* argv[]) '-O2', '-g', '-DNDEBUG', '-fPIC', '-o', 'corgegator.cc.o', '-c', 'corge/corgegator.cc') - gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-shared', - '-Wl,-soname,libcorge.so', '-o', 'libcorge.so', 'corge.cc.o', - '-Wl,-rpath,%s:%s::::' % - (spec['quux'].prefix.lib64, spec['garply'].prefix.lib64), - '%s/libquux.so' % spec['quux'].prefix.lib64, - '%s/libgarply.so' % spec['garply'].prefix.lib64) - gpp('-O2', '-g', '-DNDEBUG', '-rdynamic', - 'corgegator.cc.o', '-o', 'corgegator', - '-Wl,-rpath,%s:%s:%s:::' % (prefix.lib64, - spec['quux'].prefix.lib64, - spec['garply'].prefix.lib64), - 'libcorge.so', - '%s/libquux.so' % spec['quux'].prefix.lib64, - '%s/libgarply.so' % spec['garply'].prefix.lib64) + if sys.platform == 'darwin': + gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-dynamiclib', + '-install_name', '@rpath/libcorge.dylib', + '-o', 'libcorge.dylib', 'corge.cc.o', + '-Wl,-rpath,%s' % spec['quux'].prefix.lib64, + '-Wl,-rpath,%s' % spec['garply'].prefix.lib64, + '%s/libquux.dylib' % spec['quux'].prefix.lib64, + '%s/libgarply.dylib' % spec['garply'].prefix.lib64) + gpp('-O2', '-g', '-DNDEBUG', '-rdynamic', + 'corgegator.cc.o', '-o', 'corgegator', + '-Wl,-rpath,%s' % prefix.lib64, + '-Wl,-rpath,%s' % spec['quux'].prefix.lib64, + '-Wl,-rpath,%s' % spec['garply'].prefix.lib64, + 'libcorge.dylib', + '%s/libquux.dylib' % spec['quux'].prefix.lib64, + '%s/libgarply.dylib' % spec['garply'].prefix.lib64) + mkdirp(prefix.lib64) + copy('libcorge.dylib', '%s/libcorge.dylib' % prefix.lib64) + else: + gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-shared', + '-Wl,-soname,libcorge.so', '-o', 'libcorge.so', 'corge.cc.o', + '-Wl,-rpath,%s:%s::::' % + (spec['quux'].prefix.lib64, spec['garply'].prefix.lib64), + '%s/libquux.so' % spec['quux'].prefix.lib64, + '%s/libgarply.so' % spec['garply'].prefix.lib64) + gpp('-O2', '-g', '-DNDEBUG', '-rdynamic', + 'corgegator.cc.o', '-o', 'corgegator', + '-Wl,-rpath,%s' % prefix.lib64, + '-Wl,-rpath,%s' % spec['quux'].prefix.lib64, + '-Wl,-rpath,%s' % spec['garply'].prefix.lib64, + 'libcorge.so', + '%s/libquux.so' % spec['quux'].prefix.lib64, + '%s/libgarply.so' % spec['garply'].prefix.lib64) + mkdirp(prefix.lib64) + copy('libcorge.so', '%s/libcorge.so' % prefix.lib64) copy('corgegator', '%s/corgegator' % prefix.lib64) - copy('libcorge.so', '%s/libcorge.so' % prefix.lib64) copy('%s/corge/corge.h' % self.stage.source_path, '%s/corge/corge.h' % prefix.include) mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin.mock/packages/find-externals1/package.py b/var/spack/repos/builtin.mock/packages/find-externals1/package.py index 25e26dcced..9f5f94aaab 100644 --- a/var/spack/repos/builtin.mock/packages/find-externals1/package.py +++ b/var/spack/repos/builtin.mock/packages/find-externals1/package.py @@ -2,12 +2,11 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - import os import re +import spack.package + class FindExternals1(AutotoolsPackage): executables = ['find-externals1-exe'] @@ -31,4 +30,6 @@ class FindExternals1(AutotoolsPackage): match = re.search(r'find-externals1.*version\s+(\S+)', output) if match: version_str = match.group(1) - return Spec('find-externals1@{0}'.format(version_str)) + return Spec.from_detection( + 'find-externals1@{0}'.format(version_str) + ) diff --git a/var/spack/repos/builtin.mock/packages/garply/package.py b/var/spack/repos/builtin.mock/packages/garply/package.py index 8fa0778287..289e172c91 100644 --- a/var/spack/repos/builtin.mock/packages/garply/package.py +++ b/var/spack/repos/builtin.mock/packages/garply/package.py @@ -6,6 +6,7 @@ from spack import * import os +import sys class Garply(Package): @@ -73,7 +74,6 @@ main() garply_version_h = '''const int garply_version_major = %s; const int garply_version_minor = %s; ''' - mkdirp(prefix.lib64) mkdirp('%s/garply' % prefix.include) mkdirp('%s/garply' % self.stage.source_path) with open('%s/garply_version.h' % self.stage.source_path, 'w') as f: @@ -86,6 +86,8 @@ const int garply_version_minor = %s; self.stage.source_path, 'w') as f: f.write(garplinator_cc) gpp = which('/usr/bin/g++') + if sys.platform == 'darwin': + gpp = which('/usr/bin/clang++') gpp('-Dgarply_EXPORTS', '-I%s' % self.stage.source_path, '-O2', '-g', '-DNDEBUG', '-fPIC', @@ -96,13 +98,28 @@ const int garply_version_minor = %s; '-O2', '-g', '-DNDEBUG', '-fPIC', '-o', 'garplinator.cc.o', '-c', '%s/garply/garplinator.cc' % self.stage.source_path) - gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-shared', - '-Wl,-soname,libgarply.so', '-o', 'libgarply.so', 'garply.cc.o') - gpp('-O2', '-g', '-DNDEBUG', '-rdynamic', - 'garplinator.cc.o', '-o', 'garplinator', - '-Wl,-rpath,%s' % prefix.lib64, - 'libgarply.so') - copy('libgarply.so', '%s/libgarply.so' % prefix.lib64) + if sys.platform == 'darwin': + gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-dynamiclib', + '-Wl,-headerpad_max_install_names', '-o', 'libgarply.dylib', + '-install_name', '@rpath/libgarply.dylib', + 'garply.cc.o') + gpp('-O2', '-g', '-DNDEBUG', '-Wl,-search_paths_first', + '-Wl,-headerpad_max_install_names', + 'garplinator.cc.o', '-o', 'garplinator', + '-Wl,-rpath,%s' % prefix.lib64, + 'libgarply.dylib') + mkdirp(prefix.lib64) + copy('libgarply.dylib', '%s/libgarply.dylib' % prefix.lib64) + else: + gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-shared', + '-Wl,-soname,libgarply.so', + '-o', 'libgarply.so', 'garply.cc.o') + gpp('-O2', '-g', '-DNDEBUG', '-rdynamic', + 'garplinator.cc.o', '-o', 'garplinator', + '-Wl,-rpath,%s' % prefix.lib64, + 'libgarply.so') + mkdirp(prefix.lib64) + copy('libgarply.so', '%s/libgarply.so' % prefix.lib64) copy('garplinator', '%s/garplinator' % prefix.lib64) copy('%s/garply/garply.h' % self.stage.source_path, '%s/garply/garply.h' % prefix.include) diff --git a/var/spack/repos/builtin.mock/packages/quux/package.py b/var/spack/repos/builtin.mock/packages/quux/package.py index 6db243f154..80508d3b55 100644 --- a/var/spack/repos/builtin.mock/packages/quux/package.py +++ b/var/spack/repos/builtin.mock/packages/quux/package.py @@ -6,6 +6,7 @@ from spack import * import os +import sys class Quux(Package): @@ -87,7 +88,6 @@ main() quux_version_h = '''const int quux_version_major = %s; const int quux_version_minor = %s; ''' - mkdirp(prefix.lib64) mkdirp('%s/quux' % prefix.include) with open('%s/quux_version.h' % self.stage.source_path, 'w') as f: f.write(quux_version_h % (self.version[0], self.version[1:])) @@ -98,6 +98,8 @@ const int quux_version_minor = %s; with open('%s/quux/quuxifier.cc' % self.stage.source_path, 'w') as f: f.write(quuxifier_cc) gpp = which('/usr/bin/g++') + if sys.platform == 'darwin': + gpp = which('/usr/bin/clang++') gpp('-Dquux_EXPORTS', '-I%s' % self.stage.source_path, '-I%s' % spec['garply'].prefix.include, @@ -110,18 +112,36 @@ const int quux_version_minor = %s; '-O2', '-g', '-DNDEBUG', '-fPIC', '-o', 'quuxifier.cc.o', '-c', 'quux/quuxifier.cc') - gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-shared', - '-Wl,-soname,libquux.so', '-o', 'libquux.so', 'quux.cc.o', - '-Wl,-rpath,%s:%s::::' % (prefix.lib64, - spec['garply'].prefix.lib64), - '%s/libgarply.so' % spec['garply'].prefix.lib64) - gpp('-O2', '-g', '-DNDEBUG', '-rdynamic', - 'quuxifier.cc.o', '-o', 'quuxifier', - '-Wl,-rpath,%s:%s::::' % (prefix.lib64, - spec['garply'].prefix.lib64), - 'libquux.so', - '%s/libgarply.so' % spec['garply'].prefix.lib64) - copy('libquux.so', '%s/libquux.so' % prefix.lib64) + if sys.platform == 'darwin': + gpp('-fPIC', '-O2', '-g', '-DNDEBUG', + '-dynamiclib', '-Wl,-headerpad_max_install_names', + '-o', 'libquux.dylib', + '-install_name', '@rpath/libcorge.dylib', + 'quux.cc.o', '-Wl,-rpath,%s' % prefix.lib64, + '-Wl,-rpath,%s' % spec['garply'].prefix.lib64, + '%s/libgarply.dylib' % spec['garply'].prefix.lib64) + gpp('-O2', '-g', '-DNDEBUG', + 'quuxifier.cc.o', '-o', 'quuxifier', + '-Wl,-rpath,%s' % prefix.lib64, + '-Wl,-rpath,%s' % spec['garply'].prefix.lib64, + 'libquux.dylib', + '%s/libgarply.dylib' % spec['garply'].prefix.lib64) + mkdirp(prefix.lib64) + copy('libquux.dylib', '%s/libquux.dylib' % prefix.lib64) + else: + gpp('-fPIC', '-O2', '-g', '-DNDEBUG', '-shared', + '-Wl,-soname,libquux.so', '-o', 'libquux.so', 'quux.cc.o', + '-Wl,-rpath,%s:%s::::' % (prefix.lib64, + spec['garply'].prefix.lib64), + '%s/libgarply.so' % spec['garply'].prefix.lib64) + gpp('-O2', '-g', '-DNDEBUG', '-rdynamic', + 'quuxifier.cc.o', '-o', 'quuxifier', + '-Wl,-rpath,%s:%s::::' % (prefix.lib64, + spec['garply'].prefix.lib64), + 'libquux.so', + '%s/libgarply.so' % spec['garply'].prefix.lib64) + mkdirp(prefix.lib64) + copy('libquux.so', '%s/libquux.so' % prefix.lib64) copy('quuxifier', '%s/quuxifier' % prefix.lib64) copy('%s/quux/quux.h' % self.stage.source_path, '%s/quux/quux.h' % prefix.include) diff --git a/var/spack/repos/builtin/packages/abinit/package.py b/var/spack/repos/builtin/packages/abinit/package.py index 6f07ffee81..4378c28213 100644 --- a/var/spack/repos/builtin/packages/abinit/package.py +++ b/var/spack/repos/builtin/packages/abinit/package.py @@ -56,6 +56,9 @@ class Abinit(AutotoolsPackage): variant('hdf5', default=False, description='Enables HDF5+Netcdf4 with MPI. WARNING: experimental') + variant('wannier90', default=False, + description='Enables the Wannier90 library') + # Add dependencies # currently one cannot forward options to virtual packages, see #1712. # depends_on('blas', when='~openmp') @@ -84,6 +87,8 @@ class Abinit(AutotoolsPackage): # Cannot ask for +scalapack if it does not depend on MPI conflicts('+scalapack', when='~mpi') + depends_on("wannier90+shared", when='+wannier90') + # Elpa is a substitute for scalapack and needs mpi # conflicts('+elpa', when='~mpi') # conflicts('+elpa', when='+scalapack') @@ -95,12 +100,25 @@ class Abinit(AutotoolsPackage): options = [] oapp = options.append + if '+wannier90' in spec: + oapp('--with-wannier90-libs=-L{0}' + .format(spec['wannier90'].prefix.lib + ' -lwannier -lm')) + oapp('--with-wannier90-incs=-I{0}' + .format(spec['wannier90'].prefix.modules)) + oapp('--with-wannier90-bins={0}' + .format(spec['wannier90'].prefix.bin)) + oapp('--enable-connectors') + oapp('--with-dft-flavor=wannier90') + if '+mpi' in spec: # MPI version: # let the configure script auto-detect MPI support from mpi_prefix oapp('--with-mpi-prefix={0}'.format(spec['mpi'].prefix)) oapp('--enable-mpi=yes') oapp('--enable-mpi-io=yes') + oapp('MPIFC={0}/mpifc'.format(spec['mpi'].prefix.bin)) + if '~wannier90' in spec: + oapp('--with-dft-flavor=atompaw+libxc') # Activate OpenMP in Abinit Fortran code. if '+openmp' in spec: @@ -129,7 +147,6 @@ class Abinit(AutotoolsPackage): '--with-fft-incs=-I%s' % spec['fftw'].prefix.include, '--with-fft-libs=-L%s %s' % (spec['fftw'].prefix.lib, fftlibs), ]) - oapp('--with-dft-flavor=atompaw+libxc') # LibXC library libxc = spec['libxc:fortran'] diff --git a/var/spack/repos/builtin/packages/abseil-cpp/package.py b/var/spack/repos/builtin/packages/abseil-cpp/package.py index c40b2353bf..24ac21fd63 100644 --- a/var/spack/repos/builtin/packages/abseil-cpp/package.py +++ b/var/spack/repos/builtin/packages/abseil-cpp/package.py @@ -10,10 +10,11 @@ class AbseilCpp(CMakePackage): """Abseil Common Libraries (C++) """ homepage = "https://abseil.io/" - url = "https://github.com/abseil/abseil-cpp/archive/20180600.tar.gz" + url = "https://github.com/abseil/abseil-cpp/archive/20200225.2.tar.gz" maintainers = ['jcftang'] + version('20200225.2', sha256='f41868f7a938605c92936230081175d1eae87f6ea2c248f41077c8f88316f111') version('20200225.1', sha256='0db0d26f43ba6806a8a3338da3e646bb581f0ca5359b3a201d8fb8e4752fd5f8') version('20190808', sha256='8100085dada279bf3ee00cd064d43b5f55e5d913be0dfe2906f06f8f28d5b37e') version('20181200', sha256='e2b53bfb685f5d4130b84c4f3050c81bf48c497614dc85d91dbd3ed9129bce6d') diff --git a/var/spack/repos/builtin/packages/abyss/fix_BloomFilter.hpp.patch b/var/spack/repos/builtin/packages/abyss/fix_BloomFilter.hpp.patch new file mode 100644 index 0000000000..b648cb6122 --- /dev/null +++ b/var/spack/repos/builtin/packages/abyss/fix_BloomFilter.hpp.patch @@ -0,0 +1,11 @@ +--- spack-src/lib/bloomfilter/BloomFilter.hpp.org 2018-10-17 07:04:45.000000000 +0900 ++++ spack-src/lib/bloomfilter/BloomFilter.hpp 2020-07-16 15:41:03.607766127 +0900 +@@ -230,7 +230,7 @@ + + void writeHeader(std::ostream& out) const { + FileHeader header; +- strncpy(header.magic, "BlOOMFXX", 8); ++ memcpy(header.magic, "BlOOMFXX", 8); + char magic[9]; + strncpy(magic, header.magic, 8); + magic[8] = '\0'; diff --git a/var/spack/repos/builtin/packages/abyss/package.py b/var/spack/repos/builtin/packages/abyss/package.py index 339441392d..c7eddfd835 100644 --- a/var/spack/repos/builtin/packages/abyss/package.py +++ b/var/spack/repos/builtin/packages/abyss/package.py @@ -3,9 +3,19 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import numbers from spack import * +def is_multiple_32(x): + """multiple of 32 """ + try: + return isinstance(int(x), numbers.Integral) and \ + not isinstance(x, bool) and int(x) % 32 == 0 + except ValueError: + return False + + class Abyss(AutotoolsPackage): """ABySS is a de novo, parallel, paired-end sequence assembler that is designed for short reads. The single-processor version @@ -18,9 +28,8 @@ class Abyss(AutotoolsPackage): version('2.0.2', sha256='d87b76edeac3a6fb48f24a1d63f243d8278a324c9a5eb29027b640f7089422df') version('1.5.2', sha256='8a52387f963afb7b63db4c9b81c053ed83956ea0a3981edcad554a895adf84b1') - variant('maxk', values=int, default=0, - description='''set the maximum k-mer length. - This value must be a multiple of 32''') + variant('maxk', default=128, values=is_multiple_32, + description='set the maximum k-mer length.') depends_on('autoconf', type='build') depends_on('automake', type='build') @@ -48,3 +57,5 @@ class Abyss(AutotoolsPackage): if self.spec['mpi'].name == 'mpich': args.append('--enable-mpich') return args + + patch('fix_BloomFilter.hpp.patch', when='@2.0.0:2.1.4') diff --git a/var/spack/repos/builtin/packages/acl/package.py b/var/spack/repos/builtin/packages/acl/package.py index ea9bf4172f..17f916d297 100644 --- a/var/spack/repos/builtin/packages/acl/package.py +++ b/var/spack/repos/builtin/packages/acl/package.py @@ -24,6 +24,10 @@ class Acl(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('attr') + depends_on('gettext') + + def setup_build_environment(self, env): + env.append_flags('LDFLAGS', '-lintl') def autoreconf(self, spec, prefix): bash = which('bash') diff --git a/var/spack/repos/builtin/packages/activeharmony/fix_logical_bug_in_slave_list_parsing.patch b/var/spack/repos/builtin/packages/activeharmony/fix_logical_bug_in_slave_list_parsing.patch new file mode 100644 index 0000000000..08141143d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/activeharmony/fix_logical_bug_in_slave_list_parsing.patch @@ -0,0 +1,29 @@ +diff --git a/code-server/code_generator.cxx b/code-server/code_generator.cxx +index df25400..1c213f7 100644 +--- a/code-server/code_generator.cxx ++++ b/code-server/code_generator.cxx +@@ -574,13 +574,13 @@ int parse_slave_list(const char* hostlist) + } + + // Skip leading whitespace. +- while (head < tail && (head == '\0' || isspace(*head))) { ++ while (head < tail && (*head == '\0' || isspace(*head))) { + ++head; + } + host_ptr = head; + + // Find host boundary whitespace. +- while (head < tail && (head != '\0' && !isspace(*head))) { ++ while (head < tail && (*head != '\0' && !isspace(*head))) { + ++head; + } + host = string(host_ptr, head++); +@@ -596,7 +596,7 @@ int parse_slave_list(const char* hostlist) + } + + // Skip trailing whitespace. +- while (head < tail && (head == '\0' || isspace(*head))) { ++ while (head < tail && (*head == '\0' || isspace(*head))) { + ++head; + } + diff --git a/var/spack/repos/builtin/packages/activeharmony/package.py b/var/spack/repos/builtin/packages/activeharmony/package.py index 179a5a68cc..45a55e5600 100644 --- a/var/spack/repos/builtin/packages/activeharmony/package.py +++ b/var/spack/repos/builtin/packages/activeharmony/package.py @@ -6,14 +6,33 @@ from spack import * -class Activeharmony(Package): +class Activeharmony(MakefilePackage): """Active Harmony: a framework for auto-tuning (the automated search for - values to improve the performance of a target application).""" + values to improve the performance of a target application).""" + homepage = "http://www.dyninst.org/harmony" url = "http://www.dyninst.org/sites/default/files/downloads/harmony/ah-4.5.tar.gz" - version('4.5', sha256='31d9990c8dd36724d336707d260aa4d976e11eaa899c4c7cc11f80a56cdac684') + version('4.6.0', sha256='9ce5009cfd8e2f4cf5f3536e1fea9993414fc25920fc90d0a2cb56f044787dbb') + version('4.5', sha256='31d9990c8dd36724d336707d260aa4d976e11eaa899c4c7cc11f80a56cdac684') + + patch('fix_logical_bug_in_slave_list_parsing.patch', sha256='3e000616f84de80b262efcae7559d65eed0efcd53e915580dab63b0ffbbb8bf2', when='@4.6.0') + + cflags = ['-O3', '-fPIC'] + def setup_build_environment(self, spack_env): + spack_env.set('CFLAGS', ' '.join(self.cflags)) + + @when('@:4.5') def install(self, spec, prefix): - make("CFLAGS=-O3") make("install", 'PREFIX=%s' % prefix) + + @when('@4.6.0:') + def install(self, spec, prefix): + make("install") + install_tree("./bin", prefix.bin) + install("./src/harmony.cfg", prefix.bin) + install_tree("./lib", prefix.lib) + install_tree("./libexec", prefix.libexec) + install_tree("./include", prefix.include) + install_tree("./doc", prefix.doc) diff --git a/var/spack/repos/builtin/packages/acts/package.py b/var/spack/repos/builtin/packages/acts/package.py index 849c326b18..3c792e1829 100644 --- a/var/spack/repos/builtin/packages/acts/package.py +++ b/var/spack/repos/builtin/packages/acts/package.py @@ -6,7 +6,7 @@ from spack import * -class Acts(CMakePackage): +class Acts(CMakePackage, CudaPackage): """ A Common Tracking Software (Acts) @@ -35,6 +35,14 @@ class Acts(CMakePackage): # Supported Acts versions version('master', branch='master') + version('0.29.0', commit='33aa3e701728112e8908223c4a7fd521907c8ea4') + version('0.28.0', commit='55626b7401eeb93fc562e79bcf385f0ad0ac48bf') + version('0.27.1', commit='8ba3010a532137bc0ab6cf83a38b483cef646a01') + version('0.27.0', commit='f7b1a1c27d5a95d08bb67236ad0e117fcd1c679f') + version('0.26.0', commit='cf542b108b31fcc349fc18fb0466f889e4e42aa6') + version('0.25.2', commit='76bf1f3e4be51d4d27126b473a2caa8d8a72b320') + version('0.25.1', commit='6e8a1ea6d2c7385a78e3e190efb2a8a0c1fa957f') + version('0.25.0', commit='0aca171951a214299e8ff573682b1c5ecec63d42') version('0.24.0', commit='ef4699c8500bfea59a5fe88bed67fde2f00f0adf') version('0.23.0', commit='dc443dd7e663bc4d7fb3c1e3f1f75aaf57ffd4e4') version('0.22.1', commit='ca1b8b1645db6b552f44c48d2ff34c8c29618f3a') @@ -90,10 +98,11 @@ class Acts(CMakePackage): # Build dependencies depends_on('boost @1.62:1.69.99 +program_options +test', when='@:0.10.3') - depends_on('boost @1.69: +filesystem +program_options +test', when='@0.10.4:') + depends_on('boost @1.69: +filesystem +program_options +test', when='@0.10.4:0.25') + depends_on('boost @1.69: +program_options +test', when='@0.26:') depends_on('cmake @3.11:', type='build') - depends_on('dd4hep @1.10: +xercesc', when='+dd4hep') - depends_on('dd4hep @1.10: +geant4 +xercesc', when='+dd4hep +geant4') + depends_on('dd4hep @1.10:', when='+dd4hep') + depends_on('dd4hep @1.10: +geant4', when='+dd4hep +geant4') depends_on('eigen @3.2.9:', type='build') depends_on('geant4', when='+geant4') depends_on('hepmc3@3.1:', when='+hepmc3') @@ -141,6 +150,7 @@ class Acts(CMakePackage): args = [ cmake_variant("BENCHMARKS", "benchmarks"), + cmake_variant("CUDA_PLUGIN", "cuda"), cmake_variant("DD4HEP_PLUGIN", "dd4hep"), cmake_variant("DIGITIZATION_PLUGIN", "digitization"), cmake_variant("EXAMPLES", "examples"), @@ -157,6 +167,10 @@ class Acts(CMakePackage): cmake_variant("TGEO_PLUGIN", "tgeo") ] + cuda_arch = spec.variants['cuda_arch'].value + if cuda_arch != 'none': + args.append('-DCUDA_FLAGS=-arch=sm_{0}'.format(cuda_arch[0])) + if 'root' in spec: cxxstd = spec['root'].variants['cxxstd'].value args.append("-DCMAKE_CXX_STANDARD={0}".format(cxxstd)) diff --git a/var/spack/repos/builtin/packages/advancecomp/package.py b/var/spack/repos/builtin/packages/advancecomp/package.py index b429ceda91..149ff1bdb2 100644 --- a/var/spack/repos/builtin/packages/advancecomp/package.py +++ b/var/spack/repos/builtin/packages/advancecomp/package.py @@ -22,3 +22,4 @@ class Advancecomp(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('m4', type='build') + depends_on('zlib', type='link') diff --git a/var/spack/repos/builtin/packages/aegean/package.py b/var/spack/repos/builtin/packages/aegean/package.py index 9198280e9a..eea46740a0 100644 --- a/var/spack/repos/builtin/packages/aegean/package.py +++ b/var/spack/repos/builtin/packages/aegean/package.py @@ -21,4 +21,7 @@ class Aegean(MakefilePackage): def edit(self, spec, prefix): makefile = FileFilter('Makefile') + if spec.target.family == 'aarch64': + makefile.filter('-m64', '') + makefile.filter('/usr/local', prefix) diff --git a/var/spack/repos/builtin/packages/alluxio/package.py b/var/spack/repos/builtin/packages/alluxio/package.py index d608af7a05..a0c9be78b0 100644 --- a/var/spack/repos/builtin/packages/alluxio/package.py +++ b/var/spack/repos/builtin/packages/alluxio/package.py @@ -7,17 +7,20 @@ from spack import * class Alluxio(Package): - """ - Alluxio (formerly known as Tachyon) is a virtual distributed storage + """Alluxio (formerly known as Tachyon) is a virtual distributed storage system. It bridges the gap between computation frameworks and storage systems, enabling computation applications to connect to numerous - storage systems through a common interface. - """ + storage systems through a common interface.""" - homepage = "https://github.com/Alluxio/alluxio" - url = "https://github.com/Alluxio/alluxio/archive/v2.1.0.tar.gz" + homepage = "https://www.alluxio.io" + url = "https://downloads.alluxio.io/downloads/files/2.2.1/alluxio-2.2.1-bin.tar.gz" + list_url = "https://downloads.alluxio.io/downloads/files" + list_depth = 1 - version('2.1.0', sha256='c8b5b7848488e0ac10b093eea02ef05fa822250669d184291cc51b2f8aac253e') + version('2.2.1', sha256='0c6b0afcc4013437afb8113e1dfda9777561512269ea349c7fbf353dc0efd28a') + version('2.2.0', sha256='635847ea1a0f8ad04c99518620de035d4962fbfa9e5920bb0911ccf8e5ea82fc') + + depends_on('java@8', type='run') def install(self, spec, prefix): install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/aluminum/package.py b/var/spack/repos/builtin/packages/aluminum/package.py index c5d6a45ed8..ee060b8368 100644 --- a/var/spack/repos/builtin/packages/aluminum/package.py +++ b/var/spack/repos/builtin/packages/aluminum/package.py @@ -7,7 +7,7 @@ import os from spack import * -class Aluminum(CMakePackage): +class Aluminum(CMakePackage, CudaPackage): """Aluminum provides a generic interface to high-performance communication libraries, with a focus on allreduce algorithms. Blocking and non-blocking algorithms and GPU-aware @@ -20,6 +20,8 @@ class Aluminum(CMakePackage): git = "https://github.com/LLNL/Aluminum.git" version('master', branch='master') + version('0.5.0', sha256='dc365a5849eaba925355a8efb27005c5f22bcd1dca94aaed8d0d29c265c064c1') + version('0.4.0', sha256='4d6fab5481cc7c994b32fb23a37e9ee44041a9f91acf78f981a97cb8ef57bb7d') version('0.3.3', sha256='26e7f263f53c6c6ee0fe216e981a558dfdd7ec997d0dd2a24285a609a6c68f3b') version('0.3.2', sha256='09b6d1bcc02ac54ba269b1123eee7be20f0104b93596956c014b794ba96b037f') version('0.2.1-1', sha256='066b750e9d1134871709a3e2414b96b166e0e24773efc7d512df2f1d96ee8eef') @@ -27,12 +29,13 @@ class Aluminum(CMakePackage): version('0.2', sha256='fc8f06c6d8faab17a2aedd408d3fe924043bf857da1094d5553f35c4d2af893b') version('0.1', sha256='3880b736866e439dd94e6a61eeeb5bb2abccebbac82b82d52033bc6c94950bdb') - variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') variant('nccl', default=False, description='Builds with support for NCCL communication lib') - variant('mpi_cuda', default=False, description='Builds with support for MPI-CUDA enabled library') + variant('ht', default=False, description='Builds with support for host-enabled MPI' + ' communication of accelerator data') + variant('cuda_rma', default=False, description='Builds with support for CUDA intra-node ' + ' Put/Get and IPC RMA functionality') - depends_on('cmake@3.9.0:', type='build') - depends_on('cuda', when='+gpu') + depends_on('cmake@3.16.0:', type='build') depends_on('mpi') depends_on('nccl', when='+nccl') depends_on('hwloc') @@ -43,10 +46,20 @@ class Aluminum(CMakePackage): def cmake_args(self): spec = self.spec args = [ - '-DALUMINUM_ENABLE_CUDA:BOOL=%s' % ('+gpu' in spec), - '-DALUMINUM_ENABLE_MPI_CUDA:BOOL=%s' % ('+mpi_cuda' in spec), + '-DALUMINUM_ENABLE_CUDA:BOOL=%s' % ('+cuda' in spec), '-DALUMINUM_ENABLE_NCCL:BOOL=%s' % ('+nccl' in spec)] + if '@0.5:': + args.extend([ + '-DALUMINUM_ENABLE_HOST_TRANSFER:BOOL=%s' % ('+ht' in spec), + '-DALUMINUM_ENABLE_MPI_CUDA:BOOL=%s' % + ('+cuda_rma' in spec), + '-DALUMINUM_ENABLE_MPI_CUDA_RMA:BOOL=%s' % + ('+cuda_rma' in spec)]) + else: + args.extend([ + '-DALUMINUM_ENABLE_MPI_CUDA:BOOL=%s' % ('+ht' in spec)]) + # Add support for OS X to find OpenMP (LLVM installed via brew) if self.spec.satisfies('%clang platform=darwin'): clang = self.compiler.cc diff --git a/var/spack/repos/builtin/packages/amber/package.py b/var/spack/repos/builtin/packages/amber/package.py index 481377047c..9b772e0a6a 100644 --- a/var/spack/repos/builtin/packages/amber/package.py +++ b/var/spack/repos/builtin/packages/amber/package.py @@ -9,28 +9,41 @@ import shutil class Amber(Package, CudaPackage): - """Amber is a suite of biomolecular simulation programs. - - Note: A manual download is required for Amber. - Spack will search your current directory for the download file. - Alternatively, add this file to a mirror so that Spack can find it. + """Amber is a suite of biomolecular simulation programs together + with Amber tools. + + Note: The version number is composed of the Amber version (major) + and the tools version (minor). A manual download is required for + both Amber and Amber tools. + Spack will search your current directory for the download files. + Alternatively, add the files to a mirror so that Spack can find them. For instructions on how to set up a mirror, see http://spack.readthedocs.io/en/latest/mirrors.html""" homepage = "http://ambermd.org/" - url = "file://{0}/Amber18.tar.bz2".format(os.getcwd()) + url = "file://{0}/Amber18.tar.bz2".format(os.getcwd()) maintainers = ['hseara'] - version('18', sha256='2060897c0b11576082d523fb63a51ba701bc7519ff7be3d299d5ec56e8e6e277') - version('16', sha256='3b7ef281fd3c46282a51b6a6deed9ed174a1f6d468002649d84bfc8a2577ae5d') + def url_for_version(self, version): + url = "file://{0}/Amber{1}.tar.bz2".format( + os.getcwd(), version.up_to(1)) + return url + + version( + '18.20', sha256='2060897c0b11576082d523fb63a51ba701bc7519ff7be3d299d5ec56e8e6e277') + version( + '18.19', sha256='2060897c0b11576082d523fb63a51ba701bc7519ff7be3d299d5ec56e8e6e277') + version( + '16.16', sha256='3b7ef281fd3c46282a51b6a6deed9ed174a1f6d468002649d84bfc8a2577ae5d') resources = [ # [version amber, version ambertools , sha256sum] + ('18', '20', 'b1e1f8f277c54e88abc9f590e788bbb2f7a49bcff5e8d8a6eacfaf332a4890f9'), ('18', '19', '0c86937904854b64e4831e047851f504ec45b42e593db4ded92c1bee5973e699'), ('16', '16', '7b876afe566e9dd7eb6a5aa952a955649044360f15c1f5d4d91ba7f41f3105fa'), ] for ver, ambertools_ver, checksum in resources: - resource(when='@{0}'.format(ver), + resource(when='@{0}.{1}'.format(ver, ambertools_ver), name='AmberTools', url='file://{0}/AmberTools{1}.tar.bz2'.format(os.getcwd(), ambertools_ver), @@ -100,10 +113,14 @@ class Amber(Package, CudaPackage): depends_on('cuda@7.5.18', when='@:16+cuda') # conflicts - conflicts('+x11', when='platform=cray', msg='x11 amber applications not available for cray') - conflicts('+openmp', when='%clang', msg='OpenMP optimizations not available for the clang compiler') - conflicts('+openmp', when='%apple-clang', msg='OpenMP optimizations not available for the Apple clang compiler') - conflicts('+openmp', when='%pgi', msg='OpenMP optimizations not available for the pgi compiler') + conflicts('+x11', when='platform=cray', + msg='x11 amber applications not available for cray') + conflicts('+openmp', when='%clang', + msg='OpenMP not available for the clang compiler') + conflicts('+openmp', when='%apple-clang', + msg='OpenMP not available for the Apple clang compiler') + conflicts('+openmp', when='%pgi', + msg='OpenMP not available for the pgi compiler') def setup_build_environment(self, env): amber_src = self.stage.source_path diff --git a/var/spack/repos/builtin/packages/amdblis/package.py b/var/spack/repos/builtin/packages/amdblis/package.py index 706e7f6bd2..82d1f18938 100644 --- a/var/spack/repos/builtin/packages/amdblis/package.py +++ b/var/spack/repos/builtin/packages/amdblis/package.py @@ -20,4 +20,5 @@ class Amdblis(BlisBase): url = "https://github.com/amd/blis/archive/2.1.tar.gz" git = "https://github.com/amd/blis.git" + version('2.2', sha256='e1feb60ac919cf6d233c43c424f6a8a11eab2c62c2c6e3f2652c15ee9063c0c9') version('2.1', sha256='3b1d611d46f0f13b3c0917e27012e0f789b23dbefdddcf877b20327552d72fb3') diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index f6cb778f4b..d8e2ea6b1c 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.08', sha256='a202430cd8dbef2de29b20fe9b5881cc58ee762326556ec3c0ad9c3f85ddfc2f') + version('20.07', sha256='c386f566f4c57ee56b5630f79ce2c6117d5a612a4aab69b7b26e48d577251165') version('20.06', sha256='be2f2a5107111fcb8b3928b76024b370c7cb01a9e5dd79484cf7fcf59d0b4858') version('20.05', sha256='97d753bb75e845a0a959ec1a044a48e6adb86dd008b5e29ce7a01d49ed276338') version('20.04', sha256='a7ece54d5d89cc00fd555551902a0d4d0fb50db15d2600f441353eed0dddd83b') @@ -57,6 +59,12 @@ class Amrex(CMakePackage): values=('Debug', 'Release')) variant('sundials', default=False, description='Build AMReX with SUNDIALS support') + variant('hdf5', default=False, + description='Enable HDF5-based I/O') + variant('hypre', default=False, + description='Enable Hypre interfaces') + variant('petsc', default=False, + description='Enable PETSc interfaces') # Build dependencies depends_on('mpi', when='+mpi') @@ -68,6 +76,24 @@ class Amrex(CMakePackage): conflicts('%apple-clang') conflicts('%clang') + # Check options compatibility + conflicts('+sundials', when='~fortran', + msg='AMReX SUNDIALS support needs AMReX Fortran API (+fortran)') + conflicts('+hdf5', when='@:20.06', + msg='AMReX HDF5 support needs AMReX newer than version 20.06') + conflicts('+hypre', when='@:20.06', + msg='AMReX Hypre support needs AMReX newer than version 20.06') + conflicts('+hypre', when='~fortran', + msg='AMReX Hypre support needs AMReX Fortran API (+fortran)') + conflicts('+hypre', when='~linear_solvers', + msg='AMReX Hypre support needs variant +linear_solvers') + conflicts('+petsc', when='@:20.06', + msg='AMReX PETSc support needs AMReX newer than version 20.06') + conflicts('+petsc', when='~fortran', + msg='AMReX PETSc support needs AMReX Fortran API (+fortran)') + conflicts('+petsc', when='~linear_solvers', + msg='AMReX PETSc support needs variant +linear_solvers') + def url_for_version(self, version): if version >= Version('20.05'): url = "https://github.com/AMReX-Codes/amrex/releases/download/{0}/amrex-{0}.tar.gz" @@ -89,11 +115,16 @@ class Amrex(CMakePackage): self.spec.variants['precision'].value.upper(), '-DENABLE_EB:BOOL=%s' % self.cmake_is_on('+eb'), '-DXSDK_ENABLE_Fortran:BOOL=%s' % self.cmake_is_on('+fortran'), + '-DENABLE_FORTRAN_INTERFACES:BOOL=%s' + % self.cmake_is_on('+fortran'), '-DENABLE_LINEAR_SOLVERS:BOOL=%s' % self.cmake_is_on('+linear_solvers'), '-DENABLE_AMRDATA:BOOL=%s' % self.cmake_is_on('+amrdata'), '-DENABLE_PARTICLES:BOOL=%s' % self.cmake_is_on('+particles'), - '-DENABLE_SUNDIALS:BOOL=%s' % self.cmake_is_on('+sundials') + '-DENABLE_SUNDIALS:BOOL=%s' % self.cmake_is_on('+sundials'), + '-DENABLE_HDF5:BOOL=%s' % self.cmake_is_on('+hdf5'), + '-DENABLE_HYPRE:BOOL=%s' % self.cmake_is_on('+hypre'), + '-DENABLE_PETSC:BOOL=%s' % self.cmake_is_on('+petsc'), ] if self.spec.satisfies('%fj'): args.append('-DCMAKE_Fortran_MODDIR_FLAG=-M') diff --git a/var/spack/repos/builtin/packages/amrvis/package.py b/var/spack/repos/builtin/packages/amrvis/package.py index 51c5787d4b..0db77c9649 100644 --- a/var/spack/repos/builtin/packages/amrvis/package.py +++ b/var/spack/repos/builtin/packages/amrvis/package.py @@ -16,7 +16,7 @@ class Amrvis(MakefilePackage): homepage = "https://github.com/AMReX-Codes/Amrvis" git = "https://github.com/AMReX-Codes/Amrvis.git" - version('master', tag='master') + version('main', tag='main') variant( 'dims', @@ -69,10 +69,21 @@ class Amrvis(MakefilePackage): # Need to clone AMReX into Amrvis because Amrvis uses AMReX's source resource(name='amrex', git='https://github.com/AMReX-Codes/amrex.git', - tag='master', + tag='development', placement='amrex') def edit(self, spec, prefix): + # libquadmath is only available x86_64 and powerle + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85440 + if self.spec.target.family not in ['x86_64', 'ppc64le']: + comps = join_path('amrex', 'Tools', 'GNUMake', 'comps') + maks = [ + join_path(comps, 'gnu.mak'), + join_path(comps, 'llvm.mak'), + ] + for mak in maks: + filter_file('-lquadmath', '', mak) + # Set all available makefile options to values we want makefile = FileFilter('GNUmakefile') makefile.filter( diff --git a/var/spack/repos/builtin/packages/apcomp/package.py b/var/spack/repos/builtin/packages/apcomp/package.py new file mode 100644 index 0000000000..3e66038030 --- /dev/null +++ b/var/spack/repos/builtin/packages/apcomp/package.py @@ -0,0 +1,182 @@ +# 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 +import socket +import llnl.util.tty as tty + + +def cmake_cache_entry(name, value, vtype=None): + """ + Helper that creates CMake cache entry strings used in + 'host-config' files. + """ + if vtype is None: + if value == "ON" or value == "OFF": + vtype = "BOOL" + else: + vtype = "PATH" + return 'set({0} "{1}" CACHE {2} "")\n\n'.format(name, value, vtype) + + +class Apcomp(Package): + """A multi use-case image compositor""" + + homepage = 'https://github.com/Alpine-DAV/ap_compositor' + git = 'https://github.com/Alpine-DAV/ap_compositor.git' + url = "https://github.com/Alpine-DAV/ap_compositor/releases/download/v0.0.1/apcomp-v0.0.1.tar.gz" + + maintainers = ['mclarsen', 'cyrush'] + + version('master', branch='master', submodules='True') + version('0.0.1', sha256="cbf85fe58d5d5bc2f468d081386cc8b79861046b3bb7e966edfa3f8e95b998b2") + + variant('openmp', default=True, description='Build with openmp support') + variant('mpi', default=True, description='Build with MPI support') + variant('shared', default=True, description='Build Shared Library') + + depends_on('cmake@3.9:', type='build') + depends_on("mpi", when="+mpi") + + root_cmakelists_dir = 'src' + + def install(self, spec, prefix): + """ + Build and install APComp + """ + with working_dir('spack-build', create=True): + host_cfg_fname = self.create_host_config(spec, + prefix) + cmake_args = [] + # if we have a static build, we need to avoid any of + # spack's default cmake settings related to rpaths + # (see: https://github.com/LLNL/spack/issues/2658) + if "+shared" in spec: + cmake_args.extend(std_cmake_args) + else: + for arg in std_cmake_args: + if arg.count("RPATH") == 0: + cmake_args.append(arg) + cmake_args.extend(["-C", host_cfg_fname, "../src"]) + print("Configuring APComp...") + cmake(*cmake_args) + print("Building APComp...") + make() + print("Installing APComp...") + make("install") + # install copy of host config for provenance + install(host_cfg_fname, prefix) + + def create_host_config(self, spec, prefix): + """ + This method creates a 'host-config' file that specifies + all of the options used to configure and build apcomp. + """ + + ####################### + # Compiler Info + ####################### + c_compiler = env["SPACK_CC"] + cpp_compiler = env["SPACK_CXX"] + + ####################################################################### + # We directly fetch the names of the actual compilers to create a + # 'host config' file that works outside of the spack install env. + ####################################################################### + + sys_type = spec.architecture + # if on llnl systems, we can use the SYS_TYPE + if "SYS_TYPE" in env: + sys_type = env["SYS_TYPE"] + + ############################################## + # Find and record what CMake is used + ############################################## + + if "+cmake" in spec: + cmake_exe = spec['cmake'].command.path + else: + cmake_exe = which("cmake") + if cmake_exe is None: + msg = 'failed to find CMake (and cmake variant is off)' + raise RuntimeError(msg) + cmake_exe = cmake_exe.path + + host_cfg_fname = "%s-%s-%s-apcomp.cmake" % (socket.gethostname(), + sys_type, + spec.compiler) + + cfg = open(host_cfg_fname, "w") + cfg.write("##################################\n") + cfg.write("# spack generated host-config\n") + cfg.write("##################################\n") + cfg.write("# {0}-{1}\n".format(sys_type, spec.compiler)) + cfg.write("##################################\n\n") + + # Include path to cmake for reference + cfg.write("# cmake from spack \n") + cfg.write("# cmake executable path: %s\n\n" % cmake_exe) + + ####################### + # Compiler Settings + ####################### + cfg.write("#######\n") + cfg.write("# using %s compiler spec\n" % spec.compiler) + cfg.write("#######\n\n") + cfg.write("# c compiler used by spack\n") + cfg.write(cmake_cache_entry("CMAKE_C_COMPILER", c_compiler)) + cfg.write("# cpp compiler used by spack\n") + cfg.write(cmake_cache_entry("CMAKE_CXX_COMPILER", cpp_compiler)) + + # shared vs static libs + if "+shared" in spec: + cfg.write(cmake_cache_entry("BUILD_SHARED_LIBS", "ON")) + else: + cfg.write(cmake_cache_entry("BUILD_SHARED_LIBS", "OFF")) + + if "+openmp" in spec: + cfg.write(cmake_cache_entry("ENABLE_OPENMP", "ON")) + else: + cfg.write(cmake_cache_entry("ENABLE_OPENMP", "OFF")) + + if "+mpi" in spec: + mpicc_path = spec['mpi'].mpicc + mpicxx_path = spec['mpi'].mpicxx + mpifc_path = spec['mpi'].mpifc + # if we are using compiler wrappers on cray systems + # use those for mpi wrappers, b/c spec['mpi'].mpicxx + # etc make return the spack compiler wrappers + # which can trip up mpi detection in CMake 3.14 + if cpp_compiler == "CC": + mpicc_path = "cc" + mpicxx_path = "CC" + mpifc_path = "ftn" + cfg.write(cmake_cache_entry("ENABLE_MPI", "ON")) + cfg.write(cmake_cache_entry("MPI_C_COMPILER", mpicc_path)) + cfg.write(cmake_cache_entry("MPI_CXX_COMPILER", mpicxx_path)) + cfg.write(cmake_cache_entry("MPI_Fortran_COMPILER", mpifc_path)) + mpiexe_bin = join_path(spec['mpi'].prefix.bin, 'mpiexec') + if os.path.isfile(mpiexe_bin): + # starting with cmake 3.10, FindMPI expects MPIEXEC_EXECUTABLE + # vs the older versions which expect MPIEXEC + if self.spec["cmake"].satisfies('@3.10:'): + cfg.write(cmake_cache_entry("MPIEXEC_EXECUTABLE", + mpiexe_bin)) + else: + cfg.write(cmake_cache_entry("MPIEXEC", + mpiexe_bin)) + else: + cfg.write(cmake_cache_entry("ENABLE_MPI", "OFF")) + + cfg.write("##################################\n") + cfg.write("# end spack generated host-config\n") + cfg.write("##################################\n") + cfg.close() + + host_cfg_fname = os.path.abspath(host_cfg_fname) + tty.info("spack generated conduit host-config file: " + host_cfg_fname) + return host_cfg_fname diff --git a/var/spack/repos/builtin/packages/aperture-photometry/package.py b/var/spack/repos/builtin/packages/aperture-photometry/package.py index 3de6e1d8d7..db2532ed92 100644 --- a/var/spack/repos/builtin/packages/aperture-photometry/package.py +++ b/var/spack/repos/builtin/packages/aperture-photometry/package.py @@ -13,6 +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.8.4', '28ae136c708a3ebcb83632230e119a03ca1a65499006ab69dc76e21b4921f465', extension='tar.gz') version('2.8.2', 'cb29eb39a630dc5d17c02fb824c69571fe1870a910a6acf9115c5f76fd89dd7e', extension='tar.gz') depends_on('java') diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py index edf8ef7fc2..dfc9c55c50 100644 --- a/var/spack/repos/builtin/packages/apex/package.py +++ b/var/spack/repos/builtin/packages/apex/package.py @@ -12,9 +12,9 @@ class Apex(CMakePackage): homepage = "http://github.com/khuck/xpress-apex" url = "http://github.com/khuck/xpress-apex/archive/v0.1.tar.gz" - version('0.1', sha256='bb0be37f8f8133fe492998515bcf66a4df452c28a995d317228fbed9b18e6a92') + version('0.1', sha256='efd10f38a61ebdb9f8adee9dc84acaee22d065b2e6eea1888872a7bfca0f4495') - depends_on("binutils+libiberty") + depends_on("binutils+libiberty@:2.33.1") depends_on("boost@1.54:") depends_on('cmake@2.8.12:', type='build') depends_on("activeharmony@4.5:") diff --git a/var/spack/repos/builtin/packages/apple-libunwind/package.py b/var/spack/repos/builtin/packages/apple-libunwind/package.py index 9d1db5cca8..680560a99d 100644 --- a/var/spack/repos/builtin/packages/apple-libunwind/package.py +++ b/var/spack/repos/builtin/packages/apple-libunwind/package.py @@ -19,7 +19,6 @@ class AppleLibunwind(Package): # Darwin must be expressed by listing a conflict with every # platform that isn't Darwin/macOS conflicts('platform=linux') - conflicts('platform=bgq') conflicts('platform=cray') # Override the fetcher method to throw a useful error message; diff --git a/var/spack/repos/builtin/packages/ascent/package.py b/var/spack/repos/builtin/packages/ascent/package.py index 3b45c69694..158f76f298 100644 --- a/var/spack/repos/builtin/packages/ascent/package.py +++ b/var/spack/repos/builtin/packages/ascent/package.py @@ -35,22 +35,21 @@ class Ascent(Package, CudaPackage): homepage = "https://github.com/Alpine-DAV/ascent" git = "https://github.com/Alpine-DAV/ascent.git" - url = "https://github.com/Alpine-DAV/ascent/releases/download/v0.5.0/ascent-v0.5.0-src-with-blt.tar.gz" + url = "https://github.com/Alpine-DAV/ascent/releases/download/v0.5.1/ascent-v0.5.1-src-with-blt.tar.gz" maintainers = ['cyrush'] version('develop', branch='develop', - submodules=True) - - version('0.5.0', sha256='2837b7371db3ac1bcc31a479d7cf0eb62a503cacadfa4187061502b3c4a89fa0') + submodules=True, + preferred=True) ########################################################################### # package variants ########################################################################### variant("shared", default=True, description="Build Ascent as shared libs") - variant("test", default=True, description='Enable Ascent unit tests') + variant('test', default=True, description='Enable Ascent unit tests') variant("mpi", default=True, description="Build Ascent MPI Support") variant("serial", default=True, description="build serial (non-mpi) libraries") @@ -68,11 +67,15 @@ class Ascent(Package, CudaPackage): variant("cuda", default=False, description="Build cuda support") variant("mfem", default=False, description="Build MFEM filter support") variant("adios", default=False, description="Build Adios filter support") + variant("dray", default=False, description="Build with Devil Ray support") # variants for dev-tools (docs, etc) - variant("doc", default=False, description="Build Conduit's documentation") + variant("doc", default=False, description="Build Ascent's documentation") - ########################################################################### + # variant for BabelFlow runtime + variant("babelflow", default=False, description="Build with BabelFlow") + + ########################################################################## # package dependencies ########################################################################### @@ -102,29 +105,54 @@ class Ascent(Package, CudaPackage): depends_on("mpi", when="+mpi") depends_on("py-mpi4py", when="+mpi+python+shared") + ####################### + # BabelFlow + ####################### + depends_on('babelflow@develop', when='+babelflow+mpi') + depends_on('parallelmergetree@develop', when='+babelflow+mpi') + ############################# # TPLs for Runtime Features ############################# - depends_on("vtk-h@0.5.0", when="+vtkh") - depends_on("vtk-h@0.5.0~openmp", when="+vtkh~openmp") - depends_on("vtk-h@0.5.0+cuda+openmp", when="+vtkh+cuda+openmp") - depends_on("vtk-h@0.5.0+cuda~openmp", when="+vtkh+cuda~openmp") + depends_on("vtk-h", when="+vtkh") + depends_on("vtk-h~openmp", when="+vtkh~openmp") + depends_on("vtk-h+cuda+openmp", when="+vtkh+cuda+openmp") + depends_on("vtk-h+cuda~openmp", when="+vtkh+cuda~openmp") - depends_on("vtk-h@0.5.0~shared", when="~shared+vtkh") - depends_on("vtk-h@0.5.0~shared~openmp", when="~shared+vtkh~openmp") - depends_on("vtk-h@0.5.0~shared+cuda", when="~shared+vtkh+cuda") - depends_on("vtk-h@0.5.0~shared+cuda~openmp", when="~shared+vtkh+cuda~openmp") + depends_on("vtk-h~shared", when="~shared+vtkh") + depends_on("vtk-h~shared~openmp", when="~shared+vtkh~openmp") + depends_on("vtk-h~shared+cuda", when="~shared+vtkh+cuda") + depends_on("vtk-h~shared+cuda~openmp", when="~shared+vtkh+cuda~openmp") # mfem - depends_on("mfem+threadsafe+shared+mpi+conduit", when="+shared+mfem+mpi") - depends_on("mfem+threadsafe~shared+mpi+conduit", when="~shared+mfem+mpi") + depends_on("mfem~threadsafe~openmp+shared+mpi+conduit", when="+shared+mfem+mpi") + depends_on("mfem~threadsafe~openmp~shared+mpi+conduit", when="~shared+mfem+mpi") - depends_on("mfem+threadsafe+shared~mpi+conduit", when="+shared+mfem~mpi") - depends_on("mfem+threadsafe~shared~mpi+conduit", when="~shared+mfem~mpi") + depends_on("mfem~threadsafe~openmp+shared~mpi+conduit", when="+shared+mfem~mpi") + depends_on("mfem~threadsafe~openmp~shared~mpi+conduit", when="~shared+mfem~mpi") depends_on("adios", when="+adios") + # devil ray variants with mpi + # we have to specify both because mfem makes us + depends_on("dray@develop+mpi~test~utils+shared+cuda", when="+dray+mpi+cuda+shared") + depends_on("dray@develop+mpi~test~utils+shared+openmp", when="+dray+mpi+openmp+shared") + depends_on("dray@develop+mpi~test~utils+shared~openmp~cuda", when="+dray+mpi~openmp~cuda+shared") + + depends_on("dray@develop+mpi~test~utils~shared+cuda", when="+dray+mpi+cuda~shared") + depends_on("dray@develop+mpi~test~utils~shared+openmp", when="+dray+mpi+openmp~shared") + depends_on("dray@develop+mpi~test~utils~shared~openmp~cuda", when="+dray+mpi~openmp~cuda~shared") + + # devil ray variants without mpi + depends_on("dray@develop~mpi~test~utils+shared+cuda", when="+dray~mpi+cuda+shared") + depends_on("dray@develop~mpi~test~utils+shared+openmp", when="+dray~mpi+openmp+shared") + depends_on("dray@develop~mpi~test~utils+shared~openmp~cuda", when="+dray~mpi~openmp~cuda+shared") + + depends_on("dray@develop~mpi~test~utils~shared+cuda", when="+dray~mpi+cuda~shared") + depends_on("dray@develop~mpi~test~utils~shared+openmp", when="+dray~mpi+openmp~shared") + depends_on("dray@develop~mpi~test~utils~shared~openmp~cuda", when="+dray~mpi~openmp~cuda~shared") + ####################### # Documentation related ####################### @@ -398,6 +426,16 @@ class Ascent(Package, CudaPackage): else: cfg.write(cmake_cache_entry("MPIEXEC", mpiexe_bin)) + + ################################### + # BABELFLOW (also depends on mpi) + ################################### + if "+babelflow" in spec: + cfg.write(cmake_cache_entry("ENABLE_BABELFLOW", "ON")) + cfg.write(cmake_cache_entry("BabelFlow_DIR", + spec['babelflow'].prefix)) + cfg.write(cmake_cache_entry("PMT_DIR", + spec['parallelmergetree'].prefix)) else: cfg.write(cmake_cache_entry("ENABLE_MPI", "OFF")) @@ -450,6 +488,15 @@ class Ascent(Package, CudaPackage): cfg.write("# mfem not built by spack \n") ####################### + # Devil Ray + ####################### + if "+dray" in spec: + cfg.write("# devil ray from spack \n") + cfg.write(cmake_cache_entry("DRAY_DIR", spec['dray'].prefix)) + else: + cfg.write("# devil ray not built by spack \n") + + ####################### # Adios ####################### diff --git a/var/spack/repos/builtin/packages/aspect/package.py b/var/spack/repos/builtin/packages/aspect/package.py index e3e613d406..08e2b59abd 100644 --- a/var/spack/repos/builtin/packages/aspect/package.py +++ b/var/spack/repos/builtin/packages/aspect/package.py @@ -7,7 +7,7 @@ from spack import * class Aspect(CMakePackage): - """Parallel, extendible finite element code to simulate convection in the + """Parallel and extensible Finite Element code to simulate convection in the Earth's mantle and elsewhere.""" homepage = "https://aspect.geodynamics.org" @@ -17,6 +17,7 @@ class Aspect(CMakePackage): maintainers = ['tjhei'] version('develop', branch='master') + version('2.2.0', sha256='6dc31c4b991c8a96495ba0e9a3c92e57f9305ba94b8dbed3c8c5cfbab91ec5c1') version('2.1.0', sha256='bd574d60ed9df1f4b98e68cd526a074d0527c0792763187c9851912327d861a3') version('2.0.1', sha256='0bf5600c42afce9d39c1d285b0654ecfdeb0f30e9f3421651c95f54ca01ac165') version('2.0.0', sha256='d485c07f54248e824bdfa35f3eec8971b65e8b7114552ffa2c771bc0dede8cc0') @@ -26,9 +27,11 @@ class Aspect(CMakePackage): values=('Debug', 'Release')) variant('gui', default=False, description='Enable the deal.II parameter GUI') variant('fpe', default=False, description='Enable floating point exception checks') + variant('opendap', default=False, description='Enable OPeNDAP support for remote file access') depends_on('dealii+p4est+trilinos+mpi') depends_on('dealii-parameter-gui', when='+gui') + depends_on('libdap4', when='+opendap') def cmake_args(self): return [ diff --git a/var/spack/repos/builtin/packages/atf/package.py b/var/spack/repos/builtin/packages/atf/package.py new file mode 100644 index 0000000000..25fc399fbf --- /dev/null +++ b/var/spack/repos/builtin/packages/atf/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 Atf(AutotoolsPackage): + """ATF, or Automated Testing Framework, is a collection of libraries + to write test programs in C, C++ and POSIX shell.""" + + homepage = "https://github.com/jmmv/atf" + url = "https://github.com/jmmv/atf/archive/atf-0.21.tar.gz" + + version('0.21', sha256='da6b02d6e7242f768a7aaa7b7e52378680456e4bd9a913b6636187079c98f3cd') + version('0.20', sha256='3677cf957d7f574835b8bdd385984ba928d5695b3ff28f958e4227f810483ab7') + version('0.19', sha256='f9b1d76dad7c34ae61a75638edc517fc05b10fa4c8f97b1d13d739bffee79b16') + + 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/atmi/0001-Remove-relative-link-paths-to-external-libraries.patch b/var/spack/repos/builtin/packages/atmi/0001-Remove-relative-link-paths-to-external-libraries.patch new file mode 100644 index 0000000000..193cfab620 --- /dev/null +++ b/var/spack/repos/builtin/packages/atmi/0001-Remove-relative-link-paths-to-external-libraries.patch @@ -0,0 +1,29 @@ +From 7445b29108ea2f0b3f28f947a1ca627575173292 Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels <harmenstoppels@gmail.com> +Date: Fri, 7 Aug 2020 13:24:00 +0200 +Subject: [PATCH] Remove relative link paths to external libraries + +--- + src/runtime/core/CMakeLists.txt | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/src/runtime/core/CMakeLists.txt b/src/runtime/core/CMakeLists.txt +index 29abffb..f2cd4b4 100644 +--- a/src/runtime/core/CMakeLists.txt ++++ b/src/runtime/core/CMakeLists.txt +@@ -109,12 +109,6 @@ target_link_libraries( + ${amd_comgr_LIBRARIES} + ${LIBELF_LIBRARIES} + ${ROCM_LIBRARIES} +- -L${ROCM_LIBRARIES_DIR}/../hsa/lib +- -L${ROCM_LIBRARIES_DIR} +- -Wl,--enable-new-dtags +- -Wl,-rpath,\$ORIGIN +- -Wl,-rpath,\$ORIGIN/../../hsa/lib +- -Wl,-rpath,\$ORIGIN/../../lib + ) + + # set output dir for .h files +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/atmi/package.py b/var/spack/repos/builtin/packages/atmi/package.py new file mode 100644 index 0000000000..c6063b3fde --- /dev/null +++ b/var/spack/repos/builtin/packages/atmi/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 Atmi(CMakePackage): + """Asynchronous Task and Memory Interface, or ATMI, is a runtime framework + and programming model for heterogeneous CPU-GPU systems. It provides a + consistent, declarative API to create task graphs on CPUs and GPUs + (integrated and discrete).""" + + homepage = "https://github.com/RadeonOpenCompute/atmi" + url = "https://github.com/RadeonOpenCompute/atmi/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='3fb57d2e583fab82bd0582d0c2bccff059ca91122c18ac49a7770a8bb041a37b') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + depends_on('cmake@3:', type='build') + depends_on('libelf@0.8:', type='link', when='@3.5:') + + for ver in ['3.5.0']: + depends_on('comgr@' + ver, type='link', when='@' + ver) + depends_on('hsa-rocr-dev@' + ver, type='link', when='@' + ver) + + root_cmakelists_dir = 'src' + + patch('0001-Remove-relative-link-paths-to-external-libraries.patch') + + def cmake_args(self): + return [ + '-DROCM_VERSION={0}'.format(self.spec.version) + ] + + @run_after('install') + def install_stub(self): + install('include/atmi_interop_hsa.h', self.prefix.include) diff --git a/var/spack/repos/builtin/packages/automake/package.py b/var/spack/repos/builtin/packages/automake/package.py index 0e9d22cb37..aa14dc290e 100644 --- a/var/spack/repos/builtin/packages/automake/package.py +++ b/var/spack/repos/builtin/packages/automake/package.py @@ -2,10 +2,6 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - -import os import re @@ -28,23 +24,13 @@ class Automake(AutotoolsPackage, GNUMirrorPackage): build_directory = 'spack-build' - executables = ['automake'] + executables = ['^automake$'] @classmethod - def determine_spec_details(cls, prefix, exes_in_prefix): - exe_to_path = dict( - (os.path.basename(p), p) for p in exes_in_prefix - ) - if 'automake' not in exe_to_path: - return None - - exe = spack.util.executable.Executable(exe_to_path['automake']) - output = exe('--version', output=str) - if output: - match = re.search(r'GNU automake\)\s+(\S+)', output) - if match: - version_str = match.group(1) - return Spec('automake@{0}'.format(version_str)) + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str) + match = re.search(r'GNU automake\)\s+(\S+)', output) + return match.group(1) if match else None def patch(self): # The full perl shebang might be too long diff --git a/var/spack/repos/builtin/packages/aws-parallelcluster/package.py b/var/spack/repos/builtin/packages/aws-parallelcluster/package.py index b9d6524737..8d936a8a3b 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.7.0.tar.gz" + url = "https://pypi.io/packages/source/a/aws-parallelcluster/aws-parallelcluster-2.8.1.tar.gz" maintainers = [ 'sean-smith', 'demartinofra', 'enrico-usai', 'lukeseawalker', 'rexcsn', @@ -23,6 +23,8 @@ class AwsParallelcluster(PythonPackage): 'pcluster.config', 'pcluster.networking' ] + version('2.8.1', sha256='c183dc3f053bc2445db724e561cea7f633dd5e7d467a7b3f9b2f2f703f7d5d49') + version('2.8.0', sha256='4e67539d49fe987884a3ed7198dc13bc8a3a1778f0b3656dfe0ae899138678f2') version('2.7.0', sha256='7c34995acfcc256a6996541d330575fc711e1fd5735bf3d734d4e96c1dc8df60') version('2.6.1', sha256='2ce9015d90b5d4dc88b46a44cb8a82e8fb0bb2b4cca30335fc5759202ec1b343') version('2.6.0', sha256='aaed6962cf5027206834ac24b3d312da91e0f96ae8607f555e12cb124b869f0c') diff --git a/var/spack/repos/builtin/packages/axom/package.py b/var/spack/repos/builtin/packages/axom/package.py index add0619a3e..2bb6500cf1 100644 --- a/var/spack/repos/builtin/packages/axom/package.py +++ b/var/spack/repos/builtin/packages/axom/package.py @@ -51,7 +51,7 @@ class Axom(CMakePackage, CudaPackage): homepage = "https://github.com/LLNL/axom" git = "https://github.com/LLNL/axom.git" - version('master', branch='master', submodules=True) + version('main', branch='main', submodules=True) version('develop', branch='develop', submodules=True) version('0.3.3', tag='v0.3.3', submodules="True") version('0.3.2', tag='v0.3.2', submodules="True") @@ -65,6 +65,8 @@ class Axom(CMakePackage, CudaPackage): # ----------------------------------------------------------------------- # Variants # ----------------------------------------------------------------------- + variant('shared', default=True, + description='Enable build of shared libraries') variant('debug', default=False, description='Build debug instead of optimized version') @@ -96,12 +98,10 @@ class Axom(CMakePackage, CudaPackage): depends_on("mpi", when="+mpi") # Libraries - depends_on("conduit~shared+python", when="+python") - depends_on("conduit~shared~python", when="~python") - depends_on("conduit~shared+python+hdf5", when="+hdf5+python") - depends_on("conduit~shared+python~hdf5", when="~hdf5+python") - depends_on("conduit~shared~python+hdf5", when="+hdf5~python") - depends_on("conduit~shared~python~hdf5", when="~hdf5~python") + depends_on("conduit+python", when="+python") + depends_on("conduit~python", when="~python") + depends_on("conduit+hdf5", when="+hdf5") + depends_on("conduit~hdf5", when="~hdf5") # HDF5 needs to be the same as Conduit's depends_on("hdf5@1.8.19:1.8.999~mpi~cxx~shared~fortran", when="+hdf5") @@ -124,7 +124,7 @@ class Axom(CMakePackage, CudaPackage): depends_on('umpire cuda_arch={0}'.format(sm_), when='+umpire cuda_arch={0}'.format(sm_)) - depends_on("mfem~mpi~hypre~metis~zlib", when="+mfem") + depends_on("mfem~mpi~metis~zlib", when="+mfem") depends_on("python", when="+python") @@ -471,6 +471,11 @@ class Axom(CMakePackage, CudaPackage): linker_flags = "${BLT_EXE_LINKER_FLAGS} -Wl,-rpath," + libdir cfg.write(cmake_cache_entry("BLT_EXE_LINKER_FLAGS", linker_flags, description)) + if "+shared" in spec: + linker_flags = "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath," \ + + libdir + cfg.write(cmake_cache_entry("CMAKE_SHARED_LINKER_FLAGS", + linker_flags, description)) if "+cuda" in spec: cfg.write("#------------------{0}\n".format("-" * 60)) @@ -530,10 +535,17 @@ class Axom(CMakePackage, CudaPackage): options = [] options.extend(['-C', host_config_path]) + if self.run_tests is False: options.append('-DENABLE_TESTS=OFF') else: options.append('-DENABLE_TESTS=ON') + + if "+shared" in spec: + options.append('-DBUILD_SHARED_LIBS=ON') + else: + options.append('-DBUILD_SHARED_LIBS=OFF') + return options @run_after('install') diff --git a/var/spack/repos/builtin/packages/babelflow/package.py b/var/spack/repos/builtin/packages/babelflow/package.py new file mode 100644 index 0000000000..568f8bf7c8 --- /dev/null +++ b/var/spack/repos/builtin/packages/babelflow/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 Babelflow(CMakePackage): + """BabelFlow is an Embedded Domain Specific Language to describe + algorithms using a task graph abstraction which allows them to be + executed on top of one of several available runtime systems.""" + + homepage = "https://github.com/sci-visus/BabelFlow" + git = 'https://github.com/sci-visus/BabelFlow.git' + + maintainers = ['spetruzza'] + + version('develop', + branch='ascent', + submodules=True) + + depends_on('mpi') + + variant("shared", default=True, description="Build Babelflow as shared libs") + + def cmake_args(self): + args = [ + '-DBUILD_SHARED_LIBS:BOOL={0}'.format( + 'ON' if '+shared' in spec else 'OFF')] + return args diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 27f2da0597..b64bdc1ac1 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -3,9 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * -import platform - class Bazel(Package): """Bazel is an open-source build and test tool similar to Make, Maven, and @@ -96,14 +93,7 @@ class Bazel(Package): variant('nodepfail', default=True, description='Disable failing dependency checks due to injected absolute paths - required for most builds using bazel with spack') - # https://docs.bazel.build/versions/master/install-compile-source.html#bootstrap-bazel - # Until https://github.com/spack/spack/issues/14058 is fixed, use jdk to build bazel - # Strict dependency on java@8 as per - # https://docs.bazel.build/versions/master/install-compile-source.html#bootstrap-unix-prereq - if platform.machine() == 'aarch64': - depends_on('java@8:8.999', type=('build', 'run')) - else: - depends_on('jdk@1.8.0:1.8.999', type=('build', 'run')) + depends_on('java', type=('build', 'run')) depends_on('python', type=('build', 'run')) depends_on('zip', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/bbcp/package.py b/var/spack/repos/builtin/packages/bbcp/package.py index 70c453825f..0ea5d88a89 100644 --- a/var/spack/repos/builtin/packages/bbcp/package.py +++ b/var/spack/repos/builtin/packages/bbcp/package.py @@ -9,13 +9,14 @@ from spack import * class Bbcp(Package): """Securely and quickly copy data from source to target""" - homepage = "http://www.slac.stanford.edu/~abh/bbcp/" - git = "http://www.slac.stanford.edu/~abh/bbcp/bbcp.git" + homepage = "https://www.slac.stanford.edu/~abh/bbcp/" + git = "https://www.slac.stanford.edu/~abh/bbcp/bbcp.git" - version('git', branch='master') + version('master', branch='master') depends_on('zlib') depends_on('openssl') + depends_on('libnsl') def install(self, spec, prefix): cd("src") diff --git a/var/spack/repos/builtin/packages/bcache/package.py b/var/spack/repos/builtin/packages/bcache/package.py index 63c42de333..c35493185a 100644 --- a/var/spack/repos/builtin/packages/bcache/package.py +++ b/var/spack/repos/builtin/packages/bcache/package.py @@ -22,6 +22,7 @@ class Bcache(MakefilePackage): depends_on('libuuid') depends_on('util-linux') depends_on('gettext') + depends_on('pkgconfig', type='build') def setup_build_environment(self, env): env.append_flags('LDFLAGS', '-lintl') diff --git a/var/spack/repos/builtin/packages/berkeley-db/package.py b/var/spack/repos/builtin/packages/berkeley-db/package.py index fc2fe3c4a9..52c4206d25 100644 --- a/var/spack/repos/builtin/packages/berkeley-db/package.py +++ b/var/spack/repos/builtin/packages/berkeley-db/package.py @@ -9,26 +9,34 @@ from spack import * class BerkeleyDb(AutotoolsPackage): """Oracle Berkeley DB""" - homepage = "http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html" - url = "http://download.oracle.com/berkeley-db/db-5.3.28.tar.gz" + homepage = "https://www.oracle.com/database/technologies/related/berkeleydb.html" + url = "http://download.oracle.com/berkeley-db/db-18.1.40.tar.gz" + version("18.1.40", sha256="0cecb2ef0c67b166de93732769abdeba0555086d51de1090df325e18ee8da9c8") + version('18.1.32', sha256='fa1fe7de9ba91ad472c25d026f931802597c29f28ae951960685cde487c8d654') version('6.2.32', sha256='a9c5e2b004a5777aa03510cfe5cd766a4a3b777713406b02809c17c8e0e7a8fb') version('6.1.29', sha256='b3c18180e4160d97dd197ba1d37c19f6ea2ec91d31bbfaf8972d99ba097af17d') version('6.0.35', sha256='24421affa8ae436fe427ae4f5f2d1634da83d3d55a5ad6354a98eeedb825de55') version('5.3.28', sha256='e0a992d740709892e81f9d93f06daf305cf73fb81b545afe72478043172c3628') configure_directory = 'dist' - build_directory = 'spack-build' + build_directory = 'build_unix' -# TODO: Gentoo's website removed the BerkeleyDB archives. -# Please update the function bellow with a valid mirror. -# Right now this package will fetch from the Oracle website, -# and versions 5.3.28 and 6.0.35 will fail to download. -# -# def url_for_version(self, version): -# # newer version need oracle login, so get them from gentoo mirror -# url_fmt = 'http://distfiles.gentoo.org/distfiles/db-{0}.tar.gz' -# return url_fmt.format(version) + def patch(self): + # some of the docs are missing in 18.1.40 + if self.spec.satisfies("@18.1.40"): + filter_file(r'bdb-sql', '', 'dist/Makefile.in') + filter_file(r'gsg_db_server', '', 'dist/Makefile.in') def configure_args(self): - return ['--disable-static', '--enable-cxx', '--enable-stl'] + return [ + '--disable-static', + '--enable-cxx', + '--enable-dbm', + '--enable-stl', + # compat with system berkeley-db on darwin + "--enable-compat185", + # SSL support requires OpenSSL, but OpenSSL depends on Perl, which + # depends on Berkey DB, creating a circular dependency + '--with-repmgr-ssl=no', + ] diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py index 0a51dd583e..6fe36efed9 100644 --- a/var/spack/repos/builtin/packages/bison/package.py +++ b/var/spack/repos/builtin/packages/bison/package.py @@ -14,8 +14,17 @@ class Bison(AutotoolsPackage, GNUMirrorPackage): generalized LR (GLR) parser employing LALR(1) parser tables.""" homepage = "https://www.gnu.org/software/bison/" - gnu_mirror_path = "bison/bison-3.4.2.tar.gz" - + gnu_mirror_path = "bison/bison-3.6.4.tar.gz" + + version('3.6.4', sha256='8183de64b5383f3634942c7b151bf2577f74273b2731574cdda8a8f3a0ab13e9') + version('3.6.3', sha256='4b4c4943931e811f1073006ce3d8ee022a02b11b501e9cbf4def3613b24a3e63') + version('3.6.2', sha256='e28ed3aad934de2d1df68be209ac0b454f7b6d3c3d6d01126e5cd2cbadba089a') + version('3.6.1', sha256='1120f8bfe2cc13e5e1e3f671dc41b1a535ca5a75a70d5b349c19da9d4389f74d') + version('3.6', sha256='f630645e330bde5847266cc5c8194f0135ced75cced150358d9abe572b95f81c') + version('3.5.3', sha256='34e201d963156618a0ea5bc87220f660a1e08403dd3c7c7903d4f38db3f40039') + version('3.5.2', sha256='b4dbb6dd080f4db7f344f16506502973ca2b15f15c7dbbd1c1c278a456d094fa') + version('3.5.1', sha256='4cef2322d96751be1c0d04f3e57adbb30e7fea83af9c00f98efa6e7509296f25') + version('3.5', sha256='0b36200b9868ee289b78cefd1199496b02b76899bbb7e84ff1c0733a991313d1') version('3.4.2', sha256='ff3922af377d514eca302a6662d470e857bd1a591e96a2050500df5a9d59facf') version('3.4.1', sha256='7007fc89c216fbfaff5525359b02a7e5b612694df5168c74673f67055f015095') version('3.3.2', sha256='0fda1d034185397430eb7b0c9e140fb37e02fbfc53b90252fa5575e382b6dbd1') diff --git a/var/spack/repos/builtin/packages/blaspp/package.py b/var/spack/repos/builtin/packages/blaspp/package.py index bcc5e80292..ddacfa22aa 100644 --- a/var/spack/repos/builtin/packages/blaspp/package.py +++ b/var/spack/repos/builtin/packages/blaspp/package.py @@ -6,7 +6,7 @@ from spack import * -class Blaspp(CMakePackage): +class Blaspp(CMakePackage, CudaPackage): """C++ API for the Basic Linear Algebra Subroutines. Developed by the Innovative Computing Laboratory at the University of Tennessee, Knoxville.""" @@ -62,6 +62,16 @@ class Blaspp(CMakePackage): else: args.append('-DBLAS_LIBRARY_THREADING="sequential"') + # `blaspp` has an implicit CUDA detection mechanism. This disables it + # in cases where it may backfire. One such case is when `cuda` is + # external and marked with `buildable=false`. `blaspp`'s CMake CUDA + # detection mechanism finds CUDA but doesn't set certain paths properly + # which leads to a build issues [1]. + # + # [1]: https://bitbucket.org/icl/blaspp/issues/6/compile-error-due-to-implicit-cuda + if '~cuda' in spec: + args.append('-DCMAKE_CUDA_COMPILER=') + # Missing: # # - acml : BLAS_LIBRARY="AMD ACML" diff --git a/var/spack/repos/builtin/packages/blat/package.py b/var/spack/repos/builtin/packages/blat/package.py index 34c9f0da6b..831329eafb 100644 --- a/var/spack/repos/builtin/packages/blat/package.py +++ b/var/spack/repos/builtin/packages/blat/package.py @@ -21,5 +21,6 @@ class Blat(Package): env.set('MACHTYPE', 'x86_64') def install(self, spec, prefix): + filter_file('CC=.*', 'CC={0}'.format(spack_cc), 'inc/common.mk') mkdirp(prefix.bin) make("BINDIR=%s" % prefix.bin) diff --git a/var/spack/repos/builtin/packages/blaze/package.py b/var/spack/repos/builtin/packages/blaze/package.py index 8801b9b1d6..b8a733f49d 100644 --- a/var/spack/repos/builtin/packages/blaze/package.py +++ b/var/spack/repos/builtin/packages/blaze/package.py @@ -21,6 +21,7 @@ class Blaze(CMakePackage): # Blaze requires at least cmake 3.8.0 for C++14 features. depends_on('cmake@3.8.0:', type='build') + depends_on('blas') version('master', branch='master') version('3.5', sha256='f50d4a57796b8012d3e6d416667d9abe6f4d95994eb9deb86cd4491381dec624') diff --git a/var/spack/repos/builtin/packages/bliss/package.py b/var/spack/repos/builtin/packages/bliss/package.py index 7878f16cb0..b42e9cac9c 100644 --- a/var/spack/repos/builtin/packages/bliss/package.py +++ b/var/spack/repos/builtin/packages/bliss/package.py @@ -24,6 +24,7 @@ class Bliss(Package): patch("Makefile.spack.patch") def install(self, spec, prefix): + filter_file('__DATE__', ' __DATE__ ', 'bliss.cc') # The Makefile isn't portable; use our own instead makeargs = ["-f", "Makefile.spack", "PREFIX=%s" % prefix, "GMP_PREFIX=%s" % spec["gmp"].prefix] diff --git a/var/spack/repos/builtin/packages/blktrace/package.py b/var/spack/repos/builtin/packages/blktrace/package.py index d088439139..bf0b1eae05 100644 --- a/var/spack/repos/builtin/packages/blktrace/package.py +++ b/var/spack/repos/builtin/packages/blktrace/package.py @@ -27,5 +27,12 @@ class Blktrace(MakefilePackage): depends_on('libaio') + def edit(self, spec, prefix): + makefiles = ['Makefile', 'btreplay/Makefile', + 'btt/Makefile', 'iowatcher/Makefile'] + for m in makefiles: + makefile = FileFilter(m) + makefile.filter('CC.*=.*', 'CC = {0}'.format(spack_cc)) + def install(self, spec, prefix): install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index d0d8691c33..5c88a86c02 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -183,7 +183,7 @@ class Boost(Package): conflicts('+numpy', when='~python') # boost-python in 1.72.0 broken with cxxstd=98 - conflicts('cxxstd=98', when='+mpi+python @1.72.0:') + 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') diff --git a/var/spack/repos/builtin/packages/bowtie/fix_narrowing_err_1.3.0.patch b/var/spack/repos/builtin/packages/bowtie/fix_narrowing_err_1.3.0.patch new file mode 100644 index 0000000000..0da7fe0de3 --- /dev/null +++ b/var/spack/repos/builtin/packages/bowtie/fix_narrowing_err_1.3.0.patch @@ -0,0 +1,11 @@ +--- a/alphabet.cpp 2020-07-28 15:02:56.137635525 -0400 ++++ b/alphabet.cpp 2020-07-28 15:05:32.385589360 -0400 +@@ -274,7 +274,7 @@ + const char *iupacs = "!ACMGRSVTWYHKDBN!acmgrsvtwyhkdbn"; + + signed char mask2iupac[16] = { +- -1, ++ static_cast<char>(-1), + 'A', // 0001 + 'C', // 0010 + 'M', // 0011 diff --git a/var/spack/repos/builtin/packages/bowtie/package.py b/var/spack/repos/builtin/packages/bowtie/package.py index ce7f8b03a0..737ae8c893 100644 --- a/var/spack/repos/builtin/packages/bowtie/package.py +++ b/var/spack/repos/builtin/packages/bowtie/package.py @@ -13,6 +13,7 @@ class Bowtie(MakefilePackage): homepage = "https://sourceforge.net/projects/bowtie-bio/" url = "https://github.com/BenLangmead/bowtie/archive/v1.2.0.tar.gz" + version('1.3.0', sha256='d7c2d982a67884909f284a0ff150b56b20127cd7a1ced461c3c4c03e6a6374c5') version('1.2.3', sha256='86402114caeacbb3a3030509cb59f0b7e96361c7b3ee2dd50e2cd68200898823') # The bowtie project git tagged and GitHub released a v1.2.2, # discovered/fixed a bug, git tagged a v1.2.2_p1 and moved the @@ -50,7 +51,8 @@ class Bowtie(MakefilePackage): patch('for_aarch64.patch', when='target=aarch64:') # measures for narrowing error - patch('fix_narrowing_err.patch') + patch('fix_narrowing_err.patch', when='@:1.2.3') + patch('fix_narrowing_err_1.3.0.patch', when='@1.3.0:') def edit(self, spec, prefix): makefile = FileFilter('Makefile') diff --git a/var/spack/repos/builtin/packages/bowtie2/package.py b/var/spack/repos/builtin/packages/bowtie2/package.py index 8100b9dfed..a5752dda48 100644 --- a/var/spack/repos/builtin/packages/bowtie2/package.py +++ b/var/spack/repos/builtin/packages/bowtie2/package.py @@ -14,6 +14,7 @@ class Bowtie2(Package): 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.4.1', sha256='566d6fb01a361883747103d797308ee4bdb70f6db7d27bfc72a520587815df22') version('2.3.5.1', sha256='335c8dafb1487a4a9228ef922fbce4fffba3ce8bc211e2d7085aac092155a53f') version('2.3.5', sha256='2b6b2c46fbb5565ba6206b47d07ece8754b295714522149d92acebefef08347b') version('2.3.4.1', sha256='a1efef603b91ecc11cfdb822087ae00ecf2dd922e03c85eea1ed7f8230c119dc') diff --git a/var/spack/repos/builtin/packages/brltty/package.py b/var/spack/repos/builtin/packages/brltty/package.py index 25757b259f..d31d7ae3bf 100644 --- a/var/spack/repos/builtin/packages/brltty/package.py +++ b/var/spack/repos/builtin/packages/brltty/package.py @@ -24,6 +24,7 @@ class Brltty(AutotoolsPackage): depends_on('libtool', type='build') depends_on('m4', type='build') depends_on('expat') + depends_on('alsa-lib', type='link') def autoreconf(self, spec, prefix): bash = which('bash') diff --git a/var/spack/repos/builtin/packages/brpc/package.py b/var/spack/repos/builtin/packages/brpc/package.py index ba1417babf..d5481d300b 100644 --- a/var/spack/repos/builtin/packages/brpc/package.py +++ b/var/spack/repos/builtin/packages/brpc/package.py @@ -22,5 +22,6 @@ class Brpc(CMakePackage): depends_on('gflags') depends_on('protobuf') depends_on('leveldb') + depends_on('openssl') patch('narrow.patch', sha256='d7393029443853ddda6c09e3d2185ac2f60920a36a8b685eb83b6b80c1535539', when='@:0.9.7') diff --git a/var/spack/repos/builtin/packages/bwa/bwa_for_aarch64.patch b/var/spack/repos/builtin/packages/bwa/bwa_for_aarch64.patch new file mode 100644 index 0000000000..2bebcb5023 --- /dev/null +++ b/var/spack/repos/builtin/packages/bwa/bwa_for_aarch64.patch @@ -0,0 +1,13 @@ +diff --git a/ksw.c b/ksw.c +index 9793e5e..2eecef4 100644 +--- a/ksw.c ++++ b/ksw.c +@@ -26,7 +26,7 @@ + #include <stdlib.h> + #include <stdint.h> + #include <assert.h> +-#include <emmintrin.h> ++#include <SSE2NEON.h> + #include "ksw.h" + + #ifdef USE_MALLOC_WRAPPERS diff --git a/var/spack/repos/builtin/packages/bwa/package.py b/var/spack/repos/builtin/packages/bwa/package.py index 8447f7848f..5f2d3ff178 100644 --- a/var/spack/repos/builtin/packages/bwa/package.py +++ b/var/spack/repos/builtin/packages/bwa/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import platform class Bwa(Package): @@ -19,10 +20,20 @@ class Bwa(Package): url='https://github.com/lh3/bwa/archive/0.7.12.tar.gz') depends_on('zlib') + depends_on('sse2neon', when='target=aarch64:') + + patch('bwa_for_aarch64.patch', sha256='b77213b16cf8760f01e32f9a0b2cd8988cf7bac48a11267100f703cbd55c4bfd', when='target=aarch64:') def install(self, spec, prefix): - filter_file(r'^INCLUDES=', - "INCLUDES=-I%s" % spec['zlib'].prefix.include, 'Makefile') + zlib_inc_path = spec['zlib'].prefix.include + if platform.machine() == 'aarch64': + sse2neon_inc_path = spec['sse2neon'].prefix.include + filter_file(r'^INCLUDES=', "INCLUDES=-I%s -I%s" % + (zlib_inc_path, sse2neon_inc_path), + 'Makefile') + else: + filter_file(r'^INCLUDES=', "INCLUDES=-I%s" % + zlib_inc_path, 'Makefile') filter_file(r'^LIBS=', "LIBS=-L%s " % spec['zlib'].prefix.lib, 'Makefile') make() diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index fb12a78704..3aca96fbe8 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.4.0', tag='v2.4.0') version('2.3.0', tag='v2.3.0') version('2.2.0', tag='v2.2.0') version('2.1.1', tag='v2.1.1') @@ -45,22 +46,21 @@ class Caliper(CMakePackage): description='Enable PAPI service') variant('libpfm', default=is_linux, description='Enable libpfm (perf_events) service') - # gotcha doesn't work on Mac - variant('gotcha', default=sys.platform != 'darwin', + # Gotcha is Linux-only + variant('gotcha', default=is_linux, description='Enable GOTCHA support') variant('sampler', default=is_linux, description='Enable sampling support on Linux') variant('sosflow', default=False, description='Enable SOSflow support') - depends_on('adiak@0.1:', when='@2.2: +adiak') - - depends_on('gotcha@1.0.2:1.0.99', when='+gotcha') + depends_on('adiak@0.1:0.99', when='@2.2: +adiak') depends_on('dyninst@9.3.0:9.99', when='@:1.99 +dyninst') depends_on('dyninst@10.0:10.99', when='@2: +dyninst') - depends_on('papi@5.3:5.99', when='+papi') + depends_on('papi@5.3:5.99', when='@:2.2 +papi') + depends_on('papi@5.3:6.99', when='@2.3: +papi') depends_on('libpfm4@4.8:4.99', when='+libpfm') @@ -69,11 +69,11 @@ class Caliper(CMakePackage): depends_on('sosflow@spack', when='@1.0:1.99+sosflow') - depends_on('cmake', type='build') - depends_on('python@3:', type='build') + depends_on('cmake', type='build') + depends_on('python', type='build') # sosflow support not yet in 2.0 - conflicts('+sosflow', '@2.0.0:2.3.99') + conflicts('+sosflow', '@2.0.0:2.4.99') conflicts('+adiak', '@:2.1.99') def cmake_args(self): @@ -96,8 +96,6 @@ class Caliper(CMakePackage): '-DWITH_MPI=%s' % ('On' if '+mpi' in spec else 'Off') ] - if '+gotcha' in spec: - args.append('-DUSE_EXTERNAL_GOTCHA=True') if '+papi' in spec: args.append('-DPAPI_PREFIX=%s' % spec['papi'].prefix) if '+libpfm' in spec: diff --git a/var/spack/repos/builtin/packages/camx/package.py b/var/spack/repos/builtin/packages/camx/package.py index b65ffeaf38..473c60ca05 100644 --- a/var/spack/repos/builtin/packages/camx/package.py +++ b/var/spack/repos/builtin/packages/camx/package.py @@ -60,6 +60,10 @@ class Camx(MakefilePackage): def edit(self, spec, prefix): makefile = FileFilter('Makefile') + if spec.target.family == 'aarch64': + makefile.filter('-mcmodel=medium', '-mcmodel=large') + makefile = FileFilter('./MPI/util/Makefile') + makefile.filter('-mcmodel=medium', '-mcmodel=large') # Support Intel MPI. if spec['mpi'].name == 'intel-mpi': diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py index 4b38ccc7b3..773cc6d8cf 100644 --- a/var/spack/repos/builtin/packages/cantera/package.py +++ b/var/spack/repos/builtin/packages/cantera/package.py @@ -30,7 +30,7 @@ class Cantera(SConsPackage): depends_on('googletest+gmock', when='@2.3.0:') depends_on('eigen', when='@2.3.0:') depends_on('boost') - depends_on('sundials@:3.1.2', when='+sundials') # must be compiled with -fPIC + depends_on('sundials@:3.1.2+lapack', when='+sundials') # must be compiled with -fPIC depends_on('blas') depends_on('lapack') diff --git a/var/spack/repos/builtin/packages/canu/package.py b/var/spack/repos/builtin/packages/canu/package.py index 2ab5cd0084..09faac1e76 100644 --- a/var/spack/repos/builtin/packages/canu/package.py +++ b/var/spack/repos/builtin/packages/canu/package.py @@ -19,8 +19,10 @@ class Canu(MakefilePackage): version('1.5', sha256='06e2c6d7b9f6d325b3b468e9c1a5de65e4689aed41154f2cee5ccd2cef0d5cf6') depends_on('gnuplot', type='run') - depends_on('jdk', type='run') + depends_on('java', type='run') depends_on('perl', type='run') + # build fail when using boost@1.71.0:1.73.0 by canu@1.8:2.0 + depends_on('boost@:1.70.0') build_directory = 'src' build_targets = ['clean'] diff --git a/var/spack/repos/builtin/packages/cardioid/package.py b/var/spack/repos/builtin/packages/cardioid/package.py index c95035b5bf..6395620d6e 100644 --- a/var/spack/repos/builtin/packages/cardioid/package.py +++ b/var/spack/repos/builtin/packages/cardioid/package.py @@ -25,8 +25,8 @@ class Cardioid(CMakePackage): depends_on('lapack') depends_on('mpi') depends_on('cuda', when="+cuda") - depends_on('mfem+hypre+superlu-dist+lapack', when="+mfem~cuda") - depends_on('mfem+hypre+superlu-dist+lapack^hypre+cuda', when="+mfem+cuda") + depends_on('mfem+mpi+superlu-dist+lapack', when="+mfem~cuda") + depends_on('mfem+mpi+superlu-dist+lapack^hypre+cuda', when="+mfem+cuda") depends_on('cmake@3.1:', type='build') depends_on('perl', type='build') diff --git a/var/spack/repos/builtin/packages/cassandra/package.py b/var/spack/repos/builtin/packages/cassandra/package.py index d6c4781cb4..f80b3c173b 100644 --- a/var/spack/repos/builtin/packages/cassandra/package.py +++ b/var/spack/repos/builtin/packages/cassandra/package.py @@ -17,7 +17,7 @@ class Cassandra(Package): version('4.0-alpha2', sha256='6a8e99d8bc51efd500981c85c6aa547387b2fdbedecd692308f4632dbc1de3ba') version('4.0-alpha1', sha256='2fdf5e3d6c03a29d24a09cd52bb17575e5faccdc4c75a07edd63a9bf4f740105') - version('3.11.6', sha256='ce34edebd1b6bb35216ae97bd06d3efc338c05b273b78267556a99f85d30e45b', preferred=True) + version('3.11.6', sha256='a739ad036d58f95b5526c481b20773cfcc9ccf3c9dc0b50943d9f2306b56e824', preferred=True) version('3.11.5', sha256='0ee3da12a2be86d7e03203fcc56c3589ddb38347b9cd031495a2b7fcf639fea6') depends_on('java', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/cctools/package.py b/var/spack/repos/builtin/packages/cctools/package.py index ade997bbb8..b92bc65187 100644 --- a/var/spack/repos/builtin/packages/cctools/package.py +++ b/var/spack/repos/builtin/packages/cctools/package.py @@ -45,6 +45,10 @@ class Cctools(AutotoolsPackage): f = 'dttools/src/memfdexe.c' kwargs = {'ignore_absent': False, 'backup': True, 'string': True} filter_file(before, after, f, **kwargs) + if self.spec.satisfies('%fj'): + makefiles = ['chirp/src/Makefile', 'grow/src/Makefile'] + for m in makefiles: + filter_file('-fstack-protector-all', '', m) def configure_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/chai/package.py b/var/spack/repos/builtin/packages/chai/package.py new file mode 100644 index 0000000000..66296f5ddf --- /dev/null +++ b/var/spack/repos/builtin/packages/chai/package.py @@ -0,0 +1,61 @@ +# 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 Chai(CMakePackage, CudaPackage): + """ + Copy-hiding array interface for data migration between memory spaces + """ + + homepage = "https://github.com/LLNL/CHAI" + git = "https://github.com/LLNL/CHAI.git" + + version('develop', branch='develop', submodules='True') + version('master', branch='main', submodules='True') + version('2.1.1', tag='v2.1.1', submodules='True') + version('2.1.0', tag='v2.1.0', submodules='True') + version('2.0.0', tag='v2.0.0', submodules='True') + version('1.2.0', tag='v1.2.0', submodules='True') + version('1.1.0', tag='v1.1.0', submodules='True') + version('1.0', tag='v1.0', submodules='True') + + variant('shared', default=True, description='Build Shared Libs') + variant('raja', default=False, description='Build plugin for RAJA') + + depends_on('cmake@3.8:', type='build') + depends_on('umpire') + depends_on('raja', when="+raja") + + depends_on('cmake@3.9:', type='build', when="+cuda") + depends_on('umpire+cuda', when="+cuda") + depends_on('raja+cuda', when="+raja+cuda") + + def cmake_args(self): + spec = self.spec + + options = [] + + if '+cuda' in spec: + options.extend([ + '-DENABLE_CUDA=ON', + '-DCUDA_TOOLKIT_ROOT_DIR=%s' % (spec['cuda'].prefix)]) + + if not spec.satisfies('cuda_arch=none'): + cuda_arch = spec.variants['cuda_arch'].value + options.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch[0])) + flag = '-arch sm_{0}'.format(cuda_arch[0]) + options.append('-DCMAKE_CUDA_FLAGS:STRING={0}'.format(flag)) + else: + options.append('-DENABLE_CUDA=OFF') + + options.append('-Dumpire_DIR:PATH=' + + spec['umpire'].prefix.share.umpire.cmake) + + options.append('-DENABLE_TESTS={0}'.format( + 'ON' if self.run_tests else 'OFF')) + + return options diff --git a/var/spack/repos/builtin/packages/changa/fix_configure_path.patch b/var/spack/repos/builtin/packages/changa/fix_configure_path.patch new file mode 100644 index 0000000000..f986927209 --- /dev/null +++ b/var/spack/repos/builtin/packages/changa/fix_configure_path.patch @@ -0,0 +1,13 @@ +diff --git a/configure b/configure +index 04f1a59..602c6cc 100755 +--- a/configure ++++ b/configure +@@ -2434,7 +2434,7 @@ if test $($CHARMC -V | awk '{print $3}') -lt $MINIMUM_CHARM_VERSION; then + fi + + CHARM_PATH=${CHARMC%/bin/charmc} +-CONV_CONFIG=${CHARM_PATH}/tmp/conv-config.sh ++CONV_CONFIG=${CHARM_PATH}/include/conv-config.sh + CHARMINC=${CHARM_PATH}/include + + . ${CONV_CONFIG} diff --git a/var/spack/repos/builtin/packages/changa/package.py b/var/spack/repos/builtin/packages/changa/package.py new file mode 100644 index 0000000000..a6adb48c38 --- /dev/null +++ b/var/spack/repos/builtin/packages/changa/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 Changa(AutotoolsPackage): + """ChaNGa (Charm N-body GrAvity solver) is a code to perform collisionless + N-body simulations. It can perform cosmological simulations with periodic + boundary conditions in comoving coordinates or simulations of isolated + stellar systems. It also can include hydrodynamics using the Smooth + Particle Hydrodynamics (SPH) technique. It uses a Barnes-Hut tree to + calculate gravity, with hexadecapole expansion of nodes and + Ewald summation for periodic forces. Timestepping is done with a leapfrog + integrator with individual timesteps for each particle.""" + + homepage = "http://faculty.washington.edu/trq/hpcc/tools/changa.html" + url = "https://github.com/N-BodyShop/changa/archive/v3.4.tar.gz" + git = "https://github.com/N-BodyShop/changa.git" + + version('master', branch='master') + version('3.4', sha256='c2bceb6ac00025dfd704bb6960bc17c6df7c746872185845d1e75f47e6ce2a94') + patch("fix_configure_path.patch") + + resource( + name="utility", + url="https://github.com/N-BodyShop/utility/archive/v3.4.tar.gz", + sha256="19f9f09023ce9d642e848a36948788fb29cd7deb8e9346cdaac4c945f1416667", + placement="utility" + ) + + depends_on("charmpp build-target=ChaNGa") + + def configure_args(self): + args = [] + args.append("STRUCT_DIR={0}/utility/structures" + .format(self.stage.source_path)) + return args + + def install(self, spec, prefix): + with working_dir(self.build_directory): + mkdirp(prefix.bin) + install('ChaNGa', prefix.bin) + install('charmrun', prefix.bin) diff --git a/var/spack/repos/builtin/packages/charliecloud/package.py b/var/spack/repos/builtin/packages/charliecloud/package.py index 119e014176..17e76b21a4 100644 --- a/var/spack/repos/builtin/packages/charliecloud/package.py +++ b/var/spack/repos/builtin/packages/charliecloud/package.py @@ -15,6 +15,7 @@ class Charliecloud(AutotoolsPackage): git = "https://github.com/hpc/charliecloud.git" version('master', branch='master') + version('0.17', sha256='9ccb34243e17cbb9c65e44fba66293ed65c39db0422c7d9bd6d1c314c3896723') version('0.16', sha256='6cdc21d414b6173090ac0a4c2c62a2a038c81659a75ae8f837b332bb7e6e9090') version('0.15', sha256='2163420d43c934151c4f44a188313bdb7f79e576d5a86ba64b9ea45f784b9921') version('0.14', sha256='4ae23c2d6442949e16902f9d5604dbd1d6059aeb5dd461b11fc5c74d49dcb194') @@ -25,7 +26,7 @@ class Charliecloud(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') - # Use skopeo and umoci for older ch-grow version dependencies. + # Use skopeo and umoci for older (unsupported) ch-grow versions. depends_on('skopeo', type='run', when='@0.10:0.13') depends_on('umoci', type='run', when='@0.10:0.13') depends_on('python+libxml2', type='run', when='@0.10:0.13') @@ -51,9 +52,22 @@ class Charliecloud(AutotoolsPackage): def configure_args(self): args = [] + py_path = self.spec['python'].command.path + + if (self.spec.satisfies('@0.13')): + args.append('--with-python-shebang={0}'.format(py_path)) + else: + args.append('--with-python={0}'.format(py_path)) if '+docs' in self.spec: - args.append('--enable-html') + sphinx_bin = '{0}'.format(self.spec['py-sphinx'].prefix.bin) + if (self.spec.satisfies('@0.13')): + # 0.13 fails when we try to build it with html. + args.append('--disable-html') + else: + args.append('--enable-html') + args.append('--with-sphinx-build={0}'.format(sphinx_bin.join( + 'sphinx-build'))) else: args.append('--disable-html') diff --git a/var/spack/repos/builtin/packages/charmpp/package.py b/var/spack/repos/builtin/packages/charmpp/package.py index a6c60ef11d..3afeb6cadb 100644 --- a/var/spack/repos/builtin/packages/charmpp/package.py +++ b/var/spack/repos/builtin/packages/charmpp/package.py @@ -23,6 +23,7 @@ class Charmpp(Package): version("develop", branch="master") + version('6.10.2', sha256='7abb4cace8aebdfbb8006eac03eb766897c009cfb919da0d0a33f74c3b4e6deb') version('6.10.1', sha256='ab96198105daabbb8c8bdf370f87b0523521ce502c656cb6cd5b89f69a2c70a8') version('6.10.0', sha256='7c526a78aa0c202b7f0418b345138e7dc40496f0bb7b9e301e0381980450b25c') version("6.9.0", sha256="85ed660e46eeb7a6fc6b32deab08226f647c244241948f6b592ebcd2b6050cbd") @@ -52,7 +53,7 @@ class Charmpp(Package): "build-target", default="LIBS", # AMPI also builds charm++, LIBS also builds AMPI and charm++ - values=("charm++", "AMPI", "LIBS"), + values=("charm++", "AMPI", "LIBS", "ChaNGa"), description="Specify the target to build" ) @@ -168,9 +169,6 @@ class Charmpp(Package): ("win", "x86_64", "netlrts"): "netlrts-win-x86_64", ("cnl", "x86_64", "gni"): "gni-crayxc", ("cnl", "x86_64", "mpi"): "mpi-crayxc", - ("cnk", "x86_64", "mpi"): "mpi-bluegeneq", - ("cnk", "x86_64", "pami"): "pami-bluegeneq", - ("cnk", "x86_64", "pamilrts"): "pamilrts-bluegeneq", } if (plat, mach, comm) not in versions: raise InstallError( @@ -217,7 +215,7 @@ class Charmpp(Package): present on the system") target = spec.variants["build-target"].value - builddir = prefix + "/" + str(self.charmarch) + builddir = prefix # We assume that Spack's compiler wrappers make this work. If # not, then we need to query the compiler vendor from Spack diff --git a/var/spack/repos/builtin/packages/clamav/package.py b/var/spack/repos/builtin/packages/clamav/package.py index 567fd38555..cb67e39c1b 100644 --- a/var/spack/repos/builtin/packages/clamav/package.py +++ b/var/spack/repos/builtin/packages/clamav/package.py @@ -22,6 +22,7 @@ class Clamav(AutotoolsPackage): depends_on('yara') depends_on('zlib') depends_on('bzip2') + depends_on('curl', type='link') def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/claw/package.py b/var/spack/repos/builtin/packages/claw/package.py index b15f5324e7..0c43205a82 100644 --- a/var/spack/repos/builtin/packages/claw/package.py +++ b/var/spack/repos/builtin/packages/claw/package.py @@ -15,6 +15,7 @@ class Claw(CMakePackage): git = 'https://github.com/claw-project/claw-compiler.git' maintainers = ['clementval'] + version('2.0.2', commit='8c012d58484d8caf79a4fe45597dc74b4367421c', submodules=True) version('2.0.1', commit='f5acc929df74ce66a328aa4eda9cc9664f699b91', submodules=True) version('2.0', commit='53e705b8bfce40a5c5636e8194a7622e337cf4f5', submodules=True) version('1.2.3', commit='eaf5e5fb39150090e51bec1763170ce5c5355198', submodules=True) diff --git a/var/spack/repos/builtin/packages/cmake/intel-cxx-bootstrap.patch b/var/spack/repos/builtin/packages/cmake/intel-cxx-bootstrap.patch new file mode 100644 index 0000000000..d5475b2e54 --- /dev/null +++ b/var/spack/repos/builtin/packages/cmake/intel-cxx-bootstrap.patch @@ -0,0 +1,11 @@ +--- a/bootstrap 2020-07-24 11:02:56.488414260 +0200 ++++ b/bootstrap 2020-07-24 11:03:20.763775094 +0200 +@@ -1179,7 +1179,7 @@ + } + #endif + +-#if (__cplusplus >= 201703L || defined(__INTEL_COMPILER) && defined(__cpp_if_constexpr)) ++#if (__cplusplus >= 201703L || defined(__INTEL_COMPILER) && defined(__cpp_deduction_guides)) + #include <optional> + template <typename T, + typename std::invoke_result<decltype(&T::get), T>::type = nullptr> diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 20ade16950..b687f75870 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -2,26 +2,26 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * - import re -import os class Cmake(Package): """A cross-platform, open-source build system. CMake is a family of - tools designed to build, test and package software.""" + tools designed to build, test and package software. + """ homepage = 'https://www.cmake.org' - url = 'https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5.tar.gz' + url = 'https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5.tar.gz' maintainers = ['chuckatkins'] - executables = ['cmake'] + executables = ['^cmake$'] + version('3.18.1', sha256='c0e3338bd37e67155b9d1e9526fec326b5c541f74857771b7ffed0c46ad62508') + version('3.18.0', sha256='83b4ffcb9482a73961521d2bafe4a16df0168f03f56e6624c419c461e5317e29') version('3.17.3', sha256='0bd60d512275dc9f6ef2a2865426a184642ceb3761794e6b65bff233b91d8c40') version('3.17.1', sha256='3aa9114485da39cbd9665a0bfe986894a282d5f0882b1dea960a739496620727') version('3.17.0', sha256='b74c05b55115eacc4fa2b77a814981dbda05cdc95a53e279fe16b7b272f00847') version('3.16.5', sha256='5f760b50b8ecc9c0c37135fae5fbf00a2fef617059aa9d61c1bb91653e5a8bfc') + version('3.16.3', sha256='e54f16df9b53dac30fd626415833a6e75b0e47915393843da1825b096ee60668') version('3.16.2', sha256='8c09786ec60ca2be354c29829072c38113de9184f29928eb9da8446a5f2ce6a9') version('3.16.1', sha256='a275b3168fa8626eca4465da7bb159ff07c8c6cb0fb7179be59e12cbdfa725fd') version('3.16.0', sha256='6da56556c63cab6e9a3e1656e8763ed4a841ac9859fefb63cbe79472e67e8c5f') @@ -135,6 +135,10 @@ class Cmake(Package): # https://gitlab.kitware.com/cmake/cmake/issues/16226 patch('intel-c-gnu11.patch', when='@3.6.0:3.6.1') + # Cannot build with Intel again, should be fixed in 3.17.4 and 3.18.1 + # https://gitlab.kitware.com/cmake/cmake/-/issues/21013 + patch('intel-cxx-bootstrap.patch', when='@3.17.0:3.17.3,3.18.0') + # https://gitlab.kitware.com/cmake/cmake/issues/18232 patch('nag-response-files.patch', when='@3.7:3.12') @@ -157,20 +161,10 @@ class Cmake(Package): phases = ['bootstrap', 'build', 'install'] @classmethod - def determine_spec_details(cls, prefix, exes_in_prefix): - exe_to_path = dict( - (os.path.basename(p), p) for p in exes_in_prefix - ) - if 'cmake' not in exe_to_path: - return None - - cmake = spack.util.executable.Executable(exe_to_path['cmake']) - output = cmake('--version', output=str) - if output: - match = re.search(r'cmake.*version\s+(\S+)', output) - if match: - version_str = match.group(1) - return Spec('cmake@{0}'.format(version_str)) + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str) + match = re.search(r'cmake.*version\s+(\S+)', output) + return match.group(1) if match else None def flag_handler(self, name, flags): if name == 'cxxflags' and self.compiler.name == 'fj': diff --git a/var/spack/repos/builtin/packages/comgr/package.py b/var/spack/repos/builtin/packages/comgr/package.py new file mode 100644 index 0000000000..04af80ada6 --- /dev/null +++ b/var/spack/repos/builtin/packages/comgr/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 Comgr(CMakePackage): + """This provides various Lightning Compiler related services. It currently + contains one library, the Code Object Manager (Comgr)""" + + homepage = "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport" + url = "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='25c963b46a82d76d55b2302e0e18aac8175362656a465549999ad13d07b689b9') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + depends_on('cmake@3:', type='build') + + for ver in ['3.5.0']: + depends_on('llvm-amdgpu@' + ver, type='build', when='@' + ver) + depends_on('rocm-device-libs@' + ver, type='build', when='@' + ver) + depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) + + depends_on('zlib', type='link') + depends_on('z3', type='link') + depends_on('ncurses', type='link') + + root_cmakelists_dir = 'lib/comgr' diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index 0e2ae11f58..8aae3db8b2 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -85,7 +85,7 @@ class Conduit(Package): # CMake ####################### # cmake 3.8.2 or newer - depends_on("cmake@3.8.2:", type='build') + depends_on("cmake@3.8.2:3.17.9999", type='build') ####################### # Python @@ -408,7 +408,7 @@ class Conduit(Package): cfg.write(cmake_cache_entry("CMAKE_Fortran_COMPILER_ID", "XL")) - if 'xl@coral' in os.getenv('SPACK_COMPILER_SPEC', ""): + if (f_compiler is not None) and ("xlf" in f_compiler): # Fix missing std linker flag in xlc compiler flags = "-WF,-C! -qxlf2003=polymorphic" cfg.write(cmake_cache_entry("BLT_FORTRAN_FLAGS", @@ -416,10 +416,15 @@ class Conduit(Package): # Grab lib directory for the current fortran compiler libdir = os.path.join(os.path.dirname( os.path.dirname(f_compiler)), "lib") - flags = "${BLT_EXE_LINKER_FLAGS} -lstdc++ " - flags += "-Wl,-rpath,{0} -Wl,-rpath,{0}64".format(libdir) + rpaths = "-Wl,-rpath,{0} -Wl,-rpath,{0}64".format(libdir) + + flags = "${BLT_EXE_LINKER_FLAGS} -lstdc++ " + rpaths cfg.write(cmake_cache_entry("BLT_EXE_LINKER_FLAGS", flags)) + if "+shared" in spec: + flags = "${CMAKE_SHARED_LINKER_FLAGS} " + rpaths + cfg.write(cmake_cache_entry( + "CMAKE_SHARED_LINKER_FLAGS", flags)) ####################### # Python diff --git a/var/spack/repos/builtin/packages/couchdb/package.py b/var/spack/repos/builtin/packages/couchdb/package.py new file mode 100644 index 0000000000..c151b963f4 --- /dev/null +++ b/var/spack/repos/builtin/packages/couchdb/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) + +from spack import * + + +class Couchdb(AutotoolsPackage): + """A CouchDB server hosts named databases, which store documents. Each document + is uniquely named in the database, and CouchDB provides a RESTful HTTP API + for reading and updating (add, edit, delete) database documents.""" + + homepage = "https://couchdb.apache.org/" + url = "http://archive.apache.org/dist/couchdb/source/3.1.0/apache-couchdb-3.1.0.tar.gz" + + version('3.1.0', sha256='4867c796a1ff6f0794b7bd3863089ea6397bd5c47544f9b97db8cdacff90f8ed') + version('3.0.1', sha256='08d61d5c779957d074d5097f28a2dfc9eb518af3c479d5318135ff31212cc522') + version('3.0.0', sha256='d109bb1a70fe746c04a9bf79a2bb1096cb949c750c29dbd196e9c2efd4167fd9') + + depends_on('icu4c') + depends_on('openssl') + depends_on('curl') + depends_on('node-js@6:') + depends_on('mozjs@1.8.5') + depends_on('gmake', type='build') + depends_on('help2man', type='build') + depends_on('python', type=('build', 'run')) + depends_on('erlang@:22.99', type=('build', 'run')) + + def setup_build_environment(self, env): + env.set('CPATH', self.spec['mozjs'].prefix.include.js) + + def configure_args(self): + args = ['--disable-docs'] + return args + + def install(self, spec, prefix): + make('release') + with working_dir('rel/couchdb/'): + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 18c721220a..1ea4d44640 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -34,6 +34,8 @@ class Cp2k(MakefilePackage, CudaPackage): variant('smm', default='libxsmm', values=('libxsmm', 'libsmm', 'blas'), description='Library for small matrix multiplications') variant('plumed', default=False, description='Enable PLUMED support') + variant('libint', default=True, + description='Use libint, required for HFX (and possibly others)') variant('libxc', default=True, description='Support additional functionals via libxc') variant('pexsi', default=False, @@ -82,14 +84,15 @@ class Cp2k(MakefilePackage, CudaPackage): # use pkg-config (support added in libxsmm-1.10) to link to libxsmm depends_on('pkgconfig', type='build', when='smm=libxsmm') # ... and in CP2K 7.0+ for linking to libint2 - depends_on('pkgconfig', type='build', when='@7.0:') + depends_on('pkgconfig', type='build', when='+libint@7.0:') + depends_on('pkgconfig', type='build', when='+libxc@7.0:') # libint & libxc are always statically linked - depends_on('libint@1.1.4:1.2', when='@3.0:6.9', type='build') + depends_on('libint@1.1.4:1.2', when='+libint@3.0:6.9', type='build') for lmax in HFX_LMAX_RANGE: # libint2 can be linked dynamically again depends_on('libint@2.6.0:+fortran tune=cp2k-lmax-{0}'.format(lmax), - when='@7.0: lmax={0}'.format(lmax)) + when='+libint@7.0: lmax={0}'.format(lmax)) depends_on('libxc@2.2.2:', when='+libxc@:5.5999', type='build') depends_on('libxc@4.0.3:', when='+libxc@6.0:6.9', type='build') @@ -145,6 +148,10 @@ class Cp2k(MakefilePackage, CudaPackage): conflicts('%clang') conflicts('%nag') + # please set variants: smm=blas by configuring packages.yaml or install + # cp2k with option smm=blas on aarch64 + conflicts('smm=libxsmm', when='target=aarch64:', msg='libxsmm is not available on arm') + @property def makefile_architecture(self): return '{0.architecture}-{0.compiler.name}'.format(self.spec) @@ -218,17 +225,10 @@ class Cp2k(MakefilePackage, CudaPackage): dflags = ['-DNDEBUG'] cppflags = [ - '-D__LIBINT', '-D__FFTW3', '-I{0}'.format(fftw_header_dir), ] - if '@:6.9' in spec: - cppflags += [ - '-D__LIBINT_MAX_AM=6', - '-D__LIBDERIV_MAX_AM1=5', - ] - if '^mpi@3:' in spec: cppflags.append('-D__MPI_VERSION=3') elif '^mpi@2:' in spec: @@ -287,19 +287,6 @@ class Cp2k(MakefilePackage, CudaPackage): if 'superlu-dist@4.3' in spec: ldflags.insert(0, '-Wl,--allow-multiple-definition') - if '@:6.9' in spec: - # libint-1.x.y has to be linked statically to work around - # inconsistencies in its Fortran interface definition - # (short-int vs int) which otherwise causes segfaults at runtime - # due to wrong offsets into the shared library symbols. - libs.extend([ - os.path.join(spec['libint'].libs.directories[0], 'libderiv.a'), - os.path.join(spec['libint'].libs.directories[0], 'libint.a'), - ]) - else: - fcflags += pkgconf('--cflags', 'libint2', output=str).split() - libs += pkgconf('--libs', 'libint2', output=str).split() - if '+plumed' in self.spec: dflags.extend(['-D__PLUMED2']) cppflags.extend(['-D__PLUMED2']) @@ -363,6 +350,30 @@ class Cp2k(MakefilePackage, CudaPackage): ) libs.append(wannier) + if '+libint' in spec: + cppflags += ['-D__LIBINT'] + + if '@:6.9' in spec: + cppflags += [ + '-D__LIBINT_MAX_AM=6', + '-D__LIBDERIV_MAX_AM1=5', + ] + + # libint-1.x.y has to be linked statically to work around + # inconsistencies in its Fortran interface definition + # (short-int vs int) which otherwise causes segfaults at + # runtime due to wrong offsets into the shared library + # symbols. + libs.extend([ + os.path.join( + spec['libint'].libs.directories[0], 'libderiv.a'), + os.path.join( + spec['libint'].libs.directories[0], 'libint.a'), + ]) + else: + fcflags += pkgconf('--cflags', 'libint2', output=str).split() + libs += pkgconf('--libs', 'libint2', output=str).split() + if '+libxc' in spec: cppflags += ['-D__LIBXC'] diff --git a/var/spack/repos/builtin/packages/cpio/package.py b/var/spack/repos/builtin/packages/cpio/package.py index ecaf2531ea..d5238cff1c 100644 --- a/var/spack/repos/builtin/packages/cpio/package.py +++ b/var/spack/repos/builtin/packages/cpio/package.py @@ -20,6 +20,12 @@ class Cpio(AutotoolsPackage, GNUMirrorPackage): build_directory = 'spack-build' def flag_handler(self, name, flags): - if self.spec.satisfies('%intel') and name == 'cflags': + spec = self.spec + + if '%intel' in spec and name == 'cflags': flags.append('-no-gcc') + + if '%clang' in spec and name == 'cflags': + flags.append('--rtlib=compiler-rt') + return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/cppcheck/package.py b/var/spack/repos/builtin/packages/cppcheck/package.py index fc943e9517..7d00ca4969 100644 --- a/var/spack/repos/builtin/packages/cppcheck/package.py +++ b/var/spack/repos/builtin/packages/cppcheck/package.py @@ -11,6 +11,7 @@ class Cppcheck(MakefilePackage): homepage = "http://cppcheck.sourceforge.net/" url = "https://downloads.sourceforge.net/project/cppcheck/cppcheck/1.78/cppcheck-1.78.tar.bz2" + version('2.1', sha256='ab26eeef039e5b58aac01efb8cb664f2cc16bf9879c61bc93cd00c95be89a5f7') version('1.87', sha256='e3b0a46747822471df275417d4b74b56ecac88367433e7428f39288a32c581ca') version('1.81', sha256='bb694f37ae0b5fed48c6cdc2fb5e528daf32cefc64e16b1a520c5411323cf27e') version('1.78', sha256='e42696f7d6321b98cb479ad9728d051effe543b26aca8102428f60b9850786b1') diff --git a/var/spack/repos/builtin/packages/cpprestsdk/package.py b/var/spack/repos/builtin/packages/cpprestsdk/package.py index 3bfbf52c29..70425ed7db 100644 --- a/var/spack/repos/builtin/packages/cpprestsdk/package.py +++ b/var/spack/repos/builtin/packages/cpprestsdk/package.py @@ -15,13 +15,22 @@ class Cpprestsdk(CMakePackage): homepage = "https://github.com/Microsoft/cpprestsdk" url = "https://github.com/Microsoft/cpprestsdk/archive/v2.9.1.tar.gz" + version('2.10.16', git='https://github.com/Microsoft/cpprestsdk', branch='v2.10.16', submodules=True) version('2.9.1', sha256='537358760acd782f4d2ed3a85d92247b4fc423aff9c85347dc31dbb0ab9bab16') depends_on('boost@:1.69.0') + depends_on('openssl') # 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') + patch('Release.patch', when='@2.9.1') root_cmakelists_dir = 'Release' + + def cmake_args(self): + args = [ + '-DWERROR:BOOL=Off' + ] + + return args diff --git a/var/spack/repos/builtin/packages/csa-c/package.py b/var/spack/repos/builtin/packages/csa-c/package.py new file mode 100644 index 0000000000..9bc09f49fd --- /dev/null +++ b/var/spack/repos/builtin/packages/csa-c/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 CsaC(AutotoolsPackage): + """csa: Cubic Spline Approximation. csa is a C code for + cubic spline approximation of 2D scattered data. It provides + a C library and a command line utility csabathy.""" + + homepage = "https://github.com/sakov/csa-c" + git = "https://github.com/sakov/csa-c.git" + + version('master', branch='master') + + configure_directory = 'csa' diff --git a/var/spack/repos/builtin/packages/cub/package.py b/var/spack/repos/builtin/packages/cub/package.py index 5c1764e345..dba0d2e980 100644 --- a/var/spack/repos/builtin/packages/cub/package.py +++ b/var/spack/repos/builtin/packages/cub/package.py @@ -11,9 +11,13 @@ class Cub(Package): and other utilities for CUDA kernel programming.""" homepage = "https://nvlabs.github.com/cub" - url = "https://github.com/NVlabs/cub/archive/v1.7.1.zip" + url = "https://github.com/NVlabs/cub/archive/1.7.1.zip" git = "https://github.com/NVlabs/cub.git" + version('1.9.10', sha256='063fea7c9bf87677a5fc5889e3fcd51582b77a2b3af9fa599d846a9c98ce9407') + version('1.9.9', sha256='162514b3cc264ac89d91898b58450190b8192e2af1142cf8ccac2d59aa160dda') + version('1.9.8-1', sha256='f61d05367bd8fe8bfb0eafa20f7b14d27deb8b25a398c53d8a97a01a2399431b') + version('1.9.8', sha256='694845bdca04fcc67d52c14d1fe6d9b627f41e6bfec0e0987d846a4e93a136f4') version('1.8.0', sha256='6bfa06ab52a650ae7ee6963143a0bbc667d6504822cbd9670369b598f18c58c3') version('1.7.5', sha256='8f8e0b101324a9839003ff1154c8439137cd38b2039f403a92e76d5c52cee23f') version('1.7.4', sha256='20a1a39fd97e5da7f40f5f2e7fd73fd2ea59f9dc4bb8a6c5f228aa543e727e31') diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index 6d1332c9ad..785f7c3c0c 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -7,6 +7,7 @@ from spack import * from glob import glob from llnl.util.filesystem import LibraryList import os +import re import platform import llnl.util.tty as tty @@ -22,6 +23,9 @@ import llnl.util.tty as tty # format returned by platform.system() and 'arch' by platform.machine() _versions = { + '11.0.2': { + 'Linux-x86_64': ('48247ada0e3f106051029ae8f70fbd0c238040f58b0880e55026374a959a69c1', 'http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run'), + 'Linux-ppc64le': ('db06d0f3fbf6f7aa1f106fc921ad1c86162210a26e8cb65b171c5240a3bf75da', 'http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux_ppc64le.run')}, '10.2.89': { 'Linux-x86_64': ('560d07fdcf4a46717f2242948cd4f92c5f9b6fc7eae10dd996614da913d5ca11', 'http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run'), 'Linux-ppc64le': ('5227774fcb8b10bd2d8714f0a716a75d7a2df240a9f2a49beb76710b1c0fc619', 'http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux_ppc64le.run')}, @@ -57,6 +61,8 @@ class Cuda(Package): homepage = "https://developer.nvidia.com/cuda-zone" + executables = ['^nvcc$'] + for ver, packages in _versions.items(): key = "{0}-{1}".format(platform.system(), platform.machine()) pkg = packages.get(key) @@ -76,6 +82,13 @@ class Cuda(Package): depends_on('libxml2', when='@10.1.243:') + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=str) + match = re.search(r'Cuda compilation tools, release .*?, V(\S+)', + output) + return match.group(1) if match else None + def setup_build_environment(self, env): if self.spec.satisfies('@10.1.243:'): libxml2_home = self.spec['libxml2'].prefix @@ -136,6 +149,7 @@ class Cuda(Package): # CUDA 10.0 provides Compatability libraries for running newer versions # of CUDA with older drivers. These do not work with newer drivers. for lib in libs: - if 'compat' not in lib.split(os.sep): + parts = lib.split(os.sep) + if 'compat' not in parts and 'stubs' not in parts: filtered_libs.append(lib) return LibraryList(filtered_libs) diff --git a/var/spack/repos/builtin/packages/cudnn/package.py b/var/spack/repos/builtin/packages/cudnn/package.py index f0e8904e34..0d0e49d9e5 100644 --- a/var/spack/repos/builtin/packages/cudnn/package.py +++ b/var/spack/repos/builtin/packages/cudnn/package.py @@ -22,6 +22,20 @@ class Cudnn(Package): maintainers = ['adamjstewart'] + # cuDNN 8.0.2 + version('8.0.2.39-11.0-linux-x64', + sha256='672f46288b8edd98f8d156a4f1ff518201ca6de0cff67915ceaa37f6d6d86345') + version('8.0.2.39-11.0-linux-ppc64le', + sha256='b7c1ce5b1191eb007ba3455ea5f497fdce293a646545d8a6ed93e9bb06d7f057') + version('8.0.2.39-10.2-linux-x64', + sha256='c9cbe5c211360f3cfbc0fb104f0e9096b37e53f89392525679f049276b2f701f') + version('8.0.2.39-10.2-linux-ppc64le', + sha256='c32325ff84a8123491f2e58b3694885a9a672005bc21764b38874688c0e43262') + version('8.0.2.39-10.1-linux-x64', + sha256='82148a68bd6bdaab93af5e05bb1842b8ccb3ab7de7bed41f609a7616c102213d') + version('8.0.2.39-10.1-linux-ppc64le', + sha256='8196ec4f031356317baeccefbc4f61c8fccb2cf0bdef0a6431438918ddf68fb9') + # cuDNN 8.0 version('8.0.0.180-11.0-linux-x64', sha256='9e75ea70280a77de815e0bdc85d08b67e081bc99a708b574092142344d2ba07e') @@ -36,6 +50,8 @@ class Cudnn(Package): version('7.6.5.32-10.2-linux-x64', sha256='600267f2caaed2fd58eb214ba669d8ea35f396a7d19b94822e6b36f9f7088c20', preferred=True) + version('7.6.5.32-10.2-linux-ppc64le', + sha256='7dc08b6ab9331bfd12207d4802c61db1ad7cace7395b67a6e7b16efa0335668b') version('7.6.5.32-10.1-linux-x64', sha256='7eaec8039a2c30ab0bc758d303588767693def6bf49b22485a2c00bf2e136cb3') version('7.6.5.32-10.1-osx-x64', diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index e0e964893f..abb09d78e1 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -15,6 +15,7 @@ class Curl(AutotoolsPackage): # URL must remain http:// so Spack can bootstrap curl url = "http://curl.haxx.se/download/curl-7.60.0.tar.bz2" + version('7.71.0', sha256='600f00ac2481a89548a4141ddf983fd9386165e1960bac91d0a1c81dca5dd341') version('7.68.0', sha256='207f54917dd6a2dc733065ccf18d61bb5bebeaceb5df49cd9445483e8623eeb9') version('7.63.0', sha256='9bab7ed4ecff77020a312d84cc5fb7eb02d58419d218f267477a724a17fd8dd8') version('7.60.0', sha256='897dfb2204bd99be328279f88f55b7c61592216b0542fcbe995c60aa92871e9b') @@ -51,6 +52,7 @@ class Curl(AutotoolsPackage): conflicts('platform=linux', when='+darwinssl') depends_on('openssl', when='~darwinssl') + depends_on('libidn2') depends_on('zlib') depends_on('nghttp2', when='+nghttp2') depends_on('libssh2', when='+libssh2') @@ -61,6 +63,8 @@ class Curl(AutotoolsPackage): spec = self.spec args = ['--with-zlib={0}'.format(spec['zlib'].prefix)] + args.append('--with-libidn2={0}'.format(spec['libidn2'].prefix)) + if spec.satisfies('+darwinssl'): args.append('--with-darwinssl') else: diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py index c58bc9edd5..1c81045e69 100644 --- a/var/spack/repos/builtin/packages/darshan-runtime/package.py +++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py @@ -29,12 +29,13 @@ class DarshanRuntime(Package): version('3.1.0', sha256='b847047c76759054577823fbe21075cfabb478cdafad341d480274fb1cef861c') version('3.0.0', sha256='95232710f5631bbf665964c0650df729c48104494e887442596128d189da43e0') - depends_on('mpi') + depends_on('mpi', when='+mpi') depends_on('zlib') variant('slurm', default=False, description='Use Slurm Job ID') variant('cobalt', default=False, description='Use Coblat Job Id') variant('pbs', default=False, description='Use PBS Job Id') + variant('mpi', default=True, description='Compile with MPI support') def install(self, spec, prefix): @@ -47,11 +48,15 @@ class DarshanRuntime(Package): job_id = 'PBS_JOBID' # TODO: BG-Q and other platform configure options - options = ['CC=%s' % spec['mpi'].mpicc, - '--with-mem-align=8', - '--with-log-path-by-env=DARSHAN_LOG_DIR_PATH', - '--with-jobid-env=%s' % job_id, - '--with-zlib=%s' % spec['zlib'].prefix] + options = [] + if '+mpi' in spec: + options = ['CC=%s' % spec['mpi'].mpicc] + else: + options = ['--without-mpi'] + options.extend(['--with-mem-align=8', + '--with-log-path-by-env=DARSHAN_LOG_DIR_PATH', + '--with-jobid-env=%s' % job_id, + '--with-zlib=%s' % spec['zlib'].prefix]) with working_dir('spack-build', create=True): configure = Executable('../darshan-runtime/configure') diff --git a/var/spack/repos/builtin/packages/dcmtk/package.py b/var/spack/repos/builtin/packages/dcmtk/package.py index 2bf3db66d1..7b5fab7f64 100644 --- a/var/spack/repos/builtin/packages/dcmtk/package.py +++ b/var/spack/repos/builtin/packages/dcmtk/package.py @@ -37,6 +37,16 @@ class Dcmtk(CMakePackage): variant('cxx11', default=False, description="Enable c++11 features") variant('stl', default=True, description="Use native STL implementation") + def patch(self): + # Backport 3.6.4 + if self.spec.satisfies('@:3.6.3 %fj'): + filter_file( + 'OFintegral_constant<size_t,-1>', + 'OFintegral_constant<size_t,~OFstatic_cast(size_t,0)>', + 'ofstd/include/dcmtk/ofstd/variadic/helpers.h', + string=True + ) + def cmake_args(self): args = ["-DDCMTK_WITH_OPENSSL={0}".format( 'ON' if '+ssl' in self.spec else 'OFF')] diff --git a/var/spack/repos/builtin/packages/dd4hep/package.py b/var/spack/repos/builtin/packages/dd4hep/package.py index 76de6090c5..112536afab 100644 --- a/var/spack/repos/builtin/packages/dd4hep/package.py +++ b/var/spack/repos/builtin/packages/dd4hep/package.py @@ -22,6 +22,8 @@ class Dd4hep(CMakePackage): maintainers = ['vvolkl', 'drbenmorgan'] version('master', branch='master') + version('1.13.1', sha256='83fa70cd74ce93b2f52f098388dff58d179f05ace5b50aea3f408bb8abf7cb73') + version('1.13.0', sha256='0b1f9d902ebe21a9178c1e41204c066b29f68c8836fd1d03a9ce979811ddb295') version('1.12.1', sha256='85e8c775ec03c499ce10911e228342e757c81ce9ef2a9195cb253b85175a2e93') version('1.12.0', sha256='133a1fb8ce0466d2482f3ebb03e60b3bebb9b2d3e33d14ba15c8fbb91706b398') version('1.11.2', sha256='96a53dd26cb8df11c6dae54669fbc9cc3c90dd47c67e07b24be9a1341c95abc4') @@ -37,6 +39,7 @@ class Dd4hep(CMakePackage): variant('xercesc', default=False, description="Enable 'Detector Builders' based on XercesC") variant('geant4', default=False, description="Enable the simulation part based on Geant4") variant('assimp', default=False, description="Enable CAD interface based on Assimp") + variant('hepmc3', default=False, description="Enable build with hepmc3") depends_on('cmake @3.12:', type='build') depends_on('boost @1.49:') @@ -45,6 +48,7 @@ class Dd4hep(CMakePackage): depends_on('xerces-c', when='+xercesc') depends_on('geant4@10.2.2:', when='+geant4') depends_on('assimp', when='+assimp') + depends_on('hepmc3', when="+hepmc3") def cmake_args(self): spec = self.spec @@ -57,6 +61,7 @@ class Dd4hep(CMakePackage): "-DDD4HEP_USE_XERCESC={0}".format(spec.satisfies('+xercesc')), "-DDD4HEP_USE_GEANT4={0}".format(spec.satisfies('+geant4')), "-DDD4HEP_LOAD_ASSIMP={0}".format(spec.satisfies('+assimp')), + "-DDD4HEP_USE_HEPMC3={0}".format(spec.satisfies('+hepmc3')), "-DBUILD_TESTING={0}".format(self.run_tests), "-DBOOST_ROOT={0}".format(spec['boost'].prefix), "-DBoost_NO_BOOST_CMAKE=ON", diff --git a/var/spack/repos/builtin/packages/delphes/package.py b/var/spack/repos/builtin/packages/delphes/package.py index b3b511a00f..5c37df8684 100644 --- a/var/spack/repos/builtin/packages/delphes/package.py +++ b/var/spack/repos/builtin/packages/delphes/package.py @@ -18,7 +18,8 @@ class Delphes(CMakePackage): maintainers = ['drbenmorgan', 'vvolkl', 'selvaggi'] version('master', branch='master') - version('3.4.2', sha256='d46a7c5474de650befdb89377115feee31f1743107ceb3d8da699be9d48c097b') + version('3.4.3pre04', tag='3.4.3pre04') + version('3.4.2', sha256='d46a7c5474de650befdb89377115feee31f1743107ceb3d8da699be9d48c097b', preferred=True) version('3.4.1', sha256='4b5a2aeac326643f45b6d45c39ba2302e323eeb86d8cb58843c6e73949b1208a') version('3.4.0', sha256='c0f9500663a0c3a5c1eddcee598a67b5bcfc9318303195c6cacc0590b4023fa1') version('3.3.3', sha256='404de818a6b7852b01187ccf598d8ac19d308b9361f128751ef003cde248ff00') @@ -38,13 +39,8 @@ class Delphes(CMakePackage): version('3.0.6', sha256='9e225731d57d2a76d35886841f8eff121bb3a45560b16077bd8c351151581d88') version('3.0.5', sha256='ab64ec6d2476fbfa40562e7edb510a8ab4c4fe5be77a4353ebf315c2af181a80') - depends_on('cmake', type='build') - depends_on('root cxxstd=14', when='cxxstd=14') - depends_on('root cxxstd=17', when='cxxstd=17') - - variant('build_type', default='Release', - description='The build type to build', - values=('Debug', 'Release')) + variant('pythia8', default=True, + description="build with pythia8") variant('cxxstd', default='17', @@ -52,6 +48,11 @@ class Delphes(CMakePackage): multi=False, description='Use the specified C++ standard when building.') + depends_on('cmake', type='build') + depends_on('root cxxstd=14', when='cxxstd=14') + depends_on('root cxxstd=17', when='cxxstd=17') + depends_on('pythia8', when="+pythia8") + def cmake_args(self): args = [] # C++ Standard diff --git a/var/spack/repos/builtin/packages/dftbplus/package.py b/var/spack/repos/builtin/packages/dftbplus/package.py new file mode 100644 index 0000000000..a8b313988e --- /dev/null +++ b/var/spack/repos/builtin/packages/dftbplus/package.py @@ -0,0 +1,147 @@ +# 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 Dftbplus(MakefilePackage): + """DFTB+ is an implementation of the + Density Functional based Tight Binding (DFTB) method, + containing many extensions to the original method.""" + + homepage = "https://www.dftbplus.org" + url = "https://github.com/dftbplus/dftbplus/archive/19.1.tar.gz" + + version('19.1', sha256='4d07f5c6102f06999d8cfdb1d17f5b59f9f2b804697f14b3bc562e3ea094b8a8') + + resource(name='slakos', + url='https://github.com/dftbplus/testparams/archive/dftbplus-18.2.tar.gz', + sha256='bd191b3d240c1a81a8754a365e53a78b581fc92eb074dd5beb8b56a669a8d3d1', + destination='external/slakos', + when='@18.2:') + + variant('mpi', default=True, + description="Build an MPI-paralelised version of the code.") + + variant('gpu', default=False, + description="Use the MAGMA library " + "for GPU accelerated computation") + + variant('elsi', default=False, + description="Use the ELSI library for large scale systems. " + "Only has any effect if you build with '+mpi'") + + variant('sockets', default=False, + description="Whether the socket library " + "(external control) should be linked") + + variant('arpack', default=False, + description="Use ARPACK for excited state DFTB functionality") + + variant('transport', default=False, + description="Whether transport via libNEGF should be included. " + "Only affects parallel build. " + "(serial version is built without libNEGF/transport)") + + variant('dftd3', default=False, + description="Use DftD3 dispersion library " + "(if you need this dispersion model)") + + depends_on('lapack') + depends_on('blas') + depends_on('scalapack', when="+mpi") + depends_on('mpi', when="+mpi") + depends_on('elsi', when="+elsi") + depends_on('magma', when="+gpu") + depends_on('arpack-ng', when="+arpack") + depends_on('dftd3-lib@0.9.2', when="+dftd3") + + def edit(self, spec, prefix): + """ + First, change the ROOT variable, because, for some reason, + the Makefile and the spack install script run in different directories + + Then, if using GCC, rename the file 'sys/make.x86_64-linux-gnu' + to make.arch. + + After that, edit the make.arch to point to the dependencies + + And the last thing we do here is to set the installdir + """ + dircwd = os.getcwd() + makefile = FileFilter("makefile") + makefile.filter("ROOT := .*", "ROOT := {0}".format(dircwd)) + + archmake = join_path(".", "sys", "make.x86_64-linux-gnu") + copy(archmake, join_path(dircwd, "make.arch")) + + march = FileFilter(join_path(dircwd, 'make.arch')) + + mconfig = FileFilter(join_path(dircwd, 'make.config')) + + mconfig.filter('INSTALLDIR := .*', 'INSTALLDIR := {0}'.format(prefix)) + + if '+gpu' in self.spec: + march.filter('MAGMADIR = .*', + 'MAGMADIR = {0}'.format(spec['magma'].prefix)) + + mconfig.filter('WITH_GPU := .*', 'WITH_GPU := 1') + + if '+mpi' in self.spec: + march.filter('SCALAPACKDIR = .*', + 'SCALAPACKDIR = {0}'.format(spec['scalapack'].prefix)) + + march.filter('LIB_LAPACK = -l.*', + 'LIB_LAPACK = {0}'.format(spec['blas'].libs.ld_flags)) + + march.filter('mpifort', '{0}'.format(spec['mpi'].mpifc)) + + mconfig.filter('WITH_MPI := .*', 'WITH_MPI := 1') + + if '+elsi' in self.spec: + mconfig.filter('WITH_ELSI := .*', 'WITH_ELSI := 1') + + has_pexsi = '+enable_pexsi' in spec['elsi'] + + mconfig.filter('WITH_PEXSI := .*', 'WITH_PEXSI := {0}'.format( + '1' if has_pexsi is True else '0' + )) + + march.filter("ELSIINCDIR .*", "ELSIINCDIR = {0}".format( + spec['elsi'].prefix.include + )) + + march.filter("ELSIDIR .*", + "ELSIDIR = {0}".format(spec['elsi'].prefix)) + + else: + march.filter('LIB_LAPACK += -l.*', 'LIB_LAPACK += {0}'.format( + spec['blas'].libs.ld_flags)) + + if '+sockets' in self.spec: + mconfig.filter('WITH_SOCKETS := .*', 'WITH_SOCKETS := 1') + + if '+transport' in self.spec: + mconfig.filter('WITH_TRANSPORT := .*', 'WITH_TRANSPORT := 1') + + if '+arpack' in self.spec: + march.filter('ARPACK_LIBS = .*', 'ARPACK_LIBS = {0}'.format( + spec['arpack-ng'].libs.ld_flags + )) + + mconfig.filter('WITH_ARPACK := .*', 'WITH_ARPACK := 1') + + if '+dftd3' in self.spec: + march.filter('COMPILE_DFTD3 = .*', 'COMPILE_DFTD3 = 0') + march.filter('DFTD3_INCS = .*', 'DFTD3_INCS = -I{0}'.format( + spec['dftd3-lib'].prefix.include + )) + + march.filter('DFTD3_LIBS = .*', + 'DFTD3_LIBS = -L{0} -ldftd3'.format( + spec['dftd3-lib'].prefix)) + + mconfig.filter('WITH_DFTD3 := .*', 'WITH_DFTD3 := 1') diff --git a/var/spack/repos/builtin/packages/dftd3-lib/package.py b/var/spack/repos/builtin/packages/dftd3-lib/package.py new file mode 100644 index 0000000000..793a312342 --- /dev/null +++ b/var/spack/repos/builtin/packages/dftd3-lib/package.py @@ -0,0 +1,38 @@ +# 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 Dftd3Lib(MakefilePackage): + """A dispersion correction for density functionals, + Hartree-Fock and semi-empirical quantum chemical methods""" + + homepage = "https://www.chemie.uni-bonn.de/pctc/mulliken-center/software/dft-d3/dft-d3" + url = "https://github.com/dftbplus/dftd3-lib/archive/0.9.2.tar.gz" + + version('0.9.2', sha256='4178f3cf2f3e7e982a7084ec66bac92b4fdf164537d9fc0ada840a11b784f0e0') + + # This fixes a concurrency bug, where make would try to start compiling + # the dftd3 target before the lib target ended. + # Since the library is small, disabling causes not much harm + parallel = False + + def edit(self, spec, prefix): + makefile = FileFilter('make.arch') + makefile.filter("FC = gfortran", "") + makefile.filter("LN = gfortran", "LN = $(FC)") + + def install(self, spec, prefix): + mkdir(prefix.lib) + mkdir(prefix.bin) + mkdir(prefix.include) + install("lib/libdftd3.a", prefix.lib) + install("prg/dftd3", prefix.bin) + install("lib/dftd3_api.mod", prefix.include) + install("lib/dftd3_common.mod", prefix.include) + install("lib/dftd3_core.mod", prefix.include) + install("lib/dftd3_pars.mod", prefix.include) + install("lib/dftd3_sizes.mod", prefix.include) diff --git a/var/spack/repos/builtin/packages/dihydrogen/package.py b/var/spack/repos/builtin/packages/dihydrogen/package.py index 6de0cfb516..92d19950a2 100644 --- a/var/spack/repos/builtin/packages/dihydrogen/package.py +++ b/var/spack/repos/builtin/packages/dihydrogen/package.py @@ -14,6 +14,7 @@ class Dihydrogen(CMakePackage, CudaPackage): needs of the distributed machine learning effort, LBANN.""" homepage = "https://github.com/LLNL/DiHydrogen.git" + url = "https://github.com/LLNL/DiHydrogen.git" git = "https://github.com/LLNL/DiHydrogen.git" maintainers = ['bvanessen'] @@ -36,12 +37,23 @@ class Dihydrogen(CMakePackage, CudaPackage): description='Enable ROCm/HIP language features.') variant('shared', default=True, description='Enables the build of shared libraries') + variant('docs', default=False, + description='Builds with support for building documentation') + + # Variants related to BLAS + variant('openmp_blas', default=False, + description='Use OpenMP for threading in the BLAS library') + variant('int64_blas', default=False, + description='Use 64bit integers for BLAS.') + variant('blas', default='openblas', values=('openblas', 'mkl', 'accelerate', 'essl'), + description='Enable the use of OpenBlas/MKL/Accelerate/ESSL') # 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', + '80' ] variant('cuda_arch', description='CUDA architecture', @@ -51,12 +63,32 @@ class Dihydrogen(CMakePackage, CudaPackage): depends_on('catch2', type='test') depends_on('aluminum', when='+al ~cuda') - depends_on('aluminum +gpu +nccl +mpi_cuda', when='+al +cuda') + depends_on('aluminum +cuda +nccl +ht +cuda_rma', when='+al +cuda') depends_on('cuda', when=('+cuda' or '+legacy')) depends_on('cudnn', when=('+cuda' or '+legacy')) depends_on('cub', when=('+cuda' or '+legacy')) + # Note that #1712 forces us to enumerate the different blas variants + depends_on('openblas', when='blas=openblas ~openmp_blas ~int64_blas') + depends_on('openblas +ilp64', when='blas=openblas ~openmp_blas +int64_blas') + depends_on('openblas threads=openmp', when='blas=openblas +openmp_blas ~int64_blas') + depends_on('openblas threads=openmp +lip64', when='blas=openblas +openmp_blas +int64_blas') + + depends_on('intel-mkl', when="blas=mkl ~openmp_blas ~int64_blas") + depends_on('intel-mkl +ilp64', when="blas=mkl ~openmp_blas +int64_blas") + depends_on('intel-mkl threads=openmp', when='blas=mkl +openmp_blas ~int64_blas') + depends_on('intel-mkl@2017.1 +openmp +ilp64', when='blas=mkl +openmp_blas +int64_blas') + + depends_on('veclibfort', when='blas=accelerate') + conflicts('blas=accelerate +openmp_blas') + + depends_on('essl -cuda', when='blas=essl -openmp_blas ~int64_blas') + depends_on('essl -cuda +ilp64', when='blas=essl -openmp_blas +int64_blas') + depends_on('essl threads=openmp', when='blas=essl +openmp_blas ~int64_blas') + depends_on('essl threads=openmp +ilp64', when='blas=essl +openmp_blas +int64_blas') + depends_on('netlib-lapack +external-blas', when='blas=essl') + # Legacy builds require cuda conflicts('~cuda', when='+legacy') @@ -64,7 +96,10 @@ class Dihydrogen(CMakePackage, CudaPackage): generator = 'Ninja' depends_on('ninja', type='build') - depends_on('cmake@3.14.0:', type='build') + depends_on('cmake@3.16.0:', type='build') + + depends_on('py-breathe', type='build', when='+docs') + depends_on('doxygen', type='build', when='+docs') illegal_cuda_arch_values = [ '10', '11', '12', '13', diff --git a/var/spack/repos/builtin/packages/dire/package.py b/var/spack/repos/builtin/packages/dire/package.py new file mode 100644 index 0000000000..9b0fde818c --- /dev/null +++ b/var/spack/repos/builtin/packages/dire/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 Dire(Package): + """DIRE (short for dipole resummation) a C++ program for all-order + radiative corrections to scattering processes in high-energy particle + collisions.""" + + homepage = "http://dire.gitlab.io/" + url = "http://dire.gitlab.io/Downloads/DIRE-2.004.tar.gz" + git = "http://gitlab.com/dire/direforpythia" + list_url = "http://dire.gitlab.io/Downloads.html" + + maintainer = ['mdiefent'] + + version('2.004', sha256='8cc1213b58fec744fdaa50834560a14b141de99efb2c3e3d3d47f3d6d84b179f') + + depends_on('zlib') + depends_on('boost') + depends_on('lhapdf') + depends_on('hepmc') + depends_on('pythia8@8226:') + + def install(self, spec, prefix): + configure_args = ['--prefix={0}'.format(prefix)] + configure_args.append( + '--with-pythia8={0}'.format(spec['pythia8'].prefix)) + configure(*configure_args) + make() + # Open bug: https://gitlab.com/wdconinc/direforpythia/-/merge_requests/1 + filter_file('-Wl,-rpath ', + self.compiler.cc_rpath_arg, + 'bin/dire-config') + make('install') diff --git a/var/spack/repos/builtin/packages/dray/package.py b/var/spack/repos/builtin/packages/dray/package.py new file mode 100644 index 0000000000..9dbf66afd9 --- /dev/null +++ b/var/spack/repos/builtin/packages/dray/package.py @@ -0,0 +1,318 @@ +# 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 +import socket + +import llnl.util.tty as tty + + +def cmake_cache_entry(name, value, vtype=None): + """ + Helper that creates CMake cache entry strings used in + 'host-config' files. + """ + if vtype is None: + if value == "ON" or value == "OFF": + vtype = "BOOL" + else: + vtype = "PATH" + return 'set({0} "{1}" CACHE {2} "")\n\n'.format(name, value, vtype) + + +class Dray(Package, CudaPackage): + """High-Order Mesh Ray Tracer.""" + + homepage = "https://github.com/LLNL/devil_ray" + git = "https://github.com/LLNL/devil_ray.git" + url = "https://github.com/LLNL/devil_ray/releases/download/v0.1.2/dray-v0.1.2.tar.gz" + + maintainers = ['mclarsen', 'cyrush'] + + version('develop', branch='develop', submodules='True') + version('0.1.2', sha256='46937f20124b28dc78a634e8e063a3e7a3bbfd9f424ce2680b08417010c376da') + version('0.1.1', sha256='e5daa49ee3367c087f5028dc5a08655298beb318014c6f3f65ef4a08fcbe346c') + version('0.1.0', sha256='8b341138e1069361351e0a94478608c5af479cca76e2f97d556229aed45c0169') + + variant('cuda', default=False, description='Build with CUDA backend') + variant('openmp', default=True, description='Build OpenMP backend') + variant("shared", default=True, description="Build as shared libs") + variant("test", default=True, description='Build unit tests') + variant("utils", default=True, description='Build utilities') + variant("logging", default=False, description='Enable logging') + variant("stats", default=False, description='Enable stats') + variant("mpi", default=True, description='Enable MPI compiler') + + depends_on('cuda', when='+cuda') + depends_on('mpi', when='+mpi') + + depends_on('cmake@3.9:', type='build') + depends_on('cmake@3.14:', when='+cuda', type='build') + + depends_on("conduit~shared", when="~shared") + depends_on("conduit+shared", when="+shared") + + depends_on("apcomp~shared+openmp+mpi", when="~shared+openmp+mpi") + depends_on("apcomp+shared+openmp+mpi", when="+shared+openmp+mpi") + depends_on("apcomp~shared~openmp+mpi", when="~shared~openmp+mpi") + depends_on("apcomp+shared~openmp+mpi", when="+shared~openmp+mpi") + depends_on("apcomp~shared+openmp~mpi", when="~shared+openmp~mpi") + depends_on("apcomp+shared+openmp~mpi", when="+shared+openmp~mpi") + depends_on("apcomp~shared~openmp~mpi", when="~shared~openmp~mpi") + depends_on("apcomp+shared~openmp~mpi", when="+shared~openmp~mpi") + + depends_on("raja@0.9.0+cuda~openmp+shared", when="+cuda~openmp+shared") + depends_on("raja@0.9.0+cuda+openmp+shared", when="+cuda+openmp+shared") + depends_on("raja@0.9.0+cuda~openmp~shared", when="+cuda~openmp~shared") + depends_on("raja@0.9.0+cuda+openmp~shared", when="+cuda+openmp~shared") + + depends_on("raja@0.9.0~cuda~openmp+shared", when="~cuda~openmp+shared") + depends_on("raja@0.9.0~cuda+openmp+shared", when="~cuda+openmp+shared") + depends_on("raja@0.9.0~cuda~openmp~shared", when="~cuda~openmp~shared") + depends_on("raja@0.9.0~cuda+openmp~shared", when="~cuda+openmp~shared") + + depends_on("umpire@1.0.0+cuda+shared", when="+cuda+shared") + depends_on("umpire@1.0.0+cuda~shared", when="+cuda~shared") + depends_on("umpire@1.0.0~cuda+shared", when="~cuda+shared") + depends_on("umpire@1.0.0~cuda~shared", when="~cuda~shared") + + depends_on("mfem+shared+conduit~threadsafe", when="+shared") + depends_on("mfem~shared+conduit~threadsafe", when="~shared") + + def setup_build_environment(self, env): + env.set('CTEST_OUTPUT_ON_FAILURE', '1') + + def install(self, spec, prefix): + """ + Build and install Devil Ray. + """ + with working_dir('spack-build', create=True): + host_cfg_fname = self.create_host_config(spec, + prefix) + cmake_args = [] + # if we have a static build, we need to avoid any of + # spack's default cmake settings related to rpaths + # (see: https://github.com/LLNL/spack/issues/2658) + if "+shared" in spec: + cmake_args.extend(std_cmake_args) + else: + for arg in std_cmake_args: + if arg.count("RPATH") == 0: + cmake_args.append(arg) + cmake_args.extend(["-C", host_cfg_fname, "../src"]) + print("Configuring Devil Ray...") + cmake(*cmake_args) + print("Building Devil Ray...") + make() + # run unit tests if requested + if "+test" in spec and self.run_tests: + print("Running Devil Ray Unit Tests...") + make("test") + print("Installing Devil Ray...") + make("install") + # install copy of host config for provenance + install(host_cfg_fname, prefix) + + def create_host_config(self, spec, prefix): + """ + This method creates a 'host-config' file that specifies + all of the options used to configure and build ascent. + + For more details about 'host-config' files see: + http://ascent.readthedocs.io/en/latest/BuildingAscent.html + """ + + ####################### + # Compiler Info + ####################### + c_compiler = env["SPACK_CC"] + cpp_compiler = env["SPACK_CXX"] + + ####################################################################### + # By directly fetching the names of the actual compilers we appear + # to doing something evil here, but this is necessary to create a + # 'host config' file that works outside of the spack install env. + ####################################################################### + + sys_type = spec.architecture + # if on llnl systems, we can use the SYS_TYPE + if "SYS_TYPE" in env: + sys_type = env["SYS_TYPE"] + + ############################################## + # Find and record what CMake is used + ############################################## + + if "+cmake" in spec: + cmake_exe = spec['cmake'].command.path + else: + cmake_exe = which("cmake") + if cmake_exe is None: + msg = 'failed to find CMake (and cmake variant is off)' + raise RuntimeError(msg) + cmake_exe = cmake_exe.path + + host_cfg_fname = "%s-%s-%s-devil_ray.cmake" % (socket.gethostname(), + sys_type, + spec.compiler) + + cfg = open(host_cfg_fname, "w") + cfg.write("##################################\n") + cfg.write("# spack generated host-config\n") + cfg.write("##################################\n") + cfg.write("# {0}-{1}\n".format(sys_type, spec.compiler)) + cfg.write("##################################\n\n") + + # Include path to cmake for reference + cfg.write("# cmake from spack \n") + cfg.write("# cmake executable path: %s\n\n" % cmake_exe) + + ####################### + # Compiler Settings + ####################### + cfg.write("#######\n") + cfg.write("# using %s compiler spec\n" % spec.compiler) + cfg.write("#######\n\n") + + if "+mpi" in spec: + cfg.write(cmake_cache_entry("ENABLE_MPI", "ON")) + mpicc_path = spec['mpi'].mpicc + mpicxx_path = spec['mpi'].mpicxx + # if we are using compiler wrappers on cray systems + # use those for mpi wrappers, b/c spec['mpi'].mpicxx + # etc make return the spack compiler wrappers + # which can trip up mpi detection in CMake 3.14 + if cpp_compiler == "CC": + mpicc_path = "cc" + mpicxx_path = "CC" + + cfg.write(cmake_cache_entry("CMAKE_C_COMPILER", mpicc_path)) + cfg.write(cmake_cache_entry("CMAKE_CXX_COMPILER", mpicxx_path)) + else: + cfg.write(cmake_cache_entry("ENABLE_MPI", "OFF")) + cfg.write("# c compiler used by spack\n") + cfg.write(cmake_cache_entry("CMAKE_C_COMPILER", c_compiler)) + cfg.write("# cpp compiler used by spack\n") + cfg.write(cmake_cache_entry("CMAKE_CXX_COMPILER", cpp_compiler)) + + ####################### + # Backends + ####################### + + cfg.write("# CUDA Support\n") + + if "+cuda" in spec: + cfg.write(cmake_cache_entry("ENABLE_CUDA", "ON")) + if 'cuda_arch' in spec.variants: + cuda_value = spec.variants['cuda_arch'].value + cuda_arch = cuda_value[0] + cfg.write(cmake_cache_entry('CUDA_ARCH', + 'sm_{0}'.format(cuda_arch))) + else: + cfg.write(cmake_cache_entry("ENABLE_CUDA", "OFF")) + + if "+openmp" in spec: + cfg.write(cmake_cache_entry("ENABLE_OPENMP", "ON")) + else: + cfg.write(cmake_cache_entry("ENABLE_OPENMP", "OFF")) + + # shared vs static libs + if "+shared" in spec: + cfg.write(cmake_cache_entry("BUILD_SHARED_LIBS", "ON")) + else: + cfg.write(cmake_cache_entry("BUILD_SHARED_LIBS", "OFF")) + + ####################### + # Unit Tests + ####################### + if "+test" in spec: + cfg.write(cmake_cache_entry("DRAY_ENABLE_TESTS", "ON")) + else: + cfg.write(cmake_cache_entry("DRAY_ENABLE_TESTS", "OFF")) + + ####################### + # Utilities + ####################### + if "+utils" in spec: + cfg.write(cmake_cache_entry("DRAY_ENABLE_UTILS", "ON")) + else: + cfg.write(cmake_cache_entry("DRAY_ENABLE_UTILS", "OFF")) + + ####################### + # Logging + ####################### + if "+logging" in spec: + cfg.write(cmake_cache_entry("ENABLE_LOGGING", "ON")) + else: + cfg.write(cmake_cache_entry("ENABLE_LOGGING", "OFF")) + + ####################### + # Logging + ####################### + if "+stats" in spec: + cfg.write(cmake_cache_entry("ENABLE_STATS", "ON")) + else: + cfg.write(cmake_cache_entry("ENABLE_STATS", "OFF")) + + ####################################################################### + # Core Dependencies + ####################################################################### + + cfg.write("# conduit from spack \n") + cfg.write(cmake_cache_entry("CONDUIT_DIR", spec['conduit'].prefix)) + + cfg.write("# mfem from spack \n") + cfg.write(cmake_cache_entry("MFEM_DIR", spec['mfem'].prefix)) + + cfg.write("# raja from spack \n") + cfg.write(cmake_cache_entry("RAJA_DIR", spec['raja'].prefix)) + + cfg.write("# umpire from spack \n") + cfg.write(cmake_cache_entry("UMPIRE_DIR", spec['umpire'].prefix)) + + cfg.write("# apcompositor from spack \n") + cfg.write(cmake_cache_entry("APCOMP_DIR", spec['apcomp'].prefix)) + + cfg.write("##################################\n") + cfg.write("# end spack generated host-config\n") + cfg.write("##################################\n") + cfg.close() + + host_cfg_fname = os.path.abspath(host_cfg_fname) + tty.info("spack generated conduit host-config file: " + host_cfg_fname) + return host_cfg_fname + + def cmake_args(self): + spec = self.spec + + options = [] + + if '+openmp' in spec: + options.extend([ + '-DENABLE_OPENMP=On']) + + if '+cuda' in spec: + options.extend([ + '-DENABLE_CUDA=On', + '-DCUDA_TOOLKIT_ROOT_DIR=%s' % (spec['cuda'].prefix)]) + if 'cuda_arch' in spec.variants: + cuda_value = spec.variants['cuda_arch'].value + cuda_arch = cuda_value[0] + options.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch)) + else: + options.extend(['-DENABLE_CUDA=OFF']) + + options.extend(['-DRAJA_DIR=%s' % (spec['raja'].prefix)]) + options.extend(['-DMFEM_DIR=%s' % (spec['mfem'].prefix)]) + options.extend(['-DUMPIRE_DIR=%s' % (spec['umpire'].prefix)]) + options.extend(['-DCONDUIT_DIR=%s' % (spec['conduit'].prefix)]) + options.extend(['-DDRAY_ENABLE_TESTS=OFF']) + options.extend(['-DENABLE_LOGGING=OFF']) + options.extend(['-DENABLE_STATS=OFF']) + options.extend(['../src']) + + return options diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 6f43c1eb7b..b6d1fa540f 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -13,8 +13,10 @@ class Dyninst(CMakePackage): homepage = "https://dyninst.org" git = "https://github.com/dyninst/dyninst.git" + maintainers = ['hainest'] - version('develop', branch='master') + version('master', branch='master') + version('10.2.0', tag='v10.2.0') version('10.1.0', tag='v10.1.0') version('10.0.0', tag='v10.0.0') version('9.3.2', tag='v9.3.2') @@ -89,6 +91,11 @@ class Dyninst(CMakePackage): else: args.append('-DENABLE_STATIC_LIBS=NO') + # Make sure Dyninst doesn't try to build its own dependencies + # outside of Spack + if spec.satisfies('@10.2.0:'): + args.append('-DSTERILE_BUILD=ON') + return args # Old style cmake args, up through 10.0. diff --git a/var/spack/repos/builtin/packages/eagle/package.py b/var/spack/repos/builtin/packages/eagle/package.py index 81e0be6f90..0509f32cd4 100644 --- a/var/spack/repos/builtin/packages/eagle/package.py +++ b/var/spack/repos/builtin/packages/eagle/package.py @@ -33,6 +33,13 @@ class Eagle(MakefilePackage): # add htslib link to ldflags filter_file('-lcurl', '-lcurl -lhts', 'Makefile', string=True) + # use spack C compiler + filter_file('CC=.*', 'CC={0}'.format(spack_cc), 'Makefile') + + # remove march=native %fj + if self.spec.satisfies('%fj'): + filter_file('-march=native', '', 'Makefile', string=True) + def install(self, spec, prefix): mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py index cd6b961227..00647d2d4e 100644 --- a/var/spack/repos/builtin/packages/elfutils/package.py +++ b/var/spack/repos/builtin/packages/elfutils/package.py @@ -21,6 +21,7 @@ class Elfutils(AutotoolsPackage, SourcewarePackage): list_url = "https://sourceware.org/elfutils/ftp" list_depth = 1 + version('0.180', sha256='b827b6e35c59d188ba97d7cf148fa8dc6f5c68eb6c5981888dfdbb758c0b569d') version('0.179', sha256='25a545566cbacaa37ae6222e58f1c48ea4570f53ba991886e2f5ce96e22a23a2') version('0.178', sha256='31e7a00e96d4e9c4bda452e1f2cdac4daf8abd24f5e154dee232131899f3a0f2') version('0.177', sha256='fa489deccbcae7d8c920f60d85906124c1989c591196d90e0fd668e3dc05042e') diff --git a/var/spack/repos/builtin/packages/elmerfem/package.py b/var/spack/repos/builtin/packages/elmerfem/package.py index 464611eaf4..24433a58f8 100644 --- a/var/spack/repos/builtin/packages/elmerfem/package.py +++ b/var/spack/repos/builtin/packages/elmerfem/package.py @@ -13,32 +13,47 @@ class Elmerfem(CMakePackage): homepage = "https://www.csc.fi/web/elmer" url = "https://github.com/ElmerCSC/elmerfem/archive/release-8.4.tar.gz" + git = "https://github.com/ElmerCSC/elmerfem.git" + version('ice', branch='elmerice') + version('devel', branch='devel') version('8.4', sha256='cc3ce807d76798361592cc14952cdc3db1ad8f9bac038017514033ce9badc5b3') - version('devel', git='https://github.com/ElmerCSC/elmerfem.git', branch='devel') + variant('mpi', default=True, description='Enable MPI support.') variant('openmp', default=True, description='Enable OpenMP support.') variant('mumps', default=False, description='Enable MUMPS support.') variant('hypre', default=False, description='Enable Hypre support.') variant('trilinos', default=False, description='Enable Trilinos support.') variant('zoltan', default=False, description='Enable Zoltan support.') variant('lua', default=False, description='Enable Lua support.') + variant('scatt2d', default=False, description='Build Scattered2DDataInterpolator solver.') depends_on('mpi') depends_on('netcdf-fortran') depends_on('blas') depends_on('lapack') + depends_on('scalapack', when='+mpi') depends_on('mumps', when='+mumps') depends_on('hypre', when='+hypre') depends_on('trilinos~hypre~zoltan~zoltan2', when='+trilinos') depends_on('zoltan+fortran', when='+zoltan') depends_on('lua@5.1.5', when='+lua') + depends_on('nn-c', when='+scatt2d') + depends_on('csa-c', when='+scatt2d') def cmake_args(self): spec = self.spec - args = ['-DWITH_ElmerIce=ON', '-DWITH_CONTRIB=ON', '-DWITH_MPI=ON'] + args = ['-DWITH_ElmerIce=ON', '-DWITH_CONTRIB=ON'] + + if '+mpi' in spec: + args.append('-DWITH_MPI=ON') + else: + args.append('-DWITH_MPI=OFF') + + if self.spec.satisfies('^intel-mkl'): + args.append('-DWITH_MKL:BOOL=TRUE') if '+openmp' in spec: args.append('-DWITH_OpenMP=ON') @@ -82,7 +97,21 @@ class Elmerfem(CMakePackage): else: args.append('-DWITH_Zoltan=OFF') + if '+scatt2d' in spec: + args.extend([ + '-DWITH_ScatteredDataInterpolator=ON', + '-DNN_LIBRARY=' + + join_path(self.spec['nn-c'].prefix, 'lib', 'libnn.a'), + '-DNN_INCLUDE_DIR=' + + join_path(self.spec['nn-c'].prefix, 'include'), + '-DCSA_LIBRARY=' + + join_path(self.spec['csa-c'].prefix, 'lib', 'libcsa.so'), + '-DCSA_INCLUDE_DIR=' + + join_path(self.spec['csa-c'].prefix, 'include') + ]) + return args def setup_run_environment(self, env): env.set('ELMER_HOME', self.prefix) + env.set('ELMER_Fortran_COMPILER', self.compiler.fc) diff --git a/var/spack/repos/builtin/packages/elpa/package.py b/var/spack/repos/builtin/packages/elpa/package.py index 3aad567fe5..66054e434f 100644 --- a/var/spack/repos/builtin/packages/elpa/package.py +++ b/var/spack/repos/builtin/packages/elpa/package.py @@ -8,15 +8,16 @@ import os from spack import * -class Elpa(AutotoolsPackage): +class Elpa(AutotoolsPackage, CudaPackage): """Eigenvalue solvers for Petaflop-Applications (ELPA)""" homepage = 'http://elpa.mpcdf.mpg.de/' url = 'http://elpa.mpcdf.mpg.de/elpa-2015.11.001.tar.gz' + version('2020.05.001', sha256='66ff1cf332ce1c82075dc7b5587ae72511d2bcb3a45322c94af6b01996439ce5') + version('2019.11.001', sha256='10374a8f042e23c7e1094230f7e2993b6f3580908a213dbdf089792d05aff357') version('2019.05.002', sha256='d2eab5e5d74f53601220b00d18185670da8c00c13e1c1559ecfb0cd7cb2c4e8d') - version('2018.11.001', - sha256='cc27fe8ba46ce6e6faa8aea02c8c9983052f8e73a00cfea38abf7613cb1e1b16') + version('2018.11.001', sha256='cc27fe8ba46ce6e6faa8aea02c8c9983052f8e73a00cfea38abf7613cb1e1b16') version('2018.05.001.rc1', sha256='598c01da20600a4514ea4d503b93e977ac0367e797cab7a7c1b0e0e3e86490db') version('2017.11.001', sha256='59f99c3abe2190fac0db8a301d0b9581ee134f438669dbc92551a54f6f861820') version('2017.05.003', sha256='bccd49ce35a323bd734b17642aed8f2588fea4cc78ee8133d88554753bc3bf1b') @@ -33,6 +34,7 @@ class Elpa(AutotoolsPackage): depends_on('blas') depends_on('lapack') depends_on('scalapack') + depends_on('libtool', type='build') def url_for_version(self, version): t = 'http://elpa.mpcdf.mpg.de/html/Releases/{0}/elpa-{0}.tar.gz' @@ -61,14 +63,14 @@ class Elpa(AutotoolsPackage): return hlist build_directory = 'spack-build' + parallel = False def configure_args(self): spec = self.spec options = [] - # TODO: add --enable-gpu, --disable-sse-assembly, --enable-sparc64 - # and --enable-neon-arch64 - simd_features = ['vsx', 'sse', 'avx', 'avx2', 'avx512', 'bgp', 'bgq'] + # TODO: --disable-sse-assembly, --enable-sparc64, --enable-neon-arch64 + simd_features = ['vsx', 'sse', 'avx', 'avx2', 'avx512'] for feature in simd_features: msg = '--enable-{0}' if feature in spec.target else '--disable-{0}' @@ -84,6 +86,20 @@ class Elpa(AutotoolsPackage): 'CFLAGS=-O2' ]) + if '+cuda' in spec: + prefix = spec['cuda'].prefix + options.append('--enable-gpu') + options.append('--with-cuda-path={0}'.format(prefix)) + options.append('--with-cuda-sdk-path={0}'.format(prefix)) + + cuda_arch = spec.variants['cuda_arch'].value[0] + + if cuda_arch != 'none': + options.append('--with-GPU-compute-capability=sm_{0}'. + format(cuda_arch)) + else: + options.append('--disable-gpu') + if '+openmp' in spec: options.append('--enable-openmp') else: @@ -98,4 +114,6 @@ class Elpa(AutotoolsPackage): 'SCALAPACK_LDFLAGS={0}'.format(spec['scalapack'].libs.joined()) ]) + options.append('--disable-silent-rules') + return options diff --git a/var/spack/repos/builtin/packages/elsi/package.py b/var/spack/repos/builtin/packages/elsi/package.py index db5d4714f6..578bc73c91 100644 --- a/var/spack/repos/builtin/packages/elsi/package.py +++ b/var/spack/repos/builtin/packages/elsi/package.py @@ -25,7 +25,7 @@ class Elsi(CMakePackage): ) variant( 'elpa2_kernel', default="none", description="ELPA2 Kernel", - values=('BGQ', 'AVX', 'AVX2', 'AVX512'), multi=False + values=('AVX', 'AVX2', 'AVX512'), multi=False ) variant( 'enable_pexsi', default=False, description='Enable PEXSI support' diff --git a/var/spack/repos/builtin/packages/energyplus/package.py b/var/spack/repos/builtin/packages/energyplus/package.py index ca534999f9..d781f24452 100644 --- a/var/spack/repos/builtin/packages/energyplus/package.py +++ b/var/spack/repos/builtin/packages/energyplus/package.py @@ -17,6 +17,8 @@ class Energyplus(Package): homepage = "https://energyplus.net" # versions require explicit URLs as they contain hashes + version('9.3.0', sha256='c939dc4f867224e110485a8e0712ce4cfb1e06f8462bc630b54f83a18c93876c', + url="https://github.com/NREL/EnergyPlus/releases/download/v9.3.0/EnergyPlus-9.3.0-baff08990c-Linux-x86_64.tar.gz") version('8.9.0', sha256='13a5192b25815eb37b3ffd019ce3b99fd9f854935f8cc4362814f41c56e9ca98', url="https://github.com/NREL/EnergyPlus/releases/download/v8.9.0-WithIDDFixes/EnergyPlus-8.9.0-eba93e8e1b-Linux-x86_64.tar.gz") @@ -25,13 +27,14 @@ class Energyplus(Package): # and then symlink the appropriate targets # there is only one folder with a semi-predictable name so we glob it - install_tree(glob.glob('EnergyPlus*')[0], - join_path(prefix.lib, 'energyplus')) + source_dir = '.' + + if spec.satisfies('@:8.9.9'): + source_dir = glob.glob('EnergyPlus*')[0] + + install_tree(source_dir, prefix.lib.enregyplus) mkdirp(prefix.bin) - os.symlink(join_path(prefix.lib, 'energyplus/energyplus'), - join_path(prefix.bin, 'energyplus')) - os.symlink(join_path(prefix.lib, 'energyplus/EPMacro'), - join_path(prefix.bin, 'EPMacro')) - os.symlink(join_path(prefix.lib, 'energyplus/ExpandObjects'), - join_path(prefix.bin, 'ExpandObjects')) + for b in ['energyplus', 'EPMacro', 'ExpandObjects']: + os.symlink(join_path(prefix.lib.energyplus, b), + join_path(prefix.bin, b)) diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py index 3a756a0d8c..d2d1853304 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.5.1/modules-4.5.1.tar.gz' + url = 'https://github.com/cea-hpc/modules/releases/download/v4.5.2/modules-4.5.2.tar.gz' maintainers = ['xdelaruelle'] + version('4.5.2', sha256='74ccc9ab0fea0064ff3f4c5841435cef13cc6d9869b3c2b25e5ca4efa64a69a1') version('4.5.1', sha256='7d4bcc8559e7fbbc52e526fc86a15b161ff4422aa49eee37897ee7a48eb64ac2') version('4.5.0', sha256='5f46336f612553af5553d99347f387f733de0aaa0d80d4572e67615289382ec8') version('4.4.1', sha256='3c20cfb2ff8a4d74ac6d566e7b5fa9dd220d96d17e6d8a4ae29b1ec0107ee407') diff --git a/var/spack/repos/builtin/packages/eospac/frt.patch b/var/spack/repos/builtin/packages/eospac/frt.patch new file mode 100644 index 0000000000..f5f04a3a45 --- /dev/null +++ b/var/spack/repos/builtin/packages/eospac/frt.patch @@ -0,0 +1,63 @@ +diff -u -r -N a/Source/config/Makefile.-linux-gnu.detect b/Source/config/Makefile.-linux-gnu.detect +--- a/Source/config/Makefile.-linux-gnu.detect 2020-08-07 14:05:03.000000000 +0900 ++++ b/Source/config/Makefile.-linux-gnu.detect 2020-08-07 14:09:43.000000000 +0900 +@@ -18,7 +18,7 @@ + ################################################################## + # Compiler suite configurations based upon F90 ### + ################################################################## +-F90_List = gfortran pgfortran pgf90 lf95 f90 ifort g95 ftn pathf90 flang ++F90_List = gfortran pgfortran pgf90 lf95 f90 ifort g95 ftn pathf90 flang frt + + # Default: use the first F90 compiler found from F90_List + F90_Found_List = $(call memoize,create_F90_Found_List_once,$(F90_List)) +diff -u -r -N a/Source/config/Makefile.-linux-gnu.hashes b/Source/config/Makefile.-linux-gnu.hashes +--- a/Source/config/Makefile.-linux-gnu.hashes 2020-08-07 14:05:03.000000000 +0900 ++++ b/Source/config/Makefile.-linux-gnu.hashes 2020-08-07 14:24:53.000000000 +0900 +@@ -33,6 +33,7 @@ + $(call set,_CC,gfortran, gcc ) # gfortran + $(call set,_CC,ftn, cc gcc ) # Cray Computing Environment (cce) + $(call set,_CC,flang, clang gcc ) # flang/clang ++$(call set,_CC,frt, fcc gcc ) # Fujitsu + + $(call set,_CXX,pgfortran, pgCC pgc++ g++ ) # PGI + $(call set,_CXX,pgf90, pgCC pgc++ g++ ) # PGI +@@ -44,6 +45,7 @@ + $(call set,_CXX,gfortran, g++ ) # gfortran + $(call set,_CXX,ftn, CC g++ ) # Cray Computing Environment (cce) + $(call set,_CXX,flang, clang++ g++ ) # flang/clang++ ++$(call set,_CXX,frt, FCC g++ ) # Fujitsu + + $(call set,_F77,pgfortran, pgfortran pgf77 pgf90 ) # PGI + $(call set,_F77,pgf90, pgfortran pgf77 pgf90 ) # PGI +@@ -55,6 +57,7 @@ + $(call set,_F77,gfortran, $(F90) ) # gfortran + $(call set,_F77,ftn, $(F90) ) # Cray Computing Environment (cce) + $(call set,_F77,flang, flang ) # flang ++$(call set,_F77,frt, frt ) # Fujitsu + + ################################################################## + ### Define CC, CXX and F77 according to $(F90_Key). ### +@@ -101,6 +104,7 @@ + $(call set,_COMP_FLAGS,ppu-gfortran, -I"$(INCDIR)" ) # ppu-gfortran + $(call set,_COMP_FLAGS,ftn, -e m -I"$(INCDIR)" -hfp0 ) # Cray Computing Environment (cce) + $(call set,_COMP_FLAGS,flang, -I"$(INCDIR)" ) # flang ++$(call set,_COMP_FLAGS,frt, -I"$(INCDIR)" ) # Fujitsu + + # define define_module_subdir script options + $(call set,_DEFINE_MODULE_SUBDIR_FLAGS,f90,) # Absoft f90 +@@ -113,6 +117,7 @@ + $(call set,_DEFINE_MODULE_SUBDIR_FLAGS,gfortran,) # gfortran + $(call set,_DEFINE_MODULE_SUBDIR_FLAGS,ftn,) # Cray Computing Environment (cce) + $(call set,_DEFINE_MODULE_SUBDIR_FLAGS,flang,) # flang ++$(call set,_DEFINE_MODULE_SUBDIR_FLAGS,frt,) # Fujitsu + + # define define_module_subdir script patterns + $(call set,_DEFINE_MODULE_SUBDIR_PATTS,f90,absoft) # Absoft f90 +@@ -125,6 +130,7 @@ + $(call set,_DEFINE_MODULE_SUBDIR_PATTS,gfortran,gcc) # gfortran + $(call set,_DEFINE_MODULE_SUBDIR_PATTS,ftn,cce) # Cray Computing Environment (cce) + $(call set,_DEFINE_MODULE_SUBDIR_PATTS,flang,flang) # flang ++$(call set,_DEFINE_MODULE_SUBDIR_PATTS,frt,frt) # Fujitsu + + # define optional modules for cross-compiling + X_Compile_Module_List = craype-haswell craype-mic-knl diff --git a/var/spack/repos/builtin/packages/eospac/package.py b/var/spack/repos/builtin/packages/eospac/package.py index 0d9221e7df..eece080dc9 100644 --- a/var/spack/repos/builtin/packages/eospac/package.py +++ b/var/spack/repos/builtin/packages/eospac/package.py @@ -30,20 +30,26 @@ class Eospac(Package): # This patch allows the use of spack's compile wrapper 'flang' patch('flang.patch', when='@:6.4.0beta.2%clang') + patch('frt.patch', when='%fj') def install(self, spec, prefix): with working_dir('Source'): + compilerArgs = [] + compilerArgs.append('CC={0}'.format(spack_cc)) + compilerArgs.append('CXX={0}'.format(spack_cxx)) + compilerArgs.append('F77={0}'.format(spack_f77)) + compilerArgs.append('F90={0}'.format(spack_fc)) + # Eospac depends on fcommon behavior + # but gcc@10 flipped to default fno-common + if "%gcc@10:" in spec: + compilerArgs.append('CFLAGS=-fcommon') make('install', - 'CC={0}'.format(spack_cc), - 'CXX={0}'.format(spack_cxx), - 'F77={0}'.format(spack_f77), - 'F90={0}'.format(spack_fc), 'prefix={0}'.format(prefix), 'INSTALLED_LIBRARY_DIR={0}'.format(prefix.lib), 'INSTALLED_INCLUDE_DIR={0}'.format(prefix.include), 'INSTALLED_EXAMPLE_DIR={0}'.format(prefix.example), - 'INSTALLED_BIN_DIR={0}'.format(prefix.bin)) - + 'INSTALLED_BIN_DIR={0}'.format(prefix.bin), + *compilerArgs) # fix conflict with linux's getopt for 6.4.0beta.2 if spec.satisfies('@6.4.0beta.2'): with working_dir(prefix.bin): diff --git a/var/spack/repos/builtin/packages/erfa/package.py b/var/spack/repos/builtin/packages/erfa/package.py index dd2e838c18..b500089352 100644 --- a/var/spack/repos/builtin/packages/erfa/package.py +++ b/var/spack/repos/builtin/packages/erfa/package.py @@ -7,15 +7,11 @@ from spack import * class Erfa(AutotoolsPackage): - """ERFA(Essential Routines for Fundamental Astronomy) + """ERFA (Essential Routines for Fundamental Astronomy) is a C library containing key algorithms for astronomy.""" homepage = "https://github.com/liberfa/erfa" - url = "https://github.com/liberfa/erfa/archive/v1.4.0.tar.gz" + url = "https://github.com/liberfa/erfa/releases/download/v1.7.0/erfa-1.7.0.tar.gz" - version('1.4.0', sha256='90113f18a1a05a3d26970a95b70a71ec52d71156b967ffd6c26dd1626d92e946') - - depends_on('m4', type='build') - depends_on('autoconf', type='build') - depends_on('automake', type='build') - depends_on('libtool', type='build') + version('1.7.0', sha256='f0787e30e848750c0cbfc14827de6fc7f69a2d5ef0fc653504e74b8967a764e0') + version('1.4.0', sha256='035b7f0ad05c1191b8588191ba4b19ba0f31afa57ad561d33bd5417d9f23e460') diff --git a/var/spack/repos/builtin/packages/erlang/package.py b/var/spack/repos/builtin/packages/erlang/package.py index f1fc027ae0..02d097fbd3 100644 --- a/var/spack/repos/builtin/packages/erlang/package.py +++ b/var/spack/repos/builtin/packages/erlang/package.py @@ -27,3 +27,4 @@ class Erlang(AutotoolsPackage): depends_on('automake', type='build') depends_on('m4', type='build') depends_on('libtool', type='build') + depends_on('ncurses', type='link') diff --git a/var/spack/repos/builtin/packages/esmf/package.py b/var/spack/repos/builtin/packages/esmf/package.py index b533851228..3055b4446e 100644 --- a/var/spack/repos/builtin/packages/esmf/package.py +++ b/var/spack/repos/builtin/packages/esmf/package.py @@ -169,7 +169,7 @@ class Esmf(MakefilePackage): os.environ['ESMF_CXXLINKLIBS'] = '-lmpifort' elif '^openmpi' in spec: os.environ['ESMF_COMM'] = 'openmpi' - elif '^intel-parallel-studio+mpi' in spec: + elif '^intel-parallel-studio+mpi' in spec or '^intel-mpi' in spec: os.environ['ESMF_COMM'] = 'intelmpi' else: # Force use of the single-processor MPI-bypass library. diff --git a/var/spack/repos/builtin/packages/espanso/package.py b/var/spack/repos/builtin/packages/espanso/package.py new file mode 100644 index 0000000000..b820a14be8 --- /dev/null +++ b/var/spack/repos/builtin/packages/espanso/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 Espanso(Package): + """Cross-platform Text Expander written in Rust""" + + homepage = "https://github.com/federico-terzi/espanso" + url = "https://github.com/federico-terzi/espanso/releases/download/v0.6.3/espanso-linux.tar.gz" + + maintainers = ['zicklag'] + + version('0.6.3', sha256='eb9f9563ed0924d1494f0b406b6d3df9d7df00e81affaf15023d1c82dd8ac561') + version('0.6.2', sha256='db2e53c8e0a17575f69739e53dd6a486dd0e912abbc7ac7c33d98567bd1f0e18') + version('0.6.1', sha256='0917d4a990bfc5ced368ce9fbc3aa4bc4dac4d39ddea88359dc628fee16daf87') + version('0.6.0', sha256='97689b734235224dde2fb4723bee24324a53355a6b549fb9d024a0c8ddb3cd98') + version('0.5.5', sha256='94687a3049a43ed4c2ed3814afb4e32e09dec8ec396e54a7b012de936f0260e9') + version('0.5.4', sha256='87e4c4a8a7bfb95a3ee987e34af3a37ca4d962bec3f863ef74be7fc8cdd1a9dd') + version('0.5.3', sha256='1db21f74385b1eb94ac6d27def550d02dce8da34bce1f8f4a0c4eb9bfd80d135') + version('0.5.2', sha256='69c8d3460ae497a2224cbf290c334c9151fc756053f65cbaf9ce8e9284ad50fd') + version('0.5.1', sha256='e68d90256f9eb26b57085b5170e238752bfbfcf3d50ccaa5693974460cb19deb') + version('0.5.0', sha256='f85c098a20b1022d8a6b751e3a56431caa01c796ce88ab95aae8950a1233da55') + + depends_on('xclip') + depends_on('xdotool') + + def install(self, spec, prefix): + mkdir(prefix.bin) + install('espanso', prefix.bin) diff --git a/var/spack/repos/builtin/packages/examl/package.py b/var/spack/repos/builtin/packages/examl/package.py new file mode 100644 index 0000000000..d5f115b9be --- /dev/null +++ b/var/spack/repos/builtin/packages/examl/package.py @@ -0,0 +1,50 @@ +# 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 Examl(MakefilePackage): + """ + Exascale Maximum Likelihood (ExaML) code for phylogenetic inference + using MPI. This code implements the popular RAxML search algorithm + for maximum likelihood based inference of phylogenetic trees. + """ + + homepage = "https://github.com/stamatak/ExaML" + url = "https://github.com/stamatak/ExaML/archive/v3.0.22.tar.gz" + + maintainers = ['robqiao'] + + version('3.0.22', sha256='802e673b0c2ea83fdbe6b060048d83f22b6978933a04be64fb9b4334fe318ca3') + version('3.0.21', sha256='6c7e6c5d7bf4ab5cfbac5cc0d577885272a803c142e06b531693a6a589102e2e') + version('3.0.20', sha256='023681248bbc7f19821b509948d79301e46bbf275aa90bf12e9f4879639a023b') + version('3.0.19', sha256='3814230bf7578b8396731dc87ce665d0b1a671d8effd571f924c5b7936ae1c9e') + version('3.0.18', sha256='1bacb5124d943d921e7beae52b7062626d0ce3cf2f83e3aa3acf6ea26cf9cd87') + version('3.0.17', sha256='90a859e0b8fff697722352253e748f03c57b78ec5fbc1ae72f7e702d299dac67') + version('3.0.16', sha256='abc922994332d40892e30f077e4644db08cd59662da8e2a9197d1bd8bcb9aa5f') + version('3.0.15', sha256='da5e66a63d6fa34b640535c359d8daf67f23bd2fcc958ac604551082567906b0') + version('3.0.14', sha256='698b538996946ae23a2d6fa1e230c210832e59080da33679ff7d6b342a9e6180') + version('3.0.13', sha256='893aecb5545798235a17975aa07268693d3526d0aee0ed59a2d6e791248791ed') + + variant('mpi', default=True, description='Enable MPI parallel support') + + depends_on('mpi', when='+mpi') + + def build(self, spec, prefix): + ##################### + # Build Directories # + ##################### + with working_dir('examl'): + make('-f', 'Makefile.SSE3.gcc') + with working_dir('parser'): + make('-f', 'Makefile.SSE3.gcc') + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install("examl/examl", prefix.bin) + install("parser/parse-examl", prefix.bin) + install_tree("manual", prefix.manual) + install_tree("testData", prefix.testData) diff --git a/var/spack/repos/builtin/packages/express/package.py b/var/spack/repos/builtin/packages/express/package.py index d434a866c1..d54dec85c7 100644 --- a/var/spack/repos/builtin/packages/express/package.py +++ b/var/spack/repos/builtin/packages/express/package.py @@ -27,6 +27,7 @@ class Express(CMakePackage): # patch from the debian package repo: # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811859 patch('gcc-6.patch', when='%gcc@6.0.0:') + patch('gcc-6.patch', when='%fj') def patch(self): with working_dir('src'): diff --git a/var/spack/repos/builtin/packages/eztrace/package.py b/var/spack/repos/builtin/packages/eztrace/package.py index ddf9808f7b..f73087de99 100644 --- a/var/spack/repos/builtin/packages/eztrace/package.py +++ b/var/spack/repos/builtin/packages/eztrace/package.py @@ -21,6 +21,26 @@ class Eztrace(AutotoolsPackage): # Does not work on Darwin due to MAP_POPULATE conflicts('platform=darwin') + def patch(self): + filter_file( + '"DEFAULT_OUTFILE"', + '" DEFAULT_OUTFILE "', + 'extlib/gtg/extlib/otf/tools/otfshrink/otfshrink.cpp', + string=True + ) + + def setup_build_environment(self, env): + if self.spec.satisfies('%fj'): + env.set('LDFLAGS', '--linkfortran') + def configure_args(self): args = ["--with-mpi={0}".format(self.spec["mpi"].prefix)] return args + + @run_before('build') + def fix_libtool(self): + if self.spec.satisfies('%fj'): + libtools = ['extlib/gtg/libtool', + 'extlib/opari2/build-frontend/libtool'] + for f in libtools: + filter_file('wl=""', 'wl="-Wl,"', f, string=True) diff --git a/var/spack/repos/builtin/packages/fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/fenics-dolfinx/package.py new file mode 100644 index 0000000000..30f37b304a --- /dev/null +++ b/var/spack/repos/builtin/packages/fenics-dolfinx/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 * + + +class FenicsDolfinx(CMakePackage): + """Next generation FEniCS problem solving environment""" + + homepage = "https://github.com/FEniCS/dolfinx" + git = "https://github.com/FEniCS/dolfinx.git" + maintainers = ["js947", "chrisrichardson"] + + version("master", branch="master") + + variant("kahip", default=False, description="kahip support") + variant("parmetis", default=False, description="parmetis support") + variant("slepc", default=False, description="slepc support") + + depends_on("cmake@3.9:", type="build") + depends_on("pkgconfig", type="build") + depends_on("mpi") + depends_on("hdf5+hl+fortran") + depends_on("boost") + depends_on("eigen@3.3.7:") + depends_on("petsc+mpi+shared+hypre+metis") + depends_on("scotch+mpi") + + depends_on("kahip", when="+kahip") + depends_on("parmetis", when="+parmetis") + depends_on("slepc", when="+slepc") + + depends_on("py-fenics-ffcx", type=["build", "run"]) + + conflicts('%gcc@:6', msg='C++17 support required') + + root_cmakelists_dir = "cpp" + + def cmake_args(self): + args = [ + "-DDOLFINX_SKIP_BUILD_TESTS=True", + "-DDOLFINX_ENABLE_KAHIP=%s" % ( + 'ON' if "+kahip" in self.spec else 'OFF'), + "-DDOLFINX_ENABLE_PARMETIS=%s" % ( + 'ON' if "+parmetis" in self.spec else 'OFF'), + "-DDOLFINX_ENABLE_SLEPC=%s" % ( + 'ON' if "+slepc" in self.spec else 'OFF'), + "-DPython3_ROOT_DIR=%s" % self.spec['python'].home, + "-DPython3_FIND_STRATEGY=LOCATION", + ] + return args diff --git a/var/spack/repos/builtin/packages/ferret/package.py b/var/spack/repos/builtin/packages/ferret/package.py index 1ad1978240..5878403e26 100644 --- a/var/spack/repos/builtin/packages/ferret/package.py +++ b/var/spack/repos/builtin/packages/ferret/package.py @@ -13,10 +13,18 @@ class Ferret(Package): designed to meet the needs of oceanographers and meteorologists analyzing large and complex gridded data sets.""" homepage = "http://ferret.pmel.noaa.gov/Ferret/home" - url = "ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v696.tar.gz" + url = "https://github.com/NOAA-PMEL/Ferret/archive/v7.6.0.tar.gz" - version('7.2', sha256='21c339b1bafa6939fc869428d906451f130f7e77e828c532ab9488d51cf43095') - version('6.96', sha256='7eb87156aa586cfe838ab83f08b2102598f9ab62062d540a5da8c9123816331a') + maintainers = ['RemiLacroix-IDRIS'] + + version('7.6.0', sha256='69832d740bd44c9eadd198a5de4d96c4c01ae90ae28c2c3414c1bb9f43e475d1') + version('7.5.0', sha256='2a038c547e6e80e6bd0645a374c3247360cf8c94ea56f6f3444b533257eb16db') + version('7.4', sha256='5167bb9e6ef441ae9cf90da555203d2155e3fcf929e7b8dddb237de0d58c5e5f') + version('7.3', sha256='ae80a732c34156b5287a23696cf4ae4faf4de1dd705ff43cbb4168b05c6faaf4') + version('7.2', sha256='21c339b1bafa6939fc869428d906451f130f7e77e828c532ab9488d51cf43095') + version('6.96', sha256='7eb87156aa586cfe838ab83f08b2102598f9ab62062d540a5da8c9123816331a') + + variant('datasets', default=False, description="Install Ferret standard datasets") depends_on("hdf5+hl") depends_on("netcdf-c") @@ -24,53 +32,128 @@ class Ferret(Package): depends_on("readline") depends_on("zlib") depends_on("libx11") + depends_on("curl") + + # Make Java dependency optional with older versions of Ferret + patch('https://github.com/NOAA-PMEL/Ferret/commit/c7eb70a0b17045c8ca7207d586bfea77a5340668.patch', + sha256='5bd581db4578c013faed375844b206fbe71f93fe9ce60f8f9f41d64abc6a5972', + level=1, working_dir='FERRET', when='@:6.99') + + resource(name='datasets', + url='https://github.com/NOAA-PMEL/FerretDatasets/archive/v7.6.tar.gz', + sha256='b2fef758ec1817c1c19e6225857ca3a82c727d209ed7fd4697d45c5533bb2c72', + placement='fer_dsets', when='+datasets') def url_for_version(self, version): - return "ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v{0}.tar.gz".format( - version.joined) + if version <= Version('7.2'): + return 'ftp://ftp.pmel.noaa.gov/ferret/pub/source/fer_source.v{0}.tar.gz'.format( + version.joined) + else: + return 'https://github.com/NOAA-PMEL/Ferret/archive/v{0}.tar.gz'.format(version) def patch(self): - hdf5_prefix = self.spec['hdf5'].prefix - netcdff_prefix = self.spec['netcdf-fortran'].prefix - readline_prefix = self.spec['readline'].prefix - libz_prefix = self.spec['zlib'].prefix - - filter_file(r'^BUILDTYPE.+', - 'BUILDTYPE = x86_64-linux', - 'FERRET/site_specific.mk') - filter_file(r'^INSTALL_FER_DIR.+', - 'INSTALL_FER_DIR = %s' % self.spec.prefix, - 'FERRET/site_specific.mk') - filter_file(r'^HDF5_DIR.+', - 'HDF5_DIR = %s' % hdf5_prefix, - 'FERRET/site_specific.mk') - filter_file(r'^NETCDF4_DIR.+', - 'NETCDF4_DIR = %s' % netcdff_prefix, - 'FERRET/site_specific.mk') - filter_file(r'^READLINE_DIR.+', - 'READLINE_DIR = %s' % readline_prefix, - 'FERRET/site_specific.mk') - filter_file(r'^LIBZ_DIR.+', - 'LIBZ_DIR = %s' % libz_prefix, - 'FERRET/site_specific.mk') - filter_file(r'^JAVA_HOME.+', - ' ', - 'FERRET/site_specific.mk') - filter_file(r'-lm', - '-lgfortran -lm', - 'FERRET/platform_specific.mk.x86_64-linux') - filter_file(r'\$\(NETCDF4_DIR\)/lib64/libnetcdff.a', - "-L%s -lnetcdff" % self.spec['netcdf-fortran'].prefix.lib, - 'FERRET/platform_specific.mk.x86_64-linux') - filter_file(r'\$\(NETCDF4_DIR\)/lib64/libnetcdf.a', - "-L%s -lnetcdf" % self.spec['netcdf-c'].prefix.lib, - 'FERRET/platform_specific.mk.x86_64-linux') - filter_file(r'\$\(HDF5_DIR\)/lib64/libhdf5_hl.a', - "-L%s -lhdf5_hl" % self.spec['hdf5'].prefix.lib, - 'FERRET/platform_specific.mk.x86_64-linux') - filter_file(r'\$\(HDF5_DIR\)/lib64/libhdf5.a', - "-L%s -lhdf5" % self.spec['hdf5'].prefix.lib, - 'FERRET/platform_specific.mk.x86_64-linux') + spec = self.spec + hdf5_prefix = spec['hdf5'].prefix + netcdff_prefix = spec['netcdf-fortran'].prefix + readline_prefix = spec['readline'].prefix + libz_prefix = spec['zlib'].prefix + + work_dir = 'FERRET' if '@:7.2' in spec else '.' + with working_dir(work_dir, create=False): + if '@7.3:' in spec: + copy('site_specific.mk.in', 'site_specific.mk') + copy('external_functions/ef_utility/site_specific.mk.in', + 'external_functions/ef_utility/site_specific.mk') + + filter_file(r'^DIR_PREFIX.+', + 'DIR_PREFIX = %s' % self.stage.source_path, + 'site_specific.mk') + # Setting this to blank not to force + # using the static version of readline + filter_file(r'^(READLINE_(LIB)?DIR).+', + '\\1 = ', + 'site_specific.mk') + else: + filter_file(r'^LIBZ_DIR.+', + 'LIBZ_DIR = %s' % libz_prefix, + 'site_specific.mk') + filter_file(r'^JAVA_HOME.+', + ' ', + 'site_specific.mk') + filter_file(r'^READLINE_DIR.+', + 'READLINE_DIR = %s' % readline_prefix, + 'site_specific.mk') + + filter_file(r'^BUILDTYPE.+', + 'BUILDTYPE = x86_64-linux', + 'site_specific.mk') + filter_file(r'^INSTALL_FER_DIR.+', + 'INSTALL_FER_DIR = %s' % spec.prefix, + 'site_specific.mk') + filter_file(r'^(HDF5_(LIB)?DIR).+', + '\\1 = %s' % hdf5_prefix, + 'site_specific.mk') + filter_file(r'^(NETCDF4?_(LIB)?DIR).+', + '\\1 = %s' % netcdff_prefix, + 'site_specific.mk') + + if '@:7.3' in spec: + # Don't force using the static version of libz + filter_file(r'\$\(LIBZ_DIR\)/lib64/libz.a', + '-lz', + 'platform_specific.mk.x86_64-linux') + + # Don't force using the static version of libgfortran + filter_file(r'-Wl,-Bstatic -lgfortran -Wl,-Bdynamic', + '-lgfortran', + 'platform_specific.mk.x86_64-linux') + + # This prevents the rpaths to be properly set + # by Spack's compiler wrappers + filter_file(r'-v --verbose', + '', + 'platform_specific.mk.x86_64-linux') + + filter_file(r'^[ \t]*LD[ \t]*=.+', + 'LD = %s' % spack_cc, + 'platform_specific.mk.x86_64-linux') + else: + # Don't force using the static version of libgfortran + filter_file(r'-static-libgfortran', + '', + 'platform_specific.mk.x86_64-linux') + + if '@:7.4' in spec: + compilers_spec_file = 'platform_specific.mk.x86_64-linux' + else: + compilers_spec_file = 'site_specific.mk' + + # Make sure Ferret uses Spack's compiler wrappers + filter_file(r'^[ \t]*CC[ \t]*=.+', + 'CC = %s' % spack_cc, + compilers_spec_file) + filter_file(r'^[ \t]*CXX[ \t]*=.+', + 'CXX = %s' % spack_cxx, + compilers_spec_file) + filter_file(r'^[ \t]*FC[ \t]*=.+', + 'FC = %s' % spack_fc, + compilers_spec_file) + filter_file(r'^[ \t]*F77[ \t]*=.+', + 'F77 = %s' % spack_f77, + compilers_spec_file) + + filter_file(r'\$\(NETCDF4?_(LIB)?DIR\).*/libnetcdff.a', + "-L%s -lnetcdff" % spec['netcdf-fortran'].prefix.lib, + 'platform_specific.mk.x86_64-linux') + filter_file(r'\$\(NETCDF4?_(LIB)?DIR\).*/libnetcdf.a', + "-L%s -lnetcdf" % spec['netcdf-c'].prefix.lib, + 'platform_specific.mk.x86_64-linux') + filter_file(r'\$\(HDF5_(LIB)?DIR\).*/libhdf5_hl.a', + "-L%s -lhdf5_hl" % spec['hdf5'].prefix.lib, + 'platform_specific.mk.x86_64-linux') + filter_file(r'\$\(HDF5_(LIB)?DIR\).*/libhdf5.a', + "-L%s -lhdf5" % spec['hdf5'].prefix.lib, + 'platform_specific.mk.x86_64-linux') def install(self, spec, prefix): if 'LDFLAGS' in env and env['LDFLAGS']: @@ -78,8 +161,37 @@ class Ferret(Package): else: env['LDFLAGS'] = '-lquadmath' - with working_dir('FERRET', create=False): + work_dir = 'FERRET' if '@:7.2' in self.spec else '.' + with working_dir(work_dir, create=False): os.environ['LD_X11'] = '-L%s -lX11' % spec['libx11'].prefix.lib os.environ['HOSTTYPE'] = 'x86_64-linux' make(parallel=False) make("install") + + if '+datasets' in self.spec: + mkdir(self.prefix.fer_dsets) + install_tree('fer_dsets', self.prefix.fer_dsets) + + def setup_run_environment(self, env): + env.set('FER_DIR', self.prefix) + env.set('FER_GO', ' '.join(['.', self.prefix.go, self.prefix.examples, + self.prefix.contrib])) + env.set('FER_EXTERNAL_FUNCTIONS', self.prefix.ext_func.libs) + env.set('FER_PALETTE', ' '.join(['.', self.prefix.ppl])) + env.set('FER_FONTS', self.prefix.ppl.fonts) + + fer_data = ['.'] + fer_descr = ['.'] + fer_grids = ['.'] + + if '+datasets' in self.spec: + env.set('FER_DSETS', self.prefix.fer_dsets) + + fer_data.append(self.prefix.fer_dsets.data) + fer_descr.append(self.prefix.fer_dsets.descr) + fer_grids.append(self.prefix.fer_dsets.grids) + + fer_data.extend([self.prefix.go, self.prefix.examples]) + env.set('FER_DATA', ' '.join(fer_data)) + env.set('FER_DESCR', ' '.join(fer_descr)) + env.set('FER_GRIDS', ' '.join(fer_grids)) diff --git a/var/spack/repos/builtin/packages/fftw/intel-configure.patch b/var/spack/repos/builtin/packages/fftw/intel-configure.patch new file mode 100644 index 0000000000..21b95c0efe --- /dev/null +++ b/var/spack/repos/builtin/packages/fftw/intel-configure.patch @@ -0,0 +1,54 @@ +--- configure 2020-08-07 15:58:51.343052000 +0200 ++++ configure 2020-08-07 16:03:16.202984102 +0200 +@@ -14858,51 +14858,6 @@ + + + case "${ax_cv_c_compiler_vendor}" in +- intel) # Stop icc from defining __GNUC__, except on MacOS where this fails +- case "${host_os}" in +- *darwin*) ;; # icc -no-gcc fails to compile some system headers +- *) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -no-gcc" >&5 +-$as_echo_n "checking whether C compiler accepts -no-gcc... " >&6; } +-if ${ax_cv_c_flags__no_gcc+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- +- ax_save_FLAGS=$CFLAGS +- CFLAGS="-no-gcc" +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ax_cv_c_flags__no_gcc=yes +-else +- ax_cv_c_flags__no_gcc=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- CFLAGS=$ax_save_FLAGS +-fi +- +-eval ax_check_compiler_flags=$ax_cv_c_flags__no_gcc +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5 +-$as_echo "$ax_check_compiler_flags" >&6; } +-if test "x$ax_check_compiler_flags" = xyes; then +- CC="$CC -no-gcc" +-else +- : +-fi +- +- ;; +- esac +- ;; +- + hp) # must (sometimes) manually increase cpp limits to handle fftw3.h + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wp,-H128000" >&5 + $as_echo_n "checking whether C compiler accepts -Wp,-H128000... " >&6; } diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index b644677fd1..c9544add21 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -33,6 +33,7 @@ class Fftw(AutotoolsPackage): patch('pfft-3.3.5.patch', when="@3.3.5:+pfft_patches", level=0) patch('pfft-3.3.4.patch', when="@3.3.4+pfft_patches", level=0) patch('pgi-3.3.6-pl2.patch', when="@3.3.6-pl2%pgi", level=0) + patch('intel-configure.patch', when="@3:3.3.8%intel", level=0) variant( 'precision', values=any_combination_of( diff --git a/var/spack/repos/builtin/packages/findbugs/package.py b/var/spack/repos/builtin/packages/findbugs/package.py new file mode 100644 index 0000000000..e81b3247dd --- /dev/null +++ b/var/spack/repos/builtin/packages/findbugs/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 Findbugs(Package): + """a program which uses static analysis to look for bugs in Java code. + It is free software, distributed under the terms of the Lesser GNU + Public License.""" + + homepage = "https://findbugs.sourceforge.net/" + url = "https://sourceforge.net/projects/findbugs/files/findbugs/3.0.1/findbugs-3.0.1.tar.gz" + list_url = "https://sourceforge.net/projects/findbugs/files/findbugs" + list_depth = 1 + + version('3.0.1', sha256='e80e0da0c213a27504ef3188ef25f107651700ffc66433eac6a7454bbe336419') + version('3.0.0', sha256='31c75797ead68dbb334fd57bf16f4b7b99c9e266447171453e06fdf673335f33') + version('2.0.3', sha256='59ba2a64d786ae5b3fa46e9f9c7bb3ea91c24d43d383c8ef594217f6f51e499f') + + depends_on('java', type=('run')) + + def install(self, spec, prefix): + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/flang/package.py b/var/spack/repos/builtin/packages/flang/package.py index f0f49ae506..4fd754eab3 100644 --- a/var/spack/repos/builtin/packages/flang/package.py +++ b/var/spack/repos/builtin/packages/flang/package.py @@ -71,6 +71,11 @@ class Flang(CMakePackage, CudaPackage): spec['python'].command.path) ] + # Make sure llvm-flang can find GCC's libstdc++ + if self.compiler.name == "gcc": + gcc_prefix = ancestor(self.compiler.cc, 2) + options.append('-DGCC_INSTALL_PREFIX=' + gcc_prefix) + if '+cuda' in spec: options.append('-DFLANG_OPENMP_GPU_NVIDIA=ON') else: diff --git a/var/spack/repos/builtin/packages/flatbuffers/package.py b/var/spack/repos/builtin/packages/flatbuffers/package.py index 72ad2e599c..c0a0ef4ee2 100644 --- a/var/spack/repos/builtin/packages/flatbuffers/package.py +++ b/var/spack/repos/builtin/packages/flatbuffers/package.py @@ -13,6 +13,7 @@ class Flatbuffers(CMakePackage): homepage = "http://google.github.io/flatbuffers/" url = "https://github.com/google/flatbuffers/archive/v1.9.0.tar.gz" + version('1.12.0', sha256='62f2223fb9181d1d6338451375628975775f7522185266cd5296571ac152bc45') version('1.11.0', sha256='3f4a286642094f45b1b77228656fbd7ea123964f19502f9ecfd29933fd23a50b') version('1.10.0', sha256='3714e3db8c51e43028e10ad7adffb9a36fc4aa5b1a363c2d0c4303dd1be59a7c') version('1.9.0', sha256='5ca5491e4260cacae30f1a5786d109230db3f3a6e5a0eb45d0d0608293d247e3') diff --git a/var/spack/repos/builtin/packages/flatcc/package.py b/var/spack/repos/builtin/packages/flatcc/package.py index ce3fc222fc..a9d3617c9b 100644 --- a/var/spack/repos/builtin/packages/flatcc/package.py +++ b/var/spack/repos/builtin/packages/flatcc/package.py @@ -37,6 +37,9 @@ class Flatcc(CMakePackage): spec = self.spec args = [] + # allow flatcc to be built with more compilers + args.append('-DFLATCC_ALLOW_WERROR=OFF') + if '+shared' in spec: args.append('-DBUILD_SHARED_LIBS=ON') args.append('-DFLATCC_INSTALL=ON') diff --git a/var/spack/repos/builtin/packages/flecsph/package.py b/var/spack/repos/builtin/packages/flecsph/package.py index fee1e36c64..0ab3623c14 100644 --- a/var/spack/repos/builtin/packages/flecsph/package.py +++ b/var/spack/repos/builtin/packages/flecsph/package.py @@ -17,19 +17,28 @@ class Flecsph(CMakePackage): homepage = "http://flecsi.lanl.com" git = "https://github.com/laristra/flecsph.git" - version('develop', branch='master', submodules=True) + version('master', branch='master', submodules=True, preferred=True) - depends_on('cmake@3.1:', type='build') - depends_on('boost@1.59.0: cxxstd=11 +program_options') + variant('test', default=True, description='Adding tests') + + depends_on('cmake@3.15:', type='build') + depends_on('boost@1.70.0: cxxstd=17 +program_options') depends_on('mpi') - depends_on('hdf5@1.10.5 +mpi') - depends_on('flecsi backend=mpi') + depends_on('hdf5+hl@1.8:') + depends_on('flecsi@1 +cinch backend=mpi') depends_on('gsl') + depends_on('googletest', when='+test') + depends_on("pkgconfig", type='build') + + def setup_run_environment(self, env): + env.set('HDF5_ROOT', self.spec['hdf5'].prefix) def cmake_args(self): options = ['-DCMAKE_BUILD_TYPE=debug'] - options.append('-DENABLE_MPI=ON') - options.append('-DENABLE_OPENMP=ON') - options.append('-DENABLE_CLOG=ON') - options.append('-DCXX_CONFORMANCE_STANDARD=c++17') + options.append('-DENABLE_UNIT_TESTS=ON') + options.append('-DENABLE_DEBUG=OFF') + options.append('-DLOG_STRIP_LEVEL=1') + options.append('-DENABLE_UNIT_TESTS=ON') + options.append('-DENABLE_DEBUG_TREE=OFF') + # add option to build the tests return options diff --git a/var/spack/repos/builtin/packages/frontistr/package.py b/var/spack/repos/builtin/packages/frontistr/package.py index ebdfa0a3e3..e59da46324 100644 --- a/var/spack/repos/builtin/packages/frontistr/package.py +++ b/var/spack/repos/builtin/packages/frontistr/package.py @@ -15,6 +15,7 @@ class Frontistr(CMakePackage): git = "https://gitlab.com/FrontISTR-Commons/FrontISTR.git" maintainers = ['hiroshi.okuda', 'kgoto', 'morita', 'inagaki', 'michioga'] + version('5.1', tag='v5.1') version('5.0', tag='v5.0') version('master', tag='master') diff --git a/var/spack/repos/builtin/packages/gaudi/package.py b/var/spack/repos/builtin/packages/gaudi/package.py index 0c44036dc6..cea1b046da 100644 --- a/var/spack/repos/builtin/packages/gaudi/package.py +++ b/var/spack/repos/builtin/packages/gaudi/package.py @@ -16,6 +16,7 @@ class Gaudi(CMakePackage): version('master', branch='master') # major cmake config overhaul already in use by some version('develop', git='https://gitlab.cern.ch/clemenci/Gaudi.git', branch='cmake-modernisation') + version('34.0', sha256='28fc4abb5a6b08da5a6b1300451c7e8487f918b055939877219d454abf7668ae') version('33.2', sha256='26aaf9c4ff237a60ec79af9bd18ad249fc91c16e297ba77e28e4a256123db6e5') version('33.1', sha256='7eb6b2af64aeb965228d4b6ea66c7f9f57f832f93d5b8ad55c9105235af5b042') version('33.0', sha256='76a967c41f579acc432593d498875dd4dc1f8afd5061e692741a355a9cf233c8') diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 3072402dab..dc7b13742d 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -2,16 +2,17 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack import * -from spack.operating_systems.mac_os import macos_version, macos_sdk_path -from llnl.util import tty - import glob import itertools import os +import re import sys +import llnl.util.tty as tty +import spack.util.executable + +from spack.operating_systems.mac_os import macos_version, macos_sdk_path + class Gcc(AutotoolsPackage, GNUMirrorPackage): """The GNU Compiler Collection includes front ends for C, C++, Objective-C, @@ -27,6 +28,7 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): version('master', branch='master') + version('10.2.0', sha256='b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c') version('10.1.0', sha256='b6898a23844b656f1b68691c5c012036c2e694ac4b53a8918d4712ad876e7ea2') version('9.3.0', sha256='71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1') @@ -268,6 +270,105 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): build_directory = 'spack-build' + @property + def executables(self): + names = [r'gcc', r'[^\w]?g\+\+', r'gfortran'] + suffixes = [r'', r'-mp-\d+\.\d', r'-\d+\.\d', r'-\d+', r'\d\d'] + return [r''.join(x) for x in itertools.product(names, suffixes)] + + @classmethod + def filter_detected_exes(cls, prefix, exes_in_prefix): + result = [] + for exe in exes_in_prefix: + # clang++ matches g++ -> clan[g++] + if any(x in exe for x in ('clang', 'ranlib')): + continue + # Filter out links in favor of real executables + if os.path.islink(exe): + continue + result.append(exe) + return result + + @classmethod + def determine_version(cls, exe): + version_regex = re.compile(r'([\d\.]+)') + for vargs in ('-dumpfullversion', '-dumpversion'): + try: + output = spack.compiler.get_compiler_version_output(exe, vargs) + match = version_regex.search(output) + if match: + return match.group(1) + except spack.util.executable.ProcessError: + pass + except Exception as e: + tty.debug(e) + + return None + + @classmethod + def determine_variants(cls, exes, version_str): + languages, compilers = set(), {} + for exe in exes: + basename = os.path.basename(exe) + if 'gcc' in basename: + languages.add('c') + compilers['c'] = exe + elif 'g++' in basename: + languages.add('c++') + compilers['cxx'] = exe + elif 'gfortran' in basename: + languages.add('fortran') + compilers['fortran'] = exe + variant_str = 'languages={0}'.format(','.join(languages)) + return variant_str, {'compilers': compilers} + + @classmethod + def validate_detected_spec(cls, spec, extra_attributes): + # For GCC 'compilers' is a mandatory attribute + msg = ('the extra attribute "compilers" must be set for ' + 'the detected spec "{0}"'.format(spec)) + assert 'compilers' in extra_attributes, msg + + compilers = extra_attributes['compilers'] + for constraint, key in { + 'languages=c': 'c', + 'languages=c++': 'cxx', + 'languages=fortran': 'fortran' + }.items(): + if spec.satisfies(constraint, strict=True): + msg = '{0} not in {1}' + assert key in compilers, msg.format(key, spec) + + @property + def cc(self): + msg = "cannot retrieve C compiler [spec is not concrete]" + assert self.spec.concrete, msg + if self.spec.external: + return self.spec.extra_attributes['compilers'].get('c', None) + return self.spec.prefix.bin.gcc if 'languages=c' in self.spec else None + + @property + def cxx(self): + msg = "cannot retrieve C++ compiler [spec is not concrete]" + assert self.spec.concrete, msg + if self.spec.external: + return self.spec.extra_attributes['compilers'].get('cxx', None) + result = None + if 'languages=c++' in self.spec: + result = os.path.join(self.spec.prefix.bin, 'g++') + return result + + @property + def fortran(self): + msg = "cannot retrieve Fortran compiler [spec is not concrete]" + assert self.spec.concrete, msg + if self.spec.external: + return self.spec.extra_attributes['compilers'].get('fortran', None) + result = None + if 'languages=fortran' in self.spec: + result = self.spec.prefix.bin.gfortran + return result + def url_for_version(self, version): # This function will be called when trying to fetch from url, before # mirrors are tried. It takes care of modifying the suffix of gnu diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index b3678bed32..e5a727b66d 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -18,7 +18,7 @@ class Gdal(AutotoolsPackage): """ homepage = "https://www.gdal.org/" - url = "https://download.osgeo.org/gdal/3.1.1/gdal-3.1.1.tar.xz" + url = "https://download.osgeo.org/gdal/3.1.2/gdal-3.1.2.tar.xz" list_url = "https://download.osgeo.org/gdal/" list_depth = 1 @@ -29,6 +29,7 @@ class Gdal(AutotoolsPackage): 'osgeo.gdal_array', 'osgeo.gdalconst' ] + version('3.1.2', sha256='767c8d0dfa20ba3283de05d23a1d1c03a7e805d0ce2936beaff0bb7d11450641') version('3.1.1', sha256='97154a606339a6c1d87c80fb354d7456fe49828b2ef9a3bc9ed91771a03d2a04') version('3.1.0', sha256='e754a22242ccbec731aacdb2333b567d4c95b9b02d3ba1ea12f70508d244fcda') version('3.0.4', sha256='5569a4daa1abcbba47a9d535172fc335194d9214fdb96cd0f139bb57329ae277') diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index e6aef7d671..bef6540a30 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -15,6 +15,7 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage): homepage = "https://www.gnu.org/software/gdb" gnu_mirror_path = "gdb/gdb-7.10.tar.gz" + version('9.2', sha256='38ef247d41ba7cc3f6f93a612a78bab9484de9accecbe3b0150a3c0391a3faf0') version('9.1', sha256='fcda54d4f35bc53fb24b50009a71ca98410d71ff2620942e3c829a7f5d614252') version('8.3.1', sha256='26ce655216cd03f4611518a7a1c31d80ec8e884c16715e9ba8b436822e51434b') version('8.3', sha256='b2266ec592440d0eec18ee1790f8558b3b8a2845b76cc83a872e39b501ce8a28') diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index 04fd4d6030..585bd2de81 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -14,13 +14,17 @@ class GdkPixbuf(Package): preparation for the change to GTK+ 3.""" homepage = "https://developer.gnome.org/gdk-pixbuf/" - url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.38/gdk-pixbuf-2.38.0.tar.xz" + url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz" list_url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/" list_depth = 1 + version('2.40.0', sha256='1582595099537ca8ff3b99c6804350b4c058bb8ad67411bbaae024ee7cead4e6') + version('2.38.2', sha256='73fa651ec0d89d73dd3070b129ce2203a66171dfc0bd2caa3570a9c93d2d0781') version('2.38.0', sha256='dd50973c7757bcde15de6bcd3a6d462a445efd552604ae6435a0532fbbadae47') version('2.31.2', sha256='9e467ed09894c802499fb2399cd9a89ed21c81700ce8f27f970a833efb1e47aa') + variant('x11', default=False, description="Enable X11 support") + depends_on('meson@0.46.0:', type='build', when='@2.37.92:') depends_on('meson@0.45.0:', type='build', when='@2.37.0:') depends_on('ninja', type='build', when='@2.37.0:') @@ -37,6 +41,7 @@ class GdkPixbuf(Package): depends_on('zlib') depends_on('libtiff') depends_on('gobject-introspection') + depends_on('libx11', when='+x11') # Replace the docbook stylesheet URL with the one that our # docbook-xsl package uses/recognizes. @@ -54,7 +59,9 @@ class GdkPixbuf(Package): def install(self, spec, prefix): with working_dir('spack-build', create=True): - meson('..', *std_meson_args) + meson_args = std_meson_args + meson_args += ['-Dx11={0}'.format('+x11' in spec)] + meson('..', *meson_args) ninja('-v') if self.run_tests: ninja('test') diff --git a/var/spack/repos/builtin/packages/geant4-vmc/package.py b/var/spack/repos/builtin/packages/geant4-vmc/package.py new file mode 100644 index 0000000000..8a5adc7c43 --- /dev/null +++ b/var/spack/repos/builtin/packages/geant4-vmc/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 Geant4Vmc(CMakePackage): + """Geant4 VMC implements the Virtual Monte Carlo (VMC) for Geant4.""" + + homepage = "http://github.com/vmc-project/geant4_vmc" + url = "http://github.com/vmc-project/geant4_vmc/archive/v5-1-p1.tar.gz" + git = "http://github.com/vmc-project/geant4_vmc.git" + + maintainer = ['wdconinc'] + + version('master', branch='master') + version('5-2', sha256='5bd0e4a4f938048b35724f06075952ecfbc8a97ffc979630cfe2788323845b13') + version('5-1-p1', sha256='2e3e4705134ea464e993156f71d478cb7d3817f5b6026bf8d9a37d32ec97590b') + version('5-1', sha256='ede71f360397dc4d045ec0968acf23b564fa81059c94eb40942b552eea8b5e00') + version('5-0-p5', sha256='296340042b0bbfab0dec8f7f15a3b15cfab3fdb34aff97f80c1d52c2a25200cb') + version('5-0-p4', sha256='0c13848b5cf5951e3d5d2d5abcc4082c75ea37c83bb92a15b82ecae03045fe1e') + version('5-0-p3', sha256='91df73e992bf9ae7e1b6b3c3deb12cd6661c7dd5153fa233eb28b8d8e1164ccb') + version('5-0-p2', sha256='34578c5468173615de3fc077e85be3bf68f4aff4b4f37523ab67304dbc153d5f') + version('5-0-p1', sha256='b66cbf86a96b6efe1643753a7606b1c4ebb9d45cca9f6b8e933762920f32831f') + version('5-0', sha256='9a3820ea4b68b5a0697c340bbbc0972b9c8e4205ceecdd87258a9bdfd249cd8b') + version('4-0-p3', sha256='ec6699aa0deca903f143c593affec09832c33be736d9cddfa8d6f5cdfc3bc288') + version('4-0-p2', sha256='cdd73c499cd296f13b6c0d37e161e7d94343f85617b2a7577ded8312248f9b9b') + version('3-6-p6', sha256='e62a62ff7075ff9afb2ffe420610374f62136094a447bbbc5f739a2238ddb0f0') + + depends_on('cmake@3.3:', type='build') + depends_on('geant4') + depends_on('vmc') diff --git a/var/spack/repos/builtin/packages/ginkgo/CAS-HIP-NVCC-1.2.0.patch b/var/spack/repos/builtin/packages/ginkgo/CAS-HIP-NVCC-1.2.0.patch new file mode 100644 index 0000000000..d562b0315b --- /dev/null +++ b/var/spack/repos/builtin/packages/ginkgo/CAS-HIP-NVCC-1.2.0.patch @@ -0,0 +1,10 @@ +diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt +index 884e50bf6..40618311a 100644 +--- a/third_party/CMakeLists.txt ++++ b/third_party/CMakeLists.txt +@@ -1,4 +1,4 @@ +-if(GINKGO_BUILD_CUDA) ++if(GINKGO_BUILD_CUDA OR (GINKGO_BUILD_HIP AND GINKGO_HIP_PLATFORM STREQUAL "nvcc")) + enable_language(CUDA) + if (GINKGO_USE_EXTERNAL_CAS) + include(CudaArchitectureSelector RESULT_VARIABLE GINKGO_CAS_FILE) diff --git a/var/spack/repos/builtin/packages/ginkgo/package.py b/var/spack/repos/builtin/packages/ginkgo/package.py index 8440be2516..d0ee354256 100644 --- a/var/spack/repos/builtin/packages/ginkgo/package.py +++ b/var/spack/repos/builtin/packages/ginkgo/package.py @@ -18,6 +18,8 @@ class Ginkgo(CMakePackage, CudaPackage): version('develop', branch='develop') version('master', branch='master') + version('1.2.0', commit='b4be2be961fd5db45c3d02b5e004d73550722e31') # v1.2.0 + version('1.1.1', commit='08d2c5200d3c78015ac8a4fd488bafe1e4240cf5') # v1.1.1 version('1.1.0', commit='b9bec8225442b3eb2a85a870efa112ab767a17fb') # v1.1.0 version('1.0.0', commit='45244641e0c2b19ba33aecd25153c0bddbcbe1a0') # v1.0.0 @@ -44,6 +46,8 @@ class Ginkgo(CMakePackage, CudaPackage): 'ON' if '+full_optimizations' in spec else 'OFF'), '-DGINKGO_DEVEL_TOOLS=%s' % ( 'ON' if '+develtools' in spec else 'OFF'), + # Drop HIP support for now + '-DGINKGO_BUILD_HIP=OFF', # As we are not exposing benchmarks, examples, tests nor doc # as part of the installation, disable building them altogether. '-DGINKGO_BUILD_BENCHMARKS=OFF', diff --git a/var/spack/repos/builtin/packages/giraph/package.py b/var/spack/repos/builtin/packages/giraph/package.py new file mode 100644 index 0000000000..1e33b76736 --- /dev/null +++ b/var/spack/repos/builtin/packages/giraph/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 Giraph(Package): + """Apache Giraph is an iterative graph processing system built + for high scalability.""" + + homepage = "https://giraph.apache.org/" + url = "https://downloads.apache.org/giraph/giraph-1.0.0/giraph-dist-1.0.0-src.tar.gz" + list_url = "https://downloads.apache.org/giraph/" + list_depth = 1 + + version('1.2.0', sha256='6206f4ad220ea42aa0c4abecce343e36026cf9c6e0a2853f1eb08543da452ad1') + version('1.1.0', sha256='181d94b8198c0f312d4611e24b0056b5181c8358a7ec89b0393661736cd19a4c') + + depends_on('maven', type='build') + depends_on('java@8', type=('build', 'run')) + + def install(self, spec, prefix): + mvn = which('mvn') + mvn('clean', 'package', '-DskipTests') + giraph_path = join_path(self.stage.source_path, + 'giraph-dist', 'target', + 'giraph-{0}-for-hadoop-1.2.1-bin' + .format(spec.version), + 'giraph-{0}-for-hadoop-1.2.1' + .format(spec.version)) + with working_dir(giraph_path): + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index 1094e3373d..8ecedd8c89 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -24,6 +24,11 @@ class Git(AutotoolsPackage): # You can find the source here: https://mirrors.edge.kernel.org/pub/software/scm/git/sha256sums.asc releases = [ { + 'version': '2.28.0', + 'sha256': 'f914c60a874d466c1e18467c864a910dd4ea22281ba6d4d58077cb0c3f115170', + 'sha256_manpages': '3cfca28a88d5b8112ea42322b797a500a14d0acddea391aed0462aff1ab11bf7' + }, + { 'version': '2.27.0', 'sha256': '77ded85cbe42b1ffdc2578b460a1ef5d23bcbc6683eabcafbb0d394dffe2e787', 'sha256_manpages': '414e4b17133e54d846f6bfa2479f9757c50e16c013eb76167a492ae5409b8947' @@ -193,6 +198,7 @@ class Git(AutotoolsPackage): depends_on('pcre2', when='@2.14:') depends_on('perl') depends_on('zlib') + depends_on('openssh', type='run') depends_on('autoconf', type='build') depends_on('automake', type='build') diff --git a/var/spack/repos/builtin/packages/glew/package.py b/var/spack/repos/builtin/packages/glew/package.py index a5ca6f65da..1b701a21c0 100644 --- a/var/spack/repos/builtin/packages/glew/package.py +++ b/var/spack/repos/builtin/packages/glew/package.py @@ -16,6 +16,8 @@ class Glew(Package): depends_on("cmake", type='build') depends_on("gl") + depends_on('libsm') + depends_on('libice') def install(self, spec, prefix): options = [] diff --git a/var/spack/repos/builtin/packages/global/package.py b/var/spack/repos/builtin/packages/global/package.py index 7a252e7add..5ad3d72520 100644 --- a/var/spack/repos/builtin/packages/global/package.py +++ b/var/spack/repos/builtin/packages/global/package.py @@ -13,6 +13,7 @@ class Global(Package): homepage = "http://www.gnu.org/software/global" url = "http://tamacom.com/global/global-6.5.tar.gz" + version('6.6.4', sha256='987e8cb956c53f8ebe4453b778a8fde2037b982613aba7f3e8e74bcd05312594') version('6.5', sha256='4afd12db1aa600277b39113cc2d61dc59bd6c6b4ee8033da8bb6dd0c39a4c6a9') depends_on('exuberant-ctags', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/glusterfs/package.py b/var/spack/repos/builtin/packages/glusterfs/package.py index 89024cf977..95c482da2f 100644 --- a/var/spack/repos/builtin/packages/glusterfs/package.py +++ b/var/spack/repos/builtin/packages/glusterfs/package.py @@ -34,6 +34,7 @@ class Glusterfs(AutotoolsPackage): depends_on('libuuid') depends_on('libtirpc') depends_on('userspace-rcu') + depends_on('pkgconfig', type='build') def url_for_version(self, version): url = 'https://download.gluster.org/pub/gluster/glusterfs/{0}/{1}/glusterfs-{1}.tar.gz' diff --git a/var/spack/repos/builtin/packages/gmt/package.py b/var/spack/repos/builtin/packages/gmt/package.py index 003c0d24be..02400cb66e 100644 --- a/var/spack/repos/builtin/packages/gmt/package.py +++ b/var/spack/repos/builtin/packages/gmt/package.py @@ -15,12 +15,13 @@ class Gmt(Package): """ homepage = "https://www.generic-mapping-tools.org/" - url = "https://github.com/GenericMappingTools/gmt/archive/6.0.0.tar.gz" + url = "https://github.com/GenericMappingTools/gmt/archive/6.1.0.tar.gz" git = "https://github.com/GenericMappingTools/gmt.git" maintainers = ['adamjstewart'] version('master', branch='master') + version('6.1.0', sha256='f76ad7f444d407dfd7e5762644eec3a719c6aeb06d877bf746fe51abd79b1a9e') version('6.0.0', sha256='7a733e670f01d99f8fc0da51a4337320d764c06a68746621f83ccf2e3453bcb7') version('5.4.4', sha256='b593dfb101e6507c467619f3d2190a9f78b09d49fe2c27799750b8c4c0cd2da0') version('4.5.9', sha256='9b13be96ccf4bbd38c14359c05dfa7eeeb4b5f06d6f4be9c33d6c3ea276afc86', @@ -41,7 +42,7 @@ class Gmt(Package): # https://github.com/GenericMappingTools/gmt/blob/master/MAINTENANCE.md # Required dependencies - depends_on('cmake@2.8.7:', type='build', when='@5:') + depends_on('cmake@2.8.12:', type='build', when='@5:') depends_on('netcdf-c@4:') depends_on('curl', when='@5.4:') @@ -59,6 +60,8 @@ class Gmt(Package): depends_on('graphicsmagick', type='test') + # https://github.com/GenericMappingTools/gmt/pull/3603 + patch('regexp.patch', when='@6.1.0') patch('type.patch', when='@4.5.9') @when('@5:') diff --git a/var/spack/repos/builtin/packages/gmt/regexp.patch b/var/spack/repos/builtin/packages/gmt/regexp.patch new file mode 100644 index 0000000000..00011591a9 --- /dev/null +++ b/var/spack/repos/builtin/packages/gmt/regexp.patch @@ -0,0 +1,11 @@ +--- a/src/gmt_regexp.c 2020-07-04 15:13:40.000000000 -0500 ++++ b/src/gmt_regexp.c 2020-07-05 18:35:02.000000000 -0500 +@@ -217,7 +217,7 @@ + /* this is when errors have been encountered */ + regerror(status, &re, err_msg, MAX_ERR_LENGTH); + GMT_Report (GMT->parent, GMT_MSG_ERROR, "gmtlib_regexp_match: POSIX ERE matching error: %s\n", err_msg); /* Report error. */ +- return (-GMT_RUNTIME_ERROR;) ++ return (-GMT_RUNTIME_ERROR); + } + return (0); /* No match */ + diff --git a/var/spack/repos/builtin/packages/gnuplot/package.py b/var/spack/repos/builtin/packages/gnuplot/package.py index 59e527fcde..0f1689b6cf 100644 --- a/var/spack/repos/builtin/packages/gnuplot/package.py +++ b/var/spack/repos/builtin/packages/gnuplot/package.py @@ -63,6 +63,7 @@ class Gnuplot(AutotoolsPackage): depends_on('cairo@1.2:', when='+cairo') depends_on('wxwidgets', when='+wx') depends_on('pango@1.10:', when='+wx') + depends_on('libsm', when='+wx') depends_on('pango@1.10:', when='+cairo') depends_on('libx11', when='+X') depends_on('qt@5.7:+opengl', when='+qt') diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py index aa9c863499..4d56fab7fe 100644 --- a/var/spack/repos/builtin/packages/gnutls/package.py +++ b/var/spack/repos/builtin/packages/gnutls/package.py @@ -17,6 +17,7 @@ class Gnutls(AutotoolsPackage): homepage = "http://www.gnutls.org" url = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.19.tar.xz" + version('3.6.14', sha256='5630751adec7025b8ef955af4d141d00d252a985769f51b4059e5affa3d39d63') version('3.6.8', sha256='aa81944e5635de981171772857e72be231a7e0f559ae0292d2737de475383e83') version('3.6.7.1', sha256='881b26409ecd8ea4c514fd3fbdb6fae5fab422ca7b71116260e263940a4bbbad') version('3.5.19', sha256='1936eb64f03aaefd6eb16cef0567457777618573826b94d03376bb6a4afadc44') diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index d0f515e94c..1d7982f866 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -4,9 +4,9 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import platform import llnl.util.tty as tty from spack import * -import platform # - vanilla CentOS 7, and possibly other systems, fail a test: # TestCloneNEWUSERAndRemapRootDisableSetgroups @@ -36,11 +36,15 @@ class Go(Package): extendable = True + version('1.14.6', sha256='73fc9d781815d411928eccb92bf20d5b4264797be69410eac854babe44c94c09') + version('1.14.5', sha256='ca4c080c90735e56152ac52cd77ae57fe573d1debb1a58e03da9cc362440315c') version('1.14.4', sha256='7011af3bbc2ac108d1b82ea8abb87b2e63f78844f0259be20cde4d42c5c40584') version('1.14.3', sha256='93023778d4d1797b7bc6a53e86c3a9b150c923953225f8a48a2d5fabc971af56') version('1.14.2', sha256='98de84e69726a66da7b4e58eac41b99cbe274d7e8906eeb8a5b7eb0aadee7f7c') version('1.14.1', sha256='2ad2572115b0d1b4cb4c138e6b3a31cee6294cb48af75ee86bec3dca04507676') version('1.14', sha256='6d643e46ad565058c7a39dac01144172ef9bd476521f42148be59249e4b74389') + version('1.13.14', sha256='197333e97290e9ea8796f738d61019dcba1c377c2f3961fd6a114918ecc7ab06') + version('1.13.13', sha256='ab7e44461e734ce1fd5f4f82c74c6d236e947194d868514d48a2b1ea73d25137') version('1.13.12', sha256='17ba2c4de4d78793a21cc659d9907f4356cd9c8de8b7d0899cdedcef712eba34') version('1.13.11', sha256='89ed1abce25ad003521c125d6583c93c1280de200ad221f961085200a6c00679') version('1.13.10', sha256='eb9ccc8bf59ed068e7eff73e154e4f5ee7eec0a47a610fb864e3332a2fdc8b8c') diff --git a/var/spack/repos/builtin/packages/gotcha/arm.patch b/var/spack/repos/builtin/packages/gotcha/arm.patch deleted file mode 100644 index 0790c257b5..0000000000 --- a/var/spack/repos/builtin/packages/gotcha/arm.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit 6f494384b0f00513d950b94a60c14ad1c20eb353 -Author: David Poliakoff <david.poliakoff@gmail.com> -Date: Thu Sep 20 10:59:54 2018 -0700 - - Pushed fix to help build on ARM systems - -diff --git a/src/libc_wrappers.c b/src/libc_wrappers.c -index 504e31a..5937e5a 100644 ---- a/src/libc_wrappers.c -+++ b/src/libc_wrappers.c -@@ -358,7 +358,7 @@ int gotcha_open(const char *pathname, int flags, ...) - } - va_end(args); - -- result = syscall(SYS_open, pathname, flags, mode); -+ result = syscall(SYS_openat, AT_FDCWD, pathname, flags, mode); - if (result >= 0) - return (int) result; - diff --git a/var/spack/repos/builtin/packages/gotcha/package.py b/var/spack/repos/builtin/packages/gotcha/package.py index f0cb3a7233..7c78f6c300 100644 --- a/var/spack/repos/builtin/packages/gotcha/package.py +++ b/var/spack/repos/builtin/packages/gotcha/package.py @@ -20,7 +20,10 @@ class Gotcha(CMakePackage): version('0.0.2', tag='0.0.2') variant('test', default=False, description='Build tests for Gotcha') - patch('arm.patch', when='@1.0.2') + patch( + 'https://github.com/LLNL/GOTCHA/commit/e82b4a1ecb634075d8f5334b796c888c86da0427.patch', + sha256='9f7814fd3c3362c156bc617c755e7e50c2f9125ed4540e36f60e4d93884f1ce6', + when='@0.0.2:1.0.2') def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/gpdb/package.py b/var/spack/repos/builtin/packages/gpdb/package.py index 07ced439bd..98683b271c 100644 --- a/var/spack/repos/builtin/packages/gpdb/package.py +++ b/var/spack/repos/builtin/packages/gpdb/package.py @@ -27,6 +27,7 @@ class Gpdb(AutotoolsPackage): version('5.23.0', sha256='b06a797eb941362d5473b84d5def349b5ce12ce87ab116bea7c74ad193738ae9') depends_on('zstd') + depends_on('py-setuptools@:44.99.99') depends_on('apr') depends_on('libevent') depends_on('curl') @@ -35,7 +36,17 @@ class Gpdb(AutotoolsPackage): depends_on('libxml2') depends_on('flex') depends_on('readline') + depends_on('py-subprocess32', type=('build', 'run')) + depends_on('python@:2.8.0', type=('build', 'run')) + depends_on('py-lockfile', type=('build', 'run')) + depends_on('py-psutil', type=('build', 'run')) + depends_on('py-utils@:1.0.0', type=('build', 'run')) def configure_args(self): - args = ['--disable-orca'] + args = ['--with-python', '--disable-orca', '--enable-depend', + '--with-libxml'] return args + + def setup_run_environment(self, env): + env.append_path('GPHOME', self.prefix) + env.append_path('PYTHONPATH', self.prefix.lib.python) diff --git a/var/spack/repos/builtin/packages/gpi-2/package.py b/var/spack/repos/builtin/packages/gpi-2/package.py new file mode 100644 index 0000000000..299fba0a1a --- /dev/null +++ b/var/spack/repos/builtin/packages/gpi-2/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 * + + +class Gpi2(AutotoolsPackage): + """GPI-2 is an API for the development of scalable, asynchronous and fault + tolerant parallel applications. It implements the GASPI specification + (www.gaspi.de)""" + + homepage = "http://www.gpi-site.com" + url = "https://github.com/cc-hpc-itwm/GPI-2/archive/v1.4.0.tar.gz" + git = "https://github.com/cc-hpc-itwm/GPI-2.git" + maintainers = ['robert-mijakovic'] + + version('develop', branch='next') + version('master', branch='master') + version('1.4.0', sha256='3b8ffb45346b2fe56aaa7ba15a515e62f9dff45a28e6a014248e20094bbe50a1') + + variant('mpi', default=False, description='Enable MPI support') + variant('fortran', default=True, description='Enable Fortran modules') + variant( + 'fabrics', + values=disjoint_sets( + ('auto',), ('verbs',), ('ethernet',), + ).with_non_feature_values('auto', 'none'), + description="List of fabrics that are enabled; " + "'auto' lets gpi-2 determine", + ) + + variant( + 'schedulers', + values=disjoint_sets( + ('auto',), ('loadleveler',), ('pbs',), ('slurm',) + ).with_non_feature_values('auto', 'none'), + description="List of schedulers for which support is enabled; " + "'auto' lets gpi-2 determine", + ) + + depends_on('autoconf', type='build') # autogen.sh - autoreconf + depends_on('automake', type='build') # autogen.sh - automake + depends_on('libtool', type='build') + depends_on('m4', type='build') + depends_on('mpi', when='+mpi') + + depends_on('rdma-core', when='fabrics=verbs') + + depends_on('slurm', when='schedulers=slurm') + + def with_or_without_verbs(self, activated): + opt = 'infiniband' + # If the option has not been activated return + # --without-infiniband + if not activated: + return '--without-{0}'.format(opt) + return '--with-{0}={1}'.format(opt, self.spec['rdma-core'].prefix) + + def autoreconf(self, spec, prefix): + bash = which('bash') + bash('./autogen.sh') + + def configure_args(self): + spec = self.spec + config_args = [] + config_args.extend(self.with_or_without('mpi')) + config_args.extend(self.with_or_without('fortran')) + + # Fabrics + if 'fabrics=auto' not in spec: + config_args.extend(self.with_or_without('fabrics')) + # Schedulers + if 'schedulers=auto' not in spec: + config_args.extend(self.with_or_without('schedulers')) + + return config_args diff --git a/var/spack/repos/builtin/packages/grads/package.py b/var/spack/repos/builtin/packages/grads/package.py new file mode 100644 index 0000000000..889ad5c7e3 --- /dev/null +++ b/var/spack/repos/builtin/packages/grads/package.py @@ -0,0 +1,65 @@ +# 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 Grads(AutotoolsPackage): + """The Grid Analysis and Display System (GrADS) is an interactive + desktop tool that is used for easy access, manipulation, and visualization + of earth science data. GrADS has two data models for handling gridded and + station data. GrADS supports many data file formats, including + binary (stream or sequential), GRIB (version 1 and 2), NetCDF, + HDF (version 4 and 5), and BUFR (for station data).""" + + homepage = "http://cola.gmu.edu/grads/grads.php" + url = "ftp://cola.gmu.edu/grads/2.2/grads-2.2.1-src.tar.gz" + + version('2.2.1', sha256='695e2066d7d131720d598bac0beb61ac3ae5578240a5437401dc0ffbbe516206') + + variant('geotiff', default=True, description="Enable GeoTIFF support") + variant('shapefile', default=True, description="Enable Shapefile support") + + """ + # FIXME: Fails with undeclared functions (tdefi, tdef, ...) in gauser.c + variant('hdf5', default=False, description="Enable HDF5 support") + variant('hdf4', default=False, description="Enable HDF4 support") + variant('netcdf', default=False, description="Enable NetCDF support") + depends_on('hdf5', when='+hdf5') + depends_on('hdf', when='+hdf4') + depends_on('netcdf-c', when='+netcdf') + """ + + depends_on('libgeotiff', when='+geotiff') + depends_on('shapelib', when='+shapefile') + depends_on('udunits') + depends_on('libgd') + depends_on('libxmu') + depends_on('cairo +X +pdf +fc +ft') + depends_on('readline') + depends_on('pkgconfig', type='build') + + def setup_build_environment(self, env): + env.set('SUPPLIBS', '/') + + def setup_run_environment(self, env): + env.set('GADDIR', self.prefix.data) + + @run_after('install') + def copy_data(self): + with working_dir(self.build_directory): + install_tree('data', self.prefix.data) + with working_dir(self.package_dir): + install('udpt', self.prefix.data) + filter_file( + r'({lib})', + self.prefix.lib, + self.prefix.data.udpt + ) + + def configure_args(self): + args = [] + args.extend(self.with_or_without('geotiff')) + return args diff --git a/var/spack/repos/builtin/packages/grads/udpt b/var/spack/repos/builtin/packages/grads/udpt new file mode 100644 index 0000000000..5bfc99ba33 --- /dev/null +++ b/var/spack/repos/builtin/packages/grads/udpt @@ -0,0 +1,2 @@ +gxdisplay Cairo {lib}/libgxdCairo.so +gxprint Cairo {lib}/libgxpCairo.so diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 31b5d701fe..8042e38864 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -24,6 +24,7 @@ class Gromacs(CMakePackage): maintainers = ['junghans', 'marvinbernhardt'] version('master', branch='master') + version('2020.3', sha256='903183691132db14e55b011305db4b6f4901cc4912d2c56c131edfef18cc92a9') version('2020.2', sha256='7465e4cd616359d84489d919ec9e4b1aaf51f0a4296e693c249e83411b7bd2f3') version('2020.1', sha256='e1666558831a3951c02b81000842223698016922806a8ce152e8f616e29899cf') version('2020', sha256='477e56142b3dcd9cb61b8f67b24a55760b04d1655e8684f979a75a5eec40ba01') @@ -58,23 +59,37 @@ class Gromacs(CMakePackage): description='Produces a double precision version of the executables') variant('plumed', default=False, description='Enable PLUMED support') variant('cuda', default=False, description='Enable CUDA support') + variant('nosuffix', default=False, description='Disable default suffixes') variant('build_type', default='RelWithDebInfo', description='The build type to build', values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel', 'Reference', 'RelWithAssert', 'Profile')) - variant('rdtscp', default=True, description='Enable RDTSCP instruction usage') + variant('rdtscp', default=True, + description='Enable RDTSCP instruction usage') variant('mdrun_only', default=False, description='Enables the build of a cut-down version' ' of libgromacs and/or the mdrun program') - variant('openmp', default=True, description='Enables OpenMP at configure time') - variant('double_precision', default=False, description='Enables a double-precision configuration') - variant('hwloc', default=True, description='Use the hwloc portable hardware locality library') + variant('openmp', default=True, + description='Enables OpenMP at configure time') + variant('double_precision', default=False, + description='GMX_RELAXED_DOUBLE_PRECISION for Fujitsu PRIMEHPC') + variant('hwloc', default=True, + description='Use the hwloc portable hardware locality library') depends_on('mpi', when='+mpi') + # define matching plumed versions + depends_on('plumed@2.6.0:2.6.9+mpi', when='@2020.2+plumed+mpi') + depends_on('plumed@2.6.0:2.6.9~mpi', when='@2020.2+plumed~mpi') + depends_on('plumed@2.6.0:2.6.9+mpi', when='@2019.6+plumed+mpi') + depends_on('plumed@2.6.0:2.6.9~mpi', when='@2019.6+plumed~mpi') + depends_on('plumed@2.5.0:2.5.9+mpi', when='@2019.4+plumed+mpi') + depends_on('plumed@2.5.0:2.5.9~mpi', when='@2019.4+plumed~mpi') + depends_on('plumed@2.5.0:2.5.9+mpi', when='@2018.6+plumed+mpi') + depends_on('plumed@2.5.0:2.5.9~mpi', when='@2018.6+plumed~mpi') depends_on('plumed+mpi', when='+plumed+mpi') depends_on('plumed~mpi', when='+plumed~mpi') - depends_on('fftw+mpi', when='+mpi') - depends_on('fftw~mpi', when='~mpi') + depends_on('fftw-api@3', when='~cuda') + depends_on('mkl', when='fft=mkl') depends_on('cmake@2.8.8:3.99.99', type='build') depends_on('cmake@3.4.3:3.99.99', type='build', when='@2018:') depends_on('cmake@3.13.0:3.99.99', type='build', when='@master') @@ -104,6 +119,9 @@ class Gromacs(CMakePackage): if '+double' in self.spec: options.append('-DGMX_DOUBLE:BOOL=ON') + if '+nosuffix' in self.spec: + options.append('-DGMX_DEFAULT_SUFFIX:BOOL=OFF') + if '~shared' in self.spec: options.append('-DBUILD_SHARED_LIBS:BOOL=OFF') @@ -174,4 +192,18 @@ class Gromacs(CMakePackage): else: options.append('-DGMX_RELAXED_DOUBLE_PRECISION:BOOL=OFF') + if '^mkl' in self.spec: + # fftw-api@3 is provided by intel-mkl or intel-parllel-studio + # we use the mkl interface of gromacs + options.append('-DGMX_FFT_LIBRARY=mkl') + options.append('-DMKL_INCLUDE_DIR={0}'. + format(self.spec['mkl'].headers.directories[0])) + # The 'blas' property provides a minimal set of libraries + # that is sufficient for fft. Using full mkl fails the cmake test + options.append('-DMKL_LIBRARIES={0}'. + format(self.spec['blas'].libs.joined(';'))) + else: + # we rely on the fftw-api@3 + options.append('-DGMX_FFT_LIBRARY=fftw3') + return options diff --git a/var/spack/repos/builtin/packages/grpc/package.py b/var/spack/repos/builtin/packages/grpc/package.py index a7eff3e07f..010cffb6f3 100644 --- a/var/spack/repos/builtin/packages/grpc/package.py +++ b/var/spack/repos/builtin/packages/grpc/package.py @@ -11,8 +11,14 @@ class Grpc(CMakePackage): maintainers = ['nazavode'] homepage = "https://grpc.io" - url = "https://github.com/grpc/grpc/archive/v1.27.0.tar.gz" - + url = "https://github.com/grpc/grpc/archive/v1.30.0.tar.gz" + + version('1.30.0', sha256='419dba362eaf8f1d36849ceee17c3e2ff8ff12ac666b42d3ff02a164ebe090e9') + version('1.29.1', sha256='0343e6dbde66e9a31c691f2f61e98d79f3584e03a11511fad3f10e3667832a45') + version('1.29.0', sha256='c0a6b40a222e51bea5c53090e9e65de46aee2d84c7fa7638f09cb68c3331b983') + version('1.28.2', sha256='4bec3edf82556b539f7e9f3d3801cba540e272af87293a3f4178504239bd111e') + version('1.28.1', sha256='4cbce7f708917b6e58b631c24c59fe720acc8fef5f959df9a58cdf9558d0a79b') + version('1.28.0', sha256='d6277f77e0bb922d3f6f56c0f93292bb4cfabfc3c92b31ee5ccea0e100303612') version('1.27.0', sha256='3ccc4e5ae8c1ce844456e39cc11f1c991a7da74396faabe83d779836ef449bce') version('1.26.0', sha256='2fcb7f1ab160d6fd3aaade64520be3e5446fc4c6fa7ba6581afdc4e26094bd81') version('1.25.0', sha256='ffbe61269160ea745e487f79b0fd06b6edd3d50c6d9123f053b5634737cf2f69') @@ -29,7 +35,7 @@ class Grpc(CMakePackage): depends_on('openssl') depends_on('zlib') depends_on('c-ares') - depends_on('abseil-cpp', when='@1.27.0:') + depends_on('abseil-cpp', when='@1.27:') def cmake_args(self): args = [ diff --git a/var/spack/repos/builtin/packages/gunrock/package.py b/var/spack/repos/builtin/packages/gunrock/package.py index f47c1bf635..391b31b723 100644 --- a/var/spack/repos/builtin/packages/gunrock/package.py +++ b/var/spack/repos/builtin/packages/gunrock/package.py @@ -12,7 +12,10 @@ class Gunrock(CMakePackage, CudaPackage): homepage = "https://gunrock.github.io/docs/" git = "https://github.com/gunrock/gunrock.git" - version('master', submodules=True) + # tagged versions are broken. See + # https://github.com/gunrock/gunrock/issues/777 + # Hence, prefer master version. + version('master', submodules=True, preferred=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') @@ -23,9 +26,100 @@ class Gunrock(CMakePackage, CudaPackage): version('0.2', submodules=True, tag='v0.2') version('0.1', submodules=True, tag='v0.1') - depends_on('cuda') + variant('cuda', default=True, description="Build with Cuda support") + + variant('lib', default=True, description='Build main gunrock library') + variant('shared_libs', default=True, description='Turn off to build for static libraries') + variant('tests', default=True, description='Build functional tests / examples') + variant('mgpu_tests', default=False, description='Builds Gunrock applications and enables the ctest framework for single GPU implementations') + variant('cuda_verbose_ptxas', default=False, description='Enable verbose output from the PTXAS assembler') + variant('google_tests', default=False, description='Build unit tests using googletest') + variant('code_coverage', default=False, description="run code coverage on Gunrock's source code") + # apps + msg = 'select either all or individual applications' + variant( + "applications", + values=disjoint_sets( + ('all',), ('bc', 'bfs', 'cc', 'pr', 'sssp', 'dobfs', 'hits', + 'salsa', 'mst', 'wtf', 'topk') + ).allow_empty_set().with_default('all').with_error(msg), + description="Application to be built" + ) + + variant('boost', default=True, description='Build with Boost') + variant('metis', default=False, description='Build with Metis support') + + depends_on('googletest', when='+google_tests') + depends_on('lcov', when='+code_coverage') + depends_on('boost@1.58.0:', when='+boost') + depends_on('metis', when='+metis') + + conflicts('cuda_arch=none', when='+cuda', + msg='Must specify CUDA compute capabilities of your GPU. \ +See "spack info gunrock"') + + def cmake_args(self): + spec = self.spec + args = [] + args.extend([ + '-DGUNROCK_BUILD_LIB={0}'.format( + 'ON' if '+lib' in spec else 'OFF'), + '-DGUNROCK_BUILD_SHARED_LIBS={0}'.format( + 'ON' if '+shared_libs' in spec else 'OFF'), + '-DGUNROCK_BUILD_TESTS={0}'.format( + 'ON' if '+tests' in spec else 'OFF'), + '-DGUNROCK_MGPU_TESTS={0}'.format( + 'ON' if '+mgpu_tests' in spec else 'OFF'), + '-DCUDA_VERBOSE_PTXAS={0}'.format( + 'ON' if '+cuda_verbose_ptxas' in spec else 'OFF'), + '-DGUNROCK_GOOGLE_TESTS={0}'.format( + 'ON' if '+google_tests' in spec else 'OFF'), + '-DGUNROCK_CODE_COVERAGE={0}'.format( + 'ON' if '+code_coverage' in spec else 'OFF'), + ]) + + # turn off auto detect, which undoes custom cuda arch options + args.append('-DCUDA_AUTODETECT_GENCODE=OFF') + + cuda_arch_list = self.spec.variants['cuda_arch'].value + if cuda_arch_list[0] != 'none': + for carch in cuda_arch_list: + args.append('-DGUNROCK_GENCODE_SM' + carch + '=ON') + + app_list = self.spec.variants['applications'].value + if app_list[0] != 'none': + args.extend([ + '-DGUNROCK_BUILD_APPLICATIONS={0}'.format( + 'ON' if spec.satisfies('applications=all') else 'OFF'), + '-DGUNROCK_APP_BC={0}'.format( + 'ON' if spec.satisfies('applications=bc') else 'OFF'), + '-DGUNROCK_APP_BFS={0}'.format( + 'ON' if spec.satisfies('applications=bfs') else 'OFF'), + '-DGUNROCK_APP_CC={0}'.format( + 'ON' if spec.satisfies('applications=cc') else 'OFF'), + '-DGUNROCK_APP_PR={0}'.format( + 'ON' if spec.satisfies('applications=pr') else 'OFF'), + '-DGUNROCK_APP_SSSP={0}'.format( + 'ON' if spec.satisfies('applications=sssp') else 'OFF'), + '-DGUNROCK_APP_DOBFS={0}'.format( + 'ON' if spec.satisfies('applications=dobfs') else 'OFF'), + '-DGUNROCK_APP_HITS={0}'.format( + 'ON' if spec.satisfies('applications=hits') else 'OFF'), + '-DGUNROCK_APP_SALSA={0}'.format( + 'ON' if spec.satisfies('applications=salsa') else 'OFF'), + '-DGUNROCK_APP_MST={0}'.format( + 'ON' if spec.satisfies('applications=mst') else 'OFF'), + '-DGUNROCK_APP_WTF={0}'.format( + 'ON' if spec.satisfies('applications=wtf') else 'OFF'), + '-DGUNROCK_APP_TOPK={0}'.format( + 'ON' if spec.satisfies('applications=topk') else 'OFF'), + ]) + + return args def install(self, spec, prefix): with working_dir(self.build_directory): - install_tree('bin', prefix.bin) install_tree('lib', prefix.lib) + # bin dir is created only if tests/examples are built + if '+tests' in spec: + install_tree('bin', prefix.bin) diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py index 4ab6005dbf..2a303bc97e 100644 --- a/var/spack/repos/builtin/packages/harfbuzz/package.py +++ b/var/spack/repos/builtin/packages/harfbuzz/package.py @@ -8,9 +8,11 @@ from spack import * class Harfbuzz(AutotoolsPackage): """The Harfbuzz package contains an OpenType text shaping engine.""" - homepage = "http://www.freedesktop.org/wiki/Software/HarfBuzz/" + homepage = "https://github.com/harfbuzz/harfbuzz" url = "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.37.tar.bz2" + git = "https://github.com/harfbuzz/harfbuzz.git" + version('2.6.8', sha256='6648a571a27f186e47094121f0095e1b809e918b3037c630c7f38ffad86e3035') version('2.3.1', sha256='f205699d5b91374008d6f8e36c59e419ae2d9a7bb8c5d9f34041b9a5abcae468') version('2.1.3', sha256='613264460bb6814c3894e3953225c5357402915853a652d40b4230ce5faf0bee') version('1.9.0', sha256='11eca62bf0ac549b8d6be55f4e130946399939cdfe7a562fdaee711190248b00') @@ -30,6 +32,14 @@ class Harfbuzz(AutotoolsPackage): conflicts('%intel', when='@2.3.1:', msg='harfbuzz-2.3.1 does not build with the Intel compiler') + def url_for_version(self, version): + if version > Version('2.3.1'): + url = "https://github.com/harfbuzz/harfbuzz/releases/download/{0}/harfbuzz-{0}.tar.xz" + else: + url = "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-{0}.tar.bz2" + + return url.format(version) + def configure_args(self): args = [] # disable building of gtk-doc files following #9771 diff --git a/var/spack/repos/builtin/packages/hazelcast/package.py b/var/spack/repos/builtin/packages/hazelcast/package.py new file mode 100644 index 0000000000..c903b29c0c --- /dev/null +++ b/var/spack/repos/builtin/packages/hazelcast/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 Hazelcast(Package): + """Hazelcast is an open-source distributed in-memory data + store and computation platform. It provides a wide variety + of distributed data structures and concurrency primitives.""" + + homepage = "http://www.hazelcast.com/" + url = "https://github.com/hazelcast/hazelcast/archive/v3.12.8.tar.gz" + + version('4.0.2', sha256='4f01682583ae6603365ac7a24c568d7598cc3c1cbd736e5c6ed98bd75e39ffa3') + version('4.0.1', sha256='c9c7d5cbcf70c5e1eb72890df2b4104639f7543f11c6ac5d3e80cd2d4a0d2181') + version('3.12.8', sha256='65d0e131fc993f9517e8ce9ae5af9515f1b8038304abaaf9da535bdef1d71726') + version('3.12.7', sha256='0747de968082bc50202f825b4010be28a3885b3dbcee4b83cbe21b2f8b26a7e0') + version('3.11.7', sha256='c9f636b8813027d4cc24459bd27740549f89b4f11f62a868079bcb5b41d9b2bb') + + depends_on('maven', type='build') + depends_on('java', 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/hbase/package.py b/var/spack/repos/builtin/packages/hbase/package.py index d34fe2f9f1..1e87f8a297 100644 --- a/var/spack/repos/builtin/packages/hbase/package.py +++ b/var/spack/repos/builtin/packages/hbase/package.py @@ -7,21 +7,24 @@ from spack import * class Hbase(Package): - """ - Apache HBase is an open-source, distributed, versioned, column-oriented + """Apache HBase is an open-source, distributed, versioned, column-oriented store modeled after Google' Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, HBase provides - Bigtable-like capabilities on top of Apache Hadoop. - """ + Bigtable-like capabilities on top of Apache Hadoop.""" - homepage = "https://github.com/apache/hbase" - url = "https://github.com/apache/hbase/archive/rel/2.2.2.tar.gz" + homepage = "https://archive.apache.org/" + url = "https://archive.apache.org/dist/hbase/2.2.4/hbase-2.2.4-bin.tar.gz" + list_url = "https://archive.apache.org/dist/hbase" + list_depth = 1 - version('2.2.2', sha256='e9a58946e9adff1cac23a0b261ecf32da32f8d2ced0706af1d04e8a67d582926') - version('2.1.8', sha256='121cea4c554879c8401f676c8eb49e39bd35d41c358e919379ad4a318844c8de') + version('2.2.5', sha256='25d08f8f038d9de5beb43dfb0392e8a8b34eae7e0f2670d6c2c172abc3855194') + version('2.2.4', sha256='ec91b628352931e22a091a206be93061b6bf5364044a28fb9e82f0023aca3ca4') + version('2.2.3', sha256='ea8fa72aa6220e038e30bd7c439d181b10bd7225383f7f2d224ebb5f5397310a') + version('2.2.2', sha256='97dcca3a031925a379a0ee6bbfb6007533fb4fdb982c23345e5fc04d6c52bebc') + version('2.1.8', sha256='d8296e8405b1c39c73f0dd03fc6b4d2af754035724168fd56e8f2a0ff175ad90') - depends_on('java@7:', type='run') + depends_on('java@8', type='run') def install(self, spec, prefix): install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index c81ffb74dc..ba02bda8e0 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -57,6 +57,7 @@ class Hdf5(AutotoolsPackage): variant('hl', default=False, description='Enable the high-level library') variant('cxx', default=False, description='Enable C++ support') variant('fortran', default=False, description='Enable Fortran support') + variant('java', default=False, description='Enable Java support') variant('threadsafe', default=False, description='Enable thread-safe capabilities') @@ -78,6 +79,7 @@ class Hdf5(AutotoolsPackage): depends_on('m4', type='build', when='@develop') depends_on('mpi', when='+mpi') + depends_on('java', when='+java') # numactl does not currently build on darwin if sys.platform != 'darwin': depends_on('numactl', when='+mpi+fortran') @@ -237,6 +239,7 @@ class Hdf5(AutotoolsPackage): extra_args += self.enable_or_disable('cxx') extra_args += self.enable_or_disable('hl') extra_args += self.enable_or_disable('fortran') + extra_args += self.enable_or_disable('java') api = self.spec.variants['api'].value if api != 'none': diff --git a/var/spack/repos/builtin/packages/hdfview/fix_build.patch b/var/spack/repos/builtin/packages/hdfview/fix_build.patch new file mode 100644 index 0000000000..d4e3ce7480 --- /dev/null +++ b/var/spack/repos/builtin/packages/hdfview/fix_build.patch @@ -0,0 +1,12 @@ +diff --git a/build.xml b/build_fixed.xml +index f0f2c3f..c486cbb 100644 +--- a/build.xml ++++ b/build_fixed.xml +@@ -943,7 +943,6 @@ + <!-- Generate list of needed Java modules by using `jdeps` on all JAR files in the release directory --> + <apply executable="@{java.bindir}/jdeps" output="${build.dir}/jdeps.pre" append="true" > + <arg value="--print-module-deps" /> +- <arg value="--ignore-missing-deps" /> + <fileset dir="${release.dir}/lib" includes="**/*.jar" /> + </apply> + diff --git a/var/spack/repos/builtin/packages/hdfview/package.py b/var/spack/repos/builtin/packages/hdfview/package.py new file mode 100644 index 0000000000..fd21cb9dca --- /dev/null +++ b/var/spack/repos/builtin/packages/hdfview/package.py @@ -0,0 +1,49 @@ +# 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 Hdfview(Package): + """HDFView is a visual tool written in Java for browsing + and editing HDF (HDF5 and HDF4) files.""" + + homepage = "https://www.hdfgroup.org/downloads/hdfview/" + url = "https://s3.amazonaws.com/hdf-wordpress-1/wp-content/uploads/manual/HDFView/hdfview-3.0.tar.gz" + + version('3.1.1', sha256='1cfd127ebb4c3b0ab1cfe54649a410fc7a1c2d73f45564697d3729f4aa6b0ba3', + url='https://support.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfview-3.1.1/src/hdfview-3.1.1.tar.gz') + version('3.0', sha256='e2a16d3842d8947f3d4f154ee9f48a106c7f445914a9e626a53976d678a0e934') + + # unknown flag: --ignore-missing-deps + patch('fix_build.patch', when='@3.1.1') + + depends_on('ant', type='build') + depends_on('hdf5 +java') + depends_on('hdf +java -external-xdr +shared') + + def install(self, spec, prefix): + env['HDF5LIBS'] = spec['hdf5'].prefix + env['HDFLIBS'] = spec['hdf'].prefix + + ant = which('ant') + ant('-Dbuild.debug=false', 'deploy') + + dir_version = os.listdir('build/HDF_Group/HDFView/')[0] + path = 'build/HDF_Group/HDFView/{0}/'.format(dir_version) + hdfview = '{0}/{1}'.format(path, 'hdfview.sh') + + filter_file( + r'\$dir', + prefix, + hdfview + ) + + mkdirp(prefix.bin) + install(hdfview, prefix.bin.hdfview) + chmod = which('chmod') + chmod('+x', self.prefix.bin.hdfview) + install_tree(path, prefix) diff --git a/var/spack/repos/builtin/packages/heputils/package.py b/var/spack/repos/builtin/packages/heputils/package.py new file mode 100644 index 0000000000..e856d7b5d0 --- /dev/null +++ b/var/spack/repos/builtin/packages/heputils/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 Heputils(MakefilePackage): + """Generic tools for high energy physics, e.g. vectors, event records, + math and other util functions.""" + + homepage = "https://bitbucket.org/andybuckley/heputils/src/default/" + url = "https://bitbucket.org/andybuckley/heputils/get/heputils-1.3.2.tar.gz" + + version('1.3.2', sha256='be43586979ab1a81a55348d795c2f63a5da19fc6367d5f66f354217c76c809c0') + version('1.3.1', sha256='7f33ef44364a3d3a39cc65005fb6aa9dfd06bd1b18b41151c0e5e3d28d6ba15b') + version('1.3.0', sha256='1ec9d9d71d409ce6b2e668e4927b1090ddf2ee9acf25457f767925cf89b24852') + version('1.2.1', sha256='99f0b27cddffb98977d37418d53f3386e5defda547aeb4c4fda00ab6fcf2cc31') + version('1.2.0', sha256='0f9f96bd7589f9aec8f1271524b8622291216fe2294ffed772b84d010759eaef') + version('1.1.0', sha256='671374641cdb6dc093327b69da2d2854df805b6eb8e90f0efefb0788ee4a2edd') + version('1.0.8', sha256='9b9a45ebff1367cd2ab1ec4ee8c0e124a9b7ed66c75d8961412163ade1962d91') + version('1.0.7', sha256='481a26755d4e2836563d1f8fcdad663bfa7e21b9878c01bd8a73a67876726b81') + version('1.0.6', sha256='1ecd8597ef7921a63606b21136900a05a818c9342da7994a42aae768ecca507f') + version('1.0.5', sha256='efff3d7d6973822f1dced903017f86661e2d054ff3f0d4fe926de2347160e329') + version('1.0.4', sha256='aeca00c1012bce469c6fe6393edbf4f33043ab671c97a8283a21861caee8b1b4') + version('1.0.3', sha256='8e7ebe0ad5e87a97cbbff7097092ed8afe5a2d1ecae0f4d4f9a7bf694e221d40') + version('1.0.2', sha256='83ba7876d884406463cc8ae42214038b7d6c40ead77a1532d64bc96887173f75') + version('1.0.1', sha256='4bfccc4f4380becb776343e546deb2474deeae79f053ba8ca22287827b8bd4b1') + version('1.0.0', sha256='4f71c2bee6736ed87d0151e62546d2fc9ff639db58172c26dcf033e5bb1ea04c') + + def build(self, spec, prefix): + return + + def install(self, spec, prefix): + make('install', 'PREFIX={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/herwigpp/herwig++-2.7.1.patch b/var/spack/repos/builtin/packages/herwigpp/herwig++-2.7.1.patch new file mode 100644 index 0000000000..1690f362ad --- /dev/null +++ b/var/spack/repos/builtin/packages/herwigpp/herwig++-2.7.1.patch @@ -0,0 +1,66 @@ +--- Utilities/Histogram.h.orig 2018-11-07 14:46:18.967689784 +0100 ++++ Utilities/Histogram.h 2018-11-07 14:46:32.755601195 +0100 +@@ -111,7 +111,7 @@ + * Function to add a weighted point to the histogram + */ + void addWeighted(double input, double weight) { +- if(isnan(input)) return; ++ if(std::isnan(input)) return; + unsigned int ibin; + for(ibin=1; ibin<_bins.size(); ++ibin) { + if(input<_bins[ibin].limit) +--- Contrib/AlpGen/BasicLesHouchesFileReader.cc.orig 2018-11-07 15:38:46.819306762 +0100 ++++ Contrib/AlpGen/BasicLesHouchesFileReader.cc 2018-11-07 15:39:04.927190111 +0100 +@@ -383,9 +383,9 @@ + >> hepeup.PUP[i][3] >> hepeup.PUP[i][4] + >> hepeup.VTIMUP[i] >> hepeup.SPINUP[i] ) ) + return false; +- if(isnan(hepeup.PUP[i][0])||isnan(hepeup.PUP[i][1])|| +- isnan(hepeup.PUP[i][2])||isnan(hepeup.PUP[i][3])|| +- isnan(hepeup.PUP[i][4])) ++ if(std::isnan(hepeup.PUP[i][0])||std::isnan(hepeup.PUP[i][1])|| ++ std::isnan(hepeup.PUP[i][2])||std::isnan(hepeup.PUP[i][3])|| ++ std::isnan(hepeup.PUP[i][4])) + throw Exception() + << "nan's as momenta in Les Houches file " + << Exception::eventerror; +--- DipoleShower/Base/DipoleChain.cc.orig 2018-12-14 16:51:47.597597788 +0100 ++++ DipoleShower/Base/DipoleChain.cc 2018-12-14 16:52:09.450796951 +0100 +@@ -15,6 +15,7 @@ + #include "Herwig++/DipoleShower/Utility/DipolePartonSplitter.h" + + #include <boost/utility.hpp> ++#include <boost/next_prior.hpp> + + using namespace Herwig; + +--- Exsample2/exsample/config.h.orig 2018-12-14 16:56:31.729186139 +0100 ++++ Exsample2/exsample/config.h 2018-12-14 16:56:55.969406851 +0100 +@@ -25,6 +25,7 @@ + #include <limits> + + #include <boost/utility.hpp> ++#include <boost/next_prior.hpp> + #include <boost/scoped_array.hpp> + #include <boost/scoped_ptr.hpp> + +--- DipoleShower/Base/DipoleEventRecord.cc.orig 2018-12-14 16:58:33.878298134 +0100 ++++ DipoleShower/Base/DipoleEventRecord.cc 2018-12-14 16:58:47.983426512 +0100 +@@ -19,6 +19,7 @@ + #include "ThePEG/PDF/PartonExtractor.h" + + #include <boost/utility.hpp> ++#include <boost/next_prior.hpp> + + #include <algorithm> + +--- ./Exsample2/BinnedStatistics.h.orig 2018-12-14 17:11:37.396421246 +0100 ++++ ./Exsample2/BinnedStatistics.h 2018-12-14 17:12:00.762633435 +0100 +@@ -16,6 +16,7 @@ + #include "ThePEG/Repository/UseRandom.h" + + #include <boost/utility.hpp> ++#include <boost/next_prior.hpp> + + namespace Herwig { + diff --git a/var/spack/repos/builtin/packages/herwigpp/package.py b/var/spack/repos/builtin/packages/herwigpp/package.py new file mode 100644 index 0000000000..c3cdf7791d --- /dev/null +++ b/var/spack/repos/builtin/packages/herwigpp/package.py @@ -0,0 +1,52 @@ +# 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 Herwigpp(AutotoolsPackage): + """Herwig is a multi-purpose particle physics event generator. + This package provides old Herwig++ 2 generator""" + + homepage = "https://herwig.hepforge.org/" + url = "http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/sources/MCGeneratorsTarFiles/Herwig++-2.7.1.tar.bz2" + + version('2.7.1', '80a189376bb65f5ec4e64f42e76c00ea9102d8224010563a424fc11e619a6ad6') + patch('herwig++-2.7.1.patch', when='@2.7.1', level=0) + + depends_on('gsl') + depends_on('boost') + depends_on('fastjet') + depends_on('thepeg@1.9.2', when='@2.7.1') + + def configure_args(self): + args = ['--with-gsl=' + self.spec['gsl'].prefix, + '--with-thepeg=' + self.spec['thepeg'].prefix, + '--with-fastjet=' + self.spec['fastjet'].prefix, + '--with-boost=' + self.spec['boost'].prefix] + return args + + def build(self, spec, prefix): + make() + with working_dir('Contrib'): + make() + + with working_dir('Contrib/AlpGen'): + make('BasicLesHouchesFileReader.so', + "HERWIGINCLUDE=-I{0}/include".format(self.stage.source_path)) + make('AlpGenHandler.so', + "HERWIGINCLUDE=-I{0}/include".format(self.stage.source_path)) + + def install(self, spec, prefix): + make('install') + install( + join_path(self.stage.source_path, + 'Contrib', 'AlpGen', 'AlpGenHandler.so'), + join_path(prefix.lib, 'Herwig++', 'AlpGenHandler.so')) + + install( + join_path(self.stage.source_path, + 'Contrib', 'AlpGen', 'BasicLesHouchesFileReader.so'), + join_path(prefix.lib, 'Herwig++', 'BasicLesHouchesFileReader.so')) diff --git a/var/spack/repos/builtin/packages/hibench/package.py b/var/spack/repos/builtin/packages/hibench/package.py new file mode 100644 index 0000000000..c36cc27659 --- /dev/null +++ b/var/spack/repos/builtin/packages/hibench/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 Hibench(Package): + """HiBench is a big data benchmark suite that helps evaluate different big + data frameworks in terms of speed, throughput and system resource + utilizations. It contains a set of Hadoop,Spark and streaming workloads, + including Sort, WordCount, TeraSort, Repartition, Sleep, SQL,PageRank, + Nutch indexing, Bayes, Kmeans, NWeight and enhanced DFSIO, etc.""" + + homepage = "https://github.com/Intel-bigdata/HiBench" + url = "https://github.com/Intel-bigdata/HiBench/archive/HiBench-7.1.tar.gz" + + version('7.1', sha256='96572a837d747fb6347f2b906fd5f7fb97a62095435326ccfee5e75777a5c210') + version('7.0', sha256='89b01f3ad90b758f24afd5ea2bee997c3d700ce9244b8a2b544acc462ab0e847') + version('6.0', sha256='179f5415903f4029bd0ea1101a3d4c67faf88ca46a993d8179582299ad730f79') + version('5.0', sha256='32d6a7bc1010d90b2f22906896a03cd1980e617beb07b01716e3d04de5760ed4') + version('4.1', sha256='07551763aa30f04d32870c323524b5fc0fc2e968d7081d8916575bdeb4fd1381') + version('4.0', sha256='de58ed5e9647ffe28c2a905a8830b661bbd09db334eb5b3472c8186553407e0e') + version('3.0.0', sha256='869771e73593caac3a9b2fb14a10041a485d248074ba38cca812c934897db63d') + version('2.2.1', sha256='f8531cbaff8d93bfd1c0742fec5dbb375bfeeb9ec1b39b4e857120e933a2c9ec') + version('2.2', sha256='5f68e22339cdd141b846d8b1d7134b2b8ff5fbd5e847e406214dc845f5d005cf') + + 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/hip/0001-Make-it-possible-to-specify-the-package-folder-of-ro.patch b/var/spack/repos/builtin/packages/hip/0001-Make-it-possible-to-specify-the-package-folder-of-ro.patch new file mode 100644 index 0000000000..53f2bea672 --- /dev/null +++ b/var/spack/repos/builtin/packages/hip/0001-Make-it-possible-to-specify-the-package-folder-of-ro.patch @@ -0,0 +1,27 @@ +From cf5f9124a629e0594c71daa6ea12ee823bf6a9fb Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels <harmenstoppels@gmail.com> +Date: Fri, 7 Aug 2020 23:09:43 +0200 +Subject: [PATCH] Make it possible to specify the package folder of + rocm_agent_enumerator from the command line + +--- + bin/hipcc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bin/hipcc b/bin/hipcc +index 8c0a4796..48192ed1 100755 +--- a/bin/hipcc ++++ b/bin/hipcc +@@ -684,7 +684,8 @@ if($HIP_PLATFORM eq "hcc" or $HIP_PLATFORM eq "clang"){ + $targetsStr = $ENV{HCC_AMDGPU_TARGET}; + } else { + # Else try using rocm_agent_enumerator +- $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator"; ++ $ROCMINFO_PATH = $ENV{'ROCMINFO_PATH'} // $ROCM_PATH; ++ $ROCM_AGENT_ENUM = "${ROCMINFO_PATH}/bin/rocm_agent_enumerator"; + $targetsStr = `${ROCM_AGENT_ENUM} -t GPU`; + $targetsStr =~ s/\n/,/g; + } +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/hip/0002-Fix-detection-of-HIP_CLANG_ROOT.patch b/var/spack/repos/builtin/packages/hip/0002-Fix-detection-of-HIP_CLANG_ROOT.patch new file mode 100644 index 0000000000..61ad05873a --- /dev/null +++ b/var/spack/repos/builtin/packages/hip/0002-Fix-detection-of-HIP_CLANG_ROOT.patch @@ -0,0 +1,28 @@ +From 4f324ddc12f358de47ea0ef1872c61b1dc4c46e2 Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels <harmenstoppels@gmail.com> +Date: Mon, 10 Aug 2020 15:00:06 +0200 +Subject: [PATCH] Fix detection of HIP_CLANG_ROOT + +--- + hip-config.cmake.in | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/hip-config.cmake.in b/hip-config.cmake.in +index 859e2fa0..4baafbde 100644 +--- a/hip-config.cmake.in ++++ b/hip-config.cmake.in +@@ -58,8 +58,9 @@ if(HIP_COMPILER STREQUAL "clang") + execute_process(COMMAND ${HIP_CXX_COMPILER} --version + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE HIP_CLANG_CXX_COMPILER_VERSION_OUTPUT) +- if(HIP_CLANG_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[\t\r\n][\t\r\n]*([^\t\r\n])") +- set(HIP_CLANG_ROOT ${CMAKE_MATCH_1}) ++ if(HIP_CLANG_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir: ([^\t\r\n]+)") ++ # InstalledDir points to the bin/ directory, so the root is the parent dir ++ get_filename_component(HIP_CLANG_ROOT ${CMAKE_MATCH_1} DIRECTORY) + else() + set(HIP_CLANG_ROOT /opt/rocm/llvm) + endif() +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py new file mode 100644 index 0000000000..80eb95c5f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -0,0 +1,83 @@ +# 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 Hip(CMakePackage): + """HIP is a C++ Runtime API and Kernel Language that allows developers to + create portable applications for AMD and NVIDIA GPUs from + single source code.""" + + homepage = "https://github.com/ROCm-Developer-Tools/HIP" + url = "https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='ae8384362986b392288181bcfbe5e3a0ec91af4320c189bd83c844ed384161b3') + + depends_on('cmake@3:', type='build') + depends_on('perl@5.10:', type=('build', 'run')) + + depends_on('rocclr@3.5.0', when='@3.5.0') + depends_on('hsakmt-roct@3.5.0', type='build', when='@3.5.0') + depends_on('hsa-rocr-dev@3.5.0', type='link', when='@3.5.0') + depends_on('comgr@3.5.0', type='build', when='@3.5.0') + depends_on('llvm-amdgpu@3.5.0', type='build', when='@3.5.0') + depends_on('rocm-device-libs', type='build') + depends_on('rocminfo@3.5.0', type='build', when='@3.5.0') + + # Note: the ROCm ecosystem expects `lib/` and `bin/` folders with symlinks + # in the parent directory of the package, which is incompatible with spack. + # In hipcc the ROCM_PATH variable is used to point to the parent directory + # of the package. With the following patch we should never hit code that + # uses the ROCM_PATH variable again; just to be sure we set it to an empty + # string. + patch('0001-Make-it-possible-to-specify-the-package-folder-of-ro.patch', when='@3.5.0') + + # See https://github.com/ROCm-Developer-Tools/HIP/pull/2141 + patch('0002-Fix-detection-of-HIP_CLANG_ROOT.patch', when='@3.5.0') + + def setup_dependent_build_environment(self, env, dependent_spec): + env.set('ROCM_PATH', '') + env.set('HIP_COMPILER', 'clang') + env.set('HIP_PLATFORM', 'hcc') + env.set('HIP_CLANG_PATH', self.spec['llvm-amdgpu'].prefix.bin) + env.set('HSA_PATH', self.spec['hsa-rocr-dev'].prefix) + env.set('ROCMINFO_PATH', self.spec['rocminfo'].prefix) + env.set('DEVICE_LIB_PATH', self.spec['rocm-device-libs'].prefix.lib) + + def setup_dependent_package(self, module, dependent_spec): + self.spec.hipcc = join_path(self.prefix.bin, 'hipcc') + + def patch(self): + filter_file( + 'INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include"', + 'INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"', + 'hip-config.cmake.in', string=True) + + @run_before('install') + def filter_sbang(self): + perl = self.spec['perl'].command + kwargs = {'ignore_absent': False, 'backup': False, 'string': False} + + with working_dir('bin'): + match = '^#!/usr/bin/perl' + substitute = "#!{perl}".format(perl=perl) + files = [ + 'hipify-perl', 'hipcc', 'extractkernel', + 'hipconfig', 'hipify-cmakefile' + ] + filter_file(match, substitute, *files, **kwargs) + + def cmake_args(self): + args = [ + '-DHIP_COMPILER=clang', + '-DHIP_PLATFORM=rocclr', + '-DHSA_PATH={0}'.format(self.spec['hsa-rocr-dev'].prefix), + '-DLIBROCclr_STATIC_DIR={0}/lib'.format(self.spec['rocclr'].prefix) + ] + return args diff --git a/var/spack/repos/builtin/packages/hipsycl/package.py b/var/spack/repos/builtin/packages/hipsycl/package.py index 18ea5895fc..02c59bc791 100644 --- a/var/spack/repos/builtin/packages/hipsycl/package.py +++ b/var/spack/repos/builtin/packages/hipsycl/package.py @@ -21,7 +21,7 @@ class Hipsycl(CMakePackage): provides("sycl") - version("master", branch="master", submodules=True) + version("stable", branch="stable", submodules=True) version( "0.8.0", commit="2daf8407e49dd32ebd1c266e8e944e390d28b22a", diff --git a/var/spack/repos/builtin/packages/hisat2/package.py b/var/spack/repos/builtin/packages/hisat2/package.py index 93b54e9ed5..ab03df4ce5 100644 --- a/var/spack/repos/builtin/packages/hisat2/package.py +++ b/var/spack/repos/builtin/packages/hisat2/package.py @@ -14,13 +14,18 @@ class Hisat2(MakefilePackage): exome sequencing data) against the general human population (as well as against a single reference genome).""" - homepage = "http://ccb.jhu.edu/software/hisat2" + homepage = "https://daehwankimlab.github.io/hisat2/" url = "ftp://ftp.ccb.jhu.edu/pub/infphilo/hisat2/downloads/hisat2-2.1.0-source.zip" + version('2.2.0', sha256='0dd55168853b82c1b085f79ed793dd029db163773f52272d7eb51b3b5e4a4cdd', + url='https://cloud.biohpc.swmed.edu/index.php/s/hisat2-220-source/download', + extension='zip') version('2.1.0', sha256='89a276eed1fc07414b1601947bc9466bdeb50e8f148ad42074186fe39a1ee781') def install(self, spec, prefix): - install_tree('doc', prefix.doc) + if spec.satisfies('@:2.1.0'): + install_tree('doc', prefix.doc) + install_tree('example', prefix.example) install_tree('hisatgenotype_modules', prefix.hisatgenotype_modules) install_tree('hisatgenotype_scripts', prefix.hisatgenotype_scripts) diff --git a/var/spack/repos/builtin/packages/hpcg/package.py b/var/spack/repos/builtin/packages/hpcg/package.py new file mode 100644 index 0000000000..4de150cda2 --- /dev/null +++ b/var/spack/repos/builtin/packages/hpcg/package.py @@ -0,0 +1,78 @@ +# 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 +import platform + + +class Hpcg(AutotoolsPackage): + """HPCG is a software package that performs a fixed number of multigrid + preconditioned (using a symmetric Gauss-Seidel smoother) conjugate gradient + (PCG) iterations using double precision (64 bit) floating point values.""" + + homepage = "https://www.hpcg-benchmark.org" + url = "http://www.hpcg-benchmark.org/downloads/hpcg-3.1.tar.gz" + git = "https://github.com/hpcg-benchmark/hpcg.git" + + version('develop', branch='master') + version('3.1', sha256='33a434e716b79e59e745f77ff72639c32623e7f928eeb7977655ffcaade0f4a4') + + variant('openmp', default=True, description='Enable OpenMP support') + + patch('https://github.com/hpcg-benchmark/hpcg/commit/e9e0b7e6cae23e1f30dd983c2ce2d3bd34d56f75.patch', sha256='23b9de83042eb7a8207fdddcfa79ae2cc1a17e8e623e2224c7751d7c328ee482', when='%gcc@9:') + + depends_on('mpi@1.1:') + + arch = '{0}-{1}'.format(platform.system(), platform.processor()) + build_targets = ['arch={0}'.format(arch)] + + def configure(self, spec, prefix): + CXXFLAGS = '-O3 -ffast-math ' + CXXFLAGS += '-ftree-vectorize -ftree-vectorizer-verbose=0 ' + if '+openmp' in self.spec: + CXXFLAGS += self.compiler.openmp_flag + config = [ + # Shell + 'SHELL = /bin/sh', + 'CD = cd', + 'CP = cp', + 'LN_S = ln -fs', + 'MKDIR = mkdir -p', + 'RM = /bin/rm -f', + 'TOUCH = touch', + # Platform identifier + 'ARCH = {0}'.format(self.arch), + # HPCG Directory Structure / HPCG library + 'TOPdir = {0}'.format(os.getcwd()), + 'SRCdir = $(TOPdir)/src', + 'INCdir = $(TOPdir)/src', + 'BINdir = $(TOPdir)/bin', + # Message Passing library (MPI) + 'MPinc = -I{0}'.format(spec['mpi'].prefix.include), + 'MPlib = -L{0}'.format(spec['mpi'].prefix.lib), + # HPCG includes / libraries / specifics + 'HPCG_INCLUDES = -I$(INCdir) -I$(INCdir)/$(arch) $(MPinc)', + 'HPCG_LIBS =', + 'HPCG_OPTS =', + 'HPCG_DEFS = $(HPCG_OPTS) $(HPCG_INCLUDES)', + # Compilers / linkers - Optimization flags + 'CXX = {0}'.format(spec['mpi'].mpicxx), + 'CXXFLAGS = $(HPCG_DEFS) {0}'.format(CXXFLAGS), + 'LINKER = $(CXX)', + 'LINKFLAGS = $(CXXFLAGS)', + 'ARCHIVER = ar', + 'ARFLAGS = r', + 'RANLIB = echo', + ] + + # Write configuration options to include file + with open('setup/Make.{0}'.format(self.arch), 'w') as makefile: + for var in config: + makefile.write('{0}\n'.format(var)) + + def install(self, spec, prefix): + # Manual installation + install_tree('bin', prefix.bin) diff --git a/var/spack/repos/builtin/packages/hpctoolkit/package.py b/var/spack/repos/builtin/packages/hpctoolkit/package.py index 9de2184d92..89a7a4b641 100644 --- a/var/spack/repos/builtin/packages/hpctoolkit/package.py +++ b/var/spack/repos/builtin/packages/hpctoolkit/package.py @@ -20,6 +20,8 @@ class Hpctoolkit(AutotoolsPackage): version('develop', branch='develop') version('master', branch='master') + version('2020.08.03', commit='d9d13c705d81e5de38e624254cf0875cce6add9a') + version('2020.07.21', commit='4e56c780cffc53875aca67d6472a2fb3678970eb') version('2020.06.12', commit='ac6ae1156e77d35596fea743ed8ae768f7222f19') version('2020.03.01', commit='94ede4e6fa1e05e6f080be8dc388240ea027f769') version('2019.12.28', commit='b4e1877ff96069fd8ed0fdf0e36283a5b4b62240') @@ -36,10 +38,6 @@ class Hpctoolkit(AutotoolsPackage): description='Build for Cray compute nodes, including ' 'hpcprof-mpi.') - variant('bgq', default=False, - description='Build for Blue Gene compute nodes, including ' - 'hpcprof-mpi (up to 2019.12.28 only).') - variant('mpi', default=False, description='Build hpcprof-mpi, the MPI version of hpcprof.') @@ -71,8 +69,7 @@ class Hpctoolkit(AutotoolsPackage): depends_on('gotcha@1.0.3:') depends_on('intel-tbb+shared') depends_on('libdwarf') - depends_on('libmonitor+hpctoolkit+bgq', when='+bgq') - depends_on('libmonitor+hpctoolkit~bgq', when='~bgq') + depends_on('libmonitor+hpctoolkit') depends_on('libunwind@1.4: +xz') depends_on('mbedtls+pic') depends_on('xerces-c transcoder=iconv') @@ -94,9 +91,6 @@ class Hpctoolkit(AutotoolsPackage): conflicts('+cuda', when='@2018.0.0:2019.99.99', 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 def configure_args(self): @@ -120,11 +114,7 @@ class Hpctoolkit(AutotoolsPackage): ] if '+cuda' in spec: - cupti_path = join_path(spec['cuda'].prefix, 'extras', 'CUPTI') - args.extend([ - '--with-cuda=%s' % spec['cuda'].prefix, - '--with-cupti=%s' % cupti_path, - ]) + args.append('--with-cuda=%s' % spec['cuda'].prefix) if spec.target.family == 'x86_64': args.append('--with-xed=%s' % spec['intel-xed'].prefix) @@ -140,12 +130,6 @@ class Hpctoolkit(AutotoolsPackage): '--enable-mpi-search=cray', '--enable-all-static', ]) - elif '+bgq' in spec: - args.extend([ - '--enable-mpi-search=bgq', - '--enable-all-static', - '--enable-bgq', - ]) elif '+mpi' in spec: args.append('MPICXX=%s' % spec['mpi'].mpicxx) diff --git a/var/spack/repos/builtin/packages/hpcviewer/package.py b/var/spack/repos/builtin/packages/hpcviewer/package.py index f14f55d787..0de66bbf83 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.07', 'x86_64'): '19951662626c7c9817c4a75269c85810352dc48ae9a62dfb6ce4a5b502de2118', + ('2020.07', 'ppc64'): '3f5d9358ef8ff9ba4f6dcaa4d7132f41ba55f0c132d9fd1e2f6da18341648a4e', + ('2020.07', 'ppc64le'): 'e236a8578dc247279d1021aa35bac47e2d4864b906efcef76c0610ee0086b353', ('2020.05', 'x86_64'): '27f99c94a69abd005303fb58360b0d1b3eb7d223cab81c38ae6ccdd83ec15106', ('2020.05', 'ppc64'): '469bce07a75476c132d3791ca49e38db015917c9c36b4810e477bc1c54a13d68', ('2020.05', 'ppc64le'): 'fc4491bf6d9eaf2b7f2d39b722c978597a881ece557fb05a4cf27caabb9e0b99', @@ -70,6 +73,9 @@ class Hpcviewer(Package): } trace_sha = { + ('2020.07', 'x86_64'): '52aea55b1d40b9453c106ac5a83020a08839b9be1e71dbd1a9f471e5f3a55d43', + ('2020.07', 'ppc64'): '3d9222310a18618704015aecbcab7f7c5a2cedbd5ecd8ace1bfc7e98d11b8d36', + ('2020.07', 'ppc64le'): '2f0a8b95033a5816d468b87c8c139f08a307714e2e27a1cb4a35e1c5a8083cca', ('2020.05', 'x86_64'): 'a0b925099a00c10fcb38e937068e50937175fd46dc086121525e546a63a7fd83', ('2020.05', 'ppc64'): '40526f62f36e5b6438021c2b557256638d41a6b8f4e101534b5230ac644a9b85', ('2020.05', 'ppc64le'): 'c16e83b59362adcebecd4231374916a2b3a3c016f75a45b24e8398f777a24f89', diff --git a/var/spack/repos/builtin/packages/hpx/package.py b/var/spack/repos/builtin/packages/hpx/package.py index 028019864c..56d2ee0461 100644 --- a/var/spack/repos/builtin/packages/hpx/package.py +++ b/var/spack/repos/builtin/packages/hpx/package.py @@ -5,6 +5,7 @@ from spack import * +import sys class Hpx(CMakePackage, CudaPackage): @@ -48,6 +49,14 @@ class Hpx(CMakePackage, CudaPackage): description="Support for networking through parcelports", ) + default_generic_coroutines = True + if sys.platform.startswith('linux') or sys.platform == 'win32': + default_generic_coroutines = False + variant( + "generic_coroutines", default=default_generic_coroutines, + description='Use Boost.Context as the underlying coroutines' + ' context switch implementation.') + variant('tools', default=False, description='Build HPX tools') variant('examples', default=False, description='Build examples') @@ -69,6 +78,15 @@ class Hpx(CMakePackage, CudaPackage): # https://github.com/STEllAR-GROUP/hpx/issues/4728#issuecomment-640685308 depends_on('boost@:1.72.0', when='@:1.4') + # COROUTINES + # ~generic_coroutines conflict is not fully implemented + # for additional information see: + # https://github.com/spack/spack/pull/17654 + # https://github.com/STEllAR-GROUP/hpx/issues/4829 + depends_on('boost+context', when='+generic_coroutines') + _msg_generic_coroutines = 'This platform requires +generic_coroutines' + conflicts('~generic_coroutines', when='platform=darwin', msg=_msg_generic_coroutines) + # CXX Standard depends_on('boost cxxstd=11', when='cxxstd=11') depends_on('boost cxxstd=14', when='cxxstd=14') @@ -92,79 +110,51 @@ class Hpx(CMakePackage, CudaPackage): # Patches APEX patch('git_external.patch', when='@1.3.0 instrumentation=apex') - def cxx_standard(self): - value = self.spec.variants['cxxstd'].value - return '-DHPX_WITH_CXX{0}=ON'.format(value) - def instrumentation_args(self): for value in self.variants['instrumentation'].values: if value == 'none': continue condition = 'instrumentation={0}'.format(value) - yield '-DHPX_WITH_{0}={1}'.format( - str(value).upper(), 'ON' if condition in self.spec else 'OFF' - ) + yield self.define( + 'HPX_WITH_{0}'.format(value.upper()), condition in self.spec) def cmake_args(self): spec, args = self.spec, [] - # CXX Standard - args.append(self.cxx_standard()) + args += [ + self.define( + 'HPX_WITH_CXX{0}'.format(spec.variants['cxxstd'].value), True), + + self.define_from_variant('HPX_WITH_MALLOC', 'malloc'), + self.define_from_variant('HPX_WITH_CUDA', 'cuda'), + self.define_from_variant('HPX_WITH_TOOLS', 'tools'), + self.define_from_variant('HPX_WITH_EXAMPLES', 'examples'), + self.define('HPX_WITH_TESTS', self.run_tests), + + self.define('HPX_WITH_NETWORKING', 'networking=none' not in spec), + self.define('HPX_WITH_PARCELPORT_TCP', 'networking=tcp' in spec), + self.define('HPX_WITH_PARCELPORT_MPI', 'networking=mpi' in spec), + + self.define_from_variant( + 'HPX_WITH_MAX_CPU_COUNT', 'max_cpu_count'), + self.define_from_variant( + 'HPX_WITH_GENERIC_CONTEXT_COROUTINES', 'generic_coroutines'), - # Malloc - selected_malloc = spec.variants['malloc'].value - args.append('-DHPX_WITH_MALLOC={0}'.format(selected_malloc)) + self.define('BOOST_ROOT', spec['boost'].prefix), + self.define('HWLOC_ROOT', spec['hwloc'].prefix), + self.define('HPX_WITH_BOOST_ALL_DYNAMIC_LINK', True), + self.define('BUILD_SHARED_LIBS', True), + self.define('HPX_DATASTRUCTURES_WITH_ADAPT_STD_TUPLE', False), + ] # Instrumentation - args.extend(self.instrumentation_args()) + args += self.instrumentation_args() if 'instrumentation=apex' in spec: - args += ['-DAPEX_WITH_OTF2=ON' - '-DOTF2_ROOT={0}'.format(spec['otf2'].prefix)] - - # Networking - args.append('-DHPX_WITH_NETWORKING={0}'.format( - 'OFF' if 'networking=none' in spec else 'ON' - )) - args.append('-DHPX_WITH_PARCELPORT_TCP={0}'.format( - 'ON' if 'networking=tcp' in spec else 'OFF' - )) - args.append('-DHPX_WITH_PARCELPORT_MPI={0}'.format( - 'ON' if 'networking=mpi' in spec else 'OFF' - )) - - # Cuda support - args.append('-DHPX_WITH_CUDA={0}'.format( - 'ON' if '+cuda' in spec else 'OFF' - )) - - # Tests - args.append('-DHPX_WITH_TESTS={0}'.format( - 'ON' if self.run_tests else 'OFF' - )) - - # Tools - args.append('-DHPX_WITH_TOOLS={0}'.format( - 'ON' if '+tools' in spec else 'OFF' - )) - - # MAX_CPU_COUNT - args.append('-DHPX_WITH_MAX_CPU_COUNT={0}'.format( - spec.variants['max_cpu_count'].value - )) - - # Examples - args.append('-DHPX_WITH_EXAMPLES={0}'.format( - 'ON' if '+examples' in spec else 'OFF' - )) - - args.extend([ - '-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', - '-DHPX_DATASTRUCTURES_WITH_ADAPT_STD_TUPLE=OFF' - ]) + args += [ + self.define('APEX_WITH_OTF2', True), + self.define('OTF2_ROOT', spec['otf2'].prefix), + ] return args diff --git a/var/spack/repos/builtin/packages/hsa-rocr-dev/0001-Do-not-set-an-explicit-rpath-by-default-since-packag.patch b/var/spack/repos/builtin/packages/hsa-rocr-dev/0001-Do-not-set-an-explicit-rpath-by-default-since-packag.patch new file mode 100644 index 0000000000..6b73f81635 --- /dev/null +++ b/var/spack/repos/builtin/packages/hsa-rocr-dev/0001-Do-not-set-an-explicit-rpath-by-default-since-packag.patch @@ -0,0 +1,28 @@ +From 905b812fffdf109f767e1dc079ac1d32d5cf5838 Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels <harmenstoppels@gmail.com> +Date: Wed, 5 Aug 2020 17:44:05 +0200 +Subject: [PATCH] Do not set an explicit rpath by default, since package + managers cannot override them + +--- + src/CMakeLists.txt | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 7174044..10c6fcc 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -114,7 +114,9 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR}/libamdhsacode ) + add_definitions ( -DROCR_BUILD_ID=${PACKAGE_VERSION_STRING} ) + + ## Set RUNPATH - ../../lib covers use of the legacy symlink in /hsa/lib/ +-set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/../../lib;$ORIGIN/../../lib64;$ORIGIN/../lib64") ++if (NOT CMAKE_INSTALL_RPATH) ++ set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/../../lib;$ORIGIN/../../lib64;$ORIGIN/../lib64") ++endif () + + ## ------------------------- Linux Compiler and Linker options ------------------------- + set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -fexceptions -fno-rtti -fvisibility=hidden -Wno-error=sign-compare -Wno-sign-compare -Wno-write-strings -Wno-conversion-null -fno-math-errno -fno-threadsafe-statics -fmerge-all-constants -fms-extensions -Wno-error=comment -Wno-comment -Wno-error=pointer-arith -Wno-pointer-arith -Wno-error=unused-variable -Wno-error=unused-function" ) +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py new file mode 100644 index 0000000000..af355f241d --- /dev/null +++ b/var/spack/repos/builtin/packages/hsa-rocr-dev/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 HsaRocrDev(CMakePackage): + """This repository includes the user mode API nterfaces and libraries + necessary for host applications to launch computer kernels to available + HSA ROCm kernel agents.AMD Heterogeneous System Architecture HSA - + Linux HSA Runtime for Boltzmann (ROCm) platforms.""" + + homepage = "https://github.com/RadeonOpenCompute/ROCR-Runtime" + url = "https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='52c12eec3e3404c0749c70f156229786ee0c3e6d3c979aed9bbaea500fa1f3b8') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + for ver in ['3.5.0']: + depends_on('hsakmt-roct@' + ver, type=('link', 'run'), when='@' + ver) + depends_on('libelf@0.8:', type='link', when="@" + ver) + + depends_on('cmake@3:', type="build") + + patch('0001-Do-not-set-an-explicit-rpath-by-default-since-packag.patch', when='@3.5.0') + + root_cmakelists_dir = 'src' diff --git a/var/spack/repos/builtin/packages/hsakmt-roct/package.py b/var/spack/repos/builtin/packages/hsakmt-roct/package.py new file mode 100644 index 0000000000..89ffe616a0 --- /dev/null +++ b/var/spack/repos/builtin/packages/hsakmt-roct/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 HsakmtRoct(CMakePackage): + """This is a thunk python recipe to build and install Thunk Interface. + Thunk Interface is a user-mode API interfaces used to interact + with the ROCk driver.""" + + homepage = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface" + url = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='d9f458c16cb62c3c611328fd2f2ba3615da81e45f3b526e45ff43ab4a67ee4aa') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + depends_on('cmake@3:', type='build') + depends_on('numactl') + + install_targets = ['install', 'install-dev'] + + def cmake_args(self): + args = [ + '-DBUILD_SHARED_LIBS="on"', + ] + return args diff --git a/var/spack/repos/builtin/packages/hydrogen/package.py b/var/spack/repos/builtin/packages/hydrogen/package.py index 9d12235d72..8d0bc9398d 100644 --- a/var/spack/repos/builtin/packages/hydrogen/package.py +++ b/var/spack/repos/builtin/packages/hydrogen/package.py @@ -7,7 +7,7 @@ import os from spack import * -class Hydrogen(CMakePackage): +class Hydrogen(CMakePackage, CudaPackage): """Hydrogen: Distributed-memory dense and sparse-direct linear algebra and optimization library. Based on the Elemental library.""" @@ -18,6 +18,7 @@ class Hydrogen(CMakePackage): maintainers = ['bvanessen'] version('develop', branch='hydrogen') + version('1.4.0', sha256='c13374ff4a6c4d1076e47ba8c8d91a7082588b9958d1ed89cffb12f1d2e1452e') version('1.3.4', sha256='7979f6656f698f0bbad6798b39d4b569835b3013ff548d98089fce7c283c6741') version('1.3.3', sha256='a51a1cfd40ac74d10923dfce35c2c04a3082477683f6b35e7b558ea9f4bb6d51') version('1.3.2', sha256='50bc5e87955f8130003d04dfd9dcad63107e92b82704f8107baf95b0ccf98ed6') @@ -62,6 +63,8 @@ class Hydrogen(CMakePackage): variant('half', default=True, description='Builds with support for FP16 precision data types') + depends_on('cmake@3.16.0:', type='build') + # Note that #1712 forces us to enumerate the different blas variants depends_on('openblas', when='blas=openblas ~openmp_blas ~int64_blas') depends_on('openblas +ilp64', when='blas=openblas ~openmp_blas +int64_blas') @@ -83,7 +86,7 @@ class Hydrogen(CMakePackage): depends_on('netlib-lapack +external-blas', when='blas=essl') depends_on('aluminum', when='+al ~cuda') - depends_on('aluminum +gpu +nccl', when='+al +cuda') + depends_on('aluminum +cuda +nccl +ht +cuda_rma', when='+al +cuda') # Note that this forces us to use OpenBLAS until #1712 is fixed depends_on('lapack', when='blas=openblas ~openmp_blas') diff --git a/var/spack/repos/builtin/packages/hypre/package.py b/var/spack/repos/builtin/packages/hypre/package.py index cf0ffb1896..b66a9abb86 100644 --- a/var/spack/repos/builtin/packages/hypre/package.py +++ b/var/spack/repos/builtin/packages/hypre/package.py @@ -20,6 +20,7 @@ class Hypre(Package): maintainers = ['ulrikeyang', 'osborn9', 'balay'] version('develop', branch='master') + version('2.19.0', sha256='466b19d8a86c69989a237f6f03f20d35c0c63a818776d2cd071b0a084cffeba5') version('2.18.2', sha256='28007b5b584eaf9397f933032d8367788707a2d356d78e47b99e551ab10cc76a') version('2.18.1', sha256='220f9c4ad024e815add8dad8950eaa2d8f4f231104788cf2a3c5d9da8f94ba6e') version('2.18.0', sha256='62591ac69f9cc9728bd6d952b65bcadd2dfe52b521081612609804a413f49b07') diff --git a/var/spack/repos/builtin/packages/ibm-databroker/fixes_in_v0.6.1.patch b/var/spack/repos/builtin/packages/ibm-databroker/fixes_in_v0.6.1.patch new file mode 100644 index 0000000000..d2922d2710 --- /dev/null +++ b/var/spack/repos/builtin/packages/ibm-databroker/fixes_in_v0.6.1.patch @@ -0,0 +1,39 @@ +From f89161c15d3c84cd9b661740aaf803cc9acbb1a2 Mon Sep 17 00:00:00 2001 +From: Harsh Bhatia <bhatia4@llnl.gov> +Date: Thu, 16 Jul 2020 14:57:37 -0700 +Subject: [PATCH] small fixes + +--- + bindings/python/CMakeLists.txt | 2 +- + bindings/python/setup.py.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt +index 6a203ce..7e61668 100644 +--- a/bindings/python/CMakeLists.txt ++++ b/bindings/python/CMakeLists.txt +@@ -45,7 +45,7 @@ if (PYTHON) + COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT} + DEPENDS ${DEPS}) + +- set( INSTALL_CMD "${PYTHON} ${CMAKE_CURRENT_BINARY_DIR}/${SETUP_PY} install") ++ set( INSTALL_CMD "${PYTHON} ${CMAKE_CURRENT_BINARY_DIR}/${SETUP_PY} install --prefix ${CMAKE_INSTALL_PREFIX}") + + add_custom_target(pydbr ALL DEPENDS ${OUTPUT}) + FILE(COPY examples DESTINATION .) +diff --git a/bindings/python/setup.py.in b/bindings/python/setup.py.in +index 0d61f1d..3501c78 100644 +--- a/bindings/python/setup.py.in ++++ b/bindings/python/setup.py.in +@@ -17,7 +17,7 @@ from setuptools import setup, find_packages + import os, sys + + setup(name='PyDBR', +- version='0.5.1', ++ version='0.6.1', + description='Python wrapper to the Data Broker C API', + author='Claudia Misale', + author_email='c.misale@ibm.com', +-- +1.8.3.1 + diff --git a/var/spack/repos/builtin/packages/ibm-databroker/fixes_in_v0.7.0.patch b/var/spack/repos/builtin/packages/ibm-databroker/fixes_in_v0.7.0.patch new file mode 100644 index 0000000000..9ec35ae2de --- /dev/null +++ b/var/spack/repos/builtin/packages/ibm-databroker/fixes_in_v0.7.0.patch @@ -0,0 +1,25 @@ +From e4367787e3ae712217a231c9d4866e89005f053c Mon Sep 17 00:00:00 2001 +From: Harsh Bhatia <bhatia4@llnl.gov> +Date: Fri, 17 Jul 2020 09:01:50 -0700 +Subject: [PATCH] fix 0.7.0 + +--- + bindings/python/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt +index 6a203ce..7e61668 100644 +--- a/bindings/python/CMakeLists.txt ++++ b/bindings/python/CMakeLists.txt +@@ -45,7 +45,7 @@ if (PYTHON) + COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT} + DEPENDS ${DEPS}) + +- set( INSTALL_CMD "${PYTHON} ${CMAKE_CURRENT_BINARY_DIR}/${SETUP_PY} install") ++ set( INSTALL_CMD "${PYTHON} ${CMAKE_CURRENT_BINARY_DIR}/${SETUP_PY} install --prefix ${CMAKE_INSTALL_PREFIX}") + + add_custom_target(pydbr ALL DEPENDS ${OUTPUT}) + FILE(COPY examples DESTINATION .) +-- +1.8.3.1 + diff --git a/var/spack/repos/builtin/packages/ibm-databroker/package.py b/var/spack/repos/builtin/packages/ibm-databroker/package.py new file mode 100644 index 0000000000..898179253c --- /dev/null +++ b/var/spack/repos/builtin/packages/ibm-databroker/package.py @@ -0,0 +1,46 @@ +# 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 IbmDatabroker(CMakePackage, PythonPackage): + """The Data Broker (DBR) is a distributed, in-memory container of key-value + stores enabling applications in a workflow to exchange data through one or + more shared namespaces. Thanks to a small set of primitives, applications + in a workflow deployed in a (possibly) shared nothing distributed cluster, + can easily share and exchange data and messages with applications.""" + + homepage = "https://github.com/IBM/data-broker" + git = "https://github.com/IBM/data-broker" + url = 'https://github.com/IBM/data-broker/archive/0.6.1.tar.gz' + + # IBM dev team should take over + maintainers = ['bhatiaharsh'] + + version('master', branch='master') + version('0.7.0', sha256='5460fa1c5c05ad25c759b2ee4cecee92980d4dde5bc7c5f6da9242806cf22bb8') + version('0.6.1', sha256='2c7d6c6a269d4ae97aad4d770533e742f367da84758130c283733f25df83e535') + version('0.6.0', sha256='5856209d965c923548ebb69119344f1fc596d4c0631121b230448cc91bac4290') + + variant('python', default=False, description='Build Python bindings') + + depends_on('cmake@2.8:', type='build') + depends_on('redis@5.0.2:', type='run') + depends_on('libevent@2.1.8', type=('build', 'run')) + + extends('python@3.7:', when='+python') + depends_on('py-setuptools', when='+python') + + patch('fixes_in_v0.6.1.patch', when='@0.6.1') + patch('fixes_in_v0.7.0.patch', when='@0.7.0') + + def cmake_args(self): + args = [] + args.append('-DDEFAULT_BE=redis') + if '+python' in self.spec: + args.append('-DPYDBR=1') + return args diff --git a/var/spack/repos/builtin/packages/ibm-java/package.py b/var/spack/repos/builtin/packages/ibm-java/package.py index 72739240d5..952fa16a7b 100644 --- a/var/spack/repos/builtin/packages/ibm-java/package.py +++ b/var/spack/repos/builtin/packages/ibm-java/package.py @@ -22,6 +22,8 @@ class IbmJava(Package): # not be available for download. version_list = [ + ('8.0.6.11', 'ppc64', '6fd17a6b9a34bb66e0db37f6402dc1b7612d54084c94b859f4a42f445fd174d4'), + ('8.0.6.11', 'ppc64le', 'd69ff7519e32e89db88a9a4d4d88d1881524073ac940f35d3860db2c6647be2e'), ('8.0.6.10', 'ppc64', 'ff5151ead88f891624eefe33d80d56c325ca0aa4b93bd96c135cad326993eda2'), ('8.0.6.10', 'ppc64le', 'ea99ab28dd300b08940882d178247e99aafe5a998b1621cf288dfb247394e067'), ('8.0.6.7', 'ppc64', 'a1accb461a039af4587ea86511e317fea1d423e7f781459a17ed3947afed2982'), diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index 29307a4522..0663ae6edf 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -14,10 +14,15 @@ class Icu4c(AutotoolsPackage): homepage = "http://site.icu-project.org/" url = "https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-src.tgz" + version('67.1', sha256='94a80cd6f251a53bd2a997f6f1b5ac6653fe791dfab66e1eb0227740fb86d5dc') + version('66.1', sha256='52a3f2209ab95559c1cf0a14f24338001f389615bf00e2585ef3dbc43ecf0a2e') version('65.1', sha256='53e37466b3d6d6d01ead029e3567d873a43a5d1c668ed2278e253b683136d948') version('64.1', sha256='92f1b7b9d51b396679c17f35a2112423361b8da3c1b9de00aa94fd768ae296e6') + version('60.3', sha256='476287b17db6e0b7da230dce4b58e8e5669b1510847f82cab3647920f1374390') version('60.1', sha256='f8f5a6c8fbf32c015a467972bdb1477dc5f5d5dfea908b6ed218715eeb5ee225') + version('58.3', sha256='2680f3c547cd26cba1d7ebd819cd336ff92cf444a270e195fd3b10bfdf22276c') version('58.2', sha256='2b0a4410153a9b20de0e20c7d8b66049a72aef244b53683d0d7521371683da0c') + version('57.2', sha256='623f04b921827a041f42d52495a6f8eee6565a9b7557051ac68e099123ff28dc') version('57.1', sha256='ff8c67cb65949b1e7808f2359f2b80f722697048e90e7cfc382ec1fe229e9581') variant('cxxstd', @@ -30,16 +35,18 @@ class Icu4c(AutotoolsPackage): conflicts('%intel@:16', when='@60.1:', msg="Intel compilers have immature C++11 and multibyte support") + conflicts('%gcc@:4', when='@67.1:', + msg="Older GCC compilers have immature C++11 support") + + patch('https://github.com/unicode-org/icu/commit/ddfc30860354cbcb78c2c0bcf800be5ab44a9e4f.patch', + sha256='dfc501d78ddfabafe09dc1a7aa70f96b799164b18f6a57d616a9d48aaf989333', + level=2, when='@58.0:59.99') configure_directory = 'source' def url_for_version(self, version): - if version >= Version('65'): - url = "https://github.com/unicode-org/icu/releases/download/release-{0}/icu4c-{1}-src.tgz" - return url.format(version.dashed, version.underscored) - else: - url = "http://download.icu-project.org/files/icu4c/{0}/icu4c-{1}-src.tgz" - return url.format(version.dotted, version.underscored) + url = "https://github.com/unicode-org/icu/releases/download/release-{0}/icu4c-{1}-src.tgz" + return url.format(version.dashed, version.underscored) def flag_handler(self, name, flags): if name == 'cxxflags': diff --git a/var/spack/repos/builtin/packages/idl/package.py b/var/spack/repos/builtin/packages/idl/package.py new file mode 100644 index 0000000000..21804ed11a --- /dev/null +++ b/var/spack/repos/builtin/packages/idl/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) + +from spack import * +import os + + +class Idl(Package): + """IDL Software: Interactive Data Visulation. + + Note: IDL is a licensed software. You will also need an existing + downloaded tarball of IDL in your current directory or in a + spack mirror in order to install.""" + + homepage = "https://www.harrisgeospatial.com/Software-Technology/IDL" + manual_download = True + url = "file://{0}/idl8.7-linux.tar.gz".format(os.getcwd()) + + maintainers = ['francinelapid'] + + license_required = True + + def install(self, spec, prefix): + + # replace default install dir to self.prefix by editing answer file + filter_file('/usr/local/harris', prefix, 'silent/idl_answer_file') + + # execute install script + install_script = Executable('./install.sh') + install_script('-s', input='silent/idl_answer_file') + + def setup_run_environment(self, env): + + # set necessary environment variables + env.prepend_path('EXELIS_DIR', self.prefix) + env.prepend_path('IDL_DIR', self.prefix.idl) + + # add bin to path + env.prepend_path('PATH', self.prefix.idl.bin) diff --git a/var/spack/repos/builtin/packages/imagemagick/package.py b/var/spack/repos/builtin/packages/imagemagick/package.py index bf13380928..63543ca552 100644 --- a/var/spack/repos/builtin/packages/imagemagick/package.py +++ b/var/spack/repos/builtin/packages/imagemagick/package.py @@ -27,6 +27,7 @@ class Imagemagick(AutotoolsPackage): depends_on('libtiff') depends_on('ghostscript') depends_on('ghostscript-fonts') + depends_on('libsm') def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/intel-daal/package.py b/var/spack/repos/builtin/packages/intel-daal/package.py index 8ac099e65d..67eccff1fa 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.2.254', sha256='08528bc150dad312ff2ae88ce12d6078ed8ba2f378f4bf3daf0fbbb9657dce1e', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16822/l_daal_2020.2.254.tgz') 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', diff --git a/var/spack/repos/builtin/packages/intel-ipp/package.py b/var/spack/repos/builtin/packages/intel-ipp/package.py index 04df142bf5..8201779bce 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.2.254', sha256='18266ad1eec9b5b17e76da24f1aa9a9147300e5bd345e6bdad58d7187392fa77', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16846/l_ipp_2020.2.254.tgz') 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', diff --git a/var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py b/var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py index a619d0d8cb..32ef76d2d9 100644 --- a/var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/intel-mpi-benchmarks/package.py @@ -19,6 +19,7 @@ class IntelMpiBenchmarks(MakefilePackage): maintainers = ['carsonwoods'] + version('2019.6', sha256='1cd0bab9e947228fced4666d907f77c51336291533919896a923cff5fcad62e9') version('2019.5', sha256='61f8e872a3c3076af53007a68e4da3a8d66be2ba7a051dc21e626a4e2d26e651') version('2019.4', sha256='aeb336be10275c1a2f579b491b6631122876b461ac7148b1d0764f13b7552690') version('2019.3', sha256='4f256d11bfed9ca6166548486d61a062e67be61f13dd9f30690232720e185f31') diff --git a/var/spack/repos/builtin/packages/intel-mpi/package.py b/var/spack/repos/builtin/packages/intel-mpi/package.py index 65e7d6d4ce..532b7ab864 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.8.254', sha256='fa163b4b79bd1b7509980c3e7ad81b354fc281a92f9cf2469bf4d323899567c0', + url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16814/l_mpi_2019.8.254.tgz') 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', 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 31b77d355a..3010fdb4d3 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.2', sha256='4795c44374e8988b91da20ac8f13022d7d773461def4a26ca210a8694f69f133', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16744/parallel_studio_xe_2020_update2_cluster_edition.tgz') 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') # @@ -59,6 +60,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.2', sha256='96f9bca551a43e09d9648e8cba357739a759423adb671d1aa5973b7a930370c5', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16756/parallel_studio_xe_2020_update2_professional_edition.tgz') 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') # @@ -94,6 +96,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.2', sha256='42af16e9a91226978bb401d9f17b628bc279aa8cb104d4a38ba0808234a79bdd', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16759/parallel_studio_xe_2020_update2_composer_edition.tgz') 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') # diff --git a/var/spack/repos/builtin/packages/intel-pin/package.py b/var/spack/repos/builtin/packages/intel-pin/package.py index 4378d8e7dd..f9cf6ea111 100644 --- a/var/spack/repos/builtin/packages/intel-pin/package.py +++ b/var/spack/repos/builtin/packages/intel-pin/package.py @@ -15,6 +15,8 @@ class IntelPin(Package): homepage = "http://www.pintool.org" maintainers = ['matthiasdiener'] + version('3.15', sha256='51ab5a381ff477335050b20943133965c5c515d074ad6afb801a898dae8af642', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.15-98253-gb56e429b1-gcc-linux.tar.gz') + version('3.14', sha256='6c3b477c88673e0285fcd866a37a4fa47537d461a8bf48416ae3e9667eb7529b', url='https://software.intel.com/sites/landingpage/pintool/downloads/pin-3.14-98223-gb010a12c6-gcc-linux.tar.gz') 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') diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py index 4c652f6fce..65973d1dd4 100644 --- a/var/spack/repos/builtin/packages/intel-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-tbb/package.py @@ -23,6 +23,7 @@ class IntelTbb(Package): # Note: when adding new versions, please check and update the # patches, filters and url_for_version() below as needed. + version('2020.3', sha256='ebc4f6aa47972daed1f7bf71d100ae5bf6931c2e3144cf299c8cc7d041dca2f3') version('2020.2', sha256='4804320e1e6cbe3a5421997b52199e3c1a3829b2ecb6489641da4b8e32faf500') version('2020.1', sha256='7c96a150ed22bc3c6628bc3fef9ed475c00887b26d37bca61518d76a56510971') version('2020.0', sha256='57714f2d2cf33935db33cee93af57eb3ecd5a7bef40c1fb7ca4a41d79684b118') diff --git a/var/spack/repos/builtin/packages/intel/package.py b/var/spack/repos/builtin/packages/intel/package.py index 2808f6e885..7d9363e98f 100644 --- a/var/spack/repos/builtin/packages/intel/package.py +++ b/var/spack/repos/builtin/packages/intel/package.py @@ -13,8 +13,10 @@ class Intel(IntelPackage): # Same as in ../intel-parallel-studio/package.py, Composer Edition, # but the version numbering in Spack differs. + version('20.0.2', sha256='42af16e9a91226978bb401d9f17b628bc279aa8cb104d4a38ba0808234a79bdd', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16759/parallel_studio_xe_2020_update2_composer_edition.tgz') version('20.0.1', sha256='26c7e7da87b8a83adfd408b2a354d872be97736abed837364c1bf10f4469b01e', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16530/parallel_studio_xe_2020_update1_composer_edition.tgz') version('20.0.0', sha256='9168045466139b8e280f50f0606b9930ffc720bbc60bc76f5576829ac15757ae', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16229/parallel_studio_xe_2020_composer_edition.tgz') + version('19.1.2', sha256='42af16e9a91226978bb401d9f17b628bc279aa8cb104d4a38ba0808234a79bdd', url='http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16759/parallel_studio_xe_2020_update2_composer_edition.tgz') 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') diff --git a/var/spack/repos/builtin/packages/iq-tree/package.py b/var/spack/repos/builtin/packages/iq-tree/package.py index 9058a66f10..010ccdcae0 100644 --- a/var/spack/repos/builtin/packages/iq-tree/package.py +++ b/var/spack/repos/builtin/packages/iq-tree/package.py @@ -14,10 +14,12 @@ class IqTree(CMakePackage): git = "https://github.com/Cibiv/IQ-TREE.git" url = "https://github.com/Cibiv/IQ-TREE/archive/v1.6.12.tar.gz" + version('2.0.6', tag='v2.0.6', submodules=True) version('1.6.12', sha256='9614092de7a157de82c9cc402b19cc8bfa0cb0ffc93b91817875c2b4bb46a284') variant('openmp', default=True, description='Enable OpenMP support.') variant('mpi', default=False, description='Enable MPI support.') + variant('lsd2', default=True, description='Axctivate Least Squares Dating.') maintainers = ['ilbiondo'] @@ -30,13 +32,13 @@ class IqTree(CMakePackage): 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 '+lsd2' in spec: + args.append('-DUSE_LSD2=ON') + if '+openmp' in spec: iqflags.append('omp') diff --git a/var/spack/repos/builtin/packages/isaac-server/package.py b/var/spack/repos/builtin/packages/isaac-server/package.py index af693a339c..da78398d1e 100644 --- a/var/spack/repos/builtin/packages/isaac-server/package.py +++ b/var/spack/repos/builtin/packages/isaac-server/package.py @@ -29,7 +29,7 @@ class IsaacServer(CMakePackage): depends_on('cmake@3.3:', type='build') depends_on('jpeg', type='link') - depends_on('jansson', type='link') + depends_on('jansson@:2.9', type='link') depends_on('boost@1.56.0:', type='link') depends_on('libwebsockets@2.1.1:', type='link') # depends_on('gstreamer@1.0', when='+gstreamer') diff --git a/var/spack/repos/builtin/packages/isescan/package.py b/var/spack/repos/builtin/packages/isescan/package.py new file mode 100644 index 0000000000..1d4b607046 --- /dev/null +++ b/var/spack/repos/builtin/packages/isescan/package.py @@ -0,0 +1,71 @@ +# 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 Isescan(Package): + """A python pipeline to identify IS (Insertion Sequence) elements in + genome and metagenome""" + + homepage = "https://github.com/xiezhq/ISEScan" + url = "https://github.com/xiezhq/ISEScan/archive/v1.7.2.1.tar.gz" + + version('1.7.2.1', sha256='b971a3e86a8cddaa4bcd520ba9e75425bbe93190466f81a3791ae0cb4baf5e5d') + + depends_on('python@3.3.3:', type='run') + depends_on('py-numpy@1.8.0:', type='run') + depends_on('py-scipy@0.13.1:', type='run') + depends_on('py-biopython@1.62:', type='run') + depends_on('py-fastcluster', type='run') + depends_on('py-argparse', type='run') + depends_on('blast-plus@2.2.31:', type='run') + depends_on('fraggenescan@1.30:', type='run') + depends_on('hmmer@3.1b2:', type='run') + + def setup_run_environment(self, env): + env.prepend_path('PATH', self.prefix) + env.prepend_path('LD_LIBRARY_PATH', + join_path(self.prefix, 'ssw201507')) + + def install(self, spec, prefix): + # build bundled SSW library + with working_dir('ssw201507'): + Executable(spack_cc)( + '-O3', '-pipe', self.compiler.cc_pic_flag, '-shared', + '-rdynamic', '-o', 'libssw.' + dso_suffix, 'ssw.c', 'ssw.h', + ) + + # set paths to required programs + blast_pfx = self.spec['blast-plus'].prefix.bin + blastn_path = blast_pfx.blastn + blastp_path = blast_pfx.blastp + makeblastdb_path = blast_pfx.makeblastdb + + hmmer_pfx = self.spec['hmmer'].prefix.bin + phmmer_path = hmmer_pfx.phmmer + hmmsearch_path = hmmer_pfx.hmmsearch + + fgs_pfx = self.spec['fraggenescan'].prefix.bin + fgs_path = join_path(fgs_pfx, 'run_FragGeneScan.pl') + + constants = FileFilter('constants.py') + + constants.filter('/apps/inst/FragGeneScan1.30/run_FragGeneScan.pl', + fgs_path, string=True) + constants.filter('/apps/inst/hmmer-3.3/bin/phmmer', + phmmer_path, string=True) + constants.filter('/apps/inst/hmmer-3.3/bin/hmmsearch', + hmmsearch_path, string=True) + constants.filter('/apps/inst/ncbi-blast-2.10.0+/bin/blastn', + blastn_path, string=True) + constants.filter('/apps/inst/ncbi-blast-2.10.0+/bin/blastp', + blastp_path, string=True) + constants.filter('/apps/inst/ncbi-blast-2.10.0+/bin/makeblastdb', + makeblastdb_path, string=True) + + # install the whole tree + install_tree('.', prefix) + set_executable(join_path(prefix, 'isescan.py')) diff --git a/var/spack/repos/builtin/packages/jali/package.py b/var/spack/repos/builtin/packages/jali/package.py index e75dc7fb92..7c36ed7fdd 100644 --- a/var/spack/repos/builtin/packages/jali/package.py +++ b/var/spack/repos/builtin/packages/jali/package.py @@ -13,11 +13,12 @@ class Jali(CMakePackage): homepage = "https://github.com/lanl/jali" git = "https://github.com/lanl/jali" - url = "https://github.com/lanl/jali/archive/1.1.4.tar.gz" + url = "https://github.com/lanl/jali/archive/1.1.5.tar.gz" maintainers = ['raovgarimella'] version('master', branch='master') + version('1.1.5', sha256='4f18f3e8b50f20a89918e99596a7226c215944d84df642bc1fb2d6c31464b95b') version('1.1.4', sha256='135ab02be1487fcdfb039613cbed630bce336d581a66468c66209db0a9d8a104') version('1.1.1', sha256='c96c000b3893ea7f15bbc886524476dd466ae145e77deedc27e412fcc3541207') version('1.1.0', sha256='783dfcd6a9284af83bb380ed257fa8b0757dc2f7f9196d935eb974fb6523c644') diff --git a/var/spack/repos/builtin/packages/jmol/package.py b/var/spack/repos/builtin/packages/jmol/package.py index 6bbe7e28cd..9da452f396 100644 --- a/var/spack/repos/builtin/packages/jmol/package.py +++ b/var/spack/repos/builtin/packages/jmol/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import os.path class Jmol(Package): @@ -11,15 +12,26 @@ class Jmol(Package): with features for chemicals, crystals, materials and biomolecules.""" homepage = "http://jmol.sourceforge.net/" - url = "https://sourceforge.net/projects/jmol/files/Jmol/Version%2014.8/Jmol%2014.8.0/Jmol-14.8.0-binary.tar.gz" + url = "https://sourceforge.net/projects/jmol/files/Jmol/Version%2014.8/Jmol%2014.8.0/Jmol-14.8.0-binary.tar.gz" + version('14.31.0', sha256='eee0703773607c8bd6d51751d0d062c3e10ce44c11e1d7828e4ea3d5f710e892') version('14.8.0', sha256='8ec45e8d289aa0762194ca71848edc7d736121ddc72276031a253a3651e6d588') + def url_for_version(self, version): + url = 'https://sourceforge.net/projects/jmol/files/Jmol/Version%20{0}/Jmol%20{1}/Jmol-{1}-binary.tar.gz' + return url.format(version.up_to(2), version) + depends_on('java', type='run') def install(self, spec, prefix): - install_tree('jmol-{0}'.format(self.version), prefix) + if os.path.exists('jmol-{0}'.format(self.version)): + # tar ball contains subdir with different versions + install_tree('jmol-{0}'.format(self.version), prefix) + else: + # no subdirs - tarball was unpacked in spack-src + install_tree('./', prefix) def setup_run_environment(self, env): env.prepend_path('PATH', self.prefix) env.set('JMOL_HOME', self.prefix) + env.prepend_path('PATH', self.spec['java'].prefix.bin) diff --git a/var/spack/repos/builtin/packages/jube/package.py b/var/spack/repos/builtin/packages/jube/package.py index dae9fc2932..aff47bc55e 100644 --- a/var/spack/repos/builtin/packages/jube/package.py +++ b/var/spack/repos/builtin/packages/jube/package.py @@ -14,6 +14,8 @@ class Jube(PythonPackage): homepage = "https://www.fz-juelich.de/jsc/jube/" url = "https://apps.fz-juelich.de/jsc/jube/jube2/download.php?version=2.2.2" + version('2.4.0', sha256='87c02555f3d1a8ecaff139cf8e7a7167cabd1049c8cc77f1bd8f4484e210d524', extension='tar.gz') + version('2.3.0', sha256='6051d45af2ff35031ccc460185fbfa61f7f36ea14f17a0d51a9e62cd7af3709a', extension="tar.gz") version('2.2.2', sha256='135bc03cf07c4624ef2cf581ba5ec52eb44ca1dac15cffb83637e86170980477', extension="tar.gz") version('2.2.1', sha256='68751bf2e17766650ccddb7a5321dd1ac8b34ffa3585db392befbe9ff180ddd9', extension="tar.gz") version('2.2.0', sha256='bc825884fc8506d0fb7b3b5cbb5ad4c7e82b1fe1d7ec861ca33699adfc8100f1', extension="tar.gz") diff --git a/var/spack/repos/builtin/packages/kahip/fix-sconstruct-for-py3-v2.00.patch b/var/spack/repos/builtin/packages/kahip/fix-sconstruct-for-py3-v2.00.patch new file mode 100644 index 0000000000..8a75032e19 --- /dev/null +++ b/var/spack/repos/builtin/packages/kahip/fix-sconstruct-for-py3-v2.00.patch @@ -0,0 +1,30 @@ +diff -Naur spack-src/SConstruct spack-src.patched/SConstruct +--- spack-src/SConstruct 2017-07-25 08:41:27.000000000 -0400 ++++ spack-src.patched/SConstruct 2020-07-21 13:26:11.212509775 -0400 +@@ -55,11 +55,11 @@ + + env = Environment(options=opts, ENV=os.environ) + if not env['variant'] in ['optimized','optimized_output','debug']: +- print 'Illegal value for variant: %s' % env['variant'] ++ print('Illegal value for variant: %s' % env['variant']) + sys.exit(1) + + if not env['program'] in ['kaffpa', 'kaffpaE', 'partition_to_vertex_separator','improve_vertex_separator','library','graphchecker','label_propagation','evaluator','node_separator']: +- print 'Illegal value for program: %s' % env['program'] ++ print('Illegal value for program: %s' % env['program']) + sys.exit(1) + + # Special configuration for 64 bit machines. +@@ -104,10 +104,10 @@ + + #by D. Luxen + #if not conf.CheckLibWithHeader('argtable2', 'argtable2.h', 'CXX'): +- #print "argtable library not found. Exiting" ++ #print("argtable library not found. Exiting") + #Exit(-1) + #if not conf.CheckCXXHeader('mpi.h'): +- #print "openmpi header not found. Exiting" ++ #print("openmpi header not found. Exiting") + #Exit(-1) + # + # diff --git a/var/spack/repos/builtin/packages/kahip/fix-sconstruct-for-py3.patch b/var/spack/repos/builtin/packages/kahip/fix-sconstruct-for-py3.patch new file mode 100644 index 0000000000..2cd61650af --- /dev/null +++ b/var/spack/repos/builtin/packages/kahip/fix-sconstruct-for-py3.patch @@ -0,0 +1,101 @@ +diff -Naur spack-src/interface/SConstruct spack-src.patched/interface/SConstruct +--- spack-src/interface/SConstruct 2017-07-25 08:41:27.000000000 -0400 ++++ spack-src.patched/interface/SConstruct 2020-07-21 13:25:41.586597330 -0400 +@@ -33,7 +33,7 @@ + + env = Environment(options=opts, ENV=os.environ) + if not env['variant'] in ['debug', 'optimized', 'pdebug', 'profilingoptimized']: +- print 'Illegal value for variant: %s' % env['variant'] ++ print('Illegal value for variant: %s' % env['variant']) + sys.exit(1) + + # Special configuration for 64 bit machines. +diff -Naur spack-src/misc/example_library_call/SConstruct spack-src.patched/misc/example_library_call/SConstruct +--- spack-src/misc/example_library_call/SConstruct 2017-07-25 08:41:27.000000000 -0400 ++++ spack-src.patched/misc/example_library_call/SConstruct 2020-07-21 12:06:05.543455286 -0400 +@@ -53,11 +53,11 @@ + + env = Environment(options=opts, ENV=os.environ) + if not env['variant'] in ['optimized','optimized_output','debug']: +- print 'Illegal value for variant: %s' % env['variant'] ++ print('Illegal value for variant: %s' % env['variant']) + sys.exit(1) + + if not env['program'] in ['interfacetest']: +- print 'Illegal value for program: %s' % env['program'] ++ print('Illegal value for program: %s' % env['program']) + sys.exit(1) + + # Special configuration for 64 bit machines. +diff -Naur spack-src/parallel/modified_kahip/interface/SConstruct spack-src.patched/parallel/modified_kahip/interface/SConstruct +--- spack-src/parallel/modified_kahip/interface/SConstruct 2017-07-25 08:41:27.000000000 -0400 ++++ spack-src.patched/parallel/modified_kahip/interface/SConstruct 2020-07-21 12:06:36.461407930 -0400 +@@ -33,7 +33,7 @@ + + env = Environment(options=opts, ENV=os.environ) + if not env['variant'] in ['debug', 'optimized', 'pdebug', 'profilingoptimized']: +- print 'Illegal value for variant: %s' % env['variant'] ++ print('Illegal value for variant: %s' % env['variant']) + sys.exit(1) + + # Special configuration for 64 bit machines. +diff -Naur spack-src/parallel/modified_kahip/SConstruct spack-src.patched/parallel/modified_kahip/SConstruct +--- spack-src/parallel/modified_kahip/SConstruct 2017-07-25 08:41:27.000000000 -0400 ++++ spack-src.patched/parallel/modified_kahip/SConstruct 2020-07-21 13:23:37.148764755 -0400 +@@ -55,11 +55,11 @@ + + env = Environment(options=opts, ENV=os.environ) + if not env['variant'] in ['optimized','optimized_output','debug']: +- print 'Illegal value for variant: %s' % env['variant'] ++ print('Illegal value for variant: %s' % env['variant']) + sys.exit(1) + + if not env['program'] in ['kaffpa', 'kaffpaE', 'partition_to_vertex_separator','library','graphchecker','label_propagation','interfacetest']: +- print 'Illegal value for program: %s' % env['program'] ++ print('Illegal value for program: %s' % env['program']) + sys.exit(1) + + # Special configuration for 64 bit machines. +@@ -98,10 +98,10 @@ + + #by D. Luxen + #if not conf.CheckLibWithHeader('argtable2', 'argtable2.h', 'CXX'): +- #print "argtable library not found. Exiting" ++ #print("argtable library not found. Exiting") + #Exit(-1) + #if not conf.CheckCXXHeader('mpi.h'): +- #print "openmpi header not found. Exiting" ++ #print("openmpi header not found. Exiting") + #Exit(-1) + # + # +diff -Naur spack-src/parallel/parallel_src/SConstruct spack-src.patched/parallel/parallel_src/SConstruct +--- spack-src/parallel/parallel_src/SConstruct 2017-07-25 08:41:27.000000000 -0400 ++++ spack-src.patched/parallel/parallel_src/SConstruct 2020-07-21 13:25:13.102720046 -0400 +@@ -55,11 +55,11 @@ + + env = Environment(options=opts, ENV=os.environ) + if not env['variant'] in ['optimized','optimized_nooutput','debug']: +- print 'Illegal value for variant: %s' % env['variant'] ++ print('Illegal value for variant: %s' % env['variant']) + sys.exit(1) + + if not env['program'] in ['parhip','edge_list_to_metis_graph','friendster_list_to_metis_graph','parallel_label_compress_reps','yahoo_to_metis','parmetis_driver','graph2binary','graph2binary_external','readbgf','toolbox']: +- print 'Illegal value for program: %s' % env['program'] ++ print('Illegal value for program: %s' % env['program']) + sys.exit(1) + + # Special configuration for 64 bit machines. +@@ -104,10 +104,10 @@ + + #by D. Luxen + #if not conf.CheckLibWithHeader('argtable2', 'argtable2.h', 'CXX'): +- #print "argtable library not found. Exiting" ++ #print("argtable library not found. Exiting") + #Exit(-1) + #if not conf.CheckCXXHeader('mpi.h'): +- #print "openmpi header not found. Exiting" ++ #print("openmpi header not found. Exiting") + #Exit(-1) + # + # diff --git a/var/spack/repos/builtin/packages/kahip/package.py b/var/spack/repos/builtin/packages/kahip/package.py index e2ca1aeaa1..3a31455c75 100644 --- a/var/spack/repos/builtin/packages/kahip/package.py +++ b/var/spack/repos/builtin/packages/kahip/package.py @@ -35,6 +35,15 @@ class Kahip(SConsPackage): conflicts('%apple-clang') conflicts('%clang') + # Fix SConstruct files to be python3 friendly (convert print from a + # statement to a function) + # Split into 2 patch files: + # *) first file patches Sconstruct files present in all versions (from + # 2.00 to 2.11) + # *) second is for files only present in 2.00 + patch('fix-sconstruct-for-py3.patch', when='@2: ^python@3:') + patch('fix-sconstruct-for-py3-v2.00.patch', when='@2.00 ^python@3:') + def patch(self): """Internal compile.sh scripts hardcode number of cores to build with. Filter these out so Spack can control it.""" diff --git a/var/spack/repos/builtin/packages/kallisto/package.py b/var/spack/repos/builtin/packages/kallisto/package.py index d33bd970a2..25e5fcb9a0 100644 --- a/var/spack/repos/builtin/packages/kallisto/package.py +++ b/var/spack/repos/builtin/packages/kallisto/package.py @@ -18,7 +18,6 @@ class Kallisto(CMakePackage): depends_on('zlib') depends_on('hdf5') - depends_on('mpich') # htslib isn't built in time to be used.... parallel = False diff --git a/var/spack/repos/builtin/packages/kassiopeia/package.py b/var/spack/repos/builtin/packages/kassiopeia/package.py new file mode 100644 index 0000000000..90d085acb8 --- /dev/null +++ b/var/spack/repos/builtin/packages/kassiopeia/package.py @@ -0,0 +1,65 @@ +# 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 Kassiopeia(CMakePackage): + """Simulation of electric and magnetic fields and particle tracking.""" + + homepage = "https://katrin-experiment.github.io/Kassiopeia/" + url = "https://github.com/KATRIN-Experiment/Kassiopeia/archive/v3.6.1.tar.gz" + git = "https://github.com/KATRIN-Experiment/Kassiopeia.git" + + maintainers = ['wdconinc'] + + version('3.7.5', sha256='8f28d08c7ef51e64221e0a4705f3cee3a5d738b8cdde5ce9fa58a3a0dd14ae05') + version('3.7.4', sha256='c1514163a084530930be10dbe487fb1950ccbc9662a4a190bdecffbd84a71fd4') + version('3.7.3', sha256='a8753585b9fa0903e1f5f821c4ced3cddd72792ad7e6075a7e25318f81ad9eaa') + version('3.7.2', sha256='bdfdf8c26fa5ad19e8b9c6eb600dfbd3c8218cd695ce067f10633b63bd192f92') + version('3.7.1', sha256='b22ae2fe5c2271bdf6aaf65d9ecf57ff0d6a88d28ad26d176e1129f0e58faea4') + version('3.7.0', sha256='32a3e98c77d1b97fe9862cf1d8c6ba8e6c82fb9295a6a217c7ce77cbec751046') + version('3.6.1', sha256='30193d5384ad81b8570fdcd1bb35b15cc365ab84712819ac0d989c6f5cf6f790') + version('3.5.0', sha256='b704d77bd182b2806dc8323f642d3197ce21dba3d456430f594b19a7596bda22') + version('3.4.0', sha256='4e2bca61011e670186d49048aea080a06c3c95dacf4b79e7549c36960b4557f4') + + variant("root", default=False, + description="Include support for writing ROOT files") + variant("vtk", default=False, + description="Include visualization support through VTK") + variant("mpi", default=False, + description="Include MPI support for field calculations") + variant("tbb", default=False, + description="Include Intel TBB support for field calculations") + variant("opencl", default=False, + description="Include OpenCL support for field calculations") + + depends_on('cmake@3.13:', type='build') + depends_on('zlib') + depends_on('root@6.0.0:', when='+root') + depends_on('vtk@6.1:', when='+vtk') + depends_on('mpi', when='+mpi') + depends_on('tbb', when='+tbb') + depends_on('opencl', when='+opencl') + + def cmake_args(self): + args = [] + if self.spec.satisfies('+vtk'): + args.append('-DKASPER_USE_VTK=ON') + else: + args.append('-DKASPER_USE_VTK=OFF') + if self.spec.satisfies('+tbb'): + args.append('-DKASPER_USE_TBB=ON') + else: + args.append('-DKASPER_USE_TBB=OFF') + if self.spec.satisfies('+mpi'): + args.append('-DKEMField_USE_MPI=ON') + else: + args.append('-DKEMField_USE_MPI=OFF') + if self.spec.satisfies('+opencl'): + args.append('-DKEMField_USE_OPENCL=ON') + else: + args.append('-DKEMField_USE_OPENCL=OFF') + return args diff --git a/var/spack/repos/builtin/packages/keepalived/package.py b/var/spack/repos/builtin/packages/keepalived/package.py index bb6cf01337..2b1e9f7b07 100644 --- a/var/spack/repos/builtin/packages/keepalived/package.py +++ b/var/spack/repos/builtin/packages/keepalived/package.py @@ -25,4 +25,4 @@ class Keepalived(AutotoolsPackage): version('2.0.12', sha256='fd50e433d784cfd948de5726752cf89ab7001f587fe10a5110c6c7cbda4b7b5e') version('2.0.11', sha256='a298b0c02a20959cfc365b62c14f45abd50d5e0595b2869f5bce10ec2392fa48') - depends_on('openssl', type='build') + depends_on('openssl') diff --git a/var/spack/repos/builtin/packages/kibana/package.py b/var/spack/repos/builtin/packages/kibana/package.py index 6bf2562394..f0e6f53988 100644 --- a/var/spack/repos/builtin/packages/kibana/package.py +++ b/var/spack/repos/builtin/packages/kibana/package.py @@ -15,7 +15,7 @@ class Kibana(Package): version('6.4.0', sha256='df2056105a08c206a1adf9caed09a152a53429a0f1efc1ba3ccd616092d78aee') - depends_on('jdk', type='run') + depends_on('java', type='run') def install(self, spec, prefix): install_tree('.', join_path(prefix, '.')) diff --git a/var/spack/repos/builtin/packages/knem/package.py b/var/spack/repos/builtin/packages/knem/package.py index 473a178319..def620ab4f 100644 --- a/var/spack/repos/builtin/packages/knem/package.py +++ b/var/spack/repos/builtin/packages/knem/package.py @@ -11,18 +11,26 @@ class Knem(AutotoolsPackage): communication for large messages.""" homepage = "http://knem.gforge.inria.fr" - url = "http://gforge.inria.fr/frs/download.php/37186/knem-1.1.3.tar.gz" - list_url = "http://knem.gforge.inria.fr/download" + url = "https://gitlab.inria.fr/knem/knem/uploads/4a43e3eb860cda2bbd5bf5c7c04a24b6/knem-1.1.4.tar.gz" + list_url = "https://knem.gitlabpages.inria.fr/download" + git = "https://gitlab.inria.fr/knem/knem.git" maintainers = ['skosukhin'] - version('1.1.3', sha256='50d3c4a20c140108b8ce47aaafd0ade0927d6f507e1b5cc690dd6bddeef30f60') + version('master', branch='master') + version('1.1.4', sha256='9f0e360579ae7655e07d6644583fd325515e9ff2b42ef5decb5421a003510937', + url="https://gitlab.inria.fr/knem/knem/uploads/4a43e3eb860cda2bbd5bf5c7c04a24b6/knem-1.1.4.tar.gz") + version('1.1.3', sha256='50d3c4a20c140108b8ce47aaafd0ade0927d6f507e1b5cc690dd6bddeef30f60', + url="https://gitlab.inria.fr/knem/knem/uploads/59375c38537e6ff2d94209f190c54aa6/knem-1.1.3.tar.gz") variant('hwloc', default=True, description='Enable hwloc in the user-space tools') - depends_on('hwloc', when='+hwloc') + depends_on('hwloc', when='+hwloc') depends_on('pkgconfig', type='build', when='+hwloc') + depends_on('autoconf', type='build', when='@master') + depends_on('automake', type='build', when='@master') + depends_on('m4', type='build', when='@master') # The support for hwloc was added in 0.9.1: conflicts('+hwloc', when='@:0.9.0') @@ -44,3 +52,7 @@ class Knem(AutotoolsPackage): def configure_args(self): return self.enable_or_disable('hwloc') + + @when('@master') + def autoreconf(self, spec, prefix): + Executable('./autogen.sh')() diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index b5277e40a8..cf949befbd 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -172,6 +172,8 @@ class Kokkos(CMakePackage, CudaPackage): conflicts("+wrapper", when="~cuda") variant("std", default="11", values=["11", "14", "17", "20"], multi=False) + variant("pic", default=False, description="Build position independent code") + # nvcc does not currently work with C++17 or C++20 conflicts("+cuda", when="std=17") conflicts("+cuda", when="std=20") @@ -208,6 +210,9 @@ class Kokkos(CMakePackage, CudaPackage): if isdiy: options.append("-DSpack_WORKAROUND=On") + if "+pic" in spec: + options.append("-DCMAKE_POSITION_INDEPENDENT_CODE=ON") + spack_microarches = [] if "+cuda" in spec: # this is a list diff --git a/var/spack/repos/builtin/packages/krb5/package.py b/var/spack/repos/builtin/packages/krb5/package.py index 24cf72f6d7..93367a3461 100644 --- a/var/spack/repos/builtin/packages/krb5/package.py +++ b/var/spack/repos/builtin/packages/krb5/package.py @@ -9,11 +9,24 @@ from spack import * class Krb5(AutotoolsPackage): """Network authentication protocol""" - homepage = "https://kerberos.org" - url = "https://kerberos.org/dist/krb5/1.16/krb5-1.16.1.tar.gz" - + homepage = "https://kerberos.org" + url = "https://kerberos.org/dist/krb5/1.16/krb5-1.16.1.tar.gz" + list_url = "https://kerberos.org/dist/krb5/" + list_depth = 1 + + version('1.18.2', sha256='c6e4c9ec1a98141c3f5d66ddf1a135549050c9fab4e9a4620ee9b22085873ae0') + version('1.18.1', sha256='02a4e700f10936f937cd1a4c303cab8687a11abecc6107bd4b706b9329cd5400') + version('1.18', sha256='73913934d711dcf9d5f5605803578edb44b9a11786df3c1b2711f4e1752f2c88') + version('1.17.1', sha256='3706d7ec2eaa773e0e32d3a87bf742ebaecae7d064e190443a3acddfd8afb181') + version('1.17', sha256='5a6e2284a53de5702d3dc2be3b9339c963f9b5397d3fbbc53beb249380a781f5') + version('1.16.3', sha256='e40499df7c6dbef0cf9b11870a0e167cde827737d8b2c06a9436334f08ab9b0d') + version('1.16.2', sha256='9f721e1fe593c219174740c71de514c7228a97d23eb7be7597b2ae14e487f027') version('1.16.1', sha256='214ffe394e3ad0c730564074ec44f1da119159d94281bbec541dc29168d21117') + def url_for_version(self, version): + url = 'https://kerberos.org/dist/krb5/{0}/krb5-{1}.tar.gz' + return url.format(version.up_to(2), version) + depends_on('bison', type='build') depends_on('openssl') diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 928a7fddab..550bf51de1 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -21,6 +21,8 @@ class Lammps(CMakePackage, CudaPackage): tags = ['ecp', 'ecp-apps'] version('master', branch='master') + version('20200721', sha256='845bfeddb7b667799a1a5dbc166b397d714c3d2720316604a979d3465b4190a9') + version('20200630', sha256='413cbfabcc1541a339c7a4ab5693fbeb768f46bb1250640ba94686c6e90922fc') version('20200505', sha256='c49d77fd602d28ebd8cf10f7359b9fc4d14668c72039028ed7792453d416de73') version('20200303', sha256='9aa56dfb8673a06e6c88588505ec1dfc01dd94f9d60e719ed0c605e48cc06c58') version('20200227', sha256='1aabcf38bc72285797c710b648e906151a912c36b634a9c88ac383aacf85516e') @@ -92,11 +94,12 @@ class Lammps(CMakePackage, CudaPackage): depends_on('netcdf-c+mpi', when='+user-netcdf') depends_on('blas', when='+user-atc') depends_on('lapack', when='+user-atc') - depends_on('latte@1.0.1', when='@:20180222+latte') - depends_on('latte@1.1.1:', when='@20180316:20180628+latte') depends_on('opencl', when='+opencl') - depends_on('latte@1.2.1:', when='@20180629:+latte') + depends_on('latte@1.0.1', when='@:20180222+latte') + depends_on('latte@1.1.1:', when='@20180316:20180628+latte') + depends_on('latte@1.2.1:', when='@20180629:20200505+latte') + depends_on('latte@1.2.2:', when='@20200602:+latte') depends_on('blas', when='+latte') depends_on('lapack', when='+latte') depends_on('python', when='+python') diff --git a/var/spack/repos/builtin/packages/latte/package.py b/var/spack/repos/builtin/packages/latte/package.py index 87d10fa152..d67f98397e 100644 --- a/var/spack/repos/builtin/packages/latte/package.py +++ b/var/spack/repos/builtin/packages/latte/package.py @@ -16,7 +16,8 @@ class Latte(CMakePackage): tags = ['ecp', 'ecp-apps'] - version('develop', branch='master') + version('master', branch='master') + version('1.2.2', sha256='ab1346939dbd70ffd89c5e5bf8d24946cb3655dc25b203bec7fc59c6c63e4c79') version('1.2.1', sha256='a21dda5ebdcefa56e9ff7296d74ef03f89c200d2e110a02af7a84612668bf702') variant('mpi', default=True, diff --git a/var/spack/repos/builtin/packages/lbann/package.py b/var/spack/repos/builtin/packages/lbann/package.py index bc0da109ec..8eacb2fb71 100644 --- a/var/spack/repos/builtin/packages/lbann/package.py +++ b/var/spack/repos/builtin/packages/lbann/package.py @@ -8,7 +8,7 @@ import sys from spack import * -class Lbann(CMakePackage): +class Lbann(CMakePackage, CudaPackage): """LBANN: Livermore Big Artificial Neural Network Toolkit. A distributed memory, HPC-optimized, model and data parallel training toolkit for deep neural networks.""" @@ -20,7 +20,8 @@ class Lbann(CMakePackage): maintainers = ['bvanessen'] version('develop', branch='develop') - version('0.99', branch='develop') + version('0.100', sha256='d1bab4fb6f1b80ae83a7286cc536a32830890f6e5b0c3107a17c2600d0796912') + version('0.99', sha256='3358d44f1bc894321ce07d733afdf6cb7de39c33e3852d73c9f31f530175b7cd') version('0.98.1', sha256='9a2da8f41cd8bf17d1845edf9de6d60f781204ebd37bffba96d8872036c10c66') version('0.98', sha256='8d64b9ac0f1d60db553efa4e657f5ea87e790afe65336117267e9c7ae6f68239') version('0.97.1', sha256='2f2756126ac8bb993202cf532d72c4d4044e877f4d52de9fdf70d0babd500ce4') @@ -32,7 +33,6 @@ class Lbann(CMakePackage): version('0.92', sha256='9187c5bcbc562c2828fe619d53884ab80afb1bcd627a817edb935b80affe7b84') version('0.91', sha256='b69f470829f434f266119a33695592f74802cff4b76b37022db00ab32de322f5') - variant('gpu', default=False, description='Builds with support for GPUs via CUDA and cuDNN') variant('nccl', default=False, description='Builds with support for NCCL communication lib') variant('opencv', default=True, description='Builds with support for image processing routines with OpenCV') variant('seq_init', default=False, description='Force serial initialization of weight matrices.') @@ -52,6 +52,8 @@ class Lbann(CMakePackage): conflicts('@:0.90,0.99:', when='~conduit') + depends_on('cmake@3.16.0:', type='build') + # It seems that there is a need for one statement per version bounds depends_on('hydrogen +openmp_blas +shared +int64', when='@:0.90,0.95: ~al') depends_on('hydrogen +openmp_blas +shared +int64 +al', when='@:0.90,0.95: +al') @@ -77,12 +79,11 @@ class Lbann(CMakePackage): when='build_type=Debug @0.91:0.94') depends_on('aluminum', when='@:0.90,0.95: +al ~gpu') - depends_on('aluminum +gpu +mpi_cuda', when='@:0.90,0.95: +al +gpu ~nccl') - depends_on('aluminum +gpu +nccl +mpi_cuda', when='@:0.90,0.95: +al +gpu +nccl') + depends_on('aluminum +cuda +ht', when='@:0.90,0.95: +al +cuda ~nccl') + depends_on('aluminum +cuda +nccl +ht', when='@:0.90,0.95: +al +cuda +nccl') - depends_on('cuda', when='+gpu') - depends_on('cudnn', when='+gpu') - depends_on('cub', when='@0.94:0.98.2 +gpu') + depends_on('cudnn', when='+cuda') + depends_on('cub', when='@0.94:0.98.2 +cuda') depends_on('mpi') depends_on('hwloc') @@ -98,7 +99,7 @@ class Lbann(CMakePackage): '~videostab ~videoio ~vtk', when='+opencv') depends_on('cnpy') - depends_on('nccl', when='@0.94:0.98.2 +gpu +nccl') + depends_on('nccl', when='@0.94:0.98.2 +cuda +nccl') depends_on('conduit@0.4.0: +hdf5', when='@0.94:0.99 +conduit') depends_on('conduit@0.4.0: +hdf5', when='@:0.90,0.99:') @@ -118,6 +119,7 @@ class Lbann(CMakePackage): depends_on('py-protobuf+cpp@3.6.1:', type=('build', 'run'), when='@:0.90,0.99:') depends_on('py-breathe', type='build', when='+docs') + depends_on('doxygen', type='build', when='+docs') depends_on('py-m2r', type='build', when='+docs') depends_on('cereal') @@ -135,7 +137,6 @@ class Lbann(CMakePackage): cppflags.append('-DLBANN_SET_EL_RNG -ldl') return [ - '-DCMAKE_INSTALL_MESSAGE=LAZY', '-DCMAKE_CXX_FLAGS=%s' % ' '.join(cppflags), '-DLBANN_VERSION=spack', '-DCNPY_DIR={0}'.format(spec['cnpy'].prefix), @@ -148,12 +149,12 @@ class Lbann(CMakePackage): spec = self.spec args = self.common_config_args args.extend([ - '-DLBANN_WITH_TOPO_AWARE:BOOL=%s' % ('+gpu +nccl' in spec), + '-DLBANN_WITH_TOPO_AWARE:BOOL=%s' % ('+cuda +nccl' in spec), '-DLBANN_WITH_ALUMINUM:BOOL=%s' % ('+al' in spec), '-DLBANN_WITH_CONDUIT:BOOL=%s' % ('+conduit' in spec), - '-DLBANN_WITH_CUDA:BOOL=%s' % ('+gpu' in spec), - '-DLBANN_WITH_CUDNN:BOOL=%s' % ('+gpu' in spec), - '-DLBANN_WITH_SOFTMAX_CUDA:BOOL=%s' % ('+gpu' in spec), + '-DLBANN_WITH_CUDA:BOOL=%s' % ('+cuda' in spec), + '-DLBANN_WITH_CUDNN:BOOL=%s' % ('+cuda' in spec), + '-DLBANN_WITH_SOFTMAX_CUDA:BOOL=%s' % ('+cuda' in spec), '-DLBANN_SEQUENTIAL_INITIALIZATION:BOOL=%s' % ('+seq_init' in spec), '-DLBANN_WITH_TBINF=OFF', @@ -174,7 +175,8 @@ class Lbann(CMakePackage): spec['elemental'].prefix)]) if spec.satisfies('@0.94:0.98.2'): - args.extend(['-DLBANN_WITH_NCCL:BOOL=%s' % ('+gpu +nccl' in spec)]) + args.extend(['-DLBANN_WITH_NCCL:BOOL=%s' % + ('+cuda +nccl' in spec)]) if '+vtune' in spec: args.extend(['-DVTUNE_DIR={0}'.format(spec['vtune'].prefix)]) @@ -203,7 +205,7 @@ class Lbann(CMakePackage): args.extend(['-DOpenCV_DIR:STRING={0}'.format( spec['opencv'].prefix)]) - if '+gpu' in spec: + if '+cuda' in spec: args.extend([ '-DCUDA_TOOLKIT_ROOT_DIR={0}'.format( spec['cuda'].prefix)]) @@ -225,8 +227,8 @@ class Lbann(CMakePackage): spec = self.spec args = self.common_config_args args.extend([ - '-DWITH_CUDA:BOOL=%s' % ('+gpu' in spec), - '-DWITH_CUDNN:BOOL=%s' % ('+gpu' in spec), + '-DWITH_CUDA:BOOL=%s' % ('+cuda' in spec), + '-DWITH_CUDNN:BOOL=%s' % ('+cuda' in spec), '-DELEMENTAL_USE_CUBLAS:BOOL=%s' % ( '+cublas' in spec['elemental']), '-DWITH_TBINF=OFF', diff --git a/var/spack/repos/builtin/packages/lcals/package.py b/var/spack/repos/builtin/packages/lcals/package.py index ebf5411d00..9305c3dcb3 100644 --- a/var/spack/repos/builtin/packages/lcals/package.py +++ b/var/spack/repos/builtin/packages/lcals/package.py @@ -46,7 +46,7 @@ class Lcals(MakefilePackage): arch = 'MIC' elif arch == 'x86_64' or arch == 'x86_32': arch = 'x86' - elif arch != 'bgq': + else: raise InstallError('unknown architecture.') if self.compiler.name == 'intel': @@ -72,24 +72,7 @@ class Lcals(MakefilePackage): cxxflags += '-DLCALS_PLATFORM_X86_AVX -DLCALS_COMPILER_GNU ' cxx_compile += '-Ofast -mavx -finline-functions' ' -finline-limit=10000 -std=c++11' - elif arch == 'bgq': - cxxflags += '-DLCALS_PLATFORM_BGQ -DLCALS_COMPILER_GNU ' - cxx_compile += '-O3 -finline-functions -finline-limit=10000' - ' -std=c++0x' cxxflags += self.compiler.openmp_flag - elif self.compiler.name == 'xl' and arch == 'bgp': - if self.compiler.version == Version('9') and arch == 'bgp': - cxxflags += '-DLCALS_PLATFORM_BGP -DLCALS_COMPILER_XLC9 ' - cxx_compile += 'O3 -qarch=450d -qtune=450 -qalias=allp -qhot' - ' -qsmp=omp ' - elif self.compiler.version == Version('12') and arch == 'bgq': - cxxflags += '-DLCALS_PLATFORM_BGQ -DLCALS_COMPILER_XLC12 ' - cxx_compile += '-O3 -qarch=qp -qhot=novector -qsimd=auto' - ' -qlanglvl=extended0x -qnostrict -qinline=10000 -qsmp=omp ' - elif self.compiler.name == 'clang': - if arch == 'bgq': - cxxflags += '-DLCALS_PLATFORM_BGQ -DLCALS_COMPILER_CLANG ' - cxx_compile += '-O3 -finline-functions -ffast-math -std=c++0x' targets.append('LCALS_ARCH=') cxx_compile += ' ' + cxxflags diff --git a/var/spack/repos/builtin/packages/lcio/package.py b/var/spack/repos/builtin/packages/lcio/package.py new file mode 100644 index 0000000000..4319774b15 --- /dev/null +++ b/var/spack/repos/builtin/packages/lcio/package.py @@ -0,0 +1,74 @@ +# 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 Lcio(CMakePackage): + """HEP Library for Linear Collider Input/Output""" + + homepage = "http://lcio.desy.de" + git = "https://github.com/iLCSoft/LCIO.git" + url = "https://github.com/iLCSoft/LCIO/archive/v02-13-03.tar.gz" + + maintainers = ['gaede', 'vvolkl'] + + version('master', branch='master') + version('2.14.2', sha256='e64f4bf932edf6d6cdaf0162e5104f8fbf3e5fd9737c7a080c48859009621919') + version('2.13.3', sha256='35aaa7989be33574a7c44ea7e6d7780ab26ef8bd4aa29d495f3831a3cd269304') + version('2.13.2', sha256='9f153ba13e56ee16795378f9192678d40df1faca51d00aaa8fb80547bfecb8d8') + + variant('cxxstd', + default='17', + values=('11', '14', '17'), + multi=False, + description='Use the specified C++ standard when building.') + variant("jar", default=False, + description="Turn on to build/install lcio.jar") + variant("rootdict", default=True, + description="Turn on to build/install ROOT dictionary.") + variant("examples", default=False, + description="Turn on to build LCIO examples") + + depends_on('root@6.04:', when="+rootdict") + depends_on('openjdk', when="+jar") + # build error with +termlib, to be investigated + depends_on('ncurses~termlib', when="+examples") + depends_on('delphes', when="+examples") + depends_on('readline', when="+examples") + + def cmake_args(self): + args = [ + self.define('CMAKE_CXX_STANDARD', + self.spec.variants['cxxstd'].value), + self.define('BUILD_TESTING', self.run_tests), + self.define_from_variant("BUILD_LCIO_EXAMPLES", 'examples'), + self.define_from_variant("BUILD_ROOTDICT", 'rootdict'), + self.define_from_variant("INSTALL_JAR", 'jar'), + ] + return args + + def url_for_version(self, version): + base_url = self.url.rsplit('/', 1)[0] + major = str(version[0]).zfill(2) + minor = str(version[1]).zfill(2) + # handle the different cases for the patch version: + # first case, no patch version is given in spack, i.e 0.1 + if len(version) == 2: + url = base_url + "/v%s-%s.tar.gz" % (major, minor) + # a patch version is specified in spack, i.e. 0.1.x ... + elif len(version) == 3: + patch = str(version[2]).zfill(2) + # ... but it is zero, and not part of the ilc release url + if version[2] == 0: + url = base_url + "/v%s-%s.tar.gz" % (major, minor) + # ... if it is non-zero, it is part of the release url + else: + url = base_url + "/v%s-%s-%s.tar.gz" % (major, minor, patch) + else: + print('Error - Wrong version format provided') + return + return url diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index cac38dd030..f98e48e187 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -47,6 +47,8 @@ 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('spy', default=False, + description='Enable detailed logging for Legion Spy') variant('build_type', default='Release', values=('Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel'), description='The build type to build', multi=False) @@ -87,4 +89,7 @@ class Legion(CMakePackage): else: options.append('-DLegion_USE_HDF5=OFF') + if '+spy' in self.spec: + options.append('-DLegion_SPY=ON') + return options diff --git a/var/spack/repos/builtin/packages/lhapdf/package.py b/var/spack/repos/builtin/packages/lhapdf/package.py index 10a69aba75..13adae4818 100644 --- a/var/spack/repos/builtin/packages/lhapdf/package.py +++ b/var/spack/repos/builtin/packages/lhapdf/package.py @@ -13,6 +13,7 @@ class Lhapdf(AutotoolsPackage): homepage = "https://lhapdf.hepforge.org/" url = "https://lhapdf.hepforge.org/downloads/?f=LHAPDF-6.2.3.tar.gz" + version('6.3.0', sha256='ed4d8772b7e6be26d1a7682a13c87338d67821847aa1640d78d67d2cef8b9b5d') version('6.2.3', sha256='d6e63addc56c57b6286dc43ffc56d901516f4779a93a0f1547e14b32cfd82dd1') depends_on('autoconf', type='build') diff --git a/var/spack/repos/builtin/packages/lhapdf5/package.py b/var/spack/repos/builtin/packages/lhapdf5/package.py new file mode 100644 index 0000000000..6506f9da76 --- /dev/null +++ b/var/spack/repos/builtin/packages/lhapdf5/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 Lhapdf5(AutotoolsPackage): + """LHAPDF is a general purpose Fortran 77/90 interpolator, + used for evaluating PDFs from discretised data files.""" + + homepage = "http://lhapdf.hepforge.org/lhapdf5/" + url = "http://lhapdf.hepforge.org/downloads?f=old/lhapdf-5.9.1.tar.gz" + + version('5.9.1', sha256='86b9b046d7f25627ce2aab6847ef1c5534972f4bae18de98225080cf5086919c') + version('5.9.0', sha256='64b9018ce6102ae7b6a92c990ca6afa841fb992d87b1abf5756c3d04c4d46b9c') + version('5.8.9', sha256='b90a83512fc5f51e4cd419f1e79ad6e6fcd0e19636bb07464e41f47ee0509d3c') + version('5.8.8', sha256='fe4c7148b1858c3c534c5e80ea1a8766b4407d19c44c40578da54e390af228f8') + version('5.8.7', sha256='4c6effdcc74c8b60aaa18bf60e224de3c5f3c2e5b0efc08d38338f01bec7db47') + version('5.8.6', sha256='689800b2ad6d822e2da0435f9303457feaa9102bff8ef9dbfd708e13afceeef2') + version('5.8.5', sha256='f37d87c70a65a770bb2d013c4d1d9aa5d90c0f52b9430d56bab578fd221e8e41') + version('5.8.4', sha256='75a3b44bd4509bec47806fb5ad4baaa6334a2aa8f51cf2f7195d4f08bd353ca2') + version('5.8.3', sha256='e9b5e72bab65adef9ef78a5e0ee526a6ee673bed142f5e3617c0a27029b84275') + version('5.8.2', sha256='c54b4153b43453426510fd8aa322de66a80a33137ad251124345309615f6a3a6') + version('5.8.1', sha256='e113818541e976be69a9524007c2db19059da9af7abfebf7c53d86eafa2109c9') + version('5.8.0', sha256='8381ea5f785dde95772a2b6d5890f1cb72012e223e6861823fd81b09eedaa7a3') + version('5.7.1', sha256='40529629351598317fbf7b5905661e51b23778019d50451eee78d7b1118e2559') + + variant('python2', default=False, + description="Enable Python2 extension") + + depends_on('python@2.3:2.7.99', when='+python2') + + def setup_build_environment(self, env): + env.append_flags('FFLAGS', '-std=legacy') + if self.spec.satisfies('+python2'): + env.append_flags( + 'PYTHON', + join_path(self.spec['python'].prefix.bin, 'python')) + + def configure_args(self): + args = [] + if self.spec.satisfies('-python2'): + args.append('--disable-pyext') + return args diff --git a/var/spack/repos/builtin/packages/libcroco/package.py b/var/spack/repos/builtin/packages/libcroco/package.py index ef89961555..254d7973b7 100644 --- a/var/spack/repos/builtin/packages/libcroco/package.py +++ b/var/spack/repos/builtin/packages/libcroco/package.py @@ -16,3 +16,4 @@ class Libcroco(AutotoolsPackage): depends_on('glib') depends_on('libxml2') + depends_on('pkgconfig', type='build') diff --git a/var/spack/repos/builtin/packages/libelf/package.py b/var/spack/repos/builtin/packages/libelf/package.py index 9054753c48..2f59c61dfa 100644 --- a/var/spack/repos/builtin/packages/libelf/package.py +++ b/var/spack/repos/builtin/packages/libelf/package.py @@ -19,7 +19,11 @@ class Libelf(AutotoolsPackage): # homepage = "http://www.mr511.de/software/english.html" homepage = "https://directory.fsf.org/wiki/Libelf" - url = "https://fossies.org/linux/misc/old/libelf-0.8.13.tar.gz" + + urls = [ + 'https://fossies.org/linux/misc/old/libelf-0.8.13.tar.gz', + 'https://ftp.osuosl.org/pub/blfs/conglomeration/libelf/libelf-0.8.13.tar.gz' + ] version('0.8.13', sha256='591a9b4ec81c1f2042a97aa60564e0cb79d041c52faa7416acb38bc95bd2c76d') diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py index d4907ae3e1..697ccd22a4 100644 --- a/var/spack/repos/builtin/packages/libgd/package.py +++ b/var/spack/repos/builtin/packages/libgd/package.py @@ -36,3 +36,12 @@ class Libgd(AutotoolsPackage): depends_on('jpeg') depends_on('libtiff') depends_on('fontconfig') + + def patch(self): + p = self.spec['jpeg'].libs.search_flags + filter_file( + 'LIBJPEG_LIBS " -ljpeg"', + 'LIBJPEG_LIBS "{0} -ljpeg"'.format(p), + 'configure', + string=True + ) diff --git a/var/spack/repos/builtin/packages/libglvnd/package.py b/var/spack/repos/builtin/packages/libglvnd/package.py index 84f5440f27..5834c7b9b6 100644 --- a/var/spack/repos/builtin/packages/libglvnd/package.py +++ b/var/spack/repos/builtin/packages/libglvnd/package.py @@ -26,7 +26,6 @@ class Libglvnd(AutotoolsPackage): version('1.1.1', sha256='71918ed1261e4eece18c0b74b50dc62c0237b8d526e83277ef078554544720b9') conflicts('platform=darwin', msg='libglvnd is linux specific') - conflicts('platform=bgq', msg='libglvnd is linux specific') depends_on('libxext') depends_on('libx11') diff --git a/var/spack/repos/builtin/packages/libhugetlbfs/package.py b/var/spack/repos/builtin/packages/libhugetlbfs/package.py new file mode 100644 index 0000000000..9a9ac380aa --- /dev/null +++ b/var/spack/repos/builtin/packages/libhugetlbfs/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 Libhugetlbfs(MakefilePackage): + """libhugetlbfs is a library which provides easy access + to huge pages of memory.""" + + homepage = "https://github.com/libhugetlbfs/libhugetlbfs" + url = "https://github.com/libhugetlbfs/libhugetlbfs/releases/download/2.22/libhugetlbfs-2.22.tar.gz" + + version('2.22', sha256='94dca9ea2c527cd77bf28904094fe4708865a85122d416bfccc8f4b73b9a6785') + + def install(self, spec, prefix): + make('install', "PREFIX=%s" % prefix) diff --git a/var/spack/repos/builtin/packages/libimagequant/package.py b/var/spack/repos/builtin/packages/libimagequant/package.py new file mode 100644 index 0000000000..1e8f7752e3 --- /dev/null +++ b/var/spack/repos/builtin/packages/libimagequant/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 Libimagequant(Package): + """Small, portable C library for high-quality conversion of RGBA images to + 8-bit indexed-color (palette) images.""" + + homepage = "https://pngquant.org/lib/" + url = "https://github.com/ImageOptim/libimagequant/archive/2.12.6.tar.gz" + + version('2.12.6', sha256='b34964512c0dbe550c5f1b394c246c42a988cd73b71a76c5838aa2b4a96e43a0') + + phases = ['configure', 'build', 'install'] + + def configure(self, spec, prefix): + configure('--prefix=' + prefix) + + def build(self, spec, prefix): + make() + + def install(self, spec, prefix): + make('install') diff --git a/var/spack/repos/builtin/packages/libint/package.py b/var/spack/repos/builtin/packages/libint/package.py index 27fdc3b41d..38cd2f677c 100644 --- a/var/spack/repos/builtin/packages/libint/package.py +++ b/var/spack/repos/builtin/packages/libint/package.py @@ -13,6 +13,10 @@ TUNE_VARIANTS = ( 'cp2k-lmax-5', 'cp2k-lmax-6', 'cp2k-lmax-7', + 'molgw-lmax-4', + 'molgw-lmax-5', + 'molgw-lmax-6', + 'molgw-lmax-7', ) @@ -136,6 +140,25 @@ class Libint(AutotoolsPackage): '--enable-generic-code', '--disable-unrolling', ] + if tune_value.startswith('molgw'): + lmax = int(tune_value.split('-lmax-')[1]) + config_args += [ + '--enable-1body=1', + '--enable-eri=0', + '--enable-eri2=0', + '--enable-eri3=0', + '--with-multipole-max-order=0', + '--with-max-am={0}'.format(lmax), + '--with-eri-max-am={0}'.format(lmax), + '--with-eri2-max-am={0}'.format(lmax), + '--with-eri3-max-am={0}'.format(lmax), + '--with-opt-am=2', + '--enable-contracted-ints', + # keep code-size at an acceptable limit, + # cf. https://github.com/evaleev/libint/wiki#program-specific-notes: + '--enable-generic-code', + '--disable-unrolling', + ] return config_args diff --git a/var/spack/repos/builtin/packages/libmodbus/package.py b/var/spack/repos/builtin/packages/libmodbus/package.py new file mode 100644 index 0000000000..bb58528993 --- /dev/null +++ b/var/spack/repos/builtin/packages/libmodbus/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 Libmodbus(AutotoolsPackage): + """libmodbus is a free software library to send/receive data + according to the Modbus protocol.This library is written in C + and supports RTU (serial) and TCP (Ethernet) communications.""" + + homepage = "https://libmodbus.org/" + url = "https://libmodbus.org/releases/libmodbus-3.0.8.tar.gz" + + version('3.1.6', sha256='d7d9fa94a16edb094e5fdf5d87ae17a0dc3f3e3d687fead81835d9572cf87c16') + version('3.1.5', sha256='f7a9538f23a8786b1ee62a4b75879b5c0e194e728350de1b741ce7d595970f06') + version('3.1.4', sha256='c8c862b0e9a7ba699a49bc98f62bdffdfafd53a5716c0e162696b4bf108d3637') + version('3.1.3', sha256='9e02d79d715522e03b61c313c7278fcf80860816718587819318b8ad9c3fd0ce') + version('3.1.2', sha256='661e14f9dc904f3f1b034464ddaa5fd4b8472f8f5d1ea10a1148af85591b7ee9') + version('3.1.1', sha256='76d93aff749d6029f81dcf1fb3fd6abe10c9b48d376f3a03a4f41c5197c95c99') + version('3.0.8', sha256='022f0691d920b8aee3ee49d7af0f69b7ef80fc3c849a8e0281d5bc27db7a24ea') + version('3.0.7', sha256='6c26850cd5dedcf5dad40977ac7f2ee990a3667f6959a1e05e22959bdf537961') + version('3.0.6', sha256='046d63f10f755e2160dc56ef681e5f5ad3862a57c1955fd82e0ce036b69471b6') + version('3.0.5', sha256='19aad5d55fa315602d6e836a858a3802f1608f9d824afba05fa12a58a1b1e656') diff --git a/var/spack/repos/builtin/packages/libmonitor/package.py b/var/spack/repos/builtin/packages/libmonitor/package.py index 5a199ee333..e396d0c80b 100644 --- a/var/spack/repos/builtin/packages/libmonitor/package.py +++ b/var/spack/repos/builtin/packages/libmonitor/package.py @@ -24,9 +24,6 @@ class Libmonitor(AutotoolsPackage): variant('hpctoolkit', default=False, description='Configure for HPCToolkit') - variant('bgq', default=False, - description='Configure for Blue Gene/Q') - # Configure for Krell and OpenSpeedshop. variant('krellpatch', default=False, description="Build with openspeedshop based patch.") @@ -58,21 +55,4 @@ class Libmonitor(AutotoolsPackage): if '+hpctoolkit' in self.spec: args.append('--enable-client-signals=%s' % self.signals) - # TODO: Spack has trouble finding cross-compilers; the +bgq variant - # manually specifies the appropriate compiler to build for BGQ (by - # setting that here, Spack's choice of CC is overridden). - # If the user manually defines an entry in compilers.yaml, the bgq - # variant should not be required if the user specifies the bgq - # architecture for the libmonitor package. See #8860 - # TODO: users want to build this for the backend and dependents for the - # frontend. Spack ought to make that easy by finding the appropriate - # compiler for each if the root and libmonitor are designated to build - # on the frontend and backend, respectively. As of now though, there - # is an issue with compiler concretization such that spack will attempt - # to assign the compiler chosen for libmonitor to the root (unless the - # user specifies the compiler for each in addition to the arch). - # See #8859 - if '+bgq' in self.spec: - args.append('CC=powerpc64-bgq-linux-gcc') - return args diff --git a/var/spack/repos/builtin/packages/libpciaccess/package.py b/var/spack/repos/builtin/packages/libpciaccess/package.py index 4f1337db76..b79e5e9ee7 100644 --- a/var/spack/repos/builtin/packages/libpciaccess/package.py +++ b/var/spack/repos/builtin/packages/libpciaccess/package.py @@ -12,6 +12,7 @@ class Libpciaccess(AutotoolsPackage, XorgPackage): homepage = "http://cgit.freedesktop.org/xorg/lib/libpciaccess/" xorg_mirror_path = "lib/libpciaccess-0.13.5.tar.gz" + version('0.16', sha256='84413553994aef0070cf420050aa5c0a51b1956b404920e21b81e96db6a61a27') version('0.13.5', sha256='fe26ec788732b4ef60b550f2d3fa51c605d27f646e18ecec878f061807a3526e') version('0.13.4', sha256='74d92bda448e6fdb64fee4e0091255f48d625d07146a121653022ed3a0ca1f2f') diff --git a/var/spack/repos/builtin/packages/librsb/package.py b/var/spack/repos/builtin/packages/librsb/package.py index 2a292b9479..58f74af62f 100644 --- a/var/spack/repos/builtin/packages/librsb/package.py +++ b/var/spack/repos/builtin/packages/librsb/package.py @@ -11,9 +11,10 @@ class Librsb(AutotoolsPackage): library for the Recursive Sparse Blocks format""" homepage = "http://librsb.sourceforge.net/" - url = "http://download.sourceforge.net/librsb/librsb-1.2.0.8.tar.gz" + url = "http://download.sourceforge.net/librsb/librsb-1.2.0.9.tar.gz" list_url = "https://sourceforge.net/projects/librsb/files/" + version('1.2.0.9', 'f421f5d572461601120933e3c1cfee2ca69e6ecc92cbb11baa4e86bdedd3d9fa') version('1.2.0.8', '8bebd19a1866d80ade13eabfdd0f07ae7e8a485c0b975b5d15f531ac204d80cb') depends_on('zlib') diff --git a/var/spack/repos/builtin/packages/libtirpc/package.py b/var/spack/repos/builtin/packages/libtirpc/package.py index f38e8fa8d6..4b6647a50f 100644 --- a/var/spack/repos/builtin/packages/libtirpc/package.py +++ b/var/spack/repos/builtin/packages/libtirpc/package.py @@ -16,11 +16,10 @@ class Libtirpc(AutotoolsPackage): version('1.2.6', sha256='4278e9a5181d5af9cd7885322fdecebc444f9a3da87c526e7d47f7a12a37d1cc') version('1.1.4', sha256='2ca529f02292e10c158562295a1ffd95d2ce8af97820e3534fe1b0e3aec7561d') + depends_on('krb5') + provides('rpc') # FIXME: build error on macOS # auth_none.c:81:9: error: unknown type name 'mutex_t' conflicts('platform=darwin', msg='Does not build on macOS') - - def configure_args(self): - return ['--disable-gssapi'] diff --git a/var/spack/repos/builtin/packages/libtool/package.py b/var/spack/repos/builtin/packages/libtool/package.py index decc4b114e..60a922c881 100644 --- a/var/spack/repos/builtin/packages/libtool/package.py +++ b/var/spack/repos/builtin/packages/libtool/package.py @@ -3,7 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * +import os +import re class Libtool(AutotoolsPackage, GNUMirrorPackage): @@ -30,6 +31,14 @@ class Libtool(AutotoolsPackage, GNUMirrorPackage): build_directory = 'spack-build' + executables = ['^g?libtool(ize)?$'] + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('--version', output=str, error=os.devnull) + match = re.search(r'\(GNU libtool\)\s+(\S+)', output) + return match.group(1) if match else None + @when('@2.4.2,develop') def autoreconf(self, spec, prefix): Executable('./bootstrap')() diff --git a/var/spack/repos/builtin/packages/libtree/package.py b/var/spack/repos/builtin/packages/libtree/package.py index 10ca8db31d..e44a4a8661 100644 --- a/var/spack/repos/builtin/packages/libtree/package.py +++ b/var/spack/repos/builtin/packages/libtree/package.py @@ -15,9 +15,9 @@ class Libtree(CMakePackage): maintainers = ['haampie'] - version('1.2.0', sha256='4316a52aed7c8d2f7d2736c935bbda952204be92e56948110a143283764c427c') - version('1.1.4', sha256='cfafb24c8f5e0d356c82777c338d58730ca6f3cb76dfe8a6857ee3ad65bf8be7') - version('1.1.3', sha256='7baf5aaecd3a076bf1e7a1aa86979e7b841ab3f678ca8ac0e2a22bbbccf0dd06') + version('1.2.0', sha256='3e74655f22b1dcc19e8a1b9e7796b8ad44bc37f29e9a99134119e8521e28be97') + version('1.1.4', sha256='38648f67c8fa72c3a4a3af2bb254b5fd6989c0f1362387ab298176db5cbbcc4e') + version('1.1.3', sha256='4c681d7b67ef3d62f95450fb7eb84e33ff10a3b9db1f7e195b965b2c3c58226b') version('1.1.2', sha256='31641c6bf6c2980ffa7b4c57392460434f97ba66fe51fe6346867430b33a0374') version('1.1.1', sha256='3e8543145a40a94e9e2ce9fed003d2bf68294e1fce9607028a286bc132e17dc4') version('1.1.0', sha256='6cf36fb9a4c8c3af01855527d4931110732bb2d1c19be9334c689f1fd1c78536') diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index dcabc86ec5..69f34f7504 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -25,6 +25,9 @@ class Libunwind(AutotoolsPackage): version('1.2.1', sha256='3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb') version('1.1', sha256='9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a') + variant('pic', default=False, + description='Compile with position independent code.') + variant('xz', default=False, description='Support xz (lzma) compressed symbol tables.') @@ -48,12 +51,15 @@ class Libunwind(AutotoolsPackage): provides('unwind') def flag_handler(self, name, flags): - wrapper_flags = None + wrapper_flags = [] if name == 'cflags': # https://github.com/libunwind/libunwind/pull/166 if self.spec.satisfies('@:1.4 %gcc@10:'): - wrapper_flags = ['-fcommon'] + wrapper_flags.append('-fcommon') + + if '+pic' in self.spec: + wrapper_flags.append(self.compiler.cc_pic_flag) return (wrapper_flags, None, flags) diff --git a/var/spack/repos/builtin/packages/libxc/0001-Bugfix-avoid-implicit-pointer-cast-to-make-libxc-com.patch b/var/spack/repos/builtin/packages/libxc/0001-Bugfix-avoid-implicit-pointer-cast-to-make-libxc-com.patch new file mode 100644 index 0000000000..366f680168 --- /dev/null +++ b/var/spack/repos/builtin/packages/libxc/0001-Bugfix-avoid-implicit-pointer-cast-to-make-libxc-com.patch @@ -0,0 +1,26 @@ +From 205a08a30ee0d057d173f9eaa6fc6414f6960c22 Mon Sep 17 00:00:00 2001 +From: Xavier Andrade <xavier@tddft.org> +Date: Wed, 27 May 2020 15:42:32 -0700 +Subject: [PATCH] Bugfix: avoid implicit pointer cast to make libxc compile + with a C++ compiler. + +--- + src/functionals.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/functionals.c b/src/functionals.c +index 3f668292..293f7f9b 100644 +--- a/src/functionals.c ++++ b/src/functionals.c +@@ -324,7 +324,7 @@ xc_func_set_ext_params_name(xc_func_type *p, const char *name, double par) + + assert(p != NULL && p->info->ext_params.n > 0); + +- ext_params = libxc_malloc(p->info->ext_params.n*sizeof(double)); ++ ext_params = (double *) libxc_malloc(p->info->ext_params.n*sizeof(double)); + for(ii=0; ii<p->info->ext_params.n; ii++){ + if(strcmp(p->info->ext_params.names[ii], name) == 0) + ext_params[ii] = par; +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/libxc/0002-Mark-xc_erfcx-a-GPU_FUNCTION.patch b/var/spack/repos/builtin/packages/libxc/0002-Mark-xc_erfcx-a-GPU_FUNCTION.patch new file mode 100644 index 0000000000..a4e4f104a3 --- /dev/null +++ b/var/spack/repos/builtin/packages/libxc/0002-Mark-xc_erfcx-a-GPU_FUNCTION.patch @@ -0,0 +1,33 @@ +From 11b90a0a477925f19dfeb7e1f672058f25d83387 Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels <harmenstoppels@gmail.com> +Date: Fri, 31 Jul 2020 13:54:39 +0200 +Subject: [PATCH] Mark xc_erfcx a GPU_FUNCTION + +--- + src/faddeeva.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/faddeeva.c b/src/faddeeva.c +index ceec4736..03484713 100644 +--- a/src/faddeeva.c ++++ b/src/faddeeva.c +@@ -29,6 +29,8 @@ + + #include "config.h" + ++#include "util.h" ++ + #include <math.h> + + /* erfcx(x) = exp(x^2) erfc(x) function, for real x, written by +@@ -477,6 +479,7 @@ return 0.97771701335885035464e0 + (0.22000938572830479551e-1 + (0.27951610702682 + return 1.0; + } + ++GPU_FUNCTION + double xc_erfcx(double x) + { + if (x >= 0) { +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index 6803488e48..61597ebaa0 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -6,19 +6,29 @@ from spack import * -class Libxc(AutotoolsPackage): +class Libxc(AutotoolsPackage, CudaPackage): """Libxc is a library of exchange-correlation functionals for density-functional theory.""" homepage = "https://tddft.org/programs/libxc/" url = "https://www.tddft.org/programs/libxc/down.php?file=2.2.2/libxc-2.2.2.tar.gz" + version('5.0.0', sha256='1cdc57930f7b57da4eb9b2c55a50ba1c2c385936ddaf5582fee830994461a892') + version('4.3.4', sha256='a8ee37ddc5079339854bd313272856c9d41a27802472ee9ae44b58ee9a298337') version('4.3.2', sha256='bc159aea2537521998c7fb1199789e1be71e04c4b7758d58282622e347603a6f') version('4.2.3', sha256='02e49e9ba7d21d18df17e9e57eae861e6ce05e65e966e1e832475aa09e344256') version('3.0.0', sha256='5542b99042c09b2925f2e3700d769cda4fb411b476d446c833ea28c6bfa8792a') version('2.2.2', sha256='6ca1d0bb5fdc341d59960707bc67f23ad54de8a6018e19e02eee2b16ea7cc642') version('2.2.1', sha256='ade61c1fa4ed238edd56408fd8ee6c2e305a3d5753e160017e2a71817c98fd00') + variant('shared', default=True, description='Build shared libraries') + + conflicts('+shared +cuda', msg='Only ~shared supported with +cuda') + conflicts('+cuda', when='@:4', msg='CUDA support only in libxc 5.0.0 and above') + + patch('0001-Bugfix-avoid-implicit-pointer-cast-to-make-libxc-com.patch', when='@5.0.0') + patch('0002-Mark-xc_erfcx-a-GPU_FUNCTION.patch', when='@5.0.0') + @property def libs(self): """Libxc can be queried for the following parameters: @@ -35,7 +45,8 @@ class Libxc(AutotoolsPackage): # Libxc installs both shared and static libraries. # If a client ask for static explicitly then return # the static libraries - shared = ('static' not in query_parameters) + shared = (self.spec.variants['shared'].value and + 'static' not in query_parameters) # Libxc has a fortran90 interface: give clients the # possibility to query for it @@ -81,8 +92,24 @@ class Libxc(AutotoolsPackage): env.append_flags('CFLAGS', optflags) env.append_flags('FCFLAGS', optflags) + if '+cuda' in self.spec: + nvcc = self.spec['cuda'].prefix.bin.nvcc + env.set('CCLD', '{0} -ccbin {1}'.format(nvcc, spack_cc)) + env.set('CC', '{0} -x cu -ccbin {1}'.format(nvcc, spack_cc)) + + cuda_arch = self.spec.variants['cuda_arch'].value[0] + + if cuda_arch != 'none': + env.append_flags('CFLAGS', '-arch=sm_{0}'.format(cuda_arch)) + def configure_args(self): - args = ['--enable-shared'] + spec = self.spec + + args = [ + '--enable-shared' if '+shared' in spec else '--disable-shared', + '--enable-cuda' if '+cuda' in spec else '--disable-cuda' + ] + return args def check(self): diff --git a/var/spack/repos/builtin/packages/libxscrnsaver/package.py b/var/spack/repos/builtin/packages/libxscrnsaver/package.py index f00dad3f91..077e74e9a7 100644 --- a/var/spack/repos/builtin/packages/libxscrnsaver/package.py +++ b/var/spack/repos/builtin/packages/libxscrnsaver/package.py @@ -18,6 +18,6 @@ class Libxscrnsaver(AutotoolsPackage, XorgPackage): depends_on('libxext') depends_on('xextproto', type='build') - depends_on('scrnsaverproto@1.2:', type='build') + depends_on('scrnsaverproto@1.2:') depends_on('pkgconfig', type='build') depends_on('util-macros', type='build') diff --git a/var/spack/repos/builtin/packages/libyogrt/package.py b/var/spack/repos/builtin/packages/libyogrt/package.py index 3590193516..a1ed17b3f1 100644 --- a/var/spack/repos/builtin/packages/libyogrt/package.py +++ b/var/spack/repos/builtin/packages/libyogrt/package.py @@ -38,6 +38,9 @@ class Libyogrt(AutotoolsPackage): conflicts('scheduler=lsf', when='@:1.22') + variant('static', default='False', + description="build static library") + def url_for_version(self, version): if version < Version(1.21): return "https://github.com/LLNL/libyogrt/archive/%s.tar.gz" % version @@ -51,4 +54,7 @@ class Libyogrt(AutotoolsPackage): if sched != "system": args.append('--with-%s=%s' % (sched, self.spec[sched].prefix)) + if '+static' in self.spec: + args.append('--enable-static=yes') + return args diff --git a/var/spack/repos/builtin/packages/ligra/package.py b/var/spack/repos/builtin/packages/ligra/package.py new file mode 100644 index 0000000000..8df4bbabae --- /dev/null +++ b/var/spack/repos/builtin/packages/ligra/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 Ligra(MakefilePackage): + """A Lightweight Graph Processing Framework for Shared Memory""" + + homepage = "http://jshun.github.io/ligra/" + url = "https://github.com/jshun/ligra/archive/v.1.5.tar.gz" + + version('1.5', sha256='74113a5a3c19a0e319a5b9ebefc8a67c5d18d4d2a9670363092a966f4163f6b7') + version('1.4', sha256='bb70a1428c71cf2f7e1512cdedcd8330c754f5a2c8309ab9d9666591cff6a4e1') + version('1.3', sha256='df848038734bb9724d6c9bd95595c91eb6b07027642be93bff161f020ff257e4') + version('1.2', sha256='ec8778b0762772fc78437243ccaee72066d67a310bc352d6665dd2de520c04cc') + version('1.1', sha256='a7311b96fabc286a8f1250d8a6e2d1b1e4545c720fa6bb4acf7ed31211fcc99a') + version('1.0', sha256='fb39ae0a3eddb26f37b8cc0a543648575a50bcc488cecd4a5f1beaaf2458736c') + + variant('openmp', default=True, description="Build with OpenMP") + variant('mkl', default=False, description="Build with Intel MKL") + # TODO: Add cilk variant when spack has a cilk plus package created. + + depends_on('mkl', when='+mkl') + + def setup_build_environment(self, env): + if '+openmp' in self.spec: + env.set('OPENMP', '1') + # when +mkl, MKLROOT will be defined by intel-mkl package, + # triggering a build with mkl support + + def setup_run_environment(self, env): + env.prepend_path('PATH', self.prefix.apps) + env.prepend_path('PATH', self.prefix.utils) + + def build(self, spec, prefix): + make('-C', 'apps') + make('-C', 'utils') + + def install(self, spec, prefix): + install_tree('.', prefix) + install_tree('ligra', prefix.include) diff --git a/var/spack/repos/builtin/packages/likwid/package.py b/var/spack/repos/builtin/packages/likwid/package.py index a104b67003..0bbf69a89b 100644 --- a/var/spack/repos/builtin/packages/likwid/package.py +++ b/var/spack/repos/builtin/packages/likwid/package.py @@ -32,6 +32,8 @@ class Likwid(Package): patch('https://github.com/RRZE-HPC/likwid/commit/e0332ace8fe8ca7dcd4b4477a25e37944f173a5c.patch', sha256='c3b8f939a46b425665577ce764d4fba080a23cab5999c53db71655fd54d7e0b1', when='@5.0.1') patch('https://github.com/RRZE-HPC/likwid/commit/d2d0ef333b5e0997d7c80fc6ac1a473b5e47d084.patch', sha256='636cbf40669261fdb36379d67253be2b731cfa7b6d610d232767d72fbdf08bc0', when='@4.3.4') + variant('fortran', default=True, description='with fortran interface') + # NOTE: There is no way to use an externally provided hwloc with Likwid. # The reason is that the internal hwloc is patched to contain extra # functionality and functions are prefixed with "likwid_". @@ -96,6 +98,20 @@ class Likwid(Package): 'BUILDDAEMON = false', 'config.mk') + if '+fortran' in self.spec: + filter_file('^FORTRAN_INTERFACE .*', + 'FORTRAN_INTERFACE = true', + 'config.mk') + if self.compiler.name == 'gcc': + filter_file('ifort', 'gfortran', + join_path('make', 'include_GCC.mk')) + filter_file('-module', '-I', join_path('make', + 'include_GCC.mk')) + else: + filter_file('^FORTRAN_INTERFACE .*', + 'FORTRAN_INTERFACE = false', + 'config.mk') + if spec.satisfies('^lua'): filter_file('^#LUA_INCLUDE_DIR.*', 'LUA_INCLUDE_DIR = {0}'.format( diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/fix-system-zlib-ncurses.patch b/var/spack/repos/builtin/packages/llvm-amdgpu/fix-system-zlib-ncurses.patch new file mode 100644 index 0000000000..64d429a7e9 --- /dev/null +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/fix-system-zlib-ncurses.patch @@ -0,0 +1,60 @@ +From 0f5e8e4368199ab993470dc4e7df5d91b806c557 Mon Sep 17 00:00:00 2001 +From: Harmen Stoppels <harmenstoppels@gmail.com> +Date: Tue, 11 Aug 2020 15:06:24 +0200 +Subject: [PATCH] Use find_library for zlib and ncurses + +find_library makes it easier to use a non-system version of zlib and +ncurses, since it respects *_ROOT and CMAKE_PREFIX_PATH. +--- + llvm/cmake/config-ix.cmake | 28 ++++++++++------------------ + 1 file changed, 10 insertions(+), 18 deletions(-) + +diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake +index 612ce5bdbcb..e748e5ef8c1 100644 +--- a/llvm/cmake/config-ix.cmake ++++ b/llvm/cmake/config-ix.cmake +@@ -120,15 +120,11 @@ endif() + if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*") + set(HAVE_LIBZ 0) + if(LLVM_ENABLE_ZLIB) +- foreach(library z zlib_static zlib) +- string(TOUPPER ${library} library_suffix) +- check_library_exists(${library} compress2 "" HAVE_LIBZ_${library_suffix}) +- if(HAVE_LIBZ_${library_suffix}) +- set(HAVE_LIBZ 1) +- set(ZLIB_LIBRARIES "${library}") +- break() +- endif() +- endforeach() ++ find_library(FIND_ZLIB NAMES z zlib_static zlib) ++ if(FIND_ZLIB) ++ set(HAVE_LIBZ 1) ++ set(ZLIB_LIBRARIES "${FIND_ZLIB}") ++ endif() + endif() + + # Don't look for these libraries on Windows. +@@ -141,15 +137,11 @@ if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*") + endif() + if(LLVM_ENABLE_TERMINFO) + set(HAVE_TERMINFO 0) +- foreach(library terminfo tinfo curses ncurses ncursesw) +- string(TOUPPER ${library} library_suffix) +- check_library_exists(${library} setupterm "" HAVE_TERMINFO_${library_suffix}) +- if(HAVE_TERMINFO_${library_suffix}) +- set(HAVE_TERMINFO 1) +- set(TERMINFO_LIBS "${library}") +- break() +- endif() +- endforeach() ++ find_library(FIND_TERMINFO NAMES terminfo tinfo curses ncurses ncursesw) ++ if(FIND_TERMINFO) ++ set(HAVE_TERMINFO 1) ++ set(TERMINFO_LIBS "${FIND_TERMINFO}") ++ endif() + else() + set(HAVE_TERMINFO 0) + endif() +-- +2.25.1 + diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py new file mode 100644 index 0000000000..acd384441e --- /dev/null +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/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 * + + +class LlvmAmdgpu(CMakePackage): + """Toolkit for the construction of highly optimized compilers, + optimizers, and run-time environments.""" + + homepage = "https://github.com/RadeonOpenCompute/llvm-project" + url = "https://github.com/RadeonOpenCompute/llvm-project/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='4878fa85473b24d88edcc89938441edc85d2e8a785e567b7bd7ce274ecc2fd9c') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + depends_on('cmake@3:', type='build') + depends_on('python', type='build') + depends_on('z3', type='link') + depends_on('zlib', type='link') + depends_on('ncurses+termlib', type='link') + + patch('fix-system-zlib-ncurses.patch') + + root_cmakelists_dir = 'llvm' + + install_targets = ['clang-tidy', 'install'] + + def cmake_args(self): + args = [ + '-DLLVM_ENABLE_PROJECTS=clang;lld;clang-tools-extra;compiler-rt', + '-DLLVM_ENABLE_ASSERTIONS=1' + ] + + if self.compiler.name == "gcc": + gcc_prefix = ancestor(self.compiler.cc, 2) + args.append("-DGCC_INSTALL_PREFIX=" + gcc_prefix) + + return args diff --git a/var/spack/repos/builtin/packages/llvm-flang/package.py b/var/spack/repos/builtin/packages/llvm-flang/package.py index 99948fd76f..d5b9370169 100644 --- a/var/spack/repos/builtin/packages/llvm-flang/package.py +++ b/var/spack/repos/builtin/packages/llvm-flang/package.py @@ -195,6 +195,11 @@ class LlvmFlang(CMakePackage, CudaPackage): args.append('-DLIBOMP_FORTRAN_MODULES=ON') args.append('-DLIBOMP_ENABLE_SHARED=TRUE') + # Make sure llvm-flang can find GCC's libstdc++ + if self.compiler.name == "gcc": + gcc_prefix = ancestor(self.compiler.cc, 2) + args.append('-DGCC_INSTALL_PREFIX=' + gcc_prefix) + # used by libomptarget for NVidia gpu if '+cuda' in spec: args.append('-DOPENMP_ENABLE_LIBOMPTARGET=ON') diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 53ce3e12c2..95ffcc51fd 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -2,10 +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 os.path +import re import sys +import llnl.util.tty as tty +import spack.util.executable + class Llvm(CMakePackage, CudaPackage): """The LLVM Project is a collection of modular and reusable compiler and @@ -25,6 +28,7 @@ class Llvm(CMakePackage, CudaPackage): # fmt: off version('master', branch='master') + version('10.0.1', sha256='c7ccb735c37b4ec470f66a6c35fbae4f029c0f88038f6977180b1a8ddc255637') version('10.0.0', sha256='b81c96d2f8f40dc61b14a167513d87c0d813aae0251e06e11ae8a4384ca15451') version('9.0.1', sha256='be7b034641a5fda51ffca7f5d840b1a768737779f75f7c4fd18fe2d37820289a') version('9.0.0', sha256='7807fac25330e24e9955ca46cd855dd34bbc9cc4fdba8322366206654d1036f2') @@ -135,9 +139,6 @@ class Llvm(CMakePackage, CudaPackage): 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("hwloc") @@ -159,7 +160,6 @@ class Llvm(CMakePackage, CudaPackage): 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") @@ -180,7 +180,6 @@ class Llvm(CMakePackage, CudaPackage): # code signing is only necessary on macOS", conflicts('+code_signing', when='platform=linux') - conflicts('+code_signing', when='platform=bgq') conflicts('+code_signing', when='platform=cray') conflicts( @@ -208,6 +207,108 @@ class Llvm(CMakePackage, CudaPackage): # https://bugs.llvm.org/show_bug.cgi?id=39696 patch("thread-p9.patch", when="@develop+libcxx") + # The functions and attributes below implement external package + # detection for LLVM. See: + # + # https://spack.readthedocs.io/en/latest/packaging_guide.html#making-a-package-discoverable-with-spack-external-find + executables = ['clang', 'ld.lld', 'lldb'] + + @classmethod + def filter_detected_exes(cls, prefix, exes_in_prefix): + result = [] + for exe in exes_in_prefix: + # Executables like lldb-vscode-X are daemon listening + # on some port and would hang Spack during detection. + # clang-cl and clang-cpp are dev tools that we don't + # need to test + if any(x in exe for x in ('vscode', 'cpp', '-cl', '-gpu')): + continue + result.append(exe) + return result + + @classmethod + def determine_version(cls, exe): + version_regex = re.compile( + # Normal clang compiler versions are left as-is + r'clang version ([^ )]+)-svn[~.\w\d-]*|' + # Don't include hyphenated patch numbers in the version + # (see https://github.com/spack/spack/pull/14365 for details) + r'clang version ([^ )]+?)-[~.\w\d-]*|' + r'clang version ([^ )]+)|' + # LLDB + r'lldb version ([^ )\n]+)|' + # LLD + r'LLD ([^ )\n]+) \(compatible with GNU linkers\)' + ) + try: + compiler = Executable(exe) + output = compiler('--version', output=str, error=str) + if 'Apple' in output: + return None + match = version_regex.search(output) + if match: + return match.group(match.lastindex) + except spack.util.executable.ProcessError: + pass + except Exception as e: + tty.debug(e) + + return None + + @classmethod + def determine_variants(cls, exes, version_str): + variants, compilers = ['+clang'], {} + lld_found, lldb_found = False, False + for exe in exes: + if 'clang++' in exe: + compilers['cxx'] = exe + elif 'clang' in exe: + compilers['c'] = exe + elif 'ld.lld' in exe: + lld_found = True + compilers['ld'] = exe + elif 'lldb' in exe: + lldb_found = True + compilers['lldb'] = exe + + variants.append('+lld' if lld_found else '~lld') + variants.append('+lldb' if lldb_found else '~lldb') + + return ''.join(variants), {'compilers': compilers} + + @classmethod + def validate_detected_spec(cls, spec, extra_attributes): + # For LLVM 'compilers' is a mandatory attribute + msg = ('the extra attribute "compilers" must be set for ' + 'the detected spec "{0}"'.format(spec)) + assert 'compilers' in extra_attributes, msg + compilers = extra_attributes['compilers'] + for key in ('c', 'cxx'): + msg = '{0} compiler not found for {1}' + assert key in compilers, msg.format(key, spec) + + @property + def cc(self): + msg = "cannot retrieve C compiler [spec is not concrete]" + assert self.spec.concrete, msg + if self.spec.external: + return self.spec.extra_attributes['compilers'].get('c', None) + result = None + if '+clang' in self.spec: + result = os.path.join(self.spec.prefix.bin, 'clang') + return result + + @property + def cxx(self): + msg = "cannot retrieve C++ compiler [spec is not concrete]" + assert self.spec.concrete, msg + if self.spec.external: + return self.spec.extra_attributes['compilers'].get('cxx', None) + result = None + if '+clang' in self.spec: + result = os.path.join(self.spec.prefix.bin, 'clang++') + return result + @run_before('cmake') def codesign_check(self): if self.spec.satisfies("+code_signing"): diff --git a/var/spack/repos/builtin/packages/lmbench/fix_results_path_for_aarch64.patch b/var/spack/repos/builtin/packages/lmbench/fix_results_path_for_aarch64.patch new file mode 100644 index 0000000000..dc0f7026a0 --- /dev/null +++ b/var/spack/repos/builtin/packages/lmbench/fix_results_path_for_aarch64.patch @@ -0,0 +1,13 @@ +diff --git a/scripts/results b/scripts/results +index cd07c15..282ed19 100755 +--- a/scripts/results ++++ b/scripts/results +@@ -27,7 +27,7 @@ cd ../bin/$OS + PATH=.:${PATH}; export PATH + export SYNC_MAX + export OUTPUT +-lmbench $CONFIG 2>../${RESULTS} ++lmbench $CONFIG 2>${RESULTS} + + if [ X$MAIL = Xyes ] + then echo Mailing results diff --git a/var/spack/repos/builtin/packages/lmbench/package.py b/var/spack/repos/builtin/packages/lmbench/package.py index e38ca29e24..e0b5fe3620 100644 --- a/var/spack/repos/builtin/packages/lmbench/package.py +++ b/var/spack/repos/builtin/packages/lmbench/package.py @@ -19,6 +19,8 @@ class Lmbench(MakefilePackage): depends_on('libtirpc') + patch('fix_results_path_for_aarch64.patch', sha256='2af57abc9058c56b6dd0697bb01a98902230bef92b117017e318faba148eef60', when='target=aarch64:') + def setup_build_environment(self, env): env.prepend_path('CPATH', self.spec['libtirpc'].prefix.include.tirpc) env.append_flags('LDFLAGS', '-ltirpc') diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py index 2f12d47587..f211405179 100644 --- a/var/spack/repos/builtin/packages/lmod/package.py +++ b/var/spack/repos/builtin/packages/lmod/package.py @@ -46,8 +46,8 @@ 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') + variant('auto_swap', default=True, description='Auto swapping of compilers, etc.') + variant('redirect', default=False, description='Redirect messages to stdout (instead of stderr)') 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') diff --git a/var/spack/repos/builtin/packages/looptools/package.py b/var/spack/repos/builtin/packages/looptools/package.py new file mode 100644 index 0000000000..7d31173dcf --- /dev/null +++ b/var/spack/repos/builtin/packages/looptools/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 Looptools(AutotoolsPackage): + """LoopTools is a package for evaluation of scalar and tensor one-loop + integrals based on the FF package by G.J. van Oldenborgh. It + features an easy Fortran, C++, and Mathematica interface to the + scalar one-loop functions of FF and in addition provides + the 2-, 3-, and 4-point tensor coefficient functions. """ + + homepage = "http://www.feynarts.de/looptools/" + url = "http://www.feynarts.de/looptools/LoopTools-2.15.tar.gz" + + version('2.15', sha256='a065ffdc4fe6882aa3bb926134ba8ec875d6c0a633c3d4aa5f70db26542713f2') + version('2.8', sha256='2395518d0eac9b0883a2c249b9a5ba80df443929c520c45e60f5a4284166eb42') + + def configure_args(self): + args = ["FFLAGS=" + self.compiler.f77_pic_flag, + "CFLAGS=" + self.compiler.cc_pic_flag] + return args diff --git a/var/spack/repos/builtin/packages/ltrace/package.py b/var/spack/repos/builtin/packages/ltrace/package.py index 01f0e4fd86..9e0b72804f 100644 --- a/var/spack/repos/builtin/packages/ltrace/package.py +++ b/var/spack/repos/builtin/packages/ltrace/package.py @@ -17,3 +17,8 @@ class Ltrace(AutotoolsPackage): version('0.7.3', sha256='0e6f8c077471b544c06def7192d983861ad2f8688dd5504beae62f0c5f5b9503') conflicts('platform=darwin', msg='ltrace runs only on Linux.') + + def configure_args(self): + # Disable -Werror since some functions used by ltrace + # have been deprecated in recent version of glibc + return ['--disable-werror'] diff --git a/var/spack/repos/builtin/packages/lustre/package.py b/var/spack/repos/builtin/packages/lustre/package.py new file mode 100644 index 0000000000..2ce6a1ad55 --- /dev/null +++ b/var/spack/repos/builtin/packages/lustre/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 Lustre(Package): + """Lustre is a type of parallel distributed file system, + generally used for large-scale cluster computing.""" + + homepage = 'http://lustre.org/' + has_code = False + + version('2.12') + + # Lustre is filesystem and needs to be installed on system. + # To have it as external package in SPACK, follow below: + # config file packages.yaml needs to be adjusted: + # lustre: + # version: [2.12] + # paths: + # lustre@2.12: /usr (Usual Lustre library path) + # buildable: False + + def install(self, spec, prefix): + raise InstallError( + self.spec.format('{name} is not installable, you need to specify ' + 'it as an external package in packages.yaml')) diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index 7b649656d0..daf89aed16 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -36,6 +36,9 @@ class M4(AutotoolsPackage, GNUMirrorPackage): spec = self.spec args = ['--enable-c++'] + if spec.satisfies('%cce@9:'): + args.append('LDFLAGS=-rtlib=compiler-rt') + if spec.satisfies('%clang') and not spec.satisfies('platform=darwin'): args.append('LDFLAGS=-rtlib=compiler-rt') diff --git a/var/spack/repos/builtin/packages/magics/package.py b/var/spack/repos/builtin/packages/magics/package.py index c9c331eeb5..902ac0db13 100644 --- a/var/spack/repos/builtin/packages/magics/package.py +++ b/var/spack/repos/builtin/packages/magics/package.py @@ -19,7 +19,12 @@ class Magics(CMakePackage): # The policy on which minor releases remain available and which get deleted # after a newer version becomes available is unclear. - version('4.2.4', sha256='920c7dbb1aaabe65a31c6c18010829210f8b2f8d614b6c405dc5a4530e346f07') + version('4.4.0', sha256='544058cd334f3e28a16d00ea7811e13cdf282f9c1ebec2ad7868171d925abd24') + version('4.3.3', sha256='27d3de71cf41f3d557fd85dabaea2baaab34c4c6422a5b5b15071a6a53387601') + version('4.3.1', sha256='b1995e2f5bf24943715446d1302cc5d7de4cacfe4cee7c3cfd1037ac183cd181') + version('4.3.0', sha256='f6c0d32c243913e53320dd94ce8e1e6a64bd9a44af77d5ac32c062bc18355b8a') + version('4.2.6', sha256='9b34a375d9125ab6e8a715b970da2e479f96370bac6a5bb8a015a079ed9e027c') + version('4.2.4', sha256='920c7dbb1aaabe65a31c6c18010829210f8b2f8d614b6c405dc5a4530e346f07') version('4.1.0', sha256='da626c31f53716990754dd72ab7b2f3902a8ad924b23ef3309bd14900d170541') version('2.34.3', sha256='38487562e83c0470f94d9c7fb9418cbadf92f1e643033237baba2abdc77e6238') version('2.34.1', sha256='8df27f8f262ebc32a61f8696df15a7b4a6e4203b2a8e53fe7aa13caa1c4e3fa4') @@ -59,7 +64,10 @@ class Magics(CMakePackage): depends_on('perl-xml-parser', type='build') # Non-optional dependencies - depends_on('proj@:5') + # change of proj4 api starting from version 4.3.0 + # https://github.com/OSGeo/PROJ/wiki/proj.h-adoption-status + depends_on('proj@:5', when='@:4.2.6') + depends_on('proj@6:', when='@4.3:') depends_on('boost') depends_on('expat') @@ -79,6 +87,10 @@ class Magics(CMakePackage): depends_on('eccodes', when='grib=eccodes') depends_on('grib-api', when='grib=grib-api') + # Even if netcdf is disabled and -DENABLE_NETCDF=OFF is set, building + # magics still requires legacy netcdf-cxx + depends_on('netcdf-cxx', when='@4.1.0:4.3.1') + # Optional dependencies depends_on('netcdf-cxx', when='+netcdf') depends_on('pango', when='+cairo') @@ -129,7 +141,8 @@ class Magics(CMakePackage): if self.spec.satisfies('@2.29.1:'): args.append('-DENABLE_ECCODES=OFF') - if '+netcdf' in self.spec: + # magics@4.2.4:4.3.1 cannot be built without netcdf + if '+netcdf' in self.spec or self.spec.satisfies('@4.1.0:4.3.1'): args.append('-DENABLE_NETCDF=ON') else: args.append('-DENABLE_NETCDF=OFF') diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index 16b7c777c1..ec2324290a 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -36,6 +36,9 @@ class Magma(CMakePackage, CudaPackage): depends_on('blas') depends_on('lapack') depends_on('cuda@8:', when='@2.5.1:') # See PR #14471 + depends_on('cuda@:10.99999') # incompatible with CUDA 11 + # The previous line would ideally include "when='@:2.5.3'", but this + # doesn't work due to a problem with the concretizer. conflicts('~cuda', msg='Magma requires cuda') conflicts('cuda_arch=none', diff --git a/var/spack/repos/builtin/packages/mapnik/package.py b/var/spack/repos/builtin/packages/mapnik/package.py index 2fc61f568d..880bd3bc13 100644 --- a/var/spack/repos/builtin/packages/mapnik/package.py +++ b/var/spack/repos/builtin/packages/mapnik/package.py @@ -15,11 +15,12 @@ class Mapnik(AutotoolsPackage): homepage = "https://mapnik.org/" url = "https://github.com/mapnik/mapnik/releases/download/v3.0.22/mapnik-v3.0.22.tar.bz2" + version('3.0.23', sha256='4b1352e01f7ce25ab099e586d7ae98e0b74145a3bf94dd365cb0a2bdab3b9dc2') version('3.0.22', sha256='930612ad9e604b6a29b9cea1bc1de85cf7cf2b2b8211f57ec8b6b94463128ab9') depends_on('python', type=('build', 'run')) - # Build fails with boost@1.70 - depends_on('boost@:1.69.0+regex+filesystem+system+icu+program_options cxxstd=11') + depends_on('boost@:1.72.0 +regex+filesystem+system+icu+program_options cxxstd=11', when='@3.0.23') + depends_on('boost@:1.69.0 +regex+filesystem+system+icu+program_options cxxstd=11', when='@3.0.22') depends_on('icu4c') depends_on('zlib') depends_on('freetype') diff --git a/var/spack/repos/builtin/packages/mariadb/package.py b/var/spack/repos/builtin/packages/mariadb/package.py index 11df1fc728..a16919192a 100644 --- a/var/spack/repos/builtin/packages/mariadb/package.py +++ b/var/spack/repos/builtin/packages/mariadb/package.py @@ -52,6 +52,7 @@ class Mariadb(CMakePackage): depends_on('msgpack-c') depends_on('openssl') depends_on('openssl@:1.0', when='@:10.1') + depends_on('krb5') conflicts('%gcc@9.1.0:', when='@:5.5') diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index bbe2bd0412..0d79e25af4 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -15,7 +15,9 @@ class Mbedtls(CMakePackage): homepage = "https://tls.mbed.org" url = "https://github.com/ARMmbed/mbedtls/archive/mbedtls-2.2.1.tar.gz" + maintainers = ['mwkrentel'] + version('2.16.7', sha256='4786b7d1676f5e4d248f3a7f2d28446876d64962634f060ff21b92c690cfbe86') version('2.16.1', sha256='daf0d40f3016c34eb42d1e4b3b52be047e976d566aba8668977723c829af72f3') version('2.7.10', sha256='42b19b30b86a798bdb69c5da2f8bbd7d72ffede9a35b888ab986a29480f9dc3e') version('2.3.0', sha256='1614ee70be99a18ca8298148308fb725aad4ad31c569438bb51655a4999b14f9') @@ -33,7 +35,8 @@ class Mbedtls(CMakePackage): variant('pic', default=False, description='Compile with position independent code.') - depends_on('cmake@2.6:', type='build') + depends_on('cmake@3.1.0:', type='build', when='@2.8.0:') + depends_on('cmake@2.6:', type='build', when='@:2.7.99') depends_on('perl', type='build') def flag_handler(self, name, flags): diff --git a/var/spack/repos/builtin/packages/mcutils/package.py b/var/spack/repos/builtin/packages/mcutils/package.py new file mode 100644 index 0000000000..3065f70fe0 --- /dev/null +++ b/var/spack/repos/builtin/packages/mcutils/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 Mcutils(MakefilePackage): + """A collection of routines for classification and manipulation of + particle physics simulated HepMC event records.""" + + homepage = "https://bitbucket.org/andybuckley/mcutils" + url = "https://bitbucket.org/andybuckley/mcutils/get/mcutils-1.3.4.tar.gz" + + version('1.3.4', sha256='0bf9795cc248871ab2b663d2eef647311eacaea4982997950096de68747e65a3') + version('1.3.3', sha256='bfb2f0e0e6de358928436f309f3f1b084d3d652073c440f262de878332116ecb') + version('1.3.2', sha256='e17d417e8d4f8d17a6879ea18dcd2cd76e161d37eae08b84893504d1b08f9708') + version('1.3.1', sha256='081263ee6844fccedad780e6a2fbaf1ad0073a6706bc4b34109050b72c2c4b27') + version('1.3.0', sha256='20a89ce536547dc8f56e7779a3ec8cfe9987edb1646009ecfc682ff1ddf0277b') + version('1.2.1', sha256='004325be41925d97e711ffe4311d9c8aa8e88873541bcc1a385d2e1ce1d17a96') + version('1.2.0', sha256='f9589d45bff06d8c8742d35d78d1ed570a0d181fd7ee5d6f97ab9e48f0ee32f4') + version('1.1.2', sha256='5a5781caf2d81c21f4b040a1d31975c354526bcf7c8c9067543f7303c8155844') + version('1.1.1', sha256='3e5c47d2264886613fc9423b020cf50dc7031a02b752da3a84f794c36ba7443a') + version('1.1.0', sha256='96fc2586430032ed4b378edb02150c5c9db405e1767dbf847ffe9ac043daf6e9') + version('1.0.3', sha256='b5bec5a4b2146b6987b351d632119c3b4c449c2ee53ae0ddc8cb1d3672907df5') + version('1.0.2', sha256='74e2c381f5f3719888b15a2e00075051bb2b84b3d73633d429818a77de66ca7c') + version('1.0.1', sha256='bb884a4cfb56b5139c08df0be554466e504e9c46096a858f904d659894a62131') + version('1.0.0', sha256='d08dea19fb42b1846e0a7134e2347648b037bf82b2d75086d018734bc2996b06') + + depends_on('heputils', when='@1.1.0:') + + def install(self, spec, prefix): + make('install', 'PREFIX={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/mesa/multiple-symbols_hash.patch b/var/spack/repos/builtin/packages/mesa/multiple-symbols_hash.patch new file mode 100644 index 0000000000..7c92326f37 --- /dev/null +++ b/var/spack/repos/builtin/packages/mesa/multiple-symbols_hash.patch @@ -0,0 +1,22 @@ +--- a/src/gallium/auxiliary/util/u_debug_stack.c 2019-11-07 17:57:36.000000000 -0700 ++++ b/src/gallium/auxiliary/util/u_debug_stack.c 2020-07-23 15:30:46.033145497 -0600 +@@ -46,7 +46,7 @@ + #include "os/os_thread.h" + #include "u_hash_table.h" + +-struct util_hash_table* symbols_hash; ++static struct util_hash_table* symbols_hash; + static mtx_t symbols_mutex = _MTX_INITIALIZER_NP; + + static unsigned hash_ptr(void* p) +--- a/src/gallium/auxiliary/util/u_debug_symbol.c 2019-11-07 17:58:53.000000000 -0700 ++++ b/src/gallium/auxiliary/util/u_debug_symbol.c 2020-07-23 15:31:06.400146072 -0600 +@@ -270,7 +270,7 @@ + debug_printf("\t%s\n", buf); + } + +-struct util_hash_table* symbols_hash; ++static struct util_hash_table* symbols_hash; + static mtx_t symbols_mutex = _MTX_INITIALIZER_NP; + + static unsigned hash_ptr(void* p) diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py index b277a03d19..953e5b0034 100644 --- a/var/spack/repos/builtin/packages/mesa/package.py +++ b/var/spack/repos/builtin/packages/mesa/package.py @@ -79,6 +79,9 @@ class Mesa(AutotoolsPackage): # Prevent an unnecessary xcb-dri dependency patch('autotools-x11-nodri.patch') + # Backport Mesa MR#6053 to prevent multiply-defined symbols + patch('multiple-symbols_hash.patch', when='@:20.1.4%gcc@10:') + def autoreconf(self, spec, prefix): which('autoreconf')('--force', '--verbose', '--install') diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py index 8ff3ddf32e..6d879ce67c 100644 --- a/var/spack/repos/builtin/packages/meson/package.py +++ b/var/spack/repos/builtin/packages/meson/package.py @@ -16,6 +16,7 @@ class Meson(PythonPackage): maintainers = ['michaelkuhn'] + version('0.55.0', sha256='9034c943c8cf4d734c0e18e5ba038dd762fcdcc614c45b41703305da8382e90c') version('0.54.3', sha256='c25caff342b5368bfe33fab6108f454fcf12e2f2cef70817205872ddef669e8b') version('0.54.2', sha256='85cafdc70ae7d1d9d506e7356b917c649c4df2077bd6a0382db37648aa4ecbdb') version('0.54.1', sha256='854e8b94ab36e5aece813d2b2aee8a639bd52201dfea50890722ac9128e2f59e') diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py index 3a4abab49b..1a90ef31b9 100644 --- a/var/spack/repos/builtin/packages/mfem/package.py +++ b/var/spack/repos/builtin/packages/mfem/package.py @@ -92,12 +92,6 @@ class Mfem(Package): # Can we make the default value for 'metis' to depend on the 'mpi' value? variant('metis', default=True, description='Enable METIS support') - # TODO: The 'hypre' variant is the same as 'mpi', we may want to remove it. - # For now, keep the 'hypre' variant while ignoring its setting. This - # is done to preserve compatibility with other packages that refer to - # it, e.g. xSDK. - variant('hypre', default=True, - description='Required for MPI parallelism') variant('openmp', default=False, description='Enable OpenMP parallelism') variant('cuda', default=False, description='Enable CUDA support') diff --git a/var/spack/repos/builtin/packages/minio/package.py b/var/spack/repos/builtin/packages/minio/package.py new file mode 100644 index 0000000000..4485f650e7 --- /dev/null +++ b/var/spack/repos/builtin/packages/minio/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 Minio(MakefilePackage): + """MinIO is a High Performance Object Storage released under Apache + License v2.0. It is API compatible with Amazon S3 cloud storage + service. Use MinIO to build high performance infrastructure for + machine learning, analytics and application data workloads.""" + + homepage = "https://min.io/" + url = "https://github.com/minio/minio/archive/RELEASE.2020-07-13T18-09-56Z.tar.gz" + + version('2020-07-13T18-09-56Z', sha256='147fca3930389162cc7306a0fa5cf478ee2deba4b31a9317f3d35e82aa58d41e') + version('2020-07-12T19-14-17Z', sha256='bb8ba5d93215ab37788171d8b9ce68e78d64e7b7c74aea508c15958158d85b03') + version('2020-07-02T00-15-09Z', sha256='4255c4d95a3e010f16a3f1e974768dc68509075403a97a9b9882f7d9e89fedc5') + + depends_on('go', type='build') + + def url_for_version(self, version): + return ("https://github.com/minio/minio/archive/RELEASE.{0}.tar.gz".format(version)) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('minio', prefix.bin) diff --git a/var/spack/repos/builtin/packages/mongodb-async-driver/package.py b/var/spack/repos/builtin/packages/mongodb-async-driver/package.py new file mode 100644 index 0000000000..77449297f4 --- /dev/null +++ b/var/spack/repos/builtin/packages/mongodb-async-driver/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 MongodbAsyncDriver(Package): + """The MongoDB Asynchronous Java Driver.""" + + homepage = "http://www.allanbank.com/mongodb-async-driver/" + url = "https://github.com/allanbank/mongodb-async-driver/archive/rel_2.0.1.tar.gz" + + version('2.0.1', sha256='87f22c16f3744a847eeb8276ed132bf235f025db0b7dee0d0f239d5cdcab720c') + version('2.0.0', sha256='8cffe4c960d42550be30c27d66f5de6df4edb5ee7a094c50519986dc5cbcf9b8') + + 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/mozjs/Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch b/var/spack/repos/builtin/packages/mozjs/Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch new file mode 100644 index 0000000000..bbd62276e1 --- /dev/null +++ b/var/spack/repos/builtin/packages/mozjs/Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch @@ -0,0 +1,20 @@ +From: Mike Hommey <mh@glandium.org> +Date: Fri, 18 Mar 2011 09:25:57 +0100 +Subject: Bug 638056 - Avoid "The cacheFlush support is missing on this + platform" error on exotic platforms + +--- + js/src/Makefile.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +--- a/js/src/Makefile.in ++++ b/js/src/Makefile.in +@@ -382,7 +382,7 @@ CPPSRCS += checks.cc \ + # END enclude sources for V8 dtoa + ############################################# + +-ifeq (,$(filter-out powerpc sparc,$(TARGET_CPU))) ++ifeq (,$(filter arm %86 x86_64,$(TARGET_CPU))) + + VPATH += $(srcdir)/assembler \ + $(srcdir)/assembler/wtf \ diff --git a/var/spack/repos/builtin/packages/mozjs/fix-811665.patch b/var/spack/repos/builtin/packages/mozjs/fix-811665.patch new file mode 100644 index 0000000000..a3e06d8bb4 --- /dev/null +++ b/var/spack/repos/builtin/packages/mozjs/fix-811665.patch @@ -0,0 +1,153 @@ +Description: Fix FTBFS with gcc6 + Most fixes are returning NULL instead of false and a narrowing issues. +Author: Tobias Frost <tobi@debian.org> +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811665 +Last-Update: 2016-09-25 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/js/src/ctypes/CTypes.cpp ++++ b/js/src/ctypes/CTypes.cpp +@@ -4753,7 +4753,7 @@ NewFunctionInfo(JSContext* cx, + for (JSUint32 i = 0; i < argLength; ++i) { + bool isEllipsis; + if (!IsEllipsis(cx, argTypes[i], &isEllipsis)) +- return false; ++ return NULL; + if (isEllipsis) { + fninfo->mIsVariadic = true; + if (i < 1) { +--- a/js/src/jsapi.cpp ++++ b/js/src/jsapi.cpp +@@ -3985,7 +3985,7 @@ JS_Enumerate(JSContext *cx, JSObject *ob + AutoIdVector props(cx); + JSIdArray *ida; + if (!GetPropertyNames(cx, obj, JSITER_OWNONLY, &props) || !VectorToIdArray(cx, props, &ida)) +- return false; ++ return NULL; + for (size_t n = 0; n < size_t(ida->length); ++n) + JS_ASSERT(js_CheckForStringIndex(ida->vector[n]) == ida->vector[n]); + return ida; +--- a/js/src/jsfun.cpp ++++ b/js/src/jsfun.cpp +@@ -2051,7 +2051,7 @@ fun_toStringHelper(JSContext *cx, JSObje + + JSString *str = JS_DecompileFunction(cx, fun, indent); + if (!str) +- return false; ++ return NULL; + + if (!indent) + cx->compartment->toSourceCache.put(fun, str); +@@ -2657,7 +2657,7 @@ LookupInterpretedFunctionPrototype(JSCon + const Shape *shape = funobj->nativeLookup(id); + if (!shape) { + if (!ResolveInterpretedFunctionPrototype(cx, funobj)) +- return false; ++ return NULL; + shape = funobj->nativeLookup(id); + } + JS_ASSERT(!shape->configurable()); +--- a/js/src/jsiter.cpp ++++ b/js/src/jsiter.cpp +@@ -425,7 +425,7 @@ NewIteratorObject(JSContext *cx, uintN f + */ + JSObject *obj = js_NewGCObject(cx, FINALIZE_OBJECT0); + if (!obj) +- return false; ++ return NULL; + obj->init(cx, &js_IteratorClass, NULL, NULL, NULL, false); + obj->setMap(cx->compartment->emptyEnumeratorShape); + return obj; +--- a/js/src/jsparse.cpp ++++ b/js/src/jsparse.cpp +@@ -3352,7 +3352,7 @@ Parser::functionDef(JSAtom *funAtom, Fun + if (!outertc->inFunction() && bodyLevel && funAtom && !lambda && outertc->compiling()) { + JS_ASSERT(pn->pn_cookie.isFree()); + if (!DefineGlobal(pn, outertc->asCodeGenerator(), funAtom)) +- return false; ++ return NULL; + } + + pn->pn_blockid = outertc->blockid(); +--- a/js/src/jsstr.cpp ++++ b/js/src/jsstr.cpp +@@ -1734,7 +1734,7 @@ class RegExpGuard + if (flat) { + patstr = flattenPattern(cx, fm.patstr); + if (!patstr) +- return false; ++ return NULL; + } else { + patstr = fm.patstr; + } +@@ -3408,7 +3408,7 @@ js_InitStringClass(JSContext *cx, JSObje + UndefinedValue(), NULL, NULL, + JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_SHARED, 0, 0, + NULL)) { +- return JS_FALSE; ++ return NULL; + } + + return proto; +--- a/js/src/jstypedarray.cpp ++++ b/js/src/jstypedarray.cpp +@@ -1334,7 +1334,7 @@ class TypedArrayTemplate + if (size != 0 && count >= INT32_MAX / size) { + JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, + JSMSG_NEED_DIET, "size and count"); +- return false; ++ return NULL; + } + + int32 bytelen = size * count; +@@ -1668,7 +1668,7 @@ TypedArrayConstruct(JSContext *cx, jsint + + default: + JS_NOT_REACHED("shouldn't have gotten here"); +- return false; ++ return NULL; + } + } + +--- a/js/src/jsxml.cpp ++++ b/js/src/jsxml.cpp +@@ -282,7 +282,7 @@ NewXMLNamespace(JSContext *cx, JSLinearS + + obj = NewBuiltinClassInstanceXML(cx, &js_NamespaceClass); + if (!obj) +- return JS_FALSE; ++ return NULL; + JS_ASSERT(JSVAL_IS_VOID(obj->getNamePrefixVal())); + JS_ASSERT(JSVAL_IS_VOID(obj->getNameURIVal())); + JS_ASSERT(JSVAL_IS_VOID(obj->getNamespaceDeclared())); +@@ -431,7 +431,7 @@ ConvertQNameToString(JSContext *cx, JSOb + size_t length = str->length(); + jschar *chars = (jschar *) cx->malloc((length + 2) * sizeof(jschar)); + if (!chars) +- return JS_FALSE; ++ return NULL; + *chars = '@'; + const jschar *strChars = str->getChars(cx); + if (!strChars) { +--- a/js/src/methodjit/InvokeHelpers.cpp ++++ b/js/src/methodjit/InvokeHelpers.cpp +@@ -728,7 +728,7 @@ AtSafePoint(JSContext *cx) + { + JSStackFrame *fp = cx->fp(); + if (fp->hasImacropc()) +- return false; ++ return NULL; + + JSScript *script = fp->script(); + return script->maybeNativeCodeForPC(fp->isConstructing(), cx->regs->pc); +--- a/js/src/nanojit/NativeX64.cpp ++++ b/js/src/nanojit/NativeX64.cpp +@@ -1899,7 +1899,7 @@ namespace nanojit + } + } + +- static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {0x8000000000000000LL,0}; ++ static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {(int64_t) 0x8000000000000000ULL,0}; + + void Assembler::asm_fneg(LIns *ins) { + Register rr, ra; diff --git a/var/spack/repos/builtin/packages/mozjs/package.py b/var/spack/repos/builtin/packages/mozjs/package.py index 664ba0a08a..4ba1faaa6a 100644 --- a/var/spack/repos/builtin/packages/mozjs/package.py +++ b/var/spack/repos/builtin/packages/mozjs/package.py @@ -25,17 +25,24 @@ class Mozjs(AutotoolsPackage): depends_on('python@2.7.3:2.8', type='build') depends_on('nspr', when='@:27') depends_on('libffi@3.0.9:') - depends_on('readline') + depends_on('readline', when='@17.0.0:') depends_on('zlib@1.2.3') configure_directory = 'js/src' build_directory = 'js/src/spack-build' patch('perl-bug.patch') + # Note: According to https://github.com/apache/couchdb-pkg/tree/master/js/rpm/SOURCES + # There is some patch for mozjs@1.8.5 to fix compile issue. + # Patches required to fix the issue:https://bugzilla.mozilla.org/show_bug.cgi?id=638056 + patch('Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch', + sha256='b1c869a65f5ebc10741d4631cc2e1e166c6ed53035cfa56bede55a4c19b7b118', when='@1.8.5') + patch('fix-811665.patch', + sha256='2b298b8a693865b38e2b0d33277bb5ffe152c6ecf43648e85113fec586aa4752', when='@1.8.5') def configure_args(self): spec = self.spec - return [ + config_args = [ '--enable-readline', # enables readline support in JS shell '--enable-threadsafe', # enables support for multiple threads '--enable-system-ffi', @@ -43,3 +50,8 @@ class Mozjs(AutotoolsPackage): '--with-system-nspr', '--with-nspr-prefix={0}'.format(spec['nspr'].prefix), ] + if spec.target.family == 'aarch64': + config_args.append('--host=aarch64-linux-gnu') + if spec.satisfies('@1.8.5'): + config_args.append('--disable-readline') + return config_args diff --git a/var/spack/repos/builtin/packages/mpich/package.py b/var/spack/repos/builtin/packages/mpich/package.py index a485124476..af24802b90 100644 --- a/var/spack/repos/builtin/packages/mpich/package.py +++ b/var/spack/repos/builtin/packages/mpich/package.py @@ -67,6 +67,8 @@ spack package at this time.''', variant('libxml2', default=True, description='Use libxml2 for XML support instead of the custom ' 'minimalistic implementation') + variant('argobots', default=False, + description='Enable Argobots support') provides('mpi') provides('mpi@:3.0', when='@3:') @@ -141,6 +143,9 @@ spack package at this time.''', depends_on('pmix', when='pmi=pmix') + # +argobots variant requires Argobots + depends_on('argobots', when='+argobots') + # building from git requires regenerating autotools files depends_on('automake@1.15:', when='@develop', type=("build")) depends_on('libtool@2.4.4:', when='@develop', type=("build")) @@ -182,7 +187,8 @@ spack package at this time.''', # their run environments the code to make the compilers available. # For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers. # Cray MPIs always have cray in the module name, e.g. "cray-mpich" - if self.spec.external_module and 'cray' in self.spec.external_module: + external_modules = self.spec.external_modules + if external_modules and 'cray' in external_modules[0]: env.set('MPICC', spack_cc) env.set('MPICXX', spack_cxx) env.set('MPIF77', spack_fc) @@ -205,7 +211,8 @@ spack package at this time.''', def setup_dependent_package(self, module, dependent_spec): # For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers. # Cray MPIs always have cray in the module name, e.g. "cray-mpich" - if self.spec.external_module and 'cray' in self.spec.external_module: + external_modules = self.spec.external_modules + if external_modules and 'cray' in external_modules[0]: self.spec.mpicc = spack_cc self.spec.mpicxx = spack_cxx self.spec.mpifc = spack_fc @@ -307,4 +314,9 @@ spack package at this time.''', # for hydra, for hydra2, and for MPICH itself). config_args += self.enable_or_disable('libxml2') + # If +argobots specified, add argobots option + if '+argobots' in spec: + config_args.append('--with-thread-package=argobots') + config_args.append('--with-argobots=' + spec['argobots'].prefix) + return config_args diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py index 30fc982505..c0130e554d 100644 --- a/var/spack/repos/builtin/packages/mpifileutils/package.py +++ b/var/spack/repos/builtin/packages/mpifileutils/package.py @@ -21,9 +21,10 @@ class Mpifileutils(Package): git = "https://github.com/hpc/mpifileutils.git" version('develop', branch='master') - version('0.10', sha256='5a71a9acd9841c3c258fc0eaea942f18abcb40098714cc90462b57696c07e3c5') - version('0.9.1', sha256='15a22450f86b15e7dc4730950b880fda3ef6f59ac82af0b268674d272aa61c69') - version('0.9', sha256='1b8250af01aae91c985ca5d61521bfaa4564e46efa15cee65cd0f82cf5a2bcfb') + version('0.10.1', sha256='4c8409ef4140f6f557d0e93f0c1267baf5d893c203b29fb7a33d9bc3c5a5d25c') + version('0.10', sha256='5a71a9acd9841c3c258fc0eaea942f18abcb40098714cc90462b57696c07e3c5') + version('0.9.1', sha256='15a22450f86b15e7dc4730950b880fda3ef6f59ac82af0b268674d272aa61c69') + version('0.9', sha256='1b8250af01aae91c985ca5d61521bfaa4564e46efa15cee65cd0f82cf5a2bcfb') conflicts('platform=darwin') diff --git a/var/spack/repos/builtin/packages/mumax/package.py b/var/spack/repos/builtin/packages/mumax/package.py new file mode 100644 index 0000000000..ac9183c45e --- /dev/null +++ b/var/spack/repos/builtin/packages/mumax/package.py @@ -0,0 +1,62 @@ +# 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 +import shutil + + +class Mumax(MakefilePackage, CudaPackage): + """GPU accelerated micromagnetic simulator.""" + + homepage = "http://mumax.github.io" + url = "https://github.com/mumax/3/archive/3.10beta.tar.gz" + + version('3.10beta', sha256='f20fbd90a4b531fe5a0d8acc3d4505a092a5e426f5f53218a22a87d445daf0e9') + + variant('cuda', default=True, + description='Use CUDA; must be true') + variant('cuda_arch', 'N/A', + description='Mumax will build GPU kernels that it supports') + variant('gnuplot', default=False, + description='Use gnuplot for graphs') + + depends_on('cuda') + depends_on('go', type='build') + depends_on('gnuplot', type='run', when='+gnuplot') + + conflicts('~cuda', msg='mumax requires cuda') + + patch('https://github.com/mumax/3/commit/2cf5c9a6985c9eb16a124c6bd96aed75b4a30c24.patch', + sha256='a43b2ca6c9f9edfb1fd6d916a599f85a57c8bb3f9ee38148b1988fd82feec8ad') + + @property + def gopath(self): + return self.stage.path + + @property + def mumax_gopath_dir(self): + return join_path(self.gopath, 'src/github.com/mumax/3') + + def do_stage(self, mirror_only=False): + super(Mumax, self).do_stage(mirror_only) + if not os.path.exists(self.mumax_gopath_dir): + # Need to move source to $GOPATH and then symlink the original + # stage directory + shutil.move(self.stage.source_path, self.mumax_gopath_dir) + force_symlink(self.mumax_gopath_dir, self.stage.source_path) + + # filter out targets that do not exist + def edit(self, spec, prefix): + filter_file(r'(^ln -sf .*)', r'#\1', 'make.bash') + filter_file(r'(^\(cd test)', r'#\1', 'make.bash') + + def setup_build_environment(self, env): + env.prepend_path('GOPATH', self.gopath) + + def install(self, spec, prefix): + make() + with working_dir(self.gopath): + install_tree('bin', prefix.bin) diff --git a/var/spack/repos/builtin/packages/mvapich2/package.py b/var/spack/repos/builtin/packages/mvapich2/package.py index 0e0ab26a22..0f25cb7111 100644 --- a/var/spack/repos/builtin/packages/mvapich2/package.py +++ b/var/spack/repos/builtin/packages/mvapich2/package.py @@ -8,11 +8,16 @@ import sys class Mvapich2(AutotoolsPackage): - """MVAPICH2 is an MPI implementation for Infiniband networks.""" + """Mvapich2 is a High-Performance MPI Library for clusters with diverse + networks (InfiniBand, Omni-Path, Ethernet/iWARP, and RoCE) and computing + platforms (x86 (Intel and AMD), ARM and OpenPOWER)""" + homepage = "http://mvapich.cse.ohio-state.edu/" url = "http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.3.4.tar.gz" list_url = "http://mvapich.cse.ohio-state.edu/downloads/" + maintainers = ['nithintsk', 'harisubramoni'] + # Prefer the latest stable release version('2.3.4', sha256='7226a45c7c98333c8e5d2888119cce186199b430c13b7b1dca1769909e68ea7a') version('2.3.3', sha256='41d3261be57e5bc8aabf4e32981543c015c5443ff032a26f18205985e18c2b73') @@ -235,7 +240,8 @@ class Mvapich2(AutotoolsPackage): def setup_compiler_environment(self, env): # For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers. # Cray MPIs always have cray in the module name, e.g. "cray-mvapich" - if self.spec.external_module and 'cray' in self.spec.external_module: + external_modules = self.spec.external_modules + if external_modules and 'cray' in external_modules[0]: env.set('MPICC', spack_cc) env.set('MPICXX', spack_cxx) env.set('MPIF77', spack_fc) @@ -249,7 +255,8 @@ class Mvapich2(AutotoolsPackage): def setup_dependent_package(self, module, dependent_spec): # For Cray MPIs, the regular compiler wrappers *are* the MPI wrappers. # Cray MPIs always have cray in the module name, e.g. "cray-mvapich" - if self.spec.external_module and 'cray' in self.spec.external_module: + external_modules = self.spec.external_modules + if external_modules and 'cray' in external_modules[0]: self.spec.mpicc = spack_cc self.spec.mpicxx = spack_cxx self.spec.mpifc = spack_fc diff --git a/var/spack/repos/builtin/packages/nag/package.py b/var/spack/repos/builtin/packages/nag/package.py index ae191f9c08..c484350570 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='bd53c988efe4bfd476a5f556ebd2b8924dc2a039f485e8e017581bca4e12ba01') + version('7.0', sha256='ef65805004255881a4ed27fe7bdb5b05dbbe5fde5bad287f71258fce1f02be77') version('6.2', sha256='9b60f6ffa4f4be631079676963e74eea25e8824512e5c864eb06758b2a3cdd2d') version('6.1', sha256='32580e0004e6798abf1fa52f0070281b28abeb0da2387530a4cc41218e813c7c') diff --git a/var/spack/repos/builtin/packages/namd/package.py b/var/spack/repos/builtin/packages/namd/package.py index a85dd7fd42..e14e92347e 100644 --- a/var/spack/repos/builtin/packages/namd/package.py +++ b/var/spack/repos/builtin/packages/namd/package.py @@ -19,8 +19,9 @@ class Namd(MakefilePackage): manual_download = True version("develop", branch="master") + version('2.14b2', sha256='cb4bd918d2d545bb618e4b4a20023a53916f0aa362d9e57f3de1562c36240b00') version('2.14b1', sha256='9407e54f5271b3d3039a5a9d2eae63c7e108ce31b7481e2197c19e1125b43919') - version('2.13', '9e3323ed856e36e34d5c17a7b0341e38') + version('2.13', '9e3323ed856e36e34d5c17a7b0341e38', preferred=True) version('2.12', '2a1191909b1ab03bf0205971ad4d8ee9') variant('fftw', default='3', values=('none', '2', '3', 'mkl'), diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py index d1f4de962d..f805f55b1c 100644 --- a/var/spack/repos/builtin/packages/nccl/package.py +++ b/var/spack/repos/builtin/packages/nccl/package.py @@ -14,6 +14,9 @@ class Nccl(MakefilePackage, CudaPackage): maintainers = ['adamjstewart'] + version('2.7.8-1', sha256='fa2bec307270f30fcf6280a85f24ea8801e0ce3b3027937c7325260a890b07e0') + version('2.7.6-1', sha256='60dd9b1743c2db6c05f60959edf98a4477f218115ef910d7ec2662f2fb5cf626') + version('2.7.5-1', sha256='26a8dec6fa0a776eb71205d618d58e26d372621719788a23b33db6fdce4426bf') version('2.7.3-1', sha256='dc7b8794373306e323363314c3327796e416f745e8003490fc1407a22dd7acd6') version('2.6.4-1', sha256='ed8c9dfd40e013003923ae006787b1a30d3cb363b47d2e4307eaa2624ebba2ba') version('2.5.7-1', sha256='781a6bb2278566be4abbdf22b2fa19afc7306cff4b312c82bd782979b368014e') diff --git a/var/spack/repos/builtin/packages/ncl/package.py b/var/spack/repos/builtin/packages/ncl/package.py index 4d9980ecc5..046dd9b3a8 100644 --- a/var/spack/repos/builtin/packages/ncl/package.py +++ b/var/spack/repos/builtin/packages/ncl/package.py @@ -144,7 +144,9 @@ class Ncl(Package): c2f_flags.extend(['-lgfortran', '-lm']) elif self.compiler.name == 'intel': fc_flags.append('-fp-model precise') - cc_flags.append('-fp-model precise') + cc_flags.append('-fp-model precise' + ' -std=c99' + ' -D_POSIX_C_SOURCE=2 -D_GNU_SOURCE') c2f_flags.extend(['-lifcore', '-lifport']) if self.spec.satisfies('%gcc@10:'): diff --git a/var/spack/repos/builtin/packages/nco/package.py b/var/spack/repos/builtin/packages/nco/package.py index 859dac6ab7..cd30f8742a 100644 --- a/var/spack/repos/builtin/packages/nco/package.py +++ b/var/spack/repos/builtin/packages/nco/package.py @@ -13,6 +13,12 @@ class Nco(AutotoolsPackage): homepage = "http://nco.sourceforge.net/" url = "https://github.com/nco/nco/archive/4.6.7.tar.gz" + version('4.9.3', sha256='eade5b79f3814b11ae3f52c34159567e76a73f05f0ab141eccaac68f0ca94aee') + version('4.9.2', sha256='1a98c37c946c00232fa7319d00d1d80f77603adda7c9239d10d68a8a3545a4d5') + version('4.9.1', sha256='9592efaf0dfd6ccdefd0b417d990cfccae7e89c20d90fb44ead6263009778834') + version('4.9.0', sha256='21dd53f427793cbc52d1c007e9b7339c83f6944a937a1acfbbe733e49b65378b') + version('4.8.1', sha256='ddae3fed46c266798ed1176d6a70b36376d2d320fa933c716a623172d1e13c68') + version('4.8.0', sha256='91f95ebfc9baa888adaec3016ca18a6297e2881b1429d74543a27fdfbe15fcab') version('4.7.9', sha256='048f6298bceb40913c3ae433f875dea1e9129b1c86019128e7271d08f274a879') version('4.6.7', sha256='2fe2dabf14a60bface694307cbe719df57103682b715348e9d77bfe8d31487f3') version('4.6.6', sha256='079d83f800b73d9b12b8de1634a88c2cbe40a639aaf7bc056cd2e836c6047697') diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py index f142a435f2..3eb944ce9c 100644 --- a/var/spack/repos/builtin/packages/ncview/package.py +++ b/var/spack/repos/builtin/packages/ncview/package.py @@ -11,6 +11,7 @@ class Ncview(AutotoolsPackage): homepage = "http://meteora.ucsd.edu/~pierce/ncview_home_page.html" url = "ftp://cirrus.ucsd.edu/pub/ncview/ncview-2.1.7.tar.gz" + version('2.1.8', sha256='e8badc507b9b774801288d1c2d59eb79ab31b004df4858d0674ed0d87dfc91be') version('2.1.7', sha256='a14c2dddac0fc78dad9e4e7e35e2119562589738f4ded55ff6e0eca04d682c82') depends_on('netcdf-c') diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/gcc10-compatibility.patch b/var/spack/repos/builtin/packages/netlib-scalapack/gcc10-compatibility.patch new file mode 100644 index 0000000000..d852742d12 --- /dev/null +++ b/var/spack/repos/builtin/packages/netlib-scalapack/gcc10-compatibility.patch @@ -0,0 +1,33 @@ +From 6dff04cc6f5ad2c35e76dec18b7eec86943a3ed1 Mon Sep 17 00:00:00 2001 +From: DesWurstes <DesWurstes@users.noreply.github.com> +Date: Fri, 15 May 2020 15:54:14 +0100 +Subject: [PATCH] Set -fallow-argument-mismatch + +--- + CMakeLists.txt | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 638dbdc..93fc34b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -14,6 +14,9 @@ if (UNIX) + if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Intel") + set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" ) + endif () ++ if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) ++ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch" ) ++ endif() + endif () + + # +@@ -79,6 +82,9 @@ if (UNIX) + if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Intel") + set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" ) + endif () ++ if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) ++ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch" ) ++ endif() + endif () + + macro(SCALAPACK_install_library lib) diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py index 26fe53190a..64381c5b28 100644 --- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py +++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py @@ -46,6 +46,8 @@ class NetlibScalapack(CMakePackage): patch("mpi2-compatibility.patch", when='@2.0.2:2.0.99') # See: https://github.com/Reference-ScaLAPACK/scalapack/pull/16 patch("int_overflow.patch", when='@2.0.0:2.1.0') + # See: https://github.com/Reference-ScaLAPACK/scalapack/pull/23 + patch("gcc10-compatibility.patch", when='@2.0.0:2.1.0') @property def libs(self): diff --git a/var/spack/repos/builtin/packages/neuron/package.py b/var/spack/repos/builtin/packages/neuron/package.py index 8f3371a159..a3c6cbec05 100644 --- a/var/spack/repos/builtin/packages/neuron/package.py +++ b/var/spack/repos/builtin/packages/neuron/package.py @@ -81,11 +81,6 @@ class Neuron(Package): '--without-memacs', '--without-nmodl']) - # need to enable bg-q arch - if 'bgq' in self.spec.architecture: - options.extend(['--enable-bluegeneQ', - '--host=powerpc64']) - # on os-x disable building carbon 'click' utility if 'darwin' in self.spec.architecture: options.append('macdarwin=no') @@ -119,9 +114,6 @@ class Neuron(Package): def get_compiler_options(self, spec): flags = '-O2 -g' - if 'bgq' in self.spec.architecture: - flags = '-O3 -qtune=qp -qarch=qp -q64 -qstrict -qnohot -g' - if self.spec.satisfies('%pgi'): flags += ' ' + self.compiler.cc_pic_flag @@ -134,11 +126,6 @@ class Neuron(Package): '--with-nmodl-only', '--without-x'] - if 'bgq' in self.spec.architecture: - flags = '-qarch=ppc64' - options.extend(['CFLAGS=%s' % flags, - 'CXXFLAGS=%s' % flags]) - if 'cray' in self.spec.architecture: flags = '-target-cpu=x86_64 -target-network=none' options.extend(['CFLAGS=%s' % flags, diff --git a/var/spack/repos/builtin/packages/nlcglib/package.py b/var/spack/repos/builtin/packages/nlcglib/package.py new file mode 100644 index 0000000000..af001a6bd6 --- /dev/null +++ b/var/spack/repos/builtin/packages/nlcglib/package.py @@ -0,0 +1,64 @@ +# 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 Nlcglib(CMakePackage, CudaPackage): + """Nonlinear CG methods for wave-function optimization in DFT.""" + + homepage = "https://github.com/simonpintarelli/nlcglib" + git = "https://github.com/simonpintarelli/nlcglib.git" + url = "https://github.com/simonpintarelli/nlcglib/archive/v0.9.tar.gz" + + maintainers = ['simonpintarelli'] + + version('master', branch='master') + version('develop', branch='develop') + + version('0.9', sha256='8d5bc6b85ee714fb3d6480f767e7f43e5e7d569116cf60e48f533a7f50a37a08') + + variant('wrapper', default=False, + description='Use nvcc-wrapper for CUDA build') + variant('openmp', default=False) + variant('build_type', default='Release', + description='CMake build type', + values=('Debug', 'Release', 'RelWithDebInfo')) + + depends_on('lapack') + depends_on('kokkos +cuda~cuda_relocatable_device_code+cuda_lambda') + depends_on('kokkos-nvcc-wrapper', when='+wrapper') + depends_on('kokkos +cuda~cuda_relocatable_device_code+cuda_lambda+wrapper', when='+wrapper') + depends_on("cmake@3.15:", type='build') + depends_on('kokkos+cuda~cuda_relocatable_device_code+cuda_lambda+openmp+wrapper', when='+openmp+wrapper') + + def cmake_args(self): + options = [] + + if '+openmp' in self.spec: + options.append('-DUSE_OPENMP=On') + else: + options.append('-DUSE_OPENMP=Off') + if self.spec['blas'].name in ['intel-mkl', 'intel-parallel-studio']: + options.append('-DLAPACK_VENDOR=MKL') + elif self.spec['blas'].name in ['openblas']: + options.append('-DLAPACK_VENDOR=OpenBLAS') + else: + raise Exception('blas/lapack must be either openblas or mkl.') + + options.append('-DBUILD_TESTS=OFF') + + if '+wrapper' in self.spec: + options.append('-DCMAKE_CXX_COMPILER=%s' % + self.spec['kokkos-nvcc-wrapper'].kokkos_cxx) + + if '+cuda' in self.spec: + cuda_arch = self.spec.variants['cuda_arch'].value + if cuda_arch[0] != 'none': + options += [ + '-DCMAKE_CUDA_FLAGS=-arch=sm_{0}'.format(cuda_arch[0]) + ] + + return options diff --git a/var/spack/repos/builtin/packages/nn-c/package.py b/var/spack/repos/builtin/packages/nn-c/package.py new file mode 100644 index 0000000000..20fa95054d --- /dev/null +++ b/var/spack/repos/builtin/packages/nn-c/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 NnC(AutotoolsPackage): + """nn: Natural Neighbours interpolation. nn is a C code + for Natural Neighbours interpolation of 2D scattered data. + It provides a C library and a command line utility nnbathy.""" + + homepage = "https://github.com/sakov/nn-c" + git = "https://github.com/sakov/nn-c.git" + + version('master', branch='master') + version('1.86.2', commit='343c7784d38d3270d75d450569fc0b64767c37e9') + + variant('pic', default=True, + description='Produce position-independent code (for shared libs)') + + configure_directory = 'nn' + + def configure_args(self): + args = [] + if '+pic' in self.spec: + args.extend([ + 'CFLAGS={0}'.format(self.compiler.pic_flag), + 'CXXFLAGS={0}'.format(self.compiler.pic_flag), + 'FFLAGS={0}'.format(self.compiler.pic_flag) + ]) + return args diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index 0089ec6dac..ff1ee2e1f8 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -26,6 +26,7 @@ class NodeJs(Package): version('12.14.0', sha256='5c1939867228f3845c808ef84a89c8ee93cc35f857bf7587ecee1b5a6d9da67b') version('11.1.0', sha256='3f53b5ac25b2d36ad538267083c0e603d9236867a936c22a9116d95fa10c60d5') version('10.13.0', sha256='aa06825fff375ece7c0d881ae0de5d402a857e8cabff9b4a50f2f0b7b44906be') + version('8.11.4', sha256='459144e361d64ca7362c37cc9717c044ef909d348cb5aa3f2b62538560a6085a') version('8.9.1', sha256='32491b7fcc4696b2cdead45c47e52ad16bbed8f78885d32e873952fee0f971e1') version('7.1.0', sha256='595e7e2a37d1e0573044a90077bb12c0f750e5d8851899ffa74038238da9a983') version('6.3.0', sha256='4ed7a99985f8afee337cc22d5fef61b495ab4238dfff3750ac9019e87fc6aae6') @@ -105,7 +106,10 @@ class NodeJs(Package): return args def configure(self, spec, prefix): - python('configure.py', *self.configure_args()) + if self.version >= Version('10.11.0'): + python('configure.py', *self.configure_args()) + else: + python('configure', *self.configure_args()) def build(self, spec, prefix): make() diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index afc1451c0d..5bcc98cb19 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -11,22 +11,23 @@ import os class Nwchem(Package): """High-performance computational chemistry software""" - homepage = "http://www.nwchem-sw.org" - url = "http://www.nwchem-sw.org/images/Nwchem-6.6.revision27746-src.2015-10-20.tar.gz" + homepage = "http://nwchemgit.github.io" + url = "https://github.com/nwchemgit/nwchem/releases/download/v7.0.0-release/nwchem-7.0.0-release.revision-2c9a1c7c-srconly.2020-02-26.tar.bz2" tags = ['ecp', 'ecp-apps'] + version('7.0.0', sha256='e3c6510627345be596f4079047e5e7b59e6c20599798ecfe122e3527f8ad6eb0', + url='https://github.com/nwchemgit/nwchem/releases/download/v7.0.0-release/nwchem-7.0.0-release.revision-2c9a1c7c-srconly.2020-02-26.tar.bz2') version('6.8.1', sha256='fd20f9ca1b410270a815e77e052ec23552f828526cd252709f798f589b2a6431', url='https://github.com/nwchemgit/nwchem/releases/download/6.8.1-release/nwchem-6.8.1-release.revision-v6.8-133-ge032219-srconly.2018-06-14.tar.bz2') - version('6.8', sha256='8401d9f4cce2f653a38639df61260b06be580ff0e1b8d77ed3262da159b372a6', - url='https://github.com/nwchemgit/nwchem/archive/v6.8-release.tar.gz') depends_on('blas') depends_on('lapack') depends_on('mpi') depends_on('scalapack') - - depends_on('python@2.7:2.8', type=('build', 'link', 'run')) + depends_on('python@3:', when='@7:', type=('build', 'link', 'run')) + depends_on('python@2.7:2.8', when='@:6', type=('build', 'link', 'run')) + conflicts('%gcc@10:', when='@:6', msg='NWChem versions prior to 7.0.0 do not build with GCC 10') # first hash is sha256 of the patch (required for URL patches), # second is sha256 for the archive. @@ -72,18 +73,20 @@ class Nwchem(Package): 'CC=%s' % os.path.basename(spack_cc), 'FC=%s' % os.path.basename(spack_fc), 'USE_MPI=y', - 'MPI_LOC=%s' % spec['mpi'].prefix, - 'USE_PYTHONCONFIG=y', 'PYTHONVERSION=%s' % spec['python'].version.up_to(2), - 'PYTHONHOME=%s' % spec['python'].home, 'BLASOPT=%s' % ((lapack + blas).ld_flags), 'BLAS_LIB=%s' % blas.ld_flags, 'LAPACK_LIB=%s' % lapack.ld_flags, - 'USE_SCALAPACK=y', - 'SCALAPACK=%s' % scalapack.ld_flags, + 'SCALAPACK_LIB=%s' % scalapack.ld_flags, 'NWCHEM_MODULES=all python', 'NWCHEM_LONG_PATHS=Y' # by default NWCHEM_TOP is 64 char max ]) + if spec.version < Version('7.0.0'): + args.extend([ + 'PYTHONVERSION=%s' % spec['python'].version.up_to(2), + 'PYTHONHOME=%s' % spec['python'].home, + 'USE_PYTHONCONFIG=Y', + ]) # TODO: query if blas/lapack/scalapack uses 64bit Ints # A flag to distinguish between 32bit and 64bit integers in linear @@ -155,3 +158,11 @@ class Nwchem(Package): with open(".nwchemrc", 'w') as f: f.write(nwchemrc) install(".nwchemrc", share_path) + + def setup_run_environment(self, env): + env.set('NWCHEM_BASIS_LIBRARY', join_path( + self.prefix, + 'share/nwchem/libraries/')) + env.set('NWCHEM_NWPW_LIBRARY', join_path( + self.prefix, + 'share/nwchem/libraryps/')) diff --git a/var/spack/repos/builtin/packages/octopus/package.py b/var/spack/repos/builtin/packages/octopus/package.py index bed1c1a256..b4cac8fbd5 100644 --- a/var/spack/repos/builtin/packages/octopus/package.py +++ b/var/spack/repos/builtin/packages/octopus/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import llnl.util.tty as tty class Octopus(Package): @@ -13,6 +14,7 @@ class Octopus(Package): homepage = "https://octopus-code.org/" url = "http://octopus-code.org/down.php?file=6.0/octopus-6.0.tar.gz" + version('10.0', sha256='ccf62200e3f37911bfff6d127ebe74220996e9c09383a10b1420c81d931dcf23') version('7.3', sha256='ad843d49d4beeed63e8b9a2ca6bfb2f4c5a421f13a4f66dc7b02f6d6a5c4d742') version('6.0', sha256='4a802ee86c1e06846aa7fa317bd2216c6170871632c9e03d020d7970a08a8198') version('5.0.1', sha256='3423049729e03f25512b1b315d9d62691cd0a6bd2722c7373a61d51bfbee14e0') @@ -31,9 +33,13 @@ class Octopus(Package): depends_on('blas') depends_on('gsl@1.9:') depends_on('lapack') - depends_on('libxc') + depends_on('libxc@2:2.99', when='@:5.99') + depends_on('libxc@2:3.99', when='@6:7.99') + depends_on('libxc@2:4.99', when='@8:9.99') + depends_on('libxc@3:5.0.0', when='@10.0') depends_on('mpi') - depends_on('fftw@3:+mpi+openmp') + depends_on('fftw@3:+mpi+openmp', when='@:9.99') + depends_on('fftw-api@3:', when='@10.0:') depends_on('metis@5:', when='+metis') depends_on('parmetis', when='+parmetis') depends_on('scalapack', when='+scalapack') @@ -57,8 +63,25 @@ class Octopus(Package): 'CC=%s' % spec['mpi'].mpicc, 'FC=%s' % spec['mpi'].mpifc, '--enable-mpi', - '--with-fftw-prefix==%s' % spec['fftw'].prefix, ]) + if '^fftw' in spec: + args.extend([ + '--with-fftw-prefix=%s' % spec['fftw'].prefix, + ]) + elif '^mkl' in spec: + # As of version 10.0, Octopus depends on fftw-api instead + # of FFTW. If FFTW is not in the dependency tree, then + # it ought to be MKL as it is currently the only providers + # available for fftw-api. + args.extend([ + 'FCFLAGS_FFTW=-I%s' % spec['mkl'].prefix.include.fftw + ]) + else: + # To be foolproof, fail with a proper error message + # if neither FFTW nor MKL are in the dependency tree. + tty.die('Unsupported "fftw-api" provider, ' + 'currently only FFTW and MKL are supported.\n' + "Please report this issue on Spack's repository.") if '+metis' in spec: args.extend([ '--with-metis-prefix=%s' % spec['metis'].prefix, diff --git a/var/spack/repos/builtin/packages/onednn/package.py b/var/spack/repos/builtin/packages/onednn/package.py index 82d22296f9..2805399256 100644 --- a/var/spack/repos/builtin/packages/onednn/package.py +++ b/var/spack/repos/builtin/packages/onednn/package.py @@ -12,10 +12,13 @@ class Onednn(CMakePackage): Formerly known as Intel MKL-DNN and DNNL.""" homepage = "https://01.org/dnnl" - url = "https://github.com/oneapi-src/oneDNN/archive/v1.5.tar.gz" + url = "https://github.com/oneapi-src/oneDNN/archive/v1.6.1.tar.gz" maintainers = ['adamjstewart'] + version('1.6.1', sha256='6686d01d9493905c9c8bcfabcf5b2cc9ced7de7a41c52bba99e569fd5b63464d') + version('1.6', sha256='f54893e487ccd99586725afdd19f526bb84e3251222586850782e3c7eedb7c4f') + version('1.5.1', sha256='aef4d2a726f76f5b98902491a1a4ac69954039aa8e5a1d67ef6ce58ed00e23a6') version('1.5', sha256='2aacc00129418185e0bc1269d3ef82f93f08de2c336932989c0c360279129edb') version('1.4', sha256='54737bcb4dc1961d32ee75da3ecc529fa48198f8b2ca863a079e19a9c4adb70f') version('1.3', sha256='b87c23b40a93ef5e479c81028db71c4847225b1a170f82af5e79f1cda826d3bf') diff --git a/var/spack/repos/builtin/packages/open-iscsi/package.py b/var/spack/repos/builtin/packages/open-iscsi/package.py index 73b792340f..0261105867 100644 --- a/var/spack/repos/builtin/packages/open-iscsi/package.py +++ b/var/spack/repos/builtin/packages/open-iscsi/package.py @@ -28,5 +28,9 @@ class OpenIscsi(MakefilePackage): def setup_build_environment(self, env): env.set('CFLAGS', '-DNO_SYSTEMD') + def setup_run_environment(self, env): + env.prepend_path('PATH', self.prefix.sbin) + env.prepend_path('LD_LIBRARY_PATH', self.prefix.usr.lib64) + def install(self, spec, prefix): make('install', 'DESTDIR={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/openblas/openblas_fujitsu2.patch b/var/spack/repos/builtin/packages/openblas/openblas_fujitsu2.patch new file mode 100644 index 0000000000..bfda30cced --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas_fujitsu2.patch @@ -0,0 +1,13 @@ +--- OpenBLAS-0.3.10/f_check 2020-07-04 00:02:19.000000000 +0900 ++++ OpenBLAS-0.3.10/f_check_fix 2020-07-04 00:00:52.000000000 +0900 +@@ -337,8 +337,8 @@ + && ($flags !~ /kernel32/) + && ($flags !~ /advapi32/) + && ($flags !~ /shell32/) +- && ($flags !~ /omp/ || ($vendor !~ /PGI/ && $flags =~ /omp/)) +- && ($flags !~ /[0-9]+/) ++ && ($flags !~ /omp/ || ($vendor !~ /PGI/ && $vendor !~ /FUJITSU/ && $flags =~ /omp/)) ++ && ($flags !~ /[0-9]+/ || ($vendor == FUJITSU && $flags =~ /^-lfj90/)) + && ($flags !~ /^\-l$/) + ) { + $linker_l .= $flags . " "; diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index 61a530b37f..ad0a6c82f8 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -99,6 +99,7 @@ class Openblas(MakefilePackage): # Add conditions to f_check to determine the Fujitsu compiler patch('openblas_fujitsu.patch', when='%fj') + patch('openblas_fujitsu2.patch', when='@0.3.10 %fj') # See https://github.com/spack/spack/issues/3036 conflicts('%intel@16', when='@0.2.15:0.2.19') diff --git a/var/spack/repos/builtin/packages/opencascade/package.py b/var/spack/repos/builtin/packages/opencascade/package.py index 8267716e78..7df9668f01 100644 --- a/var/spack/repos/builtin/packages/opencascade/package.py +++ b/var/spack/repos/builtin/packages/opencascade/package.py @@ -16,6 +16,8 @@ class Opencascade(CMakePackage): homepage = "https://www.opencascade.com" url = "http://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=refs/tags/V7_4_0;sf=tgz" + version('7.4.0p1', extension='tar.gz', + sha256='e00fedc221560fda31653c23a8f3d0eda78095c87519f338d4f4088e2ee9a9c0') version('7.4.0', extension='tar.gz', sha256='655da7717dac3460a22a6a7ee68860c1da56da2fec9c380d8ac0ac0349d67676') @@ -32,6 +34,14 @@ class Opencascade(CMakePackage): depends_on('vtk', when='+vtk') depends_on('freeimage', when='+freeimage') depends_on('rapidjson', when='+rapidjson') + depends_on('freetype') + depends_on('tcl') + depends_on('tk') + depends_on('gl') + + def url_for_version(self, version): + url = "http://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=refs/tags/V{0};sf=tgz" + return url.format(version.underscored) def cmake_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/openfoam-org/package.py b/var/spack/repos/builtin/packages/openfoam-org/package.py index dc9b5673ee..e2859dc838 100644 --- a/var/spack/repos/builtin/packages/openfoam-org/package.py +++ b/var/spack/repos/builtin/packages/openfoam-org/package.py @@ -332,15 +332,17 @@ class OpenfoamOrg(Package): # Having wmake and ~source is actually somewhat pointless... # Install 'etc' before 'bin' (for symlinks) - dirs = ['etc', 'bin', 'wmake'] + # META-INFO for 1812 and later (or backported) + dirs = ['META-INFO', 'etc', 'bin', 'wmake'] if '+source' in spec: dirs.extend(['applications', 'src', 'tutorials']) for d in dirs: - install_tree( - d, - join_path(self.projectdir, d), - symlinks=True) + if os.path.isdir(d): + install_tree( + d, + join_path(self.projectdir, d), + symlinks=True) dirs = ['platforms'] if '+source' in spec: diff --git a/var/spack/repos/builtin/packages/openfoam/package.py b/var/spack/repos/builtin/packages/openfoam/package.py index 275af6045f..1d04ecd02e 100644 --- a/var/spack/repos/builtin/packages/openfoam/package.py +++ b/var/spack/repos/builtin/packages/openfoam/package.py @@ -214,11 +214,12 @@ def mplib_content(spec, pre=None): """The mpi settings (from spack) for the OpenFOAM wmake includes, which allows later reuse within OpenFOAM. - Optional parameter 'pre' to provide alternative prefix + Optional parameter 'pre' to provide alternative prefix for + bin and lib directories. """ mpi_spec = spec['mpi'] bin = mpi_spec.prefix.bin - inc = mpi_spec.prefix.include + inc = mpi_spec.headers.directories[0] # Currently only need first one lib = pkglib(mpi_spec) libname = 'mpi' @@ -283,6 +284,8 @@ class Openfoam(Package): variant('float32', default=False, description='Use single-precision') + variant('spdp', default=False, + description='Use single/double mixed precision') variant('int64', default=False, description='With 64-bit labels') variant('knl', default=False, @@ -317,6 +320,7 @@ class Openfoam(Package): # introduced by the restriction within scotch! depends_on('flex@:2.6.1,2.6.4:') depends_on('cmake', type='build') + depends_on('m4', type='build') # Require scotch with ptscotch - corresponds to standard OpenFOAM setup depends_on('scotch~metis+mpi~int64', when='+scotch~int64') @@ -349,7 +353,7 @@ class Openfoam(Package): # kahip patch (wmake) patch('https://develop.openfoam.com/Development/openfoam/commit/8831dfc58b0295d0d301a78341dd6f4599073d45.patch', when='@1806', - sha256='21f1ab68c82dfa41ed1a4439427c94c43ddda02c84175c30da623d905d3e5d61' + sha256='531146be868dd0cda70c1cf12a22110a38a30fd93b5ada6234be3d6c9256c6cf' ) # Some user config settings @@ -773,15 +777,17 @@ class Openfoam(Package): # Having wmake and ~source is actually somewhat pointless... # Install 'etc' before 'bin' (for symlinks) - dirs = ['etc', 'bin', 'wmake'] + # META-INFO for 1812 and later (or backported) + dirs = ['META-INFO', 'etc', 'bin', 'wmake'] if '+source' in spec: dirs.extend(['applications', 'src', 'tutorials']) for d in dirs: - install_tree( - d, - join_path(self.projectdir, d), - symlinks=True) + if os.path.isdir(d): + install_tree( + d, + join_path(self.projectdir, d), + symlinks=True) dirs = ['platforms'] if '+source' in spec: @@ -846,7 +852,7 @@ class OpenfoamArch(object): self.compiler = None # <- %compiler self.arch_option = '' # Eg, -march=knl self.label_size = None # <- +int64 - self.precision_option = 'DP' # <- +float32 + self.precision_option = 'DP' # <- +float32 | +spdp self.compile_option = kwargs.get('compile-option', '-spack') self.arch = None self.options = None @@ -858,12 +864,11 @@ class OpenfoamArch(object): elif kwargs.get('label-size', True): self.label_size = '32' - if '+float32' in spec: + if '+spdp' in spec: + self.precision_option = 'SPDP' + elif '+float32' in spec: self.precision_option = 'SP' - # TDB: mixed precision? - # self.precision_option = 'SPDP' - # Processor/architecture-specific optimizations if '+knl' in spec: self.arch_option = '-march=knl' diff --git a/var/spack/repos/builtin/packages/openfst/package.py b/var/spack/repos/builtin/packages/openfst/package.py index d8f6b01475..8399c6fcb9 100644 --- a/var/spack/repos/builtin/packages/openfst/package.py +++ b/var/spack/repos/builtin/packages/openfst/package.py @@ -16,6 +16,7 @@ class Openfst(AutotoolsPackage): url = "http://www.openfst.org/twiki/pub/FST/FstDownload/openfst-1.6.1.tar.gz" list_url = "http://www.openfst.org/twiki/bin/view/FST/FstDownload" + version('1.7.9', sha256='9319aeb31d1e2950ae25449884e255cc2bc9dfaf987f601590763e61a10fbdde') version('1.6.7', sha256='e21a486d827cde6a592c8e91721e4540ad01a5ae35a60423cf17be4d716017f7') version('1.6.1', sha256='5245af8ebccb96208eec2dfe3b3a81143d3565a4d41220bff299287fb3333f7d') version('1.6.0', sha256='c03467951631af3f74a6f33ffd50f04285bc4562f79127afd95785120379d293') @@ -30,7 +31,7 @@ class Openfst(AutotoolsPackage): version('1.4.0', sha256='eb557f37560438f03912b4e43335c4c9e72aa486d4f2046127131185eb88f17a') conflicts('%intel@16:') - conflicts('%gcc@6:') + conflicts('%gcc@6:', when='@:1.6.7') variant('far', default=False, description="Enable FAR support") diff --git a/var/spack/repos/builtin/packages/openloops/package.py b/var/spack/repos/builtin/packages/openloops/package.py new file mode 100644 index 0000000000..9a1081c2b6 --- /dev/null +++ b/var/spack/repos/builtin/packages/openloops/package.py @@ -0,0 +1,124 @@ +# 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 Openloops(Package): + """The OpenLoops 2 program is a fully automated implementation of the + Open Loops algorithm combined with on-the-fly reduction methods, + which allows for the fast and stable numerical evaluation of tree + and one-loop matrix elements for any Standard Model process + at NLO QCD and NLO EW. """ + + homepage = "https://openloops.hepforge.org/" + url = "https://openloops.hepforge.org/downloads?f=OpenLoops-2.1.1.tar.gz" + + version('2.1.1', sha256='f1c47ece812227eab584e2c695fef74423d2f212873f762b8658f728685bcb91') + + all_processes = ( + "tbln", "tbln_ew", "tbqq", "tbw", "pptttt", "pptttt_ew", "pptt", + "pptt_ew", "ppttbb", "ppttj", "ppttj_ew", "ppttjj", + "pptaj", "pptajj", "pptllj", "pptlljj", "pptln", "pptw", "pptwj", + "pptzj", "pptzjj", "ppthj", "ppthjj", "pptj", + "pptjj", "ppjj", "ppjj_ew", "ppjjj", "ppjjj_ew", "ppjjj_nf5", "ppjjjj", + "pplllvvv_ew", "ppatt", "ppatt_ew", + "ppattj", "pplltt", "pplltt_ew", "ppllttj", "ppllttj_ew", "pplntt", + "pplnttj", "ppwtt", "ppwtt_ew", "ppwttj", + "ppwttj_ew", "ppztt", "ppztt_ew", "ppzttj", "ppaatt", "ppwwtt", + "ppzatt", "ppzztt", "ppvvvv", "ppaaaj2", "ppllaa", + "ppllaaj", "pplllla", "ppvvv", "ppvvv2", "ppvvv_ew", "ppvvvj", + "ppaajj", "ppaajj2", "ppaajjj", "pplla", "pplla2", + "pplla_ew", "ppllaj", "ppllaj2", "ppllaj_ew", "ppllaj_nf5", "ppllajj", + "ppllll", "ppllll2", "ppllll2_nf5", + "ppllll2_onlyh", "ppllll_ew", "ppllllj", "ppllllj2", "ppllllj2_nf5", + "ppllllj2_nf5_notridr", "ppllllj2_nf5_sr", + "ppllllj2_onlyh", "ppllnnjj_ew", "ppllnnjj_vbs", "pplnajj", "ppvv", + "ppvv2", "ppvv_ew", "ppvvj", "ppvvj2", + "ppvvj_ew", "ppwajj", "ppwwjj", "ppzajj", "ppzwj_ew", "ppzwjj", + "ppzzjj", "ppajj", "ppajj2", "ppajj_ew", "ppajjj", + "ppllj", "ppllj2", "ppllj_ew", "ppllj_nf5", "pplljj", "pplljj_ew", + "pplljjj", "pplnj_ckm", "pplnjj", "pplnjj_ckm", + "pplnjj_ew", "pplnjjj", "ppnnjj_ew", "ppnnjjj", "ppvj", "ppvj2", + "ppvj_ew", "ppwj_ckm", "ppwjj", "ppwjj_ckm", + "ppwjj_ew", "ppwjjj", "ppzjj", "ppzjj_ew", "ppzjjj", "pphtt", + "pphtt_ew", "pphttj", "pphlltt", "pphll", "pphll2", + "pphll_ew", "pphllj", "pphllj2", "pphllj_ew", "pphlljj", "pphlljj_top", + "pphlnj_ckm", "pphlnjj", "pphv", "pphv_ew", + "pphwjj", "pphz2", "pphzj2", "pphzjj", "pphhtt", "pphhv", "pphhh2", + "heftpphh", "heftpphhj", "heftpphhjj", "pphh2", + "pphhj2", "pphhjj2", "pphhjj_vbf", "bbhj", "heftpphj", "heftpphjj", + "heftpphjjj", "pphbb", "pphbbj", "pphj2", + "pphjj2", "pphjj_vbf", "pphjj_vbf_ew", "pphjjj2", "eetttt", "eettttj", + "eellllbb", "eett", "eett_ew", "eettj", + "eettjj", "eevtt", "eevttj", "eevttjj", "eevvtt", "eevvttj", + "eellll_ew", "eevv_ew", "eevvjj", "eell_ew", "eevjj", + "eehtt", "eehttj", "eehll_ew", "eehvtt", "eehhtt", "heftppllj", + "heftpplljj", "heftpplljjj") + + variant('compile_extra', default=False, + description='Compile real radiation tree amplitudes') + variant('processes', description='Processes to install. See https://' + + 'openloops.hepforge.org/process_' + + 'library.php?repo=public for details', + values=disjoint_sets(('all.coll',), ('lhc.coll',), ('lcg.coll',), + all_processes).with_default('lhc.coll')) + + variant('num_jobs', description='Number of parallel jobs to run. ' + + 'Set to 1 if compiling a large number' + + 'of processes (e.g. lcg.coll)', default=0) + depends_on('python', type=("build", "run")) + + phases = ['configure', 'build', 'build_processes', 'install'] + + def configure(self, spec, prefix): + spack_env = ('PATH LD_LIBRARY_PATH CPATH C_INCLUDE_PATH' + + 'CPLUS_INCLUDE_PATH INTEL_LICENSE_FILE').split() + for k in env.keys(): + if k.startswith('SPACK_'): + spack_env.append(k) + + spack_env = ' '.join(spack_env) + is_intel = self.spec.satisfies('%intel') + njobs = self.spec.variants['num_jobs'].value + + with open('openloops.cfg', 'w') as f: + f.write('[OpenLoops]\n') + f.write('import_env={0}\n'.format(spack_env)) + f.write('num_jobs = {0}\n'.format(njobs)) + f.write('process_lib_dir = {0}\n'.format(self.spec.prefix.proclib)) + f.write('cc = {0}\n'.format(env['SPACK_CC'])) + f.write('cxx = {0}\n'.format(env['SPACK_CXX'])) + f.write('fortran_compiler = {0}\n'.format(env['SPACK_FC'])) + if self.spec.satisfies('@1.3.1') and not is_intel: + f.write('gfortran_f_flags = -ffree-line-length-none\n') + if self.spec.satisfies('@2.1.1') and not is_intel: + f.write('gfortran_f_flags = -ffree-line-length-none ' + + '-fdollar-ok -mcmodel=medium\n') + + if self.spec.satisfies('@:1.999.999 processes=lcg.coll'): + copy(join_path(os.path.dirname(__file__), 'sft1.coll'), 'lcg.coll') + elif self.spec.satisfies('@2:2.999.999 processes=lcg.coll'): + copy(join_path(os.path.dirname(__file__), 'sft2.coll'), 'lcg.coll') + + def build(self, spec, prefix): + scons = Executable('./scons') + scons('generator=1', 'compile=2') + + def build_processes(self, spec, prefix): + ol = Executable('./openloops') + processes = self.spec.variants['processes'].value + if '+compile_extra' in self.spec: + ce = 'compile_extra=1' + else: + ce = '' + + ol('libinstall', ce, *processes) + + def install(self, spec, prefix): + install_tree(join_path(self.stage.path, 'spack-src'), + self.prefix, + ignore=lambda x: x in ('process_obj', 'process_src')) diff --git a/var/spack/repos/builtin/packages/openloops/sft1.coll b/var/spack/repos/builtin/packages/openloops/sft1.coll new file mode 100644 index 0000000000..1a4bb5d404 --- /dev/null +++ b/var/spack/repos/builtin/packages/openloops/sft1.coll @@ -0,0 +1,26 @@ +ppll +ppllj +pplljj +ppln +pplnj +pplnjj +pptt +ppttj +ppttjj +pptj +pptjj +ppjj +ppjjj +ppjjjj +ppaa +ppaaj +ppaajj +ppw +ppwj +ppwjj +ppz +ppzj +ppzjj +tbw +eevvjj +eett diff --git a/var/spack/repos/builtin/packages/openloops/sft2.coll b/var/spack/repos/builtin/packages/openloops/sft2.coll new file mode 100644 index 0000000000..b7d9b2423c --- /dev/null +++ b/var/spack/repos/builtin/packages/openloops/sft2.coll @@ -0,0 +1,76 @@ +pptttt +pptt +pptt_ew +ppttbb +ppttj +ppttj_ew +pptw +pptj +pptjj +ppjj +ppjj_ew +ppjjj +ppjjj_ew +ppatt +ppattj +pplltt +ppllttj +pplntt +pplnttj +ppwtt +ppwttj +ppllaa +pplllla +ppvvv +ppvvv_ew +ppvvvj +ppaaj +ppaaj2 +pplla +pplla_ew +ppllaj +ppllll +ppllll2 +ppllll2_onlyh +ppllll_ew +ppllllj +ppllllj2 +ppllllj2_onlyh +ppllnnjj_ew +ppllnnjj_vbs +pplnajj +ppvv +ppvv2 +ppvv_ew +ppvvj +ppvvj2 +ppvvj_ew +ppajj +ppajj_ew +ppllj +ppllj_ew +pplljj +pplljj_ew +pplnjj +pplnjj_ew +ppnnjj_ew +ppvj +ppvj_ew +ppwjj +ppwjj_ew +ppzjj +ppzjj_ew +pphtt +pphtt_ew +pphttj +bbhj +heftpphj +heftpphjj +pph2 +pphbb +pphbbj +pphj2 +pphjj_vbf +pphjj_vbf_ew +eett +tbw diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 4184e64f02..1d19b1fbfd 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -219,6 +219,10 @@ class Openmpi(AutotoolsPackage): variant('cxx', default=False, description='Enable C++ MPI bindings') variant('cxx_exceptions', default=False, description='Enable C++ Exception support') variant('gpfs', default=True, description='Enable GPFS support (if present)') + variant('singularity', default=False, + description="Build support for the Singularity container") + variant('lustre', default=False, + description="Lustre filesystem library support") # Adding support to build a debug version of OpenMPI that activates # Memchecker, as described here: # @@ -265,6 +269,9 @@ class Openmpi(AutotoolsPackage): depends_on('sqlite', when='+sqlite3@:1.11') depends_on('zlib', when='@3.0.0:') depends_on('valgrind~mpi', when='+memchecker') + # Singularity release 3 works better + depends_on('singularity@3.0.0:', when='+singularity') + depends_on('lustre', when='+lustre') depends_on('opa-psm2', when='fabrics=psm2') depends_on('rdma-core', when='fabrics=verbs') @@ -317,6 +324,8 @@ class Openmpi(AutotoolsPackage): conflicts('schedulers=loadleveler', when='@3.0.0:', msg='The loadleveler scheduler is not supported with ' 'openmpi(>=3.0.0).') + conflicts('+singularity', when='@5:', + msg='singularity support has been dropped in OpenMPI 5') filter_compiler_wrappers('openmpi/*-wrapper-data*', relative_root='share') @@ -528,6 +537,15 @@ class Openmpi(AutotoolsPackage): '--with-valgrind={0}'.format(spec['valgrind'].prefix), ]) + # Singularity container support + if spec.satisfies('+singularity @:4.9'): + singularity_opt = '--with-singularity={0}'.format( + spec['singularity'].prefix) + config_args.append(singularity_opt) + # Lustre filesystem support + if spec.satisfies('+lustre'): + lustre_opt = '--with-lustre={0}'.format(spec['lustre'].prefix) + config_args.append(lustre_opt) # Hwloc support if spec.satisfies('@1.5.2:'): config_args.append('--with-hwloc={0}'.format(spec['hwloc'].prefix)) diff --git a/var/spack/repos/builtin/packages/openslide/package.py b/var/spack/repos/builtin/packages/openslide/package.py index d86af5a1aa..c41da2461b 100644 --- a/var/spack/repos/builtin/packages/openslide/package.py +++ b/var/spack/repos/builtin/packages/openslide/package.py @@ -19,3 +19,6 @@ class Openslide(AutotoolsPackage): depends_on('libtiff') depends_on('libxml2') depends_on('sqlite@3.6:') + depends_on('glib') + depends_on('cairo+pdf') + depends_on('gdk-pixbuf') diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index ae47568ce8..3bee1ea0a1 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -9,6 +9,7 @@ from spack import * import spack.architecture import os +import re class Openssl(Package): # Uses Fake Autotools, should subclass Package @@ -23,6 +24,8 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package list_url = "http://www.openssl.org/source/old/" list_depth = 1 + executables = ['openssl'] + # 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.1g', sha256='ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46') @@ -75,7 +78,11 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package depends_on('perl@5.14.0:', type=('build', 'test')) - parallel = False + @classmethod + def determine_version(cls, exe): + output = Executable(exe)('version', output=str) + match = re.search(r'OpenSSL.(\S+)*', output) + return match.group(1) if match else None @property def libs(self): @@ -119,8 +126,10 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package make() if self.run_tests: - make('test') # 'VERBOSE=1' - make('install') + make('test', parallel=False) # 'VERBOSE=1' + + # See https://github.com/openssl/openssl/issues/7466#issuecomment-432148137 + make('install', parallel=False) @run_after('install') def link_system_certs(self): diff --git a/var/spack/repos/builtin/packages/parallelmergetree/package.py b/var/spack/repos/builtin/packages/parallelmergetree/package.py new file mode 100644 index 0000000000..36069e755f --- /dev/null +++ b/var/spack/repos/builtin/packages/parallelmergetree/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 Parallelmergetree(CMakePackage): + """A multi-runtime implementation of a distributed merge tree + segmentation algorithm. The implementation relies on the framework + BabelFlow, which allows to execute the algorithm on different runtime + systems.""" + + homepage = "https://bitbucket.org/cedmav/parallelmergetree" + git = "https://bitbucket.org/cedmav/parallelmergetree.git" + + maintainers = ['spetruzza'] + + version('develop', + commit='6774ed74fd13b9747ac792978a676ce6e8b05cab', + submodules=True) + + depends_on('babelflow@develop') + + variant("shared", default=True, description="Build ParallelMergeTree as shared libs") + + def cmake_args(self): + args = [ + '-DBUILD_SHARED_LIBS:BOOL={0}'.format( + 'ON' if '+shared' in spec else 'OFF'), + '-DLIBRARY_ONLY=ON' + ] + return args diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index bb8b140b74..018cc68290 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.1', sha256='7653950392a0d7c0287c26f1d3a25cdbaa11baa7524b0af0e6a1a0d7d487d034') version('5.8.0', sha256='219e4107abf40317ce054408e9c3b22fb935d464238c1c00c0161f1c8697a3f9') version('5.7.0', sha256='e41e597e1be462974a03031380d9e5ba9a7efcdb22e4ca2f3fec50361f310874') version('5.6.2', sha256='1f3710b77c58a46891808dbe23dc59a1259d9c6b7bb123aaaeaa6ddf2be882ea') @@ -51,7 +52,8 @@ class Paraview(CMakePackage, CudaPackage): description='Use module kits') conflicts('+python', when='+python3') - conflicts('+python', when='@5.6:') + # Python 2 support dropped with 5.9.0 + conflicts('+python', when='@5.9:') conflicts('+python3', when='@:5.5') conflicts('+shared', when='+cuda') # Legacy rendering dropped in 5.5 @@ -110,6 +112,11 @@ class Paraview(CMakePackage, CudaPackage): depends_on('zlib') depends_on('cmake@3.3:', type='build') + # Can't contretize with python2 and py-setuptools@45.0.0: + depends_on('py-setuptools@:44.99.99', when='+python') + # Can't contretize with python2 and py-pillow@7.0.0: + depends_on('py-pillow@:6', when='+python') + patch('stl-reader-pv440.patch', when='@4.4.0') # Broken gcc-detection - improved in 5.1.0, redundant later @@ -232,13 +239,20 @@ class Paraview(CMakePackage, CudaPackage): '-DPARAVIEW_QT_VERSION=%s' % spec['qt'].version[0], ]) + # CMake flags for python have changed with newer ParaView versions + # Make sure Spack uses the right cmake flags if '+python' in spec or '+python3' in spec: + py_use_opt = 'USE' if spec.satisfies('@5.8:') else 'ENABLE' + py_ver_opt = 'PARAVIEW' if spec.satisfies('@5.7:') else 'VTK' + py_ver_val = 3 if '+python3' in spec else 2 cmake_args.extend([ - '-DPARAVIEW_ENABLE_PYTHON:BOOL=ON', + '-DPARAVIEW_%s_PYTHON:BOOL=ON' % py_use_opt, '-DPYTHON_EXECUTABLE:FILEPATH=%s' % spec['python'].command.path, - '-DVTK_USE_SYSTEM_MPI4PY:BOOL=%s' % variant_bool('+mpi') + '-DVTK_USE_SYSTEM_MPI4PY:BOOL=%s' % variant_bool('+mpi'), + '-D%s_PYTHON_VERSION:STRING=%d' % (py_ver_opt, py_ver_val) ]) + else: cmake_args.append('-DPARAVIEW_ENABLE_PYTHON:BOOL=OFF') diff --git a/var/spack/repos/builtin/packages/pbbam/package.py b/var/spack/repos/builtin/packages/pbbam/package.py index 26622715e9..03be8f3b61 100644 --- a/var/spack/repos/builtin/packages/pbbam/package.py +++ b/var/spack/repos/builtin/packages/pbbam/package.py @@ -34,9 +34,10 @@ class Pbbam(CMakePackage): return options def install(self, spec, prefix): - install_tree('spack-build/bin', prefix.bin) - install_tree('spack-build/lib', prefix.lib) install_tree('include/pbbam', prefix.include.pbbam) + with working_dir(self.build_directory): + install_tree('bin', prefix.bin) + install_tree('lib', prefix.lib) def setup_dependent_build_environment(self, env, dependent_spec): env.set('PacBioBAM_LIBRARIES', self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index ae47c8ce03..a68b97eac6 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -11,6 +11,7 @@ # Author: Justin Too <justin@doubleotoo.com> # Date: September 6, 2015 # +import re import os from contextlib import contextmanager @@ -27,6 +28,8 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # URL must remain http:// so Spack can bootstrap curl url = "http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz" + executables = [r'^perl(-?\d+.*)?$'] + # see http://www.cpan.org/src/README.html for # explanation of version numbering scheme @@ -59,6 +62,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package extendable = True depends_on('gdbm') + depends_on('berkeley-db') # there has been a long fixed issue with 5.22.0 with regard to the ccflags # definition. It is well documented here: @@ -92,6 +96,40 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package phases = ['configure', 'build', 'install'] + @classmethod + def determine_version(cls, exe): + perl = spack.util.executable.Executable(exe) + output = perl('--version', output=str) + if output: + match = re.search(r'perl.*\(v([0-9.]+)\)', output) + if match: + return match.group(1) + return None + + @classmethod + def determine_variants(cls, exes, version): + for exe in exes: + perl = spack.util.executable.Executable(exe) + output = perl('-V', output=str) + variants = '' + if output: + match = re.search(r'-Duseshrplib', output) + if match: + variants += '+shared' + else: + variants += '~shared' + match = re.search(r'-Duse.?threads', output) + if match: + variants += '+threads' + else: + variants += '~threads' + path = os.path.dirname(exe) + if 'cpanm' in os.listdir(path): + variants += '+cpanm' + else: + variants += '~cpanm' + return variants + # On a lustre filesystem, patch may fail when files # aren't writeable so make pp.c user writeable # before patching. This should probably walk the diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 9da9740674..0a44765056 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -19,6 +19,9 @@ class Petsc(Package): version('develop', branch='master') version('xsdk-0.2.0', tag='xsdk-0.2.0') + version('3.13.4', sha256='8d470cba1ceb9638694550134a2f23aac85ed7249cb74992581210597d978b94') + version('3.13.3', sha256='dc744895ee6b9c4491ff817bef0d3abd680c5e3c25e601be44240ce65ab4f337') + version('3.13.2', sha256='6083422a7c5b8e89e5e4ccf64acade9bf8ab70245e25bca3a3da03caf74602f1') version('3.13.1', sha256='74a895e44e2ff1146838aaccb7613e7626d99e0eed64ca032c87c72d084efac3') version('3.13.0', sha256='f0ea543a54145c5d1387e25b121c3fd1b1ca834032c5a33f6f1d929e95bdf0e5') version('3.12.5', sha256='d676eb67e79314d6cca6422d7c477d2b192c830b89d5edc6b46934f7453bcfc0') @@ -101,10 +104,47 @@ class Petsc(Package): description='Enable when mpiexec is not available to run binaries') variant('valgrind', default=False, description='Enable Valgrind Client Request mechanism') + variant('jpeg', default=False, + description='Activates support for JPEG') + variant('libpng', default=False, + description='Activates support for PNG') + variant('giflib', default=False, + description='Activates support for GIF') + variant('mpfr', default=False, + description='Activates support for MPFR') + variant('moab', default=False, + description='Acivates support for MOAB (only parallel)') + variant('random123', default=False, + description='Activates support for Random123') + variant('exodusii', default=False, + description='Activates support for ExodusII (only parallel)') + variant('cgns', default=False, + description='Activates support for CGNS (only parallel)') + variant('memkind', default=False, + description='Activates support for Memkind') + variant('p4est', default=False, + description='Activates support for P4Est (only parallel)') + variant('saws', default=False, + description='Activates support for Saws') + variant('libyaml', default=False, + description='Activates support for YAML') # 3.8.0 has a build issue with MKL - so list this conflict explicitly conflicts('^intel-mkl', when='@3.8.0') + # These require +mpi + mpi_msg = 'Requires +mpi' + conflicts('+cgns', when='~mpi', msg=mpi_msg) + conflicts('+exodusii', when='~mpi', msg=mpi_msg) + conflicts('+fftw', when='~mpi', msg=mpi_msg) + conflicts('+hdf5', when='~mpi', msg=mpi_msg) + conflicts('+hypre', when='~mpi', msg=mpi_msg) + conflicts('+moab', when='~mpi', msg=mpi_msg) + conflicts('+mumps', when='~mpi', msg=mpi_msg) + conflicts('+p4est', when='~mpi', msg=mpi_msg) + conflicts('+superlu-dist', when='~mpi', msg=mpi_msg) + conflicts('+trilinos', when='~mpi', msg=mpi_msg) + filter_compiler_wrappers( 'petscvariables', relative_root='lib/petsc/conf' ) @@ -119,6 +159,8 @@ class Petsc(Package): patch('xlf_fix-dup-petscfecreate.patch', when='@3.11.0') + depends_on('diffutils', type='build') + # Virtual dependencies # Git repository needs sowing to build Fortran interface depends_on('sowing', when='@develop') @@ -146,21 +188,27 @@ class Petsc(Package): depends_on('hdf5@:1.10.99+mpi', when='@:3.12.99+hdf5+mpi') depends_on('hdf5+mpi', when='@3.13:+hdf5+mpi') + depends_on('hdf5+mpi', when='+exodusii+mpi') + depends_on('hdf5+mpi', when='+cgns+mpi') depends_on('zlib', when='+hdf5') + depends_on('zlib', when='+libpng') + depends_on('zlib', when='+p4est') 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 # https://bitbucket.org/petsc/petsc/src/90564b43f6b05485163c147b464b5d6d28cde3ef/config/BuildSystem/config/packages/hypre.py - 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@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('hypre@:2.13.99+mpi~internal-superlu~int64', when='@:3.8.99+hypre+mpi~complex~int64') + depends_on('hypre@:2.13.99+mpi~internal-superlu+int64', when='@:3.8.99+hypre+mpi~complex+int64') + depends_on('hypre@2.14:2.18.2+mpi~internal-superlu~int64', when='@3.9:3.13.99+hypre+mpi~complex~int64') + depends_on('hypre@2.14:2.18.2+mpi~internal-superlu+int64', when='@3.9:3.13.99+hypre+mpi~complex+int64') + depends_on('hypre@2.14:+mpi~internal-superlu~int64', when='@3.14:+hypre+mpi~complex~int64') + depends_on('hypre@2.14:+mpi~internal-superlu+int64', when='@3.14:+hypre+mpi~complex+int64') + depends_on('hypre@xsdk-0.2.0+mpi~internal-superlu+int64', when='@xsdk-0.2.0+hypre+mpi~complex+int64') + depends_on('hypre@xsdk-0.2.0+mpi~internal-superlu~int64', when='@xsdk-0.2.0+hypre+mpi~complex~int64') + depends_on('hypre@develop+mpi~internal-superlu+int64', when='@develop+hypre+mpi~complex+int64') + depends_on('hypre@develop+mpi~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:5.1.3~int64', when='@3.7:3.7.99+superlu-dist+mpi~int64') @@ -179,12 +227,27 @@ class Petsc(Package): depends_on('superlu-dist@develop+int64', when='@develop+superlu-dist+mpi+int64') depends_on('mumps+mpi', when='+mumps+mpi~int64') depends_on('scalapack', when='+mumps+mpi~int64') - depends_on('trilinos@12.6.2:', when='@3.7.0:+trilinos+mpi') - depends_on('trilinos@xsdk-0.2.0', when='@xsdk-0.2.0+trilinos+mpi') - depends_on('trilinos@develop', when='@xdevelop+trilinos+mpi') + depends_on('trilinos@12.6.2:+mpi', when='@3.7.0:+trilinos+mpi') + depends_on('trilinos@xsdk-0.2.0+mpi', when='@xsdk-0.2.0+trilinos+mpi') + depends_on('trilinos@develop+mpi', when='@xdevelop+trilinos+mpi') depends_on('fftw+mpi', when='+fftw+mpi') depends_on('suite-sparse', when='+suite-sparse') depends_on('libx11', when='+X') + depends_on('mpfr', when='+mpfr') + depends_on('gmp', when='+mpfr') + depends_on('jpeg', when='+jpeg') + depends_on('libpng', when='+libpng') + depends_on('giflib', when='+giflib') + depends_on('exodusii+mpi', when='+exodusii+mpi') + depends_on('netcdf-c+mpi', when='+exodusii+mpi') + depends_on('parallel-netcdf', when='+exodusii+mpi') + depends_on('random123', when='+random123') + depends_on('moab+mpi', when='+moab+mpi') + depends_on('cgns+mpi', when='+cgns+mpi') + depends_on('memkind', when='+memkind') + depends_on('p4est+mpi', when='+p4est+mpi') + depends_on('saws', when='+saws') + depends_on('libyaml', when='+libyaml') def url_for_version(self, version): if version >= Version('3.13.0'): @@ -203,18 +266,6 @@ class Petsc(Package): if self.compiler.fc is not None else '0'), '--with-mpi=0' ] - error_message_fmt = \ - '\t{library} support requires "+mpi" to be activated' - - # If mpi is disabled (~mpi), it's an error to have any of these - # enabled. This generates a list of any such errors. - errors = [ - error_message_fmt.format(library=x) - for x in ('hdf5', 'hypre', 'mumps', 'superlu-dist') - if ('+' + x) in self.spec] - if errors: - errors = ['incompatible variants given'] + errors - raise RuntimeError('\n'.join(errors)) else: compiler_opts = [ '--with-cc=%s' % self.spec['mpi'].mpicc, @@ -291,20 +342,36 @@ class Petsc(Package): ]) # Activates library support if needed (i.e. direct dependency) - for library in ('cuda', 'metis', 'hypre', 'parmetis', - 'mumps', 'trilinos', 'fftw', 'valgrind'): + if '^libjpeg-turbo' in spec: + jpeg_library = 'libjpeg-turbo' + else: + jpeg_library = 'libjpeg' + + for library in ('cuda', 'metis', 'hypre', 'parmetis', 'mumps', + 'trilinos', 'fftw', 'valgrind', 'gmp', 'libpng', + 'giflib', 'mpfr', 'netcdf-c', 'parallel-netcdf', + 'moab', 'random123', 'exodusii', 'cgns', 'memkind', + 'p4est', 'saws', 'libyaml', jpeg_library): # Cannot check `library in spec` because of transitive deps # Cannot check variants because parmetis keys on +metis library_requested = library in spec.dependencies_dict() options.append( '--with-{library}={value}'.format( - library=library, + library=('libjpeg' if library == 'libjpeg-turbo' + else 'netcdf' if library == 'netcdf-c' + else 'pnetcdf' if library == 'parallel-netcdf' + else 'yaml' if library == 'libyaml' + else library), value=('1' if library_requested else '0')) ) if library_requested: options.append( '--with-{library}-dir={path}'.format( - library=library, path=spec[library].prefix) + library=('libjpeg' if library == 'libjpeg-turbo' + else 'netcdf' if library == 'netcdf-c' + else 'pnetcdf' if library == 'parallel-netcdf' + else 'yaml' if library == 'libyaml' + else library), path=spec[library].prefix) ) # PETSc does not pick up SuperluDist from the dir as they look for diff --git a/var/spack/repos/builtin/packages/pgi/package.py b/var/spack/repos/builtin/packages/pgi/package.py index bc5f809109..1ad53bb20b 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('20.4', sha256='f3ecc2104b304cd5c8b20e3ffdb5da88f2b5f7cc148e8daf00561928a5cbbc2e') version('19.10', sha256='ac9db73ba80a66fe3bc875f63aaa9e16f54674a4e88b25416432430ba8cf203d') version('19.7', sha256='439692aeb51eff464b968c3bfed4536ed7bd3ba6f8174bc0ebe2219a78fe62ae') version('19.4', sha256='23eee0d4da751dd6f247d624b68b03538ebd172e63a053c41bb67013f07cf68e') diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py index b51d3c12c2..0eae1ac429 100644 --- a/var/spack/repos/builtin/packages/plumed/package.py +++ b/var/spack/repos/builtin/packages/plumed/package.py @@ -25,8 +25,10 @@ class Plumed(AutotoolsPackage): git = 'https://github.com/plumed/plumed2.git' version('master', branch='master') + version('2.6.1', sha256='c1b3c397b2d971140aa240dde50e48a04ce78e3dedb02b6dca80fa53f8026e4e') version('2.6.0', sha256='3d57ae460607a49547ef38a52c4ac93493a3966857c352280a9c05f5dcdb1820') - version('2.5.4', preferred=True, sha256='a1647e598191f261e75d06351e607475d395af481315052a4c28563ac9989a7f') + version('2.5.5', preferred=True, sha256='70faa9ff1938e286dc388cb793b39840953e5646855b684f48df1bc864b737e8') + version('2.5.4', sha256='a1647e598191f261e75d06351e607475d395af481315052a4c28563ac9989a7f') version('2.5.3', sha256='543288be667dc4201fc461ecd2dd4878ddfbeac682d0c021c99ea8e501c7c9dc') version('2.5.2', sha256='85d10cc46e2e37c7719cf51c0931278f56c2c8f8a9d86188b2bf97c2535a2ab4') version('2.5.1', sha256='de309980dcfd6f6e0e70e138856f4bd9eb4d8a513906a5e6389f18a5af7f2eba') diff --git a/var/spack/repos/builtin/packages/podio/package.py b/var/spack/repos/builtin/packages/podio/package.py index 7211cdf111..8667dec94e 100644 --- a/var/spack/repos/builtin/packages/podio/package.py +++ b/var/spack/repos/builtin/packages/podio/package.py @@ -17,6 +17,7 @@ class Podio(CMakePackage): maintainers = ['vvolkl', 'drbenmorgan'] version('master', branch='master') + version('0.11.0', sha256='4b2765566a14f0ddece2c894634e0a8e4f42f3e44392addb9110d856f6267fb6') version('0.10.0', sha256='b5b42770ec8b96bcd2748abc05669dd3e4d4cc84f81ed57d57d2eda1ade90ef2') version('0.9.2', sha256='8234d1b9636029124235ef81199a1220968dcc7fdaeab81cdc96a47af332d240') version('0.9.0', sha256='3cde67556b6b76fd2d004adfaa3b3b6173a110c0c209792bfdb5f9353e21076f') @@ -35,6 +36,7 @@ class Podio(CMakePackage): depends_on('cmake@3.8:', type='build') depends_on('python', type=('build', 'run')) depends_on('py-pyyaml', type=('build', 'run')) + depends_on('py-jinja2@2.10.1:', type=('build', 'run'), when='@0.12:') def cmake_args(self): args = [] @@ -44,15 +46,6 @@ class Podio(CMakePackage): args.append('-DBUILD_TESTING=%s' % self.run_tests) 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) - def url_for_version(self, version): # podio releases are dashes and padded with a leading zero # the patch version is omitted when 0 diff --git a/var/spack/repos/builtin/packages/poppler/package.py b/var/spack/repos/builtin/packages/poppler/package.py index 2848c81eb1..6ecab70351 100644 --- a/var/spack/repos/builtin/packages/poppler/package.py +++ b/var/spack/repos/builtin/packages/poppler/package.py @@ -15,6 +15,7 @@ class Poppler(CMakePackage): git = "https://gitlab.freedesktop.org/poppler/poppler.git" version('master', branch='master') + version('0.90.1', sha256='984d82e72e91418d280885298c8bdc855a2fd92665fd52a1345b27235e0c71c4') version('0.87.0', sha256='6f602b9c24c2d05780be93e7306201012e41459f289b8279a27a79431ad4150e') version('0.79.0', sha256='f985a4608fe592d2546d9d37d4182e502ff6b4c42f8db4be0a021a1c369528c8') version('0.77.0', sha256='7267eb4cbccd64a58244b8211603c1c1b6bf32c7f6a4ced2642865346102f36b') diff --git a/var/spack/repos/builtin/packages/precice/package.py b/var/spack/repos/builtin/packages/precice/package.py index 45548275c8..36e7811d81 100644 --- a/var/spack/repos/builtin/packages/precice/package.py +++ b/var/spack/repos/builtin/packages/precice/package.py @@ -19,6 +19,7 @@ class Precice(CMakePackage): maintainers = ['fsimonis', 'MakisH'] version('develop', branch='develop') + version('2.1.0', sha256='1e6432724f70d0c6c05fdd645e0026754edbc547719a35bf1d3c12a779b1d00e') version('2.0.2', sha256='72864480f32696e7b6da94fd404ef5cd6586e2e1640613e46b75f1afac8569ed') version('2.0.1', sha256='e4fe2d2063042761ab325f8c802f88ae088c90862af288ad1a642967d074bd50') version('2.0.0', sha256='c8979d366f06e35626a8da08a1c589df77ec13972eb524a1ba99a011e245701f') @@ -48,6 +49,7 @@ class Precice(CMakePackage): depends_on('libxml2') depends_on('mpi', when='+mpi') depends_on('petsc@3.6:', when='+petsc') + depends_on('petsc@3.12:', when='+petsc@2.1.0:') # Python 3 support was added in version 2.0 depends_on('python@2.7:2.8', when='@:1.9+python', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/profugusmc/package.py b/var/spack/repos/builtin/packages/profugusmc/package.py new file mode 100644 index 0000000000..0922b3f470 --- /dev/null +++ b/var/spack/repos/builtin/packages/profugusmc/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 Profugusmc(CMakePackage, CudaPackage): + """ProfugusMC is a Monte Carlo radiation transport mini-app. It is designed + to be a minimal, self-contained version of the Profugus application.""" + + homepage = "https://code.ornl.gov/ProfugusMC/ProfugusMC" + git = "https://code.ornl.gov/ProfugusMC/ProfugusMC.git" + url = "https://code.ornl.gov/ProfugusMC/ProfugusMC/-/archive/master/ProfugusMC-master.tar.gz" + + version('master', branch='master') + + variant('mpi', default=True, description='Enable MPI') + variant('cuda', default=False, description='Enable CUDA') + + depends_on('blas') + depends_on('lapack') + depends_on('mpi', when='+mpi') + depends_on('cuda', when='+cuda') diff --git a/var/spack/repos/builtin/packages/prometheus/package.py b/var/spack/repos/builtin/packages/prometheus/package.py new file mode 100644 index 0000000000..10a9e956c3 --- /dev/null +++ b/var/spack/repos/builtin/packages/prometheus/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 Prometheus(MakefilePackage): + """Prometheus, a Cloud Native Computing Foundation project, is a + systems and service monitoring system.""" + + homepage = "https://prometheus.io/" + url = "https://github.com/prometheus/prometheus/archive/v2.19.2.tar.gz" + + version('2.19.2', sha256='d4e84cae2fed6761bb8a80fcc69b6e0e9f274d19dffc0f38fb5845f11da1bbc3') + version('2.19.1', sha256='b72b9b6bdbae246dcc29ef354d429425eb3c0a6e1596fc8b29b502578a4ce045') + version('2.18.2', sha256='a26c106c97d81506e3a20699145c11ea2cce936427a0e96eb2fd0dc7cd1945ba') + version('2.17.1', sha256='d0b53411ea0295c608634ca7ef1d43fa0f5559e7ad50705bf4d64d052e33ddaf') + version('2.17.0', sha256='b5e508f1c747aaf50dd90a48e5e2a3117fec2e9702d0b1c7f97408b87a073009') + + depends_on('go', type='build') + depends_on('node-js@11.10.1:', type='build') + depends_on('yarn', type='build') + + def build(self, spec, prefix): + make('build', parallel=False) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install('prometheus', prefix.bin) + install('promtool', prefix.bin) + install('tsdb/tsdb', prefix.bin) + install_tree('documentation', prefix.documentation) diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py index 1cbd94b314..060d345b45 100644 --- a/var/spack/repos/builtin/packages/protobuf/package.py +++ b/var/spack/repos/builtin/packages/protobuf/package.py @@ -12,8 +12,13 @@ class Protobuf(Package): """Google's data interchange format.""" homepage = "https://developers.google.com/protocol-buffers" - url = "https://github.com/protocolbuffers/protobuf/archive/v3.10.1.tar.gz" + url = "https://github.com/protocolbuffers/protobuf/archive/v3.12.2.tar.gz" + version('3.12.2', sha256='bb8ce9ba11eb7bccf080599fe7cad9cc461751c8dd1ba61701c0070d58cde973') + version('3.12.1', sha256='cb9b3f9d625b5739a358268eb3421de11cacd90025f5f7672c3930553eca810e') + version('3.12.0', sha256='946ba5371e423e1220d2cbefc1f65e69a1e81ca5bab62a03d66894172983cfcd') + version('3.11.4', sha256='a79d19dcdf9139fa4b81206e318e33d245c4c9da1ffed21c87288ed4380426f9') + version('3.11.3', sha256='cf754718b0aa945b00550ed7962ddc167167bd922b842199eeb6505e6f344852') version('3.11.2', sha256='e8c7601439dbd4489fe5069c33d374804990a56c2f710e00227ee5d8fd650e67') version('3.11.1', sha256='4f8e805825c53bbc3c9f6b6abc009b5b5679e4702bccfca1121c42ff5ec801c7') version('3.11.0', sha256='6d356a6279cc76d2d5c4dfa6541641264b59eae0bc96b852381361e3400d1f1c') diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py index 64cb85a5ee..bc2e6db011 100644 --- a/var/spack/repos/builtin/packages/psi4/package.py +++ b/var/spack/repos/builtin/packages/psi4/package.py @@ -51,7 +51,7 @@ class Psi4(CMakePackage): ] @run_after('install') - def filter_compilers(self, spec, prefix): + def filter_compilers(self): """Run after install to tell the configuration files to use the compilers that Spack built the package with. @@ -59,6 +59,9 @@ class Psi4(CMakePackage): Spack's generic cxx. We want it to be bound to whatever compiler it was built with.""" + spec = self.spec + prefix = spec.prefix + kwargs = {'ignore_absent': True, 'backup': False, 'string': True} cc_files = ['bin/psi4-config'] diff --git a/var/spack/repos/builtin/packages/py-aiohttp/package.py b/var/spack/repos/builtin/packages/py-aiohttp/package.py new file mode 100644 index 0000000000..e29f467c29 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-aiohttp/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 PyAiohttp(PythonPackage): + """Supports both client and server side of HTTP protocol. + Supports both client and server Web-Sockets out-of-the-box and + avoids Callbacks. Provides Web-server with middlewares and + plugable routing.""" + + homepage = "https://github.com/aio-libs/aiohttp" + url = "https://github.com/aio-libs/aiohttp/archive/v3.6.2.tar.gz" + + version('3.6.2', sha256='4ad2d8393843ea0c7b50a93bf04fb1cf20b93c0a5e958de128efcd2e5f8adf80') + + depends_on('py-setuptools', type='build') + depends_on('python@3.5.3:', type=('build', 'run')) + depends_on('py-attrs@17.3.0:', type=('build', 'run')) + depends_on('py-chardet@2.0:3.999', type=('build', 'run')) + depends_on('py-multidict@4.5:4.999', type=('build', 'run')) + depends_on('py-async-timeout@3.0:3.999', type=('build', 'run')) + depends_on('py-yarl@1.0:1.999', type=('build', 'run')) + depends_on('py-idna-ssl@1.0:', type=('build', 'run'), when='^python@:3.6') + depends_on('py-typing-extensions@3.6.5:', type=('build', 'run'), when='^python@:3.6') diff --git a/var/spack/repos/builtin/packages/py-argcomplete/package.py b/var/spack/repos/builtin/packages/py-argcomplete/package.py index 6a4ad018bd..f1362da76f 100644 --- a/var/spack/repos/builtin/packages/py-argcomplete/package.py +++ b/var/spack/repos/builtin/packages/py-argcomplete/package.py @@ -9,9 +9,11 @@ from spack import * class PyArgcomplete(PythonPackage): """Bash tab completion for argparse.""" - homepage = "https://pypi.python.org/pypi/argcomplete" - url = "https://pypi.io/packages/source/a/argcomplete/argcomplete-1.1.1.tar.gz" + homepage = "https://github.com/kislyuk/argcomplete" + url = "https://pypi.io/packages/source/a/argcomplete/argcomplete-1.12.0.tar.gz" - version('1.1.1', sha256='cca45b5fe07000994f4f06a0b95bd71f7b51b04f81c3be0b4ea7b666e4f1f084') + version('1.12.0', sha256='2fbe5ed09fd2c1d727d4199feca96569a5b50d44c71b16da9c742201f7cc295c') + version('1.1.1', sha256='cca45b5fe07000994f4f06a0b95bd71f7b51b04f81c3be0b4ea7b666e4f1f084') depends_on('py-setuptools', type='build') + depends_on('py-importlib-metadata@0.23:1.999', when='@1.12: ^python@:3.7', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-astropy-healpix/package.py b/var/spack/repos/builtin/packages/py-astropy-healpix/package.py new file mode 100644 index 0000000000..8dee2f92be --- /dev/null +++ b/var/spack/repos/builtin/packages/py-astropy-healpix/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 PyAstropyHealpix(PythonPackage): + """HEALPix (Hierarchical Equal Area isoLatitude Pixelisation) is + an algorithm for pixellizing a sphere that is sometimes used in + Astronomy to store data from all-sky surveys, but the general + algorithm can apply to any field that has to deal with + representing data on a sphere.""" + + homepage = 'https://astropy-healpix.readthedocs.io/en/latest/' + url = 'https://pypi.io/packages/source/a/astropy-healpix/astropy-healpix-0.5.tar.gz' + + version('0.5', sha256='5ae15da796a840f221fb83e25de791e827b6921bc21a365d99bc1a59c7c0cdad') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-astropy@2.0:', type=('build', 'run')) + depends_on('py-numpy@1.11:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-astropy/package.py b/var/spack/repos/builtin/packages/py-astropy/package.py index 1e85cbf070..6e5dc8282b 100644 --- a/var/spack/repos/builtin/packages/py-astropy/package.py +++ b/var/spack/repos/builtin/packages/py-astropy/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import os class PyAstropy(PythonPackage): @@ -11,9 +12,12 @@ class PyAstropy(PythonPackage): package for Astronomy in Python and foster interoperability between Python astronomy packages.""" - homepage = 'http://www.astropy.org/' - url = 'https://pypi.io/packages/source/a/astropy/astropy-3.2.1.tar.gz' + homepage = 'https://astropy.org/' + url = 'https://pypi.io/packages/source/a/astropy/astropy-4.0.1.post1.tar.gz' + install_time_test_callbacks = ['install_test', 'import_module_test'] + + version('4.0.1.post1', sha256='5c304a6c1845ca426e7bc319412b0363fccb4928cb4ba59298acd1918eec44b5') version('3.2.1', sha256='706c0457789c78285e5464a5a336f5f0b058d646d60f4e5f5ba1f7d5bf424b28') version('2.0.14', sha256='618807068609a4d8aeb403a07624e9984f566adc0dc0f5d6b477c3658f31aeb6') version('1.1.2', sha256='6f0d84cd7dfb304bb437dda666406a1d42208c16204043bc920308ff8ffdfad1') @@ -28,14 +32,17 @@ class PyAstropy(PythonPackage): depends_on('python@2.7:2.8,3.3:', when='@1.2:', type=('build', 'run')) depends_on('python@2.6:', type=('build', 'run')) depends_on('py-setuptools', type='build') + depends_on('py-cython@0.29.13:', type='build') + depends_on('py-numpy@1.16:', when='@4.0:', type=('build', 'run')) depends_on('py-numpy@1.13:', when='@3.1:', type=('build', 'run')) depends_on('py-numpy@1.10:', when='@3.0:', type=('build', 'run')) depends_on('py-numpy@1.9:', when='@2.0:', type=('build', 'run')) depends_on('py-numpy@1.7:', when='@1.2:', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run')) + depends_on('pkgconfig', type='build') # Optional dependencies - depends_on('py-scipy', when='+extras', type=('build', 'run')) + depends_on('py-scipy@0.18:', when='+extras', type=('build', 'run')) depends_on('py-h5py', when='+extras', type=('build', 'run')) depends_on('py-beautifulsoup4', when='+extras', type=('build', 'run')) depends_on('py-html5lib', when='+extras', type=('build', 'run')) @@ -59,6 +66,13 @@ class PyAstropy(PythonPackage): depends_on('cfitsio') depends_on('expat') + def patch(self): + # forces the rebuild of files with cython + # avoids issues with PyCode_New() in newer + # versions of python in the distributed + # cython-ized files + os.remove('astropy/cython_version.py') + def build_args(self, spec, prefix): args = [ '--use-system-libraries', @@ -72,3 +86,7 @@ class PyAstropy(PythonPackage): args.extend(['-j', str(make_jobs)]) return args + + def install_test(self): + with working_dir('spack-test', create=True): + python('-c', 'import astropy; astropy.test()') diff --git a/var/spack/repos/builtin/packages/py-async-timeout/package.py b/var/spack/repos/builtin/packages/py-async-timeout/package.py new file mode 100644 index 0000000000..dd7ca9943c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-async-timeout/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 PyAsyncTimeout(PythonPackage): + """asyncio-compatible timeout context manager.""" + + homepage = "https://github.com/aio-libs/async-timeout" + url = "https://github.com/aio-libs/async-timeout/archive/v3.0.1.tar.gz" + + version('3.0.1', sha256='d0a7a927ed6b922835e1b014dfcaa9982caccbb25131320582cc660af7c93949') + + depends_on('py-setuptools', type='build') + depends_on('python@3.5.3:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-batch/package.py b/var/spack/repos/builtin/packages/py-azure-batch/package.py new file mode 100644 index 0000000000..b201ec7660 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-batch/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 PyAzureBatch(PythonPackage): + """Microsoft Azure Batch Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-batch/azure-batch-9.0.0.zip" + + version('9.0.0', sha256='47ca6f50a640915e1cdc5ce3c1307abe5fa3a636236e561119cf62d9df384d84') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-cli-command-modules-nspkg/package.py b/var/spack/repos/builtin/packages/py-azure-cli-command-modules-nspkg/package.py new file mode 100644 index 0000000000..0a40cf2e44 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-cli-command-modules-nspkg/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 PyAzureCliCommandModulesNspkg(PythonPackage): + """Microsoft Azure CLI Command Modules Namespace Package.""" + + homepage = "https://github.com/Azure/azure-cli" + url = "https://pypi.io/packages/source/a/azure-cli-command-modules-nspkg/azure-cli-command-modules-nspkg-2.0.3.tar.gz" + + version('2.0.3', sha256='4bd62bf5facb92dd4f89080e75eaee2ea1d3dd4e57a3d2a760ce501cf53f4e7d') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-cli-nspkg@3.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-cli-core/package.py b/var/spack/repos/builtin/packages/py-azure-cli-core/package.py new file mode 100644 index 0000000000..07e520c530 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-cli-core/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) + + +class PyAzureCliCore(PythonPackage): + """Microsoft Azure Command-Line Tools Core Module.""" + + homepage = "https://github.com/Azure/azure-cli" + url = "https://pypi.io/packages/source/a/azure-cli-core/azure-cli-core-2.9.1.tar.gz" + + version('2.9.1', sha256='8618a30f7ea2188506f29801220c06396d731c26e4de92c327e6b0e8cc790db5') + + depends_on('py-setuptools', type='build') + depends_on('py-adal@1.2.3:1.2.999', type=('build', 'run')) + depends_on('py-argcomplete@1.8:1.999', type=('build', 'run')) + depends_on('py-azure-cli-telemetry', type=('build', 'run')) + depends_on('py-colorama@0.4.1:0.4.999', type=('build', 'run')) + depends_on('py-humanfriendly@4.7:8', type=('build', 'run')) + depends_on('py-jmespath', type=('build', 'run')) + depends_on('py-knack@0.7.1', type=('build', 'run')) + depends_on('py-msal@1.0.0:1.0.999', type=('build', 'run')) + depends_on('py-msal-extensions@0.1.3:0.1.999', type=('build', 'run')) + depends_on('py-msrest@0.4.4:', type=('build', 'run')) + depends_on('py-msrestazure@0.6.3:', type=('build', 'run')) + depends_on('py-paramiko@2.0.8:2.999', type=('build', 'run')) + depends_on('py-pyjwt', type=('build', 'run')) + depends_on('py-pyopenssl@17.1.0:', type=('build', 'run')) + depends_on('py-requests@2.22:2.999', type=('build', 'run')) + depends_on('py-six@1.12:1.999', type=('build', 'run')) + depends_on('py-pkginfo@1.5.0.1:', type=('build', 'run')) + depends_on('py-azure-mgmt-resource@10.0.0', type=('build', 'run')) + depends_on('py-azure-mgmt-core@1.0.0', type=('build', 'run')) + depends_on('py-enum34', when='^python@:3.3', type=('build', 'run')) + depends_on('py-ndg-httpsclient', when='^python@:2.7.8', type=('build', 'run')) + depends_on('py-pyasn1', when='^python@:2.7.8', type=('build', 'run')) + depends_on('py-futures', when='^python@:2', type=('build', 'run')) + depends_on('py-mock', type='test') diff --git a/var/spack/repos/builtin/packages/py-azure-cli-nspkg/package.py b/var/spack/repos/builtin/packages/py-azure-cli-nspkg/package.py new file mode 100644 index 0000000000..31fab8f659 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-cli-nspkg/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 PyAzureCliNspkg(PythonPackage): + """Microsoft Azure CLI Namespace Package.""" + + homepage = "https://github.com/Azure/azure-cli" + url = "https://pypi.io/packages/source/a/azure-cli-nspkg/azure-cli-nspkg-3.0.4.tar.gz" + + version('3.0.4', sha256='1bde56090f548c6435bd3093995cf88e4c445fb040604df8b5b5f70780d79181') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-nspkg@2.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-cli-telemetry/package.py b/var/spack/repos/builtin/packages/py-azure-cli-telemetry/package.py new file mode 100644 index 0000000000..bb379686be --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-cli-telemetry/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 PyAzureCliTelemetry(PythonPackage): + """Microsoft Azure CLI Telemetry Package.""" + + homepage = "https://github.com/Azure/azure-cli" + url = "https://pypi.io/packages/source/a/azure-cli-telemetry/azure-cli-telemetry-1.0.4.tar.gz" + + version('1.0.4', sha256='1f239d544d309c29e827982cc20113eb57037dba16db6cdd2e0283e437e0e577') + + depends_on('py-setuptools', type='build') + depends_on('py-applicationinsights@0.11.1:0.11.999', type=('build', 'run')) + depends_on('py-portalocker@1.2:1.999', type=('build', 'run')) + depends_on('py-mock', type='test') diff --git a/var/spack/repos/builtin/packages/py-azure-cli/package.py b/var/spack/repos/builtin/packages/py-azure-cli/package.py new file mode 100644 index 0000000000..faa09d1cfd --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-cli/package.py @@ -0,0 +1,102 @@ +# 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 PyAzureCli(PythonPackage): + """Microsoft Azure Command-Line Tools.""" + + homepage = "https://github.com/Azure/azure-cli" + url = "https://pypi.io/packages/source/a/azure-cli/azure-cli-2.9.1.tar.gz" + + version('2.9.1', sha256='749d850f73ea8956ab510288c1061dd7066180a8583081a6d560fdc7ac8314d6') + + depends_on('py-setuptools', type='build') + depends_on('py-antlr4-python3-runtime@4.7.2:4.7.999', type=('build', 'run')) + depends_on('py-azure-batch@9.0:9.999', type=('build', 'run')) + depends_on('py-azure-cli-command-modules-nspkg@2.0:2.999', type=('build', 'run')) + depends_on('py-azure-cli-core@2.9.1', type=('build', 'run')) + depends_on('py-azure-cli-nspkg@3.0.3:3.999', type=('build', 'run')) + depends_on('py-azure-cosmos@3.0.2:3.999', type=('build', 'run')) + depends_on('py-azure-datalake-store@0.0.48:0.0.999', type=('build', 'run')) + depends_on('py-azure-functions-devops-build@0.0.22:0.0.999', type=('build', 'run')) + depends_on('py-azure-graphrbac@0.60.0:0.60.999', type=('build', 'run')) + depends_on('py-azure-keyvault@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-advisor@2.0.1:2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-apimanagement@0.1.0:0.1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-applicationinsights@0.1.1:0.1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-appconfiguration@0.4.0:0.4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-authorization@0.52.0:0.52.999', type=('build', 'run')) + depends_on('py-azure-mgmt-batch@9.0.0:9.0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-batchai@2.0:2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-billing@0.2:0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-botservice@0.2.0:0.2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-cdn@4.1.0rc1', type=('build', 'run')) + depends_on('py-azure-mgmt-cognitiveservices@6.2.0:6.2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-compute@13.0:13.999', type=('build', 'run')) + depends_on('py-azure-mgmt-consumption@2.0:2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-containerinstance@1.4:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-containerregistry@3.0.0rc14', type=('build', 'run')) + depends_on('py-azure-mgmt-containerservice@9.0.1:9.0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-cosmosdb@0.15.0:0.15.999', type=('build', 'run')) + depends_on('py-azure-mgmt-datalake-analytics@0.2.1:0.2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-datalake-store@0.5.0:0.5.999', type=('build', 'run')) + depends_on('py-azure-mgmt-datamigration@0.1.0:0.1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-deploymentmanager@0.2.0:0.2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-devtestlabs@4.0:4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-dns@2.1:2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-eventgrid@3.0.0rc7', type=('build', 'run')) + depends_on('py-azure-mgmt-eventhub@4.0.0:4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-hdinsight@1.5.1:1.5.999', type=('build', 'run')) + depends_on('py-azure-mgmt-imagebuilder@0.4.0:0.4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-iotcentral@3.0.0:3.0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-iothub@0.12.0:0.12.999', type=('build', 'run')) + depends_on('py-azure-mgmt-iothubprovisioningservices@0.2.0:0.2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-keyvault@2.2.0:2.2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-kusto@0.3.0:0.3.999', type=('build', 'run')) + depends_on('py-azure-mgmt-loganalytics@0.7.0:0.7.999', type=('build', 'run')) + depends_on('py-azure-mgmt-managedservices@1.0:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-managementgroups@0.1:0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-maps@0.1.0:0.1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-marketplaceordering@0.1:0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-media@2.1:2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-monitor@0.10.0:0.10.999', type=('build', 'run')) + depends_on('py-azure-mgmt-msi@0.2:0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-netapp@0.8.0:0.8.999', type=('build', 'run')) + depends_on('py-azure-mgmt-network@11.0.0:11.0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-policyinsights@0.5.0:0.5.999', type=('build', 'run')) + depends_on('py-azure-mgmt-privatedns@0.1.0:0.1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-rdbms@2.2.0:2.2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-recoveryservices@0.4.0:0.4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-recoveryservicesbackup@0.6.0:0.6.999', type=('build', 'run')) + depends_on('py-azure-mgmt-redhatopenshift@0.1.0', type=('build', 'run')) + depends_on('py-azure-mgmt-redis@7.0.0:7.0.999', type=('build', 'run')) + depends_on('py-azure-mgmt-relay@0.1.0:0.1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-reservations@0.6.0', type=('build', 'run')) + depends_on('py-azure-mgmt-search@2.0:2.999', type=('build', 'run')) + depends_on('py-azure-mgmt-security@0.4.1:0.4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-servicebus@0.6.0:0.6.999', type=('build', 'run')) + depends_on('py-azure-mgmt-servicefabric@0.4.0:0.4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-signalr@0.4.0:0.4.999', type=('build', 'run')) + depends_on('py-azure-mgmt-sql@0.19.0:0.19.999', type=('build', 'run')) + depends_on('py-azure-mgmt-sqlvirtualmachine@0.5.0:0.5.999', type=('build', 'run')) + depends_on('py-azure-mgmt-storage@11.1.0:11.1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-trafficmanager@0.51.0:0.51.999', type=('build', 'run')) + depends_on('py-azure-mgmt-web@0.47.0:0.47.999', type=('build', 'run')) + depends_on('py-azure-multiapi-storage@0.3.2:0.3.999', type=('build', 'run')) + depends_on('py-azure-loganalytics@0.1.0:0.1.999', type=('build', 'run')) + depends_on('py-azure-storage-common@1.4:1.999', type=('build', 'run')) + depends_on('py-cryptography@2.3.1:2.999', type=('build', 'run')) + depends_on('py-fabric@2.4:2.999', type=('build', 'run')) + depends_on('py-jsmin@2.2.2:2.2.999', type=('build', 'run')) + depends_on('py-pytz@2019.1', type=('build', 'run')) + depends_on('py-scp@0.13.2:0.13.999', type=('build', 'run')) + depends_on('py-sshtunnel@0.1.4:0.1.999', type=('build', 'run')) + depends_on('py-urllib3@1.18:1.999+secure', type=('build', 'run')) + depends_on('py-vsts-cd-manager@1.0.2:1.0.999', type=('build', 'run')) + depends_on('py-websocket-client@0.56.0:0.56.999', type=('build', 'run')) + depends_on('py-xmltodict@0.12:0.999', type=('build', 'run')) + depends_on('py-javaproperties@0.5.1', type=('build', 'run')) + depends_on('py-jsondiff@1.2.0', type=('build', 'run')) + depends_on('py-mock@4.0:4.999', type='test') diff --git a/var/spack/repos/builtin/packages/py-azure-core/package.py b/var/spack/repos/builtin/packages/py-azure-core/package.py index cfe14b0dae..e45bfcabfb 100644 --- a/var/spack/repos/builtin/packages/py-azure-core/package.py +++ b/var/spack/repos/builtin/packages/py-azure-core/package.py @@ -8,8 +8,9 @@ class PyAzureCore(PythonPackage): """Microsoft Azure Core Library for Python.""" homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/core/azure-core" - url = "https://pypi.io/packages/source/a/azure-core/azure-core-1.6.0.zip" + url = "https://pypi.io/packages/source/a/azure-core/azure-core-1.7.0.zip" + version('1.7.0', sha256='a66da240a287f447f9867f54ba09ea235895cec13ea38c5f490ce4eedefdd75c') version('1.6.0', sha256='d10b74e783cff90d56360e61162afdd22276d62dc9467e657ae866449eae7648') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-azure-cosmos/package.py b/var/spack/repos/builtin/packages/py-azure-cosmos/package.py new file mode 100644 index 0000000000..56ed2ae59f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-cosmos/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 PyAzureCosmos(PythonPackage): + """Microsoft Azure Cosmos Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-cosmos/azure-cosmos-4.0.0.zip" + + version('4.0.0', sha256='c4e40e0d378fd0c96664f46f1ad08e6c8aaaac31c463726a74aae9eae724442d') + version('3.2.0', sha256='4f77cc558fecffac04377ba758ac4e23f076dc1c54e2cf2515f85bc15cbde5c6', + url='https://pypi.io/packages/source/a/azure-cosmos/azure-cosmos-3.2.0.tar.gz') + + depends_on('py-setuptools', type='build') + depends_on('py-six@1.6:', type=('build', 'run')) + depends_on('py-azure-core@1.0.0:1.999', when='@4:', type=('build', 'run')) + depends_on('py-enum34@1.0.4:', when='@4: ^python@:3.3', type=('build', 'run')) + depends_on('py-azure-nspkg', when='^python@:2', type=('build', 'run')) + depends_on('py-typing', when='@4: ^python@:3.4', type=('build', 'run')) + depends_on('py-requests@2.10.0:', when='@:3', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-datalake-store/package.py b/var/spack/repos/builtin/packages/py-azure-datalake-store/package.py new file mode 100644 index 0000000000..84dc392932 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-datalake-store/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 PyAzureDatalakeStore(PythonPackage): + """Azure Data Lake Store Filesystem Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-data-lake-store-python" + url = "https://pypi.io/packages/source/a/azure-datalake-store/azure-datalake-store-0.0.48.tar.gz" + + version('0.0.48', sha256='d27c335783d4add00b3a5f709341e4a8009857440209e15a739a9a96b52386f7') + + depends_on('py-setuptools', type='build') + depends_on('py-cffi', type=('build', 'run')) + depends_on('py-adal@0.4.2:', type=('build', 'run')) + depends_on('py-requests@2.20.0:', type=('build', 'run')) + depends_on('py-pathlib2', when='^python@:3.3', type=('build', 'run')) + depends_on('py-futures', when='^python@:2', type=('build', 'run')) + depends_on('py-azure-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-functions-devops-build/package.py b/var/spack/repos/builtin/packages/py-azure-functions-devops-build/package.py new file mode 100644 index 0000000000..ee70dc2f03 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-functions-devops-build/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 PyAzureFunctionsDevopsBuild(PythonPackage): + """Python package for integrating Azure Functions with Azure DevOps. + Specifically made for the Azure CLI.""" + + homepage = "https://github.com/Azure/azure-functions-devops-build" + url = "https://pypi.io/packages/source/a/azure-functions-devops-build/azure-functions-devops-build-0.0.22.tar.gz" + + version('0.0.22', sha256='c6341abda6098813f8fa625acd1e925410a17a8a1c7aaabdf975bb7cecb14edf') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest', type=('build', 'run')) + depends_on('py-vsts', type=('build', 'run')) + depends_on('py-jinja2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-graphrbac/package.py b/var/spack/repos/builtin/packages/py-azure-graphrbac/package.py index 60a87b0a92..4cd0dd661f 100644 --- a/var/spack/repos/builtin/packages/py-azure-graphrbac/package.py +++ b/var/spack/repos/builtin/packages/py-azure-graphrbac/package.py @@ -11,6 +11,7 @@ class PyAzureGraphrbac(PythonPackage): url = "https://pypi.io/packages/source/a/azure-graphrbac/azure-graphrbac-0.61.1.zip" version('0.61.1', sha256='53e98ae2ca7c19b349e9e9bb1b6a824aeae8dcfcbe17190d20fe69c0f185b2e2') + version('0.60.0', sha256='d0bb62d8bf8e196b903f3971ba4afa448e4fe14e8394ebfcdd941d84d62ecafe') depends_on('py-setuptools', type='build') depends_on('py-msrest@0.5.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-keyvault-certificates/package.py b/var/spack/repos/builtin/packages/py-azure-keyvault-certificates/package.py new file mode 100644 index 0000000000..49ad0b0ea6 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-keyvault-certificates/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 PyAzureKeyvaultCertificates(PythonPackage): + """Microsoft Azure Key Vault Certificates Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault-certificates" + url = "https://pypi.io/packages/source/a/azure-keyvault-certificates/azure-keyvault-certificates-4.1.0.zip" + + version('4.1.0', sha256='544f56480619e1db350f2e7b117b22af778e02174bd6bcb0af9ae00c50353419') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-core@1.2.1:1.999', type=('build', 'run')) + depends_on('py-msrest@0.6.0:', type=('build', 'run')) + depends_on('py-azure-keyvault-nspkg', when='^python@:2', type=('build', 'run')) + depends_on('py-enum34@1.0.4:', when='^python@:3.3', type=('build', 'run')) + depends_on('py-typing', when='^python@:3.4', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-keyvault-keys/package.py b/var/spack/repos/builtin/packages/py-azure-keyvault-keys/package.py new file mode 100644 index 0000000000..7fa65939ac --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-keyvault-keys/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 PyAzureKeyvaultKeys(PythonPackage): + """Microsoft Azure Key Vault Keys Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault-keys" + url = "https://pypi.io/packages/source/a/azure-keyvault-keys/azure-keyvault-keys-4.1.0.zip" + + version('4.1.0', sha256='f9967b4deb48e619f6c40558f69e48978779cc09c8a7fad33d536cfc41cd68f9') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-core@1.2.1:1.999', type=('build', 'run')) + depends_on('py-cryptography@2.1.4:', type=('build', 'run')) + depends_on('py-msrest@0.6.0:', type=('build', 'run')) + depends_on('py-azure-keyvault-nspkg', when='^python@:2', type=('build', 'run')) + depends_on('py-enum34@1.0.4:', when='^python@:3.3', type=('build', 'run')) + depends_on('py-typing', when='^python@:3.4', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-keyvault-nspkg/package.py b/var/spack/repos/builtin/packages/py-azure-keyvault-nspkg/package.py new file mode 100644 index 0000000000..16200150de --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-keyvault-nspkg/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 PyAzureKeyvaultNspkg(PythonPackage): + """Microsoft Azure Key Vault Namespace Package.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault" + url = "https://pypi.io/packages/source/a/azure-keyvault-nspkg/azure-keyvault-nspkg-1.0.0.zip" + + version('1.0.0', sha256='ac68b88aab9c6caf54a23da2a1d1c718d7520bae5adff04dd0a743228269b641') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-nspkg@3.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-keyvault-secrets/package.py b/var/spack/repos/builtin/packages/py-azure-keyvault-secrets/package.py new file mode 100644 index 0000000000..cbc91cde3d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-keyvault-secrets/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 PyAzureKeyvaultSecrets(PythonPackage): + """Microsoft Azure Key Vault Secrets Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault-secrets" + url = "https://pypi.io/packages/source/a/azure-keyvault-secrets/azure-keyvault-secrets-4.1.0.zip" + + version('4.1.0', sha256='4f3bfac60e025e01dd1c1998b73649d45d706975356c0cf147174cf5a6ddf8be') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-core@1.2.1:1.999', type=('build', 'run')) + depends_on('py-msrest@0.6.0:', type=('build', 'run')) + depends_on('py-azure-keyvault-nspkg', when='^python@:2', type=('build', 'run')) + depends_on('py-enum34@1.0.4:', when='^python@:3.3', type=('build', 'run')) + depends_on('py-typing', when='^python@:3.4', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-keyvault/package.py b/var/spack/repos/builtin/packages/py-azure-keyvault/package.py new file mode 100644 index 0000000000..b18a562226 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-keyvault/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 PyAzureKeyvault(PythonPackage): + """Microsoft Azure Key Vault Client Libraries for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault" + url = "https://pypi.io/packages/source/a/azure-keyvault/azure-keyvault-4.1.0.zip" + + version('4.1.0', sha256='69002a546921a8290eb54d9a3805cfc515c321bc1d4c0bfcfb463620245eca40') + version('1.1.0', sha256='37a8e5f376eb5a304fcd066d414b5d93b987e68f9212b0c41efa37d429aadd49') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-keyvault-certificates@4.1:4.999', when='@4:', type=('build', 'run')) + depends_on('py-azure-keyvault-secrets@4.1:4.999', when='@4:', type=('build', 'run')) + depends_on('py-azure-keyvault-keys@4.1:4.999', when='@4:', type=('build', 'run')) + depends_on('py-msrest@0.5.0:', when='@:1', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', when='@:1', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', when='@:1', type=('build', 'run')) + depends_on('py-cryptography@2.1.4:', when='@:1', type=('build', 'run')) + depends_on('py-requests@2.18.4:', when='@:1', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-loganalytics/package.py b/var/spack/repos/builtin/packages/py-azure-loganalytics/package.py new file mode 100644 index 0000000000..25a4e42317 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-loganalytics/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) + + +class PyAzureLoganalytics(PythonPackage): + """Microsoft Azure Log Analytics Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-loganalytics/azure-loganalytics-0.1.0.zip" + + version('0.1.0', sha256='3ceb350def677a351f34b0a0d1637df6be0c6fe87ff32a5270b17f540f6da06e') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.4.29:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-advisor/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-advisor/package.py new file mode 100644 index 0000000000..5e19a89dea --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-advisor/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 PyAzureMgmtAdvisor(PythonPackage): + """Microsoft Azure Advisor Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-advisor/azure-mgmt-advisor-4.0.0.zip" + + version('4.0.0', sha256='1ecea7a9dc48c099c06aab68aace7fdbded91a5522932882b1707c29fa055054') + version('2.0.1', sha256='1929d6d5ba49d055fdc806e981b93cf75ea42ba35f78222aaf42d8dcf29d4ef3') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-apimanagement/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-apimanagement/package.py new file mode 100644 index 0000000000..538bfed522 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-apimanagement/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 PyAzureMgmtApimanagement(PythonPackage): + """Microsoft Azure API Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-apimanagement/azure-mgmt-apimanagement-0.2.0.zip" + + version('0.2.0', sha256='790f01c0b32583706b8b8c59667c0f5a51cd70444eee76474e23a598911e1d72') + version('0.1.0', sha256='5d45d3438c6a11bae6bb8d4d5173cdb44b85683695f9f3433f22f45aecc47819') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-appconfiguration/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-appconfiguration/package.py new file mode 100644 index 0000000000..96f7a6dfff --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-appconfiguration/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 PyAzureMgmtAppconfiguration(PythonPackage): + """Microsoft Azure App Configuration Management Client Library for Python. + """ + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-appconfiguration/azure-mgmt-appconfiguration-0.5.0.zip" + + version('0.5.0', sha256='211527511d7616a383cc196956eaf2b7ee016f2367d367924b3715f2a41106da') + version('0.4.0', sha256='85f6202ba235fde6be274f3dec1578b90235cf31979abea3fcfa476d0b2ac5b6') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-applicationinsights/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-applicationinsights/package.py new file mode 100644 index 0000000000..b7b4089b9d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-applicationinsights/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) + + +class PyAzureMgmtApplicationinsights(PythonPackage): + """Microsoft Azure Application Insights Management Client Library for + Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-applicationinsights/azure-mgmt-applicationinsights-0.3.0.zip" + + version('0.3.0', sha256='3c788a54db4fbca1a8850151462ec1471ff59c86b3a10d6082952bbdaa7e6651') + version('0.1.1', sha256='f10229eb9e3e9d0ad20188b8d14d67055e86f3815b43b75eedf96b654bee2a9b') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', when='@0.3:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', when='@0.3:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.20:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='@0.3: ^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-authorization/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-authorization/package.py index acc9d25e66..5a5089966c 100644 --- a/var/spack/repos/builtin/packages/py-azure-mgmt-authorization/package.py +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-authorization/package.py @@ -11,6 +11,7 @@ class PyAzureMgmtAuthorization(PythonPackage): url = "https://pypi.io/packages/source/a/azure-mgmt-authorization/azure-mgmt-authorization-0.60.0.zip" version('0.60.0', sha256='31e875a34ac2c5d6fefe77b4a8079a8b2bdbe9edb957e47e8b44222fb212d6a7') + version('0.52.0', sha256='16a618c4357c11e96de376856c396f09e76a56473920cdf7a66735fabaa2a70c') depends_on('py-setuptools', type='build') depends_on('py-msrest@0.5.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-batch/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-batch/package.py new file mode 100644 index 0000000000..f11c869362 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-batch/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 PyAzureMgmtBatch(PythonPackage): + """Microsoft Azure Batch Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-batch/azure-mgmt-batch-9.0.0.zip" + + version('9.0.0', sha256='03417eecfa1fac906e674cb1cb43ed7da27a96277277b091d7c389ba39f6c3fe') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-batchai/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-batchai/package.py new file mode 100644 index 0000000000..ec279bfc50 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-batchai/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) + + +class PyAzureMgmtBatchai(PythonPackage): + """Microsoft Azure Batch AI Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-batchai/azure-mgmt-batchai-2.0.0.zip" + + version('2.0.0', sha256='f1870b0f97d5001cdb66208e5a236c9717a0ed18b34dbfdb238a828f3ca2a683') + + depends_on('py-setuptools', type='build') + depends_on('py-msrestazure@0.4.20:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-billing/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-billing/package.py new file mode 100644 index 0000000000..a124ac5931 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-billing/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) + + +class PyAzureMgmtBilling(PythonPackage): + """Microsoft Azure Billing Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-billing/azure-mgmt-billing-0.2.0.zip" + + version('0.2.0', sha256='85f73bb3808a7d0d2543307e8f41e5b90a170ad6eeedd54fe7fcaac61b5b22d2') + + depends_on('py-setuptools', type='build') + depends_on('py-msrestazure@0.4.20:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-botservice/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-botservice/package.py new file mode 100644 index 0000000000..168259dac0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-botservice/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 PyAzureMgmtBotservice(PythonPackage): + """Microsoft Azure Bot Service Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-botservice/azure-mgmt-botservice-0.2.0.zip" + + version('0.2.0', sha256='b21d8858e69aa16d25b908c40116a1f773c127ec4dd602cbb8542ebf39a55d83') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-cdn/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-cdn/package.py new file mode 100644 index 0000000000..916934c841 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-cdn/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 PyAzureMgmtCdn(PythonPackage): + """Microsoft Azure CDN Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-cdn/azure-mgmt-cdn-4.0.0.zip" + + # Release candidate needed for py-azure-cli + version('4.1.0rc1', sha256='853c73d612f5d97387e079c5841a9f1a05702173d0c7c0c59ba7b0fd86380503') + version('4.0.0', sha256='a53e9e09e2711ce9109329538fe9a8a1a5d0809efb231d7df481e55d09c4f02a', preferred=True) + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-cognitiveservices/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-cognitiveservices/package.py new file mode 100644 index 0000000000..067f980c7d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-cognitiveservices/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 PyAzureMgmtCognitiveservices(PythonPackage): + """Microsoft Azure Cognitive Services Management Client Library for + Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-cognitiveservices/azure-mgmt-cognitiveservices-6.2.0.zip" + + version('6.2.0', sha256='93503507ba87c18fe24cd3dfcd54e6e69a4daf7636f38b7537e09cee9a4c13ce') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-compute/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-compute/package.py new file mode 100644 index 0000000000..4b47781334 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-compute/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 PyAzureMgmtCompute(PythonPackage): + """Microsoft Azure Compute Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-compute/azure-mgmt-compute-13.0.0.zip" + + version('13.0.0', sha256='7f331bafcbedf25d65aa42038f7553747dab18d7f10a5af3297192d31c45339e') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-consumption/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-consumption/package.py new file mode 100644 index 0000000000..8974a4500d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-consumption/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 PyAzureMgmtConsumption(PythonPackage): + """Microsoft Azure Consumption Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-consumption/azure-mgmt-consumption-3.0.0.zip" + + version('3.0.0', sha256='035d4b74ca7c47e2683bea17105fd9014c27060336fb6255324ac86b27f70f5b') + version('2.0.0', sha256='9a85a89f30f224d261749be20b4616a0eb8948586f7f0f20573b8ea32f265189') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', when='@3:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', when='@3:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.20:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='@3: ^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-containerinstance/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-containerinstance/package.py new file mode 100644 index 0000000000..c2ce7566d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-containerinstance/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 PyAzureMgmtContainerinstance(PythonPackage): + """Microsoft Azure Container Instance Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-containerinstance/azure-mgmt-containerinstance-2.0.0.zip" + + version('2.0.0', sha256='5ad247d186c3c040da7a1d40ad39c9881e99afc58271f673abb602abb0b6b85b') + version('1.5.0', sha256='b055386f04ba8433112b0df7fcbc260b5208828d7bb8c057e760fe596aa7a8cd') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-containerregistry/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-containerregistry/package.py index ac44498035..1a337d7a4a 100644 --- a/var/spack/repos/builtin/packages/py-azure-mgmt-containerregistry/package.py +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-containerregistry/package.py @@ -10,7 +10,9 @@ class PyAzureMgmtContainerregistry(PythonPackage): homepage = "https://github.com/Azure/azure-sdk-for-python" url = "https://pypi.io/packages/source/a/azure-mgmt-containerregistry/azure-mgmt-containerregistry-2.8.0.zip" - version('2.8.0', sha256='b24be1050d54f3158e8be7f6ad677f0c8888dddefd09fb8391ebfc73d40173a4') + # Release candidate needed for py-azure-cli + version('3.0.0rc14', sha256='d23ce93ec5903d00f79f0ac995e16bf47197130239f7f182509add3277b73071') + version('2.8.0', sha256='b24be1050d54f3158e8be7f6ad677f0c8888dddefd09fb8391ebfc73d40173a4', preferred=True) depends_on('py-setuptools', type='build') depends_on('py-msrest@0.5.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-containerservice/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-containerservice/package.py new file mode 100644 index 0000000000..3e592e4a13 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-containerservice/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 PyAzureMgmtContainerservice(PythonPackage): + """Microsoft Azure Container Service Management Client Library for Python. + """ + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-containerservice/azure-mgmt-containerservice-9.2.0.zip" + + version('9.2.0', sha256='e7904b60c42a153b64b1604f3c698602686b38787bebdaed6e808cd43b6e5967') + version('9.0.1', sha256='7e4459679bdba4aa67a4b5848e63d94e965a304a7418ef7607eb7a9ce295d886') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-core/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-core/package.py new file mode 100644 index 0000000000..4dfca888f6 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-core/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 PyAzureMgmtCore(PythonPackage): + """Microsoft Azure Management Core Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/core/azure-mgmt-core" + url = "https://pypi.io/packages/source/a/azure-mgmt-core/azure-mgmt-core-1.2.0.zip" + + version('1.2.0', sha256='8fe3b59446438f27e34f7b24ea692a982034d9e734617ca1320eedeee1939998') + version('1.0.0', sha256='510faf49a10daec8346cc086143d8e667ef3b4f8c8022a8e710091027631a55e') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-core@1.7.0:1.999', when='@1.2:', type=('build', 'run')) + depends_on('py-azure-core@1.4.0:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) + depends_on('py-typing', when='^python@:3.4', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-cosmosdb/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-cosmosdb/package.py new file mode 100644 index 0000000000..978d659b9e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-cosmosdb/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 PyAzureMgmtCosmosdb(PythonPackage): + """Microsoft Azure Cosmos DB Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-cosmosdb/azure-mgmt-cosmosdb-0.15.0.zip" + + version('0.15.0', sha256='e70fe9b3d9554c501d46e69f18b73de18d77fbcb98a7a87b965b3dd027cada0f') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-datalake-analytics/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-datalake-analytics/package.py new file mode 100644 index 0000000000..bcb73cd655 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-datalake-analytics/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 PyAzureMgmtDatalakeAnalytics(PythonPackage): + """Microsoft Azure Data Lake Analytics Management Client Library for + Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-datalake-analytics/azure-mgmt-datalake-analytics-0.6.0.zip" + + version('0.6.0', sha256='0d64c4689a67d6138eb9ffbaff2eda2bace7d30b846401673183dcb42714de8f') + version('0.2.1', sha256='4c7960d094f5847d9a456c18b8a3c8e60c428e3080a3905f1c943d81ba6351a4') + + depends_on('py-setuptools', type='build') + depends_on('py-msrestazure@0.4.27:1.999', when='@0.6:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.7:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-datalake-store/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-datalake-store/package.py new file mode 100644 index 0000000000..994c8a60c1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-datalake-store/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) + + +class PyAzureMgmtDatalakeStore(PythonPackage): + """Microsoft Azure Data Lake Store Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-datalake-store/azure-mgmt-datalake-store-0.5.0.zip" + + version('0.5.0', sha256='9376d35495661d19f8acc5604f67b0bc59493b1835bbc480f9a1952f90017a4c') + + depends_on('py-setuptools', type='build') + depends_on('py-msrestazure@0.4.27:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-datamigration/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-datamigration/package.py new file mode 100644 index 0000000000..7eaf2e926b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-datamigration/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 PyAzureMgmtDatamigration(PythonPackage): + """Microsoft Azure Data Migration Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-datamigration/azure-mgmt-datamigration-4.0.0.zip" + + version('4.0.0', sha256='1efda568d67af911156591eb308432b5f9a56075b57ac0a5dd9f7aee17d79217') + version('0.1.0', sha256='e754928992743f54d999800a5e0679ee3e91d804d23a25f12c2e6f2f86cd05df') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', when='@4:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', when='@4:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.27:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='@4: ^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-deploymentmanager/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-deploymentmanager/package.py new file mode 100644 index 0000000000..57d08f8805 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-deploymentmanager/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 PyAzureMgmtDeploymentmanager(PythonPackage): + """Microsoft Azure Deployment Manager Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-deploymentmanager/azure-mgmt-deploymentmanager-0.2.0.zip" + + version('0.2.0', sha256='46e342227993fc9acab1dda42f2eb566b522a8c945ab9d0eea56276b46f6d730') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-devtestlabs/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-devtestlabs/package.py new file mode 100644 index 0000000000..10094a24da --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-devtestlabs/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 PyAzureMgmtDevtestlabs(PythonPackage): + """Microsoft Azure DevTestLabs Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-devtestlabs/azure-mgmt-devtestlabs-4.0.0.zip" + + version('4.0.0', sha256='59549c4c4068f26466b1097b574a8e5099fb2cd6c8be0a00395b06d3b29e278d') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-dns/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-dns/package.py new file mode 100644 index 0000000000..ef7bab9ef7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-dns/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 PyAzureMgmtDns(PythonPackage): + """Microsoft Azure DNS Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-dns/azure-mgmt-dns-3.0.0.zip" + + version('3.0.0', sha256='6ecdf4e67d8eb5db593ec331e6d9f350616e77c31225c91d266605e03e63b37f') + version('2.1.0', sha256='3730b1b3f545a5aa43c0fff07418b362a789eb7d81286e2bed90ffef88bfa5d0') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-eventgrid/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-eventgrid/package.py new file mode 100644 index 0000000000..d1dc0f2264 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-eventgrid/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 PyAzureMgmtEventgrid(PythonPackage): + """Microsoft Azure EventGrid Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-eventgrid/azure-mgmt-eventgrid-2.2.0.zip" + + # Release candidate needed for py-azure-cli + version('3.0.0rc7', sha256='68f9eb18b74fa86e07cf4e4d1a2ed16fe549bdd53f21a707b05798616b01a9d4') + version('2.2.0', sha256='c62058923ed20db35b04491cd1ad6a692f337244d05c377ecc14a53c06651cc3', preferred=True) + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-eventhub/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-eventhub/package.py new file mode 100644 index 0000000000..bd25960c8c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-eventhub/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 PyAzureMgmtEventhub(PythonPackage): + """Microsoft Azure EventHub Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-eventhub/azure-mgmt-eventhub-4.0.0.zip" + + version('4.0.0', sha256='65223196cf132899656c2f9cb71a14c972d99e5ecd815ee050dae1072cb73ae2') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-hdinsight/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-hdinsight/package.py new file mode 100644 index 0000000000..4107d2f68b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-hdinsight/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 PyAzureMgmtHdinsight(PythonPackage): + """Microsoft Azure HDInsight Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-hdinsight/azure-mgmt-hdinsight-1.5.1.zip" + + version('1.5.1', sha256='76b94f3e43fdc6698023d79be731937dc645dc3178dc134854768528ecc0aea3') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-imagebuilder/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-imagebuilder/package.py new file mode 100644 index 0000000000..44e3e311e4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-imagebuilder/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 PyAzureMgmtImagebuilder(PythonPackage): + """Microsoft Azure Image Builder Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-imagebuilder/azure-mgmt-imagebuilder-0.4.0.zip" + + version('0.4.0', sha256='4c9291bf16b40b043637e5e4f15650f71418ac237393e62219cab478a7951733') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-iotcentral/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-iotcentral/package.py new file mode 100644 index 0000000000..80154d6528 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-iotcentral/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 PyAzureMgmtIotcentral(PythonPackage): + """Microsoft Azure IoTCentral Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-iotcentral/azure-mgmt-iotcentral-3.1.0.zip" + + version('3.1.0', sha256='c175f6642be514ad0efd3dc03d09e50d923596fd9e634381793dcc46bb8a57c7') + version('3.0.0', sha256='f6dacf442ccae2f18f1082e80bcbdcaa8c0efa2ba92b48c5db6ee01d37240047') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-iothub/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-iothub/package.py new file mode 100644 index 0000000000..a1954a9751 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-iothub/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 PyAzureMgmtIothub(PythonPackage): + """Microsoft Azure IoTHub Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-iothub/azure-mgmt-iothub-0.12.0.zip" + + version('0.12.0', sha256='da20ee2b9b9a2c2f89be9037c3ee5421152e7f6d718eafbf50a91dbf0a07ffa0') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-iothubprovisioningservices/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-iothubprovisioningservices/package.py new file mode 100644 index 0000000000..37845cee5d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-iothubprovisioningservices/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 PyAzureMgmtIothubprovisioningservices(PythonPackage): + """Microsoft Azure IoTHub Provisioning Services Client Library for Python. + """ + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-iothubprovisioningservices/azure-mgmt-iothubprovisioningservices-0.2.0.zip" + + version('0.2.0', sha256='8c37acfd1c33aba845f2e0302ef7266cad31cba503cc990a48684659acb7b91d') + + depends_on('py-setuptools', type='build') + depends_on('py-msrestazure@0.4.20:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-kusto/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-kusto/package.py new file mode 100644 index 0000000000..faadc899cf --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-kusto/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 PyAzureMgmtKusto(PythonPackage): + """Microsoft Azure Kusto Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-kusto/azure-mgmt-kusto-0.9.0.zip" + + version('0.9.0', sha256='9210db89fa18ee8ed53339cd63bbe6fe1d9624cd793b54b7451ddbda8ae92ef3') + version('0.3.0', sha256='9eb8b7781fd4410ee9e207cd0c3983baf9e58414b5b4a18849d09856e36bacde') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-loganalytics/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-loganalytics/package.py new file mode 100644 index 0000000000..925db35fa1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-loganalytics/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 PyAzureMgmtLoganalytics(PythonPackage): + """Microsoft Azure Log Analytics Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-loganalytics/azure-mgmt-loganalytics-0.7.0.zip" + + version('0.7.0', sha256='50fb7f714685d170ce9607e3c30488e194015845ef7f0a717b80609837a6c2a2') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-managedservices/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-managedservices/package.py new file mode 100644 index 0000000000..d7ac227ef3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-managedservices/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 PyAzureMgmtManagedservices(PythonPackage): + """Microsoft Azure Managed Services Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-managedservices/azure-mgmt-managedservices-1.0.0.zip" + + version('1.0.0', sha256='fed8399fc6773aada37c1d0496a46f59410d77c9494d0ca5967c531c3376ad19') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-managementgroups/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-managementgroups/package.py new file mode 100644 index 0000000000..6ce865aaba --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-managementgroups/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 PyAzureMgmtManagementgroups(PythonPackage): + """Microsoft Azure Management Groups Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-managementgroups/azure-mgmt-managementgroups-0.2.0.zip" + + version('0.2.0', sha256='3d5237947458dc94b4a392141174b1c1258d26611241ee104e9006d1d798f682') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-maps/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-maps/package.py new file mode 100644 index 0000000000..8448f6fde4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-maps/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) + + +class PyAzureMgmtMaps(PythonPackage): + """Microsoft Azure Maps Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-maps/azure-mgmt-maps-0.1.0.zip" + + version('0.1.0', sha256='c120e210bb61768da29de24d28b82f8d42ae24e52396eb6569b499709e22f006') + + depends_on('py-setuptools', type='build') + depends_on('py-msrestazure@0.4.27:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-marketplaceordering/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-marketplaceordering/package.py new file mode 100644 index 0000000000..a09eaf331c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-marketplaceordering/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 PyAzureMgmtMarketplaceordering(PythonPackage): + """Microsoft Azure Market Place Ordering Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-marketplaceordering/azure-mgmt-marketplaceordering-0.2.1.zip" + + version('0.2.1', sha256='dc765cde7ec03efe456438c85c6207c2f77775a8ce8a7adb19b0df5c5dc513c2') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-media/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-media/package.py new file mode 100644 index 0000000000..7ef8dd5201 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-media/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 PyAzureMgmtMedia(PythonPackage): + """Microsoft Azure Media Services Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-media/azure-mgmt-media-2.2.0.zip" + + version('2.2.0', sha256='0adeee9e654a9011f5107def06fea6838864a3514a1e5a9ed495f3a56a687cc7') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-monitor/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-monitor/package.py new file mode 100644 index 0000000000..681dbf6c22 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-monitor/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 PyAzureMgmtMonitor(PythonPackage): + """Microsoft Azure Monitor Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-monitor/azure-mgmt-monitor-0.11.0.zip" + + version('0.11.0', sha256='c6e1fe83dd2ddffa7f6d90c7aa63b3128042396a3893c14dc4816ad28cb15016') + version('0.10.0', sha256='d57d604cc1a7a9ce35eb7cf8a00d4924887c688aa78dc035ea1f80066b297464') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-msi/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-msi/package.py new file mode 100644 index 0000000000..abdbdc640a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-msi/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 PyAzureMgmtMsi(PythonPackage): + """Microsoft Azure MSI Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-msi/azure-mgmt-msi-1.0.0.zip" + + version('1.0.0', sha256='d46f3aab25db3dad520e4055c1d67afe4fcc6d66335c762134e60f82265f8f58') + version('0.2.0', sha256='8622bc9a164169a0113728ebe7fd43a88189708ce6e10d4507247d6907987167') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', when='@1:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', when='@1:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.27:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='@1: ^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-netapp/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-netapp/package.py new file mode 100644 index 0000000000..401b2078c3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-netapp/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 PyAzureMgmtNetapp(PythonPackage): + """Microsoft Azure NetApp Files Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-netapp/azure-mgmt-netapp-0.11.0.zip" + + version('0.11.0', sha256='621a76b06c97e858d49b68953e66eb718ac24f91aa6bf090f32a335a38f02305') + version('0.8.0', sha256='67df7c7391c2179423a95927a639492c3a177bff8f3a80e4b2d666a86e2d6f6d') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-network/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-network/package.py index cbc0473e79..549160d7ea 100644 --- a/var/spack/repos/builtin/packages/py-azure-mgmt-network/package.py +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-network/package.py @@ -8,8 +8,9 @@ class PyAzureMgmtNetwork(PythonPackage): """Microsoft Azure Network Management Client Library for Python.""" homepage = "https://github.com/Azure/azure-sdk-for-python" - url = "https://pypi.io/packages/source/a/azure-mgmt-network/azure-mgmt-network-10.2.0.zip" + url = "https://pypi.io/packages/source/a/azure-mgmt-network/azure-mgmt-network-11.0.0.zip" + version('11.0.0', sha256='7fdfc631c660cb173eee88abbb7b8be7742f91b522be6017867f217409cd69bc') version('10.2.0', sha256='d50c74cdc1c9be6861ddef9adffd3b05afc5a5092baf0209eea30f4439cba2d9') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-policyinsights/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-policyinsights/package.py new file mode 100644 index 0000000000..c0532b307a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-policyinsights/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 PyAzureMgmtPolicyinsights(PythonPackage): + """Microsoft Azure Policy Insights Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-policyinsights/azure-mgmt-policyinsights-0.5.0.zip" + + version('0.5.0', sha256='ed229e3845c477e88dde413825d4fba0d38b3a5ffab4e694c7d0da995f3db0f3') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-privatedns/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-privatedns/package.py new file mode 100644 index 0000000000..5aa65aec57 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-privatedns/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 PyAzureMgmtPrivatedns(PythonPackage): + """Microsoft Azure DNS Private Zones Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-privatedns/azure-mgmt-privatedns-0.1.0.zip" + + version('0.1.0', sha256='d29cfd8cec806e06673d9382d3f5766fc65d9a9de75b424705094a34a7db8d23') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-rdbms/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-rdbms/package.py new file mode 100644 index 0000000000..c375a82622 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-rdbms/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 PyAzureMgmtRdbms(PythonPackage): + """Microsoft Azure RDBMS Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-rdbms/azure-mgmt-rdbms-2.2.0.zip" + + version('2.2.0', sha256='f93344897a9bfa6ebc57dd0c10ad79602ff7965c322c65115e3f4b8584bbe1c7') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-recoveryservices/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-recoveryservices/package.py new file mode 100644 index 0000000000..67a5987b8f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-recoveryservices/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 PyAzureMgmtRecoveryservices(PythonPackage): + """Microsoft Azure Recovery Services Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-recoveryservices/azure-mgmt-recoveryservices-0.5.0.zip" + + version('0.5.0', sha256='3c90e6b2e358dbe6d5c6d7204955bdf52c3e977c6f8b727cbbb8811427d7fd52') + version('0.4.0', sha256='e1e794760232239f8a9328d5de1740565ff70d1612a2921c9609746ba5671e6c') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-recoveryservicesbackup/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-recoveryservicesbackup/package.py new file mode 100644 index 0000000000..96b755acef --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-recoveryservicesbackup/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 PyAzureMgmtRecoveryservicesbackup(PythonPackage): + """Microsoft Azure Recovery Services Backup Management Client Library for + Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-recoveryservicesbackup/azure-mgmt-recoveryservicesbackup-0.8.0.zip" + + version('0.8.0', sha256='a0ee89691b21945cc4b892a9194320f50c1cd242d98f00a82d7e3848c28517a5') + version('0.6.0', sha256='4df62479c90a6f93e7689f9d58e0a139899f0407f5e3298d5ce014442599428f') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-redhatopenshift/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-redhatopenshift/package.py new file mode 100644 index 0000000000..6503254cd8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-redhatopenshift/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 PyAzureMgmtRedhatopenshift(PythonPackage): + """Microsoft Azure Red Hat Openshift Management Client Library for Python. + """ + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-redhatopenshift/azure-mgmt-redhatopenshift-0.1.0.zip" + + version('0.1.0', sha256='565afbc63f5283f37c76135174f2ca20dd417da3e24b3fb1e132c4a0e2a2c5bc') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-redis/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-redis/package.py new file mode 100644 index 0000000000..90d0e95241 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-redis/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 PyAzureMgmtRedis(PythonPackage): + """Microsoft Azure Redis Cache Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-redis/azure-mgmt-redis-6.0.0.zip" + + # Release candidate needed for py-azure-cli + version('7.0.0rc1', sha256='d3cc259c507b79962495ed00d0a3432a45e4e90a0fb48b49e80d51cdc398dc20') + version('6.0.0', sha256='db999e104edeee3a13a8ceb1881e15196fe03a02635e0e20855eb52c1e2ecca1', preferred=True) + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-relay/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-relay/package.py new file mode 100644 index 0000000000..fee12b519b --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-relay/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 PyAzureMgmtRelay(PythonPackage): + """Microsoft Azure Relay Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-relay/azure-mgmt-relay-0.2.0.zip" + + version('0.2.0', sha256='a7e8341b2920d1d45bdf73d2b7825c44427d33fb0d820aceb11c94432323bf68') + version('0.1.0', sha256='d9f987cf2998b8a354f331b2a71082c049193f1e1cd345812e14b9b821365acb') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', when='@0.2:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', when='@0.2:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.20:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='@0.2: ^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-reservations/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-reservations/package.py new file mode 100644 index 0000000000..b14a6d83dc --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-reservations/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 PyAzureMgmtReservations(PythonPackage): + """Microsoft Azure Reservations Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-reservations/azure-mgmt-reservations-0.7.0.zip" + + version('0.7.0', sha256='f65c1985a47e0ac55e7d5d9cc1bd5e95335a111566edc289d460aa2bc8f80991') + version('0.6.0', sha256='83a9a70d6fd78b8b3e92ca64bbc1fde8d1bc5e2efea54076052c51c946b4cc9b') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-search/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-search/package.py new file mode 100644 index 0000000000..42e7eae43d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-search/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 PyAzureMgmtSearch(PythonPackage): + """Microsoft Azure Search Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-search/azure-mgmt-search-2.1.0.zip" + + version('2.1.0', sha256='92a40a1a7a9e3a82b6fa302042799e8d5a67d3996c20835af72afc14f1610501') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-security/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-security/package.py new file mode 100644 index 0000000000..27778ebcba --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-security/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 PyAzureMgmtSecurity(PythonPackage): + """Microsoft Azure Security Center Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-security/azure-mgmt-security-0.4.1.zip" + + version('0.4.1', sha256='391c8df5400485049a6c19d50e536304c186bb64fd569eec0c6d01d20220ee21') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-servicebus/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-servicebus/package.py new file mode 100644 index 0000000000..22fba6dcf8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-servicebus/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 PyAzureMgmtServicebus(PythonPackage): + """Microsoft Azure Service Bus Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-servicebus/azure-mgmt-servicebus-0.6.0.zip" + + version('0.6.0', sha256='f20920b8fb119ef4abeda4d2dac765a4fc48cd0bcf30c27f8c4cc6d890bc08b1') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-servicefabric/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-servicefabric/package.py new file mode 100644 index 0000000000..519f7c632f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-servicefabric/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 PyAzureMgmtServicefabric(PythonPackage): + """Microsoft Azure Service Fabric Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-servicefabric/azure-mgmt-servicefabric-0.4.0.zip" + + version('0.4.0', sha256='a2cbd2797e796a550a93d37229b2ded22765f50166730a63c8e20a27677e28f4') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-signalr/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-signalr/package.py new file mode 100644 index 0000000000..298f1b7b05 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-signalr/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 PyAzureMgmtSignalr(PythonPackage): + """Microsoft Azure SignalR Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-signalr/azure-mgmt-signalr-0.4.0.zip" + + version('0.4.0', sha256='6503ddda9d6f4b634dfeb8eb4bcd14ede5e0900585f6c83bf9010cf82215c126') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-sql/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-sql/package.py new file mode 100644 index 0000000000..8bfe3781bb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-sql/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 PyAzureMgmtSql(PythonPackage): + """Microsoft Azure SQL Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-sql/azure-mgmt-sql-0.19.0.zip" + + version('0.19.0', sha256='694649d4c9c5f89e543f23ec10e450b6382b2f1bc5843ef266cfc302276038c6') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-sqlvirtualmachine/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-sqlvirtualmachine/package.py new file mode 100644 index 0000000000..03565edb89 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-sqlvirtualmachine/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 PyAzureMgmtSqlvirtualmachine(PythonPackage): + """Microsoft Azure SQL Virtual Machine Management Client Library for + Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-sqlvirtualmachine/azure-mgmt-sqlvirtualmachine-0.5.0.zip" + + version('0.5.0', sha256='b5a9423512a7b12844ac014366a1d53c81017a14f39676beedf004a532aa2aad') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-storage/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-storage/package.py index c2dd7d68f5..f53822ef94 100644 --- a/var/spack/repos/builtin/packages/py-azure-mgmt-storage/package.py +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-storage/package.py @@ -8,8 +8,9 @@ class PyAzureMgmtStorage(PythonPackage): """Microsoft Azure Storage Management Client Library for Python.""" homepage = "https://github.com/Azure/azure-sdk-for-python" - url = "https://pypi.io/packages/source/a/azure-mgmt-storage/azure-mgmt-storage-11.0.0.zip" + url = "https://pypi.io/packages/source/a/azure-mgmt-storage/azure-mgmt-storage-11.1.0.zip" + version('11.1.0', sha256='ef23587c1b6dc0866ebf0e91e83ba05d7f7e4fea7951b704781b9cd9f5f27f1c') version('11.0.0', sha256='f9791c2a84eee0a55bbf757632a2a4d1e102db958e75422d5e0e7306041129b8') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-trafficmanager/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-trafficmanager/package.py new file mode 100644 index 0000000000..fa6dc2c756 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-trafficmanager/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 PyAzureMgmtTrafficmanager(PythonPackage): + """Microsoft Azure Traffic Manager Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-trafficmanager/azure-mgmt-trafficmanager-0.51.0.zip" + + version('0.51.0', sha256='fc8ae77022cfe52fda4379a2f31e0b857574d536e41291a7b569b5c0f4104186') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-mgmt-web/package.py b/var/spack/repos/builtin/packages/py-azure-mgmt-web/package.py new file mode 100644 index 0000000000..b4d7f2ba45 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-mgmt-web/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 PyAzureMgmtWeb(PythonPackage): + """Microsoft Azure Web Apps Management Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-sdk-for-python" + url = "https://pypi.io/packages/source/a/azure-mgmt-web/azure-mgmt-web-0.47.0.zip" + + version('0.47.0', sha256='789a328e2a60df48a82452ca6fbc1a7b4adf3c38d4701d278efe4e81cf21cce8') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.5.0:', type=('build', 'run')) + depends_on('py-msrestazure@0.4.32:1.999', type=('build', 'run')) + depends_on('py-azure-common@1.1:1.999', type=('build', 'run')) + depends_on('py-azure-mgmt-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-multiapi-storage/package.py b/var/spack/repos/builtin/packages/py-azure-multiapi-storage/package.py new file mode 100644 index 0000000000..5d5a8442b5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-multiapi-storage/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 PyAzureMultiapiStorage(PythonPackage): + """Microsoft Azure Storage Client Library for Python with multi API + version support.""" + + homepage = "https://github.com/Azure/azure-multiapi-storage-python" + url = "https://pypi.io/packages/source/a/azure-multiapi-storage/azure-multiapi-storage-0.3.5.tar.gz" + + version('0.3.5', sha256='71c238c785786a159b3ffd587a5e7fa1d9a517b66b592ae277fed73a9fbfa2b0') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-common', type=('build', 'run')) + depends_on('py-cryptography', type=('build', 'run')) + depends_on('py-python-dateutil', type=('build', 'run')) + depends_on('py-requests', type=('build', 'run')) + depends_on('py-azure-core', type=('build', 'run')) + depends_on('py-futures', when='^python@:2', type=('build', 'run')) + depends_on('py-azure-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-storage-common/package.py b/var/spack/repos/builtin/packages/py-azure-storage-common/package.py new file mode 100644 index 0000000000..70902f28d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-storage-common/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 PyAzureStorageCommon(PythonPackage): + """Microsoft Azure Storage Common Client Library for Python.""" + + homepage = "https://github.com/Azure/azure-storage-python" + url = "https://pypi.io/packages/source/a/azure-storage-common/azure-storage-common-2.1.0.tar.gz" + + version('2.1.0', sha256='ccedef5c67227bc4d6670ffd37cec18fb529a1b7c3a5e53e4096eb0cf23dc73f') + version('1.4.2', sha256='4ec87c7537d457ec95252e0e46477e2c1ccf33774ffefd05d8544682cb0ae401') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-common@1.1.5:', type=('build', 'run')) + depends_on('py-cryptography', type=('build', 'run')) + depends_on('py-python-dateutil', type=('build', 'run')) + depends_on('py-requests', type=('build', 'run')) + depends_on('py-azure-storage-nspkg', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azure-storage-nspkg/package.py b/var/spack/repos/builtin/packages/py-azure-storage-nspkg/package.py new file mode 100644 index 0000000000..da8878813f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azure-storage-nspkg/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 PyAzureStorageNspkg(PythonPackage): + """Microsoft Azure Storage Namespace Package.""" + + homepage = "https://github.com/Azure/azure-storage-python" + url = "https://pypi.io/packages/source/a/azure-storage-nspkg/azure-storage-nspkg-3.1.0.tar.gz" + + version('3.1.0', sha256='6f3bbe8652d5f542767d8433e7f96b8df7f518774055ac7c92ed7ca85f653811') + + depends_on('py-setuptools', type='build') + depends_on('py-azure-nspkg@2.0.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azureml-automl-core/package.py b/var/spack/repos/builtin/packages/py-azureml-automl-core/package.py index 59fa585cae..9a50fbe3cc 100644 --- a/var/spack/repos/builtin/packages/py-azureml-automl-core/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-automl-core/package.py @@ -9,15 +9,20 @@ class PyAzuremlAutomlCore(Package): used by the azureml-train-automl package.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_automl_core/azureml_automl_core-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_automl_core/azureml_automl_core-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='58ce54b01570996cda860c0c80693b8db19324785a356573f105afeaa31cae6c', expand=False) + version('1.11.0', sha256='da1b9cef9aabbfaee69a19d5e15f5a911eefbd126546738343a78c032860b5a5', expand=False) + version('1.8.0', sha256='58ce54b01570996cda860c0c80693b8db19324785a356573f105afeaa31cae6c', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-azureml-dataprep@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-telemetry@1.8.0:1.8.999', type=('build', 'run')) + + depends_on('py-azureml-dataset-runtime@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-telemetry@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-dataprep@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-telemetry@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-core/package.py b/var/spack/repos/builtin/packages/py-azureml-core/package.py index 3c1a74fcf9..673b7542de 100644 --- a/var/spack/repos/builtin/packages/py-azureml-core/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-core/package.py @@ -12,9 +12,10 @@ class PyAzuremlCore(Package): """ homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_core/azureml_core-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_core/azureml_core-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='a0f2b0977f18fb7dcb88c314594a4a85c636a36be3d582be1cae25655fea6105', expand=False) + version('1.11.0', sha256='df8a01b04bb156852480de0bdd78434ed84f386e1891752bdf887faeaa2ca417', expand=False) + version('1.8.0', sha256='a0f2b0977f18fb7dcb88c314594a4a85c636a36be3d582be1cae25655fea6105', expand=False) extends('python') depends_on('python@3.5:3.8', type=('build', 'run')) @@ -28,7 +29,7 @@ class PyAzuremlCore(Package): depends_on('py-azure-mgmt-storage@1.5.0:', type=('build', 'run')) depends_on('py-azure-mgmt-keyvault@0.40.0:', type=('build', 'run')) depends_on('py-azure-mgmt-authorization@0.40.0:', type=('build', 'run')) - depends_on('py-azure-mgmt-network@10.0:10.999', type=('build', 'run')) + depends_on('py-azure-mgmt-network@10.0:10.999', when='@1.8.0', type=('build', 'run')) depends_on('py-azure-graphrbac@0.40.0:', type=('build', 'run')) depends_on('py-azure-common@1.1.12:', type=('build', 'run')) depends_on('py-msrest@0.5.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azureml-dataprep/package.py b/var/spack/repos/builtin/packages/py-azureml-dataprep/package.py index 064ce4e0e6..18a4dcfd72 100644 --- a/var/spack/repos/builtin/packages/py-azureml-dataprep/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-dataprep/package.py @@ -8,8 +8,9 @@ class PyAzuremlDataprep(Package): """Azure ML Data Preparation SDK.""" homepage = "http://aka.ms/data-prep-sdk" - url = "https://pypi.io/packages/py3/a/azureml_dataprep/azureml_dataprep-1.8.2-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_dataprep/azureml_dataprep-2.0.2-py3-none-any.whl" + version('2.0.2', sha256='9b9e97d9ed29c0641d3ceb37745ff078143bd235c53df528f847ec0684c52f79', expand=False) version('1.8.2', sha256='e53f3206f0bd4af8d5e7de3a94c2c6e662902b86e94a7b9d930e36329fe5820f', expand=False) variant('fuse', default=False, description='Build with FUSE support') @@ -17,11 +18,11 @@ class PyAzuremlDataprep(Package): extends('python') depends_on('python@3:', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-dotnetcore2@2.1.14:', type=('build', 'run')) + depends_on('py-dotnetcore2@2.1.14:2.999', type=('build', 'run')) depends_on('py-azureml-dataprep-native@14.2.1:14.999', type=('build', 'run')) - depends_on('py-cloudpickle@1.1.0:', type=('build', 'run')) + depends_on('py-cloudpickle@1.1.0:1.999', type=('build', 'run')) depends_on('py-azure-identity@1.2.0:1.2.999', type=('build', 'run')) - depends_on('py-fusepy@3.0.1:', when='+fuse', type=('build', 'run')) + depends_on('py-fusepy@3.0.1:3.999', when='+fuse', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-dataset-runtime/package.py b/var/spack/repos/builtin/packages/py-azureml-dataset-runtime/package.py new file mode 100644 index 0000000000..e7849b8b7e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-azureml-dataset-runtime/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) + + +class PyAzuremlDatasetRuntime(Package): + """The purpose of this package is to coordinate dependencies within + AzureML packages. It is not intended for public use.""" + + homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" + url = "https://pypi.io/packages/py3/a/azureml-dataset-runtime/azureml_dataset_runtime-1.11.0.post1-py3-none-any.whl" + + version('1.11.0.post1', sha256='65c20f276399a7d406c4850af7a6f149472d301931fd1da6a60bad59d43fa47b', expand=False) + + variant('fuse', default=False, description='Build with FUSE support') + + extends('python') + depends_on('python@3.0:3.999', type=('build', 'run')) + depends_on('py-pip', type='build') + depends_on('py-azureml-dataprep@2.0.1:2.0.999', type=('build', 'run')) + depends_on('py-pyarrow@0.17.0:0.999', type=('build', 'run')) + depends_on('py-fusepy@3.0.1:3.999', when='+fuse', type=('build', 'run')) + + def install(self, spec, prefix): + pip = which('pip') + pip('install', self.stage.archive_file, '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-azureml-pipeline-core/package.py b/var/spack/repos/builtin/packages/py-azureml-pipeline-core/package.py index ba7128b03e..2df7e538ac 100644 --- a/var/spack/repos/builtin/packages/py-azureml-pipeline-core/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-pipeline-core/package.py @@ -8,14 +8,18 @@ class PyAzuremlPipelineCore(Package): """Core functionality to enable azureml-pipeline feature.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_pipeline_core/azureml_pipeline_core-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_pipeline_core/azureml_pipeline_core-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='24e1c57a57e75f9d74ea6f45fa4e93c1ee3114c8ed9029d538f9cc8e4f8945b2', expand=False) + version('1.11.0', sha256='98012195e3bba12bf42ac69179549038b3563b39e3dadab4f1d06407a00ad8b3', expand=False) + version('1.8.0', sha256='24e1c57a57e75f9d74ea6f45fa4e93c1ee3114c8ed9029d538f9cc8e4f8945b2', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-azureml-core@1.8.0:1.8.999', type=('build', 'run')) + + depends_on('py-azureml-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-pipeline-steps/package.py b/var/spack/repos/builtin/packages/py-azureml-pipeline-steps/package.py index c461e8c8e6..5cb949660c 100644 --- a/var/spack/repos/builtin/packages/py-azureml-pipeline-steps/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-pipeline-steps/package.py @@ -8,16 +8,22 @@ class PyAzuremlPipelineSteps(Package): """Represents a unit of computation in azureml-pipeline.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_pipeline_steps/azureml_pipeline_steps-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_pipeline_steps/azureml_pipeline_steps-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='3310674207ed457a26fb978e7168e400306c695f7f854f354dee9d5c7c81304c', expand=False) + version('1.11.0', sha256='674317d9c74ec4cb05e443f50de1732e14dc4519cbe2743a44f8db0bc5e71214', expand=False) + version('1.8.0', sha256='3310674207ed457a26fb978e7168e400306c695f7f854f354dee9d5c7c81304c', expand=False) extends('python') depends_on('python@3:', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-azureml-train-core@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-train-automl-client@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-pipeline-core@1.8.0:1.8.999', type=('build', 'run')) + + depends_on('py-azureml-train-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-train-automl-client@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-pipeline-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-train-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-train-automl-client@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-pipeline-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-pipeline/package.py b/var/spack/repos/builtin/packages/py-azureml-pipeline/package.py index 8d359f92aa..e66b510d68 100644 --- a/var/spack/repos/builtin/packages/py-azureml-pipeline/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-pipeline/package.py @@ -9,15 +9,20 @@ class PyAzuremlPipeline(Package): pipelines as well as to submit and track individual pipeline runs.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_pipeline/azureml_pipeline-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_pipeline/azureml_pipeline-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='43ce39789d9a255f147311e40274b5f2571c7ef3b52e218f248724ccb377a02c', expand=False) + version('1.11.0', sha256='8233c66b4120e86b9a9346608ca53bf48d5b9f0558300314034426dd0d7897d6', expand=False) + version('1.8.0', sha256='43ce39789d9a255f147311e40274b5f2571c7ef3b52e218f248724ccb377a02c', expand=False) extends('python') depends_on('python@3:', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-azureml-pipeline-core@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-pipeline-steps@1.8.0:1.8.999', type=('build', 'run')) + + depends_on('py-azureml-pipeline-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-pipeline-steps@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-pipeline-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-pipeline-steps@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-sdk/package.py b/var/spack/repos/builtin/packages/py-azureml-sdk/package.py index fd14b0ed7b..cd7f504fd3 100644 --- a/var/spack/repos/builtin/packages/py-azureml-sdk/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-sdk/package.py @@ -8,26 +8,28 @@ class PyAzuremlSdk(Package): """Microsoft Azure Machine Learning Python SDK.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_sdk/azureml_sdk-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_sdk/azureml_sdk-1.11.0-py3-none-any.whl" maintainers = ['adamjstewart'] - version('1.8.0', sha256='61107db1403ce2c1a12064eb0fa31a1d075debbf32dd17cb93b7639b615b7839', expand=False) + version('1.11.0', sha256='d8c9d24ea90457214d798b0d922489863dad518adde3638e08ef62de28fb183a', expand=False) + version('1.8.0', sha256='61107db1403ce2c1a12064eb0fa31a1d075debbf32dd17cb93b7639b615b7839', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) depends_on('py-pip', type='build') - # For version 1.8.0, dependencies are locked to ~= 1.8.0 - for ver in ['1.8.0']: - ver = Version(ver) - for dep in [ - 'core', 'train', 'train-automl-client', 'pipeline', - 'dataprep+fuse' - ]: - depends_on('py-azureml-{0}@{1}:{2}.999'.format( - dep, ver, ver.up_to(2) - ), when='@{0}'.format(ver), type=('build', 'run')) + depends_on('py-azureml-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-dataset-runtime@1.11.0:1.11.999 +fuse', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-train@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-train-automl-client@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-pipeline@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-train@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-train-automl-client@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-pipeline@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-dataprep@1.8.0:1.8.999 +fuse', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-telemetry/package.py b/var/spack/repos/builtin/packages/py-azureml-telemetry/package.py index 4ceaf33399..510ea5ec5d 100644 --- a/var/spack/repos/builtin/packages/py-azureml-telemetry/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-telemetry/package.py @@ -9,15 +9,19 @@ class PyAzuremlTelemetry(Package): data.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_telemetry/azureml_telemetry-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_telemetry/azureml_telemetry-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='de657efe9773bea0de76c432cbab34501ac28606fe1b380d6883562ebda3d804', expand=False) + version('1.11.0', sha256='0d46c4a7bb8c0b188f1503504a6029384bc2237d82a131e7d1e9e89c3491b1fc', expand=False) + version('1.8.0', sha256='de657efe9773bea0de76c432cbab34501ac28606fe1b380d6883562ebda3d804', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) depends_on('py-pip', type='build') depends_on('py-applicationinsights', type=('build', 'run')) - depends_on('py-azureml-core@1.8.0:1.8.999', type=('build', 'run')) + + depends_on('py-azureml-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-train-automl-client/package.py b/var/spack/repos/builtin/packages/py-azureml-train-automl-client/package.py index 739af7a07f..51f977dcf8 100644 --- a/var/spack/repos/builtin/packages/py-azureml-train-automl-client/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-train-automl-client/package.py @@ -10,17 +10,24 @@ class PyAzuremlTrainAutomlClient(Package): given training and test data.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_train_automl_client/azureml_train_automl_client-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_train_automl_client/azureml_train_automl_client-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='562300095db6c4dea7b052e255c53dd95c4c3d0589a828b545497fe1ca7e9677', expand=False) + version('1.11.0', sha256='3184df60a46917e92140a299aecb54591b19df490a3f4f571ff1f92c5e70a715', expand=False) + version('1.8.0', sha256='562300095db6c4dea7b052e255c53dd95c4c3d0589a828b545497fe1ca7e9677', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-azureml-dataprep@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-automl-core@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-core@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-telemetry@1.8.0:1.8.999', type=('build', 'run')) + + depends_on('py-azureml-automl-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-dataset-runtime@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-telemetry@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-dataprep@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-automl-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-telemetry@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-train-core/package.py b/var/spack/repos/builtin/packages/py-azureml-train-core/package.py index 55e706762a..b15cd2e82b 100644 --- a/var/spack/repos/builtin/packages/py-azureml-train-core/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-train-core/package.py @@ -9,17 +9,23 @@ class PyAzuremlTrainCore(Package): metapackage.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_train_core/azureml_train_core-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_train_core/azureml_train_core-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='5a8d90a08d4477527049d793feb40d07dc32fafc0e4e57b4f0729d3c50b408a2', expand=False) + version('1.11.0', sha256='1b5fd813d21e75cd522d3a078eba779333980a309bcff6fc72b74ddc8e7a26f1', expand=False) + version('1.8.0', sha256='5a8d90a08d4477527049d793feb40d07dc32fafc0e4e57b4f0729d3c50b408a2', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-azureml-train-restclients-hyperdrive@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-core@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-azureml-telemetry@1.8.0:1.8.999', type=('build', 'run')) - depends_on('py-flake8@3.1.0:3.7.9', when='^python@3.6:', type=('build', 'run')) + + depends_on('py-azureml-train-restclients-hyperdrive@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + depends_on('py-azureml-telemetry@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-train-restclients-hyperdrive@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-azureml-telemetry@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) + depends_on('py-flake8@3.1.0:3.7.9', when='@1.8.0 ^python@3.6:', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-azureml-train-restclients-hyperdrive/package.py b/var/spack/repos/builtin/packages/py-azureml-train-restclients-hyperdrive/package.py index 4bcf121cc8..36ce557724 100644 --- a/var/spack/repos/builtin/packages/py-azureml-train-restclients-hyperdrive/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-train-restclients-hyperdrive/package.py @@ -9,9 +9,10 @@ class PyAzuremlTrainRestclientsHyperdrive(Package): azureml-train metapackage.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_train_restclients_hyperdrive/azureml_train_restclients_hyperdrive-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_train_restclients_hyperdrive/azureml_train_restclients_hyperdrive-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='1633c7eb0fd96714f54f72072ccf1c5ee1ef0a8ba52680793f20d27e0fd43c87', expand=False) + version('1.11.0', sha256='8bc6f9676a9f75e6ee06d201c418ea904c24e854f26cf799b08c259c3ac92d13', expand=False) + version('1.8.0', sha256='1633c7eb0fd96714f54f72072ccf1c5ee1ef0a8ba52680793f20d27e0fd43c87', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-azureml-train/package.py b/var/spack/repos/builtin/packages/py-azureml-train/package.py index c285968349..c8917a5700 100644 --- a/var/spack/repos/builtin/packages/py-azureml-train/package.py +++ b/var/spack/repos/builtin/packages/py-azureml-train/package.py @@ -10,14 +10,18 @@ class PyAzuremlTrain(Package): tuning using Azure cloud.""" homepage = "https://docs.microsoft.com/en-us/azure/machine-learning/service/" - url = "https://pypi.io/packages/py3/a/azureml_train/azureml_train-1.8.0-py3-none-any.whl" + url = "https://pypi.io/packages/py3/a/azureml_train/azureml_train-1.11.0-py3-none-any.whl" - version('1.8.0', sha256='124e5b7d8d64bac61db022f305bd31c25e57fdcb4be93eefd4244a04a13deab3', expand=False) + version('1.11.0', sha256='7800a3067979972b976c81082dc509e23c04405129cc1fdef0f9cd7895bcafc7', expand=False) + version('1.8.0', sha256='124e5b7d8d64bac61db022f305bd31c25e57fdcb4be93eefd4244a04a13deab3', expand=False) extends('python') depends_on('python@3.5:3.999', type=('build', 'run')) depends_on('py-pip', type='build') - depends_on('py-azureml-train-core@1.8.0:1.8.999', type=('build', 'run')) + + depends_on('py-azureml-train-core@1.11.0:1.11.999', when='@1.11.0', type=('build', 'run')) + + depends_on('py-azureml-train-core@1.8.0:1.8.999', when='@1.8.0', type=('build', 'run')) def install(self, spec, prefix): pip = which('pip') diff --git a/var/spack/repos/builtin/packages/py-boto/package.py b/var/spack/repos/builtin/packages/py-boto/package.py new file mode 100644 index 0000000000..005ba180ed --- /dev/null +++ b/var/spack/repos/builtin/packages/py-boto/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 PyBoto(PythonPackage): + """Boto is a Python package that provides interfaces to + Amazon Web Services.""" + + homepage = "https://github.com/boto/boto" + url = "https://github.com/boto/boto/archive/2.49.0.tar.gz" + + version('2.49.0', sha256='3dbefd4f4542f85a323d4f54601f31ed4d362fc87945245f32e4a85029513314') + + depends_on('python@2.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-chainmap/package.py b/var/spack/repos/builtin/packages/py-chainmap/package.py new file mode 100644 index 0000000000..f68782e7b4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-chainmap/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 PyChainmap(PythonPackage): + """Clone/backport of ChainMap for Python 2.6, Python 3.2, and PyPy3 + based on Python 3.2--versions that currently lack their own + ChainMap implementations.""" + + homepage = "https://bitbucket.org/jeunice/chainmap/src/default/" + url = "https://pypi.io/packages/source/c/chainmap/chainmap-1.0.3.tar.gz" + + version('1.0.3', sha256='e42aaa4b3e2f66102a11bfd563069704bfbfd84fdcb517b564effd736bf53cd9') + version('1.0.2', sha256='405da3bce9913bfb33e6e497803b447b60d12ab44031ca357626143e087e0526') + version('1.0.1', sha256='c1cd76c679dd7af982ec5a45788ef4a0dfc20e77f27ccdeca289a5141862ff64') + version('1.0.0', sha256='2e24b2efa3494b16772282812efcd712b1d6b80e1b761a56b1b7cbc8fe0313c4') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-cmake/package.py b/var/spack/repos/builtin/packages/py-cmake/package.py new file mode 100644 index 0000000000..fc2ab57044 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-cmake/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 PyCmake(PythonPackage): + """CMake is an open-source, cross-platform family of tools designed to + build, test and package software + """ + + homepage = "https://cmake.org/" + url = "https://pypi.io/packages/source/c/cmake/cmake-3.18.0.tar.gz" + + version('3.18.0', sha256='52b98c5ee70b5fa30a8623e96482227e065292f78794eb085fdf0fecb204b79b') + + depends_on('cmake@3.18.0', type=('build', 'link', 'run'), when='@3.18.0') + depends_on('py-scikit-build', type='build') diff --git a/var/spack/repos/builtin/packages/py-colorspacious/package.py b/var/spack/repos/builtin/packages/py-colorspacious/package.py new file mode 100644 index 0000000000..9efa00007f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-colorspacious/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 PyColorspacious(PythonPackage): + """A powerful, accurate, and easy-to-use Python library for doing colorspace + conversions. + """ + + homepage = "https://github.com/njsmith/colorspacious" + url = "https://pypi.io/packages/source/c/colorspacious/colorspacious-1.1.2.tar.gz" + + version('1.1.2', sha256='5e9072e8cdca889dac445c35c9362a22ccf758e97b00b79ff0d5a7ba3e11b618') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-commonmark/package.py b/var/spack/repos/builtin/packages/py-commonmark/package.py new file mode 100644 index 0000000000..0d0e31bc68 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-commonmark/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 PyCommonmark(PythonPackage): + """commonmark.py is a pure Python port of jgm's commonmark.js, a Markdown + parser and renderer for the CommonMark specification, using only native + modules.""" + + homepage = "https://github.com/readthedocs/commonmark.py" + url = "https://pypi.io/packages/source/c/commonmark/commonmark-0.9.0.tar.gz" + + version('0.9.0', sha256='867fc5db078ede373ab811e16b6789e9d033b15ccd7296f370ca52d1ee792ce0') + + depends_on('py-future') diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py index f017a53c08..42282d5152 100644 --- a/var/spack/repos/builtin/packages/py-cython/package.py +++ b/var/spack/repos/builtin/packages/py-cython/package.py @@ -10,7 +10,7 @@ class PyCython(PythonPackage): """The Cython compiler for writing C extensions for the Python language.""" homepage = "https://pypi.python.org/pypi/cython" - url = "https://pypi.io/packages/source/c/cython/Cython-0.29.16.tar.gz" + url = "https://pypi.io/packages/source/c/cython/Cython-0.29.21.tar.gz" import_modules = [ 'cython', 'Cython', 'Cython.Build', 'Cython.Compiler', @@ -20,6 +20,7 @@ class PyCython(PythonPackage): 'Cython.Tempita', 'pyximport', ] + version('0.29.21', sha256='e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad') version('0.29.16', sha256='232755284f942cbb3b43a06cd85974ef3c970a021aef19b5243c03ee2b08fa05') version('0.29.15', sha256='60d859e1efa5cc80436d58aecd3718ff2e74b987db0518376046adedba97ac30') version('0.29.14', sha256='e4d6bb8703d0319eb04b7319b12ea41580df44fd84d83ccda13ea463c6801414') diff --git a/var/spack/repos/builtin/packages/py-dp-gp-cluster/package.py b/var/spack/repos/builtin/packages/py-dp-gp-cluster/package.py new file mode 100644 index 0000000000..42e56516d1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-dp-gp-cluster/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 * +from os import unlink +from glob import glob + + +class PyDpGpCluster(PythonPackage): + """DP_GP_cluster clusters genes by expression over a time course using a + Dirichlet process Gaussian process model.""" + + homepage = "https://github.com/PrincetonUniversity/DP_GP_cluster" + git = "https://github.com/PrincetonUniversity/DP_GP_cluster.git" + + version('2019-09-22', commit='eec12e74219f916aa86e253783905f7b5e30f6f4') + + depends_on('python@2.7:2.8', type=('build', 'run')) + + depends_on('py-cython', type='build') + depends_on('py-gpy@0.8.8:0.9.9', type=('build', 'run')) + depends_on('py-pandas', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-scipy@0.14:', type=('build', 'run')) + depends_on('py-matplotlib', type=('build', 'run')) + depends_on('py-scikit-learn', type=('build', 'run')) + + @run_before('build') + def remove_cython_output(self): + for f in glob('DP_GP/*.c'): + unlink(f) diff --git a/var/spack/repos/builtin/packages/py-fabric/package.py b/var/spack/repos/builtin/packages/py-fabric/package.py new file mode 100644 index 0000000000..b8ccb624bb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fabric/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) + + +class PyFabric(PythonPackage): + """High level SSH command execution.""" + + homepage = "http://fabfile.org/" + url = "https://pypi.io/packages/source/f/fabric/fabric-2.5.0.tar.gz" + + version('2.5.0', sha256='24842d7d51556adcabd885ac3cf5e1df73fc622a1708bf3667bf5927576cdfa6') + + depends_on('py-setuptools', type='build') + depends_on('py-invoke@1.3:1.999', type=('build', 'run')) + depends_on('py-paramiko@2.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-fenics-dijitso/package.py b/var/spack/repos/builtin/packages/py-fenics-dijitso/package.py new file mode 100644 index 0000000000..d2cd6865d3 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fenics-dijitso/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 PyFenicsDijitso(PythonPackage): + """A Python module for distributed just-in-time shared library building""" + + homepage = "https://bitbucket.org/fenics-project/dijitso" + url = "https://bitbucket.org/fenics-project/dijitso/downloads/dijitso-2018.1.0.tar.gz" + git = "https://bitbucket.org/fenics-project/dijitso.git" + maintainers = ["js947", "chrisrichardson"] + + version("master", branch="master") + version("2018.1.0", sha256="2084ada1e7bd6ecec0999b15a17db98c72e26f1ccbf3fcbe240b1a035a1a2e64") + version("2017.2.0", sha256="05a893d17f8a50067d303b232e41592dce2840d6499677ad8b457ba58a679b58") + version("2017.1.0", sha256="ef23952539d349fbd384d41302abc94413d485ca7e8c29e8a0debc2aadaf8657") + version("2016.2.0", sha256="1bfa0ac0d47dae75bbde8fabb1145d3caa2e6c28a1e4097ad5550a91a8a205e4") + + depends_on("py-setuptools", type="build") + depends_on("python@3.5:", type=("build", "run")) + depends_on("py-numpy", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py b/var/spack/repos/builtin/packages/py-fenics-dolfinx/package.py new file mode 100644 index 0000000000..211a68e5cf --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fenics-dolfinx/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 PyFenicsDolfinx(PythonPackage): + """Python interface library to Next generation FEniCS problem solving + environment""" + + homepage = "https://github.com/FEniCS/dolfinx" + git = "https://github.com/FEniCS/dolfinx.git" + maintainers = ["js947", "chrisrichardson"] + + version("master", branch="master") + + depends_on("cmake@3.9:", type="build") + depends_on("fenics-dolfinx@master") + depends_on("py-mpi4py", type=("build", "run")) + depends_on("py-petsc4py", type=("build", "run")) + depends_on("py-pybind11", type=("build", "run")) + + import_modules = ['dolfinx'] + phases = ['build_ext', 'build', 'install'] + + build_directory = 'python' diff --git a/var/spack/repos/builtin/packages/py-fenics-ffcx/package.py b/var/spack/repos/builtin/packages/py-fenics-ffcx/package.py new file mode 100644 index 0000000000..abc7792afb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fenics-ffcx/package.py @@ -0,0 +1,23 @@ +# 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 PyFenicsFfcx(PythonPackage): + """Next generation FEniCS Form Compiler""" + + homepage = "https://github.com/FEniCS/ffcx" + git = "https://github.com/FEniCS/ffcx.git" + maintainers = ["js947", "chrisrichardson"] + + version("master", branch="master") + + depends_on('python@3.5:', type=('build', 'run')) + depends_on("py-setuptools", type=("build", "run")) + depends_on("py-cffi", type=("build", "run")) + depends_on("py-fenics-ufl@master", type=("build", "run")) + depends_on("py-fenics-fiat@master", type=("build", "run")) + depends_on("py-numpy", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-fenics-fiat/package.py b/var/spack/repos/builtin/packages/py-fenics-fiat/package.py new file mode 100644 index 0000000000..f6f9aa5825 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fenics-fiat/package.py @@ -0,0 +1,34 @@ +# 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 PyFenicsFiat(PythonPackage): + """The FInite element Automatic Tabulator FIAT supports generation of + arbitrary order instances of the Lagrange elements on lines, triangles, and + tetrahedra. It is also capable of generating arbitrary order instances of + Jacobi-type quadrature rules on the same element shapes. Further, H(div) + and H(curl) conforming finite element spaces such as the families of + Raviart-Thomas, Brezzi-Douglas-Marini and Nedelec are supported on + triangles and tetrahedra. Upcoming versions will also support Hermite and + nonconforming elements""" + + homepage = "https://fenicsproject.org/" + url = "https://github.com/FEniCS/fiat/archive/2019.1.0.tar.gz" + git = "https://github.com/FEniCS/fiat.git" + maintainers = ["js947", "chrisrichardson"] + + version("master", branch="master") + version('2019.1.0', sha256='2a6d175a825ed725843918ef28846edbcf710a879c2fe8caaeda77b1ce9b9a1c') + version('2018.1.0', sha256='7468709c7aacf7dfb22c09fb5250448eb24084b9dd088ec2632a96d56c0f3830') + version('2017.2.0', sha256='e4d3ffc86a0a717b3f17b9bb2d922214c342be27e5bdfbe50f110030bfff9729') + version('2017.1.0.post1', sha256='1784fe1cb9479ca7cd85f63b0afa6e07634feec8d8e82fa8be4c480649cb9621') + version('2017.1.0', sha256='d4288401ad16c4598720f9db0810a522f7f0eadad35d8211bac7120bce5fde94') + + depends_on('python@3:', type=('build', 'run')) + depends_on('py-setuptools', type="build") + depends_on('py-numpy', type=("build", "run")) + depends_on('py-sympy', type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-fenics-ufl/package.py b/var/spack/repos/builtin/packages/py-fenics-ufl/package.py new file mode 100644 index 0000000000..0476cd33c6 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fenics-ufl/package.py @@ -0,0 +1,30 @@ +# 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 PyFenicsUfl(PythonPackage): + """The Unified Form Language (UFL) is a domain specific language for + declaration of finite element discretizations of variational forms. More + precisely, it defines a flexible interface for choosing finite element + spaces and defining expressions for weak forms in a notation close to + mathematical notation.""" + + homepage = "https://fenicsproject.org/" + url = "https://github.com/FEniCS/ufl/archive/2019.1.0.tar.gz" + git = "https://github.com/FEniCS/ufl.git" + maintainers = ["js947", "chrisrichardson"] + + version("master", branch="master") + version('2019.1.0', sha256='46ac0df4e96327be10b9576d2b8fa8b2c4ca62d3c681d407f5718b162d3ca22d') + version('2018.1.0', sha256='b0d4c2f43f396fd5609317b70d55b53b89c649962fc8a593f4e0e21607da211d') + version('2017.2.0.post0', sha256='111e77707cd6731584b1041f405c2fd3f1752a86c51fd9c430524bd396f293b0') + version('2017.2.0', sha256='0adff7a511185b20c38ddaccdeed6c1b2ecafe4b163c688bfd1316d5c3b1c00d') + version('2017.1.0.post1', sha256='82c8170f44c2392c7e60aa86495df22cc209af50735af8115dc35aeda4b0ca96') + + depends_on("python@3.5:", type=('build', 'run')) + depends_on("py-setuptools", type="build") + depends_on("py-numpy", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-fisher/package.py b/var/spack/repos/builtin/packages/py-fisher/package.py new file mode 100644 index 0000000000..45e0fc5110 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fisher/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 PyFisher(PythonPackage): + """Fisher's Exact Test. + + Simple, fast implementation of Fisher's exact test.""" + + homepage = "https://github.com/brentp/fishers_exact_test" + url = "https://pypi.io/packages/source/f/fisher/fisher-0.1.9.tar.gz" + + version('0.1.9', sha256='d378b3f7e488e2a679c6d0e5ea1bce17bc931c2bfe8ec8424ee47a74f251968d') + + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-pytest', type='test') diff --git a/var/spack/repos/builtin/packages/py-fortran-language-server/package.py b/var/spack/repos/builtin/packages/py-fortran-language-server/package.py new file mode 100644 index 0000000000..277cf91c9d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fortran-language-server/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 PyFortranLanguageServer(PythonPackage): + """A Fortran implementation of the Language Server Protocol using Python + (2.7+ or 3.0+).""" + + homepage = "https://github.com/hansec/fortran-language-server" + url = "https://github.com/hansec/fortran-language-server/archive/v1.10.3.tar.gz" + + maintainers = ['AndrewGaspar'] + + version('1.11.1', sha256='8f03782dd992d6652a3f2d349115fdad3aa3464fee3fafbbc4f8ecf780166e3c') + + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-future', type=('build', 'run'), when='^python@:2') + depends_on('py-argparse', type=('build', 'run'), when='^python@:2.6,3.0:3.1') + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-gensim/package.py b/var/spack/repos/builtin/packages/py-gensim/package.py index a08cbbe98d..fe3e4a192c 100644 --- a/var/spack/repos/builtin/packages/py-gensim/package.py +++ b/var/spack/repos/builtin/packages/py-gensim/package.py @@ -16,12 +16,22 @@ class PyGensim(PythonPackage): maintainers = ['adamjstewart'] + version('3.8.3', sha256='786adb0571f75114e9c5f7a31dd2e6eb39a9791f22c8757621545e2ded3ea367') 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@1.11.3:', type=('build', 'run')) - depends_on('py-scipy@0.18.1:', type=('build', 'run')) + + depends_on('py-numpy@1.11.3:1.16.1', when='^python@:2.999', type=('build', 'run')) + depends_on('py-numpy@1.11.3:', when='^python@3:', type=('build', 'run')) + + depends_on('py-scipy@0.18.1:1.2.3', when='^python@:2.999', type=('build', 'run')) + depends_on('py-scipy@0.18.1:', when='^python@3:', type=('build', 'run')) + depends_on('py-six@1.5.0:', type=('build', 'run')) - depends_on('py-smart-open@1.8.1:', type=('build', 'run')) + + depends_on('py-smart-open@1.7.0:1.10.9999', when='@3.8.0^python@:2.999', type=('build', 'run')) + depends_on('py-smart-open@1.7.0:', when='@3.8.0^python@3:', type=('build', 'run')) + depends_on('py-smart-open@1.8.1:1.10.9999', when='@3.8.1:^python@:2.999', type=('build', 'run')) + depends_on('py-smart-open@1.8.1:', when='@3.8.1:^python@3:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-googledrivedownloader/package.py b/var/spack/repos/builtin/packages/py-googledrivedownloader/package.py new file mode 100644 index 0000000000..96710e1a17 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-googledrivedownloader/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) + + +class PyGoogledrivedownloader(PythonPackage): + """Minimal class to download shared files from Google Drive.""" + + homepage = "https://github.com/ndrplz/google-drive-downloader" + url = "https://pypi.io/packages/source/g/googledrivedownloader/googledrivedownloader-0.4.tar.gz" + + version('0.4', sha256='4b34c1337b2ff3bf2bd7581818efbdcaea7d50ffd484ccf80809688f5ca0e204') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-gpy/package.py b/var/spack/repos/builtin/packages/py-gpy/package.py index 59bebda5d0..d85c28b52d 100644 --- a/var/spack/repos/builtin/packages/py-gpy/package.py +++ b/var/spack/repos/builtin/packages/py-gpy/package.py @@ -13,10 +13,11 @@ class PyGpy(PythonPackage): url = "https://pypi.io/packages/source/g/gpy/GPy-1.9.9.tar.gz" version('1.9.9', sha256='04faf0c24eacc4dea60727c50a48a07ddf9b5751a3b73c382105e2a31657c7ed') + version('0.8.8', sha256='e135d928cf170e2ec7fb058a035b5a7e334dc6b84d0bfb981556782528341988') depends_on('py-setuptools', type='build') depends_on('py-numpy@1.7:', type=('build', 'run')) - depends_on('py-scipy@1.3.0:', type=('build', 'run')) + depends_on('py-scipy@0.16:', type=('build', 'run')) depends_on('py-six', type=('build', 'run')) depends_on('py-paramz@0.9.0:', type=('build', 'run')) - depends_on('py-cython@0.29:', type=('build', 'run')) + depends_on('py-cython@0.29:', type='build') diff --git a/var/spack/repos/builtin/packages/py-gql/package.py b/var/spack/repos/builtin/packages/py-gql/package.py new file mode 100644 index 0000000000..a3962bc649 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-gql/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 PyGql(PythonPackage): + """This is a GraphQL client for Python. Plays nicely with + graphene, graphql-core, graphql-js and any other GraphQL + implementation compatible with the spec. + GQL architecture is inspired by React-Relay and Apollo-Client.""" + + homepage = "https://github.com/graphql-python/gql" + url = "https://github.com/graphql-python/gql/archive/v3.0.0a1.tar.gz" + + version('3.0.0a1', sha256='3254a6010464932e3700a8d225cf6e40a6983aaf5f279615504c8196a374daf9') + + depends_on('py-setuptools', type='build') + depends_on('py-aiohttp@3.6.2', type=('build', 'run')) + depends_on('py-graphql-core@3.1.0:3.1.999', type=('build', 'run')) + depends_on('py-requests@2.23:2.999', type=('build', 'run')) + depends_on('py-websockets@8.1:8.999', type=('build', 'run')) + depends_on('py-yarl@1.4:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-graphql-core/package.py b/var/spack/repos/builtin/packages/py-graphql-core/package.py new file mode 100644 index 0000000000..6b74fa9095 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-graphql-core/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 PyGraphqlCore(PythonPackage): + """GraphQL-core 3 is a Python 3.6+ port of GraphQL.js, the + JavaScript reference implementation for GraphQL, a query language + for APIs created by Facebook.""" + + homepage = "https://github.com/graphql-python/graphql-core" + url = "https://github.com/graphql-python/graphql-core/archive/v3.1.2.tar.gz" + + version('3.1.2', sha256='16087360d34f9cfa295b401fc17f9f11bcddef0e6e0dc5a694bbe2298b31949b') + version('3.0.5', sha256='88021f8b879f18cf56523644e51e1552b126a9ad9ab218f579bf503d236d5272') + + depends_on('python@3.6:3.999', type=('build', 'run')) + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index e652849fd1..2b7d34cc4b 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -49,7 +49,8 @@ class PyH5py(PythonPackage): phases = ['configure', 'install'] def configure(self, spec, prefix): - self.setup_py('configure', '--hdf5={0}'.format(spec['hdf5'].prefix)) + self.setup_py('configure', '--hdf5={0}'.format(spec['hdf5'].prefix), + '--hdf5-version={0}'.format(spec['hdf5'].version)) if '+mpi' in spec: env['CC'] = spec['mpi'].mpicc diff --git a/var/spack/repos/builtin/packages/py-hieroglyph/package.py b/var/spack/repos/builtin/packages/py-hieroglyph/package.py new file mode 100644 index 0000000000..fa8a0dab06 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-hieroglyph/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 PyHieroglyph(PythonPackage): + """Hieroglyph is an extension for Sphinx which builds HTML + presentations from ReStructured Text documents. + """ + + homepage = "https://github.com/nyergler/hieroglyph" + url = "https://pypi.io/packages/source/h/hieroglyph/hieroglyph-1.0.0.tar.gz" + + version('1.0.0', sha256='8e137f0b1cd60c47b870011089790d3c8ddb74fcf409a75ddf2c7f2516ff337c') + version('master') + + depends_on('py-setuptools') + depends_on('py-sphinx@1.2:') + depends_on('py-six') diff --git a/var/spack/repos/builtin/packages/py-idna-ssl/package.py b/var/spack/repos/builtin/packages/py-idna-ssl/package.py new file mode 100644 index 0000000000..273cdd9bc5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-idna-ssl/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 PyIdnaSsl(PythonPackage): + """Patch ssl.match_hostname for Unicode(idna) domains support""" + + homepage = "https://github.com/aio-libs/idna-ssl" + url = "https://github.com/aio-libs/idna-ssl/archive/v1.1.0.tar.gz" + + version('1.1.0', sha256='cdbefa2429a6a2fa5cbe8d2a47c677ca671e84531618d3460fc0bcfc840684c5') + + depends_on('py-setuptools', type='build') + depends_on('py-idna@2.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-inference-schema/package.py b/var/spack/repos/builtin/packages/py-inference-schema/package.py new file mode 100644 index 0000000000..5d9795145e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-inference-schema/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 PyInferenceSchema(Package): + """This package is intended to provide a uniform schema for common machine + learning applications, as well as a set of decorators that can be used to + aid in web based ML prediction applications.""" + + homepage = "https://pypi.org/project/inference-schema/" + url = "https://pypi.io/packages/py3/i/inference-schema/inference_schema-1.0.2-py3-none-any.whl" + + version('1.0.2', sha256='fd379becbd12dcf9f7a1ad5c03b163d501ef1dcc4fb85204735c84b1d139f478', expand=False) + + variant('numpy', default=False, description='Enable numpy support') + variant('pandas', default=False, description='Enable pandas support') + variant('pyspark', default=False, description='Enable pyspark support') + + extends('python') + depends_on('python@3:', type=('build', 'run')) + depends_on('py-pip', type='build') + depends_on('py-python-dateutil@2.5.3:', type=('build', 'run')) + depends_on('py-pytz@2017.2:', type=('build', 'run')) + depends_on('py-wrapt@1.11.1', type=('build', 'run')) + depends_on('py-numpy@1.13.0:', when='+numpy', type=('build', 'run')) + depends_on('py-pandas@0.20.2:', when='+pandas', type=('build', 'run')) + depends_on('py-pyspark@2.3.2', when='+pyspark', type=('build', 'run')) + + def install(self, spec, prefix): + pip = which('pip') + pip('install', self.stage.archive_file, '--prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/py-invoke/package.py b/var/spack/repos/builtin/packages/py-invoke/package.py index 28a4bcd2b1..29414d5fbc 100644 --- a/var/spack/repos/builtin/packages/py-invoke/package.py +++ b/var/spack/repos/builtin/packages/py-invoke/package.py @@ -10,8 +10,9 @@ class PyInvoke(PythonPackage): """Pythonic task execution""" homepage = "http://www.pyinvoke.org/" - url = "https://pypi.io/packages/source/i/invoke/invoke-1.2.0.tar.gz" + url = "https://pypi.io/packages/source/i/invoke/invoke-1.4.1.tar.gz" + version('1.4.1', sha256='de3f23bfe669e3db1085789fd859eb8ca8e0c5d9c20811e2407fa042e8a5e15d') version('1.2.0', sha256='dc492f8f17a0746e92081aec3f86ae0b4750bf41607ea2ad87e5a7b5705121b7') depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-javaproperties/package.py b/var/spack/repos/builtin/packages/py-javaproperties/package.py new file mode 100644 index 0000000000..89358b1b67 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-javaproperties/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 PyJavaproperties(PythonPackage): + """Read & write Java .properties files.""" + + homepage = "https://github.com/jwodder/javaproperties" + url = "https://pypi.io/packages/source/j/javaproperties/javaproperties-0.7.0.tar.gz" + + version('0.7.0', sha256='cf45b39fcbaeced1dfc0b7f2bda16e34fc0349116269e001dada42fd2e145d87') + version('0.5.1', sha256='2b0237b054af4d24c74f54734b7d997ca040209a1820e96fb4a82625f7bd40cf') + + depends_on('python@2.7:2.8,3.4:3.999', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-six@1.4:1.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-jsmin/package.py b/var/spack/repos/builtin/packages/py-jsmin/package.py new file mode 100644 index 0000000000..b0ace422ee --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jsmin/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) + + +class PyJsmin(PythonPackage): + """JavaScript minifier.""" + + homepage = "https://github.com/tikitu/jsmin/" + url = "https://pypi.io/packages/source/j/jsmin/jsmin-2.2.2.tar.gz" + + version('2.2.2', sha256='b6df99b2cd1c75d9d342e4335b535789b8da9107ec748212706ef7bbe5c2553b') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-jsondiff/package.py b/var/spack/repos/builtin/packages/py-jsondiff/package.py new file mode 100644 index 0000000000..a6bad6fa93 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jsondiff/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) + + +class PyJsondiff(PythonPackage): + """Diff JSON and JSON-like structures in Python.""" + + homepage = "https://github.com/ZoomerAnalytics/jsondiff" + url = "https://pypi.io/packages/source/j/jsondiff/jsondiff-1.2.0.tar.gz" + + version('1.2.0', sha256='34941bc431d10aa15828afe1cbb644977a114e75eef6cc74fb58951312326303') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-jsonschema/package.py b/var/spack/repos/builtin/packages/py-jsonschema/package.py index 0d62052f9b..c33cfc63e4 100644 --- a/var/spack/repos/builtin/packages/py-jsonschema/package.py +++ b/var/spack/repos/builtin/packages/py-jsonschema/package.py @@ -10,8 +10,11 @@ class PyJsonschema(PythonPackage): """Jsonschema: An(other) implementation of JSON Schema for Python.""" homepage = "http://github.com/Julian/jsonschema" - url = "https://pypi.io/packages/source/j/jsonschema/jsonschema-2.6.0.tar.gz" + url = "https://pypi.io/packages/source/j/jsonschema/jsonschema-3.2.0.tar.gz" + version('3.2.0', sha256='c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a') + version('3.1.1', sha256='2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f') + version('3.0.2', sha256='8d4a2b7b6c2237e0199c8ea1a6d3e05bf118e289ae2b9d7ba444182a2959560d') version('3.0.1', sha256='0c0a81564f181de3212efa2d17de1910f8732fa1b71c42266d983cd74304e20d') version('2.6.0', sha256='6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02') version('2.5.1', sha256='36673ac378feed3daa5956276a829699056523d7961027911f064b52255ead41') @@ -28,3 +31,5 @@ class PyJsonschema(PythonPackage): depends_on('py-attrs@17.4.0:', when='@3:', type=('build', 'run')) depends_on('py-pyrsistent@0.14.0:', when='@3:', type=('build', 'run')) depends_on('py-six@1.11.0:', when='@3:', type=('build', 'run')) + + depends_on('py-importlib-metadata', when='@3.1.1: ^python@:3.7.99', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-keras-preprocessing/package.py b/var/spack/repos/builtin/packages/py-keras-preprocessing/package.py index f9a5499612..5129e92201 100644 --- a/var/spack/repos/builtin/packages/py-keras-preprocessing/package.py +++ b/var/spack/repos/builtin/packages/py-keras-preprocessing/package.py @@ -9,15 +9,16 @@ from spack import * class PyKerasPreprocessing(PythonPackage): """Utilities for working with image data, text data, and sequence data.""" - homepage = "http://keras.io" - url = "https://github.com/keras-team/keras-preprocessing/archive/1.0.5.tar.gz" + homepage = "https://github.com/keras-team/keras-preprocessing" + url = "https://pypi.io/packages/source/K/Keras-Preprocessing/Keras_Preprocessing-1.1.2.tar.gz" - version('1.1.0', sha256='26f26354370f4a08a029137630d72870e99e924cd8f6e04c2f6fc0bd86708275') - version('1.0.9', sha256='045a9b3faf4f6d63493cc3ca396659cc0395727b280c988fb9b6c7ff8157f09b') - version('1.0.5', sha256='8a1d20d8dd2204d82616648f1b40615ea9f5ff0f8f94fdc6d9fe3c2238476c89') - version('1.0.4', sha256='9f36ffeab4545f039880d6eaf8f8b3a6c8eba14618cec25c60d69a281398e5ea') - version('1.0.3', sha256='7a7da86eaae0cadfd83e644741898d1edbd6819631ff0ee36fd130bd9efd814e') - version('1.0.2', sha256='64212b715a435b43724ecf26be67a441cee426e3ef614a6326aba06016ba9779') - version('1.0.1', sha256='2e9e187afd1327d802309513cc6366d72a5c02104c6815da30d8651a4bd20699') + version('1.1.2', sha256='add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3') + version('1.1.0', sha256='5a8debe01d840de93d49e05ccf1c9b81ae30e210d34dacbcc47aeb3049b528e5') + version('1.0.9', sha256='5e3700117981c2db762e512ed6586638124fac5842170701628088a11aeb51ac') + version('1.0.5', sha256='ef2e482c4336fcf7180244d06f4374939099daa3183816e82aee7755af35b754') + version('1.0.4', sha256='452f8af8b2865e9d7d2f0dd5a3d0afd9e2ae2c6504f235b2447831c63303449f') + version('1.0.3', sha256='02ba0a3b31ed89c4b0c21d55ba7d87529097d56f394e3850b6d3c9e6c63ce7ae') + version('1.0.2', sha256='f5306554d2b454d825b36f35e327744f5477bd2ae21017f1a93b2097bed6757e') + version('1.0.1', sha256='8649ba6377ecc06ea10e0a8a954df5600d115b4b626861e33c79b41ec03c5194') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-knack/package.py b/var/spack/repos/builtin/packages/py-knack/package.py new file mode 100644 index 0000000000..4fb7ce188f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-knack/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) + + +class PyKnack(PythonPackage): + """A Command-Line Interface framework.""" + + homepage = "https://github.com/microsoft/knack" + url = "https://pypi.io/packages/source/k/knack/knack-0.7.1.tar.gz" + + version('0.7.1', sha256='fcef6040164ebe7d69629e4e089b398c9b980791446496301befcf8381dba0fc') + + depends_on('py-setuptools', type='build') + depends_on('py-argcomplete', type=('build', 'run')) + depends_on('py-colorama', type=('build', 'run')) + depends_on('py-jmespath', type=('build', 'run')) + depends_on('py-pygments', type=('build', 'run')) + depends_on('py-pyyaml', type=('build', 'run')) + depends_on('py-six', type=('build', 'run')) + depends_on('py-tabulate', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-lockfile/package.py b/var/spack/repos/builtin/packages/py-lockfile/package.py index 95b5289b89..9731208b51 100644 --- a/var/spack/repos/builtin/packages/py-lockfile/package.py +++ b/var/spack/repos/builtin/packages/py-lockfile/package.py @@ -23,3 +23,4 @@ class PyLockfile(PythonPackage): version('0.10.2', sha256='9e42252f17d1dd89ee31745e0c4fbe58862c25147eb0ef5295c9cd9bcb4ea2c1') depends_on("py-setuptools", type='build') + depends_on("py-pbr", type='build') diff --git a/var/spack/repos/builtin/packages/py-maestrowf/package.py b/var/spack/repos/builtin/packages/py-maestrowf/package.py index 5fdefea272..46a8a24c3e 100644 --- a/var/spack/repos/builtin/packages/py-maestrowf/package.py +++ b/var/spack/repos/builtin/packages/py-maestrowf/package.py @@ -11,7 +11,7 @@ class PyMaestrowf(PythonPackage): simulation studies.""" homepage = "https://github.com/LLNL/maestrowf/" - url = "https://github.com/LLNL/maestrowf/archive/v1.1.6.tar.gz" + url = "https://pypi.io/packages/source/m/maestrowf/maestrowf-1.1.8.tar.gz" git = "https://github.com/LLNL/maestrowf/" maintainers = ['FrankD412'] @@ -21,22 +21,28 @@ class PyMaestrowf(PythonPackage): version('master', branch='master') # Pre-release candidates - version('1.1.5dev', sha256='eb3d6f31c233e2cde3b84e15c657002b83ff43d4d6b218b33d023a4f527b9e08') - version('1.1.4dev1.0', sha256='67f59eed6fa69fc71b88a0a769de9f080300497d3c30d3a0893eabd0702bc48e') - version('1.1.4dev1.1', sha256='c8612b5423b44f11e2a7c4fbc31eb741013245870512ee2dbf7367024517528f') + version('1.1.7dev0', sha256='bcef838f13da396dd33cc7f503655de7a8f16ee5fe7b1e2a553044334a03f1f0') # pypi releases - version('1.1.6', sha256='27a4ab9072c5b5e2edf91c192d9fe67f040dd45be7f3e44fd9a998ce4cb1e92d', preferred=True) - version('1.1.4', sha256='2cb0fa6f6281d8618ac79217ea5f4fd8cb24955c4315e873657f96b815f171d5') - version('1.1.2', sha256='ebb45bff54625435bc9f2462e1bdc3b5bdc4d943378c53e7810c11836794c5e0') - version('1.1.1', sha256='a476ad4b40846d7b7f9540d6413df1b42eb655735e8d3c6c07e0baa68e20a8bb') - version('1.1.0', sha256='14e701d6a10ab758215aab6b6809817d9a39416a4f477cd2f2551883fc68477b') - version('1.0.1', sha256='cdd503f0b11db9114405132274b28766044402d1183b5836406ed91d558fd06c') - - depends_on('py-setuptools', type='build') + version('1.1.8', sha256='fa8f8eb8dd3adfb9646d7b0dfd498a00423d2131adbc8dbc8016c4159b2ec1d5', preferred=True) + version('1.1.7', sha256='ff1b6696f30254b105fcadd297ad437c0c666ebc70124b231a713b89f47f4e94') + version('1.1.6', sha256='9812e67d9bd83c452cc99d82fbceb3017b5e36dafdf52eda939748bad4a88756') + version('1.1.4', sha256='6603b93494e8e9d939a4ab40ecdfe7923a85960a8a8bddea4734e230d8144016') + version('1.1.3', sha256='9812e67d9bd83c452cc99d82fbceb3017b5e36dafdf52eda939748bad4a88756') + version('1.1.2', sha256='6998ba2c6ee4ef205c6d47d98cf35d5eaa184e1e859cc41b4120e2aa12c06df3') + version('1.1.1', sha256='689ed42ba1fb214db0594756ff6015e466470103f726a5e5bf4d21c1086ad2b1') + version('1.1.0', sha256='1bfec546831f2ef577d7823bb50dcd12622644dad0d3d761998eafd0905b6977') + version('1.0.1', sha256='dd42ffeac1f0492a576c630b37e5d3593273e59664407f2ebf78d49322d37146') + + depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) + depends_on('py-setuptools', type='build') depends_on('py-pyyaml@4.2b1:', type=('build', 'run')) - depends_on('py-six', type=('build', 'run')) - depends_on('py-enum34', type=('build', 'run'), when='^python@:3.3') - depends_on('py-enum34', type=('build', 'run'), when='@:1.1.3') - depends_on('py-tabulate', type=('build', 'run'), when='@1.1.0:') - depends_on('py-filelock', type=('build', 'run'), when='@1.1.0:') + depends_on('py-six', type=('build', 'run')) + depends_on('py-enum34', type=('build', 'run'), when='^python@:3.3') + depends_on('py-enum34', type=('build', 'run'), when='@:1.1.3') + depends_on('py-tabulate', type=('build', 'run'), when='@1.1.0:') + depends_on('py-filelock', type=('build', 'run'), when='@1.1.0:') + depends_on('py-coloredlogs', type=('build', 'run'), when='@1.1.7:') + depends_on('py-chainmap', type=('build', 'run'), when='@1.1.7: ^python@:2') + depends_on('py-dill', type=('build', 'run'), when='@1.1.7:') + depends_on('py-jsonschema@3.2.0:', type=('build', 'run'), when='@1.1.7:') diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py index a1b4c94e40..62c1a8dac3 100644 --- a/var/spack/repos/builtin/packages/py-matplotlib/package.py +++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py @@ -13,7 +13,7 @@ class PyMatplotlib(PythonPackage): and interactive visualizations in Python.""" homepage = "https://matplotlib.org/" - url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-3.2.2.tar.gz" + url = "https://pypi.io/packages/source/m/matplotlib/matplotlib-3.3.0.tar.gz" maintainers = ['adamjstewart'] @@ -27,6 +27,7 @@ class PyMatplotlib(PythonPackage): 'matplotlib.testing.jpl_units' ] + version('3.3.0', sha256='24e8db94948019d531ce0bcd637ac24b1c8f6744ac86d2aa0eb6dbaeb1386f82') version('3.2.2', sha256='3d77a6630d093d74cbbfebaa0571d00790966be1ed204e4a8239f5cbd6835c5d') version('3.2.1', sha256='ffe2f9cdcea1086fc414e82f42271ecf1976700b8edd16ca9d376189c6d93aee') version('3.2.0', sha256='651d76daf9168250370d4befb09f79875daa2224a9096d97dfc3ed764c842be4') @@ -77,12 +78,14 @@ class PyMatplotlib(PythonPackage): # https://matplotlib.org/users/installing.html#dependencies # Required dependencies extends('python', ignore=r'bin/nosetests.*$|bin/pbr$') - depends_on('python@2.7:2.8,3.4:', when='@:2') - depends_on('python@3.5:', when='@3:') - depends_on('python@3.6:', when='@3.1:') - depends_on('freetype@2.3:') + depends_on('python@2.7:2.8,3.4:', when='@:2', type=('build', 'link', 'run')) + depends_on('python@3.5:', when='@3:', type=('build', 'link', 'run')) + depends_on('python@3.6:', when='@3.1:', type=('build', 'link', 'run')) + depends_on('freetype@2.3:') # freetype 2.6.1 needed for tests to pass + depends_on('qhull@2015.2:', when='@3.3:') depends_on('libpng@1.2:') depends_on('py-numpy@1.11:', type=('build', 'run')) + depends_on('py-numpy@1.15:', when='@3.3:', type=('build', 'run')) depends_on('py-setuptools', type=('build', 'run')) # See #3813 depends_on('py-cycler@0.10:', type=('build', 'run')) depends_on('py-python-dateutil@2.1:', type=('build', 'run')) @@ -90,7 +93,7 @@ class PyMatplotlib(PythonPackage): 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') + depends_on('py-functools32', type=('build', 'run'), when='@:2.0.999 ^python@:2.7') depends_on('py-backports-functools-lru-cache', type=('build', 'run'), when='@2.1.0:2.999.999 ^python@:2') depends_on('py-six@1.10.0:', type=('build', 'run'), when='@2.0:2.999') @@ -135,14 +138,13 @@ class PyMatplotlib(PythonPackage): msg = 'MacOSX backend requires the Cocoa headers included with XCode' conflicts('platform=linux', when='backend=macosx', msg=msg) - conflicts('platform=bgq', when='backend=macosx', msg=msg) conflicts('platform=cray', when='backend=macosx', msg=msg) # Patch to pick up correct freetype headers patch('freetype-include-path.patch', when='@2.2.2:2.9.9') @run_before('build') - def set_backend(self): + def configure(self): """Set build options with regards to backend GUI libraries.""" backend = self.spec.variants['backend'].value @@ -152,6 +154,13 @@ class PyMatplotlib(PythonPackage): setup.write('[rc_options]\n') setup.write('backend = ' + backend + '\n') + # Starting with version 3.3.0, freetype is downloaded by default + # Force matplotlib to use Spack installations of freetype and qhull + if self.version >= Version('3.3.0'): + setup.write('[libs]\n') + setup.write('system_freetype = True\n') + setup.write('system_qhull = True\n') + def test(self): pytest = which('pytest') pytest() diff --git a/var/spack/repos/builtin/packages/py-mixedhtseq/package.py b/var/spack/repos/builtin/packages/py-mixedhtseq/package.py new file mode 100644 index 0000000000..c01348a099 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-mixedhtseq/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 * +import glob + + +class PyMixedhtseq(PythonPackage): + """HTSeq for mixed single and paired end reads""" + + homepage = "https://github.com/schae234/MixedHTSeq" + url = "https://github.com/schae234/MixedHTSeq/archive/v0.1.0.tar.gz" + + version('0.1.0', sha256='234689c8743ae2ba7ad13bc1809a5248184a4b8d16112d5413e09164ab67e157') + + depends_on('python@2.5:2.8', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-htseq', type=('build', 'run')) + depends_on('py-ipython', type=('build', 'run')) + depends_on('py-pandas', type=('build', 'run')) + + depends_on('py-setuptools', type='build') + + @run_after('install') + def install_scripts(self): + shebang = '#!{0}\n'.format(self.spec['python'].command) + + for fname in glob.glob('scripts/*.py'): + filter_file('^#!.*', '', fname) + with open(fname, 'r') as orig: + fdata = orig.read() + with open(fname, 'w') as new: + new.write(shebang + fdata) + set_executable(fname) + + mkdirp(self.prefix.bin) + install_tree('scripts', self.prefix.bin) diff --git a/var/spack/repos/builtin/packages/py-msal/package.py b/var/spack/repos/builtin/packages/py-msal/package.py index ade131afc8..7b870ed9d0 100644 --- a/var/spack/repos/builtin/packages/py-msal/package.py +++ b/var/spack/repos/builtin/packages/py-msal/package.py @@ -14,6 +14,7 @@ class PyMsal(PythonPackage): url = "https://pypi.io/packages/source/m/msal/msal-1.3.0.tar.gz" version('1.3.0', sha256='5442a3a9d006506e653d3c4daff40538bdf067bf07b6b73b32d1b231d5e77a92') + version('1.0.0', sha256='ecbe3f5ac77facad16abf08eb9d8562af3bc7184be5d4d90c9ef4db5bde26340') depends_on('py-setuptools', type='build') depends_on('py-requests@2.0.0:2.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-multidict/package.py b/var/spack/repos/builtin/packages/py-multidict/package.py new file mode 100644 index 0000000000..fe0d0ae627 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-multidict/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) + + +class PyMultidict(PythonPackage): + """Multidict is dict-like collection of key-value pairs where key + might be occurred more than once in the container.""" + + homepage = "https://github.com/aio-libs/multidict" + url = "https://github.com/aio-libs/multidict/archive/v4.7.6.tar.gz" + + version('4.7.6', sha256='449035f89a12f189579ff83811424c71e4a39e335bcb8045145ad084b7bde2dc') + + depends_on('py-setuptools', type='build') + depends_on('python@3.5:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-netket/package.py b/var/spack/repos/builtin/packages/py-netket/package.py new file mode 100644 index 0000000000..d8950057a4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-netket/package.py @@ -0,0 +1,38 @@ +# 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 PyNetket(PythonPackage): + """ + NetKet is an open-source project, delivering cutting-edge methods for the + study of many-body quantum systems with artificial neural networks and + machine learning techniques. + """ + + homepage = "https://github.com/netket/netket" + url = "https://github.com/netket/netket/archive/v2.1.1.tar.gz" + + version('2.1.1', sha256='881ae8605a829364b2116bc4398084766b24e2cd8958d0cb2b85595650e7bfd6') + version('2.1', sha256='041d2b058c5d2945bf0a4194ad2bf3c426ad9b6ce0dd323a81a7154bc6e45452') + version('2.0', sha256='c2890361b16ffb5265023a736536c435ccb3ad956d897e5820eac431d72cdb0e') + version('1.0.5', sha256='26562bf608775f21eb2cb443f2c66c09cadb56e6eac84f4d855d62e7d776a511') + version('1.0.4', sha256='0b344d526ee34d187281d0c2f7952c91728abbe22553e3dbcd45fcfeb312c3b5') + version('1.0.3', sha256='b8e54d7ad8b379b740def640d748c6560943aed473755389fc5cf1020b9007de') + version('1.0.2', sha256='229c906e92a432bbbd0ff0527874f41318f8fc480d12a33c8184f30960ae628b') + + # build only deps + depends_on('py-setuptools', type='build') + depends_on('py-cmake@3.12:', type='build') + + depends_on('blas') + depends_on('mpi') + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-numpy@1.16:', type=('build', 'run')) + depends_on('py-scipy@1.2.1:', type=('build', 'run')) + depends_on('py-mpi4py@3.0.1:', type=('build', 'run')) + depends_on('py-numba@0.48.0:', type=('build', 'run')) + depends_on('py-tqdm@4.42.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py index f437b43063..65b7e8fcb0 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.19.0.zip" + url = "https://pypi.io/packages/source/n/numpy/numpy-1.19.1.zip" git = "https://github.com/numpy/numpy.git" maintainers = ['adamjstewart'] @@ -30,6 +30,7 @@ class PyNumpy(PythonPackage): ] version('master', branch='master') + version('1.19.1', sha256='b8456987b637232602ceb4d663cb34106f7eb780e247d51a260b84760fd8f491') version('1.19.0', sha256='76766cc80d6128750075378d3bb7812cf146415bd29b588616f72c943c00d598') version('1.18.5', sha256='34e96e9dae65c4839bd80012023aadd6ee2ccb73ce7fdf3074c62f301e63120b') version('1.18.4', sha256='bbcc85aaf4cd84ba057decaead058f43191cc0e30d6bc5d44fe336dc3d3f4509') @@ -88,6 +89,7 @@ class PyNumpy(PythonPackage): # Check pyproject.toml for updates to the required cython version depends_on('py-cython@0.29.13:', when='@1.18.0:', type='build') depends_on('py-cython@0.29.14:', when='@1.18.1:', type='build') + depends_on('py-cython@0.29.21:', when='@1.19.1:', type='build') depends_on('blas', when='+blas') depends_on('lapack', when='+lapack') diff --git a/var/spack/repos/builtin/packages/py-opt-einsum/package.py b/var/spack/repos/builtin/packages/py-opt-einsum/package.py index 4de5712076..0f430c76f8 100644 --- a/var/spack/repos/builtin/packages/py-opt-einsum/package.py +++ b/var/spack/repos/builtin/packages/py-opt-einsum/package.py @@ -12,9 +12,13 @@ class PyOptEinsum(PythonPackage): homepage = "https://github.com/dgasmith/opt_einsum" url = "https://pypi.io/packages/source/o/opt_einsum/opt_einsum-3.1.0.tar.gz" + version('3.2.1', sha256='83b76a98d18ae6a5cc7a0d88955a7f74881f0e567a0f4c949d24c942753eb998') + version('3.2.0', sha256='738b0a1db1d3084d360081bb64d826f9db06d2df7cc0bf8e2c9356028da1fa31') version('3.1.0', sha256='edfada4b1d0b3b782ace8bc14e80618ff629abf53143e1e6bbf9bd00b11ece77') + version('2.3.2', sha256='d3d464b4da7ef09e444c30e4003a27def37f85ff10ff2671e5f7d7813adac35b') - depends_on('python@3.5:', type=('build', 'run')) + depends_on('python@:2', type=('build', 'run'), when='@2') + depends_on('python@3.5:', type=('build', 'run'), when='@3:') depends_on('py-setuptools', type='build') depends_on('py-numpy@1.7:', type=('build', 'run')) depends_on('py-pytest', type='test') diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py index 3fba468a27..750d53d61b 100644 --- a/var/spack/repos/builtin/packages/py-pandas/package.py +++ b/var/spack/repos/builtin/packages/py-pandas/package.py @@ -12,7 +12,7 @@ class PyPandas(PythonPackage): programming language.""" homepage = "https://pandas.pydata.org/" - url = "https://pypi.io/packages/source/p/pandas/pandas-1.0.5.tar.gz" + url = "https://pypi.io/packages/source/p/pandas/pandas-1.1.0.tar.gz" maintainers = ['adamjstewart'] import_modules = [ @@ -29,6 +29,7 @@ class PyPandas(PythonPackage): 'pandas.api.extensions' ] + version('1.1.0', sha256='b39508562ad0bb3f384b0db24da7d68a2608b9ddc85b1d931ccaaa92d5e45273') version('1.0.5', sha256='69c5d920a0b2a9838e677f78f4dde506b95ea8e4d30da25859db6469ded84fa8') version('1.0.4', sha256='b35d625282baa7b51e82e52622c300a1ca9f786711b2af7cbe64f1e6831f4126') version('1.0.3', sha256='32f42e322fb903d0e189a4c10b75ba70d90958cc4f66a1781ed027f1a1d14586') @@ -56,11 +57,14 @@ class PyPandas(PythonPackage): depends_on('python@3.5.3:', type=('build', 'run'), when='@0.25:') # https://pandas.pydata.org/docs/whatsnew/v1.0.0.html#build-changes depends_on('py-cython@0.29.13:', type='build', when='@1:') + depends_on('py-cython@0.29.16:', type='build', when='@1.1:') depends_on('py-setuptools@24.2.0:', type='build') depends_on('py-numpy', type=('build', 'run')) depends_on('py-numpy@1.13.3:', type=('build', 'run'), when='@0.25:') + depends_on('py-numpy@1.15.4:', type=('build', 'run'), when='@1.1:') depends_on('py-python-dateutil', type=('build', 'run')) depends_on('py-python-dateutil@2.6.1:', type=('build', 'run'), when='@0.25:') + depends_on('py-python-dateutil@2.7.3:', type=('build', 'run'), when='@1.1:') depends_on('py-pytz@2017.2:', type=('build', 'run')) # Recommended dependencies diff --git a/var/spack/repos/builtin/packages/py-paramiko/package.py b/var/spack/repos/builtin/packages/py-paramiko/package.py index 043b04ed5e..db07fccd09 100644 --- a/var/spack/repos/builtin/packages/py-paramiko/package.py +++ b/var/spack/repos/builtin/packages/py-paramiko/package.py @@ -11,10 +11,14 @@ class PyParamiko(PythonPackage): """SSH2 protocol library""" homepage = "http://www.paramiko.org/" - url = "https://pypi.io/packages/source/p/paramiko/paramiko-2.1.2.tar.gz" + url = "https://pypi.io/packages/source/p/paramiko/paramiko-2.7.1.tar.gz" + version('2.7.1', sha256='920492895db8013f6cc0179293147f830b8c7b21fdfc839b6bad760c27459d9f') version('2.1.2', sha256='5fae49bed35e2e3d45c4f7b0db2d38b9ca626312d91119b3991d0ecf8125e310') - depends_on('py-setuptools', type='build') - depends_on('py-pyasn1@0.1.7:', type=('build', 'run')) - depends_on('py-cryptography@1.1:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-bcrypt@3.1.3:', when='@2.7:', type=('build', 'run')) + depends_on('py-cryptography@1.1:', type=('build', 'run')) + depends_on('py-cryptography@2.5:', when='@2.7:', type=('build', 'run')) + depends_on('py-pyasn1@0.1.7:', when='@:2.1', type=('build', 'run')) + depends_on('py-pynacl@1.0.1:', when='@2.7:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 3934b4d4bb..32faff9956 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -13,11 +13,12 @@ class PyPillow(PythonPackage): capabilities.""" homepage = "https://python-pillow.org/" - url = "https://pypi.io/packages/source/P/Pillow/Pillow-7.0.0.tar.gz" + url = "https://pypi.io/packages/source/P/Pillow/Pillow-7.2.0.tar.gz" maintainers = ['adamjstewart'] import_modules = ['PIL'] + version('7.2.0', sha256='97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626') version('7.0.0', sha256='4d9ed9a64095e031435af120d3c910148067087541131e82b3e8db302f4c8946') version('6.2.2', sha256='db9ff0c251ed066d367f53b64827cc9e18ccea001b986d08c265e53625dab950') version('6.2.1', sha256='bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1') @@ -32,40 +33,44 @@ class PyPillow(PythonPackage): # These defaults correspond to Pillow defaults # https://pillow.readthedocs.io/en/stable/installation.html#external-libraries - variant('tiff', default=False, description='Compressed TIFF functionality') - variant('freetype', default=False, description='Type related services') - variant('lcms', default=False, description='Color management') - variant('webp', default=False, description='WebP format') - variant('webpmux', default=False, description='WebP metadata') - variant('jpeg2000', default=False, description='JPEG 2000 functionality') - - # Spack does not (yet) support these modes of building - # variant('imagequant', default=False, - # description='Improved color quantization') + variant('zlib', default=True, description='Compressed PNG functionality') + variant('jpeg', default=True, description='JPEG functionality') + variant('tiff', default=False, description='Compressed TIFF functionality') + variant('freetype', default=False, description='Type related services') + variant('lcms', default=False, description='Color management') + variant('webp', default=False, description='WebP format') + variant('webpmux', default=False, description='WebP metadata') + variant('jpeg2000', default=False, description='JPEG 2000 functionality') + variant('imagequant', default=False, description='Improved color quantization') + variant('xcb', default=False, description='X11 screengrab support') # Required dependencies - depends_on('python@2.6:2.8,3.2:', when='@3:', type=('build', 'run')) - depends_on('python@2.7:2.8,3.3:', when='@4:', type=('build', 'run')) - depends_on('python@2.7:2.8,3.4:', when='@5:', type=('build', 'run')) - depends_on('python@2.7:2.8,3.5:', when='@6:', type=('build', 'run')) - depends_on('python@3.5:', when='@7:', type=('build', 'run')) + # https://pillow.readthedocs.io/en/latest/installation.html#notes + depends_on('python@3.6:3.9', when='@8:', type=('build', 'run')) + depends_on('python@3.5:3.8', when='@7.0:7.2', type=('build', 'run')) + depends_on('python@2.7:2.8,3.5:3.8', when='@6.2.1:6.2.2', type=('build', 'run')) + depends_on('python@2.7:2.8,3.5:3.7', when='@6.0:6.2.0', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:3.7', when='@5.2:5.4', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:3.6', when='@5.0:5.1', type=('build', 'run')) + depends_on('python@2.7:2.8,3.3:3.6', when='@4.0:4.999', type=('build', 'run')) + depends_on('python@2.6:2.8,3.2:3.5', when='@2:3', type=('build', 'run')) + depends_on('python@2.4:2.7', when='@:1', type=('build', 'run')) depends_on('py-setuptools', type='build') - depends_on('zlib') - depends_on('jpeg') depends_on('py-pytest', type='test') depends_on('py-pytest-runner', type='test') + depends_on('imagemagick', type='test') # Optional dependencies + depends_on('zlib', when='+zlib') + depends_on('jpeg', when='+jpeg') depends_on('libtiff', when='+tiff') depends_on('freetype', when='+freetype') depends_on('lcms@2:', when='+lcms') depends_on('libwebp', when='+webp') depends_on('libwebp+libwebpmux+libwebpdemux', when='+webpmux') depends_on('openjpeg', when='+jpeg2000') - depends_on('imagemagick', type='test') - - # Spack does not (yet) support these modes of building - # depends_on('libimagequant', when='+imagequant') + depends_on('libimagequant', when='+imagequant') + depends_on('libxcb', when='+xcb') conflicts('+webpmux', when='~webp', msg='Webpmux relies on WebP support') @@ -95,19 +100,15 @@ class PyPillow(PythonPackage): with open('setup.cfg', 'a') as setup: # Default backend setup.write('[build_ext]\n') - setup.write('enable-zlib=1\n') - setup.write('enable-jpeg=1\n') - variants = ['tiff', 'freetype', 'lcms', 'webp', - 'webpmux', 'jpeg2000'] - for variant in variants: + for variant in self.spec.variants.keys(): setup.write(variant_to_cfg(setup)) - # Spack does not (yet) support these modes of building - setup.write('disable-imagequant=1\n') - setup.write('rpath={0}\n'.format(':'.join(self.rpath))) setup.write('[install]\n') + def setup_build_environment(self, env): + env.set('MAX_CONCURRENCY', str(make_jobs)) + # Tests need to be re-added since `phases` was overridden run_after('build_ext')( PythonPackage._run_default_build_time_test_callbacks) diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index df11d73806..ed5171411c 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -9,9 +9,10 @@ from spack import * class PyPip(PythonPackage): """The PyPA recommended tool for installing Python packages.""" - homepage = "https://pypi.python.org/pypi/pip" - url = "https://pypi.io/packages/source/p/pip/pip-19.3.tar.gz" + homepage = "https://pip.pypa.io/" + url = "https://pypi.io/packages/source/p/pip/pip-20.2.tar.gz" + version('20.2', sha256='912935eb20ea6a3b5ed5810dde9754fde5563f5ca9be44a8a6e5da806ade970b') version('19.3', sha256='324d234b8f6124846b4e390df255cacbe09ce22791c3b714aa1ea6e44a4f2861') version('19.1.1', sha256='44d3d7d3d30a1eb65c7e5ff1173cdf8f7467850605ac7cc3707b6064bddd0958') version('19.0.3', sha256='6e6f197a1abfb45118dbb878b5c859a0edbdd33fd250100bc015b67fded4b9f2') @@ -19,7 +20,11 @@ class PyPip(PythonPackage): version('10.0.1', sha256='f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdbd7ee68') version('9.0.1', sha256='09f243e1a7b461f654c26a725fa373211bb7ff17a9300058b205c61658ca940d') - depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) + depends_on('python@3.5:', when='@21:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.5:', when='@19.2:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', when='@18:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.3:', when='@10:', type=('build', 'run')) + depends_on('python@2.6:2.8,3.3:', type=('build', 'run')) # Most Python packages only require setuptools as a build dependency. # However, pip requires setuptools during runtime as well. diff --git a/var/spack/repos/builtin/packages/py-protobuf/package.py b/var/spack/repos/builtin/packages/py-protobuf/package.py index c2f1efd2f9..4876832dcf 100644 --- a/var/spack/repos/builtin/packages/py-protobuf/package.py +++ b/var/spack/repos/builtin/packages/py-protobuf/package.py @@ -20,6 +20,7 @@ class PyProtobuf(PythonPackage): variant('cpp', default=False, description='Enable the cpp implementation') + version('3.12.2', sha256='49ef8ab4c27812a89a76fa894fe7a08f42f2147078392c0dee51d4a444ef6df5') version('3.11.2', sha256='3d7a7d8d20b4e7a8f63f62de2d192cfd8b7a53c56caba7ece95367ca2b80c574') version('3.11.1', sha256='aecdf12ef6dc7fd91713a6da93a86c2f2a8fe54840a3b1670853a2b7402e77c9') version('3.11.0', sha256='97b08853b9bb71512ed52381f05cf2d4179f4234825b505d8f8d2bb9d9429939') diff --git a/var/spack/repos/builtin/packages/py-pyarrow/package.py b/var/spack/repos/builtin/packages/py-pyarrow/package.py index 4daa0e0061..13ed0f14f4 100644 --- a/var/spack/repos/builtin/packages/py-pyarrow/package.py +++ b/var/spack/repos/builtin/packages/py-pyarrow/package.py @@ -12,9 +12,10 @@ class PyPyarrow(PythonPackage): This package contains the Python bindings. """ - homepage = "http://arrow.apache.org" - url = 'https://pypi.io/packages/source/p/pyarrow/pyarrow-0.15.1.tar.gz' + homepage = "https://arrow.apache.org" + url = 'https://pypi.io/packages/source/p/pyarrow/pyarrow-0.17.1.tar.gz' + version('0.17.1', sha256='278d11800c2e0f9bea6314ef718b2368b4046ba24b6c631c14edad5a1d351e49') version('0.15.1', sha256='7ad074690ba38313067bf3bbda1258966d38e2037c035d08b9ffe3cce07747a5') version('0.12.1', sha256='10db6e486c918c3af999d0114a22d92770687e3a6607ea3f14e6748854824c2a') version('0.11.0', sha256='07a6fd71c5d7440f2c42383dd2c5daa12d7f0a012f1e88288ed08a247032aead') @@ -24,10 +25,12 @@ class PyPyarrow(PythonPackage): depends_on('cmake@3.0.0:', type='build') depends_on('pkgconfig', type='build') + depends_on('python@3.5:', type=('build', 'run'), when='@0.17:') depends_on('py-setuptools', type='build') depends_on('py-setuptools-scm', type='build', when='@0.15.0:') depends_on('py-cython', type='build') depends_on('py-cython@0.29:', type='build', when='@0.15.0:') + depends_on('py-pytest-runner', type='test', when='@0.17:') depends_on('py-pytest', type='test', when='@0.15.0:') depends_on('py-pandas', type='test', when='@0.15.0:') depends_on('py-hypothesis', type='test', when='@0.15.0:') @@ -37,7 +40,7 @@ class PyPyarrow(PythonPackage): depends_on('py-futures', type=('build', 'run'), when='@0.15.0:^python@:3.1.99') depends_on('py-enum34@1.1.6:', type=('build', 'run'), when='@0.15.0:^python@:3.3.99') - for v in ('@0.9.0', '@0.11.0', '@0.12.1', '@0.15.1'): + for v in ('@0.9.0', '@0.11.0', '@0.12.1', '@0.15.1', '@0.17.1'): depends_on('arrow+python' + v, when=v) depends_on('arrow+parquet+python' + v, when='+parquet' + v) diff --git a/var/spack/repos/builtin/packages/py-pygments-pytest/package.py b/var/spack/repos/builtin/packages/py-pygments-pytest/package.py new file mode 100644 index 0000000000..3808bb80b7 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pygments-pytest/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 PyPygmentsPytest(PythonPackage): + """A pygments lexer for pytest output.""" + + homepage = "https://github.com/asottile/pygments-pytest" + url = "https://pypi.io/packages/source/P/pygments-pytest-1.2.0.tar.gz" + + version('1.2.0', sha256='fc48e2fffd6d3c047a61c1db8b88ab069983f50e733fe70a7846098eb28bc955') + + depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pyinstrument/package.py b/var/spack/repos/builtin/packages/py-pyinstrument/package.py index 5f8cc15286..9636d58a92 100644 --- a/var/spack/repos/builtin/packages/py-pyinstrument/package.py +++ b/var/spack/repos/builtin/packages/py-pyinstrument/package.py @@ -10,8 +10,9 @@ class PyPyinstrument(PythonPackage): """Call stack profiler for Python. Shows you why your code is slow!""" homepage = "https://github.com/joerick/pyinstrument" - url = "https://github.com/joerick/pyinstrument/archive/v3.1.0.tar.gz" + url = "https://github.com/joerick/pyinstrument/archive/v3.1.3.tar.gz" + version('3.1.3', sha256='ca4571775caa06444cd7e832056afc21175130271fe3f3481e3ab1bf67f96c8b') version('3.1.0', sha256='02319607daf65110e246085f5e2ee111f565f213eed1991229f2d58e9a7657a5') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-pynacl/package.py b/var/spack/repos/builtin/packages/py-pynacl/package.py new file mode 100644 index 0000000000..a428b3756e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pynacl/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 PyPynacl(PythonPackage): + """Python binding to the Networking and Cryptography (NaCl) library.""" + + homepage = "https://github.com/pyca/pynacl/" + url = "https://pypi.io/packages/source/P/PyNaCl/PyNaCl-1.4.0.tar.gz" + + version('1.4.0', sha256='54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505') + + depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) + depends_on('py-cffi@1.4.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-pysam/package.py b/var/spack/repos/builtin/packages/py-pysam/package.py index 38a2a26b40..5459ef0a16 100644 --- a/var/spack/repos/builtin/packages/py-pysam/package.py +++ b/var/spack/repos/builtin/packages/py-pysam/package.py @@ -25,3 +25,6 @@ class PyPysam(PythonPackage): depends_on('samtools') depends_on('htslib@:1.6', when='@:0.13') + + def setup_build_environment(self, env): + env.set('LDFLAGS', self.spec['curl'].libs.search_flags) diff --git a/var/spack/repos/builtin/packages/py-pyscf/package.py b/var/spack/repos/builtin/packages/py-pyscf/package.py new file mode 100644 index 0000000000..d0c36d5a79 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyscf/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 PyPyscf(PythonPackage): + """PySCF is a collection of electronic structure programs powered + by Python.""" + + homepage = "https://sunqm.github.io/pyscf/" + git = "https://github.com/pyscf/pyscf" + + maintainers = ['naromero77'] + + version('1.7.3', tag='v1.7.3') + + # dependencies + depends_on('cmake@2.8:', type='build') + depends_on('python@2.6:', type=('build', 'run')) + depends_on('py-numpy@1.8.0:', type=('build', 'run')) + depends_on('py-scipy@0.12:', type=('build', 'run')) + depends_on('py-h5py@2.3.0:', type=('build', 'run')) + depends_on('blas') + depends_on('libcint+coulomb_erf+f12') + depends_on('libxc') + depends_on('xcfun@:2.0.0a2') # PySCF does not support recent version of the xcfun API' + + def setup_build_environment(self, env): + # Tell PSCF where supporting libraries are located." + spec = self.spec + + pyscf_search_dir = [] + pyscf_search_dir.append(spec['blas'].prefix) + pyscf_search_dir.append(spec['libcint'].prefix) + pyscf_search_dir.append(spec['libxc'].prefix) + pyscf_search_dir.append(spec['xcfun'].prefix) + pyscf_search_dir.append(spec['xcfun'].prefix.include.XCFun) + + env.set('PYSCF_INC_DIR', ":".join(pyscf_search_dir)) diff --git a/var/spack/repos/builtin/packages/py-python-docs-theme/package.py b/var/spack/repos/builtin/packages/py-python-docs-theme/package.py new file mode 100644 index 0000000000..4b1b7232b4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-python-docs-theme/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 PyPythonDocsTheme(PythonPackage): + """This is the theme for the Python documentation. + """ + + homepage = "https://docs.python.org/3/" + url = "https://pypi.io/packages/source/p/python-docs-theme/python-docs-theme-2018.7.tar.gz" + + version('2020.1', sha256='29c33ba393bdb9377910116a0c1cc329573a4e040227c58a3293d27928d8262a') + version('2018.7', sha256='018a5bf2a7318c9c9a8346303dac8afc6bc212d92e86561c9b95a3372714155a') + + depends_on('py-setuptools') diff --git a/var/spack/repos/builtin/packages/py-python-json-logger/package.py b/var/spack/repos/builtin/packages/py-python-json-logger/package.py new file mode 100644 index 0000000000..b3aa3efbca --- /dev/null +++ b/var/spack/repos/builtin/packages/py-python-json-logger/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 PyPythonJsonLogger(PythonPackage): + """"A python library adding a json log formatter.""" + + homepage = "https://github.com/madzak/python-json-logger" + url = "https://pypi.io/packages/source/p/python-json-logger/python-json-logger-0.1.11.tar.gz" + + version('0.1.11', sha256='b7a31162f2a01965a5efb94453ce69230ed208468b0bbc7fdfc56e6d8df2e281') + + depends_on('python@2.7:', type=('build', 'run')) + depends_on('py-setuptools') diff --git a/var/spack/repos/builtin/packages/py-python-swiftclient/package.py b/var/spack/repos/builtin/packages/py-python-swiftclient/package.py index bd8f766624..a016686406 100644 --- a/var/spack/repos/builtin/packages/py-python-swiftclient/package.py +++ b/var/spack/repos/builtin/packages/py-python-swiftclient/package.py @@ -16,6 +16,7 @@ class PyPythonSwiftclient(PythonPackage): import_modules = ['sys', 'setuptools', 'requests'] + version('3.10.0', sha256='66227eaf29a691c70675fb9982022980b92797c273dd5e6dc7e680425e9a3634') version('3.9.0', sha256='4f2097492e4c76e948882fc859bfa033ade09bed72f8e6b328e34a3467d9a377') version('3.8.1', sha256='3a013303643f77a99befa05582dfb93671e1fba1aed9f4a517418129700aedb8') version('3.8.0', sha256='107a9d5356663365a9f7c0b3a2b55da97a0a9ba7f10da2319b3972481510f33d') diff --git a/var/spack/repos/builtin/packages/py-rasterio/package.py b/var/spack/repos/builtin/packages/py-rasterio/package.py index 21f132cc9b..8d3b131b4e 100644 --- a/var/spack/repos/builtin/packages/py-rasterio/package.py +++ b/var/spack/repos/builtin/packages/py-rasterio/package.py @@ -14,28 +14,31 @@ class PyRasterio(PythonPackage): arrays.""" homepage = "https://github.com/mapbox/rasterio" - url = "https://pypi.io/packages/source/r/rasterio/rasterio-1.0.24.tar.gz" + url = "https://pypi.io/packages/source/r/rasterio/rasterio-1.1.5.tar.gz" maintainers = ['adamjstewart'] import_modules = ['rasterio', 'rasterio.rio'] + version('1.1.5', sha256='ebe75c71f9257c780615caaec8ef81fa4602702cf9290a65c213e1639284acc9') version('1.0.24', sha256='4839479621045211f66868ec49625979693450bc2e476f23e7e8ac4804eaf452') version('1.0a12', sha256='47d460326e04c64590ff56952271a184a6307f814efc34fb319c12e690585f3c') - depends_on('python@3:', type=('build', 'run'), when='@1.1:') + depends_on('python@3.5:', type=('build', 'link', 'run'), when='@1.2:') + depends_on('python@2.7:2.8,3.5:3.8', type=('build', 'link', 'run'), when='@1.1.0:1.1.999') + depends_on('python@2.7:2.8,3.5:3.7', type=('build', 'link', 'run'), when='@:1.0') depends_on('py-setuptools', type='build') - depends_on('py-cython', type='build') depends_on('py-affine', type=('build', 'run')) depends_on('py-attrs', type=('build', 'run')) depends_on('py-click@4:7', type=('build', 'run')) depends_on('py-cligj@0.5:', type=('build', 'run')) - depends_on('py-numpy', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'link', 'run')) depends_on('py-snuggs@1.4.1:', type=('build', 'run')) depends_on('py-click-plugins', type=('build', 'run')) depends_on('py-enum34', type='run', when='^python@:3.3') - depends_on('gdal@1.11:') - depends_on('jpeg') + depends_on('gdal@1.11:3.0', when='@1.0.25:') + depends_on('gdal@1.11:2', when='@:1.0.24') depends_on('py-pytest@2.8.2:', type='test') + depends_on('py-pytest-cov@2.2.0:', type='test') depends_on('py-boto3@1.2.4:', type='test') depends_on('py-packaging', type='test') depends_on('py-hypothesis', type='test') diff --git a/var/spack/repos/builtin/packages/py-rdflib/package.py b/var/spack/repos/builtin/packages/py-rdflib/package.py new file mode 100644 index 0000000000..5e1b8da03a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-rdflib/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 PyRdflib(PythonPackage): + """RDFLib is a pure Python package for working with RDF. RDFLib + contains most things you need to work with RDF, including: + parsers and serializers for RDF/XML, N3, NTriples, N-Quads, + Turtle, TriX, Trig and JSON-LD (via a plugin). a Graph interface + which can be backed by any one of a number of Store + implementations store implementations for in-memory storage and + persistent storage on top of the Berkeley DB a SPARQL 1.1 + implementation - supporting SPARQL 1.1 Queries and Update + statements """ + + homepage = "https://github.com/RDFLib/rdflib" + url = "https://pypi.io/packages/source/r/rdflib/rdflib-5.0.0.tar.gz" + + version('5.0.0', sha256='78149dd49d385efec3b3adfbd61c87afaf1281c30d3fcaf1b323b34f603fb155') + + depends_on('py-setuptools', type='build') + depends_on('py-six', type=('build', 'run')) + depends_on('py-pyparsing', type=('build', 'run')) + depends_on('py-isodate', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-recommonmark/package.py b/var/spack/repos/builtin/packages/py-recommonmark/package.py new file mode 100644 index 0000000000..7b03932a6c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-recommonmark/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 PyRecommonmark(PythonPackage): + """A docutils-compatibility bridge to CommonMark. + + This allows you to write CommonMark inside of Docutils & Sphinx projects. + + Documentation is available on Read the Docs: + http://recommonmark.readthedocs.org""" + + homepage = "https://github.com/readthedocs/recommonmark" + url = "https://files.pythonhosted.org/packages/f5/71/046160d730f664662d65b3f8b399b519ad378ffa4369ff3b6060cf1318d7/recommonmark-0.6.0.tar.gz" + + version('0.6.0', sha256='29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb') + + depends_on('py-commonmark@0.8.1:') + depends_on('py-docutils@011:') + depends_on('py-sphinx@1.3.1:') diff --git a/var/spack/repos/builtin/packages/py-requests/package.py b/var/spack/repos/builtin/packages/py-requests/package.py index 5d7249a079..30af0cd73f 100644 --- a/var/spack/repos/builtin/packages/py-requests/package.py +++ b/var/spack/repos/builtin/packages/py-requests/package.py @@ -10,7 +10,7 @@ class PyRequests(PythonPackage): """Python HTTP for Humans.""" homepage = "http://python-requests.org" - url = "https://pypi.io/packages/source/r/requests/requests-2.22.0.tar.gz" + url = "https://pypi.io/packages/source/r/requests/requests-2.24.0.tar.gz" import_modules = [ 'requests', 'requests.packages', 'requests.packages.chardet', @@ -23,6 +23,8 @@ class PyRequests(PythonPackage): 'requests.packages.urllib3.contrib._securetransport' ] + version('2.24.0', sha256='b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b') + version('2.23.0', sha256='b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6') version('2.22.0', sha256='11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4') version('2.21.0', sha256='502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e') version('2.14.2', sha256='a274abba399a23e8713ffd2b5706535ae280ebe2b8069ee6a941cb089440d153') @@ -33,8 +35,10 @@ class PyRequests(PythonPackage): depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) depends_on('py-setuptools', type='build') - depends_on('py-chardet@3.0.2:3.0.999', type=('build', 'run'), when='@2.16.0:') - depends_on('py-idna@2.5:2.8', type=('build', 'run'), when='@2.16.0:') + depends_on('py-chardet@3.0.2:3.0.999', type=('build', 'run'), when='@2.16.0:2.22.999') + depends_on('py-idna@2.5:2.8', type=('build', 'run'), when='@2.16.0:2.22.999') + depends_on('py-chardet@3.0.2:3.999', type=('build', 'run'), when='@2.23.0:') + depends_on('py-idna@2.5:2.999', type=('build', 'run'), when='@2.23.0:') depends_on('py-urllib3@1.21.1:1.24,1.25.2:1.25.999', type=('build', 'run'), when='@2.16.0:') depends_on('py-certifi@2017.4.17:', type=('build', 'run'), when='@2.16.0:') diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py index d73d3f7576..0a9bf34523 100644 --- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py +++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py @@ -8,7 +8,7 @@ class PyScikitLearn(PythonPackage): """A set of python modules for machine learning and data mining.""" homepage = "https://pypi.python.org/pypi/scikit-learn" - url = "https://pypi.io/packages/source/s/scikit-learn/scikit-learn-0.23.1.tar.gz" + url = "https://pypi.io/packages/source/s/scikit-learn/scikit-learn-0.23.2.tar.gz" git = "https://github.com/scikit-learn/scikit-learn.git" maintainers = ['adamjstewart'] @@ -31,6 +31,7 @@ class PyScikitLearn(PythonPackage): ] version('master', branch='master') + version('0.23.2', sha256='20766f515e6cd6f954554387dfae705d93c7b544ec0e6c6a5d8e006f6f7ef480') version('0.23.1', sha256='e3fec1c8831f8f93ad85581ca29ca1bb88e2da377fb097cf8322aa89c21bc9b8') version('0.23.0', sha256='639a53df6273acc6a7510fb0c658b94e0c70bb13dafff9d14932c981ff9baff4') version('0.22.1', sha256='51ee25330fc244107588545c70e2f3570cfc4017cff09eed69d6e1d82a212b7d') diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py index 6775d533fa..c63d539dad 100644 --- a/var/spack/repos/builtin/packages/py-scipy/package.py +++ b/var/spack/repos/builtin/packages/py-scipy/package.py @@ -12,7 +12,7 @@ class PyScipy(PythonPackage): as routines for numerical integration and optimization.""" homepage = "https://www.scipy.org/" - url = "https://pypi.io/packages/source/s/scipy/scipy-1.5.0.tar.gz" + url = "https://pypi.io/packages/source/s/scipy/scipy-1.5.2.tar.gz" maintainers = ['adamjstewart'] install_time_test_callbacks = ['install_test', 'import_module_test'] @@ -30,6 +30,8 @@ class PyScipy(PythonPackage): 'scipy.sparse.linalg.eigen.lobpcg', 'scipy.special._precompute' ] + version('1.5.2', sha256='066c513d90eb3fd7567a9e150828d39111ebd88d3e924cdfc9f8ce19ab6f90c9') + version('1.5.1', sha256='039572f0ca9578a466683558c5bf1e65d442860ec6e13307d528749cfe6d07b8') version('1.5.0', sha256='4ff72877d19b295ee7f7727615ea8238f2d59159df0bdd98f91754be4a2767f0') version('1.4.1', sha256='dee1bbf3a6c8f73b6b218cb28eed8dd13347ea2f87d572ce19b289d6fd3fbc59') version('1.4.0', sha256='31f7cfa93b01507c935c12b535e24812594002a02a56803d7cd063e9920d25e8') diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index 877cf7ece9..24fb3b7068 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -11,7 +11,7 @@ class PySetuptools(PythonPackage): upgrading, installing, and uninstalling Python packages.""" homepage = "https://github.com/pypa/setuptools" - url = "https://pypi.io/packages/source/s/setuptools/setuptools-41.0.1.zip" + url = "https://pypi.io/packages/source/s/setuptools/setuptools-49.2.0.zip" import_modules = [ 'setuptools', 'pkg_resources', 'setuptools._vendor', @@ -21,6 +21,7 @@ class PySetuptools(PythonPackage): 'easy_install' ] + version('49.2.0', sha256='afe9e81fee0270d3f60d52608549cc8ec4c46dada8c95640c1a00160f577acf2') version('46.1.3', sha256='795e0475ba6cd7fa082b1ee6e90d552209995627a2a227a47c6ea93282f4bfb1') version('44.1.0', sha256='794a96b0c1dc6f182c36b72ab70d7e90f1d59f7a132e6919bb37b4fd4d424aca') version('41.4.0', sha256='7eae782ccf36b790c21bde7d86a4f303a441cd77036b25c559a602cf5186ce4d') diff --git a/var/spack/repos/builtin/packages/py-shroud/package.py b/var/spack/repos/builtin/packages/py-shroud/package.py index 504c992f15..0e66ca1a23 100644 --- a/var/spack/repos/builtin/packages/py-shroud/package.py +++ b/var/spack/repos/builtin/packages/py-shroud/package.py @@ -14,10 +14,11 @@ class PyShroud(PythonPackage): version('develop', branch='develop') version('master', branch='master') + version('0.12.1', tag='v0.12.1') version('0.11.0', tag='v0.11.0') version('0.10.1', tag='v0.10.1') version('0.9.0', tag='v0.9.0') version('0.8.0', tag='v0.8.0') - depends_on("py-setuptools", type='build') + depends_on("py-setuptools", type=('build', 'run')) depends_on("py-pyyaml@4.2b1:", 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 fd2ed92ef2..f58683af38 100644 --- a/var/spack/repos/builtin/packages/py-smart-open/package.py +++ b/var/spack/repos/builtin/packages/py-smart-open/package.py @@ -21,5 +21,6 @@ class PySmartOpen(PythonPackage): 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-boto@2.3.2:', when='@1.8.4', type=('build', 'run')) + depends_on('py-google-cloud-storage', when='@1.10:', type=('build', 'run')) depends_on('py-bz2file', when='^python@:2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-sphinx-copybutton/package.py b/var/spack/repos/builtin/packages/py-sphinx-copybutton/package.py new file mode 100644 index 0000000000..12d4df06dd --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinx-copybutton/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 PySphinxCopybutton(PythonPackage): + """A small sphinx extension to add a "copy" button to code blocks.""" + + homepage = "https://github.com/choldgraf/sphinx-copybutton" + url = "https://files.pythonhosted.org/packages/b7/74/da355d8a909a7934b5f1711fce6f056e0c398094918dec3a23703662a0fe/sphinx-copybutton-0.2.12.tar.gz" + + version('0.2.12', sha256='9492883786984b6179c92c07ab0410237b26efa826adfa792acfd17b91a63e5c') + + depends_on('py-setuptools', type='build') + depends_on('py-sphinx@1.8:') diff --git a/var/spack/repos/builtin/packages/py-sphinx-gallery/package.py b/var/spack/repos/builtin/packages/py-sphinx-gallery/package.py new file mode 100644 index 0000000000..f96e5a11f4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinx-gallery/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 PySphinxGallery(PythonPackage): + """A `Sphinx` extension that builds an HTML version of any Python script + and puts it into an examples gallery. + """ + + homepage = "https://sphinx-gallery.github.io" + url = "https://files.pythonhosted.org/packages/9d/20/79118154e64a5280060b55c7ad025ad16f89b8192a6a9f0ffdbf71717bf0/sphinx-gallery-0.7.0.tar.gz" + + version('0.7.0', sha256='05ead72c947718ab4183c33a598e29743e771dcf75aec84c53048423bd2f4580') + version('0.4.0', sha256='a286cf2eea47ce838a0754ecef617616afb1f40e41e52fe765723464f52e0c2f') + + depends_on('py-setuptools') + depends_on('py-matplotlib') + depends_on('py-pillow') + depends_on('py-sphinx') diff --git a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py index 45a5e2104a..bc09b3324b 100644 --- a/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx-rtd-theme/package.py @@ -10,12 +10,16 @@ class PySphinxRtdTheme(PythonPackage): """ReadTheDocs.org theme for Sphinx.""" homepage = "https://github.com/rtfd/sphinx_rtd_theme/" - url = "https://pypi.io/packages/source/s/sphinx_rtd_theme/sphinx_rtd_theme-0.1.10a0.tar.gz" + url = "https://github.com/readthedocs/sphinx_rtd_theme/archive/0.5.0.tar.gz" import_modules = ['sphinx_rtd_theme'] - version('0.4.3', sha256='728607e34d60456d736cc7991fd236afb828b21b82f956c5ea75f94c8414040a') - version('0.2.5b1', sha256='d99513e7f2f8b9da8fdc189ad83df926b83d7fb15ad7ed07f24665d1f29d38da') - version('0.1.10a0', sha256='1225df3fc8337b14d53779435381b7f7705b9f4819610f6b74e555684cee2ac4') + version('0.5.0', sha256='f5c77e9026e2bd0b3d2530f9f8a6681808b216ba70195fe56e7ad89f641ac447') + version('0.4.3', sha256='3412195caad06e4537ad741596d57706c3ed29073d1e0e6b46f25e344d0f393b') + version('0.2.5b1', sha256='31924cdaa5232d1d573423ebebeb1e8f02c8b3cd8cd0662b8a91f3b12efbc12e') + version('0.1.10-alpha', sha256='a4c120c0d5c87a2541da9d5e48d3c43b96ea7d7867eacbd5dbf125cdeaa0b4f0') depends_on('py-setuptools', type='build') + depends_on('npm', when='@0.5.0:', type='build') + depends_on('py-sphinx', when='@0.4.1:', type=('build', 'run')) + depends_on('py-pytest', when='@0.5.0:', type='test') diff --git a/var/spack/repos/builtin/packages/py-sphinx/package.py b/var/spack/repos/builtin/packages/py-sphinx/package.py index 5aed1f39eb..d326c53f4c 100644 --- a/var/spack/repos/builtin/packages/py-sphinx/package.py +++ b/var/spack/repos/builtin/packages/py-sphinx/package.py @@ -9,8 +9,8 @@ from spack import * class PySphinx(PythonPackage): """Sphinx Documentation Generator.""" - homepage = "http://sphinx-doc.org" - url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-3.0.0.tar.gz" + homepage = "https://sphinx-doc.org/" + url = "https://pypi.io/packages/source/S/Sphinx/Sphinx-3.2.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.2.0', sha256='cf2d5bc3c6c930ab0a1fbef3ad8a82994b1bf4ae923f8098a05c7e5516f07177') version('3.0.0', sha256='6a099e6faffdc3ceba99ca8c2d09982d43022245e409249375edf111caf79ed3') version('2.2.0', sha256='0d586b0f8c2fc3cc6559c5e8fd6124628110514fda0e5d7c82e682d749d2e845') version('1.8.4', sha256='c1c00fc4f6e8b101a0d037065043460dffc2d507257f2f11acaed71fd2b0c83c') diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py index 9ba3dbc720..d7820786b0 100644 --- a/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-bibtex/package.py @@ -14,6 +14,7 @@ class PySphinxcontribBibtex(PythonPackage): import_modules = ['sphinxcontrib', 'sphinxcontrib.bibtex'] + version('1.0.0', sha256='629612b001f86784669d65e662377a482052decfd9a0a17c46860878eef7b9e0') version('0.3.5', sha256='c93e2b4a0d14f0ab726f95f0a33c1675965e9df3ed04839635577b8f978206cd') depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-mermaid/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-mermaid/package.py new file mode 100644 index 0000000000..b525971d46 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-mermaid/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 PySphinxcontribMermaid(PythonPackage): + """This extension allows you to embed + `Mermaid <http://knsv.github.io/mermaid/>`_ graphs in your documents, + including general flowcharts, sequence and gantt diagrams.""" + + homepage = "https://github.com/mgaitan/sphinxcontrib-mermaid" + url = "https://files.pythonhosted.org/packages/8e/0a/8a97b65608a63c43a99a9d6a37a5baff853f306e8506bf21ce54bb50d4f3/sphinxcontrib-mermaid-0.4.0.tar.gz" + + version('0.4.0', sha256='0ee45ba45b9575505eacdd6212e4e545213f4f93dfa32c7eeca32720dbc3b468') + version('0.3.1', sha256='649738afc3022d25a742a928f7b4146cf6024b1d8bb49017962713d2de78123c', extension='zip') + + depends_on('py-sphinx@1.7:') diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-trio/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-trio/package.py new file mode 100644 index 0000000000..191907db4f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-trio/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 PySphinxcontribTrio(PythonPackage): + """This sphinx extension helps you document Python code that uses + async/await, or abstract methods, or context managers, or generators, + or ... you get the idea.""" + + homepage = "https://github.com/python-trio/sphinxcontrib-trio" + url = "https://files.pythonhosted.org/packages/ca/33/ee48d86e30bb3c5d72a47f49b1ebf5c23dd253b04d8d5fc3e6c68407a03e/sphinxcontrib-trio-1.1.2.tar.gz" + + version('1.1.2', sha256='9f1ba9c1d5965b534e85258d8b677dd94e9b1a9a2e918b85ccd42590596b47c0') + version('1.1.0', sha256='d90f46d239ba0556e53d9a110989f98c9eb2cea76ab47937a1f39b62f63fe654') + + depends_on('py-sphinx@1.7:') + + patch('sphinxcontrib-trio.patch', when='@1.1.0') diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-trio/sphinxcontrib-trio.patch b/var/spack/repos/builtin/packages/py-sphinxcontrib-trio/sphinxcontrib-trio.patch new file mode 100644 index 0000000000..49465f4a11 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-trio/sphinxcontrib-trio.patch @@ -0,0 +1,10 @@ +diff -urN a/setup.py b/setup.py +--- a/setup.py 2019-08-01 10:44:29.583879243 +0200 ++++ b/setup.py 2019-08-01 11:57:01.815819059 +0200 +@@ -32,4 +32,5 @@ + "Framework :: Twisted", + "Topic :: Documentation :: Sphinx", + "Topic :: Software Development :: Documentation", +- ]) ++ ], ++ namespace_packages=['sphinxcontrib']) diff --git a/var/spack/repos/builtin/packages/py-sshtunnel/package.py b/var/spack/repos/builtin/packages/py-sshtunnel/package.py new file mode 100644 index 0000000000..c9a13fa06e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sshtunnel/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 PySshtunnel(PythonPackage): + """Pure python SSH tunnels.""" + + homepage = "https://github.com/pahaz/sshtunnel" + url = "https://pypi.io/packages/source/s/sshtunnel/sshtunnel-0.1.5.tar.gz" + + version('0.1.5', sha256='c813fdcda8e81c3936ffeac47cb69cfb2d1f5e77ad0de656c6dab56aeebd9249') + + depends_on('py-setuptools', type='build') + depends_on('py-paramiko@1.15.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py index 5c8a10a4a9..367a3511d6 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -141,8 +141,9 @@ class PyTensorflow(Package, CudaPackage): depends_on('py-keras-preprocessing@1.1.0:', type=('build', 'run'), when='@2.1:') depends_on('py-keras-preprocessing@1.0.5:', type=('build', 'run'), when='@1.12:') depends_on('py-keras-preprocessing@1.0.3:', type=('build', 'run'), when='@1.11:') - depends_on('py-numpy@1.16.0:1.999', type=('build', 'run'), when='@1.13.2,1.15:') - depends_on('py-numpy@1.14.5:1.999', type=('build', 'run'), when='@1.12.1,1.14.0') + # https://github.com/tensorflow/tensorflow/issues/40688 + depends_on('py-numpy@1.16.0:1.18', type=('build', 'run'), when='@1.13.2,1.15:') + depends_on('py-numpy@1.14.5:1.18', type=('build', 'run'), when='@1.12.1,1.14.0') depends_on('py-numpy@1.13.3:1.14.5', type=('build', 'run'), when='@1.10.0:1.10.1') depends_on('py-numpy@1.13.3:', type=('build', 'run'), when='@1.6:') depends_on('py-numpy@1.12.1:', type=('build', 'run'), when='@1.4:') @@ -202,7 +203,6 @@ class PyTensorflow(Package, CudaPackage): conflicts('+jemalloc', when='@:0') conflicts('+jemalloc', when='platform=darwin', msg='Currently jemalloc is only support on Linux platform') conflicts('+jemalloc', when='platform=cray', msg='Currently jemalloc is only support on Linux platform') - conflicts('+jemalloc', when='platform=bgq', msg='Currently jemalloc is only support on Linux platform') conflicts('+gcp', when='@:0.8') conflicts('+hdfs', when='@:0.10') conflicts('+aws', when='@:1.3') @@ -226,18 +226,15 @@ class PyTensorflow(Package, CudaPackage): conflicts('+tensorrt', when='~cuda') conflicts('+tensorrt', when='platform=darwin', msg='Currently TensorRT is only supported on Linux platform') conflicts('+tensorrt', when='platform=cray', msg='Currently TensorRT is only supported on Linux platform') - conflicts('+tensorrt', when='platform=bgq', msg='Currently TensorRT is only supported on Linux platform') conflicts('+nccl', when='@:1.7') conflicts('+nccl', when='~cuda') conflicts('+nccl', when='platform=darwin', msg='Currently NCCL is only supported on Linux platform') conflicts('+nccl', when='platform=cray', msg='Currently NCCL is only supported on Linux platform') - conflicts('+nccl', when='platform=bgq', msg='Currently NCCL is only supported on Linux platform') conflicts('+mpi', when='@:1.2') conflicts('+android', when='@:1.4') conflicts('+ios', when='@:1.12.0,1.12.2:1.13') conflicts('+ios', when='platform=linux', msg='iOS support only available on macOS') conflicts('+ios', when='platform=cray', msg='iOS support only available on macOS') - conflicts('+ios', when='platform=bgq', msg='iOS support only available on macOS') conflicts('+monolithic', when='@:1.3') conflicts('+numa', when='@:1.12.0,1.12.2:1.13') conflicts('+dynamic_kernels', when='@:1.12.0,1.12.2:1.12.3') diff --git a/var/spack/repos/builtin/packages/py-torch-geometric/package.py b/var/spack/repos/builtin/packages/py-torch-geometric/package.py new file mode 100644 index 0000000000..84d633c261 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch-geometric/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) + + +class PyTorchGeometric(PythonPackage): + """PyTorch Geometric (PyG) is a geometric deep learning extension + library for PyTorch. It consists of various methods for deep + learning on graphs and other irregular structures, also known as + geometric deep learning, from a variety of published papers. In + addition, it consists of an easy-to-use mini-batch loader for many + small and single giant graphs, multi gpu-support, a large number + of common benchmark datasets (based on simple interfaces to create + your own), and helpful transforms, both for learning on arbitrary + graphs as well as on 3D meshes or point clouds.""" + + homepage = "https://github.com/rusty1s/pytorch_geometric" + url = "https://github.com/rusty1s/pytorch_geometric/archive/1.6.0.tar.gz" + + version('1.6.0', sha256='7d5231cdcc2ebd4444f406cbf1537eb49bf90ab6f446eaf1b7af5cdbe105f3c9') + + depends_on('python@3.6:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-pytest-runner', type='build') + depends_on('py-torch', type=('build', 'run')) + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-tqdm', type=('build', 'run')) + depends_on('py-scipy', type=('build', 'run')) + depends_on('py-networkx', type=('build', 'run')) + depends_on('py-scikit-learn', type=('build', 'run')) + depends_on('py-numba', type=('build', 'run')) + depends_on('py-requests', type=('build', 'run')) + depends_on('py-pandas', type=('build', 'run')) + depends_on('py-rdflib', type=('build', 'run')) + depends_on('py-googledrivedownloader', type=('build', 'run')) + depends_on('py-h5py~mpi', type=('build', 'run')) + depends_on('py-ase', type=('build', 'run')) + depends_on('py-jinja2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index 1ffeb81b23..1e2978dc54 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import os class PyTorch(PythonPackage, CudaPackage): @@ -50,6 +51,7 @@ class PyTorch(PythonPackage, CudaPackage): ] version('master', branch='master', submodules=True) + version('1.6.0', tag='v1.6.0', submodules=True) version('1.5.1', tag='v1.5.1', submodules=True) version('1.5.0', tag='v1.5.0', submodules=True) version('1.4.1', tag='v1.4.1', submodules=True) @@ -68,6 +70,7 @@ class PyTorch(PythonPackage, CudaPackage): variant('cuda', default=True, description='Build with CUDA') variant('cudnn', default=True, description='Enables the cuDNN build') + variant('rocm', default=False, description='Build with ROCm build') variant('magma', default=False, description='Enables the MAGMA build') variant('fbgemm', default=False, description='Enables the FBGEMM build') variant('test', default=False, description='Enables the test build') @@ -112,12 +115,14 @@ class PyTorch(PythonPackage, CudaPackage): conflicts('cuda_arch=none', when='+cuda', msg='Must specify CUDA compute capabilities of your GPU, see ' 'https://developer.nvidia.com/cuda-gpus') + conflicts('+rocm', when='+cuda') # Required dependencies depends_on('cmake@3.5:', type='build') # Use Ninja generator to speed up build times # Automatically used if found depends_on('ninja@1.5:', type='build') + depends_on('python@3.6.1:', when='@1.6:', type=('build', 'run')) depends_on('python@3.5:', when='@1.5:', type=('build', 'run')) depends_on('python@2.7:2.8,3.5:', type=('build', 'run')) depends_on('py-setuptools', type='build') @@ -173,6 +178,9 @@ class PyTorch(PythonPackage, CudaPackage): # Fixes CMake configuration error when XNNPACK is disabled patch('xnnpack.patch', when='@1.5.0:1.5.999') + # Fixes Build error for when ROCm is enable for pytorch-1.5 release + patch('rocm.patch', when='@1.5.0:1.5.999+rocm') + # https://github.com/pytorch/pytorch/pull/37086 # Fixes compilation with Clang 9.0.0 and Apple Clang 11.0.3 patch('https://github.com/pytorch/pytorch/commit/e921cd222a8fbeabf5a3e74e83e0d8dfb01aa8b5.patch', @@ -244,7 +252,9 @@ class PyTorch(PythonPackage, CudaPackage): enable_or_disable('fbgemm') enable_or_disable('test', keyword='BUILD') - + enable_or_disable('rocm') + if '+rocm' in self.spec: + env.set('USE_MKLDNN', 0) if '+miopen' in self.spec: env.set('MIOPEN_LIB_DIR', self.spec['miopen'].libs.directories[0]) env.set('MIOPEN_INCLUDE_DIR', self.spec['miopen'].prefix.include) @@ -297,6 +307,11 @@ class PyTorch(PythonPackage, CudaPackage): enable_or_disable('zstd', newer=True) enable_or_disable('tbb', newer=True) + @run_before('install') + def build_amd(self): + if '+rocm' in self.spec: + python(os.path.join('tools', 'amd_build', 'build_amd.py')) + def install_test(self): with working_dir('test'): python('run_test.py') diff --git a/var/spack/repos/builtin/packages/py-torch/rocm.patch b/var/spack/repos/builtin/packages/py-torch/rocm.patch new file mode 100644 index 0000000000..b50cc7e159 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torch/rocm.patch @@ -0,0 +1,98 @@ +diff --git a/aten/src/ATen/cuda/nvrtc_stub/ATenNVRTC.h b/aten/src/ATen/cuda/nvrtc_stub/ATenNVRTC.h +index 9cd678dfb4cc7..4630465115c7c 100644 +--- a/aten/src/ATen/cuda/nvrtc_stub/ATenNVRTC.h ++++ b/aten/src/ATen/cuda/nvrtc_stub/ATenNVRTC.h +@@ -67,6 +67,14 @@ namespace at { namespace cuda { + // + // HIP doesn't have + // cuGetErrorString (maps to non-functional hipGetErrorString___) ++// ++// HIP from ROCm 3.5 on renamed hipOccupancyMaxActiveBlocksPerMultiprocessor ++// to hipModuleOccupancyMaxActiveBlocksPerMultiprocessor. ++#if HIP_VERSION < 305 ++#define HIPOCCUPANCYMAXACTIVEBLOCKSPERMULTIPROCESSOR hipOccupancyMaxActiveBlocksPerMultiprocessor ++#else ++#define HIPOCCUPANCYMAXACTIVEBLOCKSPERMULTIPROCESSOR cuOccupancyMaxActiveBlocksPerMultiprocessor ++#endif + + #define AT_FORALL_NVRTC(_) \ + _(nvrtcVersion) \ +@@ -76,7 +84,7 @@ namespace at { namespace cuda { + _(nvrtcGetPTX) \ + _(cuModuleLoadData) \ + _(cuModuleGetFunction) \ +- _(cuOccupancyMaxActiveBlocksPerMultiprocessor) \ ++ _(HIPOCCUPANCYMAXACTIVEBLOCKSPERMULTIPROCESSOR)\ + _(nvrtcGetErrorString) \ + _(nvrtcGetProgramLogSize) \ + _(nvrtcGetProgramLog) \ +diff --git a/aten/src/ATen/native/cuda/SoftMax.cu b/aten/src/ATen/native/cuda/SoftMax.cu +index da1995123ecfc..f935eb4ef3d0e 100644 +--- a/aten/src/ATen/native/cuda/SoftMax.cu ++++ b/aten/src/ATen/native/cuda/SoftMax.cu +@@ -127,8 +127,8 @@ void SpatialSoftMax_getLaunchSizes( + uint32_t block_threads = block.x * block.y; + smem_size = block.x == 1 ? 0 : block_threads * sizeof(accscalar_t); + int max_active_blocks; +-#ifdef __HIP_PLATFORM_HCC__ +- // XXX HIP function signature is not compatible yet. ++#if defined(__HIP_PLATFORM_HCC__) && HIP_VERSION < 305 ++ // HIP function signature is not compatible yet. + uint32_t max_blocks; + cudaOccupancyMaxActiveBlocksPerMultiprocessor(&max_blocks, + k, block_threads, smem_size); +diff --git a/torch/csrc/jit/codegen/fuser/cuda/fused_kernel.cpp b/torch/csrc/jit/codegen/fuser/cuda/fused_kernel.cpp +index 5586e49919727..27315ee475277 100644 +--- a/torch/csrc/jit/codegen/fuser/cuda/fused_kernel.cpp ++++ b/torch/csrc/jit/codegen/fuser/cuda/fused_kernel.cpp +@@ -140,10 +140,10 @@ FusedKernelCUDA::FusedKernelCUDA( + nvrtc().cuModuleGetFunction(&function_, module_, name_.c_str())); + + // Computes max blocks +-#ifdef __HIP_PLATFORM_HCC__ +- // XXX HIP function signature is not compatible yet ++#if defined(__HIP_PLATFORM_HCC__) && HIP_VERSION < 305 ++ // HIP function signature is not compatible yet + uint32_t max_blocks; +- AT_CUDA_DRIVER_CHECK(nvrtc().cuOccupancyMaxActiveBlocksPerMultiprocessor( ++ AT_CUDA_DRIVER_CHECK(nvrtc().hipOccupancyMaxActiveBlocksPerMultiprocessor( + &max_blocks, function_, 128, 0)); + maxBlocks_ = max_blocks; + #else +diff --git a/torch/utils/hipify/cuda_to_hip_mappings.py b/torch/utils/hipify/cuda_to_hip_mappings.py +index 7e21363cbe6af..26f269d92ae38 100644 +--- a/torch/utils/hipify/cuda_to_hip_mappings.py ++++ b/torch/utils/hipify/cuda_to_hip_mappings.py +@@ -2890,7 +2890,7 @@ + ( + "cuOccupancyMaxActiveBlocksPerMultiprocessor", + ( +- "hipOccupancyMaxActiveBlocksPerMultiprocessor", ++ "hipModuleOccupancyMaxActiveBlocksPerMultiprocessor", + CONV_OCCUPANCY, + API_DRIVER, + ), +@@ -2898,7 +2898,7 @@ + ( + "cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", + ( +- "hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", ++ "hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", + CONV_OCCUPANCY, + API_DRIVER, + HIP_UNSUPPORTED, +@@ -2906,12 +2906,12 @@ + ), + ( + "cuOccupancyMaxPotentialBlockSize", +- ("hipOccupancyMaxPotentialBlockSize", CONV_OCCUPANCY, API_DRIVER), ++ ("hipModuleOccupancyMaxPotentialBlockSize", CONV_OCCUPANCY, API_DRIVER), + ), + ( + "cuOccupancyMaxPotentialBlockSizeWithFlags", + ( +- "hipOccupancyMaxPotentialBlockSizeWithFlags", ++ "hipModuleOccupancyMaxPotentialBlockSizeWithFlags", + CONV_OCCUPANCY, + API_DRIVER, + HIP_UNSUPPORTED, diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 4e40117c8d..c94f06ef6f 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -11,7 +11,7 @@ class PyTorchvision(PythonPackage): architectures, and common image transformations for computer vision.""" homepage = "https://github.com/pytorch/vision" - url = "https://github.com/pytorch/vision/archive/v0.6.1.tar.gz" + url = "https://github.com/pytorch/vision/archive/v0.7.0.tar.gz" maintainers = ['adamjstewart'] import_modules = [ @@ -21,6 +21,7 @@ class PyTorchvision(PythonPackage): 'torchvision.models.detection' ] + version('0.7.0', sha256='fa0a6f44a50451115d1499b3f2aa597e0092a07afce1068750260fa7dd2c85cb') version('0.6.1', sha256='8173680a976c833640ecbd0d7e6f0a11047bf8833433e2147180efc905e48656') version('0.6.0', sha256='02de11b3abe6882de4032ce86dab9c7794cbc84369b44d04e667486580f0f1f7') version('0.5.0', sha256='eb9afc93df3d174d975ee0914057a9522f5272310b4d56c150b955c287a4d74d') @@ -29,16 +30,36 @@ class PyTorchvision(PythonPackage): version('0.4.0', sha256='c270d74e568bad4559fed4544f6dd1e22e2eb1c60b088e04a5bd5787c4150589') version('0.3.0', sha256='c205f0618c268c6ed2f8abb869ef6eb83e5339c1336c243ad321a2f2a85195f0') - depends_on('python@3:', when='@0.6:', type=('build', 'run')) + # See README.rst + depends_on('python@3.6:', when='@0.7:', type=('build', 'run')) + depends_on('python@3.5:', when='@0.6.0:0.6.999', type=('build', 'run')) + depends_on('python@2.7:2.8,3.5:3.8', when='@0.5.0', type=('build', 'run')) + depends_on('python@2.7:2.8,3.5:3.7', when='@:0.4', type=('build', 'run')) + depends_on('py-setuptools', type='build') depends_on('py-numpy', type=('build', 'run')) depends_on('py-six', when='@:0.5', type=('build', 'run')) - depends_on('py-torch@1.4:', when='@0.6:', type=('build', 'link', 'run')) - depends_on('py-torch@1.2:', when='@0.4:', type=('build', 'link', 'run')) - depends_on('py-torch@1.1:', type=('build', 'link', 'run')) + + # See README.rst + depends_on('py-torch@1.6.0', when='@0.7.0', type=('build', 'link', 'run')) + depends_on('py-torch@1.5.0', when='@0.6.0', type=('build', 'link', 'run')) + depends_on('py-torch@1.4.0', when='@0.5.0', type=('build', 'link', 'run')) + depends_on('py-torch@1.3.1', when='@0.4.2', type=('build', 'link', 'run')) + depends_on('py-torch@1.3.0', when='@0.4.1', type=('build', 'link', 'run')) + depends_on('py-torch@1.2.0', when='@0.4.0', type=('build', 'link', 'run')) + depends_on('py-torch@1.1.0', when='@0.3.0', type=('build', 'link', 'run')) + depends_on('py-torch@:1.0.1', when='@0.2.2', type=('build', 'link', 'run')) + + # TODO: Torchvision supports the following backends: + # * pillow + # * pillow-simd + # * accimage + # * libpng + # * libjpeg + # https://github.com/pytorch/vision/issues/1712 - depends_on('py-pillow@4.1.1:6', when='@:0.4', type=('build', 'run')) # or py-pillow-simd - depends_on('py-pillow@4.1.1:', when='@0.5:', type=('build', 'run')) # or py-pillow-simd + depends_on('py-pillow@4.1.1:6', when='@:0.4', type=('build', 'run')) + depends_on('py-pillow@4.1.1:', when='@0.5:', type=('build', 'run')) # Many of the datasets require additional dependencies to use. # These can be installed after the fact. diff --git a/var/spack/repos/builtin/packages/py-uvw/package.py b/var/spack/repos/builtin/packages/py-uvw/package.py new file mode 100644 index 0000000000..0a87855fab --- /dev/null +++ b/var/spack/repos/builtin/packages/py-uvw/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 PyUvw(PythonPackage): + """ + UVW is a small utility library to write VTK files + from data contained in Numpy arrays. + """ + + homepage = "https://github.com/prs513rosewood/uvw" + url = "https://pypi.io/packages/source/u/uvw/uvw-0.3.1.tar.gz" + + maintainers = ['prs513rosewood'] + + version('0.3.1', sha256='31e3347ec342bd5381091f3c782ea1a1bfa4709d1de41cd700509e0b813f2265') + version('0.0.7', sha256='4bcb77cf9655f0dcd5f38f024210ac5ad7ebc6fcfb45f898468d29a927bcb7a5') + + variant('mpi', description="Use parallel writers", default=False) + + depends_on('python@3:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-numpy', type=('build', 'run')) + depends_on('py-mpi4py', type=('build', 'run'), when="+mpi") diff --git a/var/spack/repos/builtin/packages/py-vsts-cd-manager/package.py b/var/spack/repos/builtin/packages/py-vsts-cd-manager/package.py new file mode 100644 index 0000000000..0e44620e69 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-vsts-cd-manager/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) + + +class PyVstsCdManager(PythonPackage): + """Python wrapper around some of the VSTS APIs.""" + + homepage = "https://github.com/microsoft/vsts-cd-manager" + url = "https://pypi.io/packages/source/v/vsts-cd-manager/vsts-cd-manager-1.0.2.tar.gz" + + version('1.0.2', sha256='0bb09059cd553e1c206e92ef324cb0dcf92334846d646c44c684f6256b86447b') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.2.0:', type=('build', 'run')) + depends_on('py-mock', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-vsts/package.py b/var/spack/repos/builtin/packages/py-vsts/package.py new file mode 100644 index 0000000000..ed597e3cbd --- /dev/null +++ b/var/spack/repos/builtin/packages/py-vsts/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 PyVsts(PythonPackage): + """Python wrapper around the VSTS APIs.""" + + homepage = "https://github.com/Microsoft/vsts-python-api" + url = "https://pypi.io/packages/source/v/vsts/vsts-0.1.25.tar.gz" + + version('0.1.25', sha256='da179160121f5b38be061dbff29cd2b60d5d029b2207102454d77a7114e64f97') + + depends_on('py-setuptools', type='build') + depends_on('py-msrest@0.6.0:0.6.999', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-websocket-client/package.py b/var/spack/repos/builtin/packages/py-websocket-client/package.py index 75ce5e69cc..c55df5e899 100644 --- a/var/spack/repos/builtin/packages/py-websocket-client/package.py +++ b/var/spack/repos/builtin/packages/py-websocket-client/package.py @@ -11,6 +11,7 @@ class PyWebsocketClient(PythonPackage): url = "https://pypi.io/packages/source/w/websocket_client/websocket_client-0.57.0.tar.gz" version('0.57.0', sha256='d735b91d6d1692a6a181f2a8c9e0238e5f6373356f561bb9dc4c7af36f452010') + version('0.56.0', sha256='1fd5520878b68b84b5748bb30e592b10d0a91529d5383f74f4964e72b297fd3a') depends_on('python@2.6:2.8,3.4:', type=('build', 'run')) depends_on('py-setuptools', type='build') diff --git a/var/spack/repos/builtin/packages/py-websockets/package.py b/var/spack/repos/builtin/packages/py-websockets/package.py new file mode 100644 index 0000000000..891678934c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-websockets/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) + + +class PyWebsockets(PythonPackage): + """websockets is a library for building WebSocket servers and + clients in Python with a focus on correctness and simplicity.""" + + homepage = "https://github.com/aaugustin/websockets" + url = "https://github.com/aaugustin/websockets/archive/8.1.tar.gz" + + version('8.1', sha256='c19ce96ad5f7606127d3915364144df93fb865a215784b06048fae3d39364f14') + + depends_on('py-setuptools', type='build') + depends_on('python@3.6.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index 476b7b9e07..846d315650 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -9,16 +9,21 @@ from spack import * class PyWheel(PythonPackage): """A built-package format for Python.""" - homepage = "https://pypi.python.org/pypi/wheel" - url = "https://pypi.io/packages/source/w/wheel/wheel-0.29.0.tar.gz" + homepage = "https://github.com/pypa/wheel" + url = "https://pypi.io/packages/source/w/wheel/wheel-0.34.2.tar.gz" + version('0.34.2', sha256='8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96') version('0.33.4', sha256='62fcfa03d45b5b722539ccbc07b190e4bfff4bb9e3a4d470dd9f6a0981002565') version('0.33.1', sha256='66a8fd76f28977bb664b098372daef2b27f60dc4d1688cfab7b37a09448f0e9d') version('0.32.3', sha256='029703bf514e16c8271c3821806a1c171220cc5bdd325cbf4e7da1e056a01db6') version('0.29.0', sha256='1ebb8ad7e26b448e9caa4773d2357849bf80ff9e313964bcaf79cbf0201a1648') version('0.26.0', sha256='eaad353805c180a47545a256e6508835b65a8e830ba1093ed8162f19a50a530c') + depends_on('python@2.7:2.8,3.5:', when='@0.34:', type=('build', 'run')) + depends_on('python@2.7:2.8,3.4:', when='@0.30:', type=('build', 'run')) + depends_on('python@2.6:2.8,3.2:', type=('build', 'run')) + depends_on('py-setuptools@40.9.0:', when='@0.34.1:', type=('build', 'run')) depends_on('py-setuptools', type=('build', 'run')) - depends_on('python@2.7:2.8,3.4:', type=('build', 'run')) + depends_on('py-setuptools-scm@3.4:', when='@0.34.0', type='build') depends_on('py-pytest@3.0.0:', type='test') depends_on('py-pytest-cov', type='test') diff --git a/var/spack/repos/builtin/packages/py-yarl/package.py b/var/spack/repos/builtin/packages/py-yarl/package.py new file mode 100644 index 0000000000..3b33ac4776 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-yarl/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) + + +class PyYarl(PythonPackage): + """The module provides handy URL class for URL parsing and changing.""" + + homepage = "https://github.com/aio-libs/yarl" + url = "https://github.com/aio-libs/yarl/archive/v1.4.2.tar.gz" + + version('1.4.2', sha256='a400eb3f54f7596eeaba8100a8fa3d72135195423c52808dc54a43c6b100b192') + + depends_on('python@3.5:', type=('build', 'run')) + depends_on('py-setuptools', type='build') + depends_on('py-cython', type='build') + depends_on('py-multidict@4.0:', type=('build', 'run')) + depends_on('py-idna@2.0:', type=('build', 'run')) + + @run_before('build') + def fix_cython(self): + cython = self.spec['py-cython'].command + cython('-3', + '-o', + 'yarl/_quoting.c', + 'yarl/_quoting.pyx', + '-Iyarl') diff --git a/var/spack/repos/builtin/packages/py-yolk3k/package.py b/var/spack/repos/builtin/packages/py-yolk3k/package.py new file mode 100644 index 0000000000..d744f93f94 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-yolk3k/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 PyYolk3k(PythonPackage): + """Yolk is a Python tool for obtaining information about installed Python + packages and querying packages avilable on PyPI (Python Package Index). + Yolk3k is a fork of the original yolk. `yolk3k` add Python 3 support and + adds additional features.""" + + homepage = "https://github.com/myint/yolk" + url = "https://pypi.io/packages/source/y/yolk3k/yolk3k-0.9.tar.gz" + + version('0.9', sha256='cf8731dd0a9f7ef50b5dc253fe0174383e3fed295a653672aa918c059eef86ae') + + depends_on('py-pygments') + depends_on('py-jinja2') + depends_on('py-docutils') diff --git a/var/spack/repos/builtin/packages/pythia8/package.py b/var/spack/repos/builtin/packages/pythia8/package.py index 572d65922b..8660fc8b01 100644 --- a/var/spack/repos/builtin/packages/pythia8/package.py +++ b/var/spack/repos/builtin/packages/pythia8/package.py @@ -15,6 +15,9 @@ class Pythia8(AutotoolsPackage): homepage = "http://home.thep.lu.se/Pythia/" url = "http://home.thep.lu.se/~torbjorn/pythia8/pythia8244.tgz" + maintainers = ['ChristianTackeGSI'] + + version('8302', sha256='7372e4cc6f48a074e6b7bc426b040f218ec4a64b0a55e89da6af56933b5f5085') version('8301', sha256='51382768eb9aafb97870dca1909516422297b64ef6a6b94659259b3e4afa7f06') version('8244', sha256='e34880f999daf19cdd893a187123927ba77d1bf851e30f6ea9ec89591f4c92ca', preferred=True) version('8240', sha256='d27495d8ca7707d846f8c026ab695123c7c78c7860f04e2c002e483080418d8d') diff --git a/var/spack/repos/builtin/packages/python/fj-rpath-2.3.patch b/var/spack/repos/builtin/packages/python/fj-rpath-2.3.patch new file mode 100644 index 0000000000..2ebda4cc12 --- /dev/null +++ b/var/spack/repos/builtin/packages/python/fj-rpath-2.3.patch @@ -0,0 +1,12 @@ +--- a/Lib/distutils/unixccompiler.py 2003-06-02 05:27:40.000000000 +1000 ++++ b/Lib/distutils/unixccompiler.py 2017-05-13 13:52:45.554213616 +1000 +@@ -208,7 +208,8 @@ + elif compiler[:3] == "gcc" or compiler[:3] == "g++": + return "-Wl,-R" + dir + else: +- return "-R" + dir ++ # Patched by spack to use GNU ld syntax by default: ++ return "-Wl,--enable-new-dtags,-R" + dir + + def library_option(self, lib): + return "-l" + lib diff --git a/var/spack/repos/builtin/packages/python/fj-rpath-3.1.patch b/var/spack/repos/builtin/packages/python/fj-rpath-3.1.patch new file mode 100644 index 0000000000..d25b58da77 --- /dev/null +++ b/var/spack/repos/builtin/packages/python/fj-rpath-3.1.patch @@ -0,0 +1,13 @@ +--- a/Lib/distutils/unixccompiler.py 2009-05-09 21:55:12.000000000 +1000 ++++ b/Lib/distutils/unixccompiler.py 2017-05-13 14:30:18.077518999 +1000 +@@ -215,7 +211,8 @@ + return "-L" + dir + + def _is_gcc(self, compiler_name): +- return "gcc" in compiler_name or "g++" in compiler_name ++ return "gcc" in compiler_name or "g++" in compiler_name \ ++ or "fcc" in compiler_name or "FCC" in compiler_name + + def runtime_library_dir_option(self, dir): + # XXX Hackish, at the very least. See Python bug #445902: + diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index bca6162c64..16bd621504 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -31,11 +31,14 @@ class Python(AutotoolsPackage): maintainers = ['adamjstewart'] + version('3.8.5', sha256='015115023c382eb6ab83d512762fe3c5502fa0c6c52ffebc4831c4e1a06ffc49') + version('3.8.4', sha256='32c4d9817ef11793da4d0d95b3191c4db81d2e45544614e8449255ca9ae3cc18') version('3.8.3', sha256='6af6d4d2e010f9655518d0fc6738c7ff7069f10a4d2fbd55509e467f092a8b90') version('3.8.2', sha256='e634a7a74776c2b89516b2e013dda1728c89c8149b9863b8cea21946daf9d561') version('3.8.1', sha256='c7cfa39a43b994621b245e029769e9126caa2a93571cee2e743b213cceac35fb') version('3.8.0', sha256='f1069ad3cae8e7ec467aa98a6565a62a48ef196cb8f1455a245a08db5e1792df') - version('3.7.7', sha256='8c8be91cd2648a1a0c251f04ea0bb4c2a5570feb9c45eaaa2241c785585b475a', preferred=True) + version('3.7.8', sha256='0e25835614dc221e3ecea5831b38fa90788b5389b99b675a751414c858789ab0', preferred=True) + version('3.7.7', sha256='8c8be91cd2648a1a0c251f04ea0bb4c2a5570feb9c45eaaa2241c785585b475a') version('3.7.6', sha256='aeee681c235ad336af116f08ab6563361a0c81c537072c1b309d6e4050aa2114') version('3.7.5', sha256='8ecc681ea0600bbfb366f2b173f727b205bb825d93d2f0b286bc4e58d37693da') version('3.7.4', sha256='d63e63e14e6d29e17490abbe6f7d17afb3db182dbd801229f14e55f4157c4ba3') @@ -43,6 +46,9 @@ class Python(AutotoolsPackage): version('3.7.2', sha256='f09d83c773b9cc72421abba2c317e4e6e05d919f9bcf34468e192b6a6c8e328d') version('3.7.1', sha256='36c1b81ac29d0f8341f727ef40864d99d8206897be96be73dc34d4739c9c9f06') version('3.7.0', sha256='85bb9feb6863e04fb1700b018d9d42d1caac178559ffa453d7e6a436e259fd0d') + version('3.6.11', sha256='96621902f89746fffc22f39749c07da7c2917b232e72352e6837d41850f7b90c') + version('3.6.10', sha256='7034dd7cba98d4f94c74f9edd7345bac71c8814c41672c64d9044fa2f96f334d') + version('3.6.9', sha256='47fc92a1dcb946b9ed0abc311d3767b7215c54e655b17fd1d3f9b538195525aa') version('3.6.8', sha256='7f5b1f08b3b0a595387ef6c64c85b1b13b38abef0dd871835ee923262e4f32f0') version('3.6.7', sha256='b7c36f7ed8f7143b2c46153b7332db2227669f583ea0cce753facf549d1a4239') version('3.6.6', sha256='7d56dadf6c7d92a238702389e80cfe66fbfae73e584189ed6f89c75bbf3eda58') @@ -52,6 +58,7 @@ class Python(AutotoolsPackage): version('3.6.2', sha256='7919489310a5f17f7acbab64d731e46dca0702874840dadce8bd4b2b3b8e7a82') version('3.6.1', sha256='aa50b0143df7c89ce91be020fe41382613a817354b33acdc6641b44f8ced3828') version('3.6.0', sha256='aa472515800d25a3739833f76ca3735d9f4b2fe77c3cb21f69275e0cce30cb2b') + version('3.5.8', sha256='18c88dfd260147bc7247e6356010e5d4916dfbfc480f6434917f88e61228177a') version('3.5.7', sha256='542d94920a2a06a471a73b51614805ad65366af98145b0369bc374cf248b521b') version('3.5.2', sha256='1524b840e42cf3b909e8f8df67c1724012c7dc7f9d076d4feef2d3eff031e8a0') version('3.5.1', sha256='687e067d9f391da645423c7eda8205bae9d35edc0c76ef5218dcbe4cc770d0d7') @@ -179,6 +186,10 @@ class Python(AutotoolsPackage): patch('cray-rpath-2.3.patch', when='@2.3:3.0.1 platform=cray') patch('cray-rpath-3.1.patch', when='@3.1:3.99 platform=cray') + # Ensure that distutils chooses correct compiler option for RPATH on fj: + patch('fj-rpath-2.3.patch', when='@2.3:3.0.1 %fj') + patch('fj-rpath-3.1.patch', when='@3.1:3.99 %fj') + # Fixes an alignment problem with more aggressive optimization in gcc8 # https://github.com/python/cpython/commit/0b91f8a668201fc58fa732b8acc496caedfdbae0 patch('gcc-8-2.7.14.patch', when='@2.7.14 %gcc@8:') @@ -273,7 +284,7 @@ class Python(AutotoolsPackage): # C/C++ source, and patches are required to enable building for these # modules. All Python versions without a viable patch are installed # with a warning message about this potentially erroneous behavior. - if not spec.satisfies('@2.7.8:2.7.18,3.6.8,3.7.2:3.8.3'): + if not spec.satisfies('@2.7.8:2.7.18,3.6.8,3.7.2:3.8'): tty.warn(('Python v{0} does not have the C++ "distutils" patch; ' 'errors may occur when installing Python modules w/ ' 'mixed C/C++ source files.').format(self.version)) diff --git a/var/spack/repos/builtin/packages/q-e-sirius/package.py b/var/spack/repos/builtin/packages/q-e-sirius/package.py new file mode 100644 index 0000000000..7eed92f5d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/q-e-sirius/package.py @@ -0,0 +1,317 @@ +# 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) +# adapted from official quantum espresso package + +import glob +import os.path + +from spack import * + + +class QESirius(Package): + """SIRIUS enabled fork of QuantumESPRESSO. """ + + homepage = 'https://github.com/electronic-structure/q-e-sirius/' + url = 'https://github.com/electronic-structure/q-e-sirius/archive/v6.5-rc4-sirius.tar.gz' + git = 'https://github.com/electronic-structure/q-e-sirius.git' + + maintainers = ['simonpintarelli'] + + version('develop', branch='ristretto') + + version('6.5-rc2-sirius', sha256='460b678406eec36e4ee828c027929cf8720c3965a85c20084c53398b123c9ae9') + version('6.5-rc3-sirius', sha256='1bfb8c1bba815b5ab2d733f51a8f9aa7b079f2859e6f14e4dcda708ebf172b02') + version('6.5-rc4-sirius', sha256='be5529d65e4b301d6a6d1235e8d88277171c1732768bf1cf0c7fdeae154c79f1') + + variant('mpi', default=True, description='Builds with mpi support') + variant('openmp', default=True, description='Enables openMP support') + variant('scalapack', default=True, description='Enables scalapack support') + variant('elpa', default=False, description='Uses elpa as an eigenvalue solver') + + # Support for HDF5 has been added starting in version 6.1.0 and is + # still experimental, therefore we default to False for the variant + variant( + 'hdf5', default='none', description='Builds with HDF5 support', + values=('parallel', 'serial', 'none'), multi=False + ) + + # Enables building Electron-phonon Wannier 'epw.x' executable + # http://epw.org.uk/Main/About + variant('epw', default=False, + description='Builds Electron-phonon Wannier executable') + + # Apply upstream patches by default. Variant useful for 3rd party + # patches which are incompatible with upstream patches + desc = 'Apply recommended upstream patches. May need to be set ' + desc += 'to False for third party patches or plugins' + variant('patch', default=True, description=desc) + + # QMCPACK converter patch + # https://github.com/QMCPACK/qmcpack/tree/develop/external_codes/quantum_espresso + variant('qmcpack', default=False, + description='Build QE-to-QMCPACK wave function converter') + + # Dependencies + depends_on('blas') + depends_on('lapack') + depends_on('fftw-api@3') + depends_on('sirius+fortran') + depends_on('mpi', when='+mpi') + depends_on('scalapack', when='+scalapack+mpi') + depends_on('elpa+openmp', when='+elpa+openmp') + depends_on('elpa~openmp', when='+elpa~openmp') + # Versions of HDF5 prior to 1.8.16 lead to QE runtime errors + depends_on('hdf5@1.8.16:+fortran+hl+mpi', when='hdf5=parallel') + depends_on('hdf5@1.8.16:+fortran+hl~mpi', when='hdf5=serial') + depends_on('hdf5', when='+qmcpack') + # TODO: enable building EPW when ~mpi + depends_on('mpi', when='+epw') + + # CONFLICTS SECTION + # Omitted for now due to concretizer bug + # MKL with 64-bit integers not supported. + # 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( + '+scalapack', + when='~mpi', + msg='scalapack is a parallel library and needs MPI support' + ) + + conflicts( + '+elpa', + when='~mpi', + msg='elpa is a parallel library and needs MPI support' + ) + + # HDF5 support introduced in 6.1.0, but the configure had some limitations. + # In recent tests (Oct 2019), GCC and Intel work with the HDF5 Spack + # package for the default variant. This is only for hdf5=parallel variant. + # Support, for hdf5=serial was introduced in 6.4.1 but required a patch + # for the serial (no MPI) case. This patch was to work around an issue + # that only manifested itself inside the Spack environment. + conflicts( + 'hdf5=parallel', + when='@:6.0', + msg='parallel HDF5 support only in QE 6.1.0 and later' + ) + + conflicts( + 'hdf5=serial', + when='@:6.4.0', + msg='serial HDF5 support only in QE 6.4.1 and later' + ) + + conflicts( + 'hdf5=parallel', + when='~mpi', + msg='parallel HDF5 requires MPI support' + ) + + # Elpa is formally supported by @:5.4.0, but QE configure searches + # for it in the wrong folders (or tries to download it within + # the build directory). Instead of patching Elpa to provide the + # folder QE expects as a link, we issue a conflict here. + conflicts('+elpa', when='@:5.4.0') + + # Some QMCPACK converters are incompatible with upstream patches. + # HDF5 is a hard requirement. Need to do two HDF5 cases explicitly + # since Spack lacks support for expressing NOT operation. + conflicts( + '@6.4+patch', + when='+qmcpack', + msg='QE-to-QMCPACK wave function converter requires ' + 'deactivatation of upstream patches' + ) + conflicts( + '@6.3:6.4.0 hdf5=serial', + when='+qmcpack', + msg='QE-to-QMCPACK wave function converter only ' + 'supported with parallel HDF5' + ) + conflicts( + 'hdf5=none', + when='+qmcpack', + msg='QE-to-QMCPACK wave function converter requires HDF5' + ) + + # The first version of Q-E to feature integrated EPW is 6.0.0, + # as per http://epw.org.uk/Main/DownloadAndInstall . + # Complain if trying to install a version older than this. + conflicts('+epw', when='@:5', + msg='EPW only available from version 6.0.0 and on') + + # Below goes some constraints as shown in the link above. + # Constraints may be relaxed as successful reports + # of different compiler+mpi combinations arrive + + # TODO: enable building EPW when ~mpi + conflicts('+epw', when='~mpi', msg='EPW needs MPI') + + # EPW doesn't gets along well with OpenMPI 2.x.x + conflicts('+epw', when='^openmpi@2.0.0:2.999.999', + msg='OpenMPI version incompatible with EPW') + + # EPW also doesn't gets along well with PGI 17.x + OpenMPI 1.10.7 + conflicts('+epw', when='^openmpi@1.10.7%pgi@17.0:17.12', + msg='PGI+OpenMPI version combo incompatible with EPW') + + # Spurious problems running in parallel the Makefile + # generated by the configure + parallel = False + + def install(self, spec, prefix): + + prefix_path = prefix.bin if '@:5.4.0' in spec else prefix + options = ['-prefix={0}'.format(prefix_path)] + + sirius = spec['sirius'] + + options.append('LIBS={0}'.format(sirius.libs[0])) + options.append('LD_LIBS={0}'.format(sirius.libs[0])) + + options.append('--disable-xml') + + # QE autoconf compiler variables has some limitations: + # 1. There is no explicit MPICC variable so we must re-purpose + # CC for the case of MPI. + # 2. F90 variable is set to be consistent with MPIF90 wrapper + # 3. If an absolute path for F90 is set, the build system breaks. + # + # Thus, due to 2. and 3. the F90 variable is not explictly set + # because it would be mostly pointless and could lead to erroneous + # behaviour. + if '+mpi' in spec: + mpi = spec['mpi'] + options.append('--enable-parallel=yes') + options.append('MPIF90={0}'.format(mpi.mpifc)) + options.append('CC={0}'.format(mpi.mpicc)) + else: + options.append('--enable-parallel=no') + options.append('CC={0}'.format(spack_cc)) + + options.append('F77={0}'.format(spack_f77)) + options.append('F90={0}'.format(spack_fc)) + + header_dir = sirius.headers.directories[0] + f90flags = 'F90FLAGS=-cpp -I {0}/sirius'.format(header_dir) + + if self.spec.satisfies('%gcc@10:'): + f90flags += '-fallow-argument-mismatch' + + options.append(f90flags) + + if '+openmp' in spec: + options.append('--enable-openmp') + + # QE external BLAS, FFT, SCALAPACK detection is a bit tricky. + # More predictable to pass in the correct link line to QE. + # If external detection of BLAS, LAPACK and FFT fails, QE + # is supposed to revert to internal versions of these libraries + # instead -- but more likely it will pickup versions of these + # libraries found in its the system path, e.g. Red Hat or + # Ubuntu's FFTW3 package. + + # FFT + # FFT detection gets derailed if you pass into the CPPFLAGS, instead + # 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 '^mkl' in spec: + # A seperate FFT library is not needed when linking against MKL + options.append( + 'FFTW_INCLUDE={0}'.format(join_path(env['MKLROOT'], + 'include/fftw'))) + if '^fftw@3:' in spec: + fftw_prefix = spec['fftw'].prefix + options.append('FFTW_INCLUDE={0}'.format(fftw_prefix.include)) + fftw_ld_flags = spec['fftw'].libs.ld_flags + options.append('FFT_LIBS={0}'.format(fftw_ld_flags)) + + # External BLAS and LAPACK requires the correct link line into + # BLAS_LIBS, do no use LAPACK_LIBS as the autoconf scripts indicate + # that this variable is largely ignored/obsolete. + + # For many Spack packages, lapack.libs = blas.libs, hence it will + # appear twice in in link line but this is harmless + lapack_blas = spec['lapack'].libs + spec['blas'].libs + + # 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 '^mkl' in spec else 'yes' + options.append('--with-scalapack={0}'.format(scalapack_option)) + + if '+elpa' in spec: + + # Spec for elpa + elpa = spec['elpa'] + + # Compute the include directory from there: versions + # of espresso prior to 6.1 requires -I in front of the directory + elpa_include = '' if '@6.1:' in spec else '-I' + elpa_include += os.path.join( + elpa.headers.directories[0], + 'modules' + ) + + options.extend([ + '--with-elpa-include={0}'.format(elpa_include), + '--with-elpa-lib={0}'.format(elpa.libs[0]) + ]) + + if spec.variants['hdf5'].value != 'none': + options.append('--with-hdf5={0}'.format(spec['hdf5'].prefix)) + if spec.satisfies('@6.4.1,6.5'): + options.extend([ + '--with-hdf5-include={0}'.format( + spec['hdf5'].headers.directories[0] + ), + '--with-hdf5-libs={0}'.format( + spec['hdf5:hl,fortran'].libs.ld_flags + ) + ]) + + configure(*options) + + # Filter file must be applied after configure executes + # QE 6.1.0 to QE 6.4 have `-L` missing in front of zlib library + # This issue is backported through an internal patch in 6.4.1, but + # can't be applied to the '+qmcpack' variant + if spec.variants['hdf5'].value != 'none': + if (spec.satisfies('@6.1.0:6.4.0') or + (spec.satisfies('@6.4.1') and '+qmcpack' in spec)): + make_inc = join_path(self.stage.source_path, 'make.inc') + zlib_libs = spec['zlib'].prefix.lib + ' -lz' + filter_file( + zlib_libs, format(spec['zlib'].libs.ld_flags), make_inc + ) + + if '+epw' in spec: + make('all', 'epw') + else: + make('all') + + if 'platform=darwin' in spec: + mkdirp(prefix.bin) + for filename in glob.glob("bin/*.x"): + install(filename, prefix.bin) + else: + make('install') diff --git a/var/spack/repos/builtin/packages/qhull/package.py b/var/spack/repos/builtin/packages/qhull/package.py index d5ec542ce6..884499fd36 100644 --- a/var/spack/repos/builtin/packages/qhull/package.py +++ b/var/spack/repos/builtin/packages/qhull/package.py @@ -18,12 +18,21 @@ class Qhull(CMakePackage): homepage = "http://www.qhull.org" + version('2020.1', sha256='1ac92a5538f61e297c72aebe4d4ffd731ceb3e6045d6d15faf1c212713798df4', + url="http://www.qhull.org/download/qhull-2020-src-8.0.0.tgz") + version('2019.1', sha256='2b7990558c363076261564f61b74db4d0d73b71869755108a469038c07dc43fb', + url="http://www.qhull.org/download/qhull-2019-src-7.3.2.tgz") version('2015.2', sha256='78b010925c3b577adc3d58278787d7df08f7c8fb02c3490e375eab91bb58a436', url="http://www.qhull.org/download/qhull-2015-src-7.2.0.tgz") - version('2012.1', sha256='a35ecaa610550b7f05c3ce373d89c30cf74b059a69880f03080c556daebcff88', url="http://www.qhull.org/download/qhull-2012.1-src.tgz") patch('qhull-unused-intel-17.02.patch', when='@2015.2') - depends_on('cmake@2.6:', type='build') + depends_on('cmake@3.0:', type='build') + + def flag_handler(self, name, flags): + # See https://github.com/qhull/qhull/issues/65 + if name == 'cxxflags' and self.version == Version('2020.1'): + flags.append(self.compiler.cxx11_flag) + return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py index 7e016846ab..17495dda39 100644 --- a/var/spack/repos/builtin/packages/qt/package.py +++ b/var/spack/repos/builtin/packages/qt/package.py @@ -158,6 +158,7 @@ class Qt(Package): # Non-macOS dependencies and special macOS constraints if MACOS_VERSION is None: depends_on("fontconfig", when='freetype=spack') + depends_on("libsm") depends_on("libx11") depends_on("libxcb") depends_on("libxkbcommon") @@ -177,6 +178,7 @@ class Qt(Package): # Mapping for compilers/systems in the QT 'mkspecs' compiler_mapping = {'intel': ('icc',), + 'apple-clang': ('clang-libc++', 'clang'), 'clang': ('clang-libc++', 'clang'), 'gcc': ('g++',)} platform_mapping = {'darwin': 'macx'} @@ -361,7 +363,6 @@ class Qt(Package): @property def common_config_args(self): # incomplete list is here http://doc.qt.io/qt-5/configure-options.html - openssl = self.spec['openssl'] config_args = [ '-prefix', self.prefix, '-v', @@ -387,6 +388,7 @@ class Qt(Package): config_args.append('-no-freetype') if '+ssl' in self.spec: + openssl = self.spec['openssl'] config_args.extend([ '-openssl-linked', openssl.libs.search_flags, diff --git a/var/spack/repos/builtin/packages/quicksilver/package.py b/var/spack/repos/builtin/packages/quicksilver/package.py index ceef9e1bfb..e39a82337d 100644 --- a/var/spack/repos/builtin/packages/quicksilver/package.py +++ b/var/spack/repos/builtin/packages/quicksilver/package.py @@ -14,12 +14,13 @@ class Quicksilver(MakefilePackage): tags = ['proxy-app'] homepage = "https://codesign.llnl.gov/quicksilver.php" - url = "https://github.com/LLNL/Quicksilver" + url = "https://github.com/LLNL/Quicksilver/tarball/V1.0" git = "https://github.com/LLNL/Quicksilver.git" maintainers = ['richards12'] version('master', branch='master') + version('1.0', sha256='83371603b169ec75e41fb358881b7bd498e83597cd251ff9e5c35769ef22c59a') variant('openmp', default=True, description='Build with OpenMP support') variant('mpi', default=True, description='Build with MPI support') diff --git a/var/spack/repos/builtin/packages/r-adegraphics/package.py b/var/spack/repos/builtin/packages/r-adegraphics/package.py new file mode 100644 index 0000000000..d007d6cb97 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-adegraphics/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 RAdegraphics(RPackage): + """adegraphics: An S4 Lattice-Based Package for the Representation of + Multivariate Data. + + Graphical functionalities for the representation of multivariate data. + It is a complete re-implementation of the functions available in the 'ade4' + package.""" + + homepage = "http://pbil.univ-lyon1.fr/ADE-4" + url = "https://cloud.r-project.org/src/contrib/adegraphics_1.0-15.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/adegraphics" + + version('1.0-15', sha256='87bbcd072e9a898955f5ede4315e82365086a50a2887bf5bd2e94bbb4d3f678a') + + depends_on('r@3.0.2:', type=('build', 'run')) + depends_on('r-ade4@1.7-13:', type=('build', 'run')) + depends_on('r-kernsmooth', type=('build', 'run')) + depends_on('r-lattice', type=('build', 'run')) + depends_on('r-latticeextra', type=('build', 'run')) + depends_on('r-rcolorbrewer', type=('build', 'run')) + depends_on('r-sp@1.1-1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-adephylo/package.py b/var/spack/repos/builtin/packages/r-adephylo/package.py new file mode 100644 index 0000000000..3527a2fb6f --- /dev/null +++ b/var/spack/repos/builtin/packages/r-adephylo/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 RAdephylo(RPackage): + """adephylo: Exploratory Analyses for the Phylogenetic Comparative Method. + + Multivariate tools to analyze comparative data, i.e. a phylogeny and + some traits measured for each taxa.""" + + homepage = "https://cloud.r-project.org/package=adephylo" + url = "https://cloud.r-project.org/src/contrib/adephylo_1.1-11.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/adephylo" + + version('1.1-11', sha256='154bf2645eac4493b85877933b9445442524ca4891aefe4e80c294c398cff61a') + + depends_on('r-ade4@1.7-10:', type=('build', 'run')) + depends_on('r-phylobase', type=('build', 'run')) + depends_on('r-ape', type=('build', 'run')) + depends_on('r-adegenet', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-adespatial/package.py b/var/spack/repos/builtin/packages/r-adespatial/package.py new file mode 100644 index 0000000000..aeaaae67f5 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-adespatial/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 RAdespatial(RPackage): + """adespatial: Multivariate Multiscale Spatial Analysis. + + Tools for the multiscale spatial analysis of multivariate data. Several + methods are based on the use of a spatial weighting matrix and its + eigenvector decomposition (Moran's Eigenvectors Maps, MEM). Several + approaches are described in the review Dray et al (2012) + <doi:10.1890/11-1183.1>.""" + + homepage = "https://cloud.r-project.org/package=adespatial" + url = "https://cloud.r-project.org/src/contrib/adespatial_0.3-8.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/adespatial" + + version('0.3-8', sha256='e3fd3209ce3f0a862a0794187e8c884f1697c87c96e569a2f51f252e00022906') + + depends_on('r-ade4@1.7-13:', type=('build', 'run')) + depends_on('r-adegraphics', type=('build', 'run')) + depends_on('r-adephylo', type=('build', 'run')) + depends_on('r-sp', type=('build', 'run')) + depends_on('r-spdep', type=('build', 'run')) + depends_on('r-lattice', type=('build', 'run')) + depends_on('r-mass', type=('build', 'run')) + depends_on('r-shiny', type=('build', 'run')) + depends_on('r-vegan', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-biocgenerics/package.py b/var/spack/repos/builtin/packages/r-biocgenerics/package.py index dc403c878e..2bee149fb8 100644 --- a/var/spack/repos/builtin/packages/r-biocgenerics/package.py +++ b/var/spack/repos/builtin/packages/r-biocgenerics/package.py @@ -14,6 +14,7 @@ class RBiocgenerics(RPackage): homepage = "https://bioconductor.org/packages/BiocGenerics" git = "https://git.bioconductor.org/packages/BiocGenerics.git" + version('0.34.0', commit='f7c2020') version('0.30.0', commit='fc7c3af4a5635a30988a062ed09332c13ca1d1a8') version('0.28.0', commit='041fc496504f2ab1d4d863fffb23372db214394b') version('0.26.0', commit='5b2a6df639e48c3cd53789e0b174aec9dda6b67d') diff --git a/var/spack/repos/builtin/packages/r-bsseq/package.py b/var/spack/repos/builtin/packages/r-bsseq/package.py new file mode 100644 index 0000000000..c753c549a0 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-bsseq/package.py @@ -0,0 +1,55 @@ +# 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 RBsseq(RPackage): + """A collection of tools for analyzing and visualizing bisulfite sequencing + data.""" + + homepage = "https://github.com/kasperdanielhansen/bsseq" + git = "https://git.bioconductor.org/packages/bsseq" + + version('1.24.4', commit='8fe7a03') + version('1.22.0', commit='d4f7301') + version('1.20.0', commit='07e398b') + + depends_on('r@3.5:', type=('build', 'run')) + + depends_on('r-biocgenerics', type=('build', 'run')) + + depends_on('r-genomicranges@1.29.14:', type=('build', 'run')) + depends_on('r-genomicranges@1.33.6:', when='@1.24.4:', type=('build', 'run')) + + depends_on('r-summarizedexperiment@1.9.18:', type=('build', 'run')) + depends_on('r-summarizedexperiment@1.17.4:', when='@1.24.4:', type=('build', 'run')) + + depends_on('r-iranges@2.11.16:', type=('build', 'run')) + depends_on('r-iranges@2.22.2:', when='@1.24.4:', type=('build', 'run')) + + depends_on('r-genomeinfodb', type=('build', 'run')) + depends_on('r-scales', type=('build', 'run')) + depends_on('r-biobase', type=('build', 'run')) + depends_on('r-locfit', type=('build', 'run')) + depends_on('r-gtools', type=('build', 'run')) + depends_on('r-data-table@1.11.8:', type=('build', 'run')) + + depends_on('r-s4vectors', type=('build', 'run')) + depends_on('r-s4vectors@0.23.11:', when='@1.22.0:', type=('build', 'run')) + depends_on('r-s4vectors@0.25.14:', when='@1.24.4', type=('build', 'run')) + + depends_on('r-r-utils@2.0.0:', type=('build', 'run')) + depends_on('r-delayedmatrixstats@1.5.2:', type=('build', 'run')) + depends_on('r-permute', type=('build', 'run')) + depends_on('r-limma', type=('build', 'run')) + depends_on('r-delayedarray@0.9.8:', type=('build', 'run')) + depends_on('r-rcpp', type=('build', 'run')) + depends_on('r-biocparallel', type=('build', 'run')) + depends_on('r-bsgenome', type=('build', 'run')) + depends_on('r-biostrings', type=('build', 'run')) + depends_on('r-hdf5array@1.11.9:', type=('build', 'run')) + depends_on('r-rhdf5', type=('build', 'run')) + depends_on('r-beachmat', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-countrycode/package.py b/var/spack/repos/builtin/packages/r-countrycode/package.py new file mode 100644 index 0000000000..b2b07ff2e4 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-countrycode/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 RCountrycode(RPackage): + """Countrycode standardizes country names, converts them into + ~40 different coding schemes, and assigns region descriptors.""" + + homepage = "https://vincentarelbundock.github.io/countrycode/" + url = "https://cloud.r-project.org/src/contrib/countrycode_1.2.0.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/countrycode" + + version('1.2.0', sha256='32c65702dcc33d512ff99f14c12f4e0c48fe7ed7c8aa2f0a64194576d129dd40') + + depends_on('r@2.10:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-data-table/package.py b/var/spack/repos/builtin/packages/r-data-table/package.py index b9a008eff0..87d5735541 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -16,6 +16,7 @@ class RDataTable(RPackage): url = "https://cloud.r-project.org/src/contrib/data.table_1.10.0.tar.gz" list_url = "https://cloud.r-project.org/src/contrib/Archive/data.table" + version('1.12.8', sha256='d3a75f3a355ff144cc20a476041617e21fcf2a9f79265fd9bbd4693f3671f9dc') version('1.12.2', sha256='db55c18f0d703a8bc1c806dd1f7551bb405cb867717f52ef9dd64405394d22f5') version('1.12.0', sha256='611b112123dbd4ebd5200770fcdfaaeaab622adeb2b290d36018d3092742e3f7') version('1.11.8', sha256='dc427465599cadd848b28a78e2fce3362867847b44148252054385999fe566d9') diff --git a/var/spack/repos/builtin/packages/r-devtools/package.py b/var/spack/repos/builtin/packages/r-devtools/package.py index 9b4c4a2332..280769399e 100644 --- a/var/spack/repos/builtin/packages/r-devtools/package.py +++ b/var/spack/repos/builtin/packages/r-devtools/package.py @@ -13,27 +13,50 @@ class RDevtools(RPackage): url = "https://cloud.r-project.org/src/contrib/devtools_1.12.0.tar.gz" list_url = "https://cloud.r-project.org/src/contrib/Archive/devtools" + version('2.3.0', sha256='4fc375c171335c67bd71df4e0b1b3dff2ae3aa17b3e0566b790ba0808b39dcd0') version('2.1.0', sha256='c1f75346a90adf0669b5508fe68cc78bd3b114c1303fa7d22bf90991edd9230d') version('2.0.2', sha256='99a2fa957068254b8ecdb3fc2d50e2950230910ea31c314fc0e7d934e4bd1709') version('1.12.0', sha256='8a3e2ca3988dffe29341e45a160bb588995eae43485d6a811a9ae4836d37afd4') version('1.11.1', sha256='51c876f9ddbfdf611f6ea0b06c0b46da8cefcb8cc98d60e06d576b61f0a06346') depends_on('r@3.0.2:', type=('build', 'run')) - depends_on('r-httr@0.4:', type=('build', 'run')) - depends_on('r-memoise@1.0.0:', type=('build', 'run')) - depends_on('r-whisker', when='@:1.9.9', type=('build', 'run')) - depends_on('r-digest', type=('build', 'run')) - depends_on('r-rstudioapi@0.7.0:', type=('build', 'run')) - depends_on('r-jsonlite', type=('build', 'run')) - depends_on('r-git2r@0.23.0:', type=('build', 'run')) - depends_on('r-withr', type=('build', 'run')) depends_on('r-usethis@1.5.0:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-usethis@1.6.0:', when='@2.3.0:', type=('build', 'run')) depends_on('r-callr', when='@2.0.0:', type=('build', 'run')) + depends_on('r-callr@3.4.3:', when='@2.3.0:', type=('build', 'run')) depends_on('r-cli', when='@2.0.0:', type=('build', 'run')) + depends_on('r-cli@2.0.2:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-covr@3.5.0:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-crayon@1.3.4:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-desc@1.2.0:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-dt@0.13:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-digest', type=('build', 'run')) + depends_on('r-digest@0.6.25:', when='@3.2.0:', type=('build', 'run')) + depends_on('r-ellipsis@0.3.0:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-glue@1.4.0:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-git2r@0.23.0:', type=('build', 'run')) + depends_on('r-git2r@0.26.1:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-httr@0.4:', type=('build', 'run')) + depends_on('r-httr@1.4.1:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-jsonlite', type=('build', 'run')) + depends_on('r-jsonlite@1.6.1:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-memoise@1.0.0:', type=('build', 'run')) + depends_on('r-memoise@1.1.0:', when='@2.3.0:', type=('build', 'run')) depends_on('r-pkgbuild@1.0.3:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-pkgbuild@1.0.6:', when='@2.3.0:', type=('build', 'run')) depends_on('r-pkgload@1.0.2:', when='@2.0.0:', type=('build', 'run')) depends_on('r-rcmdcheck@1.3.3:', when='@2.0.0:', type=('build', 'run')) depends_on('r-remotes@2.1.0:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-remotes@2.1.1:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-rlang@0.4.5:', when='@2.3.0:', type=('build', 'run')) depends_on('r-roxygen2@6.1.1:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-roxygen2@7.1.0:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-rstudioapi@0.7.0:', type=('build', 'run')) + depends_on('r-rstudioapi@0.11.0:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-rversions@2.0.1:', when='@2.3.0:', type=('build', 'run')) depends_on('r-sessioninfo@1.1.1:', when='@2.0.0:', type=('build', 'run')) depends_on('r-testthat@2.1.1:', when='@2.0.0:', type=('build', 'run')) + depends_on('r-testthat@2.3.2:', when='@2.3.0:', type=('build', 'run')) + depends_on('r-whisker', when='@:1.9.9', type=('build', 'run')) + depends_on('r-withr', type=('build', 'run')) + depends_on('r-withr@2.1.2:', when='@2.3.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-dorng/package.py b/var/spack/repos/builtin/packages/r-dorng/package.py index a20cd96356..5c4f0fbc78 100644 --- a/var/spack/repos/builtin/packages/r-dorng/package.py +++ b/var/spack/repos/builtin/packages/r-dorng/package.py @@ -9,11 +9,13 @@ from spack import * class RDorng(RPackage): """Provides functions to perform reproducible parallel foreach loops, using independent random streams as generated by L'Ecuyer's combined - multiple-recursive generator - [L'Ecuyer (1999), <doi:10.1287/opre.47.1.159>]. It enables to easily - convert standard %dopar% loops into fully reproducible loops, - independently of the number of workers, the task scheduling strategy, - or the chosen parallel environment and associated foreach backend.""" + multiple-recursive generator (L'Ecuyer (1999), + <doi:10.1287/opre.47.1.159>). + + It enables to easily convert standard %dopar% loops into fully + reproducible loops, independently of the number of workers, the task + scheduling strategy, or the chosen parallel environment and associated + foreach backend.""" homepage = "https://cloud.r-project.org/package=doRNG" url = "https://cloud.r-project.org/src/contrib/doRNG_1.6.6.tar.gz" diff --git a/var/spack/repos/builtin/packages/r-dss/package.py b/var/spack/repos/builtin/packages/r-dss/package.py new file mode 100644 index 0000000000..7d4f8f2318 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-dss/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 RDss(RPackage): + """Dispersion shrinkage for sequencing data. + + DSS is an R library performing differntial analysis for count-based + sequencing data. It detectes differentially expressed genes (DEGs) from + RNA-seq, and differentially methylated loci or regions (DML/DMRs) from + bisulfite sequencing (BS-seq). The core of DSS is a new dispersion + shrinkage method for estimating the dispersion parameter from Gamma-Poisson + or Beta-Binomial distributions.""" + + homepage = "http://bioconductor.org/packages/DSS/" + git = "https://git.bioconductor.org/packages/DSS" + + version('2.36.0', commit='841c7ed') + version('2.34.0', commit='f9819c7') + version('2.32.0', commit='ffb502d') + + depends_on('r@3.3:', type=('build', 'run')) + depends_on('r-biobase', type=('build', 'run')) + depends_on('r-bsseq', type=('build', 'run')) + depends_on('r-biocparallel', when='@2.36.0:', type=('build', 'run')) + depends_on('r-delayedarray', when='@2.36.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-glue/package.py b/var/spack/repos/builtin/packages/r-glue/package.py index 1472728e93..20371a9740 100644 --- a/var/spack/repos/builtin/packages/r-glue/package.py +++ b/var/spack/repos/builtin/packages/r-glue/package.py @@ -17,6 +17,7 @@ class RGlue(RPackage): url = "https://cloud.r-project.org/src/contrib/glue_1.2.0.tar.gz" list_url = "https://cloud.r-project.org/src/contrib/Archive/glue" + version('1.4.1', sha256='f8b687d35cacb5ee7fcada6e9c26ea20c04d0bdc9d37e919a03abd1137513bc8') version('1.4.0', sha256='ea6c409f7141754baa090deba96cff270a11b185452cf9e6fb69cb148a9069c1') version('1.3.1', sha256='4fc1f2899d71a634e1f0adb7942772feb5ac73223891abe30ea9bd91d3633ea8') version('1.3.0', sha256='789e5a44c3635c3d3db26666e635e88adcf61cd02b75465125d95d7a12291cee') diff --git a/var/spack/repos/builtin/packages/r-gsodr/package.py b/var/spack/repos/builtin/packages/r-gsodr/package.py new file mode 100644 index 0000000000..8f1fa82e4d --- /dev/null +++ b/var/spack/repos/builtin/packages/r-gsodr/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 RGsodr(RPackage): + """A Global Surface Summary of the Day (GSOD) Weather Data Client for R""" + + homepage = "https://docs.ropensci.org/GSODR/" + url = "https://cloud.r-project.org/src/contrib/GSODR_2.1.1.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/GSODR" + + version('2.1.1', sha256='dba732e5bd1e367b9d710e6b8924f0c02fa4546202f049124dba02bc2e3329f5') + + depends_on('r@3.5.0:', type=('build', 'run')) + depends_on('r-countrycode', type=('build', 'run')) + depends_on('r-curl', type=('build', 'run')) + depends_on('r-data-table@1.11.6:', type=('build', 'run')) + depends_on('r-future-apply', type=('build', 'run')) + depends_on('r-httr', type=('build', 'run')) + depends_on('r-r-utils', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-hh/package.py b/var/spack/repos/builtin/packages/r-hh/package.py new file mode 100644 index 0000000000..1f455fcac1 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-hh/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 RHh(RPackage): + """HH: Statistical Analysis and Data Display: Heiberger and Holland. + + Support software for Statistical Analysis and Data Display (Second + Edition, Springer, ISBN 978-1-4939-2121-8, 2015) and (First Edition, + Springer, ISBN 0-387-40270-5, 2004) by Richard M. Heiberger and Burt + Holland. This contemporary presentation of statistical methods features + extensive use of graphical displays for exploring data and for displaying + the analysis. The second edition includes redesigned graphics and + additional chapters. The authors emphasize how to construct and interpret + graphs, discuss principles of graphical design, and show how accompanying + traditional tabular results are used to confirm the visual impressions + derived directly from the graphs. Many of the graphical formats are novel + and appear here for the first time in print. All chapters have exercises. + All functions introduced in the book are in the package. R code for all + examples, both graphs and tables, in the book is included in the scripts + directory of the package.""" + + homepage = "https://cloud.r-project.org/package=HH" + url = "https://cloud.r-project.org/src/contrib/HH_3.1-40.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/HH" + + version('3.1-40', sha256='795924d900a98ae367e6697b2c951c3b4910a54931aebcad5024eda083d4a8a2') + + depends_on('r@3.0.2:', type=('build', 'run')) + depends_on('r-lattice', type=('build', 'run')) + depends_on('r-latticeextra', type=('build', 'run')) + depends_on('r-multcomp', type=('build', 'run')) + depends_on('r-gridextra@2.0.0:', type=('build', 'run')) + depends_on('r-reshape2', type=('build', 'run')) + depends_on('r-leaps', type=('build', 'run')) + depends_on('r-vcd', type=('build', 'run')) + depends_on('r-colorspace', type=('build', 'run')) + depends_on('r-rcolorbrewer', type=('build', 'run')) + depends_on('r-shiny@0.13.1:', type=('build', 'run')) + depends_on('r-hmisc', type=('build', 'run')) + depends_on('r-abind', type=('build', 'run')) + depends_on('r-rmpfr@0.6.0:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-iranges/package.py b/var/spack/repos/builtin/packages/r-iranges/package.py index 5cf6493342..581d613875 100644 --- a/var/spack/repos/builtin/packages/r-iranges/package.py +++ b/var/spack/repos/builtin/packages/r-iranges/package.py @@ -19,6 +19,7 @@ class RIranges(RPackage): homepage = "https://bioconductor.org/packages/IRanges" git = "https://git.bioconductor.org/packages/IRanges.git" + version('2.22.2', commit='8c5e991') version('2.18.3', commit='c98a7ba074e72f2e5ec98252dffe9d3392711972') version('2.16.0', commit='26834c6868d7c279dd8ac1bb9daa16e6fef273c2') version('2.14.12', commit='00af02756c14771a23df9efcf379409ab6eb3041') @@ -38,3 +39,5 @@ class RIranges(RPackage): depends_on('r-s4vectors@0.19.11:', when='@2.16.0:', type=('build', 'run')) depends_on('r-s4vectors@0.21.9:', when='@2.18.3:', type=('build', 'run')) + + depends_on('r-s4vectors@0.25.14:', when='@2.22.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-phylobase/package.py b/var/spack/repos/builtin/packages/r-phylobase/package.py new file mode 100644 index 0000000000..7cfe791b3b --- /dev/null +++ b/var/spack/repos/builtin/packages/r-phylobase/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 RPhylobase(RPackage): + """phylobase: Base Package for Phylogenetic Structures and Comparative + Data. + + Provides a base S4 class for comparative methods, incorporating one or + more trees and trait data.""" + + homepage = "https://github.com/fmichonneau/phylobase" + url = "https://cloud.r-project.org/src/contrib/phylobase_0.8.10.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/phylobase" + + version('0.8.10', sha256='5a44380ff49bab333a56f6f96157324ade8afb4af0730e013194c4badb0bf94b') + + depends_on('r-ade4', type=('build', 'run')) + depends_on('r-ape@3.0:', type=('build', 'run')) + depends_on('r-rcpp@0.11.0:', type=('build', 'run')) + depends_on('r-rncl@0.6.0:', type=('build', 'run')) + depends_on('r-rnexml', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rcppparallel/asclang.patch b/var/spack/repos/builtin/packages/r-rcppparallel/asclang.patch new file mode 100644 index 0000000000..02718a152a --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rcppparallel/asclang.patch @@ -0,0 +1,12 @@ +diff -u -r -N a/src/Makevars.in b/src/Makevars.in +--- a/src/Makevars.in 2020-08-06 09:31:48.000000000 +0900 ++++ b/src/Makevars.in 2020-08-06 09:34:01.000000000 +0900 +@@ -87,6 +87,8 @@ + cd tbb/src; \ + if [ -n "$(shell echo $(CC) | grep clang)" ]; then \ + $(MAKE_CMD) stdver=@STDVER@ compiler=clang $(MAKE_ARGS); \ ++ elif [ -n "$(shell echo $(CC) | grep fcc)" ]; then \ ++ $(MAKE_CMD) stdver=@STDVER@ compiler=clang $(MAKE_ARGS); \ + elif [ -n "$(shell echo $(CC) | grep gcc)" ]; then \ + $(MAKE_CMD) stdver=@STDVER@ compiler=gcc $(MAKE_ARGS); \ + else \ diff --git a/var/spack/repos/builtin/packages/r-rcppparallel/package.py b/var/spack/repos/builtin/packages/r-rcppparallel/package.py index 0e172ca491..4f4459c990 100644 --- a/var/spack/repos/builtin/packages/r-rcppparallel/package.py +++ b/var/spack/repos/builtin/packages/r-rcppparallel/package.py @@ -20,3 +20,5 @@ class RRcppparallel(RPackage): depends_on('r@3.0.2:', type=('build', 'run')) depends_on('gmake', type='build') + + patch('asclang.patch', when='%fj') diff --git a/var/spack/repos/builtin/packages/r-rncl/package.py b/var/spack/repos/builtin/packages/r-rncl/package.py new file mode 100644 index 0000000000..4501e1c2f3 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rncl/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 RRncl(RPackage): + """rncl: An Interface to the Nexus Class Library. + + An interface to the Nexus Class Library which allows parsing of NEXUS, + Newick and other phylogenetic tree file formats. It provides elements of + the file that can be used to build phylogenetic objects such as ape's + 'phylo' or phylobase's 'phylo4(d)'. This functionality is demonstrated with + 'read_newick_phylo()' and 'read_nexus_phylo()'.""" + + homepage = "https://github.com/fmichonneau/rncl" + url = "https://cloud.r-project.org/src/contrib/rncl_0.8.4.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/rncl" + + version('0.8.4', sha256='6b19d0dd9bb08ecf99766be5ad684bcd1894d1cd9291230bdd709dbd3396496b') + + depends_on('r@3.1.1:', type=('build', 'run')) + depends_on('r-rcpp@0.11.0:', type=('build', 'run')) + depends_on('r-progress@1.1.2:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-rnexml/package.py b/var/spack/repos/builtin/packages/r-rnexml/package.py new file mode 100644 index 0000000000..bffab45a28 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rnexml/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 RRnexml(RPackage): + """RNeXML: Semantically Rich I/O for the 'NeXML' Format. + + Provides access to phyloinformatic data in 'NeXML' format. The package + should add new functionality to R such as the possibility to manipulate + 'NeXML' objects in more various and refined way and compatibility with + 'ape' objects.""" + + homepage = "https://github.com/ropensci/RNeXML" + url = "https://cloud.r-project.org/src/contrib/RNeXML_2.4.5.tar.gz" + list_url = "https://cloud.r-project.org/src/contrib/Archive/RNeXML" + + version('2.4.5', sha256='2b667ecb6400e4c0c125ca73a98cde81330cde3a85b764261f77159e702754f3') + + depends_on('r@3.0.0:', type=('build', 'run')) + depends_on('r-ape@3.1:', type=('build', 'run')) + depends_on('r-xml@3.95:', type=('build', 'run')) + depends_on('r-plyr@1.8:', type=('build', 'run')) + depends_on('r-reshape2@1.2.2:', type=('build', 'run')) + depends_on('r-httr@0.3:', type=('build', 'run')) + depends_on('r-uuid@0.1-1:', type=('build', 'run')) + depends_on('r-dplyr@0.5.0:', type=('build', 'run')) + depends_on('r-lazyeval@0.1.0:', type=('build', 'run')) + depends_on('r-tidyr@0.3.1:', type=('build', 'run')) + depends_on('r-stringr@1.0:', type=('build', 'run')) + depends_on('r-stringi', type=('build', 'run')) + depends_on('r-xml2', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-s4vectors/package.py b/var/spack/repos/builtin/packages/r-s4vectors/package.py index 132218b109..909b33bb2e 100644 --- a/var/spack/repos/builtin/packages/r-s4vectors/package.py +++ b/var/spack/repos/builtin/packages/r-s4vectors/package.py @@ -21,6 +21,7 @@ class RS4vectors(RPackage): homepage = "https://bioconductor.org/packages/S4Vectors" git = "https://git.bioconductor.org/packages/S4Vectors.git" + version('0.26.1', commit='935769c') version('0.22.1', commit='d25e517b48ca4184a4c2ee1f8223c148a55a8b8a') version('0.20.1', commit='1878b2909086941e556c5ea953c6fd86aebe9b02') version('0.18.3', commit='d6804f94ad3663828440914920ac933b934aeff1') @@ -30,4 +31,5 @@ class RS4vectors(RPackage): depends_on('r@3.3.0:', type=('build', 'run')) depends_on('r-biocgenerics@0.21.1:', type=('build', 'run')) - depends_on('r-biocgenerics@0.23.3:', when='@0.16.0:', type=('build', 'run')) + depends_on('r-biocgenerics@0.23.3:', when='@0.16.0:0.22.1', type=('build', 'run')) + depends_on('r-biocgenerics@0.31.1:', when='@0.26.1:', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py b/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py index 2d4ffdf571..5834c170da 100644 --- a/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py +++ b/var/spack/repos/builtin/packages/r-summarizedexperiment/package.py @@ -17,6 +17,7 @@ class RSummarizedexperiment(RPackage): homepage = "https://bioconductor.org/packages/SummarizedExperiment" git = "https://git.bioconductor.org/packages/SummarizedExperiment.git" + version('1.18.2', commit='e22fafe') version('1.14.1', commit='2c68d99e11c7345e5ed388370822ea48395c64a4') version('1.12.0', commit='5f8416864636add121ec1d6737ebb89a42227fd7') version('1.10.1', commit='7ad2e991c8285bfc4b2e15b29d94cc86d07f8f2b') diff --git a/var/spack/repos/builtin/packages/r-usethis/package.py b/var/spack/repos/builtin/packages/r-usethis/package.py index e82085b541..43567532f4 100644 --- a/var/spack/repos/builtin/packages/r-usethis/package.py +++ b/var/spack/repos/builtin/packages/r-usethis/package.py @@ -16,20 +16,25 @@ class RUsethis(RPackage): url = "https://cloud.r-project.org/src/contrib/usethis_1.5.1.tar.gz" list_url = "https://cloud.r-project.org/src/contrib/Archive/usethis" + version('1.6.1', sha256='60339059a97ed07dea7f8908b828b5bb42e0fd0b471165c061bc9660b0d59d6f') version('1.5.1', sha256='9e3920a04b0df82adf59eef2c1b2b4d835c4a757a51b3c163b8fc619172f561d') depends_on('r@3.2:', type=('build', 'run')) depends_on('r-clipr@0.3.0:', type=('build', 'run')) - depends_on('r-clisymbols', type=('build', 'run')) + depends_on('r-clisymbols', when='@:1.5', type=('build', 'run')) + depends_on('r-cli', when='@1.6.1:', type=('build', 'run')) depends_on('r-crayon', type=('build', 'run')) depends_on('r-curl@2.7:', type=('build', 'run')) depends_on('r-desc', type=('build', 'run')) depends_on('r-fs@1.3.0:', type=('build', 'run')) depends_on('r-gh', type=('build', 'run')) + depends_on('r-gh@1.1.0', when='@1.6.1:', type=('build', 'run')) depends_on('r-git2r@0.23:', type=('build', 'run')) depends_on('r-glue@1.3.0:', type=('build', 'run')) depends_on('r-purrr', type=('build', 'run')) + depends_on('r-rematch2', when='@1.6.1:', type=('build', 'run')) depends_on('r-rlang', type=('build', 'run')) + depends_on('r-rlang@0.4.3', when='@1.6.1:', type=('build', 'run')) depends_on('r-rprojroot@1.2:', type=('build', 'run')) depends_on('r-rstudioapi', type=('build', 'run')) depends_on('r-whisker', type=('build', 'run')) diff --git a/var/spack/repos/builtin/packages/raja/package.py b/var/spack/repos/builtin/packages/raja/package.py index b7a6218056..0f0df14282 100644 --- a/var/spack/repos/builtin/packages/raja/package.py +++ b/var/spack/repos/builtin/packages/raja/package.py @@ -13,7 +13,7 @@ class Raja(CMakePackage, CudaPackage): git = "https://github.com/LLNL/RAJA.git" version('develop', branch='develop', submodules='True') - version('main', branch='main', submodules='True') + version('master', branch='main', submodules='True') version('0.11.0', tag='v0.11.0', submodules="True") version('0.10.1', tag='v0.10.1', submodules="True") version('0.10.0', tag='v0.10.0', submodules="True") @@ -29,6 +29,7 @@ class Raja(CMakePackage, CudaPackage): version('0.4.0', tag='v0.4.0', submodules="True") variant('openmp', default=True, description='Build OpenMP backend') + variant('shared', default=True, description='Build Shared Libs') depends_on('cmake@3.8:', type='build') depends_on('cmake@3.9:', when='+cuda', type='build') @@ -38,16 +39,26 @@ class Raja(CMakePackage, CudaPackage): options = [] options.append('-DENABLE_OPENMP={0}'.format( - 'On' if '+openmp' in spec else 'Off')) + 'ON' if '+openmp' in spec else 'Off')) if '+cuda' in spec: options.extend([ - '-DENABLE_CUDA=On', + '-DENABLE_CUDA=ON', '-DCUDA_TOOLKIT_ROOT_DIR=%s' % (spec['cuda'].prefix)]) if not spec.satisfies('cuda_arch=none'): cuda_arch = spec.variants['cuda_arch'].value options.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch[0])) + flag = '-arch sm_{0}'.format(cuda_arch[0]) + options.append('-DCMAKE_CUDA_FLAGS:STRING={0}'.format(flag)) + else: + options.append('-DENABLE_CUDA=OFF') + + options.append('-DBUILD_SHARED_LIBS={0}'.format( + 'ON' if '+shared' in spec else 'OFF')) + + options.append('-DENABLE_CHAI={0}'.format( + 'ON' if '+chai' in spec else 'OFF')) # Work around spack adding -march=ppc64le to SPACK_TARGET_ARGS which # is used by the spack compiler wrapper. This can go away when BLT @@ -57,4 +68,8 @@ class Raja(CMakePackage, CudaPackage): else: options.append('-DENABLE_TESTS=ON') + if '+chai' in spec: + options.extend([ + '-DENABLE_CHAI=ON']) + return options diff --git a/var/spack/repos/builtin/packages/random123/package.py b/var/spack/repos/builtin/packages/random123/package.py index 48df03fee8..bc958abe38 100644 --- a/var/spack/repos/builtin/packages/random123/package.py +++ b/var/spack/repos/builtin/packages/random123/package.py @@ -15,15 +15,20 @@ class Random123(Package): homepage = "http://www.deshawresearch.com/resources_random123.html" url = "http://www.deshawresearch.com/downloads/download_random123.cgi/Random123-1.09.tar.gz" + version('1.13.2', sha256='74a1c6bb66b2684f03d3b1008642a2e9141909103cd09f428d2c60bcaa51cb40') + version('1.10', sha256='4afdfba4b941e33e23b5de9b7907b7e3ac326cb4d34b5fa8225edd00b5fe053b') version('1.09', sha256='cf6abf623061bcf3d17e5e49bf3f3f0ae400ee89ae2e97c8cb8dcb918b1ebabe') patch('ibmxl.patch', when='@1.09') patch('arm-gcc.patch', when='@1.09') + patch('v1132-xl161.patch', when='@1.13.2') def install(self, spec, prefix): # Random123 doesn't have a build system. # We have to do our own install here. install_tree('include', prefix.include) install('./LICENSE', "%s" % prefix) - # used by some packages, e.g. quinoa - install('examples/uniform.hpp', join_path(prefix.include, 'Random123')) + if spec.satisfies('@1.09'): + # used by some packages, e.g. quinoa + install('examples/uniform.hpp', + join_path(prefix.include, 'Random123')) diff --git a/var/spack/repos/builtin/packages/random123/v1132-xl161.patch b/var/spack/repos/builtin/packages/random123/v1132-xl161.patch new file mode 100644 index 0000000000..398de3cc2a --- /dev/null +++ b/var/spack/repos/builtin/packages/random123/v1132-xl161.patch @@ -0,0 +1,13 @@ +diff --git a/include/Random123/features/compilerfeatures.h b/include/Random123/features/compilerfeatures.h +index 2341a7a..3c5d999 100644 +--- a/include/Random123/features/compilerfeatures.h ++++ b/include/Random123/features/compilerfeatures.h +@@ -206,7 +206,7 @@ added to each of the *features.h files, AND to examples/ut_features.cpp. + #include "nvccfeatures.h" + #elif defined(__ICC) + #include "iccfeatures.h" +-#elif defined(__xlC__) ++#elif defined(__xlC__) || defined(__ibmxl__) + #include "xlcfeatures.h" + #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) + #include "sunprofeatures.h" diff --git a/var/spack/repos/builtin/packages/reditools/REDItoolDenovo.py.patch b/var/spack/repos/builtin/packages/reditools/REDItoolDenovo.py.patch new file mode 100644 index 0000000000..a88358829c --- /dev/null +++ b/var/spack/repos/builtin/packages/reditools/REDItoolDenovo.py.patch @@ -0,0 +1,11 @@ +--- a/main/REDItoolDenovo.py 2020-07-16 17:35:46.008030346 -0500 ++++ b/main/REDItoolDenovo.py 2020-07-16 17:38:39.700035490 -0500 +@@ -768,7 +768,7 @@ + for j in ridxinfo.split('\n'): #MOD + l=(j.strip()).split('\t') + if l[0] in ['*', '']: continue #MOD +- if int(l[2])+int(l[3]) > 0: rrefs[l[0]]=int(l[1]) ++ if int(l[2])+int(l[3]) > 0: rrefs[l[0]]=int(l[1]) + frefs=[] + fidxinfo=open(fastafile+'.fai') + for j in fidxinfo: diff --git a/var/spack/repos/builtin/packages/reditools/interpreter.patch b/var/spack/repos/builtin/packages/reditools/interpreter.patch new file mode 100644 index 0000000000..2e3f171e73 --- /dev/null +++ b/var/spack/repos/builtin/packages/reditools/interpreter.patch @@ -0,0 +1,41 @@ +diff -ru a/accessory/get_DE_events.py b/accessory/get_DE_events.py +--- a/accessory/get_DE_events.py 2020-07-16 17:18:47.012982992 -0500 ++++ b/accessory/get_DE_events.py 2020-07-16 17:19:47.531986703 -0500 +@@ -1,3 +1,4 @@ ++#!/usr/bin/env python + #################################### REDI OUT TABLE ######################################################## + #Region Position Reference Strand Coverage-q30 MeanQ BaseCount[A,C,G,T] # + #AllSubs Frequency gCoverage-q30 gMeanQ gBaseCount[A,C,G,T] gAllSubs gFrequency # +diff -ru a/accessory/readPsl.py b/accessory/readPsl.py +--- a/accessory/readPsl.py 2020-07-16 17:18:47.012982992 -0500 ++++ b/accessory/readPsl.py 2020-07-16 17:20:02.829987622 -0500 +@@ -1,4 +1,4 @@ +- ++#!/usr/bin/env python + import sys, os + import math + +diff -ru a/accessory/subCount2.py b/accessory/subCount2.py +--- a/accessory/subCount2.py 2020-07-16 17:18:47.012982992 -0500 ++++ b/accessory/subCount2.py 2020-07-16 17:20:22.650988801 -0500 +@@ -1,3 +1,4 @@ ++#!/usr/bin/env python + import sys + + try: +diff -ru a/accessory/subCount.py b/accessory/subCount.py +--- a/accessory/subCount.py 2020-07-16 17:18:47.012982992 -0500 ++++ b/accessory/subCount.py 2020-07-16 17:20:35.502989558 -0500 +@@ -1,3 +1,4 @@ ++#!/usr/bin/env python + import sys + + try: +diff -ru a/main/REDItoolDenovo.py b/main/REDItoolDenovo.py +--- a/main/REDItoolDenovo.py 2020-07-16 17:18:47.012982992 -0500 ++++ b/main/REDItoolDenovo.py 2020-07-16 17:21:01.018991045 -0500 +@@ -1,3 +1,4 @@ ++#!/usr/bin/env python + # coding=utf-8 + # Copyright (c) 2013-2014 Ernesto Picardi <ernesto.picardi@uniba.it> + # diff --git a/var/spack/repos/builtin/packages/reditools/package.py b/var/spack/repos/builtin/packages/reditools/package.py new file mode 100644 index 0000000000..7dd0197a51 --- /dev/null +++ b/var/spack/repos/builtin/packages/reditools/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 Reditools(PythonPackage): + """REDItools: python scripts for RNA editing detection by RNA-Seq data. + + REDItools are simple python scripts conceived to facilitate the + investigation of RNA editing at large-scale and devoted to research groups + that would to explore such phenomenon in own data but don't have sufficient + bioinformatics skills. They work on main operating systems (although + unix/linux-based OS are preferred), can handle reads from whatever platform + in the standard BAM format and implement a variety of filters.""" + + homepage = "https://github.com/BioinfoUNIBA/REDItools" + git = "https://github.com/BioinfoUNIBA/REDItools.git" + + version('1.3_2020-03-20', commit='cf47f3d54f324aeb9650bcf8bfacf5a967762a55') + + depends_on('py-pysam', type=('build', 'run')) + depends_on('py-fisher', type=('build', 'run')) + depends_on('blat', type='run') + depends_on('tabix', type='run') + + patch('REDItoolDenovo.py.patch') + patch('interpreter.patch') + patch('setup.py.patch') + patch('python2to3.patch', when='^python@3:') diff --git a/var/spack/repos/builtin/packages/reditools/python2to3.patch b/var/spack/repos/builtin/packages/reditools/python2to3.patch new file mode 100644 index 0000000000..94937d175d --- /dev/null +++ b/var/spack/repos/builtin/packages/reditools/python2to3.patch @@ -0,0 +1,926 @@ +diff -ru a/accessory/AnnotateTable.py b/accessory/AnnotateTable.py +--- a/accessory/AnnotateTable.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/AnnotateTable.py 2020-07-16 16:17:22.159013630 -0500 +@@ -28,7 +28,7 @@ + sys.stderr.write('Pysam version used: %s\n' %(pysamVersion)) + + def usage(): +- print """ ++ print(""" + USAGE: python AnnotateTable.py [options] + Options: + -a Sorted Annotation file +@@ -44,12 +44,12 @@ + -C Columns with base distribution [7,12] (in combination with -S) + -o Save lines to a file + -h Print this help +-""" ++""") + + try: + opts, args = getopt.getopt(sys.argv[1:], 'i:a:o:hs:c:n:SC:uk:r:',["help"]) +-except getopt.GetoptError, err: +- print str(err) ++except getopt.GetoptError as err: ++ print(str(err)) + usage() + sys.exit() + +@@ -101,7 +101,7 @@ + a={'A':'T','T':'A','C':'G','G':'C'} + ss='' + for i in s.upper(): +- if a.has_key(i): ss+=a[i] ++ if i in a: ss+=a[i] + elif i==' ': ss+=' ' + elif i=='-': ss+='-' + else: ss+='N' +@@ -125,23 +125,23 @@ + anns='+' + for i in res: + if i[3]=='+': +- if d['+'].has_key(i[1]): ++ if i[1] in d['+']: + if i[0] not in d['+'][i[1]][0]: d['+'][i[1]][0]=d['+'][i[1]][0]+','+i[0] + if i[2]+'-'+i[0] not in d['+'][i[1]][1]: d['+'][i[1]][1]=d['+'][i[1]][1]+','+i[2]+'-'+i[0] + else: + d['+'][i[1]]=[i[0],i[2]+'-'+i[0]] + elif i[3]=='-': +- if d['-'].has_key(i[1]): ++ if i[1] in d['-']: + if i[0] not in d['-'][i[1]][0]: d['-'][i[1]][0]=d['-'][i[1]][0]+','+i[0] + if i[2]+'-'+i[0] not in d['-'][i[1]][1]: d['-'][i[1]][1]=d['-'][i[1]][1]+','+i[2]+'-'+i[0] + else: + d['-'][i[1]]=[i[0],i[2]+'-'+i[0]] +- gip='$'.join(d['+'].keys()) +- featp='$'.join([d['+'][x][0] for x in d['+'].keys()]) +- tip='$'.join([d['+'][x][1] for x in d['+'].keys()]) +- gim='$'.join(d['-'].keys()) +- featm='$'.join([d['-'][x][0] for x in d['-'].keys()]) +- tim='$'.join([d['-'][x][1] for x in d['-'].keys()]) ++ gip='$'.join(list(d['+'].keys())) ++ featp='$'.join([d['+'][x][0] for x in list(d['+'].keys())]) ++ tip='$'.join([d['+'][x][1] for x in list(d['+'].keys())]) ++ gim='$'.join(list(d['-'].keys())) ++ featm='$'.join([d['-'][x][0] for x in list(d['-'].keys())]) ++ tim='$'.join([d['-'][x][1] for x in list(d['-'].keys())]) + p=[featp,gip,tip] + m=[featm,gim,tim] + pm=[(featp+'&'+featm).strip('&'),(gip+'&'+gim).strip('&'),(tip+'&'+tim).strip('&')] +@@ -187,7 +187,7 @@ + elif strand=='-': res=ann[1] + else: res=ann[2] + for i in addc: +- print prinfo[i]+ res[i] ++ print(prinfo[i]+ res[i]) + except: sys.exit('Error: not correct position.') + + if af: +@@ -200,7 +200,7 @@ + h=[i.strip()] + for k in addc: h.append(hinfo[k]) + if save: o.write('\t'.join(h)+'\n') +- else: print '\t'.join(h) ++ else: print('\t'.join(h)) + continue + if i.startswith(skip): continue + l=(i.strip()).split('\t') +@@ -230,7 +230,7 @@ + else: res=ann[2] + for j in addc: l.append(res[j]) + if save: o.write('\t'.join(l)+'\n') +- else: print '\t'.join(l) ++ else: print('\t'.join(l)) + tabix.close() + if save: + o.close() +diff -ru a/accessory/FilterTable.py b/accessory/FilterTable.py +--- a/accessory/FilterTable.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/FilterTable.py 2020-07-16 16:17:22.209013627 -0500 +@@ -30,7 +30,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python FilterTable.py [options] + Options: + -i Table file +@@ -43,12 +43,12 @@ + -p Print simple statistics + -h Print this help + +-""" ++""") + + try: + opts, args = getopt.getopt(sys.argv[1:], 'i:o:f:hs:F:S:Ep',["help"]) +-except getopt.GetoptError, err: +- print str(err) ++except getopt.GetoptError as err: ++ print(str(err)) + usage() + sys.exit() + +diff -ru a/accessory/get_DE_events.py b/accessory/get_DE_events.py +--- a/accessory/get_DE_events.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/get_DE_events.py 2020-07-16 16:17:22.646013607 -0500 +@@ -104,7 +104,7 @@ + #WARNING those are np arrays. + + for i in range(0,edit_level_table.shape[0]): +- print i #keep track of progress ++ print(i) #keep track of progress + disease_edit_row = edit_level_table.loc[i, disease_people] + control_edit_row = edit_level_table.loc[i, control_people] + disease_cov_row = cov_table.loc[i, disease_people] +@@ -206,7 +206,7 @@ + #write the full_table to output + full_table.to_csv(output_file, sep='\t', index=False) + +- print "job completed\n" ++ print("job completed\n") + + + +@@ -225,12 +225,12 @@ + + def Sample_percentage(row): + """Percentage of samples from each type""" +- percentage = (len(filter(lambda x: x!= '-', row))/float(len(row)))*100 ++ percentage = (len([x for x in row if x!= '-'])/float(len(row)))*100 + return round(percentage) + + def Sample_count(row): + """Number of samples from each type""" +- count = len(filter(lambda x: x!= '-', row)) ++ count = len([x for x in row if x!= '-']) + return count + + def get_bh(pvalue,siglevel): +@@ -269,7 +269,7 @@ + if(row_a[-1] != '-' and row_a[-1] != 0.0 and row_a[-1] <= 0.05): + row = row[0].split('_') + row[2:] + row.insert(2, 'A.to.G') +- print '\t'.join(map(str,row)) ++ print('\t'.join(map(str,row))) + + def tuple_replace(i): + if type(i) == tuple: +@@ -292,11 +292,11 @@ + with open(samples_informations_file, 'r') as f: + for line in f: + if line.startswith('SRR'): +- line = map(str.strip, line.split(',')) ++ line = list(map(str.strip, line.split(','))) + sample_informations.setdefault(line[0], line[1]) + + +-cwd = filter(os.path.isdir, os.listdir(os.getcwd())) ++cwd = list(filter(os.path.isdir, os.listdir(os.getcwd()))) + all_available_sites = [] + sample_edited_sites = {} + for directory in cwd: +@@ -306,7 +306,7 @@ + with open(table,'r') as a: + for line in a: + if line.startswith('chr'): +- s = map(str.strip, line.split("\t")) ++ s = list(map(str.strip, line.split("\t"))) + if s[7] == 'AG': + site, freq, coverage = s[0] + "_" + s[1], s[8], s[4] + freq_gnum_cov = '%s^%s^%s' %(s[8],eval(s[6])[2],s[4]) +@@ -314,14 +314,14 @@ + if (int(coverage) >= min_coverage) and (float(freq) >= min_edit_frequency): + sample_edited_sites.setdefault((directory, site), []).append((freq, freq_gnum_cov)) + +-table_columns = map(lambda x: x + '_' + sample_informations[x], sorted(sample_informations.keys())) ++table_columns = [x + '_' + sample_informations[x] for x in sorted(sample_informations.keys())] + + disease = [i for i in table_columns if i.upper().find('DIS') != -1] + controls = [i for i in table_columns if i.upper().find('CTRL') != -1] + + if enable_linear_model: + outtable='' +- header = ['chromosome', 'position', 'type_editing'] + map(remove_underscore, controls) + map(remove_underscore, disease) ++ header = ['chromosome', 'position', 'type_editing'] + list(map(remove_underscore, controls)) + list(map(remove_underscore, disease)) + outtable += '\t'.join(header) + outtable += '\n' + #print '\t'.join(header) +@@ -329,13 +329,13 @@ + row = [chrom] + for col in header[2:]:#header.index('[num_controls/num_disease]')]: + row.append(sample_edited_sites.get((col.split('_')[0],chrom), ['-'])[0]) +- ctrls = zip(*(zip(controls,row[1:])))[1] +- dss = zip(*(zip(disease,row[len(ctrls)+1:])))[1] +- ctrls_freq = map(tuple_replace, ctrls) +- dss_freq = map(tuple_replace, dss) ++ ctrls = list(zip(*(list(zip(controls,row[1:])))))[1] ++ dss = list(zip(*(list(zip(disease,row[len(ctrls)+1:])))))[1] ++ ctrls_freq = list(map(tuple_replace, ctrls)) ++ dss_freq = list(map(tuple_replace, dss)) + row.append(str([Sample_count(ctrls), Sample_count(dss)])) + +- row_b = map(tuple_replace_bis, row) ++ row_b = list(map(tuple_replace_bis, row)) + row_b = row_b[0].split('_') + row_b[2:] + row_b.insert(2, 'A.to.G') + final_list = row_b[:-1] +@@ -359,20 +359,20 @@ + if pvalue_correction == 2: + header += ['pvalue BH corrected'] + +- print '\t'.join(header) ++ print('\t'.join(header)) + + for chrom in sorted(all_available_sites, key = lambda x: Set_Chr_Nr(x)): + row = [chrom] + for col in header[3:header.index('[num_controls/num_disease]')]: + row.append(sample_edited_sites.get((col.split('_')[0],chrom), ['-'])[0]) +- ctrls = zip(*(zip(controls,row[1:])))[1] +- dss = zip(*(zip(disease,row[len(ctrls)+1:])))[1] +- ctrls_freq = map(tuple_replace, ctrls) +- dss_freq = map(tuple_replace, dss) ++ ctrls = list(zip(*(list(zip(controls,row[1:])))))[1] ++ dss = list(zip(*(list(zip(disease,row[len(ctrls)+1:])))))[1] ++ ctrls_freq = list(map(tuple_replace, ctrls)) ++ dss_freq = list(map(tuple_replace, dss)) + row.append(str([Sample_count(ctrls), Sample_count(dss)])) + if (Sample_percentage(ctrls) >= min_sample_testing) and (Sample_percentage(dss) >= min_sample_testing): +- ctrls_mean = sum(map(float, filter(lambda x: x!= '-', ctrls_freq)))/len(filter(lambda x: x!= '-', ctrls_freq)) +- dss_mean = sum(map(float, filter(lambda x: x!= '-', dss_freq)))/len(filter(lambda x : x!= '-', dss_freq)) ++ ctrls_mean = sum(map(float, [x for x in ctrls_freq if x!= '-']))/len([x for x in ctrls_freq if x!= '-']) ++ dss_mean = sum(map(float, [x for x in dss_freq if x!= '-']))/len([x for x in dss_freq if x!= '-']) + delta_diff = abs(ctrls_mean - dss_mean) + pvalue=stats.mannwhitneyu(ctrls_freq, dss_freq, alternative='two-sided') + row.append(round(delta_diff, 3)) +@@ -388,12 +388,12 @@ + row += ['-', '-'] + else: + row += ['-', '-', '-'] +- row_a = map(tuple_replace, row) +- row_b = map(tuple_replace_bis, row) ++ row_a = list(map(tuple_replace, row)) ++ row_b = list(map(tuple_replace_bis, row)) + if pvalue_correction != 0 and only_significants == 'yes': + only_sig(row_a,row_b) + else: + row_b = row_b[0].split('_') + row_b[2:] + row_b.insert(2, 'A.to.G') +- print '\t'.join(map(str,row_b)) ++ print('\t'.join(map(str,row_b))) + +diff -ru a/accessory/GFFtoTabix.py b/accessory/GFFtoTabix.py +--- a/accessory/GFFtoTabix.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/GFFtoTabix.py 2020-07-16 16:17:22.264013625 -0500 +@@ -31,7 +31,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python GFFtoTabix.py [options] + Options: + -i GFF file +@@ -41,7 +41,7 @@ + -u Save an uncompressed GFF copy (add _copy suffix) + -h Print this help + +-""" ++""") + + try: + opts, args = getopt.getopt(sys.argv[1:], "i:Sb:t:hu",["help"]) +@@ -49,7 +49,7 @@ + usage() + sys.exit(2) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +diff -ru a/accessory/rediportal2recoding.py b/accessory/rediportal2recoding.py +--- a/accessory/rediportal2recoding.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/rediportal2recoding.py 2020-07-16 16:17:22.709013604 -0500 +@@ -41,4 +41,4 @@ + gff_row = line[0] + '\t'+ valore + '\t' + 'ed' + '\t' + line[1] + \ + '\t' + line[1] + '\t' + '.' + '\t' + line[4] + '\t' + '.' + '\t' + \ + 'gene_id' + ' ' + '"ed_%s";' %(i) + ' ' + 'transcript_id' + ' ' + '"ed_%s";' %(i) +- print gff_row ++ print(gff_row) +diff -ru a/accessory/SearchInTable.py b/accessory/SearchInTable.py +--- a/accessory/SearchInTable.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/SearchInTable.py 2020-07-16 16:17:22.309013623 -0500 +@@ -25,7 +25,7 @@ + #pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python SearchInTable.py [options] + Options: + -i Sorted table file (first col=reference; second col=coordinate 1 based) +@@ -42,7 +42,7 @@ + -o Save found/not found positions on file + -h Print this help + +-""" ++""") + #-k skip first INT lines [0] + + try: +@@ -51,7 +51,7 @@ + usage() + sys.exit(2) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +diff -ru a/accessory/selectPositions.py b/accessory/selectPositions.py +--- a/accessory/selectPositions.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/selectPositions.py 2020-07-16 16:17:22.833013598 -0500 +@@ -25,7 +25,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python selectPositions.py [options] + Options: + -i Table file from REDItools +@@ -44,7 +44,7 @@ + -o Save selected positions on outTable_%s + -h Print this help + +-"""%(pid) ++"""%(pid)) + + try: + opts, args = getopt.getopt(sys.argv[1:], "i:c:C:v:s:f:F:euo:hrd:RV:",["help"]) +@@ -52,7 +52,7 @@ + usage() + sys.exit(2) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +diff -ru a/accessory/SortGFF.py b/accessory/SortGFF.py +--- a/accessory/SortGFF.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/SortGFF.py 2020-07-16 16:17:22.357013620 -0500 +@@ -35,7 +35,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python SortGFF.py [options] + Options: + -i GFF file +@@ -44,7 +44,7 @@ + -t Temporary directory to use (multiple -t may be used) + -h Print this help + +-"""%(pid) ++"""%(pid)) + + try: + opts, args = getopt.getopt(sys.argv[1:], "i:o:b:t:h",["help"]) +@@ -52,7 +52,7 @@ + usage() + sys.exit(2) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +diff -ru a/accessory/SortTable.py b/accessory/SortTable.py +--- a/accessory/SortTable.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/SortTable.py 2020-07-16 16:17:22.411013618 -0500 +@@ -35,7 +35,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python SortTable.py [options] + Options: + -i Table file +@@ -50,7 +50,7 @@ + -t Temporary directory to use (multiple -t may be used) + -h Print this help + +-"""%(pid) ++"""%(pid)) + + try: + opts, args = getopt.getopt(sys.argv[1:], "i:o:b:t:hd:s:c:e:m:O",["help"]) +@@ -58,7 +58,7 @@ + usage() + sys.exit(2) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +diff -ru a/accessory/subCount2.py b/accessory/subCount2.py +--- a/accessory/subCount2.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/subCount2.py 2020-07-16 16:17:22.854013597 -0500 +@@ -28,5 +28,5 @@ + for i in s: + try: v=(s[i]/float(all))*100 + except: v=0.0 +- print i,s[i],all,v ++ print(i,s[i],all,v) + +diff -ru a/accessory/subCount.py b/accessory/subCount.py +--- a/accessory/subCount.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/subCount.py 2020-07-16 16:17:22.844013597 -0500 +@@ -30,5 +30,5 @@ + for i in s: + try: v=(s[i]/float(all))*100 + except: v=0.0 +- print i,s[i],all,v ++ print(i,s[i],all,v) + +diff -ru a/accessory/TableToGFF.py b/accessory/TableToGFF.py +--- a/accessory/TableToGFF.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/TableToGFF.py 2020-07-16 16:17:22.474013615 -0500 +@@ -29,7 +29,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python TableToGFF.py [options] + Options: + -i Table file from REDItools +@@ -40,7 +40,7 @@ + -o Outfile [outTable_%s.gff] + -h Print this help + +-"""%(pid) ++"""%(pid)) + + try: + opts, args = getopt.getopt(sys.argv[1:], "i:o:sthT:b:",["help"]) +@@ -48,7 +48,7 @@ + usage() + sys.exit(2) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +diff -ru a/accessory/tableToTabix.py b/accessory/tableToTabix.py +--- a/accessory/tableToTabix.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/accessory/tableToTabix.py 2020-07-16 16:17:22.913013594 -0500 +@@ -31,7 +31,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python tableToTabix.py [options] + Options: + -i TAB-delimited file +@@ -46,7 +46,7 @@ + -u Save an uncompressed GFF copy (add _copy suffix) + -h Print this help + +-""" ++""") + + try: + opts, args = getopt.getopt(sys.argv[1:], "i:Sb:t:hus:c:e:m:0",["help"]) +@@ -54,7 +54,7 @@ + usage() + sys.exit(2) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +diff -ru a/main/REDItoolDenovo.py b/main/REDItoolDenovo.py +--- a/main/REDItoolDenovo.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/main/REDItoolDenovo.py 2020-07-16 16:17:21.265013672 -0500 +@@ -75,7 +75,7 @@ + return 1 + numerator = 1 + denominator = 1 +- for i in xrange(s+1, population + 1): ++ for i in range(s+1, population + 1): + numerator *= i + denominator *= (i - s) + return numerator/denominator +@@ -275,7 +275,7 @@ + try: import pysam + except: sys.exit('Pysam module not found.') + from multiprocessing import Process, Queue +-from Queue import Empty ++from queue import Empty + try: + from fisher import pvalue + exfisher=1 +@@ -292,7 +292,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python REDItoolDenovo.py [options] + Options: + -i BAM file +@@ -343,12 +343,12 @@ + - For Tophat2 use 50 + - For GSNAP use 30 + +-"""%(pid) ++"""%(pid)) + + try: + opts, args = getopt.getopt(sys.argv[1:], "b:f:k:t:o:c:q:m:O:s:edpuT:B:v:n:EP:r:hHa:i:lIU:V:w:XG:K:F:g:x:W") + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +@@ -474,7 +474,7 @@ + annfile=a + uann=1 + else: +- print o ++ print(o) + assert False, "Unhandled Option" + + ####### +@@ -532,7 +532,7 @@ + return False + try: + os.kill(pid, 0) +- except OSError, e: ++ except OSError as e: + return e.errno == errno.EPERM + else: + return True +@@ -637,9 +637,9 @@ + subs=[] + subv=[] + for i in seq.upper(): +- if b.has_key(i): b[i]+=1 ++ if i in b: b[i]+=1 + for i in b: +- if not b.has_key(ref): continue ++ if ref not in b: continue + if b[i]!=0 and i!=ref: + vv=float(b[i])/(b[i]+b[ref]) + subv.append((b[i],vv,ref+i)) +@@ -690,7 +690,7 @@ + a={'A':'T','T':'A','C':'G','G':'C'} + ss='' + for i in s.upper(): +- if a.has_key(i): ss+=a[i] ++ if i in a: ss+=a[i] + else: ss+='N' + return ss + +@@ -777,7 +777,7 @@ + frefs.append(l[0]) + fidxinfo.close() + rnof=[] +-for i in rrefs.keys(): ++for i in list(rrefs.keys()): + if i not in frefs: sys.stderr.write('WARNING: Region %s in RNA-Seq not found in reference file.\n' %(i)) + ##################### + +@@ -817,8 +817,8 @@ + #mainbam=pysam.Samfile(bamfile,"rb") + #regions=mainbam.references + #mainbam.close() +-dicregions=dict(rrefs.items()) +-chrs=[x for x in dicregions.keys() if x not in nochrs] ++dicregions=dict(list(rrefs.items())) ++chrs=[x for x in list(dicregions.keys()) if x not in nochrs] + sys.stderr.write('Analysis on %i regions.\n' %(len(chrs))) + + if infolder!='': outfolder=os.path.join(outfolder_,'denovo_%s_%s' %(infolder,pid)) +@@ -906,7 +906,7 @@ + if pileupread.alignment.has_tag('SA'): continue + #s,q,t,qq=pileupread.alignment.seq[pileupread.qpos].upper(),ord(pileupread.alignment.qual[pileupread.qpos])-QVAL,'*',pileupread.alignment.qual[pileupread.qpos] + # escludi posizioni introniche nei pressi di splice sites +- if exss and di.has_key(pileupcolumn.reference_pos+1): continue #MOD ++ if exss and pileupcolumn.reference_pos+1 in di: continue #MOD + # multiple hit + if exh: #MOD + if pileupread.alignment.is_secondary: continue #MOD +@@ -998,7 +998,7 @@ + elif pileupread.alignment.is_read2: rt=2 + else: rt=0 + rname=pileupread.alignment.query_name+'_%i'%(rt) #MOD +- if d.has_key(rname): blatc+='0' #continue ++ if rname in d: blatc+='0' #continue + else: blatc+='1' + # se la base e' diversa dal reference + # se in regione omopolimerica scarta +@@ -1032,7 +1032,7 @@ + if not custsub: + ni='ACGT' + for b in range(4): +- if dsubs.has_key(ref.upper()+ni[b]): ++ if ref.upper()+ni[b] in dsubs: + dsubs[ref.upper()+ni[b]]+=bcomp[b] + if expos: + if chr in extabix.contigs: +diff -ru a/main/REDItoolDnaRna.py b/main/REDItoolDnaRna.py +--- a/main/REDItoolDnaRna.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/main/REDItoolDnaRna.py 2020-07-16 16:17:21.757013649 -0500 +@@ -23,7 +23,7 @@ + try: import pysam + except: sys.exit('Pysam module not found.') + from multiprocessing import Process, Queue +-from Queue import Empty ++from queue import Empty + import gzip + + pysamVersion=pysam.__version__ +@@ -34,7 +34,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python REDItoolDnaRNA.py [options] + Options: + -i RNA-Seq BAM file +@@ -103,7 +103,7 @@ + - For Tophat2 use 50 + - For GSNAP use 30 + +-"""%(pid) ++"""%(pid)) + + #option --fastq Fastq to get reads [requires --reads], separated by comma [if paired] NOT IMPLEMENTED + #option --rmOver Remove overlapping reads NOT IMPLEMENTED +@@ -111,7 +111,7 @@ + try: + opts, args = getopt.getopt(sys.argv[1:], "i:f:k:t:o:c:q:m:O:s:edpuA:a:B:b:lLv:n:EPr:hHIXG:K:j:C:JDUzw:N:ZW:RVMT:F:x:g:SY:",["help","gzip","reads","addP","rmIndels"]) + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +@@ -325,7 +325,7 @@ + params.append('Analysis ID: %s\n' %(pid)) + params.append('Analysis time: %s\n' %(script_time)) + params.append('-i --> RNA-Seq BAM file: %s\n' %(bamfile)) +-params.append('-j --> DNA-Seq BAM file(s): %s\n' %(','.join(dgbamfile.keys()))) ++params.append('-j --> DNA-Seq BAM file(s): %s\n' %(','.join(list(dgbamfile.keys())))) + params.append('-I --> Sort RNA-Seq BAM file: %i\n' %(sortbam)) + params.append('-J --> Sort DNA-Seq BAM file: %i\n' %(sortgbam)) + params.append('-f --> Reference file: %s\n' %(fastafile)) +@@ -483,9 +483,9 @@ + subs=[] + subv=[] + for i in seq.upper(): +- if b.has_key(i): b[i]+=1 ++ if i in b: b[i]+=1 + for i in b: +- if not b.has_key(ref): continue ++ if ref not in b: continue + if b[i]!=0 and i!=ref: + vv=float(b[i])/(b[i]+b[ref]) + subv.append((b[i],vv,ref+i)) +@@ -537,7 +537,7 @@ + a={'A':'T','T':'A','C':'G','G':'C'} + ss='' + for i in s.upper(): +- if a.has_key(i): ss+=a[i] ++ if i in a: ss+=a[i] + elif i==' ': ss+=' ' + elif i=='-': ss+='-' + else: ss+='N' +@@ -682,7 +682,7 @@ + if l.count(i[0])==2: + s='=' + if i[1]!=i[2]: s='!' +- if us.has_key(i[0]): us[i[0]].append((x,s)) ++ if i[0] in us: us[i[0]].append((x,s)) + else: us[i[0]]=[(x,s)] + x+=1 + for i in us: +@@ -753,7 +753,7 @@ + pysam.faidx(fastafile) + ########################################################### + # Check reference for name consistency +-grefs=dgdic.keys() ++grefs=list(dgdic.keys()) + rrefs={} + ridxinfo=pysam.idxstats(bamfile) + for j in ridxinfo.split('\n'): #MOD +@@ -769,7 +769,7 @@ + fidxinfo.close() + # in rna-seq + rnof=[] +-for i in rrefs.keys(): ++for i in list(rrefs.keys()): + if i not in frefs: sys.stderr.write('WARNING: Region %s in RNA-Seq not found in reference file.\n' %(i)) + if len(gbamfile)!=0: + for i in grefs: +@@ -833,9 +833,9 @@ + #regions=mainbam.references + #regionslens=mainbam.lengths + #mainbam.close() +-dicregions=dict(rrefs.items()) ++dicregions=dict(list(rrefs.items())) + #dicregions=dict([(regions[x],regionslens[x]) for x in range(len(regions))]) +-chrs=[x for x in dicregions.keys() if x not in nochrs] ++chrs=[x for x in list(dicregions.keys()) if x not in nochrs] + if fworkR: sys.stderr.write('Analysis on region %s:%i-%i.\n' %(workR[0],workR[1][0],workR[1][1])) + else: sys.stderr.write('Analysis on %i regions.\n' %(len(chrs))) + ########################################################### +@@ -883,7 +883,7 @@ + isgbam=1 + inputs=myinput.split('$') + chr,bamfile,start_region,lenregion,suff_=inputs[0],inputs[1],int(inputs[2]),int(inputs[3]),inputs[4] +- if not dgdic.has_key(chr): isgbam=0 ++ if chr not in dgdic: isgbam=0 + outfile=os.path.join(outfolder,'table_%s'%(suff_)) + if slist: + if gziptab: outrna=gzip.open(os.path.join(outfolder,'pileupRNA_%s.gz'%(suff)),'wb') +@@ -1024,7 +1024,7 @@ + if pileupread.alignment.is_read1: rt=1 + elif pileupread.alignment.is_read2: rt=2 + rname=pileupread.alignment.query_name+'_%i'%(rt) +- if gd.has_key(rname): gblatc+='0' #continue ++ if rname in gd: gblatc+='0' #continue + else: gblatc+='1' + # se la base e' diversa dal reference + # se in regione omopolimerica scarta +@@ -1079,7 +1079,7 @@ + #s,q,t,qq=pileupread.alignment.query_sequence[pileupread.query_position].upper(),pileupread.alignment.query_qualities[pileupread.query_position],'*',pileupread.alignment.qual[pileupread.query_position] + #s,q,t,qq=pileupread.alignment.seq[pileupread.qpos].upper(),ord(pileupread.alignment.qual[pileupread.qpos])-QVAL,'*',pileupread.alignment.qual[pileupread.qpos] + # escludi posizioni introniche nei pressi di splice sites +- if exss and di.has_key(pileupcolumn.reference_pos+1): continue ++ if exss and pileupcolumn.reference_pos+1 in di: continue + # multiple hit + if exh: + if pileupread.alignment.is_secondary: continue +@@ -1179,7 +1179,7 @@ + elif pileupread.alignment.is_read2: rt=2 + else: rt=0 + rname=pileupread.alignment.query_name+'_%i'%(rt) +- if d.has_key(rname): blatc+='0' #continue ++ if rname in d: blatc+='0' #continue + else: blatc+='1' + # se la base e' diversa dal reference + # se in regione omopolimerica scarta +@@ -1213,7 +1213,7 @@ + else: addpos=(pileupread.alignment.query_name,'-',pileupread.alignment.reference_name,'-',pileupread.alignment.reference_start,pileupread.alignment.reference_end,0 , 0) + rqname_comp=rqname+'$'+pileupread.alignment.reference_name+'$'+str(pileupcolumn.reference_pos+1) + #addpos=(chr+'_'+str(pileupcolumn.reference_pos+1),pileupcolumn.reference_pos+1) +- if not grdb.has_key(rqname): ++ if rqname not in grdb: + #print rqname reference_start + outreads.write('>'+rqname_comp+'\n'+rseqname+'\n') + #grdb[rqname]=[addpos] +@@ -1221,7 +1221,7 @@ + # if addpos not in grdb[rqname]: + # grdb[rqname].append(addpos) + if addP: +- if not grdb2.has_key(rname): grdb2[rname]=addpos ++ if rname not in grdb2: grdb2[rname]=addpos + if seq.strip()!='': + #print seq,qual,squal + if rmIndel: +@@ -1268,7 +1268,7 @@ + if exinv and subs=='-': continue + if not checkSubs(subs): continue + #print out rna-seq info + dna-seq +- if gdic.has_key(pileupcolumn.reference_pos): # abbiamo l'informazione genomica ++ if pileupcolumn.reference_pos in gdic: # abbiamo l'informazione genomica + if exnonh and not gdic[pileupcolumn.reference_pos][1]: continue + if mystrand=='0': + gdic[pileupcolumn.reference_pos][0][2]=comp2(eval(gdic[pileupcolumn.reference_pos][0][2])) +diff -ru a/main/REDItoolKnown.py b/main/REDItoolKnown.py +--- a/main/REDItoolKnown.py 2020-07-16 16:16:59.360014702 -0500 ++++ b/main/REDItoolKnown.py 2020-07-16 16:17:22.063013634 -0500 +@@ -23,7 +23,7 @@ + try: import pysam + except: sys.exit('Pysam module not found.') + from multiprocessing import Process, Queue +-from Queue import Empty ++from queue import Empty + + pysamVersion=pysam.__version__ + +@@ -34,7 +34,7 @@ + pid=str(os.getpid()+random.randint(0,999999999)) + + def usage(): +- print """ ++ print(""" + USAGE: python REDItoolKnown.py [options] + Options: + -i BAM file +@@ -82,12 +82,12 @@ + - For Tophat2 use 50 + - For GSNAP use 30 + +-"""%(pid) ++"""%(pid)) + + try: + opts, args = getopt.getopt(sys.argv[1:], "i:f:k:t:o:c:q:m:O:s:edpuT:B:Sv:n:EP:r:hHIXG:K:l:C:F:x:g:U") + except getopt.GetoptError as err: +- print str(err) # will print something like "option -a not recognized" ++ print(str(err)) # will print something like "option -a not recognized" + usage() + sys.exit(2) + +@@ -257,7 +257,7 @@ + return False + try: + os.kill(pid, 0) +- except OSError, e: ++ except OSError as e: + return e.errno == errno.EPERM + else: + return True +@@ -361,9 +361,9 @@ + subs=[] + subv=[] + for i in seq.upper(): +- if b.has_key(i): b[i]+=1 ++ if i in b: b[i]+=1 + for i in b: +- if not b.has_key(ref): continue ++ if ref not in b: continue + if b[i]!=0 and i!=ref: + vv=float(b[i])/(b[i]+b[ref]) + subv.append((b[i],vv,ref+i)) +@@ -414,7 +414,7 @@ + a={'A':'T','T':'A','C':'G','G':'C'} + ss='' + for i in s.upper(): +- if a.has_key(i): ss+=a[i] ++ if i in a: ss+=a[i] + else: ss+='N' + return ss + +@@ -524,7 +524,7 @@ + fidxinfo.close() + # in rna-seq + rnof=[] +-for i in rrefs.keys(): ++for i in list(rrefs.keys()): + if i not in frefs: sys.stderr.write('WARNING: Region %s in RNA-Seq not found in reference file.\n' %(i)) + ################################## + +@@ -568,8 +568,8 @@ + #mainbam.close() + #dicregions=dict([(regions[x],regionslens[x]) for x in range(len(regions))]) + #chrs=[x for x in regions if x not in nochrs] +-dicregions=dict(rrefs.items()) +-chrs=[x for x in dicregions.keys() if x not in nochrs] ++dicregions=dict(list(rrefs.items())) ++chrs=[x for x in list(dicregions.keys()) if x not in nochrs] + sys.stderr.write('Analysis on %i regions.\n' %(len(chrs))) + + if infolder!='': outfolder=os.path.join(outfolder_,'known_%s_%s' %(infolder,pid)) +@@ -654,7 +654,7 @@ + # else explore bam to find exact positions + for pileupcolumn in bam.pileup(chr,startk,endk,stepper='nofilter', max_depth=MAX_DEPTH): + if not startk<=pileupcolumn.reference_pos<=endk: continue +- if not kdic.has_key(pileupcolumn.reference_pos+1): continue ++ if pileupcolumn.reference_pos+1 not in kdic: continue + ref=fasta.fetch(chr,pileupcolumn.reference_pos,pileupcolumn.reference_pos+1).upper() + seq,qual,strand,squal,blatc='',0,'',[],'' + if rmsh: +@@ -668,7 +668,7 @@ + if pileupread.alignment.is_supplementary: continue + if pileupread.alignment.has_tag('SA'): continue + # escludi posizioni introniche nei pressi di splice sites +- if exss and di.has_key(pileupcolumn.reference_pos+1): continue ++ if exss and pileupcolumn.reference_pos+1 in di: continue + # multiple hit + if exh: + if pileupread.alignment.is_secondary: continue +@@ -754,7 +754,7 @@ + elif pileupread.alignment.is_read2: rt=2 + else: rt=0 + rname=pileupread.alignment.query_name+'_%i'%(rt) +- if d.has_key(rname): blatc+='0' #continue ++ if rname in d: blatc+='0' #continue + else: blatc+='1' + # se la base e' diversa dal reference + # se in regione omopolimerica scarta diff --git a/var/spack/repos/builtin/packages/reditools/setup.py.patch b/var/spack/repos/builtin/packages/reditools/setup.py.patch new file mode 100644 index 0000000000..f65345ad92 --- /dev/null +++ b/var/spack/repos/builtin/packages/reditools/setup.py.patch @@ -0,0 +1,11 @@ +--- a/setup.py 2020-07-16 14:01:48.601449013 -0500 ++++ b/setup.py 2020-07-16 14:02:31.547441668 -0500 +@@ -33,7 +33,7 @@ + 'Operating System :: POSIX', + 'Programming Language :: Python', + ], +- long_description=open('README').read(), ++ long_description=open('README_1.md').read(), + platforms=['Linux','Unix','MacOS'] + ) + diff --git a/var/spack/repos/builtin/packages/rivet/gsl.m4 b/var/spack/repos/builtin/packages/rivet/gsl.m4 new file mode 100644 index 0000000000..61c89c957c --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/gsl.m4 @@ -0,0 +1,60 @@ +# AC_SEARCH_GSL(actionIfFound, actionIfNotFound) +AC_DEFUN([AC_SEARCH_GSL],[ + AC_ARG_WITH([gsl], AC_HELP_STRING(--with-gsl, [path to GSL library and header files])) + + ## Use a specified --with-gsl arg to set basic paths, if provided + GSLCONFIG_PATH=$PATH + if test -e "$with_gsl"; then + GSLCONFIG_PATH="$with_gsl/bin:$GSLCONFIG_PATH" + GSLPATH="$with_gsl" + GSLINCPATH="$GSLPATH/include" + GSLLIBPATH="$GSLPATH/lib" + GSL_CPPFLAGS="-I$GSLINCPATH" + GSL_CXXFLAGS="" + GSL_LDFLAGS="-L$GSLPATH/lib -lgsl -lgslcblas -lm" + fi + + ## Try to do better, using the gsl-config script + AC_PATH_PROG(GSLCONFIG, gsl-config, [], [$GSLCONFIG_PATH]) + if test -x "$GSLCONFIG"; then + AC_MSG_NOTICE(Using $GSLCONFIG to find GSL flags) + GSLPATH=`$GSLCONFIG --prefix` + GSLINCPATH="$GSLPATH/include" + GSLLIBPATH="$GSLPATH/lib" + GSL_CPPFLAGS=`$GSLCONFIG --cflags` + GSL_CXXFLAGS=`$GSLCONFIG --cflags` + GSL_LDFLAGS=`$GSLCONFIG --libs` + fi + + ## If it's worked, propagate the conditionals and execute success arg + if test -e "$GSLPATH"; then + AM_CONDITIONAL([WITH_GSL], true) + AM_CONDITIONAL([WITH_GSLLIB], true) + AM_CONDITIONAL([WITH_GSLINC], true) + AM_CONDITIONAL([WITHOUT_GSL], false) + AM_CONDITIONAL([WITHOUT_GSLLIB], false) + AM_CONDITIONAL([WITHOUT_GSLINC], false) + $1 + else + ## Otherwise execute the fail arg + AM_CONDITIONAL([WITH_GSL], false) + AM_CONDITIONAL([WITH_GSLLIB], false) + AM_CONDITIONAL([WITH_GSLINC], false) + AM_CONDITIONAL([WITHOUT_GSL], true) + AM_CONDITIONAL([WITHOUT_GSLLIB], true) + AM_CONDITIONAL([WITHOUT_GSLINC], true) + $2 + fi + + ## Propagate path and flag variables + AC_SUBST([GSLPATH]) + AC_SUBST([GSLINCPATH]) + AC_SUBST([GSLLIBPATH]) + AC_SUBST([GSL_CPPFLAGS]) + AC_SUBST([GSL_CXXFLAGS]) + AC_SUBST([GSL_LDFLAGS]) + AC_MSG_NOTICE([GSL include path is $GSLINCPATH]) + AC_MSG_NOTICE([GSL CPPFLAGS is $GSL_CPPFLAGS]) + AC_MSG_NOTICE([GSL CXXFLAGS is $GSL_CXXFLAGS]) + AC_MSG_NOTICE([GSL LDFLAGS is $GSL_LDFLAGS]) +]) diff --git a/var/spack/repos/builtin/packages/rivet/package.py b/var/spack/repos/builtin/packages/rivet/package.py new file mode 100644 index 0000000000..3d28b81632 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/package.py @@ -0,0 +1,170 @@ +# 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 Rivet(AutotoolsPackage): + """Rivet - the particle-physics MC analysis toolkit""" + + homepage = "https://rivet.hepforge.org/" + url = "https://rivet.hepforge.org/downloads/?f=Rivet-3.1.2.tar.bz2" + + version('3.1.2', sha256='c041d09644f4eae7c212d82237033267fbc1583dfbb4e3e67377f86cece9577a') + version('3.1.1', sha256='7c98b26af5f859bc65200499d15765e4b056b4cf233b34176f27a7e6bc4cf9b1') + version('3.1.0', sha256='4e156daee5eb10bd1573ef32d4a6a6df74788cd9180fc977db93ef4cb281000c') + version('3.0.2', sha256='9624d6cdcad77eafde40312cf6a1c97f4263f22faf9244b198c140b2c256d2f3') + version('3.0.1', sha256='e7551168b86a05c9c029c319c313a0aa142a476195e7ff986c896c1b868f89dd') + version('3.0.0', sha256='3944434d3791dccb54f7b2257589df6252cc7c065ce9deb57fbef466ff9e62b1') + version('2.7.2b', sha256='e9f0a709f8226cde54f9406d36efab1e1b8ed0c6574fbcb1d72a186b09188106') + version('2.7.2', sha256='a6634537c005660e56514b70ab9efb9d466c50685d6fb45ed03e9e1988479f02') + version('2.7.1', sha256='b4145d8369b8a9fa0ada7ba2e5a2e9992d8e4a12ca4874d835246d2e708cbdef') + version('2.7.0', sha256='34ad6a0b47dc4736feac8580a275e8b3a46df8fbeefd91e813add0a1525aacaf') + version('2.6.2', sha256='9dde49d5c02038a295f03d2972f85be8746205bdb5ca1eab868b2c9129ade37a') + version('2.6.1', sha256='e490d1f35aafa3e175690ae92f862c07a5fe2c51f693c88c87789f0441c89022') + version('2.6.0', sha256='fb3229dccd31ea40b0af09974253073f6ad0a3a97e9a0cf44b53748ea8e2f900') + version('2.5.4', sha256='772252193698d994fd111f790e72a4024df7572d492e3d5a9e840a074c5527e2') + version('2.5.3', sha256='99e10330564ac479c6637d317c08882889a272db8ee204ad45a6ee1dcb291de4') + version('2.5.2', sha256='70aa27764a14159c94c0b753a0c3d3600ac669def398cb2d8a6c63ae17704f05') + version('2.5.1', sha256='14ee5828de217e96a30e666192515a2083afee030d81d36fc6bea948e9f7810a') + version('2.5.0', sha256='c59ff35715be0caf65d6ba808b3badad0f6f7e7758f2049fb6ba43ed579bd4af') + version('2.4.3', sha256='18aafecab6c3baeac871a9743946433c2dc01825d8fe291b157719a15c342682') + version('2.4.2', sha256='accb146f3082719781a51eec879427c31401577c44f60b27ec8450102fe68aff') + version('2.4.1', sha256='c14f0f58d1792d84d62c62b44ebb94db004776feba83fd8186bba898d55123cf') + version('2.4.0', sha256='5ee2f34a277ed058b8aef750d946b40d4cf781023b9adab03ca95e803a39fb06') + version('2.3.0', sha256='dd07702981d586e4b97b0fa56ae08cd08a631a952322a9b52e7622a46a7741ab') + version('2.2.1', sha256='9e64ba19d567bdf4d0cc42b435491c4363b5fec90170d034445a99a1e752b691') + version('2.2.0', sha256='3bdafe2007ff54c4734e0c8bc6ba9dc97028d4c41d538201b9582a869af8ae1a') + version('2.1.2', sha256='40a20c1ee186326e5bfd906e0bc88f16dc740551be9cc274e9a826873d9c1eed') + version('2.1.1', sha256='eefa936de6f6c34a6bab39899841f3189d7621c8ba227032f0f32e6e20dfcf85') + version('2.1.0', sha256='58a1ca7b5a47719933782c050e67d0eb3823a7384cfc3c434fece41724c307e6') + version('2.0.0', sha256='038f81f92fbba001ed23b56c1229a4f3b41e0c32e00bc92ea58d042909e3855a') + version('1.9.0', sha256='55ef552b351328c287194aa99fa2b797e6632dc3fa88dfccd58264602012e044') + version('1.8.3', sha256='aa82742fd4d7c68bfbef1367c4c605e06f9fed479a753db96aa6659407fcc4fd') + version('1.8.2', sha256='56be98d31693253543f3e657c8f8edc7979c89fdb0ede1bdddfb3a9f5d4cfc3a') + version('1.8.1', sha256='7e06d22350bec30220186e796caa93e9bfebd8d771a7efd35673897248437c61') + version('1.8.0', sha256='7b28f9163f74583b1542b87c48f28a3ad1338da6136d8e3ca0aeba21095f5fe0') + version('1.7.0', sha256='180741f590f210474b686d60241ad59e008221751ead21f0950c59aff93e54fd') + version('1.6.0', sha256='1affd9e779f48477402e4150f315b3179204cbbc920db2d0129cd9c38bd18b26') + version('1.5.1', sha256='9f24e9824286d5b0302c7e440f4803a8e3b8da50e1260e78c3b3c2eb587b317a') + version('1.5.0', sha256='b7fe63e8caacc5c038ab567fe505d275288eedaa1aed6c379057629eef126006') + version('1.4.0', sha256='067c94659bb7859904e20e72a676f94f103e6e012b7dba8071f51e8a6e624dbb') + version('1.3.0', sha256='5ce41c8492c2fcf809a7135bf8335a01a98ea85fb556b3d00bd4260151efd12f') + version('1.2.1', sha256='2d0380b819f778d8d9c2a462af90bd6a6188121e4edcc6202d936130b59bab17') + version('1.2.0', sha256='ff5869f6dc9465f429e54686e12c39becac57a83273542179a59bac7561b6404') + version('1.1.3', sha256='4be3cd9e6f808cdc5511991be2756f5fa838b6ecd01806fdbe7aec0aa382f946') + version('1.1.2', sha256='a15b5d3339481446dec1b719d7d531a87a2e9d11c9fe8044e270ea69611b07c8') + version('1.1.1', sha256='bd87fefee6bb8368216755342dc80ab3f8f3c813732dd03c6f94135d45f7036b') + + # According to A. Buckley (main Rivet developer): + # "typically a given Rivet version will work with + # all YODA releases of that middle-digit version, + # and maybe older. Generally it's always a good idea + # to be using the latest versions of both.". The versions below + # are taken from LCG stack which, in most cases, is the definition + # of "latest" at the moment of release. + depends_on('yoda@1.0.4', when='@2.0.0') + depends_on('yoda@1.0.5', when='@2.1.0') + depends_on('yoda@1.0.6', when='@2.1.1') + depends_on('yoda@1.1.0', when='@2.1.2') + depends_on('yoda@1.3.0', when='@2.2.0') + depends_on('yoda@1.3.1', when='@2.2.1') + depends_on('yoda@1.4.0', when='@2.3.0') + depends_on('yoda@1.5.5', when='@2.4.0') + depends_on('yoda@1.5.9', when='@2.4.2') + depends_on('yoda@1.6.1', when='@2.4.3') + depends_on('yoda@1.6.2', when='@2.5.0') + depends_on('yoda@1.6.3', when='@2.5.1') + depends_on('yoda@1.6.5', when='@2.5.2') + depends_on('yoda@1.6.6', when='@2.5.3') + depends_on('yoda@1.6.7', when='@2.5.4') + depends_on('yoda@1.7.1', when='@2.6.1') + depends_on('yoda@1.7.4', when='@2.6.2') + depends_on('yoda@1.7.5', when='@2.7.2') + depends_on('yoda@1.7.5', when='@2.7.2b') + depends_on('yoda@1.7.7', when='@3.0.1') + depends_on('yoda@1.8.0', when='@3.1.0') + depends_on('yoda@1.8.2', when='@3.1.1') + depends_on('yoda@1.8.3', when='@3.1.2') + + # The following versions were not a part of LCG stack + # and thus the exact version of YODA is unknown + depends_on('yoda@1.7.0:1.7.999', when='@2.6.0,2.7.0,2.7.1,3.0.0,3.0.2,3.1.0') + depends_on('yoda@1.5.0:1.5.999', when='@2.4.1') + + depends_on('hepmc', type=('build', 'run')) + depends_on('boost', when='@:2.5.0,3:', type=('build', 'run')) + depends_on('fastjet', type=('build', 'run')) + depends_on('fjcontrib', type=('build', 'run'), when='@3.0.0:') + depends_on('gsl', type=('build', 'run'), when='@:2.6.0,2.6.2:') + depends_on('python', type=('build', 'run')) + depends_on('swig', type=('build', 'run')) + depends_on('yaml-cpp', when='@2.0.0:2.1.2', type=('build', 'run')) + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + patch('rivet-1.8.2.patch', when='@1.8.2', level=0) + patch('rivet-1.9.0.patch', when='@1.9.0', level=0) + patch('rivet-2.2.0.patch', when='@2.2.0', level=0) + patch('rivet-2.2.1.patch', when='@2.2.1', level=0) + patch('rivet-2.4.0.patch', when='@2.4.0', level=0) + patch('rivet-2.4.2.patch', when='@2.4.2', level=0) + patch('rivet-2.4.3.patch', when='@2.4.3', level=0) + patch('rivet-2.5.1.patch', when='@2.5.1', level=0) + patch('rivet-2.5.2.patch', when='@2.5.2', level=0) + patch('rivet-2.5.3.patch', when='@2.5.3', level=0) + patch('rivet-2.5.4.patch', when='@2.5.4', level=0) + patch('rivet-2.6.0.patch', when='@2.6.0', level=0) + patch('rivet-2.6.1.patch', when='@2.6.1', level=0) + patch('rivet-2.6.2.patch', when='@2.6.2', level=0) + patch('rivet-2.7.0.patch', when='@2.7.0', level=0) + patch('rivet-3.0.0.patch', when='@3.0.0', level=0) + patch('rivet-3.0.1.patch', when='@3.0.1', level=0) + patch('rivet-3.1.0.patch', when='@3.1.0', level=0) + patch('rivet-3.1.1.patch', when='@3.1.1', level=0) + + @run_before('configure') + def copy_gsl_m4(self): + if self.spec.satisfies('@2.6.2:'): + copy(join_path(os.path.dirname(__file__), 'gsl.m4'), 'm4/gsl.m4') + + @property + def force_autoreconf(self): + return self.version >= Version('2.6.2') + + def setup_build_environment(self, env): + # this avoids an "import site" error in the build + env.unset('PYTHONHOME') + + def configure_args(self): + args = [] + args += ['--with-hepmc=' + self.spec['hepmc'].prefix] + + if self.spec.satisfies('@:1.999.999'): + args += ['--with-boost-incpath=' + self.spec['boost'].includes] + else: + if self.spec.satisfies('@:2.5.0,3:'): + args += ['--with-boost=' + self.spec['boost'].prefix] + + args += ['--with-fastjet=' + self.spec['fastjet'].prefix] + if self.spec.satisfies('@2:'): + args += ['--with-yoda=' + self.spec['yoda'].prefix] + + if self.spec.satisfies('@:2.6.0,2.6.2:'): + args += ['--with-gsl=' + self.spec['gsl'].prefix] + + if self.spec.satisfies('@3.0.0:'): + args += ['--with-fjcontrib=' + self.spec['fjcontrib'].prefix] + + args += ['--disable-pdfmanual', '--enable-unvalidated'] + + if self.spec.satisfies('@2:'): + args += ['--enable-stdcxx11'] + + return args diff --git a/var/spack/repos/builtin/packages/rivet/rivet-1.8.2.patch b/var/spack/repos/builtin/packages/rivet/rivet-1.8.2.patch new file mode 100644 index 0000000000..95cbe774a0 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-1.8.2.patch @@ -0,0 +1,44 @@ +--- src/Tools/Makefile.in.orig 2013-05-15 14:02:25.000000000 +0200 ++++ src/Tools/Makefile.in 2013-05-15 14:03:14.000000000 +0200 +@@ -79,7 +79,7 @@ + libRivetTools_la-ParticleIdUtils.lo \ + libRivetTools_la-tinyxml.lo libRivetTools_la-tinyxmlerror.lo \ + libRivetTools_la-tinyxmlparser.lo \ +- libRivetTools_la-BinnedHistogram.lo \ ++# libRivetTools_la-BinnedHistogram.lo \ + libRivetTools_la-mt2_bisect.lo libRivetTools_la-RivetMT2.lo \ + libRivetTools_la-BinnedHistogram.lo + libRivetTools_la_OBJECTS = $(am_libRivetTools_la_OBJECTS) +@@ -371,7 +371,7 @@ + TinyXML/tinyxml.cpp \ + TinyXML/tinyxmlerror.cpp \ + TinyXML/tinyxmlparser.cpp \ +- BinnedHistogram.cc \ ++# BinnedHistogram.cc \ + mt2_bisect.cc \ + RivetMT2.cc \ + BinnedHistogram.cc +--- include/LWH/Axis.h.orig 2013-05-14 18:30:02.000000000 +0200 ++++ include/LWH/Axis.h 2013-05-14 18:31:35.000000000 +0200 + +@@ -115,7 +115,7 @@ + * + */ + int coordToIndex(double coord) const { +- assert( ! isnan(coord) ); ++ assert( ! std::isnan(coord) ); + if ( coord >= upper ) return OVERFLOW_BIN; + else if ( coord < lower ) return UNDERFLOW_BIN; + else return int((coord - lower)/binWidth(0)); + +--- src/Tools/Makefile.am.orig 2013-05-15 13:14:11.000000000 +0200 ++++ src/Tools/Makefile.am 2013-05-15 13:16:53.000000000 +0200 +@@ -14,7 +14,7 @@ + TinyXML/tinyxml.cpp \ + TinyXML/tinyxmlerror.cpp \ + TinyXML/tinyxmlparser.cpp \ +- BinnedHistogram.cc \ ++# BinnedHistogram.cc \ + mt2_bisect.cc \ + RivetMT2.cc \ + BinnedHistogram.cc diff --git a/var/spack/repos/builtin/packages/rivet/rivet-1.9.0.patch b/var/spack/repos/builtin/packages/rivet/rivet-1.9.0.patch new file mode 100644 index 0000000000..9d274550b7 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-1.9.0.patch @@ -0,0 +1,30 @@ +--- bin/rivet-buildplugin.in.orig 2014-09-02 11:22:32.000000000 +0200 ++++ bin/rivet-buildplugin.in 2014-09-02 11:26:31.000000000 +0200 +@@ -62,6 +62,7 @@ + mycppflags="" + prefix="@prefix@" + irivet="@includedir@" ++exec_prefix=@exec_prefix@ + test -n "$irivet" && mycppflags="$mycppflags -I${irivet}" + ihepmc="@HEPMCINCPATH@" + test -n "$ihepmc" && mycppflags="$mycppflags -I${ihepmc}" +@@ -74,7 +75,7 @@ + + ## Get Rivet system linker flags (duplicating that in rivet-config.in) + myldflags="" +-lrivet="@libdir@" ++lrivet="${exec_prefix}/lib" + test -n "$lrivet" && myldflags="$myldflags -L${lrivet}" + lhepmc="@HEPMCLIBPATH@" + test -n "$lhepmc" && myldflags="$myldflags -L${lhepmc}" +--- bin/rivet-findid 2015-06-23 09:15:28.000000001 +0200 ++++ bin/rivet-findid 2015-06-23 09:15:38.000000001 +0200 +@@ -170,7 +170,7 @@ + if k=='code': + entries[v] = c.text + if entries.get('9') == 'SPIRESTeX': +- result['bibtex'] = entries['z'] ++ result['bibtex'] = entries['a'] + + if i.get('tag') == '037': + entries = {} diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.2.0.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.2.0.patch new file mode 100644 index 0000000000..ac9268a252 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.2.0.patch @@ -0,0 +1,11 @@ +--- bin/rivet-findid 2015-06-23 09:39:49.000000001 +0200 ++++ bin/rivet-findid 2015-06-23 09:40:09.000000001 +0200 +@@ -160,7 +160,7 @@ + if k=='code': + entries[v] = c.text + if entries.get('9') == 'SPIRESTeX': +- result['bibtex'] = entries['z'] ++ result['bibtex'] = entries['a'] + + if i.get('tag') == '037': + entries = {} diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.2.1.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.2.1.patch new file mode 100644 index 0000000000..a9fceb92c0 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.2.1.patch @@ -0,0 +1,11 @@ +--- bin/rivet-findid 2015-06-23 09:40:38.000000001 +0200 ++++ bin/rivet-findid 2015-06-23 09:40:45.000000001 +0200 +@@ -160,7 +160,7 @@ + if k=='code': + entries[v] = c.text + if entries.get('9') == 'SPIRESTeX': +- result['bibtex'] = entries['z'] ++ result['bibtex'] = entries['a'] + + if i.get('tag') == '037': + entries = {} diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.4.0.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.4.0.patch new file mode 100644 index 0000000000..7ce4f1dd55 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.4.0.patch @@ -0,0 +1,12 @@ +--- configure 2015-10-07 12:35:57.000000000 +0300 ++++ configure 2015-10-09 16:18:02.432562522 +0300 +@@ -18728,7 +18728,7 @@ + ## Boost utility library + echo "$as_me: this is boost.m4 serial 24" >&5 + boost_save_IFS=$IFS +-boost_version_req=1.55.0 ++boost_version_req=1.53.0 + IFS=. + set x $boost_version_req 0 0 0 + IFS=$boost_save_IFS + diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.4.2.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.4.2.patch new file mode 100644 index 0000000000..98436c5acf --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.4.2.patch @@ -0,0 +1,39 @@ +--- configure.orig 2016-09-30 14:12:42.317369715 +0200 ++++ configure 2016-09-30 14:17:21.690229397 +0200 +@@ -19644,11 +19644,15 @@ + cat >conftest.py <<_ACEOF + + import sys, string ++# Python 2 and 3 compatible ++from future.builtins import map ++# Python 2 and 3: forward-compatible ++from future.builtins import range + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. +-minver = map(int, string.split('2.5', '.')) + [0, 0, 0] ++minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] + minverhex = 0 +-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] ++for i in range(0, 4): minverhex = (minverhex << 8) + minver[i] + if sys.hexversion >= minverhex: + sys.exit( 0 ) + else: +@@ -19676,15 +19680,15 @@ + fi + + +- PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info[:2]));"` ++ PYTHON_VERSION=`$PYTHON -c "from __future__ import print_function; import sys; print('.'.join(map(str, sys.version_info[:2])));"` + +- RIVET_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True);"` ++ RIVET_PYTHONPATH=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True));"` + + ## Test for Python header + if test -x "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 + $as_echo_n "checking for Python include path... " >&6; } +- python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"` ++ python_incpath=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_incpath" >&5 + $as_echo "$python_incpath" >&6; } + python_header="$python_incpath/Python.h" diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.4.3.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.4.3.patch new file mode 100644 index 0000000000..9d006df8c0 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.4.3.patch @@ -0,0 +1,39 @@ +--- configure.orig 2016-06-28 23:57:35.000000000 +0200 ++++ configure 2016-09-19 12:44:23.411192406 +0200 +@@ -19643,11 +19643,15 @@ + cat >conftest.py <<_ACEOF + + import sys, string ++# Python 2 and 3 compatible ++from future.builtins import map ++# Python 2 and 3: forward-compatible ++from future.builtins import range + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. +-minver = map(int, string.split('2.5', '.')) + [0, 0, 0] ++minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] + minverhex = 0 +-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] ++for i in range(0, 4): minverhex = (minverhex << 8) + minver[i] + if sys.hexversion >= minverhex: + sys.exit( 0 ) + else: +@@ -19675,15 +19679,15 @@ + fi + + +- PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info[:2]));"` ++ PYTHON_VERSION=`$PYTHON -c "from __future__ import print_function; import sys; print('.'.join(map(str, sys.version_info[:2])));"` + +- RIVET_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True);"` ++ RIVET_PYTHONPATH=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True));"` + + ## Test for Python header + if test -x "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 + $as_echo_n "checking for Python include path... " >&6; } +- python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"` ++python_incpath=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_incpath" >&5 + $as_echo "$python_incpath" >&6; } + python_header="$python_incpath/Python.h" diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.5.1.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.5.1.patch new file mode 100644 index 0000000000..dc5f484203 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.5.1.patch @@ -0,0 +1,39 @@ +--- configure.orig 2016-09-30 09:25:10.000000000 +0200 ++++ configure 2016-09-30 09:27:01.000000000 +0200 +@@ -19681,11 +19681,15 @@ + cat >conftest.py <<_ACEOF + + import sys, string ++# Python 2 and 3 compatible ++from future.builtins import map ++# Python 2 and 3: forward-compatible ++from future.builtins import range + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. +-minver = map(int, string.split('2.5', '.')) + [0, 0, 0] ++minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] + minverhex = 0 +-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] ++for i in range(0, 4): minverhex = (minverhex << 8) + minver[i] + if sys.hexversion >= minverhex: + sys.exit( 0 ) + else: +@@ -19713,15 +19717,15 @@ + fi + + +- PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info[:2]));"` ++ PYTHON_VERSION=`$PYTHON -c "from __future__ import print_function; import sys; print('.'.join(map(str, sys.version_info[:2])));"` + +- RIVET_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True);"` ++ RIVET_PYTHONPATH=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True));"` + + ## Test for Python header + if test -x "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 + $as_echo_n "checking for Python include path... " >&6; } +- python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"` ++python_incpath=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_incpath" >&5 + $as_echo "$python_incpath" >&6; } + python_header="$python_incpath/Python.h" diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.5.2.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.5.2.patch new file mode 100644 index 0000000000..9f536d3751 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.5.2.patch @@ -0,0 +1,10 @@ +--- ./include/Rivet/Tools/RivetSTL.hh.orig 2017-08-03 11:49:33.005431033 +0200 ++++ ./include/Rivet/Tools/RivetSTL.hh 2017-08-03 11:50:13.817841608 +0200 +@@ -19,6 +19,7 @@ + #include <iomanip> + #include <cmath> + #include <limits> ++#include <functional> + + + #ifndef foreach diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.5.3.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.5.3.patch new file mode 100644 index 0000000000..bebf5c73ab --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.5.3.patch @@ -0,0 +1,43 @@ +--- include/Rivet/Config/RivetCommon.hh.orig 2017-05-31 12:32:04.547062840 +0200 ++++ include/Rivet/Config/RivetCommon.hh 2017-05-31 12:32:12.379054886 +0200 +@@ -2,6 +2,7 @@ + #define RIVET_RivetCommon_HH + + // Convenience build-setup header for Rivet internal use ++#include <functional> + + // Automatic build info from autoconf + #include "Rivet/Config/RivetConfig.hh" +--- include/Rivet/Run.hh.orig 2017-05-31 12:36:00.225823486 +0200 ++++ include/Rivet/Run.hh 2017-05-31 12:36:18.653804770 +0200 +@@ -4,6 +4,7 @@ + + #include "Rivet/Tools/RivetSTL.hh" + #include "Rivet/Tools/RivetHepMC.hh" ++#include <functional> + + namespace Rivet { + +--- include/Rivet/Particle.hh.orig 2017-05-31 12:39:14.273626411 +0200 ++++ include/Rivet/Particle.hh 2017-05-31 14:00:02.387272379 +0200 +@@ -11,6 +11,8 @@ + // NOTE: Rivet/Tools/ParticleUtils.hh included at the end + #include "fastjet/PseudoJet.hh" + ++#include <functional> ++ + namespace Rivet { + + +--- include/Rivet/Tools/RivetSTL.hh.orig 2017-05-31 14:05:28.368975178 +0200 ++++ include/Rivet/Tools/RivetSTL.hh 2017-05-31 14:05:44.432960512 +0200 +@@ -1,6 +1,8 @@ + #ifndef RIVET_RivetSTL_HH + #define RIVET_RivetSTL_HH + ++#include <functional> ++ + #include <string> + #include <vector> + #include <set> + diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.5.4.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.5.4.patch new file mode 100644 index 0000000000..af338da6d5 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.5.4.patch @@ -0,0 +1,42 @@ +patch written by GENSER to avoid system libraries of GLS coming from fastjet-config +--- include/Rivet/Tools/JetUtils.hh ++++ include/Rivet/Tools/JetUtils.hh +@@ -47,4 +47,5 @@ + struct BoolJetFunctor { + virtual bool operator()(const Jet& p) const = 0; ++ virtual ~BoolJetFunctor() {} + }; + +--- include/Rivet/Tools/ParticleBaseUtils.hh ++++ include/Rivet/Tools/ParticleBaseUtils.hh +@@ -23,4 +23,5 @@ + struct BoolParticleBaseFunctor { + virtual bool operator()(const ParticleBase& p) const = 0; ++ virtual ~BoolParticleBaseFunctor() {} + }; + +@@ -397,4 +398,5 @@ + struct DoubleParticleBaseFunctor { + virtual double operator()(const ParticleBase& p) const = 0; ++ virtual ~DoubleParticleBaseFunctor() {} + }; + +--- include/Rivet/Tools/ParticleUtils.hh ++++ include/Rivet/Tools/ParticleUtils.hh +@@ -486,4 +486,5 @@ + struct BoolParticleFunctor { + virtual bool operator()(const Particle& p) const = 0; ++ virtual ~BoolParticleFunctor() {} + }; + +--- src/Makefile.in.orig 2018-01-30 13:52:58.641670247 +0100 ++++ src/Makefile.in 2018-01-30 13:53:19.377586118 +0100 +@@ -449,7 +449,7 @@ + libRivet_la_SOURCES = + libRivet_la_LDFLAGS = -export-dynamic -avoid-version -L$(YODALIBPATH) -L$(HEPMCLIBPATH) + libRivet_la_LIBADD = Core/libRivetCore.la Projections/libRivetProjections.la Tools/libRivetTools.la $(ANA_LIBADD) \ +- -lYODA -lHepMC -ldl -lm $(FASTJETCONFIGLIBADD) $(GSL_LDFLAGS) ++ -lYODA -lHepMC -ldl -lm $(GSL_LDFLAGS) $(FASTJETCONFIGLIBADD) + + all: all-recursive + diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.6.0.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.6.0.patch new file mode 100644 index 0000000000..2cb7cab14b --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.6.0.patch @@ -0,0 +1,90 @@ +--- include/Rivet/Tools/JetUtils.hh ++++ include/Rivet/Tools/JetUtils.hh +@@ -47,4 +47,5 @@ + struct BoolJetFunctor { + virtual bool operator()(const Jet& p) const = 0; ++ virtual ~BoolJetFunctor() {} + }; + +--- include/Rivet/Tools/ParticleBaseUtils.hh ++++ include/Rivet/Tools/ParticleBaseUtils.hh +@@ -23,4 +23,5 @@ + struct BoolParticleBaseFunctor { + virtual bool operator()(const ParticleBase& p) const = 0; ++ virtual ~BoolParticleBaseFunctor() {} + }; + +@@ -397,4 +398,5 @@ + struct DoubleParticleBaseFunctor { + virtual double operator()(const ParticleBase& p) const = 0; ++ virtual ~DoubleParticleBaseFunctor() {} + }; + +--- include/Rivet/Tools/ParticleUtils.hh ++++ include/Rivet/Tools/ParticleUtils.hh +@@ -486,4 +486,5 @@ + struct BoolParticleFunctor { + virtual bool operator()(const Particle& p) const = 0; ++ virtual ~BoolParticleFunctor() {} + }; + +--- analyses/Makefile.in.orig 2018-06-28 09:22:46.722022129 +0200 ++++ analyses/Makefile.in 2018-06-28 10:11:59.772373529 +0200 +@@ -523,21 +523,21 @@ + @ENABLE_ANALYSES_TRUE@%.so: + @ENABLE_ANALYSES_TRUE@ @+echo && RIVET_BUILDPLUGIN_BEFORE_INSTALL=1 bash $(top_builddir)/bin/rivet-buildplugin -j2 $@ $^ -I$(top_builddir)/include + +-@ENABLE_ANALYSES_TRUE@RivetALICEAnalyses.so: $(shell ls $(srcdir)/pluginALICE/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetATLASAnalyses.so: $(shell ls $(srcdir)/pluginATLAS/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetCDFAnalyses.so : $(shell ls $(srcdir)/pluginCDF/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetCMSAnalyses.so : $(shell ls $(srcdir)/pluginCMS/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetD0Analyses.so : $(shell ls $(srcdir)/pluginD0/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetHERAAnalyses.so : $(shell ls $(srcdir)/pluginHERA/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetLEPAnalyses.so : $(shell ls $(srcdir)/pluginLEP/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetLHCbAnalyses.so : $(shell ls $(srcdir)/pluginLHCb/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetLHCfAnalyses.so : $(shell ls $(srcdir)/pluginLHCf/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetMCAnalyses.so : $(shell ls $(srcdir)/pluginMC/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetMiscAnalyses.so : $(shell ls $(srcdir)/pluginMisc/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetPetraAnalyses.so: $(shell ls $(srcdir)/pluginPetra/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetRHICAnalyses.so : $(shell ls $(srcdir)/pluginRHIC/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetSPSAnalyses.so : $(shell ls $(srcdir)/pluginSPS/*.cc) +-@ENABLE_ANALYSES_TRUE@RivetTOTEMAnalyses.so: $(shell ls $(srcdir)/pluginTOTEM/*.cc) ++@ENABLE_ANALYSES_TRUE@RivetALICEAnalyses.so: $(shell find $(srcdir)/pluginALICE/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetATLASAnalyses.so: $(shell find $(srcdir)/pluginATLAS/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetCDFAnalyses.so : $(shell find $(srcdir)/pluginCDF/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetCMSAnalyses.so : $(shell find $(srcdir)/pluginCMS/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetD0Analyses.so : $(shell find $(srcdir)/pluginD0/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetHERAAnalyses.so : $(shell find $(srcdir)/pluginHERA/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetLEPAnalyses.so : $(shell find $(srcdir)/pluginLEP/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetLHCbAnalyses.so : $(shell find $(srcdir)/pluginLHCb/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetLHCfAnalyses.so : $(shell find $(srcdir)/pluginLHCf/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetMCAnalyses.so : $(shell find $(srcdir)/pluginMC/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetMiscAnalyses.so : $(shell find $(srcdir)/pluginMisc/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetPetraAnalyses.so: $(shell find $(srcdir)/pluginPetra/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetRHICAnalyses.so : $(shell find $(srcdir)/pluginRHIC/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetSPSAnalyses.so : $(shell find $(srcdir)/pluginSPS/ -name '*.cc' -not -name 'tmp*') ++@ENABLE_ANALYSES_TRUE@RivetTOTEMAnalyses.so: $(shell find $(srcdir)/pluginTOTEM/ -name '*.cc' -not -name 'tmp*') + + @ENABLE_ANALYSES_TRUE@all-local: $(PLUGIN_LIBS) $(PLUGIN_DATAFILES) + @ENABLE_ANALYSES_TRUE@ mkdir -p $(builddir)/data +--- analyses/pluginATLAS/ATLAS_2016_CONF_2016_037.cc.orig 2018-07-02 10:43:08.656094368 +0200 ++++ analyses/pluginATLAS/ATLAS_2016_CONF_2016_037.cc 2018-07-02 10:44:04.920361160 +0200 +@@ -2,6 +2,7 @@ + #include "Rivet/Analysis.hh" + #include "Rivet/Projections/FinalState.hh" + #include "Rivet/Projections/PromptFinalState.hh" ++#include "Rivet/Projections/ChargedFinalState.hh" + #include "Rivet/Projections/FastJets.hh" + #include "Rivet/Projections/Sphericity.hh" + #include "Rivet/Projections/SmearedParticles.hh" +--- include/Rivet/AnalysisHandler.hh.orig 2018-07-10 10:39:21.719532209 +0200 ++++ include/Rivet/AnalysisHandler.hh 2018-07-10 10:39:29.225608530 +0200 +@@ -17,7 +17,7 @@ + + // Needed to make smart pointers compare equivalent in the STL set + struct CmpAnaHandle { +- bool operator() (const AnaHandle& a, const AnaHandle& b) { ++ bool operator() (const AnaHandle& a, const AnaHandle& b) const { + return a.get() < b.get(); + } + }; diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.6.1.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.6.1.patch new file mode 100644 index 0000000000..878e72d739 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.6.1.patch @@ -0,0 +1,24 @@ +--- doc/Makefile.in.orig 2018-10-17 18:29:15.568630034 +0200 ++++ doc/Makefile.in 2018-10-17 18:31:45.829375147 +0200 +@@ -594,15 +594,15 @@ + .PRECIOUS: Makefile + + @ENABLE_PYEXT_TRUE@analyses.html: $(top_srcdir)/analyses $(srcdir)/mk-analysis-html +-@ENABLE_PYEXT_TRUE@ LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(LD_LIBRARY_PATH) \ +-@ENABLE_PYEXT_TRUE@ DYLD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(DYLD_LIBRARY_PATH) \ ++@ENABLE_PYEXT_TRUE@ LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(HEPMCLIBPATH):$(FASTJETLIBPATH):$(YODALIBPATH):$(RIVETLIBPATH):$(LD_LIBRARY_PATH) \ ++@ENABLE_PYEXT_TRUE@ DYLD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(HEPMCLIBPATH):$(FASTJETLIBPATH):$(YODALIBPATH):$(RIVETLIBPATH):$(DYLD_LIBRARY_PATH) \ + @ENABLE_PYEXT_TRUE@ PYTHONPATH=$(YODA_PYTHONPATH):$(RIVET_PYTHONPATH):$(PYTHONPATH) \ +-@ENABLE_PYEXT_TRUE@ $(srcdir)/mk-analysis-html ++@ENABLE_PYEXT_TRUE@ $(PYTHON) $(srcdir)/mk-analysis-html + @ENABLE_PYEXT_TRUE@analyses.json: $(top_srcdir)/analyses $(srcdir)/mk-analysis-json +-@ENABLE_PYEXT_TRUE@ LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(LD_LIBRARY_PATH) \ +-@ENABLE_PYEXT_TRUE@ DYLD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(DYLD_LIBRARY_PATH) \ ++@ENABLE_PYEXT_TRUE@ LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(HEPMCLIBPATH):$(FASTJETLIBPATH):$(YODALIBPATH):$(RIVETLIBPATH):$(LD_LIBRARY_PATH) \ ++@ENABLE_PYEXT_TRUE@ DYLD_LIBRARY_PATH=$(top_builddir)/src/.libs:$(HEPMCLIBPATH):$(FASTJETLIBPATH):$(YODALIBPATH):$(RIVETLIBPATH):$(DYLD_LIBRARY_PATH) \ + @ENABLE_PYEXT_TRUE@ PYTHONPATH=$(YODA_PYTHONPATH):$(RIVET_PYTHONPATH):$(PYTHONPATH) \ +-@ENABLE_PYEXT_TRUE@ $(srcdir)/mk-analysis-json ++@ENABLE_PYEXT_TRUE@ $(PYTHON) $(srcdir)/mk-analysis-json + + @WITH_ASCIIDOC_TRUE@compare-histos.html: compare-histos.txt + @WITH_ASCIIDOC_TRUE@ asciidoc -a toc compare-histos.txt diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.6.2.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.6.2.patch new file mode 100644 index 0000000000..a327f481d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.6.2.patch @@ -0,0 +1,97 @@ +--- configure.ac.orig 2019-01-23 11:02:06.206570992 +0100 ++++ configure.ac 2019-01-23 11:02:26.704761899 +0100 +@@ -151,12 +151,12 @@ + + + # ## GNU Scientific Library +-# AC_SEARCH_GSL +-# AC_CEDAR_HEADERS([gsl], , , [AC_MSG_ERROR([GSL (GNU Scientific Library) is required])]) +-# oldCPPFLAGS=$CPPFLAGS +-# CPPFLAGS="$CPPFLAGS -I$GSLINCPATH" +-# AC_CHECK_HEADER([gsl/gsl_vector.h], [], [AC_MSG_ERROR([GSL vectors not found.])]) +-# CPPFLAGS=$oldCPPFLAGS ++AC_SEARCH_GSL ++AC_CEDAR_HEADERS([gsl], , , [AC_MSG_ERROR([GSL (GNU Scientific Library) is required])]) ++oldCPPFLAGS=$CPPFLAGS ++CPPFLAGS="$CPPFLAGS -I$GSLINCPATH" ++AC_CHECK_HEADER([gsl/gsl_vector.h], [], [AC_MSG_ERROR([GSL vectors not found.])]) ++CPPFLAGS=$oldCPPFLAGS + + + ## Disable build/install of standard analyses +@@ -256,7 +256,7 @@ + ## Set default build flags + AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include" + #AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)/include/eigen3" +-#AM_CPPFLAGS="$AM_CPPFLAGS \$(GSL_CPPFLAGS)" ++AM_CPPFLAGS="$AM_CPPFLAGS \$(GSL_CPPFLAGS)" + dnl AM_CPPFLAGS="$AM_CPPFLAGS \$(BOOST_CPPFLAGS)" + AM_CPPFLAGS="$AM_CPPFLAGS -I\$(YODAINCPATH)" + AM_CPPFLAGS="$AM_CPPFLAGS -I\$(HEPMCINCPATH)" +--- bin/rivet-config.in.orig 2019-01-23 11:08:04.608907832 +0100 ++++ bin/rivet-config.in 2019-01-23 11:08:25.058098155 +0100 +@@ -82,8 +82,8 @@ + test -n "$iyoda" && OUT="$OUT -I${iyoda}" + ifastjet="@FASTJETINCPATH@" + test -n "$ifastjet" && OUT="$OUT -I${ifastjet}" +- # igsl="@GSLINCPATH@" +- # test -n "$igsl" && OUT="$OUT -I${igsl}" ++ igsl="@GSLINCPATH@" ++ test -n "$igsl" && OUT="$OUT -I${igsl}" + # iboost="@BOOST_CPPFLAGS@" + # test -n "$iboost" && OUT="$OUT ${iboost}" + fi +@@ -98,8 +98,8 @@ + test -n "$lyoda" && OUT="$OUT -L${lyoda} -lYODA" + lfastjet="@FASTJETCONFIGLIBADD@" + test -n "$lfastjet" && OUT="$OUT ${lfastjet}" +- # lgsl="@GSLLIBPATH@" +- # test -n "$lgsl" && OUT="$OUT -L${lgsl}" ++ lgsl="@GSLLIBPATH@" ++ test -n "$lgsl" && OUT="$OUT -L${lgsl}" + fi + + tmp=$( echo "$*" | egrep -- '--\<libs\>|--\<ldadd\>') +--- bin/rivet-buildplugin.in.orig 2019-01-23 11:10:07.804054317 +0100 ++++ bin/rivet-buildplugin.in 2019-01-23 11:10:34.370301517 +0100 +@@ -169,8 +169,8 @@ + test -n "$iyoda" && mycppflags="$mycppflags -I${iyoda}" + ifastjet="@FASTJETINCPATH@" + test -n "$ifastjet" && mycppflags="$mycppflags -I${ifastjet}" +-# igsl="@GSLINCPATH@" +-# test -n "$igsl" && mycppflags="$mycppflags -I${igsl}" ++igsl="@GSLINCPATH@" ++test -n "$igsl" && mycppflags="$mycppflags -I${igsl}" + # iboost="@BOOST_CPPFLAGS@" + # test -n "$iboost" && mycppflags="$mycppflags ${iboost}" + +--- pyext/setup.py.in.orig 2019-01-23 11:12:04.694141901 +0100 ++++ pyext/setup.py.in 2019-01-23 11:12:44.531512512 +0100 +@@ -29,11 +29,11 @@ + + + ## Be careful with extracting the GSL path from the flags string +-# import re +-# re_libdirflag = re.compile(r".*-L\s*(\S+).*") +-# re_match = re_libdirflag.search("@GSL_LDFLAGS@") +-# if re_match: +- # lookupdirs.append( re_match.group(1) ) ++import re ++re_libdirflag = re.compile(r".*-L\s*(\S+).*") ++re_match = re_libdirflag.search("@GSL_LDFLAGS@") ++if re_match: ++ lookupdirs.append( re_match.group(1) ) + + ## A helper function + def ext(name, depends=[], statics=[]): +@@ -47,8 +47,8 @@ + language="c++", + # depends=depends, + include_dirs=[incdir1, incdir2, incdir3, incdir4], +- # extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@ @GSLCPPFLAGS@".split(), +- extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@".split(), ++ extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@ @GSLCPPFLAGS@".split(), ++ # extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@".split(), + extra_link_args=BASE_LINK_ARGS, + library_dirs=lookupdirs, + runtime_library_dirs=lookupdirs[1:], diff --git a/var/spack/repos/builtin/packages/rivet/rivet-2.7.0.patch b/var/spack/repos/builtin/packages/rivet/rivet-2.7.0.patch new file mode 100644 index 0000000000..a327f481d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-2.7.0.patch @@ -0,0 +1,97 @@ +--- configure.ac.orig 2019-01-23 11:02:06.206570992 +0100 ++++ configure.ac 2019-01-23 11:02:26.704761899 +0100 +@@ -151,12 +151,12 @@ + + + # ## GNU Scientific Library +-# AC_SEARCH_GSL +-# AC_CEDAR_HEADERS([gsl], , , [AC_MSG_ERROR([GSL (GNU Scientific Library) is required])]) +-# oldCPPFLAGS=$CPPFLAGS +-# CPPFLAGS="$CPPFLAGS -I$GSLINCPATH" +-# AC_CHECK_HEADER([gsl/gsl_vector.h], [], [AC_MSG_ERROR([GSL vectors not found.])]) +-# CPPFLAGS=$oldCPPFLAGS ++AC_SEARCH_GSL ++AC_CEDAR_HEADERS([gsl], , , [AC_MSG_ERROR([GSL (GNU Scientific Library) is required])]) ++oldCPPFLAGS=$CPPFLAGS ++CPPFLAGS="$CPPFLAGS -I$GSLINCPATH" ++AC_CHECK_HEADER([gsl/gsl_vector.h], [], [AC_MSG_ERROR([GSL vectors not found.])]) ++CPPFLAGS=$oldCPPFLAGS + + + ## Disable build/install of standard analyses +@@ -256,7 +256,7 @@ + ## Set default build flags + AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include" + #AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)/include/eigen3" +-#AM_CPPFLAGS="$AM_CPPFLAGS \$(GSL_CPPFLAGS)" ++AM_CPPFLAGS="$AM_CPPFLAGS \$(GSL_CPPFLAGS)" + dnl AM_CPPFLAGS="$AM_CPPFLAGS \$(BOOST_CPPFLAGS)" + AM_CPPFLAGS="$AM_CPPFLAGS -I\$(YODAINCPATH)" + AM_CPPFLAGS="$AM_CPPFLAGS -I\$(HEPMCINCPATH)" +--- bin/rivet-config.in.orig 2019-01-23 11:08:04.608907832 +0100 ++++ bin/rivet-config.in 2019-01-23 11:08:25.058098155 +0100 +@@ -82,8 +82,8 @@ + test -n "$iyoda" && OUT="$OUT -I${iyoda}" + ifastjet="@FASTJETINCPATH@" + test -n "$ifastjet" && OUT="$OUT -I${ifastjet}" +- # igsl="@GSLINCPATH@" +- # test -n "$igsl" && OUT="$OUT -I${igsl}" ++ igsl="@GSLINCPATH@" ++ test -n "$igsl" && OUT="$OUT -I${igsl}" + # iboost="@BOOST_CPPFLAGS@" + # test -n "$iboost" && OUT="$OUT ${iboost}" + fi +@@ -98,8 +98,8 @@ + test -n "$lyoda" && OUT="$OUT -L${lyoda} -lYODA" + lfastjet="@FASTJETCONFIGLIBADD@" + test -n "$lfastjet" && OUT="$OUT ${lfastjet}" +- # lgsl="@GSLLIBPATH@" +- # test -n "$lgsl" && OUT="$OUT -L${lgsl}" ++ lgsl="@GSLLIBPATH@" ++ test -n "$lgsl" && OUT="$OUT -L${lgsl}" + fi + + tmp=$( echo "$*" | egrep -- '--\<libs\>|--\<ldadd\>') +--- bin/rivet-buildplugin.in.orig 2019-01-23 11:10:07.804054317 +0100 ++++ bin/rivet-buildplugin.in 2019-01-23 11:10:34.370301517 +0100 +@@ -169,8 +169,8 @@ + test -n "$iyoda" && mycppflags="$mycppflags -I${iyoda}" + ifastjet="@FASTJETINCPATH@" + test -n "$ifastjet" && mycppflags="$mycppflags -I${ifastjet}" +-# igsl="@GSLINCPATH@" +-# test -n "$igsl" && mycppflags="$mycppflags -I${igsl}" ++igsl="@GSLINCPATH@" ++test -n "$igsl" && mycppflags="$mycppflags -I${igsl}" + # iboost="@BOOST_CPPFLAGS@" + # test -n "$iboost" && mycppflags="$mycppflags ${iboost}" + +--- pyext/setup.py.in.orig 2019-01-23 11:12:04.694141901 +0100 ++++ pyext/setup.py.in 2019-01-23 11:12:44.531512512 +0100 +@@ -29,11 +29,11 @@ + + + ## Be careful with extracting the GSL path from the flags string +-# import re +-# re_libdirflag = re.compile(r".*-L\s*(\S+).*") +-# re_match = re_libdirflag.search("@GSL_LDFLAGS@") +-# if re_match: +- # lookupdirs.append( re_match.group(1) ) ++import re ++re_libdirflag = re.compile(r".*-L\s*(\S+).*") ++re_match = re_libdirflag.search("@GSL_LDFLAGS@") ++if re_match: ++ lookupdirs.append( re_match.group(1) ) + + ## A helper function + def ext(name, depends=[], statics=[]): +@@ -47,8 +47,8 @@ + language="c++", + # depends=depends, + include_dirs=[incdir1, incdir2, incdir3, incdir4], +- # extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@ @GSLCPPFLAGS@".split(), +- extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@".split(), ++ extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@ @GSLCPPFLAGS@".split(), ++ # extra_compile_args="-I@prefix@/include @PYEXT_CXXFLAGS@ @HEPMCCPPFLAGS@ @FASTJETCPPFLAGS@ @YODACPPFLAGS@".split(), + extra_link_args=BASE_LINK_ARGS, + library_dirs=lookupdirs, + runtime_library_dirs=lookupdirs[1:], diff --git a/var/spack/repos/builtin/packages/rivet/rivet-3.0.0.patch b/var/spack/repos/builtin/packages/rivet/rivet-3.0.0.patch new file mode 100644 index 0000000000..229bfb4acc --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-3.0.0.patch @@ -0,0 +1,70 @@ +--- bin/rivet-buildplugin.in.orig Mon Jul 08 15:16:09 2019 +0100 ++++ bin/rivet-buildplugin.in Wed Jul 10 16:15:41 2019 +0100 +@@ -172,4 +172,6 @@ + ifastjet="@FASTJETINCPATH@" + test -n "$ifastjet" && mycppflags="$mycppflags -I${ifastjet}" ++ifjcontrib="@FJCONTRIBCPPFLAGS@" ++test -n "$ifjcontrib" && mycppflags="$mycppflags ${ifjcontrib}" + + ## Get Rivet system linker flags (duplicating that in rivet-config.in) +--- bin/rivet-config.in.orig Mon Jul 08 15:16:09 2019 +0100 ++++ bin/rivet-config.in Wed Jul 10 16:15:41 2019 +0100 +@@ -83,4 +83,6 @@ + ifastjet="@FASTJETINCPATH@" + test -n "$ifastjet" && OUT="$OUT -I${ifastjet}" ++ ifjcontrib="@FJCONTRIBCPPFLAGS@" ++ test -n "$ifjcontrib" && OUT="$OUT ${ifjcontrib}" + fi + +--- configure.ac.orig Mon Jul 08 15:16:09 2019 +0100 ++++ configure.ac Wed Jul 10 16:15:41 2019 +0100 +@@ -197,10 +197,26 @@ + FASTJETLIBADD="$FASTJETLIBADD -lEECambridgePlugin -lJadePlugin" + fi; ++ ++## FastJet contrib (allow paths specified separately from FJ) ++AC_ARG_WITH([fjcontrib], ++ [AC_HELP_STRING(--with-fjcontrib, path to FastJet Contrib @<:@$FASTJETPATH@:>@)], [], []) ++if test -n "$with_fjcontrib"; then ++ AC_MSG_NOTICE([FastJet Contrib base path given: $with_fjcontrib]) ++ FJCONTRIBINCPATH=$with_fjcontrib/include ++ FJCONTRIBLIBPATH=$with_fjcontrib/lib ++ FJCONTRIBCPPFLAGS=-I$FJCONTRIBINCPATH ++ AC_SUBST(FJCONTRIBINCPATH) ++ AC_SUBST(FJCONTRIBLIBPATH) ++ AC_SUBST(FJCONTRIBCPPFLAGS) ++ FASTJETLIBADD="-L$FJCONTRIBLIBPATH $FASTJETLIBADD" ++fi + FASTJETLIBADD="$FASTJETLIBADD -lfastjetcontribfragile -lfastjettools" ++ ++## Test FastJet + Contrib ++## Check for FastJet headers that require the --enable-all(cxx)plugins option + AC_MSG_NOTICE([FastJet LIBADD = $FASTJETLIBADD]) + AC_SUBST(FASTJETLIBADD) +-# Check for FastJet headers that require the --enable-all(cxx)plugins option + oldCPPFLAGS=$CPPFLAGS +-CPPFLAGS="$CPPFLAGS -I$FASTJETINCPATH" ++CPPFLAGS="$CPPFLAGS $FASTJETCPPFLAGS $FJCONTRIBCPPFLAGS" + oldLIBS=$LIBS + LIBS="$LIBS $FASTJETLIBADD" +@@ -339,5 +355,4 @@ + #AM_CPPFLAGS="$AM_CPPFLAGS -I\$(top_srcdir)/include/eigen3" + #AM_CPPFLAGS="$AM_CPPFLAGS \$(GSL_CPPFLAGS)" +-dnl AM_CPPFLAGS="$AM_CPPFLAGS \$(BOOST_CPPFLAGS)" + AM_CPPFLAGS="$AM_CPPFLAGS -I\$(YODAINCPATH)" + if test x$use_hepmc2 = xyes ; then +@@ -346,5 +361,5 @@ + AM_CPPFLAGS="$AM_CPPFLAGS -I\$(HEPMC3INCPATH)" + fi +-AM_CPPFLAGS="$AM_CPPFLAGS -I\$(FASTJETINCPATH)" ++AM_CPPFLAGS="$AM_CPPFLAGS \$(FASTJETCPPFLAGS) \$(FJCONTRIBCPPFLAGS)" + AC_CEDAR_CHECKCXXFLAG([-pedantic], [AM_CXXFLAGS="$AM_CXXFLAGS -pedantic"]) + AC_CEDAR_CHECKCXXFLAG([-Wall], [AM_CXXFLAGS="$AM_CXXFLAGS -Wall"]) +--- src/AnalysisTools/Makefile.am.org Mon Jul 08 15:16:09 2019 +0100 ++++ src/AnalysisTools/Makefile.am Wed Jul 10 16:15:41 2019 +0100 +@@ -6,4 +6,4 @@ + MC_JetSplittings.cc + +-libRivetAnalysisTools_la_LDFLAGS = $(AM_LDFLAGS) -L$(FASTJETLIBPATH) ++libRivetAnalysisTools_la_LDFLAGS = $(AM_LDFLAGS) -L$(FASTJETLIBPATH) -L$(FJCONTRIBLIBPATH) + libRivetAnalysisTools_la_LIBS = $(FASTJETLIBADD) diff --git a/var/spack/repos/builtin/packages/rivet/rivet-3.0.1.patch b/var/spack/repos/builtin/packages/rivet/rivet-3.0.1.patch new file mode 100644 index 0000000000..31bdcbc7e3 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-3.0.1.patch @@ -0,0 +1,11 @@ +--- bin/rivet-buildplugin.in.orig 2020-04-30 14:41:44.988555918 +0200 ++++ bin/rivet-buildplugin.in 2020-04-30 14:42:21.301319083 +0200 +@@ -249,7 +249,7 @@ + srcnames[$idx]="$tmpfile" + fi + done +-objnames=("${srcnames[@]/.cc/.o}") ++objnames=("${srcnames[@]/%.cc/.o}") + + if [[ -z "$debug" ]]; then silencer="@"; fi + tmpmakefile=$(mktemp Makefile.tmp.XXXXXXXXXX) diff --git a/var/spack/repos/builtin/packages/rivet/rivet-3.1.0.patch b/var/spack/repos/builtin/packages/rivet/rivet-3.1.0.patch new file mode 100644 index 0000000000..ff09f52862 --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-3.1.0.patch @@ -0,0 +1,11 @@ +--- bin/rivet-build.in.orig 2020-04-30 11:11:53.820773774 +0200 ++++ bin/rivet-build.in 2020-04-30 11:12:32.766024110 +0200 +@@ -249,7 +249,7 @@ + srcnames[$idx]="$tmpfile" + fi + done +-objnames=("${srcnames[@]/.cc/.o}") ++objnames=("${srcnames[@]/%.cc/.o}") + + if [[ -z "$debug" ]]; then silencer="@"; fi + tmpmakefile=$(mktemp Makefile.tmp.XXXXXXXXXX) diff --git a/var/spack/repos/builtin/packages/rivet/rivet-3.1.1.patch b/var/spack/repos/builtin/packages/rivet/rivet-3.1.1.patch new file mode 100644 index 0000000000..687d22819a --- /dev/null +++ b/var/spack/repos/builtin/packages/rivet/rivet-3.1.1.patch @@ -0,0 +1,11 @@ +--- configure.ac.orig 2020-05-12 11:26:03.482506197 +0200 ++++ configure.ac 2020-05-12 11:54:55.569077342 +0200 +@@ -211,7 +211,7 @@ + if test "$fjmajor" -lt 3; then + AC_MSG_ERROR([FastJet version 3.0.0 or later is required]) + fi +- FASTJETLIBADD="$($FJCONFIG --plugins --shared --libs| tr ' ' '\n' | grep -v gcc | tr '\n' ' ')" ++ FASTJETLIBADD="$($FJCONFIG --plugins --shared --libs)" + else + FASTJETLIBADD="-L$FASTJETLIBPATH -l$FASTJETLIBNAME" + FASTJETLIBADD="$FASTJETLIBADD -lSISConePlugin -lsiscone -lsiscone_spherical" diff --git a/var/spack/repos/builtin/packages/rocclr/opengl.patch b/var/spack/repos/builtin/packages/rocclr/opengl.patch new file mode 100644 index 0000000000..fc9bacee50 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocclr/opengl.patch @@ -0,0 +1,49 @@ +From 98df37fc36b6276c26532e86e89be7e389745f4e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Torsten=20Ke=C3=9Fler?= <t.kessler@posteo.de> +Date: Sun, 19 Jul 2020 11:58:24 +0200 +Subject: [PATCH] Fix search for OpenCL include dirs + +--- + CMakeLists.txt | 26 +++++++++----------------- + 1 file changed, 9 insertions(+), 17 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 122277ee..02ca4644 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -53,26 +53,18 @@ find_package(amd_comgr REQUIRED CONFIG + ) + message(STATUS "Code Object Manager found at ${amd_comgr_DIR}.") + +-# FIXME: Use find_package(OpenCL) +-find_library( OpenCL REQUIRED CONFIG +- PATHS +- /opt/rocm ++find_path(OPENCL_INCLUDE_DIR ++ NAMES OpenCL/cl.h CL/cl.h ++ PATH_SUFFIXES include opencl/include inc include/x86_64 include/x64 ++ PATHS ${OPENCL_DIR} ++ DOC "OpenCL include header OpenCL/cl.h or CL/cl.h" + ) + +-if( NOT OPENCL_DIR ) +- find_path(OPENCL_INCLUDE_DIR +- NAMES OpenCL/cl.h CL/cl.h +- PATH_SUFFIXES include opencl/include inc include/x86_64 include/x64 +- PATHS /opt/rocm +- DOC "OpenCL include header OpenCL/cl.h or CL/cl.h" +- ) +- +- if( NOT OPENCL_INCLUDE_DIR ) +- unset(OPENCL_INCLUDE_DIR CACHE) +- set(OPENCL_INCLUDE_DIR "" CACHE PATH "" FORCE ) +- endif() +- message(STATUS "Opencl found at ${OPENCL_INCLUDE_DIR}.") ++if( NOT OPENCL_INCLUDE_DIR ) ++ unset(OPENCL_INCLUDE_DIR CACHE) ++ set(OPENCL_INCLUDE_DIR "" CACHE PATH "" FORCE ) + endif() ++message(STATUS "Opencl found at ${OPENCL_INCLUDE_DIR}.") + + + diff --git a/var/spack/repos/builtin/packages/rocclr/package.py b/var/spack/repos/builtin/packages/rocclr/package.py new file mode 100644 index 0000000000..732e28e7f6 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocclr/package.py @@ -0,0 +1,53 @@ +# 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 Rocclr(CMakePackage): + """ROCclr is a virtual device interface that compute runtimes interact + with to different backends such as ROCr or PAL This abstraction allows + runtimes to work on Windows as well as on Linux without much effort.""" + + homepage = "https://github.com/ROCm-Developer-Tools/ROCclr" + url = "https://github.com/ROCm-Developer-Tools/ROCclr/archive/roc-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='87c1ee9f02b8aa487b628c543f058198767c474cec3d21700596a73c028959e1') + + depends_on('cmake@3:', type='build') + for ver in ['3.5.0']: + depends_on('hsakmt-roct@' + ver, type='build', when='@' + ver) + depends_on('hsa-rocr-dev@' + ver, type='build', when='@' + ver) + depends_on('comgr@' + ver, type='build', when='@' + ver) + depends_on('mesa~llvm@18.3:', type='link', when='@' + ver) + + patch('opengl.patch', when='@3.5.0') + + resource(name='opencl-on-vdi', + url='https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/roc-3.5.0.tar.gz', + sha256='511b617d5192f2d4893603c1a02402b2ac9556e9806ff09dd2a91d398abf39a0', + expand=True, + destination='', + placement='opencl-on-vdi') + + @run_after('install') + def deploy_missing_files(self): + # the amdrocclr_staticTargets.cmake file is generated but not installed + # and when we install it by hand, we have to fix the path to the static + # library libamdrocclr_static.a from build dir to prefix lib dir. + cmakefile = join_path(self.build_directory, + 'amdrocclr_staticTargets.cmake') + filter_file(self.build_directory, self.prefix.lib, cmakefile) + install(cmakefile, self.prefix.lib) + + def cmake_args(self): + args = [ + '-DUSE_COMGR_LIBRARY=yes', + '-DOPENCL_DIR={0}/opencl-on-vdi'.format(self.stage.source_path) + ] + return args diff --git a/var/spack/repos/builtin/packages/rocfft/package.py b/var/spack/repos/builtin/packages/rocfft/package.py new file mode 100644 index 0000000000..0300649cae --- /dev/null +++ b/var/spack/repos/builtin/packages/rocfft/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 * + + +class Rocfft(CMakePackage): + """Radeon Open Compute FFT library""" + + homepage = "https://github.com/ROCmSoftwarePlatform/rocFFT/" + url = "https://github.com/ROCmSoftwarePlatform/rocfft/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='629f02cfecb7de5ad2517b6a8aac6ed4de60d3a9c620413c4d9db46081ac2c88') + + amdgpu_targets = ( + 'gfx701', 'gfx801', 'gfx802', 'gfx803', + 'gfx900', 'gfx906', 'gfx908', 'gfx1010', + 'gfx1011', 'gfx1012' + ) + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + variant('amdgpu_target', default='gfx701', multi=True, values=amdgpu_targets) + + depends_on('cmake@3:', type='build') + depends_on('rocm-cmake@3.5.0', type='build', when='@3.5.0') + depends_on('rocm-device-libs@3.5.0', type='build', when='@3.5.0') + + depends_on('hip@3.5.0', type=('build', 'link'), when='@3.5.0') + depends_on('comgr@3.5.0', type='build', when='@3.5.0') + + def setup_build_environment(self, env): + env.set('CXX', self.spec['hip'].hipcc) + + def cmake_args(self): + archs = ",".join(self.spec.variants['amdgpu_target'].value) + + args = [ + '-DCMAKE_CXX_FLAGS=--amdgpu-target={0}'.format(archs), + ] + return args diff --git a/var/spack/repos/builtin/packages/rocgdb/package.py b/var/spack/repos/builtin/packages/rocgdb/package.py new file mode 100644 index 0000000000..927c6c3a68 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocgdb/package.py @@ -0,0 +1,57 @@ +# 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 Rocgdb(AutotoolsPackage): + """This is ROCgdb, the ROCm source-level debugger for Linux, + based on GDB, the GNU source-level debugger.""" + + homepage = "https://github.com/ROCm-Developer-Tools/ROCgdb/" + url = "https://github.com/ROCm-Developer-Tools/ROCgdb/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='cf36d956e84c7a5711b71f281a44b0a9708e13e941d8fca0247d01567e7ee7d1') + depends_on('cmake@3:', type='build') + depends_on('texinfo', type='build') + depends_on('bison', type='build') + depends_on('flex', type='build') + depends_on('libunwind', type='build') + depends_on('expat', type='build') + depends_on('python', type='build') + depends_on('zlib', type='link') + for ver in ['3.5.0']: + depends_on('rocm-dbgapi@' + ver, type='link', when='@' + ver) + depends_on('comgr@' + ver, type='link', when='@' + ver) + + build_directory = 'spack-build' + + def configure_args(self): + # Generic options to compile GCC + options = [ + # Distributor options + '--program-prefix=roc', + '--enable-64-bit-bfd', + '--with-bugurl=https://github.com/ROCm-Developer-Tools/ROCgdb/issues', + '--with-pkgversion=-ROCm', + '--enable-targets=x86_64-linux-gnu,amdgcn-amd-amdhsa', + '--disable-ld', + '--disable-gas', + '--disable-gdbserver', + '--disable-sim', + '--enable-tui', + '--disable-gdbtk', + '--disable-shared', + '--with-expat', + '--with-system-zlib' + '--without-guile', + '--with-babeltrace', + '--with-lzma', + '--with-python' + ] + return options diff --git a/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py b/var/spack/repos/builtin/packages/rocm-bandwidth-test/package.py new file mode 100644 index 0000000000..c7e61a0227 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-bandwidth-test/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 RocmBandwidthTest(CMakePackage): + """Test to measure PciE bandwidth on ROCm platforms""" + + homepage = "https://github.com/RadeonOpenCompute/rocm_bandwidth_test" + url = "https://github.com/RadeonOpenCompute/rocm_bandwidth_test/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='fbb63fb8713617fd167d9c1501acbd92a6b189ee8e1a8aed668fa6666baae389') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + depends_on('cmake@3:', type='build') + for ver in ['3.5.0']: + depends_on('hsa-rocr-dev@' + ver, type='link', when='@' + ver) + depends_on('hsakmt-roct@' + ver, type='build', when='@' + ver) + + build_targets = ['package'] diff --git a/var/spack/repos/builtin/packages/rocm-cmake/package.py b/var/spack/repos/builtin/packages/rocm-cmake/package.py new file mode 100644 index 0000000000..e67384248f --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-cmake/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 RocmCmake(CMakePackage): + """ROCM cmake modules provides cmake modules for common build tasks + needed for the ROCM software stack""" + + homepage = "https://github.com/RadeonOpenCompute/rocm-cmake" + url = "https://github.com/RadeonOpenCompute/rocm-cmake/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='5fc09e168879823160f5fdf4fd1ace2702d36545bf733e8005ed4ca18c3e910f') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + depends_on('cmake@3:', type='build') + + def cmake_args(self): + return ['-DROCM_DISABLE_LDCONFIG=ON'] diff --git a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py new file mode 100644 index 0000000000..33f6c0e66f --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-dbgapi/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 RocmDbgapi(CMakePackage): + """The AMD Debugger API is a library that provides all the support + necessary for a debugger and other tools to perform low level + control of the execution and inspection of execution state of + AMD's commercially available GPU architectures.""" + + homepage = "https://github.com/ROCm-Developer-Tools/ROCdbgapi" + url = "https://github.com/ROCm-Developer-Tools/ROCdbgapi/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='eeba0592bc79b90e5b874bba18fd003eab347e8a3cc80343708f8d19e047e87b') + + depends_on('cmake@3:', type='build') + depends_on('hsa-rocr-dev@3.5.0', type='build', when='@3.5.0') + depends_on('comgr@3.5.0', type=('build', 'link'), when='@3.5.0') + + def patch(self): + filter_file(r'(<INSTALL_INTERFACE:include>)', r'\1 {0}/include'. + format(self.spec['hsa-rocr-dev'].prefix), 'CMakeLists.txt') diff --git a/var/spack/repos/builtin/packages/rocm-debug-agent/package.py b/var/spack/repos/builtin/packages/rocm-debug-agent/package.py new file mode 100644 index 0000000000..5df5dcb477 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-debug-agent/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 RocmDebugAgent(CMakePackage): + """Radeon Open Compute (ROCm) debug agent""" + + homepage = "https://github.com/ROCm-Developer-Tools/rocr_debug_agent" + url = "https://github.com/ROCm-Developer-Tools/rocr_debug_agent/archive/roc-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='203ccb18d2ac508aae40bf364923f67375a08798b20057e574a0c5be8039f133') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + depends_on('cmake@3:', type='build') + for ver in ['3.5.0']: + depends_on('hsa-rocr-dev@' + ver, type='link', when='@' + ver) + depends_on('hsakmt-roct@' + ver, type='link', when='@' + ver) + depends_on("elfutils", type='link', when='@' + ver) + + root_cmakelists_dir = 'src' + + def cmake_args(self): + spec = self.spec + args = [ + '-DCMAKE_PREFIX_PATH={0}/include/hsa;{1}/include,'. + format(spec['hsa-rocr-dev'].prefix, spec['hsakmt-roct'].prefix) + ] + return args diff --git a/var/spack/repos/builtin/packages/rocm-device-libs/package.py b/var/spack/repos/builtin/packages/rocm-device-libs/package.py new file mode 100644 index 0000000000..3d6a46f5d3 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-device-libs/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 RocmDeviceLibs(CMakePackage): + """set of AMD specific device-side language runtime libraries""" + + homepage = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs" + url = "https://github.com/RadeonOpenCompute/ROCm-Device-Libs/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='dce3a4ba672c4a2da4c2260ee4dc96ff6dd51877f5e7e1993cb107372a35a378') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + depends_on('cmake@3:', type='build') + for ver in ['3.5.0']: + depends_on('llvm-amdgpu@' + ver, type='build', when='@' + ver) + depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) + + def cmake_args(self): + spec = self.spec + args = ['-DLLVM_DIR={0}'.format(spec['llvm-amdgpu'].prefix), + '-DCMAKE_C_COMPILER={0}/bin/clang'.format( + spec['llvm-amdgpu'].prefix), + ] + return args diff --git a/var/spack/repos/builtin/packages/rocm-opencl/package.py b/var/spack/repos/builtin/packages/rocm-opencl/package.py new file mode 100644 index 0000000000..e761e7481a --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-opencl/package.py @@ -0,0 +1,53 @@ +# 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 RocmOpencl(CMakePackage): + """OpenCL: Open Computing Language on ROCclr""" + + homepage = "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime" + url = "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/roc-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='511b617d5192f2d4893603c1a02402b2ac9556e9806ff09dd2a91d398abf39a0') + depends_on('cmake@3:', type='build') + depends_on('rocclr@3.5.0', type='build', when='@3.5.0') + depends_on('comgr@3.5.0', type='build', when='@3.5.0') + depends_on('mesa~llvm@18.3:', type='link') + + def flag_handler(self, name, flags): + # The includes are messed up in ROCm 3.5.0: + # ROCM-OpenCL-Runtime uses flat includes + # and the find_package(ROCclr) bit it + # commented out. So instead we provide + # all the includes... + + if self.spec.satisfies('@3.5.0') and name in ('cflags', 'cxxflags'): + rocclr = self.spec['rocclr'].prefix.include + extra_includes = [ + 'include', + 'compiler/lib', + 'compiler/lib/include', + 'elf/utils/libelf', + 'elf/utils/common' + ] + + for p in extra_includes: + flag = '-I {0}'.format(join_path(rocclr, p)) + flags.append(flag) + + return (flags, None, None) + + def cmake_args(self): + + args = [ + '-DUSE_COMGR_LIBRARY=yes', + '-DROCclr_DIR={0}'.format(self.spec['rocclr'].prefix), + '-DLIBROCclr_STATIC_DIR={0}/lib'.format(self.spec['rocclr'].prefix) + ] + return args diff --git a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py new file mode 100644 index 0000000000..1adf05a626 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-smi-lib/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 * +from os import popen + + +class RocmSmiLib(CMakePackage): + """It is a C library for Linux that provides a user space interface + for applications to monitor and control GPU applications.""" + + homepage = "https://github.com/RadeonOpenCompute/rocm_smi_lib" + url = "https://github.com/RadeonOpenCompute/rocm_smi_lib/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='a5d2ec3570d018b60524f0e589c4917f03d26578443f94bde27a170c7bb21e6e') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + depends_on('cmake@3:', type='build') + + @run_after('install') + def post_install(self): + popen('cp -R {0}/rocm_smi/lib {1}'.format(self.prefix, self.prefix)) + popen('cp -R {0}/rocm_smi/include {1}'.format(self.prefix, + self.prefix)) + popen('rm -R {0}/rocm_smi'.format(self.prefix)) diff --git a/var/spack/repos/builtin/packages/rocm-smi/package.py b/var/spack/repos/builtin/packages/rocm-smi/package.py new file mode 100644 index 0000000000..bbd0210172 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-smi/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 * +from os import popen + + +class RocmSmi(MakefilePackage): + """This tool exposes functionality for clock and temperature + management of your ROCm enabled system""" + + homepage = "https://github.com/RadeonOpenCompute/ROC-smi" + url = "https://github.com/RadeonOpenCompute/ROC-smi/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + version('3.5.0', sha256='4f46e947c415a4ac12b9f6989f15a42afe32551706b4f48476fba3abf92e8e7c') + + variant('build_type', default='Release', values=("Release", "Debug"), description='CMake build type') + + phases = ['edit', 'build'] + + @run_after('build') + def post_build(self): + popen('cp -R {0}/rocm_smi.py {1}'.format(self.build_directory, prefix)) + popen('ln -srf {0}/rocm_smi.py {1}/rocm-smi'.format(prefix, prefix)) + + popen('mkdir -p {0}/smi-test/tests'.format(prefix)) + popen('cp -R {0}/tests/ {1}/smi-test/'.format(self.build_directory, + prefix)) + popen('cp -R {0}/test-rocm-smi.sh {1}/smi-test'.format( + self.build_directory, prefix)) diff --git a/var/spack/repos/builtin/packages/rocminfo/package.py b/var/spack/repos/builtin/packages/rocminfo/package.py new file mode 100644 index 0000000000..97fe98ff5b --- /dev/null +++ b/var/spack/repos/builtin/packages/rocminfo/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 Rocminfo(CMakePackage): + """Radeon Open Compute (ROCm) Runtime rocminfo tool""" + + homepage = "https://github.com/RadeonOpenCompute/rocminfo" + url = "https://github.com/RadeonOpenCompute/rocminfo/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='1d113f06b7c9b60d0e92b2c12c0c704a565696867496fe7038e5dddd510567b7') + + depends_on('cmake@3:', type='build') + depends_on('hsakmt-roct@3.5.0', type='build', when='@3.5.0') + depends_on('hsa-rocr-dev@3.5.0', type='build', when='@3.5.0') + + def cmake_args(self): + args = ['-DROCM_DIR={0}'.format(self.spec['hsa-rocr-dev'].prefix)] + return args diff --git a/var/spack/repos/builtin/packages/rocprofiler-dev/package.py b/var/spack/repos/builtin/packages/rocprofiler-dev/package.py new file mode 100644 index 0000000000..5bf2f74b00 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocprofiler-dev/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 RocprofilerDev(CMakePackage): + """ROCPROFILER library for AMD HSA runtime API extension support""" + + homepage = "https://github.com/ROCm-Developer-Tools/rocprofiler" + url = "https://github.com/ROCm-Developer-Tools/rocprofiler/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='c42548dd467b7138be94ad68c715254eb56a9d3b670ccf993c43cd4d43659937') + + depends_on('cmake@3:', type='build') + depends_on('hsakmt-roct@3.5.0:', type='build', when='@3.5.0:') + depends_on('hsa-rocr-dev@3.5.0:', type='link', when='@3.5.0:') + depends_on('rocminfo@3.5.0:', type='build', when='@3.5.0:') + + resource(name='roctracer-dev', + url='https://github.com/ROCm-Developer-Tools/roctracer/archive/rocm-3.5.0.tar.gz', + sha256='7af5326c9ca695642b4265232ec12864a61fd6b6056aa7c4ecd9e19c817f209e', + expand=True, + destination='', + placement='roctracer') + + def patch(self): + filter_file('${HSA_RUNTIME_LIB_PATH}/../include', + '${HSA_RUNTIME_LIB_PATH}/../include ${HSA_KMT_LIB_PATH}/..\ + /include', 'test/CMakeLists.txt', string=True) + + def cmake_args(self): + args = ['-DPROF_API_HEADER_PATH={0}/roctracer/inc/ext'.format( + self.stage.source_path), + '-DROCM_ROOT_DIR:STRING={0}/include'.format( + self.spec['hsakmt-roct'].prefix) + ] + return args diff --git a/var/spack/repos/builtin/packages/roctracer-dev/package.py b/var/spack/repos/builtin/packages/roctracer-dev/package.py new file mode 100644 index 0000000000..5709ef487d --- /dev/null +++ b/var/spack/repos/builtin/packages/roctracer-dev/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 RoctracerDev(CMakePackage): + """ROC-tracer library: Runtimes Generic Callback/Activity APIs. + The goal of the implementation is to provide a generic independent from + specific runtime profiler to trace API and asyncronous activity.""" + + homepage = "https://github.com/ROCm-Developer-Tools/roctracer" + url = "https://github.com/ROCm-Developer-Tools/roctracer/archive/rocm-3.5.0.tar.gz" + + maintainers = ['srekolam', 'arjun-raj-kuppala'] + + version('3.5.0', sha256='7af5326c9ca695642b4265232ec12864a61fd6b6056aa7c4ecd9e19c817f209e') + + depends_on('cmake@3:', type='build') + depends_on('hsakmt-roct@3.5.0:', type='build', when='@3.5.0:') + depends_on('hsa-rocr-dev@3.5.0:', type='build', when='@3.5.0:') + depends_on('rocminfo@3.5.0:', type='build', when='@3.5.0:') + depends_on('hip@3.5.0:', type='build', when='@3.5.0:') + + def setup_build_environment(self, build_env): + spec = self.spec + build_env.set("HIP_PATH", spec['hip'].prefix) + + def patch(self): + filter_file('${CMAKE_PREFIX_PATH}/hsa', + '${HSA_RUNTIME_INC_PATH}', 'src/CMakeLists.txt', + string=True) + + def cmake_args(self): + args = ['-DHIP_VDI=1', + '-DCMAKE_MODULE_PATH={0}/cmake_modules'.format( + self.stage.source_path), + '-DHSA_RUNTIME_HSA_INC_PATH={0}/include'.format( + self.spec['hsa-rocr-dev'].prefix) + ] + return args diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 0e590e30ae..73770b31b9 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -26,6 +26,7 @@ class Root(CMakePackage): # Development version (when more recent than production). # Production version + version('6.22.00', sha256='efd961211c0f9cd76cf4a486e4f89badbcf1d08e7535bba556862b3c1a80beed') version('6.20.04', sha256='1f8c76ccdb550e64e6ddb092b4a7e9d0a10655ef80044828cba12d5e7c874472') version('6.20.02', sha256='0997586bf097c0afbc6f08edbffcebf5eb6a4237262216114ba3f5c8087dcba6') version('6.20.00', sha256='68421eb0434b38b66346fa8ea6053a0fdc9a6d254e4a72019f4e3633ae118bf0') @@ -235,6 +236,7 @@ class Root(CMakePackage): 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')) + depends_on('readline', when='+r') depends_on('shadow', when='+shadow') depends_on('sqlite', when='+sqlite') depends_on('tbb', when='+tbb') @@ -381,7 +383,7 @@ class Root(CMakePackage): ['pythia8'], ['qt', 'qt4'], # See conflicts ['qtgsi', 'qt4'], # See conflicts - ['r', 'R'], + ['r', 'r'], ['rfio', False], ['roofit'], ['root7'], # See conflicts @@ -447,9 +449,10 @@ class Root(CMakePackage): return options def setup_build_environment(self, env): - if 'lz4' in self.spec: - env.append_path('CMAKE_PREFIX_PATH', - self.spec['lz4'].prefix) + spec = self.spec + + if 'lz4' in spec: + env.append_path('CMAKE_PREFIX_PATH', spec['lz4'].prefix) # This hack is made necessary by a header name collision between # asimage's "import.h" and Python's "import.h" headers... @@ -463,20 +466,20 @@ class Root(CMakePackage): # into SPACK_INCLUDE_DIRS, even in a deprioritized form, because some # system/compiler combinations don't like having -I/usr/include around. def add_include_path(dep_name): - include_path = self.spec[dep_name].prefix.include + include_path = spec[dep_name].prefix.include if not is_system_path(include_path): env.append_path('SPACK_INCLUDE_DIRS', include_path) # With that done, let's go fixing those deps - if self.spec.satisfies('+x @:6.08.99'): - add_include_path('xextproto') - if self.spec.satisfies('@:6.12.99'): + if spec.satisfies('@:6.12.99'): add_include_path('zlib') - if '+x' in self.spec: + if '+x' in spec: + if spec.satisfies('@:6.08.99') or spec.satisfies('@6.22:'): + add_include_path('xextproto') add_include_path('fontconfig') add_include_path('libx11') add_include_path('xproto') - if '+opengl' in self.spec: + if '+opengl' in spec: add_include_path('glew') add_include_path('mesa-glu') diff --git a/var/spack/repos/builtin/packages/rsync/package.py b/var/spack/repos/builtin/packages/rsync/package.py index 078f11e630..2e361f7f6c 100644 --- a/var/spack/repos/builtin/packages/rsync/package.py +++ b/var/spack/repos/builtin/packages/rsync/package.py @@ -11,12 +11,17 @@ class Rsync(AutotoolsPackage): homepage = "https://rsync.samba.org" url = "https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz" + version('3.2.2', sha256='644bd3841779507665211fd7db8359c8a10670c57e305b4aab61b4e40037afa8') version('3.1.3', sha256='55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0') version('3.1.2', sha256='ecfa62a7fa3c4c18b9eccd8c16eaddee4bd308a76ea50b5c02a5840f09c0a1c2') version('3.1.1', sha256='7de4364fcf5fe42f3bdb514417f1c40d10bbca896abe7e7f2c581c6ea08a2621') depends_on('zlib') depends_on('popt') + depends_on('openssl', when='@3.2:') + depends_on('xxhash', when='@3.2:') + depends_on('zstd', when='@3.2:') + depends_on('lz4', when='@3.2:') def configure_args(self): return ['--with-included-zlib=no'] diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index ff8cba54e6..990095c90f 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -85,6 +85,8 @@ class Rust(Package): # 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.45.1', sha256='ea53e6424e3d1fe56c6d77a00e72c5d594b509ec920c5a779a7b8e1dbd74219b') + version('1.44.1', sha256='7e2e64cb298dd5d5aea52eafe943ba0458fa82f2987fdcda1ff6f537b6f88473') version('1.44.0', sha256='bf2df62317e533e84167c5bc7d4351a99fdab1f9cd6e6ba09f51996ad8561100') version('1.43.1', sha256='cde177b4a8c687da96f20de27630a1eb55c9d146a15e4c900d5c31cd3c3ac41d') version('1.43.0', sha256='75f6ac6c9da9f897f4634d5a07be4084692f7ccc2d2bb89337be86cfc18453a1') @@ -127,6 +129,18 @@ class Rust(Package): # This dictionary contains a version: hash dictionary for each supported # Rust target. rust_releases = { + '1.45.1': { + 'x86_64-unknown-linux-gnu': '76dc9f05b3bfd0465d6e6d22bc9fd5db0b473e3548e8b3d266ecfe4d9e5dca16', + 'powerpc64le-unknown-linux-gnu': '271846e4f5adc9a33754794c2ffab851f9e0313c8c1315264e7db5c8f63ab7ab', + 'aarch64-unknown-linux-gnu': 'd17fd560e8d5d12304835b71a7e22ac2c3babf4b9768db6a0e89868b4444f728', + 'x86_64-apple-darwin': '7334c927e4d2d12d209bf941b97ba309e548413e241d2d263c39c6e12b3ce154' + }, + '1.44.1': { + 'x86_64-unknown-linux-gnu': 'a41df89a461a580536aeb42755e43037556fba2e527dd13a1e1bb0749de28202', + 'powerpc64le-unknown-linux-gnu': '22deeca259459db31065af7c862fcab7fbfb623200520c65002ed2ba93d87ad2', + 'aarch64-unknown-linux-gnu': 'a2d74ebeec0b6778026b6c37814cdc91d14db3b0d8b6d69d036216f4d9cf7e49', + 'x86_64-apple-darwin': 'a5464e7bcbce9647607904a4afa8362382f1fc55d39e7bbaf4483ac00eb5d56a' + }, '1.44.0': { 'x86_64-unknown-linux-gnu': 'eaa34271b4ac4d2c281831117d4d335eed0b37fe7a34477d9855a6f1d930a624', 'powerpc64le-unknown-linux-gnu': '97038ea935c7a5b21f5aaaaad409c514e2b2ae8ea55994ba39645f453e98bc9f', diff --git a/var/spack/repos/builtin/packages/saws/package.py b/var/spack/repos/builtin/packages/saws/package.py index 8a55cc896a..41a117227f 100644 --- a/var/spack/repos/builtin/packages/saws/package.py +++ b/var/spack/repos/builtin/packages/saws/package.py @@ -16,4 +16,7 @@ class Saws(AutotoolsPackage): git = "https://bitbucket.org/saws/saws.git" version('develop', tag='master') + version('0.1.1', tag='v0.1.1') version('0.1.0', tag='v0.1.0') + + depends_on('python', type='build') diff --git a/var/spack/repos/builtin/packages/scons/fjcompiler.patch b/var/spack/repos/builtin/packages/scons/fjcompiler.patch new file mode 100644 index 0000000000..54ec369c55 --- /dev/null +++ b/var/spack/repos/builtin/packages/scons/fjcompiler.patch @@ -0,0 +1,179 @@ +diff -u -r -N a/engine/SCons/Tool/fcc.py b/engine/SCons/Tool/fcc.py +--- a/engine/SCons/Tool/fcc.py 1970-01-01 09:00:00.000000000 +0900 ++++ b/engine/SCons/Tool/fcc.py 2020-07-21 17:28:12.000000000 +0900 +@@ -0,0 +1,82 @@ ++"""SCons.Tool.fcc ++ ++Tool-specific initialization for Fujitsu C/C++ compiler. ++ ++There normally shouldn't be any need to import this module directly. ++It will usually be imported through the generic SCons.Tool.Tool() ++selection method. ++ ++""" ++ ++# ++# Copyright (c) 2001 - 2019 The SCons Foundation ++# ++# Permission is hereby granted, free of charge, to any person obtaining ++# a copy of this software and associated documentation files (the ++# "Software"), to deal in the Software without restriction, including ++# without limitation the rights to use, copy, modify, merge, publish, ++# distribute, sublicense, and/or sell copies of the Software, and to ++# permit persons to whom the Software is furnished to do so, subject to ++# the following conditions: ++# ++# The above copyright notice and this permission notice shall be included ++# in all copies or substantial portions of the Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY ++# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE ++# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++# ++ ++__revision__ = "src/engine/SCons/Tool/fcc.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" ++ ++from . import cc ++from . import cxx ++import os ++import re ++import subprocess ++ ++import SCons.Util ++import SCons.Tool ++ ++from . import gcc ++ ++compilers = ['fcc'] ++ ++ ++def generate(env): ++ """Add Builders and construction variables for Fujitsu C/C++ compiler to an Environment.""" ++ static_obj, shared_obj = SCons.Tool.createObjBuilders(env) ++ ++ if 'CC' not in env: ++ env['CC'] = env.Detect(compilers) or compilers[0] ++ ++ cc.generate(env) ++ ++ env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS -fPIC') ++ # determine C compiler version ++ version = gcc.detect_version(env, env['CC']) ++ if version: ++ env['CCVERSION'] = version ++ ++ if 'CXX' not in env: ++ env['CXX'] = env.Detect('FCC') or 'FCC' ++ ++ cxx.generate(env) ++ ++ # determine C++ compiler version ++ version = gcc.detect_version(env, env['CXX']) ++ if version: ++ env['CXXVERSION'] = version ++ ++def exists(env): ++ return env.Detect(compilers) ++ ++# Local Variables: ++# tab-width:4 ++# indent-tabs-mode:nil ++# End: ++# vim: set expandtab tabstop=4 shiftwidth=4: +diff -u -r -N a/engine/SCons/Tool/frt.py b/engine/SCons/Tool/frt.py +--- a/engine/SCons/Tool/frt.py 1970-01-01 09:00:00.000000000 +0900 ++++ b/engine/SCons/Tool/frt.py 2020-07-21 17:28:57.000000000 +0900 +@@ -0,0 +1,63 @@ ++"""SCons.Tool.frt ++ ++Tool-specific initialization for frt, the Fujitsu Fortran 95/Fortran ++2003 compiler. ++ ++There normally shouldn't be any need to import this module directly. ++It will usually be imported through the generic SCons.Tool.Tool() ++selection method. ++ ++""" ++ ++# ++# Copyright (c) 2001 - 2019 The SCons Foundation ++# ++# Permission is hereby granted, free of charge, to any person obtaining ++# a copy of this software and associated documentation files (the ++# "Software"), to deal in the Software without restriction, including ++# without limitation the rights to use, copy, modify, merge, publish, ++# distribute, sublicense, and/or sell copies of the Software, and to ++# permit persons to whom the Software is furnished to do so, subject to ++# the following conditions: ++# ++# The above copyright notice and this permission notice shall be included ++# in all copies or substantial portions of the Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY ++# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE ++# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++# ++ ++__revision__ = "src/engine/SCons/Tool/frt.py bee7caf9defd6e108fc2998a2520ddb36a967691 2019-12-17 02:07:09 bdeegan" ++ ++import SCons.Util ++ ++from . import fortran ++ ++def generate(env): ++ """Add Builders and construction variables for frt to an ++ Environment.""" ++ fortran.generate(env) ++ ++ for dialect in ['F77', 'F90', 'FORTRAN', 'F95', 'F03', 'F08']: ++ env['%s' % dialect] = 'frt' ++ env['SH%s' % dialect] = 'frt' ++ env['SH%sFLAGS' % dialect] = SCons.Util.CLVar('$%sFLAGS -fPIC' % dialect) ++ ++ env['INC%sPREFIX' % dialect] = "-I" ++ env['INC%sSUFFIX' % dialect] = "" ++ ++ env['FORTRANMODDIRPREFIX'] = "-M" ++ ++def exists(env): ++ return env.Detect('frt') ++ ++# Local Variables: ++# tab-width:4 ++# indent-tabs-mode:nil ++# End: ++# vim: set expandtab tabstop=4 shiftwidth=4: +diff -u -r -N a/engine/SCons/Tool/__init__.py b/engine/SCons/Tool/__init__.py +--- a/engine/SCons/Tool/__init__.py 2020-07-21 11:39:14.000000000 +0900 ++++ b/engine/SCons/Tool/__init__.py 2020-07-21 16:30:54.000000000 +0900 +@@ -1259,10 +1259,10 @@ + else: + "prefer GNU tools on all other platforms" + linkers = ['gnulink', 'ilink'] +- c_compilers = ['gcc', 'intelc', 'icc', 'cc'] +- cxx_compilers = ['g++', 'intelc', 'icc', 'cxx'] ++ c_compilers = ['fcc', 'gcc', 'intelc', 'icc', 'cc'] ++ cxx_compilers = ['fcc', 'g++', 'intelc', 'icc', 'cxx'] + assemblers = ['gas', 'nasm', 'masm'] +- fortran_compilers = ['gfortran', 'g77', 'ifort', 'ifl', 'f95', 'f90', 'f77'] ++ fortran_compilers = ['frt', 'gfortran', 'g77', 'ifort', 'ifl', 'f95', 'f90', 'f77'] + ars = ['ar', ] + + if not str(platform) == 'win32': +@@ -1282,7 +1282,7 @@ + ar = None + else: + # Don't use g++ if the C compiler has built-in C++ support: +- if c_compiler in ('msvc', 'intelc', 'icc'): ++ if c_compiler in ('msvc', 'intelc', 'icc', 'fcc'): + cxx_compiler = None + else: + cxx_compiler = FindTool(cxx_compilers, env) or cxx_compilers[0] diff --git a/var/spack/repos/builtin/packages/scons/package.py b/var/spack/repos/builtin/packages/scons/package.py index 328fa558ab..872e4cb852 100644 --- a/var/spack/repos/builtin/packages/scons/package.py +++ b/var/spack/repos/builtin/packages/scons/package.py @@ -25,6 +25,8 @@ class Scons(PythonPackage): depends_on('python@:2', when='@:2', type=('build', 'run')) depends_on('py-setuptools', when='@3.0.2:', type='build') + patch('fjcompiler.patch', when='%fj') + # Prevent passing --single-version-externally-managed to # setup.py, which it does not support. @when('@3.0.2:') diff --git a/var/spack/repos/builtin/packages/scorec-core/package.py b/var/spack/repos/builtin/packages/scorec-core/package.py index adb88f2aae..4ff96cae85 100644 --- a/var/spack/repos/builtin/packages/scorec-core/package.py +++ b/var/spack/repos/builtin/packages/scorec-core/package.py @@ -20,14 +20,6 @@ class ScorecCore(CMakePackage): depends_on('zoltan') depends_on('cmake@3.0:', type='build') - @property - def std_cmake_args(self): - # Default cmake RPATH options causes build failure on bg-q - if self.spec.satisfies('platform=bgq'): - return ['-DCMAKE_INSTALL_PREFIX:PATH={0}'.format(self.prefix)] - else: - return self._std_args(self) - def cmake_args(self): options = [] options.append('-DCMAKE_C_COMPILER=%s' % self.spec['mpi'].mpicc) diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py index d7b57c0c44..61586ac43c 100644 --- a/var/spack/repos/builtin/packages/scorep/package.py +++ b/var/spack/repos/builtin/packages/scorep/package.py @@ -32,6 +32,8 @@ class Scorep(AutotoolsPackage): variant('papi', default=True, description="Enable PAPI") variant('pdt', default=False, description="Enable PDT") variant('shmem', default=False, description='Enable shmem tracing') + variant('unwind', default=False, + description="Enable sampling via libunwind and lib wrapping") # Dependencies for SCORE-P are quite tight. See the homepage for more # information. Starting with scorep 4.0 / cube 4.4, Score-P only depends on @@ -64,6 +66,8 @@ class Scorep(AutotoolsPackage): depends_on('mpi', when="+mpi") depends_on('papi', when="+papi") depends_on('pdt', when="+pdt") + depends_on('llvm', when="+unwind") + depends_on('libunwind', when="+unwind") # Score-P requires a case-sensitive file system, and therefore # does not work on macOS @@ -96,6 +100,10 @@ class Scorep(AutotoolsPackage): if "+pdt" in spec: config_args.append("--with-pdt=%s" % spec['pdt'].prefix.bin) + if "+unwind" in spec: + config_args.append("--with-libunwind=%s" % + spec['libunwind'].prefix) + config_args += self.with_or_without('shmem') config_args += self.with_or_without('mpi') diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py index f2ba07a94b..1fa9fbb3aa 100644 --- a/var/spack/repos/builtin/packages/scotch/package.py +++ b/var/spack/repos/builtin/packages/scotch/package.py @@ -14,6 +14,7 @@ class Scotch(Package): url = "http://gforge.inria.fr/frs/download.php/latestfile/298/scotch_6.0.4.tar.gz" list_url = "http://gforge.inria.fr/frs/?group_id=248" + version('6.0.9', sha256='622b4143cf01c480bb15708b3651b29c25e4aeb00c8c6447ff196aca2eca5c93') version('6.0.8', sha256='0ba3f145026174304f910c8770a3cbb034f213c91d939573751cfbb4fd46d45e') version('6.0.6', sha256='686f0cad88d033fe71c8b781735ff742b73a1d82a65b8b1586526d69729ac4cf') version('6.0.5a', sha256='5b21b95e33acd5409d682fa7253cefbdffa8db82875549476c006d8cbe7c556f') @@ -169,8 +170,6 @@ class Scotch(Package): if self.spec.satisfies('platform=darwin'): cflags.append('-DCOMMON_PTHREAD_BARRIER') ldflags.append('-lm -pthread') - elif self.spec.satisfies('platform=bgq'): - ldflags.append('-lm -lrt -lpthread') else: ldflags.append('-lm -lrt -pthread') diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py index 3e0e1456cd..ab5907c375 100644 --- a/var/spack/repos/builtin/packages/scr/package.py +++ b/var/spack/repos/builtin/packages/scr/package.py @@ -80,8 +80,6 @@ class Scr(CMakePackage): variant('cntl_base', default='/tmp', description='Compile time default location for control directory.') - conflicts('platform=bgq') - def get_abs_path_rel_prefix(self, path): # Return path if absolute, otherwise prepend prefix if os.path.isabs(path): diff --git a/var/spack/repos/builtin/packages/screen/package.py b/var/spack/repos/builtin/packages/screen/package.py index d68164b4d4..e2ac6fc7d9 100644 --- a/var/spack/repos/builtin/packages/screen/package.py +++ b/var/spack/repos/builtin/packages/screen/package.py @@ -14,6 +14,7 @@ class Screen(AutotoolsPackage, GNUMirrorPackage): homepage = "https://www.gnu.org/software/screen/" gnu_mirror_path = "screen/screen-4.3.1.tar.gz" + version('4.8.0', sha256='6e11b13d8489925fde25dfb0935bf6ed71f9eb47eff233a181e078fde5655aa1') version('4.6.2', sha256='1b6922520e6a0ce5e28768d620b0f640a6631397f95ccb043b70b91bb503fa3a') version('4.3.1', sha256='fa4049f8aee283de62e283d427f2cfd35d6c369b40f7f45f947dbfd915699d63') version('4.3.0', sha256='5164e89bcc60d7193177e6e02885cc42411d1d815c839e174fb9abafb9658c46') diff --git a/var/spack/repos/builtin/packages/sdsl-lite/package.py b/var/spack/repos/builtin/packages/sdsl-lite/package.py index d5d2a251c0..ba2485c6b7 100644 --- a/var/spack/repos/builtin/packages/sdsl-lite/package.py +++ b/var/spack/repos/builtin/packages/sdsl-lite/package.py @@ -32,5 +32,11 @@ class SdslLite(Package): tar('-xvf', self.stage.archive_file) with working_dir('sdsl-lite-{0}'.format(spec.version.dotted)): + if self.spec.satisfies('%fj'): + filter_file( + 'stdlib=libc', + 'stdlib=libstdc', + './CMakeLists.txt' + ) helper = Executable('./install.sh') helper(prefix) diff --git a/var/spack/repos/builtin/packages/shapeit4/package.py b/var/spack/repos/builtin/packages/shapeit4/package.py new file mode 100644 index 0000000000..009e5084bf --- /dev/null +++ b/var/spack/repos/builtin/packages/shapeit4/package.py @@ -0,0 +1,55 @@ +# 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 Shapeit4(MakefilePackage): + """SHAPEIT4 is a fast and accurate method for estimation of haplotypes + (aka phasing) for SNP array and high coverage sequencing data.""" + + homepage = "https://odelaneau.github.io/shapeit4/" + url = "https://github.com/odelaneau/shapeit4/archive/v4.1.3.tar.gz" + + version('4.1.3', sha256='d209731277b00bca1e3478b7e0a0cbe40fbe23826c3d640ad12e0dd6033cbbb8') + + maintainers = ['ilbiondo'] + + depends_on('htslib') + depends_on('boost') + depends_on('bzip2') + depends_on('xz') + + def edit(self, spec, prefix): + + makefile = FileFilter('makefile') + makefile.filter('CXX=.*', 'CXX = c++') + + makefile.filter('CXXFLAG=.*', 'CXXFLAG = -O3') + makefile.filter('LDFLAG=.*', 'LDFLAG = -O3') + + makefile.filter('HTSLIB_INC=.*', 'HTSLIB_INC = ' + + self.spec['htslib'].prefix.include) + + makefile.filter('HTSLIB_LIB=.*', 'HTSLIB_LIB = ' + + self.spec['htslib'].prefix.lib + '/libhts.so') + + makefile.filter('BOOST_INC=.*', 'BOOST_INC = ' + + self.spec['boost'].prefix.include) + + makefile.filter('BOOST_LIB_IO=.*', 'BOOST_LIB_IO = ' + + self.spec['boost'].prefix.lib + + "/libboost_iostreams.so") + + makefile.filter('BOOST_LIB_PO=.*', 'BOOST_LIB_PO = ' + + self.spec['boost'].prefix.lib + + "/libboost_program_options.so") + + def install(self, spec, prefix): + + install_tree('bin', prefix.bin) + install_tree('test', join_path(self.prefix, 'test')) + install_tree('docs', join_path(self.prefix, 'docs')) + install_tree('maps', join_path(self.prefix, 'maps')) diff --git a/var/spack/repos/builtin/packages/shapelib/package.py b/var/spack/repos/builtin/packages/shapelib/package.py new file mode 100644 index 0000000000..47be5cdaa1 --- /dev/null +++ b/var/spack/repos/builtin/packages/shapelib/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 Shapelib(CMakePackage): + """The Shapefile C Library provides the ability to write simple C programs + for reading, writing and updating (to a limited extent) ESRI Shapefiles, + and the associated attribute file (.dbf). + """ + + homepage = "http://shapelib.maptools.org/" + url = "https://github.com/OSGeo/shapelib/archive/v1.5.0.tar.gz" + + version('1.5.0', sha256='48de3a6a8691b0b111b909c0b908af4627635c75322b3a501c0c0885f3558cad') diff --git a/var/spack/repos/builtin/packages/singularity/package.py b/var/spack/repos/builtin/packages/singularity/package.py index 9f4c898e61..3f8d99e1f5 100644 --- a/var/spack/repos/builtin/packages/singularity/package.py +++ b/var/spack/repos/builtin/packages/singularity/package.py @@ -24,12 +24,13 @@ class Singularity(MakefilePackage): ''' homepage = "https://www.sylabs.io/singularity/" - url = "https://github.com/sylabs/singularity/releases/download/v3.1.1/singularity-3.1.1.tar.gz" + url = "https://github.com/sylabs/singularity/releases/download/v3.6.1/singularity-3.6.1.tar.gz" git = "https://github.com/sylabs/singularity.git" maintainers = ['alalazo'] version('master', branch='master') + version('3.6.1', sha256='6cac56106ee7f209150aaee9f8788d03b58796af1b767245d343f0b8a691121c') version('3.5.3', sha256='0c76f1e3808bf4c10e92b17150314b2b816be79f8101be448a6e9d7a96c9e486') version('3.5.2', sha256='f9c21e289377a4c40ed7a78a0c95e1ff416dec202ed49a6c616dd2c37700eab8') version('3.4.1', sha256='638fd7cc5ab2a20e779b8768f73baf21909148339d6c4edf6ff61349c53a70c2') diff --git a/var/spack/repos/builtin/packages/sirius/package.py b/var/spack/repos/builtin/packages/sirius/package.py index ff81b120d4..9fe1481399 100644 --- a/var/spack/repos/builtin/packages/sirius/package.py +++ b/var/spack/repos/builtin/packages/sirius/package.py @@ -16,9 +16,15 @@ class Sirius(CMakePackage, CudaPackage): list_url = "https://github.com/electronic-structure/SIRIUS/releases" git = "https://github.com/electronic-structure/SIRIUS.git" + maintainers = ['simonpintarelli', 'haampie', 'dev-zero'] + version('develop', branch='develop') version('master', branch='master') + version('6.5.6', sha256='c8120100bde4477545eae489ea7f9140d264a3f88696ec92728616d78f214cae') + version('6.5.5', sha256='0b23d3a8512682eea67aec57271031c65f465b61853a165015b38f7477651dd1') + version('6.5.4', sha256='5f731926b882a567d117afa5e0ed33291f1db887fce52f371ba51f014209b85d') + version('6.5.3', sha256='eae0c303f332425a8c792d4455dca62557931b28a5df8b4c242652d5ffddd580') version('6.5.2', sha256='c18adc45b069ebae03f94eeeeed031ee99b3d8171fa6ee73c7c6fb1e42397fe7') version('6.5.1', sha256='599dd0fa25a4e83db2a359257a125e855d4259188cf5b0065b8e7e66378eacf3') version('6.5.0', sha256='5544f3abbb71dcd6aa08d18aceaf53c38373de4cbd0c3af44fbb39c20cfeb7cc') @@ -36,10 +42,12 @@ class Sirius(CMakePackage, CudaPackage): variant('openmp', default=True, description="Build with OpenMP support") variant('fortran', default=False, description="Build Fortran bindings") variant('python', default=False, description="Build Python bindings") + variant('memory_pool', default=True, description="Build with memory pool") variant('elpa', default=False, description="Use ELPA") variant('vdwxc', default=False, description="Enable libvdwxc support") variant('scalapack', default=False, description="Enable scalapack support") variant('magma', default=False, description="Enable MAGMA support") + variant('nlcglib', default=False, description="enable robust wave function optimization") variant('build_type', default='Release', description='CMake build type', values=('Debug', 'Release', 'RelWithDebInfo')) @@ -48,7 +56,7 @@ class Sirius(CMakePackage, CudaPackage): depends_on('mpi') depends_on('gsl') depends_on('lapack') - depends_on('fftw') # SIRIUS does not care about MPI-support in FFTW + depends_on('fftw-api@3') depends_on('libxc') depends_on('spglib') depends_on('hdf5+hl') @@ -64,15 +72,20 @@ class Sirius(CMakePackage, CudaPackage): depends_on('magma', when='+magma') depends_on('spfft', when='@6.4.0:') + depends_on('spfft', when='@master') + depends_on('spfft', when='@develop') depends_on('spfft+cuda', when='@6.4.0:+cuda') + depends_on('spfft+cuda', when='@master+cuda') + depends_on('spfft+cuda', when='@develop+cuda') depends_on('elpa+openmp', when='+elpa+openmp') depends_on('elpa~openmp', when='+elpa~openmp') + depends_on('nlcglib', when='+nlcglib') depends_on('libvdwxc+mpi', when='+vdwxc') depends_on('scalapack', when='+scalapack') depends_on('cuda', when='+cuda') extends('python', when='+python') - conflicts('+shared', when='@6.3.0:') # option to build shared libraries has been removed + conflicts('+shared', when='@6.3.0:6.4.999') # TODO: # add support for CRAY_LIBSCI, ROCm, testing @@ -90,9 +103,8 @@ class Sirius(CMakePackage, CudaPackage): return find_libraries( libraries, root=self.prefix, - shared=False, recursive=True + shared='+shared' in self.spec, recursive=True ) - else: if '+fortran' in self.spec: libraries += ['libsirius_f'] @@ -125,7 +137,9 @@ class Sirius(CMakePackage, CudaPackage): _def('+openmp'), _def('+elpa'), _def('+magma'), + _def('+nlcglib'), _def('+vdwxc'), + _def('+memory_pool'), _def('+scalapack'), _def('+fortran', 'CREATE_FORTRAN_BINDINGS'), _def('+python', 'CREATE_PYTHON_MODULE'), diff --git a/var/spack/repos/builtin/packages/slate/package.py b/var/spack/repos/builtin/packages/slate/package.py index cae0a0e8df..5d78b2e34c 100644 --- a/var/spack/repos/builtin/packages/slate/package.py +++ b/var/spack/repos/builtin/packages/slate/package.py @@ -25,7 +25,7 @@ class Slate(Package): variant('mpi', default=True, description='Build with MPI support.') variant('openmp', default=True, description='Build with OpenMP support.') - depends_on('cuda@9:', when='+cuda') + depends_on('cuda@9:10', when='+cuda') depends_on('intel-mkl') depends_on('mpi', when='+mpi') @@ -41,10 +41,13 @@ class Slate(Package): f_mpi = "1" if spec.variants['mpi'].value else "0" f_openmp = "1" if spec.variants['openmp'].value else "0" - compiler = 'mpicxx' if spec.variants['mpi'].value else '' + comp_cxx = comp_for = '' + if '+mpi' in spec: + comp_cxx = 'mpicxx' + comp_for = 'mpif90' make('mpi=' + f_mpi, 'mkl=1', 'cuda=' + f_cuda, 'openmp=' + f_openmp, - 'CXX=' + compiler) + 'CXX=' + comp_cxx, 'FC=' + comp_for) install_tree('lib', prefix.lib) install_tree('test', prefix.test) mkdirp(prefix.include) diff --git a/var/spack/repos/builtin/packages/slider/package.py b/var/spack/repos/builtin/packages/slider/package.py new file mode 100644 index 0000000000..bbc9ce243c --- /dev/null +++ b/var/spack/repos/builtin/packages/slider/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 Slider(Package): + """Slider is a framework for deployment and management of these + long-running data access applications in Hadoop.""" + + homepage = "https://www.cloudera.com/products/open-source/apache-hadoop/apache-slider.html" + url = "http://archive.apache.org/dist/incubator/slider/0.92.0-incubating/apache-slider-0.92.0-incubating-source-release.tar.gz" + list_url = "http://archive.apache.org/dist/incubator/slider" + list_depth = 1 + + version('0.92.0', sha256='485f02f4f9f0b270017717c9471b83b0d77d005d25261b741fb381791ce838b9') + version('0.91.0', sha256='212a5cde6de60060c9a081f553d66940b70af4bccb469072febb554c4005bcef') + version('0.90.2', sha256='410941f772d29f564c4bb90ca0631f29dc895f509048cb6052f8695302e3f944') + + depends_on('maven', type='build') + depends_on('java@8', type=('build', 'run')) + depends_on('python@2.7.0:2.7.99', type='run') + + def url_for_version(self, version): + return "http://archive.apache.org/dist/incubator/slider/{0}-incubating/apache-slider-{0}-incubating-source-release.tar.gz".format(version) + + def install(self, spec, prefix): + mvn = which('mvn') + mvn('clean', 'package', '-DskipTests') + slider_path = join_path(self.stage.source_path, + 'slider-assembly', 'target', + 'slider-{0}-incubating-all' + .format(spec.version), + 'slider-{0}-incubating' + .format(spec.version)) + with working_dir(slider_path): + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/smartdenovo/inline-limit.patch b/var/spack/repos/builtin/packages/smartdenovo/inline-limit.patch new file mode 100644 index 0000000000..9a42bd29cd --- /dev/null +++ b/var/spack/repos/builtin/packages/smartdenovo/inline-limit.patch @@ -0,0 +1,24 @@ +diff -Nur smartdenovo/wtlay.h smartdenovo-new/wtlay.h +--- smartdenovo/wtlay.h 2020-07-09 02:47:13.503412360 +0800 ++++ smartdenovo-new/wtlay.h 2020-07-09 02:49:02.775412360 +0800 +@@ -503,17 +503,17 @@ + return e2; + } + +-inline int cut_biedge_strgraph_core(StringGraph *g, uint32_t node_id, int dir, uint32_t eidx, int closed){ ++static inline int cut_biedge_strgraph_core(StringGraph *g, uint32_t node_id, int dir, uint32_t eidx, int closed){ + edge_strgraph(g, node_id, dir, eidx)->closed = closed; + edge_partner_strgraph(g, node_id, dir, eidx)->closed = closed; + return 1; + } + +-inline int cut_biedge_strgraph(StringGraph *g, uint32_t node_id, int dir, uint32_t eidx){ ++static inline int cut_biedge_strgraph(StringGraph *g, uint32_t node_id, int dir, uint32_t eidx){ + return cut_biedge_strgraph_core(g, node_id, dir, eidx, 1); + } + +-inline int cut_biedge_strgraph2(StringGraph *g, uint32_t node_id, int dir, uint32_t eidx){ ++static inline int cut_biedge_strgraph2(StringGraph *g, uint32_t node_id, int dir, uint32_t eidx){ + return cut_biedge_strgraph_core(g, node_id, dir, eidx, 2); + } + diff --git a/var/spack/repos/builtin/packages/smartdenovo/package.py b/var/spack/repos/builtin/packages/smartdenovo/package.py index f18b8583d9..48109ea9e4 100644 --- a/var/spack/repos/builtin/packages/smartdenovo/package.py +++ b/var/spack/repos/builtin/packages/smartdenovo/package.py @@ -17,8 +17,8 @@ class Smartdenovo(MakefilePackage): depends_on('sse2neon', when='target=aarch64:') - patch('aarch64.patch', when='target=aarch64:', - sha256='7dd4bca28aafb0680cc1823aa58ac9000819993538e92628554666c4b3acc470') + patch('aarch64.patch', sha256='7dd4bca28aafb0680cc1823aa58ac9000819993538e92628554666c4b3acc470', when='target=aarch64:') + patch('inline-limit.patch', sha256='9f514ed72c37cf52ee2ffbe06f9ca1ed5a3e0819dab5876ecd83107c5e5bed81') def install(self, spec, prefix): install_files = [ diff --git a/var/spack/repos/builtin/packages/snappy/package.py b/var/spack/repos/builtin/packages/snappy/package.py index d5ade343f3..2e0154aa6f 100644 --- a/var/spack/repos/builtin/packages/snappy/package.py +++ b/var/spack/repos/builtin/packages/snappy/package.py @@ -10,8 +10,9 @@ class Snappy(CMakePackage): """A fast compressor/decompressor: https://code.google.com/p/snappy""" homepage = "https://github.com/google/snappy" - url = "https://github.com/google/snappy/archive/1.1.7.tar.gz" + url = "https://github.com/google/snappy/archive/1.1.8.tar.gz" + version('1.1.8', sha256='16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f') version('1.1.7', sha256='3dfa02e873ff51a11ee02b9ca391807f0c8ea0529a4924afa645fbf97163f9d4') variant('shared', default=True, description='Build shared libraries') diff --git a/var/spack/repos/builtin/packages/solr/package.py b/var/spack/repos/builtin/packages/solr/package.py new file mode 100644 index 0000000000..84158c2ae4 --- /dev/null +++ b/var/spack/repos/builtin/packages/solr/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 Solr(Package): + """Solr is highly reliable, scalable and fault tolerant, providing distributed + indexing, replication and load-balanced querying, automated failover and + recovery,centralized configuration and more. Solr powers the search and + navigation features of many of the world's largest internet sites.""" + + homepage = "https://lucene.apache.org/" + url = "https://archive.apache.org/dist/lucene/solr/7.7.3/solr-7.7.3.tgz" + list_url = "https://archive.apache.org/dist/lucene/solr" + list_depth = 1 + + version('8.6.0', sha256='4519ccdb531619df770f1065db6adcedc052c7aa94b42806d541966550956aa5') + version('8.5.2', sha256='c457d6c7243241cad141e1df34c6f669d58a6c60e537f4217d032616dd066dcf') + version('8.5.1', sha256='47b68073b37bbcc0517a355ef722f20827c3f1416537ebbccf5239dda8064a0b') + version('8.5.0', sha256='9e54711ad0aa60e9723d2cdeb20cf0d21ee2ab9fa0048ec59dcb5f9d94dc61dd') + version('8.4.1', sha256='ec39e1e024b2e37405149de41e39e875a39bf11a53f506d07d96b47b8d2a4301') + version('7.7.3', sha256='3ec67fa430afa5b5eb43bb1cd4a659e56ee9f8541e0116d6080c0d783870baee') + + def install(self, spec, prefix): + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/spades/package.py b/var/spack/repos/builtin/packages/spades/package.py index 266d1cbcde..47c0fcbcfd 100644 --- a/var/spack/repos/builtin/packages/spades/package.py +++ b/var/spack/repos/builtin/packages/spades/package.py @@ -13,6 +13,7 @@ class Spades(CMakePackage): homepage = "http://cab.spbu.ru/software/spades/" url = "http://cab.spbu.ru/files/release3.10.1/SPAdes-3.10.1.tar.gz" + version('3.14.1', sha256='d629b78f7e74c82534ac20f5b3c2eb367f245e6840a67b9ef6a76f6fac5323ca') version('3.13.0', sha256='c63442248c4c712603979fa70503c2bff82354f005acda2abc42dd5598427040') version('3.12.0', sha256='15b48a3bcbbe6a8ad58fd04ba5d3f1015990fbfd9bdf4913042803b171853ac7') version('3.11.1', sha256='3ab85d86bf7d595bd8adf11c971f5d258bbbd2574b7c1703b16d6639a725b474') diff --git a/var/spack/repos/builtin/packages/spfft/package.py b/var/spack/repos/builtin/packages/spfft/package.py index 0f680564a8..2fbd738383 100644 --- a/var/spack/repos/builtin/packages/spfft/package.py +++ b/var/spack/repos/builtin/packages/spfft/package.py @@ -7,12 +7,14 @@ from spack import * -class Spfft(CMakePackage): +class Spfft(CMakePackage, CudaPackage): """Sparse 3D FFT library with MPI, OpenMP, CUDA and ROCm support.""" homepage = "https://github.com/eth-cscs/SpFFT" url = "https://github.com/eth-cscs/SpFFT/archive/v0.9.8.zip" + version('0.9.12', sha256='1f7bf5164dcceb0e3bbce7d6ff9faef3145ad17cf3430149d40a98c43c010acc') + version('0.9.11', sha256='36542a60378e8672654188dee006975ef9e10f502791459ff7ebf4b38451cb9b') version('0.9.10', sha256='9cbbb7ba5e53e17eeb45e809841d8272e5333f739c2442a99c3e255c1ddec3e9') version('0.9.9', sha256='a8fd7a2d767716bb73185ca03bf4c106c6981b79130f3e456e5d2e744a2b3ba0') version('0.9.8', sha256='f49fa51316bbfa68309e951d2375e1f6904120c93868cbe13bc2974c0b801a3f') @@ -26,9 +28,10 @@ class Spfft(CMakePackage): variant('fortran', default=False, description="enable fortran") variant('build_type', default='Release', description='CMake build type', values=('Debug', 'Release', 'RelWithDebInfo')) - depends_on('fftw') + depends_on('fftw-api@3') depends_on('mpi', when='+mpi') - depends_on('cuda', when='+cuda') + + depends_on('cuda@:10', when='@:0.9.11 +cuda') def cmake_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/spla/package.py b/var/spack/repos/builtin/packages/spla/package.py new file mode 100644 index 0000000000..2c84d14524 --- /dev/null +++ b/var/spack/repos/builtin/packages/spla/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 Spla(CMakePackage): + """Specialized Parallel Linear Algebra, providing distributed GEMM + functionality for specific matrix distributions with optional GPU + acceleration.""" + + homepage = "https://github.com/eth-cscs/spla" + url = "https://github.com/eth-cscs/spla/archive/v1.0.0.tar.gz" + git = 'https://github.com/eth-cscs/spla.git' + + version('1.0.0', sha256='a0eb269b84d7525b223dc650de12170bba30fbb3ae4f93eb2b5cbdce335e4da1') + version('master', branch='master') + + variant('openmp', default=True, description="Build with OpenMP support") + variant('static', default=False, description="Build as static library") + variant('cuda', default=False, description="CUDA") + + depends_on('mpi') + depends_on('blas') + depends_on('cuda', when='+cuda') + depends_on('cmake@3.10:', type='build') + + def cmake_args(self): + args = [] + + if '+openmp' in self.spec: + args += ["-DSPLA_OMP=ON"] + else: + args += ["-DSPLA_OMP=OFF"] + + if '+cuda' in self.spec: + args += ["-DSPLA_GPU_BACKEND=CUDA"] + else: + args += ["-DSPLA_GPU_BACKEND=OFF"] + + if '+static' in self.spec: + args += ["-DSPLA_STATIC=ON"] + else: + args += ["-DSPLA_STATIC=OFF"] + return args diff --git a/var/spack/repos/builtin/packages/sprng/package.py b/var/spack/repos/builtin/packages/sprng/package.py new file mode 100644 index 0000000000..eb85db87e0 --- /dev/null +++ b/var/spack/repos/builtin/packages/sprng/package.py @@ -0,0 +1,132 @@ +# 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 Sprng(AutotoolsPackage): + """SPRNG: A Scalable Library For Pseudorandom Number Generation + Sprng is a distributed process-aware random number generator that + avoids correlations in random number sequences across processes. + """ + + maintainers = ['kayarre'] + + homepage = "http://www.sprng.org" + url = "http://www.sprng.org/Version5.0/sprng5.tar.bz2" + + version('5.0', sha256='9172a495472cc24893e7489ce9b5654300dc60cba4430e436ce50d28eb749a66') + + variant('mpi', default=True, description='Enable MPI support') + variant('fortran', default=False, description='Enable Fortran support') + + depends_on('mpi', when='+mpi') + + def url_for_version(self, version): + url = "http://www.sprng.org/Version{0}/sprng{1}.tar.bz2" + return url.format(version, version.up_to(1)) + + def configure_args(self): + configure_args = [] + configure_args += self.with_or_without('mpi') + configure_args += self.with_or_without('fortran') + + if '+mpi' in self.spec: + mpi_link_flags = self.spec['mpi:cxx'].libs.link_flags + configure_args.append('LIBS={0}'.format(mpi_link_flags)) + configure_args.append('CC={0}'.format(self.spec['mpi'].mpicc)) + configure_args.append('CXX={0}'.format(self.spec['mpi'].mpicxx)) + if '+fortran' in self.spec: + configure_args.append('FC={0}'.format(self.spec['mpi'].mpifc)) + return configure_args + + # TODO: update after solution for virtual depedencies + @run_before('configure') + def mpicxx_check(self): + # print(self.spec['mpi:fortran'].libs.names) + if '+mpi' in self.spec: + if 'mpi_cxx' not in self.spec['mpi:cxx'].libs.names: + msg = 'SPRNG requires a mpi Cxx bindings to build' + raise RuntimeError(msg) + if '+fortran' in self.spec: + if 'fmpi' not in self.spec['fortran'].libs.names: + msg = ('SPRNG requires fortran mpi ' + 'libraries with mpi enabled') + raise RuntimeError(msg) + # raise RuntimeError("test") + + # FIXME: update after features in #15702 are enabled + @run_after('build') + @on_package_attributes(run_tests=True) + def check_build(self): + + def listisclose(a, b, rel_tol=1e-09, abs_tol=1.0e-20): + for ai, bi in zip(a, b): + if (not abs(ai - bi) <= + max(rel_tol * max(abs(ai), abs(bi)), abs_tol)): + return False + return True + # Build and run a small program to test the installed sprng library + spec = self.spec + print("Checking sprng installation...") + checkdir = "spack-check" + with working_dir(checkdir, create=True): + source = r""" +#include <cstdio> +#define SIMPLE_SPRNG /* simple interface */ +#include "sprng_cpp.h" /* SPRNG header file */ + +#define SEED 985456376 + +int main() { + int seed = SEED; + int i, j; + double rn; + for(j=0; j < 5; ++j) { + init_sprng(seed, SPRNG_DEFAULT, j); + for (i=0; i<3; ++i) { + rn = sprng(); + printf("%f ", rn); + } + } + printf("\n"); + return 0; +} +""" + expected = [0.504272, 0.558437, 0.000848, + 0.707488, 0.664048, 0.005616, + 0.060190, 0.415195, 0.933915, + 0.085215, 0.456461, 0.244497, + 0.626037, 0.917948, 0.135160 + ] + with open("check.c", 'w') as f: + f.write(source) + if '+mpi' in spec: + cc = Executable(spec['mpi'].mpicxx) + else: + cc = Executable(self.compiler.cxx) + cc(*(['-c', "check.c"] + spec['sprng'].headers.cpp_flags.split())) + cc(*(['-o', "check", + "check.o"] + spec['sprng'].libs.ld_flags.split())) + try: + check = Executable('./check') + output = check(output=str) + except ProcessError: + output = "" + out2float = [float(num) for num in output.split(' ')] + + success = listisclose(expected, out2float) + if not success: + print("Produced output does not match expected output.") + print("Expected output:") + print('-' * 80) + print(expected) + print('-' * 80) + print("Produced output:") + print('-' * 80) + print(output) + print('-' * 80) + raise RuntimeError("sprng install check failed") + else: + print("test passed") + shutil.rmtree(checkdir) diff --git a/var/spack/repos/builtin/packages/squashfs/package.py b/var/spack/repos/builtin/packages/squashfs/package.py index 62cd3c690a..4d203e3d15 100644 --- a/var/spack/repos/builtin/packages/squashfs/package.py +++ b/var/spack/repos/builtin/packages/squashfs/package.py @@ -19,15 +19,43 @@ class Squashfs(MakefilePackage): version('4.1', sha256='3a870d065a25b3f5467bc6d9ed34340befab51a3f9e4b7e3792ea0ff4e06046a') version('4.0', sha256='18948edbe06bac2c4307eea99bfb962643e4b82e5b7edd541b4d743748e12e21') + variant('gzip', default=True, description='Enable gzip compression support') + variant('lz4', default=False, description='Enable LZ4 compression support') + variant('lzo', default=False, description='Enable LZO compression support') + variant('xz', default=False, description='Enable xz compression support') + variant('zstd', default=False, description='Enable Zstandard/zstd support') + variant('default_compression', default='gzip', values=('gzip', 'lz4', 'lzo', 'xz', 'zstd'), + multi=False, description='Default compression algorithm') + + conflicts('squashfs~gzip default_compression=gzip', msg='Cannot set default compression to missing algorithm') + conflicts('squashfs~lz4 default_compression=lz4', msg='Cannot set default compression to missing algorithm') + conflicts('squashfs~lzo default_compression=lzo', msg='Cannot set default compression to missing algorithm') + conflicts('squashfs~xz default_compression=xz', msg='Cannot set default compression to missing algorithm') + conflicts('squashfs~zstd default_compression=zstd', msg='Cannot set default compression to missing algorithm') + depends_on('m4', type='build') depends_on('autoconf', type='build') depends_on('automake', type='build') depends_on('libtool', type='build') - depends_on('zlib') + + depends_on('zlib', when='+gzip') + depends_on('lz4', when='+lz4') + depends_on('lzo', when='+lzo') + depends_on('xz', when='+xz') + depends_on('zstd', when='+zstd') def build(self, spec, prefix): with working_dir('squashfs-tools'): - make(parallel=False) + default = spec.variants['default_compression'].value + make( + 'GZIP_SUPPORT={0}'.format(1 if '+gzip' in spec else 0), + 'LZ4_SUPPORT={0}' .format(1 if '+lz4' in spec else 0), + 'LZO_SUPPORT={0}' .format(1 if '+lzo' in spec else 0), + 'XZ_SUPPORT={0}' .format(1 if '+xz' in spec else 0), + 'ZSTD_SUPPORT={0}'.format(1 if '+zstd' in spec else 0), + 'COMP_DEFAULT={0}'.format(default), + parallel=False + ) def install(self, spec, prefix): with working_dir('squashfs-tools'): diff --git a/var/spack/repos/builtin/packages/stacks/package.py b/var/spack/repos/builtin/packages/stacks/package.py index c7d6803227..81fb81a047 100644 --- a/var/spack/repos/builtin/packages/stacks/package.py +++ b/var/spack/repos/builtin/packages/stacks/package.py @@ -13,6 +13,7 @@ class Stacks(AutotoolsPackage): homepage = "http://catchenlab.life.illinois.edu/stacks/" url = "http://catchenlab.life.illinois.edu/stacks/source/stacks-1.46.tar.gz" + version('2.53', sha256='ee1efceaeeeb7a39f0c2e804ad7c0a003094db28c9101120c38ddb02846e90fd') version('2.3b', sha256='a46786d8811a730ebcdc17891e89f50d4f4ae196734439dac86091f45c92ac72') version('1.46', sha256='45a0725483dc0c0856ad6b1f918e65d91c1f0fe7d8bf209f76b93f85c29ea28a') diff --git a/var/spack/repos/builtin/packages/sas/package.py b/var/spack/repos/builtin/packages/static-analysis-suite/package.py index 8b09cf4d79..fe6d82cc4a 100644 --- a/var/spack/repos/builtin/packages/sas/package.py +++ b/var/spack/repos/builtin/packages/static-analysis-suite/package.py @@ -6,7 +6,7 @@ from spack import * -class Sas(CMakePackage): +class StaticAnalysisSuite(CMakePackage): """SAS (Static Analysis Suite) is a powerful tool for running static analysis on C++ code.""" diff --git a/var/spack/repos/builtin/packages/storm/package.py b/var/spack/repos/builtin/packages/storm/package.py index a4da7325cd..d9a2ad2ece 100644 --- a/var/spack/repos/builtin/packages/storm/package.py +++ b/var/spack/repos/builtin/packages/storm/package.py @@ -13,16 +13,18 @@ class Storm(Package): Storm provides a set of general primitives for doing realtime computation. """ - homepage = "https://www-eu.apache.org/dist/storm" - url = "https://www-eu.apache.org/dist/storm/apache-storm-2.1.0/apache-storm-2.1.0.tar.gz" - url_list = homepage - list_depth = 2 + homepage = "https://storm.apache.org/" + url = "https://archive.apache.org/dist/storm/apache-storm-2.2.0/apache-storm-2.2.0.tar.gz" + list_url = "https://archive.apache.org/dist/storm/" + list_depth = 1 + version('2.2.0', sha256='f621163f349a8e85130bc3d2fbb34e3b08f9c039ccac5474f3724e47a3a38675') version('2.1.0', sha256='e279a495dda42af7d9051543989f74a1435a5bda53e795a1de4a1def32027fc4') version('2.0.0', sha256='0a4a6f985242a99f899a01bd01dacf9365f381e2acc473caa84073fbe84f6703') version('1.2.3', sha256='d45322253db06353a521284f31b30bd964dab859f3a279a305bd79112803425a') - depends_on('java', type='run') + depends_on('java@8', type=('build', 'run')) + depends_on('zookeeper', type='run') def install(self, spec, prefix): install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/stow/package.py b/var/spack/repos/builtin/packages/stow/package.py index bc3515407d..2ce4c91b3e 100644 --- a/var/spack/repos/builtin/packages/stow/package.py +++ b/var/spack/repos/builtin/packages/stow/package.py @@ -17,6 +17,7 @@ class Stow(AutotoolsPackage, GNUMirrorPackage): homepage = "https://www.gnu.org/software/stow/" gnu_mirror_path = "stow/stow-2.2.2.tar.bz2" + version('2.3.1', sha256='26a6cfdfdaca0eea742db5487798c15fcd01889dc86bc5aa62614ec9415a422f') version('2.2.2', sha256='a0022034960e47a8d23dffb822689f061f7a2d9101c9835cf11bf251597aa6fd') version('2.2.0', sha256='86bc30fe1d322a5c80ff3bd7580c2758149aad7c3bbfa18b48a9d95c25d66b05') version('2.1.3', sha256='2dff605c801fee9fb7d0fef6988bbb8a0511fad469129b20cae60e0544ba1443') diff --git a/var/spack/repos/builtin/packages/subread/package.py b/var/spack/repos/builtin/packages/subread/package.py index 32d8e9abf1..5bd51ad889 100644 --- a/var/spack/repos/builtin/packages/subread/package.py +++ b/var/spack/repos/builtin/packages/subread/package.py @@ -33,7 +33,7 @@ class Subread(MakefilePackage): ) if spec.target.family == 'aarch64': filter_file('-mtune=core2', '', 'Makefile.Linux') - if spec.satisfies('@1.6.2:1.6.4'): + if spec.satisfies('@1.6.2:2.0.0'): filter_file( '-mtune=core2', '', diff --git a/var/spack/repos/builtin/packages/subversion/package.py b/var/spack/repos/builtin/packages/subversion/package.py index 4e3f774037..1f5f65215c 100644 --- a/var/spack/repos/builtin/packages/subversion/package.py +++ b/var/spack/repos/builtin/packages/subversion/package.py @@ -10,8 +10,13 @@ class Subversion(AutotoolsPackage): """Apache Subversion - an open source version control system.""" homepage = 'https://subversion.apache.org/' - url = 'https://archive.apache.org/dist/subversion/subversion-1.12.2.tar.gz' + urls = [ + 'https://archive.apache.org/dist/subversion/subversion-1.12.2.tar.gz', + 'https://downloads.apache.org/subversion/subversion-1.13.0.tar.gz' + ] + version('1.14.0', sha256='ef3d1147535e41874c304fb5b9ea32745fbf5d7faecf2ce21d4115b567e937d0') + version('1.13.0', sha256='daad440c03b8a86fcca804ea82217bb1902cfcae1b7d28c624143c58dcb96931') version('1.12.2', sha256='f4927d6603d96c5ddabebbafe9a0f6833c18a891ff0ce1ea6ffd186ce9bc21f3') version('1.9.7', sha256='c72a209c883e20245f14c4e644803f50ae83ae24652e385ff5e82300a0d06c3c') version('1.9.6', sha256='a400cbc46d05cb29f2d7806405bb539e9e045b24013b0f12f8f82688513321a7') diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 1d2dea580b..7f7b1f9f3e 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -76,7 +76,6 @@ class Tau(Package): # This is a _reasonable_ subset of the full set of TAU # architectures supported: variant('craycnl', default=False, description='Build for Cray compute nodes') - variant('bgq', default=False, description='Build for IBM BlueGene/Q compute nodes') variant('ppc64le', default=False, description='Build for IBM Power LE nodes') variant('x86_64', default=False, description='Force build for x86 Linux instead of auto-detect') @@ -162,9 +161,6 @@ class Tau(Package): if '+craycnl' in spec: options.append('-arch=craycnl') - if '+bgq' in spec: - options.append('-arch=bgq') - if '+ppc64le' in spec: options.append('-arch=ibm64linux') diff --git a/var/spack/repos/builtin/packages/tensorflow-serving-client/package.py b/var/spack/repos/builtin/packages/tensorflow-serving-client/package.py index 6b2b74649f..58976df975 100644 --- a/var/spack/repos/builtin/packages/tensorflow-serving-client/package.py +++ b/var/spack/repos/builtin/packages/tensorflow-serving-client/package.py @@ -11,8 +11,9 @@ class TensorflowServingClient(CMakePackage): proto files""" homepage = "https://github.com/figroc/tensorflow-serving-client" - url = "https://github.com/figroc/tensorflow-serving-client/archive/v2.1.0.tar.gz" + url = "https://github.com/figroc/tensorflow-serving-client/archive/v2.2.0.tar.gz" + version('2.2.0', sha256='010b464b3b09c3c33c5dc2aebbc85447c4d5f775b9cd45d90a9035ca015c1c08') version('2.1.0', sha256='7a31d8cfa1d861f73953d4728665dd6d74e205d1fa01062a6c2b1aeee4674f73') version('2.0.0', sha256='55310ad484f257173ad5194df7f7116b2049260c3d29049ef8d789d1d8bd9948') diff --git a/var/spack/repos/builtin/packages/texlive/package.py b/var/spack/repos/builtin/packages/texlive/package.py index 42969052c8..aaa18dab71 100644 --- a/var/spack/repos/builtin/packages/texlive/package.py +++ b/var/spack/repos/builtin/packages/texlive/package.py @@ -18,7 +18,7 @@ class Texlive(AutotoolsPackage): around the world.""" homepage = "http://www.tug.org/texlive" - url = 'http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2019/texlive-20190410-source.tar.xz' + url = 'http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2020/texlive-20200406-source.tar.xz' base_url = 'http://ftp.math.utah.edu/pub/tex/historic/systems/texlive/{year}/texlive-{version}-{dist}.tar.xz' list_url = 'http://ftp.math.utah.edu/pub/tex/historic/systems/texlive' list_depth = 1 @@ -29,12 +29,18 @@ class Texlive(AutotoolsPackage): # connection at install time and the package versions could change over # time. It is better to use a version built from tarballs, as defined with # the "releases" below. - version('live', sha256='44aa41b5783e345b7021387f19ac9637ff1ce5406a59754230c666642dfe7750', - url='ftp://tug.org/historic/systems/texlive/2019/install-tl-unx.tar.gz') + version('live', sha256='7c90a50e55533d57170cbc7c0370a010019946eb18570282948e1af6f809382d', + url='ftp://tug.org/historic/systems/texlive/2020/install-tl-unx.tar.gz') # Add information for new versions below. releases = [ { + 'version': '20200406', + 'year': '2020', + 'sha256_source': 'e32f3d08cbbbcf21d8d3f96f2143b64a1f5e4cb01b06b761d6249c8785249078', + 'sha256_texmf': '0aa97e583ecfd488e1dc60ff049fec073c1e22dfe7de30a3e4e8c851bb875a95', + }, + { 'version': '20190410', 'year': '2019', 'sha256_source': 'd2a29fef04e34dc3d2d2296c18995fc357aa7625e7a6bbf40fb92d83d3d0d7b5', diff --git a/var/spack/repos/builtin/packages/thepeg/package.py b/var/spack/repos/builtin/packages/thepeg/package.py new file mode 100644 index 0000000000..bc7580cf9a --- /dev/null +++ b/var/spack/repos/builtin/packages/thepeg/package.py @@ -0,0 +1,103 @@ +# 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 Thepeg(AutotoolsPackage): + """Toolkit for High Energy Physics Event Generation""" + + homepage = "http://home.thep.lu.se/~leif/ThePEG/" + url = "https://thepeg.hepforge.org/downloads/?f=ThePEG-2.2.1.tar.bz2" + + # The commented out versions exist, but may need patches + # and/or recipe changes + version('2.2.1', sha256='63abc7215e6ad45c11cf9dac013738e194cc38556a8368b850b70ab1b57ea58f') + version('2.2.0', sha256='d3e1474811b7d9f61a4a98db1e9d60d8ef8f913a50de4cae4dc2cc4f98e6fbf8') + # version('2.1.7', sha256='2e15727afc1fbfb158fa42ded31c4b1e5b51c25ed6bb66a38233e1fc594329c8') + version('2.1.6', sha256='c1e51f83716bfca815b55100fbab3805ef5f9b9215e4373b22762693f5353f4f') + version('2.1.5', sha256='c61a00fb6cf406f0f98e8c934683d8d5efcb655747842113abc92e9526e4b5e6') + # version('2.1.4', sha256='400c37319aa967ed993fdbec84fc65b24f6cb3779fb1b173d7f5d7a56b772df5') + version('2.1.3', sha256='16e8f6507530c2b80ed873ad22946efefed7355d15c7026f3465f18acebc1c0c') + # version('2.1.2', sha256='6a0f675a27e10863d495de069f25b892e532beb32e9cbfe5a58317d015387f49') + version('2.1.1', sha256='e1b0bdc116fbc9a6e598b601f2aa670530cf2e1cd46b4572814a9b0130b10281') + # version('2.1.0', sha256='fe6e7740ce3cd4a3ce3d7a0079a16c9214ad18f432e29d034ae763bfc40f3d39') + # version('2.0.4', sha256='f3b625b411667e2708995f1d1379b5b8691406853c8c2cca2f4e4e6e062da0e4') + # version('2.0.3', sha256='c57ba68fbfda06a0ba256e06f276f91434bf2529a13f6287c051a4cd6da44634') + # version('2.0.2', sha256='d4249e019543d5c7520733292d2edfb0bdd9733177200a63837781ed6194789b') + # version('2.0.1', sha256='ec284abdc82ceaf10a8736f908e7955f49f872b79aaa62d22aa33bc5c7679bdb') + # version('2.0.0', sha256='571730cc956027dc82780dc04ef6e7382ab5ea853fcfebe259e488c6df302a04') + version('1.9.2', sha256='ff7bbb256866f994dae04ade1f57c92d2670edaac3df11c9a300419a5343faf4') + # version('1.9.1', sha256='8ec6d0669eba51e308be4e33aeb219999418170eae3aad93ec1491c942c2a4e9') + version('1.9.0', sha256='3ee58e5e3a26184567df1b9a10ca70df228e86f322e72f018dd7d8d5a4700a5d') + version('1.8.3', sha256='55ede3a3dd0bd07b90d0d49cf7ae28c18cd965780fdf53528508b97d57152fc7') + # version('1.8.2', sha256='44ccd0d70e42bb6ecd801a51bade6c25b3953c56f33017402d4f52ee6492dffa') + # version('1.8.1', sha256='84c2a212a681545cddd541dca191eb65d96f41df86c87480b6f4f7d4f9683562') + # version('1.8.0', sha256='4b22fda1078f410b999a23a17f611c9ae3a7f0f4cee4e83dc82c9336b7adf037') + # version('1.7.3', sha256='066d5df74118d6e984bb60e1c0bea08a8edcbcf917d83d8bc32ec6fea0726187') + # version('1.7.2', sha256='3b885c6c5a39b7399ccd45d1f5a866b7a65c96174a56a7ff4ae423347843d013') + # version('1.7.1', sha256='13434dc7a8623cacb94c0b5c8d7e15b4c5d5187fe9322d1afc1c91b2c940102e') + # version('1.7.0', sha256='40eb7196139a8bf4c35f5bb69818135943d534457df64aeb1cf60b6621435312') + # version('1.6.1', sha256='5bc074b78f8b663a6a33df9c94dcaa3100269f8da59f9553a565298e55af270f') + # version('1.6.0', sha256='c0ac06b70f3e8046fce4e49ba5916c9b49450f528d0e25f8f7f1427c62fec680') + # version('1.5.0', sha256='ccbf102cf1d350a21487518d12e7e03e6e50010e5604f0201f256fa46a7a50c2') + # version('1.4.2', sha256='40444304e40e07fd417a8ebf8e5c1cf07e895ceac52ef4f7c1eecc911f6f775c') + # version('1.4.1', sha256='156d06fd1ce68466d1f2adb9cc13f412b8b87073ec6a1d02102b173c34c29b8a') + # version('1.4.0', sha256='b1f55e9a3bec713e9abf2fe71c5bd8cf8df936ea00b09f96df9123d0d5ab233f') + # version('1.3.0', sha256='f731ebf3ce5a52b6d750d6e3c282fdc74d8ffd78bccb47b68f10a4daf44c7045') + + patch('thepeg-1.8.3.patch', when='@1.8.3', level=0) + patch('thepeg-1.9.0.patch', when='@1.9.0', level=0) + patch('thepeg-1.9.2.patch', when='@1.9.2', level=0) + patch('thepeg-2.1.1.patch', when='@2.1.1:2.2.1', level=0) + + depends_on('gsl') + depends_on('lhapdf') + depends_on('lhapdf@:6.2.999', when='@:1.9.999') + depends_on('hepmc', when='hepmc=2') + depends_on('hepmc3', when='hepmc=3') + conflicts('hepmc=3', when='@:2.1.999', msg='HepMC3 support was added in 2.2.0') + depends_on('fastjet', when='@2.0.0:') + depends_on('rivet', when='@2.0.3:') + depends_on('boost', when='@2.1.1:') + + depends_on('autoconf', type='build') + depends_on('automake', type='build') + depends_on('libtool', type='build') + depends_on('m4', type='build') + + variant('hepmc', default='2', values=('2', '3'), description='HepMC interface to build ') + + install_targets = ['install-strip'] + + def configure_args(self): + args = ['--with-gsl=' + self.spec['gsl'].prefix, '--without-javagui'] + + if self.spec.satisfies('@:1.8.999'): + args += ['--with-LHAPDF=' + self.spec['lhapdf'].prefix] + else: + args += ['--with-lhapdf=' + self.spec['lhapdf'].prefix] + + if self.spec.satisfies('hepmc=2'): + args += ['--with-hepmc=' + self.spec['hepmc'].prefix] + else: + args += ['--with-hepmc=' + self.spec['hepmc3'].prefix] + + if self.spec.satisfies('@2.2.0:'): + args += ['--with-hepmcversion=' + + self.spec.variants['hepmc'].value] + + if self.spec.satisfies('@2.0.0:'): + args += ['--with-fastjet=' + self.spec['fastjet'].prefix] + + if self.spec.satisfies('@2.0.3:'): + args += ['--with-rivet=' + self.spec['rivet'].prefix] + + if self.spec.satisfies('@:2.1.999'): + args += ['--with-boost=' + self.spec['boost'].prefix] + + args += ['CFLAGS=-O2', 'CXXFLAGS=-O2', 'FFLAGS=-O2'] + + return args diff --git a/var/spack/repos/builtin/packages/thepeg/thepeg-1.8.3.patch b/var/spack/repos/builtin/packages/thepeg/thepeg-1.8.3.patch new file mode 100644 index 0000000000..c396634779 --- /dev/null +++ b/var/spack/repos/builtin/packages/thepeg/thepeg-1.8.3.patch @@ -0,0 +1,24 @@ +--- PDF/LHAPDF.cc 2013-10-26 01:48:12.000000000 +0200 ++++ PDF/LHAPDF.cc 2013-12-05 17:23:13.000000000 +0100 +@@ -33,6 +33,7 @@ + #include "config.h" + #include "ThePEG/Persistency/PersistentOStream.h" + #include "ThePEG/Persistency/PersistentIStream.h" ++#include "stdlib.h" + + #ifdef ThePEG_HAS_FPU_CONTROL + #include <fpu_control.h> +@@ -228,7 +229,12 @@ + + std::string LHAPDF::getIndexPath() { + // macro is passed in from -D compile flag +- return std::string(LHAPDF_PKGDATADIR) + "/PDFsets.index"; ++ char const* tmp = getenv( "LHAPATH" ); ++ if ( tmp != NULL ) { ++ return std::string(getenv("LHAPATH")) + "/../PDFsets.index"; ++ } else { ++ return std::string(LHAPDF_PKGDATADIR) + "/PDFsets.index"; ++ }; + } + + bool LHAPDF::openLHAIndex(ifstream & is) { diff --git a/var/spack/repos/builtin/packages/thepeg/thepeg-1.9.0.patch b/var/spack/repos/builtin/packages/thepeg/thepeg-1.9.0.patch new file mode 100644 index 0000000000..76bc91211b --- /dev/null +++ b/var/spack/repos/builtin/packages/thepeg/thepeg-1.9.0.patch @@ -0,0 +1,34 @@ +--- PDF/LHAPDF.cc 2013-10-26 01:48:12.000000000 +0200 ++++ PDF/LHAPDF.cc 2013-12-05 17:23:13.000000000 +0100 +@@ -33,6 +33,7 @@ + #include "config.h" + #include "ThePEG/Persistency/PersistentOStream.h" + #include "ThePEG/Persistency/PersistentIStream.h" ++#include "stdlib.h" + + #ifdef ThePEG_HAS_FPU_CONTROL + #include <fpu_control.h> +@@ -228,7 +229,12 @@ + + std::string LHAPDF::getIndexPath() { + // macro is passed in from -D compile flag +- return std::string(LHAPDF_PKGDATADIR) + "/PDFsets.index"; ++ char const* tmp = getenv( "LHAPATH" ); ++ if ( tmp != NULL ) { ++ return std::string(getenv("LHAPATH")) + "/../PDFsets.index"; ++ } else { ++ return std::string(LHAPDF_PKGDATADIR) + "/PDFsets.index"; ++ }; + } + + bool LHAPDF::openLHAIndex(ifstream & is) { +--- ACDC/ACDCGen.h.orig 2014-04-02 16:20:59.000000000 +0200 ++++ ACDC/ACDCGen.h 2014-04-02 16:22:40.000000000 +0200 +@@ -13,6 +13,7 @@ + #include "ACDCTraits.h" + #include "ACDCGenCell.h" + #include "ThePEG/Utilities/Exception.h" ++#include <algorithm> + + namespace ACDCGenerator { + diff --git a/var/spack/repos/builtin/packages/thepeg/thepeg-1.9.2.patch b/var/spack/repos/builtin/packages/thepeg/thepeg-1.9.2.patch new file mode 100644 index 0000000000..556b683560 --- /dev/null +++ b/var/spack/repos/builtin/packages/thepeg/thepeg-1.9.2.patch @@ -0,0 +1,83 @@ +diff -r 2d8e0f74b65e PDF/LHAPDF6.cc +--- PDF/LHAPDF6.cc.orig Mon Jul 07 09:16:48 2014 +0100 ++++ PDF/LHAPDF6.cc Fri Sep 26 14:41:55 2014 +0100 +@@ -54,8 +54,8 @@ + return new_ptr(*this); + } + +-void ThePEG::LHAPDF::doinit() { +- PDFBase::doinit(); ++void ThePEG::LHAPDF::initPDFptr() { ++ if ( thePDF ) return; + thePDF = ::LHAPDF::mkPDF(thePDFName, theMember); + xMin = thePDF->xMin(); + xMax = thePDF->xMax(); +@@ -63,6 +63,11 @@ + Q2Max = thePDF->q2Max() * GeV2; + } + ++void ThePEG::LHAPDF::doinit() { ++ PDFBase::doinit(); ++ initPDFptr(); ++} ++ + void ThePEG::LHAPDF::dofinish() { + PDFBase::dofinish(); + delete thePDF; +@@ -71,11 +76,7 @@ + + void ThePEG::LHAPDF::doinitrun() { + PDFBase::doinitrun(); +- thePDF = ::LHAPDF::mkPDF(thePDFName, theMember); +- xMin = thePDF->xMin(); +- xMax = thePDF->xMax(); +- Q2Min = thePDF->q2Min() * GeV2; +- Q2Max = thePDF->q2Max() * GeV2; ++ initPDFptr(); + } + + void ThePEG::LHAPDF::setPDFName(string name) { +@@ -387,6 +388,7 @@ + lastQ2 = -1.0*GeV2; + lastX = -1.0; + lastP2 = -1.0*GeV2; ++ initPDFptr(); + } + + ThePEG::ClassDescription<ThePEG::LHAPDF> ThePEG::LHAPDF::initLHAPDF; +diff -r 2d8e0f74b65e PDF/LHAPDF6.h +--- PDF/LHAPDF6.h.orig Mon Jul 07 09:16:48 2014 +0100 ++++ PDF/LHAPDF6.h Fri Sep 26 14:41:55 2014 +0100 +@@ -147,6 +147,12 @@ + void checkUpdate(double x, Energy2 Q2, Energy2 P2) const; + + /** ++ * Initialize the LHAPDF library for the chosen PDF set if it has ++ * not been done before. ++ */ ++ void initPDFptr(); ++ ++ /** + * Used by the interface to select a set according to a file name. + */ + void setPDFName(string name); +--- Persistency/PersistentOStream.h.orig 2018-11-07 14:46:59.055432275 +0100 ++++ Persistency/PersistentOStream.h 2018-11-07 14:47:20.639293703 +0100 +@@ -219,7 +219,7 @@ + * Write a double. + */ + PersistentOStream & operator<<(double d) { +- if ( isnan(d) || isinf(d) ) ++ if ( std::isnan(d) || std::isinf(d) ) + throw WriteError() + << "Tried to write a NaN or Inf double to a persistent stream." + << Exception::runerror; +@@ -232,7 +232,7 @@ + * Write a float. + */ + PersistentOStream & operator<<(float f) { +- if ( isnan(f) || isinf(f) ) ++ if ( std::isnan(f) || std::isinf(f) ) + throw WriteError() + << "Tried to write a NaN or Inf float to a persistent stream." + << Exception::runerror; diff --git a/var/spack/repos/builtin/packages/thepeg/thepeg-2.1.1.patch b/var/spack/repos/builtin/packages/thepeg/thepeg-2.1.1.patch new file mode 100644 index 0000000000..90c61fc991 --- /dev/null +++ b/var/spack/repos/builtin/packages/thepeg/thepeg-2.1.1.patch @@ -0,0 +1,14 @@ +--- m4/rivet.m4.orig 2013-10-16 10:50:05.000000000 +0200 ++++ m4/rivet.m4 2017-08-02 12:26:22.897894696 +0200 +@@ -33,10 +33,7 @@ + else + AC_MSG_RESULT([$with_rivet]) + RIVETINCLUDE="$( $with_rivet/bin/rivet-config --cppflags )" +- RIVETLIBS="-L$with_rivet/lib -R$with_rivet/lib -lRivet" +- if test "${host_cpu}" == "x86_64" -a -e $with_rivet/lib64/libRivet.so ; then +- RIVETLIBS="-L$with_rivet/lib64 -R$with_rivet/lib64 -lRivet" +- fi ++ RIVETLIBS="$( $with_rivet/bin/rivet-config --libs ) -lYODA" + fi + + if test "x$with_rivet" != "xno"; then diff --git a/var/spack/repos/builtin/packages/tiptop/NR_perf_counter_open_aarch64.patch b/var/spack/repos/builtin/packages/tiptop/NR_perf_counter_open_aarch64.patch new file mode 100755 index 0000000000..7b5aa5a6bb --- /dev/null +++ b/var/spack/repos/builtin/packages/tiptop/NR_perf_counter_open_aarch64.patch @@ -0,0 +1,13 @@ +diff --git a/src/pmc.c b/src/pmc.c +index 3467e1c..d20ad81 100644 +--- a/src/pmc.c ++++ b/src/pmc.c +@@ -22,6 +22,8 @@ + #define __NR_perf_counter_open 319 + #elif defined(__ARM_EABI__) + #define __NR_perf_counter_open 364 ++#elif defined(__aarch64__) ++#define __NR_perf_counter_open 241 + #elif defined(__x86_64__) + #define __NR_perf_counter_open 298 + #elif defined(__i386__) diff --git a/var/spack/repos/builtin/packages/tiptop/package.py b/var/spack/repos/builtin/packages/tiptop/package.py new file mode 100644 index 0000000000..2fb46c678c --- /dev/null +++ b/var/spack/repos/builtin/packages/tiptop/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 Tiptop(AutotoolsPackage): + """Tiptop is a performance monitoring tool for Linux.""" + + homepage = "https://github.com/FeCastle/tiptop" + git = "https://github.com/FeCastle/tiptop.git" + + version('master', commit='529886d445ec32febad14246245372a8f244b3eb') + + depends_on('papi') + depends_on('byacc', type='build') + depends_on('flex', type='build') + + patch('NR_perf_counter_open_aarch64.patch', when='target=aarch64:') diff --git a/var/spack/repos/builtin/packages/tmux/package.py b/var/spack/repos/builtin/packages/tmux/package.py index e6677668fd..8a50e2ebe9 100644 --- a/var/spack/repos/builtin/packages/tmux/package.py +++ b/var/spack/repos/builtin/packages/tmux/package.py @@ -17,6 +17,7 @@ class Tmux(AutotoolsPackage): homepage = "http://tmux.github.io" url = "https://github.com/tmux/tmux/releases/download/2.6/tmux-2.6.tar.gz" + version('3.1b', sha256='d93f351d50af05a75fe6681085670c786d9504a5da2608e481c47cf5e1486db9') version('3.0a', sha256='4ad1df28b4afa969e59c08061b45082fdc49ff512f30fc8e43217d7b0e5f8db9') version('2.9', sha256='34901232f486fd99f3a39e864575e658b5d49f43289ccc6ee57c365f2e2c2980') version('2.8', sha256='7f6bf335634fafecff878d78de389562ea7f73a7367f268b66d37ea13617a2ba') diff --git a/var/spack/repos/builtin/packages/totalview/package.py b/var/spack/repos/builtin/packages/totalview/package.py new file mode 100644 index 0000000000..50553aaeea --- /dev/null +++ b/var/spack/repos/builtin/packages/totalview/package.py @@ -0,0 +1,108 @@ +# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + +import os + + +class Totalview(Package): + """Totalview parallel debugger. + + Source must be made available to Spack + externally, either by having the tarballs in the current working directory + or having the tarballs in a Spack mirror. + + The documentation tarball will + be used as the primary source and the architecture appropriate tarball will + be downloaded as a resource.""" + + homepage = "https://www.roguewave.com/products-services/totalview" + maintainers = ['nicholas-sly'] + manual_download = True + license_required = True + license_comment = '#' + license_files = ['licenses/license.dat'] + license_vars = ['TV_LICENSE_FILE'] + + # As the install of Totalview is via multiple tarballs, the base install + # will be the documentation. The architecture-specific tarballs are added + # as resources dependent on the specific architecture used. + version('2019.2.18', + sha256='09e5c554032af945f8cf147dd548421267e50e906cc9686fb5cd0e8e63fcf650') + + # Distributed with Totalview + variant('memoryscape', default=True, description='Install memoryscape') + + # Because the actual source tarball is architecture dependent, the main + # download is the documentation tarball and the source is downloaded as a + # resource once the target architecture is known. + resource( + name='x86_64', + url='totalview_{0}_linux_x86-64.tar'.format(version), + destination='.', + sha256='3b0ab078deff3654ddc912a004d256f1376978aa1c4dd5a8a41fa9fbb474d07c', + when='@2019.2.18 target=x86_64:') + resource( + name='aarch64', + url='totalview_{0}_linux_arm64.tar'.format(version), + destination='.', + sha256='3bbda1aa7c06ce82874c1517bf949c9f6cbd0f4c9ebe283d21f0643f6e724b6b', + when='@2019.2.18 target=aarch64:') + resource( + name='ppcle', + url='totalview_{0}_linux_powerle.tar'.format(version), + destination='.', + sha256='c0e4dbf145312fc7143ad0b7e9474e653933581990e0b9d07237c73dbdff8365', + when='@2019.2.18 target=ppc64le:') + + def url_for_version(self, version): + return "file://{0}/totalview.{1}-doc.tar".format(os.getcwd(), version) + + def setup_run_environment(self, env): + env.prepend_path('PATH', + join_path(self.prefix, 'toolworks', + 'totalview.{0}'.format(self.version), 'bin') + ) + env.prepend_path('TVROOT', + join_path(self.prefix, 'toolworks', + 'totalview.{0}'.format(self.version))) + env.prepend_path('TVDSVRLAUNCHCMD', 'ssh') + + def install(self, spec, prefix): + # Assemble install line + install_cmd = which('./Install') + arg_list = ["-agree", "-nosymlink", "-directory", "{0}".format(prefix)] + + # Platform specification. + if spec.target.family == "x86_64": + arg_list.extend(["-platform", "linux-x86-64"]) + elif spec.target.family == "x86": + arg_list.extend(["-platform", "linux-x86"]) + elif spec.target.family == "aarch64": + arg_list.extend(["-platform", "linux-arm64"]) + elif spec.target.family == "ppc64le": + arg_list.extend(["-platform", "linux-powerle"]) + elif spec.target.family == "ppc64": + arg_list.extend(["-platform", "linux-power"]) + else: + raise InstallError('Architecture {0} not permitted!' + .format(spec.target.family)) + + # Docs are the 'base' install used with every architecture. + install_cmd.exe.extend(arg_list) + install_cmd("-install", "doc-pdf") + + # Run install script for totalview and memoryscape (optional). + with working_dir("./totalview.{0}".format(self.version)): + + install_cmd = which('./Install') + arg_list.extend(["-install", "totalview"]) + # If including memoryscape. + if '+memoryscape' in spec: + arg_list.append("memoryscape") + + install_cmd.exe.extend(arg_list) + install_cmd() diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 7896d809f2..d5d595142f 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -28,7 +28,7 @@ class Trilinos(CMakePackage): url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-12-12-1.tar.gz" git = "https://github.com/trilinos/Trilinos.git" - maintainers = ['aprokop', 'keitat'] + maintainers = ['keitat'] # ###################### Versions ########################## diff --git a/var/spack/repos/builtin/packages/typhon/package.py b/var/spack/repos/builtin/packages/typhon/package.py index 350bd6ded2..621b2479e4 100644 --- a/var/spack/repos/builtin/packages/typhon/package.py +++ b/var/spack/repos/builtin/packages/typhon/package.py @@ -23,3 +23,7 @@ class Typhon(CMakePackage): version('3.0', sha256='b9736269ebe9c0fd7efabc4716b0543144780ed26ddaf595083354113aa2efd7') depends_on('mpi') + + def setup_build_environment(self, env): + if self.spec.satisfies('%fj'): + env.set('LDFLAGS', '--linkfortran') diff --git a/var/spack/repos/builtin/packages/ucx/package.py b/var/spack/repos/builtin/packages/ucx/package.py index 2b3cfa4ab8..482453210f 100644 --- a/var/spack/repos/builtin/packages/ucx/package.py +++ b/var/spack/repos/builtin/packages/ucx/package.py @@ -16,6 +16,7 @@ class Ucx(AutotoolsPackage, CudaPackage): maintainers = ['hppritcha'] # Current + version('1.8.1', sha256='a48820cb8d0761b5ccf3e7ba03a7c8c1dde6276017657178829e07ffc35b556a') version('1.8.0', sha256='e400f7aa5354971c8f5ac6b881dc2846143851df868088c37d432c076445628d') version('1.7.0', sha256='6ab81ee187bfd554fe7e549da93a11bfac420df87d99ee61ffab7bb19bdd3371') version('1.6.1', sha256='1425648aa03f5fa40e4bc5c4a5a83fe0292e2fe44f6054352fbebbf6d8f342a1') @@ -34,7 +35,7 @@ class Ucx(AutotoolsPackage, CudaPackage): variant('thread_multiple', default=False, description='Enable thread support in UCP and UCT') - variant('optimizations', default=False, + variant('optimizations', default=True, description='Enable optimizations') variant('logging', default=False, description='Enable logging') @@ -43,70 +44,59 @@ class Ucx(AutotoolsPackage, CudaPackage): variant('assertions', default=False, description='Enable assertions') variant('parameter_checking', default=False, - description='Enable paramter checking') + description='Enable parameter checking') variant('pic', default=True, description='Builds with PIC support') variant('java', default=False, description='Builds with Java bindings') variant('gdrcopy', default=False, description='Enable gdrcopy support') + variant('knem', default=False, + description='Enable KNEM support') + variant('xpmem', default=False, + description='Enable XPMEM support') depends_on('numactl') depends_on('rdma-core') + depends_on('pkgconfig', type='build') depends_on('java@8', when='+java') depends_on('maven', when='+java') depends_on('gdrcopy@1.3', when='+gdrcopy') conflicts('+gdrcopy', when='~cuda', msg='gdrcopy currently requires cuda support') + depends_on('xpmem', when='+xpmem') + depends_on('knem', when='+knem') + + configure_abs_path = 'contrib/configure-release' def configure_args(self): spec = self.spec config_args = [] + if '+thread_multiple' in spec: 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') - - if '+java' in spec: - config_args.append('--with-java=%s' % spec['java'].prefix) - else: - config_args.append('--without-java') - - if '+cuda' in spec: - config_args.append('--with-cuda={0}'.format( - self.spec['cuda'].prefix)) - else: - config_args.append('--without-cuda') - - if '+gdrcopy' in spec: - config_args.append('--with-gdrcopy={0}'.format( - self.spec['gdrcopy'].prefix)) - else: - config_args.append('--without-gdrcopy') + config_args.extend(self.enable_or_disable('optimizations')) + config_args.extend(self.enable_or_disable('assertions')) + config_args.extend(self.enable_or_disable('logging')) + + config_args.extend(self.with_or_without('pic')) + config_args.extend(self.with_or_without('java', + activation_value='prefix')) + config_args.extend(self.with_or_without('cuda', + activation_value='prefix')) + config_args.extend(self.with_or_without('gdrcopy', + activation_value='prefix')) + config_args.extend(self.with_or_without('knem', + activation_value='prefix')) + config_args.extend(self.with_or_without('xpmem', + activation_value='prefix')) return config_args diff --git a/var/spack/repos/builtin/packages/umpire/camp_target_umpire_3.0.0.patch b/var/spack/repos/builtin/packages/umpire/camp_target_umpire_3.0.0.patch new file mode 100644 index 0000000000..2deb565cd3 --- /dev/null +++ b/var/spack/repos/builtin/packages/umpire/camp_target_umpire_3.0.0.patch @@ -0,0 +1,18 @@ +diff --git a/umpire-config.cmake.in b/umpire-config.cmake.in +index a98ad5fe..4e54e173 100644 +--- a/umpire-config.cmake.in ++++ b/umpire-config.cmake.in +@@ -7,6 +7,13 @@ + get_filename_component(UMPIRE_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + set(UMPIRE_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include") + ++if (NOT TARGET camp) ++ if (NOT DEFINED camp_DIR) ++ set(camp_DIR @CMAKE_INSTALL_PREFIX@/lib/cmake/camp) ++ endif () ++ find_package(camp REQUIRED) ++endif () ++ + set(Umpire_VERSION_MAJOR @Umpire_VERSION_MAJOR@) + set(Umpire_VERSION_MINOR @Umpire_VERSION_MINOR@) + set(Umpire_VERSION_PATCH @Umpire_VERSION_PATCH@) diff --git a/var/spack/repos/builtin/packages/umpire/package.py b/var/spack/repos/builtin/packages/umpire/package.py index 928d8aa80c..a1e954f290 100644 --- a/var/spack/repos/builtin/packages/umpire/package.py +++ b/var/spack/repos/builtin/packages/umpire/package.py @@ -15,7 +15,8 @@ class Umpire(CMakePackage, CudaPackage): git = 'https://github.com/LLNL/Umpire.git' version('develop', branch='develop', submodules='True') - version('main', branch='main', submodules='True') + version('master', branch='main', submodules='True') + version('3.0.0', tag='v3.0.0', 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') @@ -35,12 +36,17 @@ class Umpire(CMakePackage, CudaPackage): version('0.1.4', tag='v0.1.4', submodules='True') version('0.1.3', tag='v0.1.3', submodules='True') + patch('camp_target_umpire_3.0.0.patch', when='@3.0.0') + variant('fortran', default=False, description='Build C/Fortran API') variant('c', default=True, description='Build C API') variant('numa', default=False, description='Enable NUMA support') + variant('shared', default=True, description='Enable Shared libs') variant('openmp', default=False, description='Build with OpenMP support') variant('deviceconst', default=False, description='Enables support for constant device memory') + variant('tests', default='none', values=('none', 'basic', 'benchmarks'), + multi=False, description='Tests to run') depends_on('cmake@3.8:', type='build') depends_on('cmake@3.9:', when='+cuda', type='build') @@ -60,6 +66,7 @@ class Umpire(CMakePackage, CudaPackage): if not spec.satisfies('cuda_arch=none'): cuda_arch = spec.variants['cuda_arch'].value + options.append('-DCUDA_ARCH=sm_{0}'.format(cuda_arch[0])) flag = '-arch sm_{0}'.format(cuda_arch[0]) options.append('-DCMAKE_CUDA_FLAGS:STRING={0}'.format(flag)) @@ -80,7 +87,13 @@ class Umpire(CMakePackage, CudaPackage): options.append('-DENABLE_OPENMP={0}'.format( 'On' if '+openmp' in spec else 'Off')) + options.append('-DBUILD_SHARED_LIBS={0}'.format( + 'On' if '+shared' in spec else 'Off')) + + options.append('-DENABLE_BENCHMARKS={0}'.format( + 'On' if 'tests=benchmarks' in spec else 'Off')) + options.append('-DENABLE_TESTS={0}'.format( - 'On' if self.run_tests else 'Off')) + 'Off' if 'tests=none' in spec else 'On')) return options diff --git a/var/spack/repos/builtin/packages/unifyfs/package.py b/var/spack/repos/builtin/packages/unifyfs/package.py index a2290bfa67..c1038d7c68 100644 --- a/var/spack/repos/builtin/packages/unifyfs/package.py +++ b/var/spack/repos/builtin/packages/unifyfs/package.py @@ -27,6 +27,7 @@ class Unifyfs(AutotoolsPackage): variant('fortran', default='False', description='Build with gfortran support') variant('pmi', default='False', description='Enable PMI2 build options') variant('pmix', default='False', description='Enable PMIx build options') + variant('spath', default='True', description='Use spath library to normalize relative paths') depends_on('autoconf', type='build') depends_on('automake', type='build') @@ -35,7 +36,7 @@ class Unifyfs(AutotoolsPackage): depends_on('pkgconfig', type='build') # Required dependencies - depends_on('flatcc') + depends_on('flatcc', when='@:0.9.0') depends_on('gotcha@0.0.2', when='@:0.9.0') depends_on('gotcha@1.0.3:', when='@0.9.1:') depends_on('leveldb') @@ -46,6 +47,7 @@ class Unifyfs(AutotoolsPackage): # Optional dependencies depends_on('hdf5', when='+hdf5') + depends_on('spath', when='@0.9.1:+spath') conflicts('^mercury~bmi') conflicts('^mercury~sm') diff --git a/var/spack/repos/builtin/packages/vasp/package.py b/var/spack/repos/builtin/packages/vasp/package.py new file mode 100644 index 0000000000..22b17ee88b --- /dev/null +++ b/var/spack/repos/builtin/packages/vasp/package.py @@ -0,0 +1,138 @@ +# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * +import os + + +class Vasp(MakefilePackage): + """ + The Vienna Ab initio Simulation Package (VASP) + is a computer program for atomic scale materials modelling, + e.g. electronic structure calculations + and quantum-mechanical molecular dynamics, from first principles. + """ + + homepage = "http://vasp.at" + url = "file://{0}/vasp.5.4.4.tar.gz".format(os.getcwd()) + + version('5.4.4', sha256='5bd2449462386f01e575f9adf629c08cb03a13142806ffb6a71309ca4431cfb3') + + resource(name='vaspsol', + git='https://github.com/henniggroup/VASPsol.git', + tag='V1.0', + when='+vaspsol') + + variant('scalapack', default=False, + description='Enables build with SCALAPACK') + + variant('cuda', default=False, + description='Enables running on Nvidia GPUs') + + variant('vaspsol', default=False, + description='Enable VASPsol implicit solvation model\n' + 'https://github.com/henniggroup/VASPsol') + + depends_on('rsync', type='build') + depends_on('blas') + depends_on('lapack') + depends_on('fftw') + depends_on('mpi', type=('build', 'link', 'run')) + depends_on('netlib-scalapack', when='+scalapack') + depends_on('cuda', when='+cuda') + + conflicts('%gcc@:8', msg='GFortran before 9.x does not support all features needed to build VASP') + conflicts('+vaspsol', when='+cuda', msg='+vaspsol only available for CPU') + + parallel = False + + def edit(self, spec, prefix): + + if '%gcc' in spec: + make_include = join_path('arch', 'makefile.include.linux_gnu') + else: + make_include = join_path('arch', + 'makefile.include.linux_' + + spec.compiler.name) + + os.rename(make_include, 'makefile.include') + + # This bunch of 'filter_file()' is to make these options settable + # as environment variables + filter_file('^CPP_OPTIONS[ ]{0,}=[ ]{0,}', + 'CPP_OPTIONS ?= ', + 'makefile.include') + + filter_file('^LIBDIR[ ]{0,}=.*$', '', 'makefile.include') + filter_file('^BLAS[ ]{0,}=.*$', 'BLAS ?=', 'makefile.include') + filter_file('^LAPACK[ ]{0,}=.*$', 'LAPACK ?=', 'makefile.include') + filter_file('^FFTW[ ]{0,}?=.*$', 'FFTW ?=', 'makefile.include') + filter_file('^MPI_INC[ ]{0,}=.*$', 'MPI_INC ?=', 'makefile.include') + filter_file('-DscaLAPACK.*$\n', '', 'makefile.include') + filter_file('^SCALAPACK*$', '', 'makefile.include') + + if '+cuda' in spec: + filter_file('^OBJECTS_GPU[ ]{0,}=.*$', + 'OBJECTS_GPU ?=', + 'makefile.include') + + filter_file('^CPP_GPU[ ]{0,}=.*$', + 'CPP_GPU ?=', + 'makefile.include') + + filter_file('^CFLAGS[ ]{0,}=.*$', + 'CFLAGS ?=', + 'makefile.include') + + if '+vaspsol' in spec: + copy('VASPsol/src/solvation.F', 'src/') + + def setup_build_environment(self, spack_env): + spec = self.spec + + cpp_options = ['-DHOST=\\"LinuxGNU\\"', '-DMPI -DMPI_BLOCK=8000', + '-Duse_collective', '-DCACHE_SIZE=4000', + '-Davoidalloc', '-Duse_bse_te', + '-Dtbdyn', '-Duse_shmem'] + + cflags = ['-fPIC', '-DADD_'] + + spack_env.set('BLAS', spec['blas'].libs.ld_flags) + spack_env.set('LAPACK', spec['lapack'].libs.ld_flags) + spack_env.set('FFTW', spec['fftw'].prefix) + spack_env.set('MPI_INC', spec['mpi'].prefix.include) + + if '+scalapack' in spec: + cpp_options.append('-DscaLAPACK') + spack_env.set('SCALAPACK', spec['netlib-scalapack'].libs.ld_flags) + + if '+cuda' in spec: + cpp_gpu = ['-DCUDA_GPU', '-DRPROMU_CPROJ_OVERLAP', + '-DCUFFT_MIN=28', '-DUSE_PINNED_MEMORY'] + + objects_gpu = ['fftmpiw.o', 'fftmpi_map.o', 'fft3dlib.o', + 'fftw3d_gpu.o', 'fftmpiw_gpu.o'] + + cflags.extend(['-DGPUSHMEM=300', '-DHAVE_CUBLAS']) + + spack_env.set('CUDA_ROOT', spec['cuda'].prefix) + spack_env.set('CPP_GPU', ' '.join(cpp_gpu)) + spack_env.set('OBJECTS_GPU', ' '.join(objects_gpu)) + + if '+vaspsol' in spec: + cpp_options.append('-Dsol_compat') + + # Finally + spack_env.set('CPP_OPTIONS', ' '.join(cpp_options)) + spack_env.set('CFLAGS', ' '.join(cflags)) + + def build(self, spec, prefix): + if '+cuda' in self.spec: + make('gpu', 'gpu_ncl') + else: + make() + + def install(self, spec, prefix): + install_tree('bin/', prefix.bin) diff --git a/var/spack/repos/builtin/packages/vbfnlo/package.py b/var/spack/repos/builtin/packages/vbfnlo/package.py new file mode 100644 index 0000000000..99a9b53f3b --- /dev/null +++ b/var/spack/repos/builtin/packages/vbfnlo/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 Vbfnlo(AutotoolsPackage): + """VBFNLO is a fully flexible parton level Monte Carlo program + for the simulation of vector boson fusion, double and triple + vector boson production in hadronic collisions at + next to leading order in the strong coupling constant. """ + + homepage = "https://www.itp.kit.edu/vbfnlo/wiki/doku.php?id=overview" + url = "https://github.com/vbfnlo/vbfnlo/archive/v3.0.0beta5.tar.gz" + + # The commented out versions exist, but are not tested + version('3.0.0beta5', sha256='777a3dedb365ea9abc38848a60f30d325da3799cbad69fa308664b94a8c31a90') + version('3.0.0beta4', sha256='511e84765e9634a75766a160eae1925812dacbb3943e7e3b4dc90e2eacac8a2c') + # version('3.0.0beta3', sha256='ab4cc3289051ab09ed94fa41d0eb1c5c4adcd9f39fa04e3c95a3867f256541bc') + version('3.0.0beta2', sha256='33dd0781e645a5baa664fc5aa81d43c12586bf095ef25895e86cb4192c22473b') + version('3.0.0beta1', sha256='19f0bf7e4c93b0f287d2531d6802c114a78eb46cde28ea820b2a074a5819c7ca') + version('2.7.1', sha256='13e33d73d8a8ef64094621f87e6f94e01712e76cc19a86298d0b52cfcb9decca', preferred=True) + # version('2.7.0', sha256='0e96c0912599e3000fffec5305700b947b604a7b06c7975851503f445311e4ef') + + depends_on('hepmc') + depends_on('gsl') + depends_on('lhapdf') + depends_on('looptools') + + @when('@2.7.1') + def setup_build_environment(self, env): + env.unset('F77') + + def configure_args(self): + args = ["--with-hepmc=" + self.spec['hepmc'].prefix, + "--with-gsl=" + self.spec['gsl'].prefix, + "--with-LHAPDF=" + self.spec['lhapdf'].prefix, + "--with-LOOPTOOLS=" + self.spec['looptools'].prefix, + "FCFLAGS=-std=legacy"] + + return args diff --git a/var/spack/repos/builtin/packages/vgm/package.py b/var/spack/repos/builtin/packages/vgm/package.py new file mode 100644 index 0000000000..1606a55cf1 --- /dev/null +++ b/var/spack/repos/builtin/packages/vgm/package.py @@ -0,0 +1,49 @@ +# 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 Vgm(CMakePackage): + """Virtual Geometry Model (VGM) is a geometry conversion tool, actually + providing conversion between Geant4 and ROOT TGeo geometry models.""" + + homepage = "http://github.com/vmc-project/vgm" + url = "http://github.com/vmc-project/vgm/archive/v4-8.tar.gz" + git = "http://github.com/vmc-project/vgm.git" + + maintainer = ['wdconinc'] + + version('master', branch='master') + version('4-8', sha256='4fcd607b4f100fc00a65fec7a5803575daf9d4919d1808bbd6a30be263c001dd') + version('4-7', sha256='a5f5588db457dc3e6562d1f7da1707960304560fbb0a261559fa3f112a476aea') + version('4-6', sha256='6bf0aeef38f357a313e376090b45d3e0713ef9e52ca198075fae8579b8d5a23a') + version('4-5', sha256='dc61c6214fdf592dfaa3766eed83cf2bbeabb1755f5146a6d3bcfe55ddbe428f') + version('4-4', sha256='a915ff3500daa99b74ce9039fbd8abcbd08051e838a1b337e1d794b73537b33b') + version('4-3', sha256='5cc892a263be2e179a5c2d712c50d7698af7d05d01dfed59c1e36840965f0c4e') + version('4-2', sha256='25e183f2744fcd4c9995f52865c3f2bf415c7ce0504cfa44093a5f1846a4624f') + version('4-01', sha256='43020f6497f18086c50e263555c2a21c6cfbba3044b1330c6f400357f040bbb1') + version('4-00', sha256='c24de76f919dca7c92b3c9fce7a39142c6e61fd39f691d2e4df15fe413b5190d') + version('3-06', sha256='41948869f2e4dcfa31f4bad42b938c25dd174660c427feb2f9effa9af5e59c7d') + + depends_on('cmake@3.8:', type='build') + depends_on('clhep') + depends_on('root') + depends_on('geant4') + + def cmake_args(self): + args = [] + + args.append('-DROOT_DIR={0}'.format( + self.spec['root'].prefix)) + args.append('-DGeant4_DIR={0}'.format( + self.spec['geant4'].prefix)) + args.append('-DCLHEP_LIB_DIR={0}'.format( + self.spec['clhep'].prefix.lib)) + args.append('-DCLHEP_INC_DIR={0}'.format( + self.spec['clhep'].prefix.include)) + args.append('-DWITH_TEST=OFF') + + return args diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index 5539adfc02..722fe46a67 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -18,6 +18,7 @@ class Vim(AutotoolsPackage): homepage = "http://www.vim.org" url = "https://github.com/vim/vim/archive/v8.1.0338.tar.gz" + version('8.2.1201', sha256='39032fe866f44724b104468038dc9ac4ff2c00a4b18c9a1e2c27064ab1f1143d') version('8.1.2141', sha256='7be3c3d88a6c871121230ffb9b7371b1d2ab462118dedb967c7265473af1144b') version('8.1.0338', sha256='3febcc4e49eaca458be1a1e8055a3a52887aa2054b03e24d5f38d192c3de51a0') version('8.1.0001', sha256='c342acaa26589f371fa34a5ca213b95811f26185c12443f8f48ad2868dee2935') @@ -91,11 +92,11 @@ class Vim(AutotoolsPackage): if '+python' in spec: if 'python@3:' in self.spec: - configure_args.append("--enable-python3interp=yes") + configure_args.append("--enable-python3interp=dynamic") configure_args.append("--enable-pythoninterp=no") else: configure_args.append("--enable-python3interp=no") - configure_args.append("--enable-pythoninterp=yes") + configure_args.append("--enable-pythoninterp=dynamic") else: configure_args.append("--enable-python3interp=no") diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index cd72bcda2c..d2f3987895 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -25,6 +25,11 @@ class Visit(CMakePackage): # linux: # spack install visit ^python+shared ^glib@2.56.3 ^py-setuptools@44.1.0 # + # linux w/o opengl: (add mesa as opengl if system lacks system opengl ) + # + # spack install visit ^python+shared ^glib@2.56.3 ^py-setuptools@44.1.0 \ + # ^mesa+opengl + # # macOS: # spack install visit ^python+shared ^glib@2.56.3 ^py-setuptools@44.1.0 \ # ^qt~framework @@ -159,6 +164,7 @@ class Visit(CMakePackage): # https://github.com/visit-dav/visit/issues/3498 depends_on('vtk@8.1.0:8.1.999+opengl2~python', when='~python @3.0:3.999,develop') depends_on('vtk@8.1.0:8.1.999+opengl2+python', when='+python @3.0:3.999,develop') + depends_on('glu', when='platform=linux') depends_on('vtk@6.1.0~opengl2', when='@:2.999') depends_on('vtk+python', when='+python @3.0:,develop') depends_on('vtk~mpi', when='~mpi') diff --git a/var/spack/repos/builtin/packages/votca-tools/package.py b/var/spack/repos/builtin/packages/votca-tools/package.py index f676fb633b..8bedb0477a 100644 --- a/var/spack/repos/builtin/packages/votca-tools/package.py +++ b/var/spack/repos/builtin/packages/votca-tools/package.py @@ -30,7 +30,7 @@ class VotcaTools(CMakePackage): version('1.4', sha256='41638122e7e59852af61d391b4ab8c308fd2e16652f768077e13a99d206ec5d3') # https://github.com/votca/tools/pull/229, fix mkl in exported target - patch("https://github.com/votca/tools/pull/229.patch", sha256="250d0b679e5d3104e3c8d6adf99751b71386c7ed4cbdae1c75408717ef3f401f", when="@1.6+mkl") + patch("https://github.com/votca/tools/pull/229.patch", sha256="250d0b679e5d3104e3c8d6adf99751b71386c7ed4cbdae1c75408717ef3f401f", when="@1.6:1.6.0+mkl") variant('mkl', default=False, description='Build with MKL support') conflicts('+mkl', when='@1.4:1.5.9999') diff --git a/var/spack/repos/builtin/packages/vtk-h/package.py b/var/spack/repos/builtin/packages/vtk-h/package.py index 2a934a442a..9ed842b508 100644 --- a/var/spack/repos/builtin/packages/vtk-h/package.py +++ b/var/spack/repos/builtin/packages/vtk-h/package.py @@ -34,13 +34,20 @@ class VtkH(Package, CudaPackage): and DIY2 to provide a toolkit with hybrid parallel capabilities.""" homepage = "https://github.com/Alpine-DAV/vtk-h" - url = "https://github.com/Alpine-DAV/vtk-h/releases/download/v0.5.0/vtkh-v0.5.0.tar.gz" + url = "https://github.com/Alpine-DAV/vtk-h/releases/download/v0.5.8/vtkh-v0.5.8.tar.gz" git = "https://github.com/Alpine-DAV/vtk-h.git" maintainers = ['cyrush'] version('develop', branch='develop', submodules=True) - version('0.5.0', sha256="9014a8a61a8d7ff636866c6e3b1ebb918ff23fa67cf8d4de801c4a2981de8c96") + version('0.6.1', sha256="ca30b5ff1a48fa247cd20b3f19452f7744eb744465e0b64205135aece42d274f") + version('0.6.0', sha256="2fc054f88ae253fb1bfcae22a156bcced08eca963ba90384dcd5b5791e6dfbf4") + version('0.5.8', sha256="203b337f4280a24a2b75722384f77e0e2f5965058b541efc153db76b7ab98133") + version('0.5.7', sha256="e8c1925dc34ee6be17cec734121e43002e3c02b54ef8dac341b51a455b95e402") + version('0.5.6', sha256="c78c0fa71a9687c2951a06d2112b52aa81fdcdcfbc9464d1578326d03fbb205e") + version('0.5.4', sha256="92bf3741df7a15e36ff41a9a783f3b88eecc86e55cad1defba76f141baa2610b") + version('0.5.3', sha256="0c4aae3bd2a5906738a6806de2b62ea2049ac8b40ebe7fc2ba25505272c2d359") + version('0.5.2', sha256="db2e6250c0ece6381fc90540317ad7b5869dbcce0231ce9be125916a77bfdb25") variant("shared", default=True, description="Build vtk-h as shared libs") variant("mpi", default=True, description="build mpi support") @@ -48,6 +55,8 @@ class VtkH(Package, CudaPackage): variant("cuda", default=False, description="build cuda support") variant("openmp", default=(sys.platform != 'darwin'), description="build openmp support") + variant("logging", default=False, description="Build vtk-h with logging enabled") + variant("contourtree", default=False, description="Enable contour tree support") # use cmake 3.14, newest that provides proper cuda support # and we have seen errors with cuda in 3.15 @@ -56,17 +65,17 @@ class VtkH(Package, CudaPackage): depends_on("mpi", when="+mpi") depends_on("cuda", when="+cuda") - depends_on("vtk-m@1.5.0~tbb+openmp", when="+openmp") - depends_on("vtk-m@1.5.0~tbb~openmp", when="~openmp") + depends_on("vtk-m@ascent_ver~tbb+openmp", when="+openmp") + depends_on("vtk-m@ascent_ver~tbb~openmp", when="~openmp") - depends_on("vtk-m@1.5.0+cuda~tbb+openmp", when="+cuda+openmp") - depends_on("vtk-m@1.5.0+cuda~tbb~openmp", when="+cuda~openmp") + depends_on("vtk-m@ascent_ver+cuda~tbb+openmp", when="+cuda+openmp") + depends_on("vtk-m@ascent_ver+cuda~tbb~openmp", when="+cuda~openmp") - depends_on("vtk-m@1.5.0~tbb+openmp~shared", when="+openmp~shared") - depends_on("vtk-m@1.5.0~tbb~openmp~shared", when="~openmp~shared") + depends_on("vtk-m@ascent_ver~tbb+openmp~shared", when="+openmp~shared") + depends_on("vtk-m@ascent_ver~tbb~openmp~shared", when="~openmp~shared") - depends_on("vtk-m@1.5.0+cuda~tbb+openmp~shared", when="+cuda+openmp~shared") - depends_on("vtk-m@1.5.0+cuda~tbb~openmp~shared", when="+cuda~openmp~shared") + depends_on("vtk-m@ascent_ver+cuda~tbb+openmp~shared", when="+cuda+openmp~shared") + depends_on("vtk-m@ascent_ver+cuda~tbb~openmp~shared", when="+cuda~openmp~shared") def install(self, spec, prefix): with working_dir('spack-build', create=True): @@ -99,6 +108,13 @@ class VtkH(Package, CudaPackage): if "+openmp" in spec: cmake_args.append("-DENABLE_OPENMP=ON") + # build with logging + if "+logging" in spec: + cmake_args.append("-DENABLE_LOGGING=ON") + + if "+contourtree" in spec: + cmake_args.append("-DENABLE_FILTER_CONTOUR_TREE=ON") + # cuda support if "+cuda" in spec: cmake_args.append("-DVTKm_ENABLE_CUDA:BOOL=ON") @@ -216,6 +232,14 @@ class VtkH(Package, CudaPackage): cfg.write(cmake_cache_entry("ENABLE_SERIAL", "OFF")) ####################### + # Logging + ####################### + if "+logging" in spec: + cfg.write(cmake_cache_entry("ENABLE_LOGGING", "ON")) + else: + cfg.write(cmake_cache_entry("ENABLE_LOGGING", "OFF")) + + ####################### # MPI ####################### diff --git a/var/spack/repos/builtin/packages/vtk-h/vtkm_lagrange_cuda_fix.patch b/var/spack/repos/builtin/packages/vtk-h/vtkm_lagrange_cuda_fix.patch deleted file mode 100644 index 2f90477e76..0000000000 --- a/var/spack/repos/builtin/packages/vtk-h/vtkm_lagrange_cuda_fix.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/src/vtkh/filters/CMakeLists.txt b/src/vtkh/filters/CMakeLists.txt -index 4a42d61..f586155 100644 ---- a/src/vtkh/filters/CMakeLists.txt -+++ b/src/vtkh/filters/CMakeLists.txt -@@ -41,6 +41,11 @@ set(vtkh_filters_deps vtkh_core vtkh_utils ) - if(CUDA_FOUND) - # triggers cuda compile - list(APPEND vtkh_filters_deps cuda) -+ -+ if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 10.0.0) -+ set(particle_cuda_src "${CMAKE_CURRENT_SOURCE_DIR}/Lagrangian.cpp") -+ set_source_files_properties(${particle_cuda_src} PROPERTIES COMPILE_FLAGS "-Xptxas --opt-level=0") -+ endif() - endif() - - diff --git a/var/spack/repos/builtin/packages/vtk-m/disable_flying_edges.patch b/var/spack/repos/builtin/packages/vtk-m/disable_flying_edges.patch new file mode 100644 index 0000000000..9b875ce5e0 --- /dev/null +++ b/var/spack/repos/builtin/packages/vtk-m/disable_flying_edges.patch @@ -0,0 +1,14 @@ +diff --git a/vtkm/worklet/Contour.h b/vtkm/worklet/Contour.h +index c28c5ec09..70737777f 100644 +--- a/vtkm/worklet/Contour.h ++++ b/vtkm/worklet/Contour.h +@@ -46,7 +46,8 @@ struct DeduceCoordType + vtkm::cont::CellSetSingleType<>& result, + Args&&... args) const + { +- result = flying_edges::execute(cells, coords, std::forward<Args>(args)...); ++ result = marching_cells::execute(cells, coords, std::forward<Args>(args)...); ++ //result = flying_edges::execute(cells, coords, std::forward<Args>(args)...); + } + }; + diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index 5fd77da94d..c3f5a70328 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -30,7 +30,11 @@ class VtkM(CMakePackage, CudaPackage): version('1.3.0', sha256="f88c1b0a1980f695240eeed9bcccfa420cc089e631dc2917c9728a2eb906df2e") version('1.2.0', sha256="607272992e05f8398d196f0acdcb4af025a4a96cd4f66614c6341f31d4561763") version('1.1.0', sha256="78618c81ca741b1fbba0853cb5d7af12c51973b514c268fc96dfb36b853cdb18") - + # version used by ascent + version('ascent_ver', commit="a3b8525ef97d94996ae843db0dd4f675c38e8b1e") + # patches, required for ascent + patch('vtkmdiy_fpic.patch', when='@ascent_ver') + patch('disable_flying_edges.patch', when='@ascent_ver') # use release, instead of release with debug symbols b/c vtkm libs # can overwhelm compilers with too many symbols variant('build_type', default='Release', description='CMake build type', @@ -102,7 +106,7 @@ class VtkM(CMakePackage, CudaPackage): # logging support if "+logging" in spec: - if spec.satisfies('@:1.2.0'): + if not spec.satisfies('@1.3.0:,ascent_ver'): raise InstallError('logging is not supported for\ vtkm version lower than 1.3') options.append("-DVTKm_ENABLE_LOGGING:BOOL=ON") @@ -111,7 +115,7 @@ class VtkM(CMakePackage, CudaPackage): # mpi support if "+mpi" in spec: - if spec.satisfies('@:1.2.0'): + if not spec.satisfies('@1.3.0:,ascent_ver'): raise InstallError('mpi is not supported for\ vtkm version lower than 1.3') options.append("-DVTKm_ENABLE_MPI:BOOL=ON") @@ -121,7 +125,7 @@ class VtkM(CMakePackage, CudaPackage): # openmp support if "+openmp" in spec: # openmp is added since version 1.3.0 - if spec.satisfies('@:1.2.0'): + if not spec.satisfies('@1.3.0:,ascent_ver'): raise InstallError('OpenMP is not supported for\ vtkm version lower than 1.3') options.append("-DVTKm_ENABLE_OPENMP:BOOL=ON") diff --git a/var/spack/repos/builtin/packages/vtk-m/vtkmdiy_fpic.patch b/var/spack/repos/builtin/packages/vtk-m/vtkmdiy_fpic.patch new file mode 100644 index 0000000000..765efe1c58 --- /dev/null +++ b/var/spack/repos/builtin/packages/vtk-m/vtkmdiy_fpic.patch @@ -0,0 +1,12 @@ +diff --git a/vtkm/thirdparty/diy/vtkmdiy/CMakeLists.txt b/vtkm/thirdparty/diy/vtkmdiy/CMakeLists.txt +index 5211330..3e991f3 100644 +--- a/vtkm/thirdparty/diy/vtkmdiy/CMakeLists.txt ++++ b/vtkm/thirdparty/diy/vtkmdiy/CMakeLists.txt +@@ -139,6 +139,7 @@ function(add_diy_mpi_library use_mpi) + endif() + + add_library(${lib_name} ${sources}) ++ set_property(TARGET ${lib_name} PROPERTY POSITION_INDEPENDENT_CODE ON) + target_compile_features(${lib_name} PRIVATE cxx_std_11) + target_compile_definitions(${lib_name} + PRIVATE -DVTKMDIY_HAS_MPI=${has_mpi_val} diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index 2a334cb1fb..ef6c6570c2 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -104,7 +104,7 @@ class Vtk(CMakePackage): depends_on('sqlite', when='@8.2.0:') # For finding Fujitsu-MPI wrapper commands - patch('find_fujitsu_mpi.patch', when='%fj') + patch('find_fujitsu_mpi.patch', when='@:8.2.0%fj') def url_for_version(self, version): url = "http://www.vtk.org/files/release/{0}/VTK-{1}.tar.gz" @@ -159,10 +159,15 @@ class Vtk(CMakePackage): ]) if '+mpi' in spec: - cmake_args.extend([ - '-DVTK_Group_MPI:BOOL=ON', - '-DVTK_USE_SYSTEM_DIY2:BOOL=OFF', - ]) + if spec.satisfies('@:8.2.0'): + cmake_args.extend([ + '-DVTK_Group_MPI:BOOL=ON', + '-DVTK_USE_SYSTEM_DIY2:BOOL=OFF' + ]) + else: + cmake_args.extend([ + '-DVTK_USE_MPI=ON' + ]) if '+ffmpeg' in spec: cmake_args.extend(['-DModule_vtkIOFFMPEG:BOOL=ON']) diff --git a/var/spack/repos/builtin/packages/wannier90/package.py b/var/spack/repos/builtin/packages/wannier90/package.py index 5be0134141..e4aa1017c7 100644 --- a/var/spack/repos/builtin/packages/wannier90/package.py +++ b/var/spack/repos/builtin/packages/wannier90/package.py @@ -15,8 +15,10 @@ class Wannier90(MakefilePackage): Wannier90 is released under the GNU General Public License. """ homepage = 'http://wannier.org' - url = 'http://wannier.org/code/wannier90-2.0.1.tar.gz' + url = 'https://github.com/wannier-developers/wannier90/archive/v3.1.0.tar.gz' + version('3.1.0', sha256='40651a9832eb93dec20a8360dd535262c261c34e13c41b6755fa6915c936b254') + version('3.0.0', sha256='f196e441dcd7b67159a1d09d2d7de2893b011a9f03aab6b30c4703ecbf20fe5b') version('2.1.0', sha256='ee90108d4bc4aa6a1cf16d72abebcb3087cf6c1007d22dda269eb7e7076bddca') version('2.0.1', sha256='05ea7cd421a219ce19d379ad6ae3d9b1a84be4ffb367506ffdfab1e729309e94') @@ -26,17 +28,40 @@ class Wannier90(MakefilePackage): parallel = False - build_targets = [ - 'wannier', 'post', 'lib', 'w90chk2chk', 'w90vdw', 'w90pov' - ] + variant( + 'shared', + default=True, + description='Builds a shared version of the library' + ) @property - def makefile_name(self): - # Older versions use 'make.sys' - filename = 'make.sys' + def build_targets(self): + targets = [] + if '@:2' in self.spec: + targets = [ + 'lib', 'wannier', 'post', 'w90chk2chk', 'w90vdw', 'w90pov' + ] + if '@3:' in self.spec: + targets = ['wannier', 'post', 'lib', 'w90chk2chk', 'w90vdw'] + if '+shared' in self.spec: + targets.append('dynlib') + + return targets + + def url_for_version(self, version): + if (version > Version('2')): + url = 'https://github.com/wannier-developers/wannier90/archive/v{0}.tar.gz' + else: + url = 'http://wannier.org/code/wannier90-{0}.tar.gz' + return url.format(version) - # While newer search for 'make.inc' - if self.spec.satisfies('@2.1.0:'): + @property + def makefile_name(self): + # Version 2.0.1 uses make.sys, + # other verions use make.inc + if self.spec.satisfies('@2.0.1'): + filename = 'make.sys' + else: filename = 'make.inc' abspath = join_path(self.stage.source_path, filename) @@ -46,10 +71,12 @@ class Wannier90(MakefilePackage): lapack = self.spec['lapack'].libs blas = self.spec['blas'].libs + mpi = self.spec['mpi'].libs + substitutions = { '@F90': spack_fc, '@MPIF90': self.spec['mpi'].mpifc, - '@LIBS': (lapack + blas).joined() + '@LIBS': (lapack + blas + mpi).joined() } template = join_path( @@ -61,10 +88,67 @@ class Wannier90(MakefilePackage): for key, value in substitutions.items(): filter_file(key, value, self.makefile_name) - def install(self, spec, prefix): + if '@:2 +shared' in self.spec: + # this is to build a .shared wannier90 library + filter_file('LIBRARY = ../../libwannier.a', + 'LIBRARY = ../../libwannier.' + dso_suffix, + join_path(self.stage.source_path, 'src/Makefile.2')) + filter_file('parameters.o kmesh.o io.o comms.o ' + 'utility.o get_oper.o constants.o ' + 'postw90_common.o wan_ham.o spin.o ' + 'dos.o berry.o kpath.o kslice.o ' + 'boltzwann.o geninterp.o', + 'comms.o get_oper.o postw90_common.o ' + 'wan_ham.o spin.o dos.o berry.o ' + 'kpath.o kslice.o boltzwann.o geninterp.o', + join_path(self.stage.source_path, + 'src/Makefile.2')) + filter_file('../../wannier90.x: .*', + '../../wannier90.x: $(OBJS) ' + '../wannier_prog.F90 $(LIBRARY)', + join_path(self.stage.source_path, + 'src/Makefile.2')) + filter_file('../../postw90.x: $(OBJS_POST) ' + '$(POSTDIR)postw90.F90', + '../../postw90.x: $(OBJS_POST) ' + '$(POSTDIR)postw90.F90 $(LIBRARY)', + join_path(self.stage.source_path, + 'src/Makefile.2'), string=True) + filter_file( + '$(COMPILER) ../wannier_prog.F90 ' + '$(LDOPTS) $(OBJS) $(LIBS) ' + '-o ../../wannier90.x', + '$(COMPILER) -I../obj ../wannier_prog.F90 ' + '$(LDOPTS) -L../.. -lwannier ' + '-o ../../wannier90.x', + join_path(self.stage.source_path, + 'src/Makefile.2'), string=True) + filter_file( + '$(COMPILER) $(POSTDIR)postw90.F90 ' + '$(POSTOPTS) $(LDOPTS) ' + '$(OBJS_POST) ' + '$(LIBS) -o ../../postw90.x', + '$(COMPILER) -I../obj $(POSTDIR)postw90.F90 ' + '$(POSTOPTS) $(LDOPTS) $(OBJS_POST) ' + '-L../.. -lwannier $(LIBS) -o ../../postw90.x', + join_path(self.stage.source_path, + 'src/Makefile.2'), string=True) + filter_file( + '$(AR) $(ARFLAGS) ' + '$(LIBRARY) $(OBJS2) $(OBJS)', + '$(MPIF90) $(FCOPTS) -shared -o ' + '$(LIBRARY) $(OBJS2) $(OBJS) $(LIBS)', + join_path(self.stage.source_path, + 'src/Makefile.2'), string=True) + + def setup_build_environment(self, env): + env.set('MPIFC', self.prefix.bin.mpifc) + def install(self, spec, prefix): mkdirp(self.prefix.bin) mkdirp(self.prefix.lib) + if '+shared' in spec: + mkdirp(self.prefix.modules) install( join_path(self.stage.source_path, 'wannier90.x'), @@ -76,10 +160,17 @@ class Wannier90(MakefilePackage): join_path(self.prefix.bin, 'postw90.x') ) - install( - join_path(self.stage.source_path, 'libwannier.a'), - join_path(self.prefix.lib, 'libwannier.a') - ) + inst = [] + if '+shared' in spec: + inst.append('libwannier.' + dso_suffix) + # version 3 or 2 without the shared variant + # also has a .a version of the library + if '@3:' in spec or '~shared' in spec: + inst.append('libwannier.a') + + for file in inst: + install(join_path(self.stage.source_path, file), + join_path(self.prefix.lib, file)) install( join_path(self.stage.source_path, 'w90chk2chk.x'), @@ -91,12 +182,18 @@ class Wannier90(MakefilePackage): join_path(self.prefix.bin, 'w90vdw.x') ) - install( - join_path(self.stage.source_path, 'utility', 'w90pov', 'w90pov'), - join_path(self.prefix.bin, 'w90pov') - ) + if spec.satisfies('@:2'): + install( + join_path(self.stage.source_path, + 'utility', 'w90pov', 'w90pov'), + join_path(self.prefix.bin, 'w90pov') + ) install_tree( join_path(self.stage.source_path, 'pseudo'), join_path(self.prefix.bin, 'pseudo') ) + + for file in find(join_path(self.stage.source_path, 'src/obj'), + '*.mod'): + install(file, self.prefix.modules) diff --git a/var/spack/repos/builtin/packages/wcslib/package.py b/var/spack/repos/builtin/packages/wcslib/package.py index 147cc9ed72..0c336592d0 100644 --- a/var/spack/repos/builtin/packages/wcslib/package.py +++ b/var/spack/repos/builtin/packages/wcslib/package.py @@ -11,8 +11,9 @@ class Wcslib(AutotoolsPackage): defined in the FITS WCS papers.""" homepage = "http://www.atnf.csiro.au/people/mcalabre/WCS/wcslib/" - url = "ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib-6.4.tar.bz2" + url = "ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib-7.3.tar.bz2" + version('7.3', sha256='4b01cf425382a26ca4f955ed6841a5f50c55952a2994367f8e067e4183992961') version('6.4', sha256='13c11ff70a7725563ec5fa52707a9965fce186a1766db193d08c9766ea107000') variant('cfitsio', default=False, description='Include CFITSIO support') diff --git a/var/spack/repos/builtin/packages/weechat/package.py b/var/spack/repos/builtin/packages/weechat/package.py new file mode 100644 index 0000000000..ddee20bf1f --- /dev/null +++ b/var/spack/repos/builtin/packages/weechat/package.py @@ -0,0 +1,53 @@ +# 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 Weechat(CMakePackage): + """WeeChat is a fast, light and extensible chat client, with a + text-based user interface.""" + + homepage = "https://weechat.org" + url = "https://weechat.org/files/src/weechat-2.9.tar.gz" + + version('2.9', sha256='3a78063b76c42ba306eacf8f74cb8c9a260f8a61d1915d0b5d76f11d2be69a53') + + variant('perl', default=False, description='Include perl support') + variant('lua', default=False, description='Include lua support') + variant('ruby', default=False, description='Include ruby support') + variant('tcl', default=False, description='Include TCL support') + variant('guile', default=False, description='Include guile support') + variant('php', default=False, description='Include php support') + + depends_on('cmake@3:', type='build') + depends_on('python@3.5:') + depends_on('gnutls@3.0.21:') + depends_on('ncurses') + depends_on('aspell') + depends_on('libgcrypt') + depends_on('curl') + depends_on('zlib') + depends_on('ruby@1.9.1:', when='+ruby') + depends_on('tcl@8.5:', when='+tcl') + depends_on('perl', when='+perl') + depends_on('lua', when='+lua') + depends_on('guile@2.0:', when='+guile') + depends_on('php@7.0:', when='+php') + + def cmake_args(self): + spec = self.spec + cmake_args = [] + if '~ruby' in spec: + cmake_args.append('-DENABLE_RUBY=OFF') + if '~tcl' in spec: + cmake_args.append('-DENABLE_TCL=OFF') + if '~perl' in spec: + cmake_args.append('-DENABLE_PERL=OFF') + if '~lua' in spec: + cmake_args.append('-DENABLE_LUA=OFF') + if '~guile' in spec: + cmake_args.append('-DENABLE_GUILE=OFF') + if '~php' in spec: + cmake_args.append('-DENABLE_PHP=OFF') + return cmake_args diff --git a/var/spack/repos/builtin/packages/whizard/package.py b/var/spack/repos/builtin/packages/whizard/package.py index 1ad8e07568..d38994c67e 100644 --- a/var/spack/repos/builtin/packages/whizard/package.py +++ b/var/spack/repos/builtin/packages/whizard/package.py @@ -12,19 +12,26 @@ class Whizard(AutotoolsPackage): and simulated event samples.""" homepage = "whizard.hepforge.org" - url = "https://whizard.hepforge.org/downloads/?f=whizard-2.8.2.tar.gz" + url = "https://whizard.hepforge.org/downloads/?f=whizard-2.8.3.tar.gz" git = "https://gitlab.tp.nt.uni-siegen.de/whizard/public.git" maintainers = ['vvolkl'] version('master', branch="master") version('3.0.0_alpha', sha256='4636e5a10350bb67ccc98cd105bc891ea04f3393c2420f81be3d21240be20009') - version('2.8.2', sha256='32c9be342d01b3fc6f947fddce74bf2d81ece37fb39bca1f37778fb0c07e2568', prefered=True) + version('2.8.4', sha256='49893f077484470934a9d6e1545bbda7d398076568bceda00880d58132f26432', preferred=True) + version('2.8.3', sha256='96a9046682d4b992b477eb96d561c3db789207e1049b60c9bd140db40eb1e5d7') + version('2.8.2', sha256='32c9be342d01b3fc6f947fddce74bf2d81ece37fb39bca1f37778fb0c07e2568') version('2.8.1', sha256='0c759ce0598e25f38e04659f745c5963d238c4b5c12209f16449b6c0bc6dc64e') version('2.8.0', sha256='3b5175eafa879d1baca20237d18fb2b18bee89631e73ada499de9c082d009696') - variant('hepmc', default=True, - description="builds with hepmc") + variant( + 'hepmc', + default='3', + description='builds with hepmc 2/3', + values=('off', '2', '3'), + multi=False + ) variant('pythia8', default=True, description="builds with pythia8") @@ -41,15 +48,23 @@ class Whizard(AutotoolsPackage): variant('openmp', default=False, description="builds with openmp") + variant('openloops', default=False, + description="builds with openloops") + variant('latex', default=False, description="data visualization with latex") depends_on('ocaml', type='build', when="@3:") depends_on('ocaml@:4.8.2', type='build', when="@:2.99.99") - depends_on('hepmc', when="+hepmc") + depends_on('hepmc', when="hepmc=2") + depends_on('hepmc3', when="hepmc=3") + depends_on('lcio', when="+lcio") depends_on('pythia8', when="+pythia8") depends_on('lhapdf', when="+lhapdf") depends_on('fastjet', when="+fastjet") + depends_on('openloops@2.0.0: +compile_extra num_jobs=1 ' + 'processes=eett,eevvjj,ppllj,tbw', + when="+openloops") depends_on('texlive', when="+latex") depends_on('zlib') @@ -66,21 +81,30 @@ class Whizard(AutotoolsPackage): def configure_args(self): spec = self.spec args = [ - '--enable-hepmc=%s' % ("yes" if "+hepmc" in spec else "no"), + '--enable-hepmc=%s' % ("no" if "hepmc=off" in spec else "yes"), '--enable-fastjet=%s' % ("yes" if "+fastjet" in spec else "no"), '--enable-pythia8=%s' % ("yes" if "+pythia8" in spec else "no"), '--enable-lcio=%s' % ("yes" if "+lcio" in spec else "no"), '--enable-lhapdf=%s' % ("yes" if "+lhapdf" in spec else "no"), - # todo: openloops + '--enable-openloops=%s' % ("yes" if "+openloops" in spec + else "no"), # todo: hoppet # todo: recola # todo: looptools # todo: gosam # todo: pythia6 ] + + if "+openloops" in spec: + args.append('--with-openloops=%s' % spec['openloops'].prefix) + if "+lcio" in spec: + args.append('--with-lcio=%s' % spec['lcio'].prefix) + if "hepmc=3" in spec: + args.append('--with-hepmc=%s' % spec['hepmc3'].prefix) + if "hepmc=2" in spec: + args.append('--with-hepmc=%s' % spec['hepmc'].prefix) if "+openmp" not in spec: args.append('--disable-openmp') - return args def url_for_version(self, version): diff --git a/var/spack/repos/builtin/packages/wonton/package.py b/var/spack/repos/builtin/packages/wonton/package.py new file mode 100644 index 0000000000..468b80c74c --- /dev/null +++ b/var/spack/repos/builtin/packages/wonton/package.py @@ -0,0 +1,127 @@ +# 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 Wonton(CMakePackage): + """Wonton is a support package for the Portage + (https://github.com/laristra/portage) and Tangram + (https://github.com/laristra/tangram) libraries. It contains some + mesh/state classes, wrappers for other mesh/state libraries and + some utilities required by Portage and Tangram. + + """ + + homepage = "https://portage.lanl.gov" + git = "https://github.com/laristra/wonton.git" + url = "https://github.com/laristra/wonton/releases/download/1.2.1/wonton-1.2.1.tar.gz" + + maintainers = ['raovgarimella'] + + version('1.2.1', sha256='4f00513d1abe86f256214d2b5171b1575b2cd464df8609307c24cbc4c595c305') + + variant('lapacke', default=True, description='Use LAPACKE solvers') + + # Variants for controlling parallelism + variant('mpi', default=False, description='Enable distributed meshes with MPI') + variant('thrust', default=False, description='Enable on-node parallelism using NVidia Thrust library') + variant('kokkos', default=False, description='Enable on-node or device parallelism with Kokkos') + variant('openmp', default=False, description="Enable on-node parallelism using OpenMP") + variant('cuda', default=False, description="Enable GPU parallelism using CUDA") + + # wrappers to external mesh/state libraries + variant('jali', default=False, description='Enable Jali mesh wrappers') + + conflicts('+jali ~mpi') # Jali needs MPI + conflicts('+thrust +cuda') # Thrust with CUDA does not work as yet + conflicts('+thrust +kokkos') # Don't enable Kokkos, Thrust simultaneously + + # dependencies + depends_on('cmake@3.13:', type='build') + + depends_on('netlib-lapack +lapacke', when='+lapacke') + + depends_on('mpi', when='+mpi') + + depends_on('jali +mstk', when='+jali') + depends_on('mpi', when='+jali') + + # We need boost only when no thrust option + depends_on('boost', when='~thrust') + + # NVidia thrust library + depends_on('thrust@1.8.3', when='+thrust') + + # CUDA library + depends_on('cuda', when='+cuda') + + # Kokkos with appropriate option + depends_on('kokkos +openmp', when='+kokkos +openmp') + depends_on('kokkos +cuda', when='+kokkos +cuda') + + def cmake_args(self): + options = [] + if '+mpi' in self.spec: + options.append('-DWONTON_ENABLE_MPI=ON') + else: + options.append('-DWONTON_ENABLE_MPI=OFF') + + if '+lapacke' in self.spec: + options.append('-DWONTON_ENABLE_LAPACKE=ON') + options.append('-DBLA_VENDOR=' + self.spec['blas'].name.upper()) + options.append( + '-DBLAS_LIBRARIES=' + self.spec['blas'].libs.joined() + ) + else: + options.append('-DWONTON_ENABLE_LAPACKE=OFF') + + if '+thrust' in self.spec: + options.append('-DWONTON_ENABLE_THRUST=ON') + if '+cuda' in self.spec: + options.append( + '-DTHRUST_HOST_BACKEND:STRING=THRUST_HOST_SYSTEM_CPP' + ) + options.append( + '-DTHRUST_DEVICE_BACKEND:STRING=THRUST_DEVICE_SYSTEM_CUDA' + ) + else: + options.append( + '-DTHRUST_HOST_BACKEND:STRING=THRUST_HOST_SYSTEM_CPP' + ) + options.append( + '-DTHRUST_DEVICE_BACKEND:STRING=THRUST_DEVICE_SYSTEM_OMP' + ) + else: + options.append('-DWONTON_ENABLE_THRUST=OFF') + + if '+kokkos' in self.spec: + options.append('-DWONTON_ENABLE_Kokkos=ON') + if '+cuda' in self.spec: + options.append('-DWONTON_ENABLE_Kokkos_CUDA=ON') + elif '+openmp' in self.spec: + options.append('-DWONTON_ENABLE_Kokkos_OpenMP=ON') + else: + options.append('-DWONTON_ENABLE_Kokkos=OFF') + + if '+jali' in self.spec: + options.append('-DWONTON_ENABLE_Jali=ON') + else: + options.append('-DWONTON_ENABLE_Jali=OFF') + + if '+flecsi' in self.spec: + options.append('-DWONTON_ENABLE_FleCSI=ON') + else: + options.append('-DWONTON_ENABLE_FleCSI=OFF') + + # Unit test variant + if self.run_tests: + options.append('-DENABLE_UNIT_TESTS=ON') + options.append('-DENABLE_APP_TESTS=ON') + else: + options.append('-DENABLE_UNIT_TESTS=OFF') + options.append('-DENABLE_APP_TESTS=OFF') + + return options diff --git a/var/spack/repos/builtin/packages/xbraid/package.py b/var/spack/repos/builtin/packages/xbraid/package.py index d3dff7d295..d58ac78016 100644 --- a/var/spack/repos/builtin/packages/xbraid/package.py +++ b/var/spack/repos/builtin/packages/xbraid/package.py @@ -12,7 +12,7 @@ class Xbraid(MakefilePackage): """XBraid: Parallel time integration with Multigrid""" homepage = "https://computing.llnl.gov/projects/parallel-time-integration-multigrid/software" - url = "https://computing.llnl.gov/projects/parallel-time-integration-multigrid/download/braid_2.2.0.tar.gz" + url = "https://github.com/XBraid/xbraid/archive/v2.2.0.tar.gz" version('2.2.0', sha256='082623b2ddcd2150b3ace65b96c1e00be637876ec6c94dc8fefda88743b35ba3') diff --git a/var/spack/repos/builtin/packages/xcfun/package.py b/var/spack/repos/builtin/packages/xcfun/package.py index a40234c643..7369702279 100644 --- a/var/spack/repos/builtin/packages/xcfun/package.py +++ b/var/spack/repos/builtin/packages/xcfun/package.py @@ -16,6 +16,8 @@ class Xcfun(CMakePackage): version('2.0.0a6', sha256='a51086490890393439f98c5e3e4e1622908fe934bbc5063b1d4363cc4c15496d') + version('2.0.0a2', + sha256='f29e80fdb5c8089fb0eeb7827659111005cb13eb42bf75fcb0c034f6bd067c31') extends('python') depends_on('cmake@3.11:', type='build') diff --git a/var/spack/repos/builtin/packages/xdotool/package.py b/var/spack/repos/builtin/packages/xdotool/package.py new file mode 100644 index 0000000000..da918c32a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/xdotool/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 Xdotool(MakefilePackage): + """fake keyboard/mouse input, window management, and more""" + + homepage = "https://github.com/jordansissel/xdotool" + url = "https://github.com/jordansissel/xdotool/releases/download/v3.20160805.1/xdotool-3.20160805.1.tar.gz" + + version('3.20160805.1', sha256='35be5ff6edf0c620a0e16f09ea5e101d5173280161772fca18657d83f20fcca8') + version('3.20160804.2', sha256='2251671c3c3dadab2b70e08bd87f2de6338c7b4e64e7e2d2d881fd13f9bff72c') + version('3.20160804.1', sha256='7a76ee57515cc767a00a768f1d04c703279d734255a34f8027c29178561fdce9') + version('3.20150503.1', sha256='e8326883bd5e91bede7336cbee186e6e9143f40b3fb61c84afc9bb31b87e96d1') + + depends_on('libxext') + depends_on('libxtst') + depends_on('libxi') + depends_on('libx11') + depends_on('inputproto') + depends_on('libxinerama') + + depends_on('libxkbcommon') + + def edit(self, spec, prefix): + env['PREFIX'] = prefix + + makefile = FileFilter('Makefile') + makefile.filter('xdotool: LDFLAGS+=-Xlinker', '', string=True) + makefile.filter('xdotool: LDFLAGS+=-rpath $(INSTALLLIB)', '', + string=True) diff --git a/var/spack/repos/builtin/packages/xxhash/package.py b/var/spack/repos/builtin/packages/xxhash/package.py index 421026f496..84bcd8966d 100644 --- a/var/spack/repos/builtin/packages/xxhash/package.py +++ b/var/spack/repos/builtin/packages/xxhash/package.py @@ -17,6 +17,7 @@ class Xxhash(MakefilePackage): homepage = "https://github.com/Cyan4973/xxHash" url = "https://github.com/Cyan4973/xxHash/archive/v0.6.5.tar.gz" + version('0.7.4', sha256='4d9706c9da4fbdf901598f5e3b71db0eddd4ac962e827a73ebf75d66dfd820fe') version('0.6.5', sha256='19030315f4fc1b4b2cdb9d7a317069a109f90e39d1fe4c9159b7aaa39030eb95') version('0.6.4', sha256='4570ccd111df6b6386502791397906bf69b7371eb209af7d41debc2f074cdb22') version('0.6.3', sha256='d8c739ec666ac2af983a61dc932aaa2a8873df974d333a9922d472a121f2106e') diff --git a/var/spack/repos/builtin/packages/ycsb/package.py b/var/spack/repos/builtin/packages/ycsb/package.py new file mode 100644 index 0000000000..163672f4e4 --- /dev/null +++ b/var/spack/repos/builtin/packages/ycsb/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 Ycsb(Package): + """Yahoo! Cloud Serving Benchmark.""" + + homepage = "https://research.yahoo.com/news/yahoo-cloud-serving-benchmark/" + url = "https://github.com/brianfrankcooper/YCSB/archive/0.17.0.tar.gz" + git = "https://github.com/brianfrankcooper/YCSB.git" + + version('0.17.0', sha256='5dd1a3d4dd7ac336eadccc83b097c811e142cfe1b23fc278f247054a1892c0e0') + version('0.16.0', sha256='4296fd5e90d7d6d7dfcbad90039ddf16e785706a07f99c1c8a06e6ee06440f71') + version('0.15.0', sha256='50b83c11f1a2f19f45e3cc6781f952c69944d1221dfec72169c3587802fc7fbb') + version('0.14.0', sha256='456bcc9fa3d5d66d76fffa9cec34afd4528d9f02aa8a8d1135f511650516d5cb') + version('0.13.0', sha256='21cb8078a0fe2d8d909145744ca15848dbb6757e98a7fdc97fb4049f82f4afbc') + + depends_on('maven', type='build') + depends_on('java@8', type=('build', 'run')) + depends_on('mongodb-async-driver', type='build') + + def install(self, spec, prefix): + mvn = which('mvn') + jar_name = 'target/mongodb-async-driver-' + \ + spec['mongodb-async-driver'].version.string + '.jar' + path = join_path(self.spec['mongodb-async-driver'].prefix, jar_name) + mvn('install:install-file', '-Dfile={0}'.format(path), + '-DgroupId=com.allanbank', '-DartifactId=mongodb-async-driver', + '-Dversion=2.0.1', '-Dpackaging=jar') + mvn('package', '-DskipTests') + install_tree('.', prefix) diff --git a/var/spack/repos/builtin/packages/yoda/package.py b/var/spack/repos/builtin/packages/yoda/package.py new file mode 100644 index 0000000000..4da424c2a8 --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/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 Yoda(AutotoolsPackage): + """YODA - Yet more Objects for Data Analysis""" + + homepage = "https://yoda.hepforge.org/" + url = "https://yoda.hepforge.org/downloads/?f=YODA-1.8.3.tar.bz2" + + version('1.8.3', sha256='d9dd0ea5e0f630cdf4893c09a40c78bd44455777c2125385ecc26fa9a2acba8a') + version('1.8.2', sha256='89558c11cf9b88b0899713e5b4bf8781fdcecc480ff155985ebbf148c6d80bdb') + version('1.8.1', sha256='51472e12065b9469f13906f0dc609e036d0c1dbd2a8e445e7d654aba73660112') + version('1.8.0', sha256='82c62bbaedb4b6b7d50cd42ce5409d453d46c1cc6724047db5efa74d34dd6dc5') + version('1.7.7', sha256='cfb64b099a79ec4d138792f0b464a8fbb04c4345143f77bbdca07acb744628ce') + version('1.7.6', sha256='864a1459c82676c991fcaed931263a415e815e3c9dc2cad2f94bda6fa4d112e5') + version('1.7.5', sha256='7b1dc7bb380d0fbadce12072f5cc21912c115e826182a3922d864e7edea131db') + version('1.7.4', sha256='3df316b89e9c0052104f8956e4f7d26c0b0b05cdace7d908be35c383361e3a71') + version('1.7.3', sha256='ebf6094733823e9cc2d1586aff06db2d8999c74a47e666baf305322f62c48058') + version('1.7.2', sha256='7f093cf947824ec118767c7c1999a50ea9343c173cf8c5062e3800ba54c2943e') + version('1.7.1', sha256='edd7971ecd272314309c800395200b07cf68547cbac3378a02d0b8c9ac03027b') + version('1.7.0', sha256='b3d6bfb0c52ed87cd240cee5e93e09102832d9ef32505d7275f4d3191a35ce3b') + version('1.6.7', sha256='2abf378573832c201bc6a9fecfff5b2006fc98c7a272540326cda8eb5bd95e16') + version('1.6.6', sha256='cf172a496d9108b93420530ea91055d07ecd514d2894d78db46b806530e91d21') + version('1.6.5', sha256='1477fe754cfe2e4e06aa363a773accf18aab960a8b899968b77834368cac14c5') + version('1.6.4', sha256='4c01f43c18b7b2e71f61dea0bb8c6fdc099c8e1a66256c510652884c4ffffbca') + version('1.6.3', sha256='1dd7e334fe54a05ff911d9e227d395abc5efd29e29d60187a036b2201f97da19') + version('1.6.2', sha256='5793cd1320694118423888801ca520f2719565fde04699ee69e1751f47cb57a8') + version('1.6.1', sha256='ec3f4cc4eb57f94fb431cc37db10eb831f025df95ffd9e516b8009199253c62b') + version('1.6.0', sha256='2920ef2588268484b650dc08438664a3539b79c65a9e80d58e3771bb699e2a6b') + version('1.5.9', sha256='1a19cc8c34c08f1797a93d355250e682eb85d62d4ab277b6714d7873b4bdde75') + version('1.5.8', sha256='011c5be5cc565f8baf02e7ebbe57a57b4d70dc6a528d5b0102700020bbf5a973') + version('1.5.7', sha256='f775df11b034154b8f5d43f12007692c3314672e60d3e554b3928fe5b0f00c29') + version('1.5.6', sha256='050e17b1b80658213281a2e4112dfecc0096f01f269cd739d601b2fd0e790a0c') + version('1.5.5', sha256='ce45df6248c6c50633953048240513dc52ca5c9144ef69ea72ada2df23bc4918') + version('1.5.4', sha256='c41853a1f3aa0794875ae09c1ba4348942eb890e798ac7cee6e3505a9b68b678') + version('1.5.3', sha256='1220ac0ae204c3ed6b22a6a35c30d9b5c1ded35a1054cff131861b4a919d4904') + version('1.5.2', sha256='ec113c53a6174b174aaea8f45802cc419184ce056123b93ab8d3f80fc1bd4986') + version('1.5.1', sha256='a8b088b3ede67d560e40f91f4f99be313f21841c46ce2f657af7692a7bbe3276') + version('1.5.0', sha256='2c2b77344854fac937a8ef07c0928c50829ff4c69bcad6e0afb92da611b7dd18') + version('1.4.0', sha256='e76a129f7c2b72b53525fe0b712606eeeab0dc145daa070ebf0728f0384eaf48') + version('1.3.1', sha256='274e196d009e3aac6dd1f2db876de9613ca1a3c21ec3364bc3662f5493bc9747') + version('1.3.0', sha256='d63197d5940b481ecb06cf4703d9c0b49388f32cad61ccae580d1b80312bd215') + version('1.2.1', sha256='e86964e91e4fbbba443d2848f55c028001de4713dcc64c40339389de053e7d8b') + version('1.2.0', sha256='143fa86cd7965d26d3897a5752307bfe08f4866c2f9a9f226a393127d19ee353') + version('1.1.0', sha256='5d2e8f3c1cddfb59fe651931c7c605fe0ed067864fa86047aed312c6a7938e01') + version('1.0.7', sha256='145c27d922c27a4e1d6d50030f4ddece5f03d6c309a5e392a5fcbb5e83e747ab') + version('1.0.6', sha256='357732448d67a593e5ff004418f2a2a263a1401ffe84e021f8a714aa183eaa21') + version('1.0.5', sha256='ba72bc3943a1b39fa63900570948199cf5ed5c7523f2c4af4740e51b098f1794') + version('1.0.4', sha256='697fe397c69689feecb2a731e19b2ff85e19343b8198c4f18a7064c4f7123950') + version('1.0.3', sha256='6a1d1d75d9d74da457726ea9463c1b0b6ba38d4b43ef54e1c33f885e70fdae4b') + + variant("root", default=False, description="Enable ROOT interface") + + depends_on('python', type=('build', 'run')) + depends_on('py-future', type=('build', 'run')) + depends_on('boost', when='@:1.6.0', type=('build', 'run')) + depends_on('py-cython', type='build') + depends_on('py-matplotlib', when='@1.3.0:', type=('build', 'run')) + depends_on('root', type=('build', 'run'), when='+root') + + patch('yoda-1.5.5.patch', level=0, when='@1.5.5') + patch('yoda-1.5.9.patch', level=0, when='@1.5.9') + patch('yoda-1.6.1.patch', level=0, when='@1.6.1') + patch('yoda-1.6.2.patch', level=0, when='@1.6.2') + patch('yoda-1.6.3.patch', level=0, when='@1.6.3') + patch('yoda-1.6.4.patch', level=0, when='@1.6.4') + patch('yoda-1.6.5.patch', level=0, when='@1.6.5') + patch('yoda-1.6.6.patch', level=0, when='@1.6.6') + patch('yoda-1.6.7.patch', level=0, when='@1.6.7') + + def configure_args(self): + args = [] + if self.spec.satisfies('@:1.6.0'): + args += '--with-boost=' + self.spec['boost'].prefix + + if '+root' in self.spec: + args += '--enable-root' + + return args diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.5.5.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.5.5.patch new file mode 100644 index 0000000000..ba86d4cc31 --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.5.5.patch @@ -0,0 +1,50 @@ +--- configure.orig 2016-09-30 08:52:56.000000000 +0200 ++++ configure 2016-09-30 08:56:39.000000000 +0200 +@@ -16568,11 +16568,15 @@ + cat >conftest.py <<_ACEOF + + import sys, string ++# Python 2 and 3 compatible ++from future.builtins import map ++# Python 2 and 3: forward-compatible ++from future.builtins import range + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. +-minver = map(int, string.split('2.5', '.')) + [0, 0, 0] ++minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] + minverhex = 0 +-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] ++for i in range(0, 4): minverhex = (minverhex << 8) + minver[i] + if sys.hexversion >= minverhex: + sys.exit( 0 ) + else: +@@ -16600,15 +16604,15 @@ + fi + + +- PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info[:2]));"` ++ PYTHON_VERSION=`$PYTHON -c "from __future__ import print_function; import sys; print('.'.join(list(map(str, sys.version_info[:2]))));"` + +- YODA_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True);"` ++ YODA_PYTHONPATH=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True));"` + + ## Test for Python header + if test -x "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 + $as_echo_n "checking for Python include path... " >&6; } +- python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"` ++ python_incpath=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_incpath" >&5 + $as_echo "$python_incpath" >&6; } + python_header="$python_incpath/Python.h" + --- pyext/setup.py.in.orig 2016-09-30 08:57:23.000000000 +0200 + +++ pyext/setup.py.in 2016-09-30 08:57:58.000000000 +0200 + @@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present + -if os.environ.has_key("BUILD_ROOTCOMPAT"): + +if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.5.9.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.5.9.patch new file mode 100644 index 0000000000..37a9ffab32 --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.5.9.patch @@ -0,0 +1,50 @@ +--- configure.orig 2016-09-30 09:01:00.000000000 +0200 ++++ configure 2016-09-30 09:03:05.000000000 +0200 +@@ -16574,11 +16574,15 @@ + cat >conftest.py <<_ACEOF + + import sys, string ++# Python 2 and 3 compatible ++from future.builtins import map ++# Python 2 and 3: forward-compatible ++from future.builtins import range + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. +-minver = map(int, string.split('2.5', '.')) + [0, 0, 0] ++minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] + minverhex = 0 +-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] ++for i in range(0, 4): minverhex = (minverhex << 8) + minver[i] + if sys.hexversion >= minverhex: + sys.exit( 0 ) + else: +@@ -16606,15 +16610,15 @@ + fi + + +- PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info[:2]));"` ++ PYTHON_VERSION=`$PYTHON -c "from __future__ import print_function; import sys; print('.'.join(list(map(str, sys.version_info[:2]))));"` + +- YODA_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True);"` ++ YODA_PYTHONPATH=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True));"` + + ## Test for Python header + if test -x "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 + $as_echo_n "checking for Python include path... " >&6; } +- python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"` ++ python_incpath=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_incpath" >&5 + $as_echo "$python_incpath" >&6; } + python_header="$python_incpath/Python.h" + --- pyext/setup.py.in.orig 2016-09-30 09:03:25.000000000 +0200 + +++ pyext/setup.py.in 2016-09-30 09:04:03.000000000 +0200 + @@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present + -if os.environ.has_key("BUILD_ROOTCOMPAT"): + +if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.6.1.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.6.1.patch new file mode 100644 index 0000000000..0a5996a70d --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.6.1.patch @@ -0,0 +1,72 @@ +--- bin/yoda-config.in.orig 2016-07-11 14:43:05.700511377 +0300 ++++ bin/yoda-config.in 2016-07-11 14:43:50.312499322 +0300 +@@ -59,7 +59,7 @@ + + ## "Pre-rolled" build info + tmp=$( echo "$*" | egrep -- '--\<cflags\>|--\<cppflags\>|--\<cxxflags\>') +-test -n "$tmp" && OUT="$OUT -I@includedir@ @BOOST_CPPFLAGS@" ++test -n "$tmp" && OUT="$OUT -I@includedir@" + + tmp=$( echo "$*" | egrep -- '--\<ldflags\>|--\<libs\>|--\<ldadd\>') + test -n "$tmp" && OUT="$OUT -L@libdir@ -lYODA" +--- bin/yoda-config.orig 2016-07-11 14:43:31.960503275 +0300 ++++ bin/yoda-config 2016-07-11 14:43:41.200501112 +0300 +@@ -59,7 +59,7 @@ + + ## "Pre-rolled" build info + tmp=$( echo "$*" | egrep -- '--\<cflags\>|--\<cppflags\>|--\<cxxflags\>') +-test -n "$tmp" && OUT="$OUT -I${prefix}/include @BOOST_CPPFLAGS@" ++test -n "$tmp" && OUT="$OUT -I${prefix}/include" + + tmp=$( echo "$*" | egrep -- '--\<ldflags\>|--\<libs\>|--\<ldadd\>') + test -n "$tmp" && OUT="$OUT -L${exec_prefix}/lib -lYODA" +--- configure.orig 2016-09-30 09:04:54.000000000 +0200 ++++ configure 2016-09-30 09:07:44.000000000 +0200 +@@ -16508,11 +16508,15 @@ + cat >conftest.py <<_ACEOF + + import sys, string ++# Python 2 and 3 compatible ++from future.builtins import map ++# Python 2 and 3: forward-compatible ++from future.builtins import range + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. +-minver = map(int, string.split('2.5', '.')) + [0, 0, 0] ++minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] + minverhex = 0 +-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] ++for i in range(0, 4): minverhex = (minverhex << 8) + minver[i] + if sys.hexversion >= minverhex: + sys.exit( 0 ) + else: +@@ -16540,15 +16544,15 @@ + fi + + +- PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info[:2]));"` ++ PYTHON_VERSION=`$PYTHON -c "from __future__ import print_function; import sys; print('.'.join(list(map(str, sys.version_info[:2]))));"` + +- YODA_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True);"` ++ YODA_PYTHONPATH=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True));"` + + ## Test for Python header + if test -x "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 + $as_echo_n "checking for Python include path... " >&6; } +- python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"` ++ python_incpath=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_incpath" >&5 + $as_echo "$python_incpath" >&6; } + python_header="$python_incpath/Python.h" + --- pyext/setup.py.in.orig 2016-09-30 09:07:58.000000000 +0200 + +++ pyext/setup.py.in 2016-09-30 09:08:17.000000000 +0200 + @@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present + -if os.environ.has_key("BUILD_ROOTCOMPAT"): + +if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.6.2.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.6.2.patch new file mode 100644 index 0000000000..a0eb97d0f3 --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.6.2.patch @@ -0,0 +1,22 @@ +--- bin/yoda-config.in.orig 2016-07-11 14:43:05.700511377 +0300 ++++ bin/yoda-config.in 2016-07-11 14:43:50.312499322 +0300 +@@ -59,7 +59,7 @@ + + ## "Pre-rolled" build info + tmp=$( echo "$*" | egrep -- '--\<cflags\>|--\<cppflags\>|--\<cxxflags\>') +-test -n "$tmp" && OUT="$OUT -I@includedir@ @BOOST_CPPFLAGS@" ++test -n "$tmp" && OUT="$OUT -I@includedir@" + + tmp=$( echo "$*" | egrep -- '--\<ldflags\>|--\<libs\>|--\<ldadd\>') + test -n "$tmp" && OUT="$OUT -L@libdir@ -lYODA" +--- bin/yoda-config.orig 2016-07-11 14:43:31.960503275 +0300 ++++ bin/yoda-config 2016-07-11 14:43:41.200501112 +0300 +@@ -59,7 +59,7 @@ + + ## "Pre-rolled" build info + tmp=$( echo "$*" | egrep -- '--\<cflags\>|--\<cppflags\>|--\<cxxflags\>') +-test -n "$tmp" && OUT="$OUT -I${prefix}/include @BOOST_CPPFLAGS@" ++test -n "$tmp" && OUT="$OUT -I${prefix}/include" + + tmp=$( echo "$*" | egrep -- '--\<ldflags\>|--\<libs\>|--\<ldadd\>') + test -n "$tmp" && OUT="$OUT -L${exec_prefix}/lib -lYODA" diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.6.3.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.6.3.patch new file mode 100644 index 0000000000..4d50a3cf2d --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.6.3.patch @@ -0,0 +1,50 @@ +--- configure.orig 2016-08-09 21:07:54.000000000 +0200 ++++ configure 2016-09-19 11:49:18.560986340 +0200 +@@ -16520,11 +16520,15 @@ + cat >conftest.py <<_ACEOF + + import sys, string ++# Python 2 and 3 compatible ++from future.builtins import map ++# Python 2 and 3: forward-compatible ++from future.builtins import range + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. +-minver = map(int, string.split('2.5', '.')) + [0, 0, 0] ++minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] + minverhex = 0 +-for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] ++for i in range(0, 4): minverhex = (minverhex << 8) + minver[i] + if sys.hexversion >= minverhex: + sys.exit( 0 ) + else: +@@ -16552,15 +16556,15 @@ + fi + + +- PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info[:2]));"` ++ PYTHON_VERSION=`$PYTHON -c "from __future__ import print_function; import sys; print('.'.join(list(map(str, sys.version_info[:2]))));"` + +- YODA_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True);"` ++ YODA_PYTHONPATH=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(prefix='$prefix', plat_specific=True));"` + + ## Test for Python header + if test -x "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 + $as_echo_n "checking for Python include path... " >&6; } +- python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"` ++ python_incpath=`$PYTHON -c "from __future__ import print_function; import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_incpath" >&5 + $as_echo "$python_incpath" >&6; } + python_header="$python_incpath/Python.h" + --- pyext/setup.py.in.orig 2016-09-06 17:25:39.993785138 +0200 + +++ pyext/setup.py.in 2016-09-06 17:26:10.368489432 +0200 + @@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present + -if os.environ.has_key("BUILD_ROOTCOMPAT"): + +if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.6.4.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.6.4.patch new file mode 100644 index 0000000000..44b8ed06bc --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.6.4.patch @@ -0,0 +1,11 @@ +--- pyext/setup.py.in.orig 2016-09-30 09:13:02.000000000 +0200 ++++ pyext/setup.py.in 2016-09-30 09:13:21.000000000 +0200 +@@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present +-if os.environ.has_key("BUILD_ROOTCOMPAT"): ++if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.6.5.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.6.5.patch new file mode 100644 index 0000000000..ee632655ad --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.6.5.patch @@ -0,0 +1,23 @@ +--- bin/yoda2aida.orig 2016-10-07 13:25:57.355168158 +0200 ++++ bin/yoda2aida 2016-10-07 13:26:04.779169090 +0200 +@@ -18,7 +18,7 @@ + parser.add_option("-M", "--unmatch", dest="UNMATCH", metavar="PATT", default=None, + help="exclude histograms whose path matches this regex") + +-sys.stderr.write("WARNING: yoda2aida is DEPRECATED.\n It will die when AIDA does... *soon*\n" ++sys.stderr.write("WARNING: yoda2aida is DEPRECATED.\n It will die when AIDA does... *soon*\n") + + opts, args = parser.parse_args() + in_out = parse_x2y_args(args, ".yoda", ".aida") + +--- pyext/setup.py.in.orig 2016-09-30 09:13:02.000000000 +0200 ++++ pyext/setup.py.in 2016-09-30 09:13:21.000000000 +0200 +@@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present +-if os.environ.has_key("BUILD_ROOTCOMPAT"): ++if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.6.6.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.6.6.patch new file mode 100644 index 0000000000..fd400e4d7e --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.6.6.patch @@ -0,0 +1,11 @@ +--- pyext/setup.py.in.orig 2017-02-01 15:24:41.000000000 +0100 ++++ pyext/setup.py.in 2017-02-01 15:25:04.000000000 +0100 +@@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present +-if os.environ.has_key("BUILD_ROOTCOMPAT"): ++if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yoda/yoda-1.6.7.patch b/var/spack/repos/builtin/packages/yoda/yoda-1.6.7.patch new file mode 100644 index 0000000000..cc45b3e689 --- /dev/null +++ b/var/spack/repos/builtin/packages/yoda/yoda-1.6.7.patch @@ -0,0 +1,11 @@ +--- pyext/setup.py.in.orig 2017-07-17 12:13:12.057895620 +0200 ++++ pyext/setup.py.in 2017-07-17 12:15:11.991048036 +0200 +@@ -34,7 +34,7 @@ + extns = [ext("util"), ext("core", statics=static_files, depends=core_depends)] + + ## Enable building of ROOT extension if ROOT is present +-if os.environ.has_key("BUILD_ROOTCOMPAT"): ++if "BUILD_ROOTCOMPAT" in os.environ: + try: + # import ROOT + # TODO: Need to test for and use root-config in configure diff --git a/var/spack/repos/builtin/packages/yorick/package.py b/var/spack/repos/builtin/packages/yorick/package.py index 35d6e617a6..eb3e2a3698 100644 --- a/var/spack/repos/builtin/packages/yorick/package.py +++ b/var/spack/repos/builtin/packages/yorick/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * -import os class Yorick(Package): @@ -35,9 +34,12 @@ class Yorick(Package): url = "https://github.com/dhmunro/yorick/archive/y_{0}.tar.gz" return url.format(version.underscored) - def install(self, spec, prefix): - os.environ['FORTRAN_LINKAGE'] = '-Df_linkage' + def setup_build_environment(self, env): + env.set('FORTRAN_LINKAGE', '-Df_linkage') + if self.spec.satisfies('arch=aarch64:'): + env.set('FPU_IGNORE', '1') + def install(self, spec, prefix): make("config") filter_file(r'^CC.+', diff --git a/var/spack/repos/builtin/packages/zipkin/package.py b/var/spack/repos/builtin/packages/zipkin/package.py new file mode 100644 index 0000000000..841c89a1d2 --- /dev/null +++ b/var/spack/repos/builtin/packages/zipkin/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 Zipkin(Package): + """Zipkin is a distributed tracing system. It helps gather timing + data needed to troubleshoot latency problems in service + architectures. Features include both the collection and lookup + of this data.""" + + homepage = "https://zipkin.io/" + url = "https://github.com/openzipkin/zipkin/archive/2.21.5.tar.gz" + + version('2.21.5', sha256='e643a810f82f9ea50e2cb6847694c7645507d3deae77685a3a1bb841e0f885a2') + version('2.21.4', sha256='ee7b0110b3852479c925b6429ff278aa38b1d5da27f4762891b1f863e67bdad5') + version('2.21.3', sha256='02526e2ba4de85938b510cb2db01865ec46cdad53157862c39fa5e9b6cbd15b6') + + depends_on('maven', type='build') + depends_on('java', 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/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 4967bc0dbb..0d30f2d67c 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -3,14 +3,13 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * - # Although zlib comes with a configure script, it does not use Autotools # The AutotoolsPackage causes zlib to fail to build with PGI class Zlib(Package): """A free, general-purpose, legally unencumbered lossless - data-compression library.""" + data-compression library. + """ homepage = "http://zlib.net" # URL must remain http:// so Spack can bootstrap curl diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py index 60bb3cd3e7..1288eddbad 100644 --- a/var/spack/repos/builtin/packages/zsh/package.py +++ b/var/spack/repos/builtin/packages/zsh/package.py @@ -13,11 +13,14 @@ class Zsh(AutotoolsPackage): """ homepage = "http://www.zsh.org" - url = "http://downloads.sourceforge.net/project/zsh/zsh/5.4.2/zsh-5.4.2.tar.gz" - - version('5.4.2', sha256='957bcdb2c57f64c02f673693ea5a7518ef24b6557aeb3a4ce222cefa6d74acc9') - version('5.3.1', sha256='3d94a590ff3c562ecf387da78ac356d6bea79b050a9ef81e3ecb9f8ee513040e') - version('5.1.1', sha256='94ed5b412023761bc8d2f03c173f13d625e06e5d6f0dff2c7a6e140c3fa55087') + url = "http://downloads.sourceforge.net/project/zsh/zsh/5.4.2/zsh-5.4.2.tar.xz" + + version('5.8', sha256='dcc4b54cc5565670a65581760261c163d720991f0d06486da61f8d839b52de27') + version('5.7.1', sha256='7260292c2c1d483b2d50febfa5055176bd512b32a8833b116177bf5f01e77ee8') + version('5.6.2', sha256='a50bd66c0557e8eca3b8fa24e85d0de533e775d7a22df042da90488623752e9e') + version('5.4.2', sha256='a80b187b6b770f092ea1f53e89021d06c03d8bbe6a5e996bcca3267de14c5e52') + version('5.3.1', sha256='fc886cb2ade032d006da8322c09a7e92b2309177811428b121192d44832920da') + version('5.1.1', sha256='74e9453b5470b3c0970f9f93cfd603d241c3d7b1968adc0e4b3951073e8d3dec') # Testing for terminal related things causes failures in e.g. Jenkins. # See e.g. https://www.zsh.org/mla/users/2003/msg00845.html, |